129 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| 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
 | |
| 
 | 
