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