Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 80 - (show annotations) (download) (as text)
Wed Jun 1 15:50:56 2005 UTC (18 years, 11 months ago) by niro
File MIME type: application/x-sh
File size: 3543 byte(s)
heavily changed:
- added preview which pkgs are going to be installed
- added src-compile support
- some minor logic fixes

1 #!/bin/bash
2
3 # mage upgrade
4 # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/mageupgrade.sh,v 1.8 2005-06-01 15:50:56 niro Exp $
5
6 # some default vars
7 : ${MLIBDIR=/usr/lib/mage}
8 : ${DEBUG=false}
9 : ${AUTOANSWER=false}
10 : ${SRCINSTALL=false}
11
12 source /etc/mage.rc
13 source ${MLIBDIR}/mage3.functions.sh
14 source /etc/init.d/functions
15
16
17 unset UPGRADE_LIST
18 unset PLEASE_VALIDATE
19
20 echo "Fetching list of all installed packages ..."
21
22 # get list
23 for directory in ${INSTALLDB}/*
24 do
25 # supress virtuals and fake packages or files
26 x=$(basename ${directory})
27 if [ ${x} = fake ] ||
28 [ ${x} = virtual ] ||
29 [ ${x} = virtuals ] ||
30 [ ${x} = virtuals.old ] ||
31 [ ! -d ${directory} ]
32 then
33 continue
34 fi
35
36 for package in ${directory}/*
37 do
38 x=$(basename ${package})
39 PNAME=${x%-*-*}
40 PVER=$(echo ${x#${PNAME}-}| cut -d- -f1)
41 PBUILD=$(echo ${x#${PNAME}-}| cut -d- -f2)
42 PCAT=$(basename $(dirname ${package}))
43
44 # check if there is any higher version in mage db
45
46 #needed packages may have ben renamed ??
47 if [ -d ${MAGEDIR}/${PCAT}/${PNAME} ]
48 then
49 CATEGORIE=${PCAT} MAGENAME=${PNAME} get_highest_magefile &> /dev/null
50
51 #compare them
52 if [[ $(basename ${HIGHEST_MAGEFILE} .mage) > ${PNAME}-${PVER}-${PBUILD} ]]
53 then
54 UPGRADE_LIST="${UPGRADE_LIST} ${PNAME}"
55 SHOW_LIST="${SHOW_LIST}:${PCAT}/${PNAME},[${PVER}-${PBUILD} -> $(basename ${HIGHEST_MAGEFILE#${HIGHEST_MAGEFILE%-*-*}-} .mage)]"
56 else
57 # put them only on PLEASE_VALIDATE if they are not the same package
58 if [[ $(basename ${HIGHEST_MAGEFILE} .mage) != ${PNAME}-${PVER}-${PBUILD} ]]
59 then
60 echo "Not added: ${PNAME}-${PVER}-${PBUILD} is newer than $(basename ${HIGHEST_MAGEFILE} .mage)."
61 PLEASE_VALIDATE="${PLEASE_VALIDATE} ${PNAME}-${PVER}-${PBUILD}"
62 fi
63 fi
64 fi
65
66 #unset some vars for shure
67 unset x
68 unset PNAME
69 unset PVER
70 unset PBUILD
71 unset PCAT
72 unset CATEGORIE
73 unset MAGENAME
74 unset HIGHEST_MAGEFILE
75 done
76 done
77
78 unset package directory
79
80 # show the list
81 echo
82 echo "Packages selected for upgrade:"
83 OLDIFS="${IFS}"
84 IFS=:
85 for package in ${SHOW_LIST}
86 do
87 # nice output :)
88 echo -en \\033[10G
89 echo -en ${COLGREEN}"$(echo ${package} | cut -d',' -f1)"${COLDEFAULT}
90 echo -en \\033[40G
91 echo -e ${COLBLUE}"$(echo ${package} | cut -d',' -f2)"${COLDEFAULT}
92 done
93 IFS="${OLDIFS}"
94
95
96 echo
97 echo "I'm now ready to upgrade your system."
98 echo "Press any key to continue or [CTRL-C] to abort ..."
99 echo
100 read
101
102 #now run the update
103 for package in ${UPGRADE_LIST}
104 do
105 if [[ ${SRCINSTALL} = false ]]
106 then
107 /sbin/mage install ${package} || exit 1
108 else
109 /sbin/mage srcinstall ${package} || exit 1
110 fi
111
112 if [[ ${DEBUG} = true ]]
113 then
114 echo "Installation of ${package} completed."
115 echo "Press any key to continue ..."
116 read
117 fi
118
119 if [[ ${AUTOANSWER} = true ]]
120 then
121 yes | MAGE_UNINSTALL_TIMEOUT=0 /sbin/mage uninstall ${package} || exit 1
122 else
123 MAGE_UNINSTALL_TIMEOUT=0 /sbin/mage uninstall ${package} || exit 1
124 fi
125
126 if [[ ${DEBUG} = true ]]
127 then
128 echo "Uninstallation of ${package} completed."
129 echo "Press any key to continue ..."
130 read
131 fi
132
133 #resource /etc/profile
134 source /etc/profile
135 done
136
137 echo "The system upgrade is now complete."
138
139 if [ -n "${PLEASE_VALIDATE}" ]
140 then
141 echo -n "Would you like to see the list of ignored packages ? [ y/n ] "
142 read answer
143 if [[ ${answer} = y ]]
144 then
145 echo
146 for i in ${PLEASE_VALIDATE}
147 do
148 echo "avoided: ${i}"
149 done
150 fi
151 fi
152
153 echo
154 echo "Please remember to run etc-update to update your config files."
155 echo "You should also source /etc/profile or re-login to your shell."
156 echo