10 conf
="/etc/gentoo-sync.conf"
11 [[ -e ${conf} ]] && .
"${conf}"
14 [[ "${FLOCKER}" != "$0" ]] && exec env FLOCKER
="$0" flock
-en "$0" "$0" "$@"
15 [[ $
(id
-u) -eq 0 ]] ||
exec sudo env
-uUNSHARE FLOCKER
="${FLOCKER}" HOME
="$HOME" "$0" "$@"
17 if [[ -z ${UNSHARE} ]] ; then
19 if type -P unshare
>&/dev
/null
; then
20 test_arg
() { unshare
"$@" -- true
>&/dev
/null
&& uargs
+=( "$@" ) ||
:; }
24 test_arg
-p -f --mount-proc
25 test_arg
--propagation=private
26 UNSHARE
=true
exec unshare
"${uargs[@]}" -- "$0" "$@"
37 Usage: ${0##*/} [options]
41 -a, --all, -na, --noall
42 -s, --sync, -ns, --nosync ${GS_SYNC}
43 -r, --rsync, -nr, --norsync ${GS_RSYNC}
44 -d, --database, -nd, --nodatabase ${GS_EUPDATEDB}
45 -f, --fetch, -nf, --nofetch ${GS_FETCH}
46 -w, --world, -nw, --noworld ${GS_UPWORLD}
47 -l, --layman, -nl, --nolayman ${GS_LAYMAN}
48 -x, --debug, -nx, --nodebug ${GS_DEBUG}
63 -a|
--all) s true SYNC RSYNC EUPDATEDB FETCH UPWORLD LAYMAN DEBUG
;;
64 -na|
--noall) s false SYNC RSYNC EUPDATEDB FETCH UPWORLD LAYMAN DEBUG
;;
65 -s|
--sync) s true SYNC
;;
66 -ns|
--nosync) s false SYNC
;;
67 -r|
--rsync) s true RSYNC
;;
68 -nr|
--norsync) s false RSYNC
;;
69 -d|
--database) s true EUPDATEDB
;;
70 -nd|
--nodatabase) s false EUPDATEDB
;;
71 -f|
--fetch) s true FETCH
;;
72 -nf|
--nofetch) s false FETCH
;;
73 -w|
--world) s true UPWORLD
;;
74 -nw|
--noworld) s false UPWORLD
;;
75 -l|
--layman) s true LAYMAN
;;
76 -nl|
--nolayman) s false LAYMAN
;;
77 -x|
--debug) s true DEBUG
;;
78 -nx|
--nodebug) s false DEBUG
;;
86 sync_log
="${logdir}/rsync.log"
87 up_log
="${logdir}/emerge-updates.log"
95 # For slow systems, run rsync directly.
96 for f
in make.globals
make.conf
; do
97 for d
in /etc
/etc
/portage
/usr
/share
/portage
/config
; do
99 [[ -e ${f} ]] && .
${f} && break
103 : ${PORTAGE_RSYNC_OPTS:=-azO --delete --exclude=/distfiles --exclude=/local --exclude=/packages}
104 : ${SYNC:=rsync://rsync.gentoo.org/gentoo-portage}
105 : ${PORTDIR:=/usr/portage}
106 exec rsync
${PORTAGE_RSYNC_OPTS} ${PORTAGE_RSYNC_EXTRA_OPTS} ${SYNC}/ ${PORTDIR}/ >& "${sync_log}"
112 ${GS_EUPDATEDB} && $(type -P eupdatedb)
114 ${GS_LAYMAN} && l=$(type -P layman) && ${l} -S -q
116 ${GS_FETCH} && emerge world -Duf
123 if ${GS_UPWORLD} ; then
126 $(portageq repositories_configuration / | awk '$1 == "location
" { $1 = $2 = ""; print }')
130 for p in `qlist -ICS` ; do
132 for repo in ${repos[@]} ; do
133 if [[ -d ${repo}/${p%:*} ]] ; then
146 if [[ ${#bad_pkgs[@]} -gt 0 ]] ; then
147 echo 'These packages no longer exist:'
148 printf '\t%s\n' "${bad_pkgs[@]}"
151 echo 'emerge -u1v --quiet-build y --keep-going $(awk '\''$2 ~ /\// {print $2}'\'' '${up_log}')'
153 $(printf '%s\n' ${good_pkgs[*]} | grep -v '^cross-')