11 conf
="/etc/gentoo-sync.conf"
12 [[ -e ${conf} ]] && .
"${conf}"
15 sync_log
="${logdir}/rsync.log"
16 up_log
="${logdir}/emerge-updates.log"
19 local prog
=$
(realpath
"$0")
20 if [[ "${FLOCKER}" != "${prog}" ]] ; then
21 exec env
-uUNSHARE FLOCKER
="${prog}" flock -en "${prog}" "${prog}" "$@"
24 if [[ -z ${UNSHARE} ]] ; then
25 if [[ $
(id
-u) -ne 0 ]] ; then
26 exec sudo env
-uUNSHARE FLOCKER
="${FLOCKER}" HOME
="$HOME" "${prog}" "$@"
29 touch "${sync_log}" "${up_log}"
30 chown
"${GS_USER}" "${sync_log}" "${up_log}"
33 if type -P unshare
>&/dev
/null
; then
34 test_arg
() { unshare
"$@" -- true
>&/dev
/null
&& uargs
+=( "$@" ) ||
:; }
38 test_arg
-p -f --mount-proc
39 test_arg
--propagation=private
40 exec unshare
"${uargs[@]}" -- \
41 sudo
-u "${GS_USER}" UNSHARE
="true" FLOCKER
="${FLOCKER}" \
53 Usage: ${0##*/} [options]
57 -a, --all, -na, --noall
58 -s, --sync, -ns, --nosync ${GS_SYNC}
59 -r, --rsync, -nr, --norsync ${GS_RSYNC}
60 -d, --database, -nd, --nodatabase ${GS_EUPDATEDB}
61 -f, --fetch, -nf, --nofetch ${GS_FETCH}
62 -w, --world, -nw, --noworld ${GS_UPWORLD}
63 -l, --layman, -nl, --nolayman ${GS_LAYMAN}
64 -x, --debug, -nx, --nodebug ${GS_DEBUG}
79 -a|
--all) s true SYNC RSYNC EUPDATEDB FETCH UPWORLD LAYMAN DEBUG
;;
80 -na|
--noall) s false SYNC RSYNC EUPDATEDB FETCH UPWORLD LAYMAN DEBUG
;;
81 -s|
--sync) s true SYNC
;;
82 -ns|
--nosync) s false SYNC
;;
83 -r|
--rsync) s true RSYNC
;;
84 -nr|
--norsync) s false RSYNC
;;
85 -d|
--database) s true EUPDATEDB
;;
86 -nd|
--nodatabase) s false EUPDATEDB
;;
87 -f|
--fetch) s true FETCH
;;
88 -nf|
--nofetch) s false FETCH
;;
89 -w|
--world) s true UPWORLD
;;
90 -nw|
--noworld) s false UPWORLD
;;
91 -l|
--layman) s true LAYMAN
;;
92 -nl|
--nolayman) s false LAYMAN
;;
93 -x|
--debug) s true DEBUG
;;
94 -nx|
--nodebug) s false DEBUG
;;
103 if ${GS_DEBUG} ; then
114 if ${GS_RSYNC} ; then
115 # For slow systems, run rsync directly.
116 for f
in make.globals
make.conf
; do
117 for d
in /etc
/etc
/portage
/usr
/share
/portage
/config
; do
118 f
="${d}/make.globals"
119 [[ -e ${f} ]] && .
${f} && break
123 : ${PORTAGE_RSYNC_OPTS:=-azO --delete --exclude=/distfiles --exclude=/local --exclude=/packages}
124 : ${SYNC:=rsync://rsync.gentoo.org/gentoo-portage}
125 : ${PORTDIR:=/usr/portage}
126 exec rsync
${PORTAGE_RSYNC_OPTS} ${PORTAGE_RSYNC_EXTRA_OPTS} ${SYNC}/ ${PORTDIR}/ >& "${sync_log}"
132 ${GS_EUPDATEDB} && run $(type -P eupdatedb)
134 ${GS_LAYMAN} && l=$(type -P layman) && run ${l} -S -q
136 ${GS_FETCH} && run emerge world -Duf
144 if ${GS_UPWORLD} ; then
147 $(portageq repositories_configuration / | awk '$1 == "location
" { $1 = $2 = ""; print }')
151 for p in `qlist -ICS` ; do
153 for repo in ${repos[@]} ; do
154 if [[ -d ${repo}/${p%:*} ]] ; then
167 if [[ ${#bad_pkgs[@]} -gt 0 ]] ; then
168 echo 'These packages no longer exist:'
169 printf '\t%s\n' "${bad_pkgs[@]}"
172 echo 'emerge -u1v --quiet-build y --keep-going $(awk '\''$2 ~ /\// {print $2}'\'' '${up_log}')'
174 $(printf '%s\n' ${good_pkgs[*]} | grep -v '^cross-')