Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 226 - (show annotations) (download) (as text)
Fri Sep 9 16:35:46 2005 UTC (18 years, 8 months ago) by niro
File MIME type: application/x-sh
File size: 8687 byte(s)
complete rewrite

1 #!/bin/sh
2 # Magellan Linux Installer (mage.sh)
3 # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/mage4.sh,v 1.1 2005-09-09 16:35:41 niro Exp $
4
5 # default die function
6 die()
7 {
8 echo -e ${COLRED}"$@"${COLDEFAULT}
9 exit 1
10 }
11
12 # include all needed files
13 # [ -f ${MLIBDIR}/conf/mage.rc.global ] && \
14 # source ${MLIBDIR}/conf/mage.rc.global || \
15 # die "${MLIBDIR}/conf/mage.rc.global missing"
16 #
17 # [ -f /etc/mage.rc ] && source /etc/mage.rc || \
18 # die "Your /etc/mage.rc is missing. Aborting."
19 #
20 # [ -f ${MLIBDIR}/mage.functions.sh ] && \
21 # source ${MLIBDIR}/mage.functions.sh || \
22 # die "mage functions missing"
23
24 # for tests only
25 source /home/tjoke/alx-cvs/magellan-src/mage/usr/lib/mage/mage.rc.global
26 source /etc/mage.rc
27 source /home/tjoke/alx-cvs/magellan-src/mage/usr/lib/mage/mage4.functions.sh
28 MLIBDIR=/home/tjoke/alx-cvs/magellan-src/mage/usr/lib/mage
29
30 ## only for tests -> normally in /etc/rc.d/init.d/functions
31 COLRED="\033[1;6m\033[31m"
32 COLGREEN="\033[1;6m\033[32m"
33 COLBLUE="\033[1;6m\033[34m"
34 COLDEFAULT="\033[0m"
35
36 if [[ ${NOCOLORS} = true ]]
37 then
38 COLRED=""
39 COLGREEN=""
40 COLYELLOW=""
41 COLBLUE=""
42 COLMAGENTA=""
43 COLWHITE=""
44 COLDEFAULT=""
45 fi
46
47 # export default path
48 export PATH="${PATH}:${MLIBDIR}"
49
50 # export the default C locale
51 export LC_ALL=C
52
53 # sanity checks
54 [ ! -e ${VIRTUALDB_FILE} ] && touch ${VIRTUALDB_FILE}
55
56 if [ ! -e ${VIRTUALDB_DEFAULTS} ] && [[ $1 != update ]]
57 then
58 echo
59 echo "Please choose an profile from the mage tree."
60 echo "ln -snf ${MAGEDIR}/profiles/profilename /etc/mage-profile"
61 exit 1
62 fi
63
64 # default messages
65 showversion() {
66 local MAGEVERSION="$(< ${MLIBDIR}/version)"
67
68 echo -en "Magellan Package Manager v${MAGEVERSION} "
69 echo -e "-- Niels Rogalla (niro@magellan-linux.de)"
70 }
71
72 print_usage(){
73 showversion
74 echo
75 echo "Usage: $(basename $0) [option] pkgname ..."
76 echo "Options:"
77 echo " pretend - pretends dependencies of a package"
78 echo " srcpretend - pretends dependencies of a package (build from source)"
79 echo " install - installs a package"
80 echo " srcinstall - installs a package from source"
81 echo " uninstall - removes a package"
82 echo " update - updates mage-tree"
83 echo " search - searches mage-tree for a package"
84 echo " clean - removes *all* downloaded packages"
85 # echo " unpack - unpacks a package"
86 echo " download - downloads a package"
87 echo " version - prints version info"
88 echo
89 echo "Other options:"
90 # echo "NOINSTALL=yes $(basename $0) srcinstall PACKAGE"
91 # echo "Builds a Package with its dependencies, but won't install anything."
92 # echo
93 echo "USE_UNSTABLE=true $(basename $0) [src]install PACKAGE"
94 echo "Overrides stable packages; you can install packages that are marked unstable."
95 echo
96 echo "USE_TESTING=true $(basename $0) [src]install PACKAGE"
97 echo "Overrides stable packages; you can install packages that are marked testing."
98 echo
99 echo "NOCOLORS=true $(basename $0) [src]install PACKAGE"
100 echo "Disables all colors in the messages."
101 echo
102 }
103
104
105 showversion
106 echo
107
108 # before anything run mage_setup
109 mage_setup || die "error in mage_setup()"
110
111 # install method
112 METHOD="$1"
113
114 # initial unversionized packagename, gets overridden later
115 MAGENAME="$2"
116
117 [[ -z ${METHOD} ]] || [[ -z ${MAGENAME} ]] && print_usage && exit 1
118
119
120 case ${METHOD} in
121 download)
122 # first of all get the right pkg which going to be installed
123 PCAT="$(pname2pcat ${MAGENAME})"
124
125 # package does not exists
126 [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
127
128 # source the highest magefile of this pkg
129 source $(get_highest_magefile ${PCAT} ${MAGENAME})
130
131 # convert PKGNAME to PNAME/PVER/PBUILD
132 # we're working *only* with these three vars from here on
133 PNAME="$(pkgname2pname ${PKGNAME})"
134 PVER="$(pkgname2pver ${PKGNAME})"
135 PBUILD="$(pkgname2pbuild ${PKGNAME})"
136
137 # get all dependencies of this package
138 ALLDEPS="$(${MLIBDIR}/depwalker.sh \
139 --method install \
140 --pcat ${PCAT} \
141 --pname ${PNAME} \
142 --pver ${PVER} \
143 --pbuild ${PBUILD})"
144 fetch_packages ${ALLDEPS} || die "fetching packages"
145 ;;
146
147 srcdownload)
148 # first of all get the right pkg which going to be installed
149 PCAT="$(pname2pcat ${MAGENAME})"
150
151 # package does not exists
152 [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
153
154 # source the highest magefile of this pkg
155 source $(get_highest_magefile ${PCAT} ${MAGENAME})
156
157 # convert PKGNAME to PNAME/PVER/PBUILD
158 # we're working *only* with these three vars from here on
159 PNAME="$(pkgname2pname ${PKGNAME})"
160 PVER="$(pkgname2pver ${PKGNAME})"
161 PBUILD="$(pkgname2pbuild ${PKGNAME})"
162
163 # get all dependencies of this package
164 ALLDEPS="$(${MLIBDIR}/depwalker.sh \
165 --method srcinstall \
166 --pcat ${PCAT} \
167 --pname ${PNAME} \
168 --pver ${PVER} \
169 --pbuild ${PBUILD})"
170 fetch_packages ${ALLDEPS} || die "fetching packages"
171 ;;
172
173 pretend|srcpretend)
174 # first of all get the right pkg which going to be installed
175 PCAT="$(pname2pcat ${MAGENAME})"
176
177 # package does not exists
178 [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
179
180 # source the highest magefile of this pkg
181 source $(get_highest_magefile ${PCAT} ${MAGENAME})
182
183 # convert PKGNAME to PNAME/PVER/PBUILD
184 # we're working *only* with these three vars from here on
185 PNAME="$(pkgname2pname ${PKGNAME})"
186 PVER="$(pkgname2pver ${PKGNAME})"
187 PBUILD="$(pkgname2pbuild ${PKGNAME})"
188
189 # abort if already installed
190 if is_installed ${PCAT}/${PNAME}-${PVER}-${PBUILD}
191 then
192 echo -en "Package "
193 echo -en "${COLRED}${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}"
194 echo -e " already installed."
195 exit 3
196 fi
197 # get all dependencies of this package
198 ${MLIBDIR}/depwalker.sh \
199 --method ${METHOD} \
200 --pcat ${PCAT} \
201 --pname ${PNAME} \
202 --pver ${PVER} \
203 --pbuild ${PBUILD}
204 ;;
205
206 install)
207 # first of all get the right pkg which going to be installed
208 PCAT="$(pname2pcat ${MAGENAME})"
209
210 # package does not exists
211 [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
212
213 # source the highest magefile of this pkg
214 source $(get_highest_magefile ${PCAT} ${MAGENAME})
215
216 # convert PKGNAME to PNAME/PVER/PBUILD
217 # we're working *only* with these three vars from here on
218 PNAME="$(pkgname2pname ${PKGNAME})"
219 PVER="$(pkgname2pver ${PKGNAME})"
220 PBUILD="$(pkgname2pbuild ${PKGNAME})"
221
222 if is_installed ${PCAT}/${PNAME}-${PVER}-${PBUILD}
223 then
224 echo -en "Package "
225 echo -en "${COLRED}${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}"
226 echo -e " already installed."
227 exit 3
228 fi
229
230 # get all dependencies of this package
231 ALLDEPS="$(${MLIBDIR}/depwalker.sh \
232 --method ${METHOD} \
233 --pcat ${PCAT} \
234 --pname ${PNAME} \
235 --pver ${PVER} \
236 --pbuild ${PBUILD})"
237
238 # first fetch all packages
239 fetch_packages ${ALLDEPS} || die "fetching packages"
240 md5sum_packages ${ALLDEPS} || die "md5 sum packages"
241 unpack_packages ${ALLDEPS} || die "unpacking packages"
242 install_packages ${ALLDEPS} || die "installing packages"
243 ;;
244
245 srcinstall)
246 # first of all get the right pkg which going to be installed
247 PCAT="$(pname2pcat ${MAGENAME})"
248
249 # package does not exists
250 [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
251
252 # source the highest magefile of this pkg
253 source $(get_highest_magefile ${PCAT} ${MAGENAME})
254
255 # convert PKGNAME to PNAME/PVER/PBUILD
256 # we're working *only* with these three vars from here on
257 PNAME="$(pkgname2pname ${PKGNAME})"
258 PVER="$(pkgname2pver ${PKGNAME})"
259 PBUILD="$(pkgname2pbuild ${PKGNAME})"
260
261 if is_installed ${PCAT}/${PNAME}-${PVER}-${PBUILD}
262 then
263 echo -en "Package "
264 echo -en "${COLRED}${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}"
265 echo -e " already installed."
266 exit 3
267 fi
268
269 # get all dependencies of this package
270 ALLDEPS="$(${MLIBDIR}/depwalker.sh \
271 --method ${METHOD} \
272 --pcat ${PCAT} \
273 --pname ${PNAME} \
274 --pver ${PVER} \
275 --pbuild ${PBUILD})"
276
277 install_packages --src-install ${ALLDEPS} || die "src-installing packages"
278 ;;
279
280 uninstall)
281 ALLDEPS="$(get_uninstall_candidates --pname ${MAGENAME})"
282 if [ -z "${ALLDEPS}" ]
283 then
284 die "No package installed named '${MAGENAME}'."
285 fi
286 uninstall_packages ${ALLDEPS}
287 ;;
288
289 search)
290 ${MLIBDIR}/pkgsearch.sh ${MAGENAME}
291 ;;
292
293 # unpack)
294 # build_unpackpkg
295 # ;;
296
297 update)
298 syncmage
299 ;;
300
301 clean)
302 cleanpkg
303 ;;
304
305 version)
306 showversion
307 ;;
308
309 regen-mage-tree)
310 if [ -z "${SMAGESCRIPTSDIR}" ] || [ ! -d "${SMAGESCRIPTSDIR}" ]
311 then
312 echo "SMAGESCRIPTSDIR not found. Check your mage.rc or check out smage repos."
313 exit 1
314 fi
315 for i in $(find ${SMAGESCRIPTSDIR} -type f -name "*.smage2")
316 do
317 smage2 only-regen-tree "${i}"
318 done
319 ;;
320
321 *)
322 print_usage
323 ;;
324 esac

Properties

Name Value
svn:executable *