]> git.wh0rd.org - home.git/blame - .bin/gentoo-sync
ssh_config: misc updates
[home.git] / .bin / gentoo-sync
CommitLineData
3815fa0c
MF
1#!/bin/bash
2
9db26d84 3GS_SYNC=true
3815fa0c
MF
4GS_RSYNC=false
5GS_EUPDATEDB=true
6GS_FETCH=false
7GS_UPWORLD=true
d3768020 8GS_LAYMAN=true
603039f0 9GS_DEBUG=false
3815fa0c
MF
10conf="/etc/gentoo-sync.conf"
11[[ -e ${conf} ]] && . "${conf}"
12
603039f0
MF
13usage() {
14 cat <<-EOF
15 Usage: ${0##*/} [options]
16
17 Options:
18 -h, --help
19 -a, --all, -na, --noall
20 -s, --sync, -ns, --nosync ${GS_SYNC}
21 -r, --rsync, -nr, --norsync ${GS_RSYNC}
22 -d, --database, -nd, --nodatabase ${GS_EUPDATEDB}
23 -f, --fetch, -nf, --nofetch ${GS_FETCH}
24 -w, --world, -nw, --noworld ${GS_UPWORLD}
25 -l, --layman, -nl, --nolayman ${GS_LAYMAN}
26 -x, --debug, -nx, --nodebug ${GS_DEBUG}
27 EOF
28 exit 0
29}
30
31s() {
32 local x val=$1
33 shift
34 for x ; do
35 eval GS_${x}=${val};
36 done
37}
38for x ; do
39 case ${x} in
40 -h|--help) usage;;
41 -a|--all) s true SYNC RSYNC EUPDATEDB FETCH UPWORLD LAYMAN DEBUG;;
42 -na|--noall) s false SYNC RSYNC EUPDATEDB FETCH UPWORLD LAYMAN DEBUG;;
43 -s|--sync) s true SYNC;;
44 -ns|--nosync) s false SYNC;;
45 -r|--rsync) s true RSYNC;;
46 -nr|--norsync) s false RSYNC;;
47 -d|--database) s true EUPDATEDB;;
48 -nd|--nodatabase) s false EUPDATEDB;;
49 -f|--fetch) s true FETCH;;
50 -nf|--nofetch) s false FETCH;;
51 -w|--world) s true UPWORLD;;
52 -nw|--noworld) s false UPWORLD;;
53 -l|--layman) s true LAYMAN;;
54 -nl|--nolayman) s false LAYMAN;;
55 -x|--debug) s true DEBUG;;
56 -nx|--nodebug) s false DEBUG;;
57 *) usage;;
58 esac
59done
60
61[ "${FLOCKER}" != "$0" ] && exec env FLOCKER="$0" flock -en "$0" "$0" "$@" || :
62${GS_DEBUG} && set -x
63
64logdir="/var/log"
65sync_log="${logdir}/rsync.log"
66up_log="${logdir}/emerge-updates.log"
67
3815fa0c
MF
68export NOCOLOR=true
69
70(
71date
72
73if ${GS_RSYNC} ; then
74 # For slow systems, run rsync directly.
75 for f in make.globals make.conf ; do
76 for d in /etc /etc/portage /usr/share/portage/config ; do
77 f="${d}/make.globals"
78 [[ -e ${f} ]] && . ${f} && break
79 done
80 done
d144418d 81 > "${up_log}"
3815fa0c
MF
82 : ${PORTAGE_RSYNC_OPTS:=-azO --delete --exclude=/distfiles --exclude=/local --exclude=/packages}
83 : ${SYNC:=rsync://rsync.gentoo.org/gentoo-portage}
84 : ${PORTDIR:=/usr/portage}
d144418d 85 exec rsync ${PORTAGE_RSYNC_OPTS} ${PORTAGE_RSYNC_EXTRA_OPTS} ${SYNC}/ ${PORTDIR}/ >& "${sync_log}"
3815fa0c
MF
86fi
87
9db26d84
MF
88if ${GS_SYNC} ; then
89 emerge --sync -q
90 date
91 ${GS_EUPDATEDB} && $(type -P eupdatedb)
92 date
93 ${GS_LAYMAN} && l=$(type -P layman) && ${l} -S -q
94 date
95 ${GS_FETCH} && emerge world -Duf
96 #q -qr
97fi
98
3815fa0c
MF
99date
100) >& ${sync_log}
101
102if ${GS_UPWORLD} ; then
103 (
047f042e
MF
104 repos=(
105 $(portageq repositories_configuration / | awk '$1 == "location" { $1 = $2 = ""; print }')
106 )
9db26d84
MF
107 bad_pkgs=()
108 good_pkgs=()
109 for p in `qlist -ICS` ; do
047f042e
MF
110 good=false
111 for repo in ${repos[@]} ; do
112 if [[ -d ${repo}/${p%:*} ]] ; then
113 good=true
114 break
115 fi
116 done
117
118 if ${good} ; then
9db26d84
MF
119 good_pkgs+=( ${p} )
120 else
121 bad_pkgs+=( ${p} )
122 fi
123 done
047f042e 124
9db26d84
MF
125 if [[ ${#bad_pkgs[@]} -gt 0 ]] ; then
126 echo 'These packages no longer exist:'
127 printf '\t%s\n' "${bad_pkgs[@]}"
128 echo
129 fi
d4aab056 130 echo 'emerge -u1v --quiet-build y --keep-going $(awk '\''$2 ~ /\// {print $2}'\'' '${up_log}')'
047f042e
MF
131 emerge -upq --cols \
132 $(printf '%s\n' ${good_pkgs[*]} | grep -v '^cross-')
3815fa0c
MF
133 ) >& ${up_log}
134fi