X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=.bin%2Fgentoo-sync;h=6984c38001674f87a2d0b2982177ddf750ec41db;hb=refs%2Fheads%2Fmain;hp=5d78577726f953f5d0968b74193b4641a84e6ab6;hpb=f4853b9ebc5444e65b75de68cdf439d12bb55902;p=home.git diff --git a/.bin/gentoo-sync b/.bin/gentoo-sync index 5d78577..6984c38 100755 --- a/.bin/gentoo-sync +++ b/.bin/gentoo-sync @@ -7,14 +7,28 @@ GS_FETCH=false GS_UPWORLD=true GS_LAYMAN=true GS_DEBUG=false +GS_USER="portage" conf="/etc/gentoo-sync.conf" [[ -e ${conf} ]] && . "${conf}" +logdir="/var/log" +sync_log="${logdir}/rsync.log" +up_log="${logdir}/emerge-updates.log" + bootstrap() { - [[ "${FLOCKER}" != "$0" ]] && exec env FLOCKER="$0" flock -en "$0" "$0" "$@" - [[ $(id -u) -eq 0 ]] || exec sudo env -uUNSHARE FLOCKER="${FLOCKER}" HOME="$HOME" "$0" "$@" + local prog=$(realpath "$0") + if [[ "${FLOCKER}" != "${prog}" ]] ; then + exec env -uUNSHARE FLOCKER="${prog}" flock -en "${prog}" "${prog}" "$@" + fi if [[ -z ${UNSHARE} ]] ; then + if [[ $(id -u) -ne 0 ]] ; then + exec sudo env -uUNSHARE FLOCKER="${FLOCKER}" HOME="$HOME" "${prog}" "$@" + fi + + touch "${sync_log}" "${up_log}" + chown "${GS_USER}" "${sync_log}" "${up_log}" + mount_args= if type -P unshare >&/dev/null ; then test_arg() { unshare "$@" -- true >&/dev/null && uargs+=( "$@" ) || :; } @@ -23,7 +37,9 @@ bootstrap() { test_arg -i test_arg -p -f --mount-proc test_arg --propagation=private - UNSHARE=true exec unshare "${uargs[@]}" -- "$0" "$@" + exec unshare "${uargs[@]}" -- \ + sudo -u "${GS_USER}" UNSHARE="true" FLOCKER="${FLOCKER}" \ + "${prog}" "$@" fi else mount_args='-n' @@ -80,15 +96,19 @@ for x ; do esac done -${GS_DEBUG} && set -x - -logdir="/var/log" -sync_log="${logdir}/rsync.log" -up_log="${logdir}/emerge-updates.log" +run() { + echo "+ $*" + "$@" +} +if ${GS_DEBUG} ; then + set -x + run() { "$@" ; } +fi export NOCOLOR=true ( +id date if ${GS_RSYNC} ; then @@ -107,13 +127,14 @@ if ${GS_RSYNC} ; then fi if ${GS_SYNC} ; then - emerge --sync -q + run emerge --sync -q date - ${GS_EUPDATEDB} && $(type -P eupdatedb) + ${GS_EUPDATEDB} && run $(type -P eupdatedb) date - ${GS_LAYMAN} && l=$(type -P layman) && ${l} -S -q + ${GS_LAYMAN} && l=$(type -P layman) && run ${l} -S -q date - ${GS_FETCH} && emerge world -Duf + ${GS_FETCH} && run emerge world -Duf + #date #q -qr fi @@ -152,4 +173,5 @@ if ${GS_UPWORLD} ; then emerge -upq --cols \ $(printf '%s\n' ${good_pkgs[*]} | grep -v '^cross-') ) >& ${up_log} + : fi