source: trunk/minix/commands/scripts/easypack.sh@ 15

Last change on this file since 15 was 9, checked in by Mattia Monga, 14 years ago

Minix 3.1.2a

File size: 2.9 KB
Line 
1#!/bin/sh
2
3# This script gets and installs a package from the Website.
4# It is called by getpack package1 ...
5# A package must be in the form of pack.tar.bz2 and must
6# include a build script that makes and installs it.
7# The build script should succeed if installation works, else fail
8
9# Examples:
10# easypack awk elle telnet # fetch and install 3 packages
11# easypack -o awk elle telnet # fetch and replace existing packs
12
13SOURCE_DIR=/usr/src/commands # where the source is deposited
14OVERWRITE=0 # can an installed package be overwritten?
15SOFTWARE_DIR="http://www.minix3.org/software" # Tested and approved S/W
16BETA_DIR="http://www.minix3.org/beta_software" # Untested software
17
18
19# Check for at least one parameter
20case $# in
210) echo Usage: $0 package ...
22 exit ;;
23esac
24
25# Change to source directory
26ORIG_DIR=`pwd`
27rm -f Log # remove old debugging log
28cd $SOURCE_DIR || exit
29
30if [ "`id -u`" -ne 0 ]
31then
32 # Check for write permission here
33 if test ! -w .
34 then echo You do not have write permission for $SOURCE_DIR
35 exit 1
36 fi
37fi
38
39# Check for -o flag; if found, set OVERWRITE
40if test $1 = "-o"
41 then OVERWRITE=1
42 shift
43fi
44
45# Loop on the packages
46for i
47do # Check to see if it exists. Don't overwrite unless -o given
48 echo " " ; echo Start fetching package $i
49 echo " " >>$ORIG_DIR/Log
50 echo ------------- Start fetching $i ------------------ >>$ORIG_DIR/Log
51 if test -r $i
52 then # Directory already exists. May it be overwritten?
53 if test $OVERWRITE = 0
54 then echo $i already exists. Skipping this package
55 continue
56 else # Remove the directory
57 rm -rf $i
58 echo Existing directory $i removed
59 fi
60 fi
61
62 # Remove any junk from previous attempts
63 rm -f $i.tar.bz2 $i.tar
64
65 # Get the package
66 URL=$SOFTWARE_DIR/$i.tar.bz2
67 URL1=$URL
68 TARBZ=$i.tar.bz2
69 if urlget $URL >$TARBZ 2>/dev/null
70 then :
71 else # It is not in the directory of tested software. Try beta dir.
72 URL=$BETA_DIR/$TARBZ
73 if urlget $URL >$TARBZ 2>/dev/null
74 then :
75 else
76 echo Cannot get $i.
77 echo " " Tried $URL1
78 echo " " Tried $URL
79 echo " " Skipping this package
80 rm -f $TARBZ
81 continue
82 fi
83 fi
84
85 # We got it. Unpack it.
86 echo Package $i fetched
87 bunzip2 $TARBZ || smallbunzip2 $TARBZ
88 tar xf $i.tar
89 if test ! -d $i
90 then echo Unable to unpack $i
91 continue
92 else echo Package $i unpacked
93 fi
94
95 # It is now unpacked. Build it
96 cd $i
97 binsizes big
98 if [ -f build.minix ]
99 then sh build.minix >>$ORIG_DIR/Log 2>&1
100 r=$?
101 else sh build >>$ORIG_DIR/Log 2>&1
102 r=$?
103 fi
104 if [ $r -eq 0 ]
105 then echo Package $i installed
106 else echo Package $i failed to install, see Log
107 fi
108 if [ -f .postinstall ]
109 then echo Running postinstall script.
110 sh -e .postinstall
111 fi
112 binsizes normal
113
114 # Clean up
115 cd ..
116 rm -f $i.tar $TARBZ # Remove whatever is still lying around
117done
118
Note: See TracBrowser for help on using the repository browser.