Magellan Linux

Annotation of /mage/branches/alx-0_6_0/profiles/alx-060/forced-uninstall

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2112 - (hide annotations) (download)
Thu May 12 18:51:46 2011 UTC (13 years ago) by niro
File size: 4217 byte(s)
-update network settings properly, added helper function read_value()
-only upgrade once, this script is called at every update
-do not exec etc-update, our conf_prot handling should do it automatically
1 niro 2081 #!/bin/bash
2     # $Id$
3    
4 niro 2112 read_value()
5     {
6     local file=$1
7     local var=$2
8     local value
9    
10     [[ ! -e ${file} ]] && return 1
11    
12     value=$(source ${file}; echo $(eval echo \${${var}}))
13     echo "${value}"
14     return 0
15     }
16    
17 niro 2081 MAGERC="/etc/mage.rc"
18     MAGEPROFILE="alx-060"
19     NEW_MAGE_DISTRIBUTION="unstable"
20     NEW_RSYNC="rsync://magellan-linux.de/mage-alx-0.6.0"
21     NEW_MIRRORS="http://magellan-linux.de/magellan/alx-0.6.0/${NEW_MAGE_DISTRIBUTION}"
22     NEW_PACKAGES_SERVER_PATH='packages/${ARCH}'
23     NEW_MAGE_UNINSTALL_TIMEOUT=0
24    
25     # fix mage.rc
26     for i in RSYNC MIRRORS MAGE_DISTRIBUTION PACKAGES_SERVER_PATH MAGE_UNINSTALL_TIMEOUT
27     do
28     value="$(eval echo \${NEW_${i}})"
29     if [[ ! -z $(grep "^${i}=" ${MAGERC}) ]]
30     then
31     echo "fixing $i -> ${value}"
32     sed -i "s|^\(${i}=\).*|\1\"${value}\"|" ${MAGERC}
33     else
34     echo "adding $i=${value}"
35     echo "${i}=\"${value}\"" >> ${MAGERC}
36     fi
37     done
38    
39     # fix profile
40     if [[ $(readlink /etc/mage-profile) != */${MAGEPROFILE} ]]
41     then
42     echo "fixing profile link -> /usr/mage/profiles/${MAGEPROFILE}"
43     ln -snf /usr/mage/profiles/${MAGEPROFILE} /etc/mage-profile
44     fi
45    
46     # update mage3 -> mage4
47     if [[ -z $(magequery -n mage) ]]
48     then
49     # update mage tree
50     mage update
51    
52     # mage3 has problems with md5
53     rm -rf /usr/mage/app-mage/mage/md5
54     if [[ ${NEW_MAGE_DISTRIBUTION} = unstable ]]
55     then
56     USE_UNSTABLE=true MAGE_DISTRIBUTION=unstable mage install mage
57     elif [[ ${NEW_MAGE_DISTRIBUTION} = testing ]]
58     then
59     USE_TESTING=true MAGE_DISTRIBUTION=testing mage install mage
60     else
61     mage install mage
62     fi
63    
64     # drop all virtuals
65     :> /var/db/mage/virtuals
66    
67     # enable run of orphaned files check
68     touch /.orphaned
69 niro 2112
70     # tell that we're running an dist-upgrade
71     touch /.dist-upgrade
72 niro 2081 fi
73    
74     # install new toolchain if not exist
75     TOOLCHAIN="$(< /etc/mage-profile/toolchain.defaults)"
76     if [[ -z $(magequery -n ${TOOLCHAIN}) ]]
77     then
78     # export bootstrap to not start any services
79     export MAGE_BOOTSTRAP=true
80     mage install ${TOOLCHAIN}
81     unset MAGE_BOOTSTRAP
82    
83     # enable run of orphaned files check
84     touch /.orphaned
85 niro 2112
86     # tell that we're running an dist-upgrade
87     touch /.dist-upgrade
88 niro 2081 fi
89    
90     # install new basesystem
91     BASESYSTEM="$(< /etc/mage-profile/basesystem.defaults)"
92     if [[ -z $(magequery -n ${BASESYSTEM}) ]]
93     then
94     # first keep some important files
95    
96     # export bootstrap to not start any services
97     export MAGE_BOOTSTRAP=true
98     mage install ${BASESYSTEM}
99     unset MAGE_BOOTSTRAP
100    
101     # enable run of orphaned files check
102     touch /.orphaned
103 niro 2112
104     # tell that we're running an dist-upgrade
105     touch /.dist-upgrade
106 niro 2081 fi
107    
108     # install remserial, if the plugin was enabled
109     if [[ ! -z $(magequery -n remserial-alx) ]]
110     then
111     mage install remserial
112    
113     # enable run of orphaned files check
114     touch /.orphaned
115     fi
116    
117 niro 2112 # etc-update
118     #etc-update
119    
120 niro 2081 # clean mage cache
121     mage clean
122    
123     echo "Searching for deprecated packages ..."
124     for i in $(magequery -i | grep -- -alx | sed 's:.*/\(.*\)-.*-.*:\1:')
125     do
126     # excludes
127     case ${i} in
128     kernel-alx) continue ;;
129     kernel26-alx) continue ;;
130     kernel-sources-alx) continue ;;
131     kernel26-sources-alx) continue ;;
132     esac
133    
134     echo "Removing deprecated mage-target '${i}'"
135     mage uninstall ${i}
136     done
137    
138     if [[ -f /.orphaned ]]
139     then
140     echo "Searching for orphaned files and directories ..."
141     bash /etc/mage-profile/prune-orphaned-files
142     rm -f /.orphaned
143     fi
144    
145 niro 2112 if [[ -f /.dist-upgrade ]]
146     then
147     # array of wireless opts
148     WIRELESS_OPTS=( WIRELESS_BITRATE WIRELESS_CHANNEL WIRELESS_ESSID WIRELESS_FREQUENCY WIRELESS_MODE WIRELESS_NICK WIRELESS_AUTH_MODE WIRELESS_KEY_LENGTH WIRELESS_KEY WIRELESS_KEY_ASCII WIRELESS_WPA_DRIVER )
149    
150     # fixing current dhcp network settings
151     #for i in $(grep -irl NETWORKING=.*dhcp.* /etc/conf.d/net.*)
152     for i in $(grep -irl DHCP_PROG=.*dhcpcd.* /etc/conf.d/net.*)
153     do
154     case ${i} in
155     */net.sample) continue ;;
156     */net.routes) continue ;;
157     esac
158    
159     echo "fixing current dhcp network settings in '${i}'"
160     mv ${i}{,.orig}
161     onboot="$(read_value ${i}.orig ONBOOT)"
162     echo "ONBOOT=\"${onboot}\"" > ${i}
163     echo 'NETWORKING="dhcp"' >> ${i}
164     # check wireless extensions
165     for opt in ${WIRELESS_OPTS[*]}
166     do
167     value="$(read_value ${i}.orig ${opt})"
168     if [[ ! -z ${value} ]]
169     then
170     echo "${opt}=\"${value}\"" >> ${i}
171     fi
172     done
173     rm -f ${i}.orig
174     done
175     fi
176    
177     if [[ -f /.dist-upgrade ]]
178     then
179     rm -f /.dist-upgrade
180     # force a reboot at this point here
181     reboot -f
182     fi