Contents of /trunk/mage/usr/lib/mage/mageupgrade.sh
Parent Directory | Revision Log
Revision 187 -
(show annotations)
(download)
(as text)
Tue Aug 16 23:24:11 2005 UTC (18 years, 9 months ago) by niro
File MIME type: application/x-sh
File size: 4618 byte(s)
Tue Aug 16 23:24:11 2005 UTC (18 years, 9 months ago) by niro
File MIME type: application/x-sh
File size: 4618 byte(s)
added command line parameters support
1 | #!/bin/bash |
2 | |
3 | # mage upgrade |
4 | # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/mageupgrade.sh,v 1.10 2005-08-16 23:24:11 niro Exp $ |
5 | |
6 | # some default vars |
7 | : ${MLIBDIR=/usr/lib/mage} |
8 | : ${DEBUG=false} |
9 | : ${AUTOANSWER=false} |
10 | : ${SRCINSTALL=false} |
11 | : ${AUTOCLEAN=false} |
12 | : ${NO_CALC=false} |
13 | |
14 | source /etc/mage.rc |
15 | source ${MLIBDIR}/mage3.functions.sh |
16 | source /etc/init.d/functions |
17 | |
18 | unset UPGRADE_LIST |
19 | unset PLEASE_VALIDATE |
20 | |
21 | usage() |
22 | { |
23 | echo |
24 | echo "Usage: $(basename $0) [command] ..." |
25 | echo |
26 | echo " --help shows this help" |
27 | echo " --no-calc do not show deps, running straight forward" |
28 | echo " --autoclean clean all downloaded files automatically" |
29 | echo " --autoanswer answer all questions automatically" |
30 | echo " --src-install install from sources rather from binary packages" |
31 | echo " --debug show debug messages" |
32 | echo |
33 | exit 1 |
34 | } |
35 | |
36 | # get options |
37 | for opt in $@ |
38 | do |
39 | case ${opt} in |
40 | --no-calc) |
41 | NO_CALC=true |
42 | ;; |
43 | --autoclean) |
44 | AUTOCLEAN=true |
45 | ;; |
46 | --autoanswer) |
47 | AUTOANSWER=true |
48 | ;; |
49 | --src-install) |
50 | SRCINSTALL=true |
51 | ;; |
52 | --debug) |
53 | DEBUG=true |
54 | ;; |
55 | --help) |
56 | usage |
57 | ;; |
58 | *) |
59 | usage |
60 | ;; |
61 | esac |
62 | done |
63 | |
64 | echo "Fetching list of all installed packages ..." |
65 | |
66 | # get list |
67 | for directory in ${INSTALLDB}/* |
68 | do |
69 | # supress virtuals and fake packages or files |
70 | x=$(basename ${directory}) |
71 | if [ ${x} = virtual ] || |
72 | [ ${x} = virtuals ] || |
73 | [ ${x} = virtuals.old ] || |
74 | [ ! -d ${directory} ] |
75 | then |
76 | continue |
77 | fi |
78 | |
79 | for package in ${directory}/* |
80 | do |
81 | x=$(basename ${package}) |
82 | PNAME=${x%-*-*} |
83 | PVER=$(echo ${x#${PNAME}-}| cut -d- -f1) |
84 | PBUILD=$(echo ${x#${PNAME}-}| cut -d- -f2) |
85 | PCAT=$(basename $(dirname ${package})) |
86 | |
87 | # check if there is any higher version in mage db |
88 | |
89 | # needed packages may have been renamed ?? |
90 | if [ -d ${MAGEDIR}/${PCAT}/${PNAME} ] |
91 | then |
92 | CATEGORIE=${PCAT} MAGENAME=${PNAME} get_highest_magefile &> /dev/null |
93 | |
94 | # compare them |
95 | if [[ $(basename ${HIGHEST_MAGEFILE} .mage) > ${PNAME}-${PVER}-${PBUILD} ]] |
96 | then |
97 | UPGRADE_LIST="${UPGRADE_LIST} ${PNAME}" |
98 | SHOW_LIST="${SHOW_LIST}:${PCAT}/${PNAME},[${PVER}-${PBUILD} -> $(basename ${HIGHEST_MAGEFILE#${HIGHEST_MAGEFILE%-*-*}-} .mage)]" |
99 | else |
100 | # put them only on PLEASE_VALIDATE if they are not the same package |
101 | if [[ $(basename ${HIGHEST_MAGEFILE} .mage) != ${PNAME}-${PVER}-${PBUILD} ]] |
102 | then |
103 | echo "Not added: ${PNAME}-${PVER}-${PBUILD} is newer than $(basename ${HIGHEST_MAGEFILE} .mage)." |
104 | PLEASE_VALIDATE="${PLEASE_VALIDATE} ${PNAME}-${PVER}-${PBUILD}" |
105 | fi |
106 | fi |
107 | fi |
108 | |
109 | # unset some vars for sure |
110 | unset x |
111 | unset PNAME |
112 | unset PVER |
113 | unset PBUILD |
114 | unset PCAT |
115 | unset CATEGORIE |
116 | unset MAGENAME |
117 | unset HIGHEST_MAGEFILE |
118 | done |
119 | done |
120 | |
121 | unset package directory |
122 | |
123 | if [[ ${NO_CALC} = false ]] && [[ ${AUTOANSWER} = false ]] |
124 | then |
125 | # show the list |
126 | echo |
127 | echo "Packages selected for upgrade:" |
128 | OLDIFS="${IFS}" |
129 | IFS=: |
130 | for package in ${SHOW_LIST} |
131 | do |
132 | # nice output :) |
133 | echo -en \\033[10G |
134 | echo -en ${COLGREEN}"$(echo ${package} | cut -d',' -f1)"${COLDEFAULT} |
135 | echo -en \\033[40G |
136 | echo -e ${COLBLUE}"$(echo ${package} | cut -d',' -f2)"${COLDEFAULT} |
137 | done |
138 | IFS="${OLDIFS}" |
139 | |
140 | echo |
141 | echo "I'm now ready to upgrade your system." |
142 | echo "Press any key to continue or [CTRL-C] to abort ..." |
143 | echo |
144 | read |
145 | fi |
146 | |
147 | |
148 | # now run the update |
149 | for package in ${UPGRADE_LIST} |
150 | do |
151 | if [[ ${SRCINSTALL} = false ]] |
152 | then |
153 | /sbin/mage install ${package} || exit 1 |
154 | else |
155 | /sbin/mage srcinstall ${package} || exit 1 |
156 | fi |
157 | |
158 | if [[ ${DEBUG} = true ]] |
159 | then |
160 | echo "Installation of ${package} completed." |
161 | echo "Press any key to continue ..." |
162 | read |
163 | fi |
164 | |
165 | if [[ ${AUTOANSWER} = true ]] |
166 | then |
167 | yes | MAGE_UNINSTALL_TIMEOUT=0 /sbin/mage uninstall ${package} || exit 1 |
168 | else |
169 | MAGE_UNINSTALL_TIMEOUT=0 /sbin/mage uninstall ${package} || exit 1 |
170 | fi |
171 | |
172 | if [[ ${AUTOCLEAN} = true ]] |
173 | then |
174 | /sbin/mage clean || exit 1 |
175 | if [[ ${SRCINSTALL} = true ]] && \ |
176 | [ -d ${SOURCEDIR}/${package} ] |
177 | then |
178 | rm -f ${SOURCEDIR}/${package} || exit 1 |
179 | fi |
180 | fi |
181 | |
182 | if [[ ${DEBUG} = true ]] |
183 | then |
184 | echo "Uninstallation of ${package} completed." |
185 | echo "Press any key to continue ..." |
186 | read |
187 | fi |
188 | |
189 | # resource /etc/profile |
190 | source /etc/profile |
191 | done |
192 | |
193 | echo "The system upgrade is now complete." |
194 | |
195 | if [ -n "${PLEASE_VALIDATE}" ] && [[ ${AUTOANSWER} = false ]] |
196 | then |
197 | echo -n "Would you like to see the list of ignored packages ? [ y/n ] " |
198 | read answer |
199 | if [[ ${answer} = y ]] |
200 | then |
201 | echo |
202 | for i in ${PLEASE_VALIDATE} |
203 | do |
204 | echo "avoided: ${i}" |
205 | done |
206 | fi |
207 | fi |
208 | |
209 | echo |
210 | echo "Please remember to run etc-update to update your config files." |
211 | echo "You should also source /etc/profile or re-login to your shell." |
212 | echo |