]>
Commit | Line | Data |
---|---|---|
3815fa0c MF |
1 | #!/bin/bash |
2 | ||
9db26d84 | 3 | GS_SYNC=true |
3815fa0c MF |
4 | GS_RSYNC=false |
5 | GS_EUPDATEDB=true | |
6 | GS_FETCH=false | |
7 | GS_UPWORLD=true | |
d3768020 | 8 | GS_LAYMAN=true |
603039f0 | 9 | GS_DEBUG=false |
3815fa0c MF |
10 | conf="/etc/gentoo-sync.conf" |
11 | [[ -e ${conf} ]] && . "${conf}" | |
12 | ||
603039f0 MF |
13 | usage() { |
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 | ||
31 | s() { | |
32 | local x val=$1 | |
33 | shift | |
34 | for x ; do | |
35 | eval GS_${x}=${val}; | |
36 | done | |
37 | } | |
38 | for 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 | |
59 | done | |
60 | ||
61 | [ "${FLOCKER}" != "$0" ] && exec env FLOCKER="$0" flock -en "$0" "$0" "$@" || : | |
62 | ${GS_DEBUG} && set -x | |
63 | ||
64 | logdir="/var/log" | |
65 | sync_log="${logdir}/rsync.log" | |
66 | up_log="${logdir}/emerge-updates.log" | |
67 | ||
3815fa0c MF |
68 | export NOCOLOR=true |
69 | ||
70 | ( | |
71 | date | |
72 | ||
73 | if ${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 |
86 | fi |
87 | ||
9db26d84 MF |
88 | if ${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 | |
97 | fi | |
98 | ||
3815fa0c MF |
99 | date |
100 | ) >& ${sync_log} | |
101 | ||
102 | if ${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} |
134 | fi |