Magellan Linux

Contents of /trunk/mage/usr/lib/mage/mageupgrade.sh

Parent Directory Parent Directory | Revision Log 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)
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