Added Andy's easypack
This commit is contained in:
parent
9762b4c11f
commit
68e12c2f04
@ -19,6 +19,7 @@ usr: \
|
||||
/usr/bin/cd \
|
||||
/usr/bin/[ \
|
||||
/usr/bin/command \
|
||||
/usr/bin/easypack \
|
||||
/usr/bin/echo \
|
||||
/usr/bin/expr \
|
||||
/usr/bin/false \
|
||||
@ -96,6 +97,9 @@ clean:
|
||||
/usr/bin/wait: /usr/bin/cd
|
||||
install -m 755 -l $? $@
|
||||
|
||||
/usr/bin/easypack: easypack.sh
|
||||
install -m 755 -c -o bin $? $@
|
||||
|
||||
/usr/bin/getpack: getpack.sh
|
||||
install -m 755 -c -o bin $? $@
|
||||
|
||||
|
128
commands/scripts/easypack.sh
Normal file
128
commands/scripts/easypack.sh
Normal file
@ -0,0 +1,128 @@
|
||||
From real-beng@top.few.vu.nl Thu Sep 15 12:33:54 2005
|
||||
Return-Path: <real-beng@top.few.vu.nl>
|
||||
X-Original-To: ben@scum.org
|
||||
Delivered-To: beng@atlantis.8hz.com
|
||||
Received: from top.few.vu.nl (top.few.vu.nl [130.37.20.4])
|
||||
by atlantis.8hz.com (Postfix) with ESMTP id 12A02BA52
|
||||
for <ben@scum.org>; Thu, 15 Sep 2005 12:33:54 +0200 (CEST)
|
||||
Received: from flits.few.vu.nl (flits.few.vu.nl [192.31.231.65])
|
||||
by top.few.vu.nl with esmtp
|
||||
(Smail #108) id m1EFr3x-0000PXC; Thu, 15 Sep 2005 12:33 +0200
|
||||
Received: by flits.few.vu.nl (Smail #108)
|
||||
id m1EFr3x-0001vsC; Thu, 15 Sep 2005 12:33 +0200
|
||||
Message-Id: <m1EFr3x-0001vsC@flits.few.vu.nl>
|
||||
Date: Thu, 15 Sep 2005 12:33:53 CEST
|
||||
From: Andy Tanenbaum <ast@cs.vu.nl>
|
||||
To: beng@few.vu.nl
|
||||
Subject: easypack
|
||||
Status: RO
|
||||
Content-Length: 2825
|
||||
Lines: 106
|
||||
|
||||
To make it possible to have two places for code to come from (tested
|
||||
and beta), I changed pack to try both of them in sequence. I also
|
||||
improved error reporting and logging.
|
||||
|
||||
Andy
|
||||
---------------------- easypack -----------------------
|
||||
#!/bin/sh
|
||||
|
||||
# This script gets and installs a package from the Website.
|
||||
# It is called by getpack package1 ...
|
||||
# A package must be in the form of pack.tar.bz2 and must
|
||||
# include a build script that makes and installs it.
|
||||
# The build script should succeed if installation works, else fail
|
||||
|
||||
# Examples:
|
||||
# easypack awk elle telnet # fetch and install 3 packages
|
||||
# easypack -o awk elle telnet # fetch and replace existing packs
|
||||
|
||||
SOURCE_DIR=/usr/src/commands # where the source is deposited
|
||||
OVERWRITE=0 # can an installed package be overwritten?
|
||||
SOFTWARE_DIR="http://www.minix3.org/software" # Tested and approved S/W
|
||||
BETA_DIR="http://www.minix3.org/beta_software" # Untested software
|
||||
|
||||
|
||||
# Check for at least one parameter
|
||||
case $# in
|
||||
0) echo Usage: $0 package ...
|
||||
exit ;;
|
||||
esac
|
||||
|
||||
# Change to source directory
|
||||
ORIG_DIR=`pwd`
|
||||
rm -rf Log # remove old debugging log
|
||||
cd $SOURCE_DIR
|
||||
|
||||
# Check for write permission here
|
||||
if test ! -w .
|
||||
then echo You do not have write permission for $SOURCE_DIR
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for -o flag; if found, set OVERWRITE
|
||||
if test $1 = "-o"
|
||||
then OVERWRITE=1
|
||||
shift
|
||||
fi
|
||||
|
||||
# Loop on the packages
|
||||
for i
|
||||
do # Check to see if it exists. Don't overwrite unless -o given
|
||||
echo " " ; echo Start fetching $i
|
||||
echo " " >>$ORIG_DIR/Log
|
||||
echo ------------- Start fetching $i ------------------ >>$ORIG_DIR/Log
|
||||
if test -r $i
|
||||
then # Directory already exists. May it be overwritten?
|
||||
if test $OVERWRITE = 0
|
||||
then echo $i already exists. Skipping this package
|
||||
continue
|
||||
else # Remove the directory
|
||||
rm -rf $i
|
||||
echo Existing directory $i removed
|
||||
fi
|
||||
fi
|
||||
|
||||
# Remove any junk from previous attempts
|
||||
rm -rf $i.tar.bz2 $i.tar
|
||||
|
||||
# Get the package
|
||||
URL=$SOFTWARE_DIR/$i.tar.bz2
|
||||
URL1=$URL
|
||||
urlget $URL >$i.tar.bz2
|
||||
|
||||
# See if we got the file or an error
|
||||
if grep "<HTML>" $i.tar.bz2 >/dev/null
|
||||
then # It is not in the directory of tested software. Try beta dir.
|
||||
URL=$BETA_DIR/$i.tar.bz2
|
||||
urlget $URL >$i.tar.bz2
|
||||
if grep "<HTML>" $i.tar.bz2 >/dev/null
|
||||
then echo Cannot get $i.
|
||||
echo " " Tried $URL1
|
||||
echo " " Tried $URL
|
||||
echo " " Skipping this package
|
||||
rm -rf $i.tar.bz2
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
# We got it. Unpack it.
|
||||
bunzip2 $i.tar.bz2
|
||||
tar xf $i.tar
|
||||
if test ! -d $i
|
||||
then echo Unable to unpack $i
|
||||
continue
|
||||
fi
|
||||
|
||||
# It is now unpacked. Build it
|
||||
cd $i
|
||||
if ./build >>$ORIG_DIR/Log 2>&1
|
||||
then echo $i installed from $URL
|
||||
else echo $i failed to install
|
||||
fi
|
||||
|
||||
# Clean up
|
||||
cd ..
|
||||
# rm -rf $i.tar*
|
||||
done
|
||||
|
Loading…
x
Reference in New Issue
Block a user