Changeset 48
- Timestamp:
- 07/19/05 04:46:11 (3 years ago)
- Files:
-
- bpkg/trunk/bpkg (modified) (11 diffs)
- bpkg/trunk/Makefile (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
bpkg/trunk/bpkg
r46 r48 36 36 SKIPCONFIGURE=0 37 37 # Program used to download source 38 DOWNLOADER='wget - nv -c'38 DOWNLOADER='wget -c' 39 39 # Attempt to automatically download and extract source files given on the 40 40 # command line? … … 45 45 IGNOREPATHS="/tmp /dev /root /usr/src" 46 46 47 # Load system config 48 test -r /etc/bpkg.conf && . /etc/bpkg.conf 49 47 50 # 48 51 # XXXXXXXXXXXXXX Not really user-modifiable below here XXXXXXXXXXXXX 49 52 # 50 VERSION="0. 2"53 VERSION="0.3" 51 54 PACKAGER=auto 52 55 SELF=`basename $0` … … 61 64 TMPFILES="$TMPDIR $DESTROOT $INSTALLLOG" 62 65 MAKEINSTALL='make install' 66 EXPLICIT_PACKAGE=0 67 REQUIRED_PROGRAMS='installwatch cpio perl tar bzip2 gzip' 63 68 64 69 colour() … … 112 117 } 113 118 119 # duplicate_paths <destination> 120 # Duplicate permissions for a list of files read from stdin and place them 121 # at <destination>. 122 duplicate_paths() { 123 while read file; do 124 echo "$file" | perl -ne 'print "/\n"; $out = ""; chomp($_); for $v (split("/", $_)) { next if not $v; print "$out/$v\n"; $out = "$out/$v"; }' 125 done | sort | uniq | cpio -pdm "$1" > /dev/null 126 } 127 114 128 # usage: installer 115 129 installer() 116 130 { 117 131 umask 022 118 which installwatch > /dev/null 2>&1 || error "installwatch is required by $SELF"119 132 unset INSTALLWATCH_BACKUP_PATH 120 133 if [ $BACKUP = 1 ]; then … … 132 145 cat $INSTALLLOG | awk '{print $3 "\n" $4}' | egrep -v "^(${IGNOREPATHS// /|}|$SRCDIR)" | sort | uniq | while read FILE; do 133 146 if [ -e "$FILE" -a ! -d "$FILE" ]; then 134 mkdir -p "$DESTROOT/`dirname $FILE`" 135 cp -a "$FILE" "$DESTROOT/`dirname $FILE`" 136 fi 137 done 147 echo "$FILE" 148 fi 149 done | duplicate_paths "$DESTROOT" 138 150 test `find $DESTROOT -type f | wc -l` = 0 && error "No files installed. This could mean the source is already installed." 139 151 } … … 267 279 } 268 280 281 # Look for programs we require 282 for x in $REQUIRED_PROGRAMS; do 283 which $x > /dev/null 2>&1 || error "required program '$x' not found" 284 done 285 269 286 # Make sure some default directories exist 270 287 mkdir -p "$TMPDIR" … … 278 295 quitloop=0 279 296 while [ $quitloop = 0 -a $# != 0 ]; do 297 # if [[ "$1" = cpan://* ]]; then 298 # CPAN="${1#cpan://}" 299 # PACKAGE=perl-`echo ${CPAN/::/-} | tr A-Z a-z` 300 # notice "Pre-installing Perl module before packaging" 301 # perl -MCPAN -e "install '$CPAN'" || error "CPAN install failed" 302 # PACKAGEVER=`perl -MExtUtils::Installed -e "print ExtUtils::Installed->new()->version('$CPAN')" 2> /dev/null` 303 # CPANTMP="/tmp/$SELF.$PACKAGE.$$.cpan" 304 # TMPFILES="$TMPFILES $CPANTMP" 305 # mkdir -p $CPANTMP 306 # cd "$CPANTMP" 307 # SRCDIR=$PWD 308 # test -z "$PACKAGEVER" && error "could not determine version of Perl module $CPAN" 309 # perl -MExtUtils::Installed -e "print join(\"\n\", ExtUtils::Installed->new()->files('$CPAN')) . \"\n\"" | duplicate_paths "$CPANTMP" || error "failed to extract PERL module content list" 310 # cat <<EOF > Makefile 311 #all: 312 # 313 #install: 314 # find ./ | cpio -pdm / 315 # rm -f /Makefile 316 #EOF 317 # notice "packaging perl module $CPAN as $PACKAGE-$PACKAGEVER" 280 318 if [[ -f "$1" || "$1" = ftp://* || "$1" = http://* ]]; then 281 319 AUTOEXTRACT="$1" … … 286 324 elif [[ "$AUTOEXTRACT" == *Z ]]; then 287 325 FLAGS=z 326 elif [[ "$AUTOEXTRACT" == *zip ]]; then 327 FLAGS=zip 288 328 else 289 329 error "unknown archive format for '$AUTOEXTRACT'" … … 296 336 fi 297 337 notice "uncompressing package '$AUTOEXTRACT'" 298 tar xf$FLAGS "$AUTOEXTRACT" || error "failed to auto-extract '$AUTOEXTRACT'" 299 BUILDDIR=`tar tf$FLAGS "$AUTOEXTRACT" | cut -d/ -f1 | head -1` 338 if [ $FLAGS = zip ]; then 339 unzip "$AUTOEXTRACT" || error "failed to auto-extract '$AUTOEXTRACT'" 340 BUILDDIR=`unzip -lqq | awk '{print $NF}' | cut -d/ -f1 | head -1` 341 else 342 tar xf$FLAGS "$AUTOEXTRACT" || error "failed to auto-extract '$AUTOEXTRACT'" 343 BUILDDIR=`tar tf$FLAGS "$AUTOEXTRACT" | cut -d/ -f1 | head -1` 344 fi 300 345 notice "package uncompressed, moving into build directory '$BUILDDIR'" 301 346 cd "$BUILDDIR" 302 347 SRCDIR=$PWD 303 PACKAGE=`basename "$PWD" | rev | cut -d- -f2- | rev | tr A-Z a-z` 304 PACKAGEVER=`basename "$PWD" | rev | cut -d- -f1 | rev | tr A-Z a-z` 348 if [ $EXPLICIT_PACKAGE = 0 ]; then 349 PACKAGE=`basename "$PWD" | rev | cut -d- -f2- | rev | tr A-Z a-z` 350 PACKAGEVER=`basename "$PWD" | rev | cut -d- -f1 | rev | tr A-Z a-z` 351 if [ "_$PACKAGE" = "_$PACKAGEVER" ]; then 352 notice "Using source tarball for package name and version" 353 PACKAGE=`basename "$AUTOEXTRACT" | sed -e 's/\(\.tar.*\|\.t[gb]z.*\)$//' | rev | cut -d- -f2- | rev | tr A-Z a-z` 354 PACKAGEVER=`basename "$AUTOEXTRACT" | sed -e 's/\(\.tar.*\|\.t[gb]z.*\)$//' | rev | cut -d- -f1 | rev | tr A-Z a-z` 355 fi 356 fi 305 357 else 306 358 case $1 in … … 379 431 PACKAGE=`echo "$1" | cut -d= -f2- | rev | cut -d- -f2- | rev` 380 432 PACKAGEVER=`echo "$1" | cut -d= -f2- | rev | cut -d- -f1 | rev` 433 EXPLICIT_PACKAGE=1 381 434 ;; 382 435 --packager=*) … … 432 485 notice "generating stub Makefile for python" 433 486 cat <<EOF > Makefile 434 DESTDIR=/435 436 487 build: 437 488 python setup.py build 438 489 439 490 install: 440 python setup.py install -f --root=\$(DESTDIR)491 python setup.py install -f 441 492 EOF 442 493 elif [ -r Makefile.PL ]; then bpkg/trunk/Makefile
r47 r48 23 23 install-raw: all $(OS)-install 24 24 mkdir -p $(DESTDIR)$(PREFIX)/bin 25 mkdir -p $(DESTDIR)$(PREFIX)/lib26 25 install -m755 bpkg $(DESTDIR)$(PREFIX)/bin 27 26 @cat README
