Magellan Linux

Annotation of /trunk/mage/usr/lib/mage/mage3.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 24 - (hide annotations) (download) (as text)
Wed Jan 5 05:08:01 2005 UTC (19 years, 5 months ago) by niro
File MIME type: application/x-sh
File size: 13527 byte(s)
mage-0.3.6-r8 import

1 niro 24 #!/bin/sh
2     # Magellan Linux Installer (mage.sh)
3     # version: 0.3.6-r8
4    
5     ##configuration -> mage.rc
6     #PKGDIR="/usr/src/packages"
7     PKGSUFFIX="mpk"
8     #BUILDDIR="/usr/src"
9     #INSTALLDB="/var/ALXInstDB"
10     #MAGEDIR="/usr/src/mage-0.2"
11     MAGENAME="$2"
12     #PKGNAME="`basename $2 .mage`"
13     MLIBDIR=/usr/lib/mage
14     MAGEVERSION=0.3.6-r8
15    
16     ## nur für tests -> normalerweise in /etc/rc.d/init.d/functions
17     COLRED="\033[1;6m\033[31m"
18     COLGREEN="\033[1;6m\033[32m"
19     COLBLUE="\033[1;6m\033[34m"
20     COLDEFAULT="\033[0m"
21    
22    
23     ##functions
24     if [ -f /etc/mage.rc ]
25     then
26     source /etc/mage.rc
27     else
28     echo "Your /etc/mage.rc is missing. Aborting."
29     exit 1
30     fi
31    
32     #virtualdb locations
33     VIRTUALDB_DEFAULTS=/etc/mage-profile/virtuals.defaults
34     VIRTUALDB_FILE=${INSTALLDB}/virtuals
35    
36     #fix small problems
37     [ ! -e ${VIRTUALDB_FILE} ] && touch ${VIRTUALDB_FILE}
38    
39     if [ ! -e ${VIRTUALDB_DEFAULTS} -a "$1" != "update" ]
40     then
41     echo
42     echo "Please choose an profile from the mage tree."
43     echo "ln -snf ${MAGEDIR}/profiles/profilename /etc/mage-profile"
44     exit 1
45     fi
46    
47    
48     #loads functions
49     source ${MLIBDIR}/mage3.functions.sh
50    
51     #############DIALOGE##############
52     showversion() {
53     echo -en "Magellan Package Manager v${MAGEVERSION} "
54     echo -e "-- Niels Rogalla (niro@magellan-linux.de)"
55     }
56    
57     print_usage(){
58     showversion
59     echo -e "\nUsage: (basename $0) [option] pkgname ..."
60     echo "Options:"
61     echo -e "\tpretend - pretends dependencies of a package"
62     echo -e "\tsrcpretend - pretends dependencies of a package (build from source)"
63     echo -e "\tinstall - installs a package"
64     echo -e "\tsrcinstall - installs a package from source"
65     echo -e "\tuninstall - removes a package"
66     echo -e "\tupdate - updates mage-tree"
67     echo -e "\tsearch - searches mage-tree for a package"
68     echo -e "\tclean - removes *all* downloaded packages"
69     echo -e "\tunpack - unpacks a package"
70     echo -e "\tdownload - downloads a package"
71     echo -e "\tkeepfiles - prevents files from uninstalling"
72     echo -e "\tinject - inject a package to fake dependencies"
73     echo -e "\treminjected - removes *all* fake packages"
74     echo -e "\tversion - prints version info"
75     echo
76     echo -e "Other:"
77     echo -e "NOINSTALL=yes $(basename $0) srcinstall PACKAGE"
78     echo -e "Builds a Package with its dependencies, but won't install anything."
79     echo
80     echo -e "BOOTSTRAP=yes $(basename $0) srcinstall PACKAGE"
81     echo -e "Force an bootstrap build for a Package."
82     echo -e "Works only for packages wich take use of that (like glibc and binutils),"
83     echo -e "by any other this feature will simple be ignored."
84     echo
85     echo -e "USE_UNSTABLE=true $(basename $0) [src]install PACKAGE"
86     echo -e "Overrides stable packages; you can install packages that are marked unstable."
87     echo
88     }
89    
90     run_etc_update() {
91     if [ ${PROTECT_COUNT} -eq 0 ]
92     then
93     return 0
94     fi
95    
96     echo
97     echo "Important:"
98     echo "${PROTECT_COUNT} protected file(s) were installed."
99     echo
100     echo "Please run 'etc-update' to update your configuration files."
101     echo
102     }
103    
104     mage_install_virtual(){
105     echo -e "\nInstallation of Package: ${COLGREEN}$PKGNAME${COLDEFAULT}\n"
106    
107     export -f preinstall 2> /dev/null
108     if [ "$?" == "0" ]
109     then
110     echo -e "\nRunning Preinstall ... \n"
111     preinstall
112     unset preinstall
113     fi
114    
115     #creates fake db entry
116     install_database_entry ${PKGNAME} ${PKGTYPE}
117    
118     export -f postinstall 2> /dev/null
119     if [ "$?" == "0" ]
120     then
121     echo -e "\nRunning Postinstall ... \n"
122     postinstall
123     unset postinstall
124     fi
125    
126     #check for virtuals and PROVIDE
127     # if so install it to virtualdb
128     register_virtual_pkg
129    
130     ${MLIBDIR}/env-rebuild.sh
131     echo -e "\nPackage '${PKGNAME/-${ARCH}/}' sucessfully installed.\n"
132    
133     #unsets virtual state of packages
134     unset PKGTYPE
135     return 0
136     }
137    
138    
139     register_virtual_pkg(){
140     #first check if this pkg is an virtual_pkg
141     #echo "DEB: PKGNAME=${PKGNAME}"
142    
143     if [ -e ${BUILDDIR}/virtuals/virtuals.${PKGNAME/-${ARCH}/} ]
144     then
145     #add it
146     source ${BUILDDIR}/virtuals/virtuals.${PKGNAME/-${ARCH}/}
147     virtuals_add ${DB_VIRTUAL_NAME} ${DB_PKG_NAME}
148    
149     #than clean up
150     unset DB_VIRTUAL_NAME DB_PKG_NAME
151     rm ${BUILDDIR}/virtuals/virtuals.${PKGNAME/-${ARCH}/}
152     fi
153    
154     if [ -n "${PROVIDE}" ]
155     then
156     local my_pgk
157     #cut arch
158     my_pkg=${PKGNAME/-${ARCH}/}
159     #cut version & build
160     my_pkg=${my_pkg%-*-*}
161    
162     virtuals_add ${PROVIDE} ${CATEGORIE}/${my_pkg}
163    
164     unset PROVIDE
165     fi
166     }
167    
168     unregister_virtual_pkg(){
169     if [ -n "${PROVIDE}" ]
170     then
171     local my_pgk
172     #cut arch
173     my_pkg=${PKGNAME/-${ARCH}/}
174     #cut version & build
175     my_pkg=${my_pkg%-*-*}
176    
177     #virtuals_del ${PROVIDE} ${CATEGORIE}/${my_pkg}
178    
179     #my_pkg has already the categorie -> ex my_pkg=x11-base/xfree
180     virtuals_del ${PROVIDE} ${my_pkg}
181    
182     unset PROVIDE
183     fi
184     }
185    
186     mage_install_sources() {
187    
188     #creates fake db entry
189     install_database_entry ${PKGNAME} ${PKGTYPE}
190    
191     #check for virtuals and PROVIDE
192     # if so install it to virtualdb
193     register_virtual_pkg
194    
195     echo
196     echo -e "This Package is a Source Package."
197     echo
198     echo -e "Only 'srcinstall' works with this type of packages"
199     echo -en "If you have done a srcinstall before, "
200     echo -e "you will find the files in /usr/src."
201     echo
202    
203     #nice timer (4 seconds)
204     # local x
205     # declare -i x=4
206     # echo -en "Continues in 4s ..."
207     # while [ ${x} -gt 0 ]
208     # do
209     # i=${x}+1
210     # echo -en "\b\b\b\b\b\b${x}s ..."
211     # #beeper
212     # echo -en "\a"
213     # sleep 1
214     # done
215     # echo
216    
217     sleep 1
218     xtitleclean
219     }
220    
221     mage_install() {
222     local MAGEFILE
223     local PKGTARBALL
224    
225     MAGEFILE=$1
226    
227     source ${MAGEFILE}
228    
229     #abbruch wenn schon installiert
230     if [ -e ${INSTALLDB}/${PKGNAME/-${ARCH}/} ]
231     then
232     echo -en "\n${COLRED}Package '${PKGNAME/-${ARCH}/}'" \
233     echo -e "already installed. Installation Aborted.${COLDEFAULT}\n"
234     exit 3
235     fi
236    
237     xtitle "[ Installing ${PKGNAME/-${ARCH}/} ]"
238    
239     if [ "${PKGTYPE}" == "virtual" ]
240     then
241     mage_install_virtual
242     return 0
243     fi
244    
245     if [ "${PKGTYPE}" == "sources" ]
246     then
247     mage_install_sources
248     return 0
249     fi
250    
251     if [ ! -e ${PKGDIR}/${PKGNAME}.${PKGSUFFIX} ]
252     then
253     echo -en "\nPrefetching needed Packages for "
254     echo -e "${COLGREEN}${PKGNAME/-${ARCH}/}${COLDEFAULT}...\n"
255     getpackages
256     fi
257    
258     echo -e "\nInstallation of Package: ${COLGREEN}${PKGNAME/-${ARCH}/}${COLDEFAULT}\n"
259     #( build_unpackpkg ) | echo -e "Unpacking Package ...\n"
260    
261     echo -en "Unpacking Package ..."
262     build_unpackpkg
263     echo "done"
264    
265     ##preinstall scripte
266     export -f preinstall 2> /dev/null
267     if [ "$?" == "0" ]
268     then
269     echo -e "\nRunning Preinstall ... \n"
270     preinstall
271     unset preinstall
272     fi
273    
274     #install of package
275     if [ "$VERBOSE" == "off" ]
276     then
277     #spinner disabled
278     #touch /var/tmp/proz
279     #build_doinstall|spin_processbar
280    
281     echo -en "Processing ... "
282     build_doinstall ${PKGNAME}
283     echo "done"
284     fi
285    
286     if [ "$VERBOSE" == "on" ]
287     then
288     #build_doinstall
289     build_doinstall ${PKGNAME}
290     fi
291    
292     #postinstall scripte
293     export -f postinstall 2> /dev/null
294     if [ "$?" == "0" ]
295     then
296     echo -e "\nRunning Postinstall ... \n"
297     postinstall
298     unset postinstall
299     fi
300    
301     #install database entry
302     install_database_entry ${PKGNAME}
303    
304     #cleanup
305     if [ -d ${BUILDDIR}/${PKGNAME} ]
306     then
307     rm -rf ${BUILDDIR}/${PKGNAME}
308     fi
309    
310    
311     #check for virtuals and PROVIDE
312     # if so install it to virtualdb
313     register_virtual_pkg
314    
315    
316     #update mtimes of packages and db_entries
317     update_mtime
318    
319     #rebuilds toplevel info node
320     echo -en "\n>>>> Rebuilding top-level info node ... "
321     ${MLIBDIR}/mkinfodir /usr/share/info > /usr/share/info/dir \
322     && echo "done" || echo "false"
323    
324     #rebuilds the enviroment with the content of /etc/env.d
325     ${MLIBDIR}/env-rebuild.sh
326    
327     xtitleclean
328    
329     echo -e "\nPackage '${PKGNAME/-${ARCH}/}' sucessfully installed.\n"
330     }
331    
332     mage_uninstall() {
333     # #installdbhome #packagedir #magefile
334     #source ${INSTALLDB}/$(basename ${MAGENAME} .mage)/$(basename ${MAGENAME})
335     #source ${INSTALLDB}/${CATEGORIE}/$(basename ${MAGENAME} .mage)/$(basename ${MAGENAME})
336    
337     local UNINST_MAGEFILE CAT_PKGNAME
338    
339     CAT_PKGNAME=$1
340    
341     #trim pkgname from CAT_PKGNAME to get magefile name
342     UNINST_MAGEFILE="$(echo ${CAT_PKGNAME}| cut -d / -f2).mage"
343    
344     #then source it
345     source ${INSTALLDB}/${CAT_PKGNAME}/${UNINST_MAGEFILE}
346    
347     #fix for mage-0.3.6-r5
348     #PKGNAME=${PKGNAME/-${ARCH}/}
349     PKGNAME=${CAT_PKGNAME}
350    
351     #if [ ! -e ${INSTALLDB}/${PKGNAME/-${ARCH}/} ]
352     if [ ! -e ${INSTALLDB}/${CAT_PKGNAME} ]
353     then
354     echo -e "\nPackage '${PKGNAME}' is not installed. Uninstallation Aborted.\n"
355     exit 3
356     fi
357    
358     echo -e "\nUninstall of Package:\t${COLRED}${PKGNAME}${COLDEFAULT}\n"
359    
360     if [ -z "${MAGE_UNINSTALL_TIMEOUT}" ]
361     then
362     MAGE_UNINSTALL_TIMEOUT=5
363     fi
364    
365     for ((i=0; i < MAGE_UNINSTALL_TIMEOUT; i++))
366     do
367     timeout=$(expr ${MAGE_UNINSTALL_TIMEOUT} - ${i})
368     echo -e "Starting in ${COLRED} ${timeout}" \
369     "${COLDEFAULT} seconds ... ( [CTRL+C] to abort )"
370     sleep 1
371     #moves the cursor up
372     echo -en \\033[A
373     done
374    
375     #moves the cursor up
376     echo -en \\033[A
377     #min. 30 spaces needed for clearing up the rest of the line
378     echo -e "\nUninstall ${COLRED}started${COLDEFAULT} ..." \
379     " \n"
380     sleep 1
381    
382    
383     ##preremove scripte
384     export -f preremove 2> /dev/null
385     if [ "$?" == "0" ]
386     then
387     echo -e "\nRunning Preremove ... \n"
388     preremove
389     unset preremove
390     fi
391    
392     #runs uninstall
393     build_douninstall ${PKGNAME}
394    
395     #postremove scripte
396     export -f postremove 2> /dev/null
397     if [ "$?" == "0" ]
398     then
399     echo -e "\nRunning Postremove ... \n"
400     postremove
401     unset postremove
402     fi
403    
404     #remove database entry
405     remove_database_entry ${PKGNAME}
406    
407     #check for PROVIDE
408     # if so uninstall it from virtualdb
409     unregister_virtual_pkg
410    
411     #rebuilds toplevel info node
412     echo -en "\n>>>> Rebuilding top-level info node ... "
413     ${MLIBDIR}/mkinfodir /usr/share/info > /usr/share/info/dir \
414     && echo "done" || echo "false"
415    
416     #rebuilds the enviroment with the content of /etc/env.d
417     ${MLIBDIR}/env-rebuild.sh
418    
419     echo -e "\nPackage '${PKGNAME}' sucessfully removed.\n"
420     }
421    
422    
423     case "$1" in
424     download)
425     choppkgname
426     getcategorie
427     get_highest_magefile
428     source ${MAGEFILE}
429     getpackages
430     ;;
431    
432     pretend)
433     choppkgname
434     getcategorie
435     get_highest_magefile
436     ${MLIBDIR}/depwanderer.sh pretend ${MAGEFILE}
437     #abort already installed
438     if [ "$?" == "3" ]
439     then
440     echo -en "Package "
441     echo -en "${COLRED}$(basename ${MAGEFILE} .mage)${COLDEFAULT}"
442     echo -e " already installed."
443     fi
444     ;;
445    
446     srcpretend)
447     choppkgname
448     getcategorie
449     get_highest_magefile
450     ${MLIBDIR}/depwanderer.sh srcpretend ${MAGEFILE}
451     #abort already installed
452     if [ "$?" == "3" ]
453     then
454     echo -en "Package "
455     echo -en "${COLRED}$(basename ${MAGEFILE} .mage)${COLDEFAULT}"
456     echo -e " already installed."
457     fi
458     ;;
459    
460     install)
461     #counter for protected files
462     declare -i PROTECT_COUNT=0
463     choppkgname
464     getcategorie
465     get_highest_magefile
466     ALLDEPS="$(/usr/lib/mage/depwanderer.sh install ${MAGEFILE})"
467     #abort already installed
468     if [ "$?" == "3" ]
469     then
470     echo -en "Package "
471     echo -en "${COLRED}$(basename ${MAGEFILE} .mage)${COLDEFAULT}"
472     echo -e " already installed."
473     echo -e "Installation aborted."
474     exit 0
475     fi
476     for i in ${ALLDEPS}
477     do
478     #first unset all vars to be safe
479     unset PKGNAME
480     unset STATE
481     unset DESCRIPTION
482     unset HOMEPAGE
483     unset DEPEND
484     unset SDEPEND
485     unset PROVIDE
486     unset PKGTYPE
487     unset preinstall
488     unset postinstall
489    
490     #than install
491     MY_CAT_FIX="$(dirname ${i})"
492     CATEGORIE="$(basename ${MY_CAT_FIX%/*})"
493     mage_install ${i}
494     done
495     run_etc_update
496     ;;
497    
498     srcinstall)
499     #counter for protected files
500     declare -i PROTECT_COUNT=0
501     choppkgname
502     getcategorie
503     get_highest_magefile
504     ALLDEPS="$(/usr/lib/mage/depwanderer.sh srcinstall ${MAGEFILE})"
505     #abort already installed
506     if [ "$?" == "3" ]
507     then
508     echo -en "Package "
509     echo -en "${COLRED}$(basename ${MAGEFILE} .mage)${COLDEFAULT}"
510     echo -e " already installed."
511     echo -e "Installation aborted."
512     exit 0
513     fi
514     for i in ${ALLDEPS}
515     do
516     #first unset all vars to be safe
517     unset PKGNAME
518     unset STATE
519     unset DESCRIPTION
520     unset HOMEPAGE
521     unset DEPEND
522     unset SDEPEND
523     unset PROVIDE
524     unset PKGTYPE
525     unset preinstall
526     unset postinstall
527    
528     #than srcinstall
529     MY_CAT_FIX="$(dirname ${i})"
530     CATEGORIE="$(basename ${MY_CAT_FIX%/*})"
531     #builds the package from source
532     ${MLIBDIR}/sourceinstall.sh ${i} || exit 1
533     done
534     run_etc_update
535     ;;
536    
537     uninstall)
538     RESULT=$(get_magefile_to_uninstall ${MAGENAME})
539     #get_magefile_to_uninstall ${MAGENAME}
540     #echo $?
541     #read
542     case $? in
543     0)
544     #MAGENAME=${RESULT}
545     #mage_uninstall
546     mage_uninstall ${RESULT}
547     ;;
548     1)
549     echo "No package found named '${RESULT}'."
550     exit 1
551     ;;
552     2)
553     echo -e ${COLRED}"Warning: More than one package found ..."${COLDEFAULT}
554     echo
555     echo "Please select the package you want to uninstall:"
556     echo
557     declare -i i=0
558     declare -i USERSEL=0
559     for x in ${RESULT}
560     do
561     echo -e "\t${COLBLUE}[${i}] ${COLGREEN}$(basename ${x})${COLDEFAULT}"
562     SELECTION[${i}]=${x}
563     i=${i}+1
564     done
565     echo
566     echo -n "Choose a number: "
567     read USERSEL
568    
569     if [ ${USERSEL} -ge 0 -a ${USERSEL} -le ${i} ]
570     then
571     #the correct magefile
572     #MAGENAME="${SELECTION[${USERSEL}]}/$(basename ${SELECTION[${USERSEL}]}).mage"
573     MAGENAME="${SELECTION[${USERSEL}]}"
574     mage_uninstall ${MAGENAME}
575     else
576     echo "Wrong input. Uninstall abortet ..."
577     exit 1
578     fi
579     #echo
580     #echo "Uninstallation Aborted."
581     #exit 1
582     ;;
583     esac
584     ;;
585    
586     search)
587     ${MLIBDIR}/pkgsearch.sh ${MAGENAME}
588     ;;
589    
590     unpack)
591     build_unpackpkg
592     ;;
593    
594     update)
595     syncmage
596     ;;
597     clean)
598     cleanpkg
599     ;;
600     keepfiles)
601     keepfiles "$2" "$3"
602     ;;
603     inject)
604     injectpkg "$2"
605     ;;
606     reminjected)
607     reminjected
608     ;;
609     version)
610     showversion
611     ;;
612     *)
613     print_usage
614     ;;
615     esac

Properties

Name Value
svn:executable *