#!/bin/bash # # libgc.SlackBuild # code: Vicious (michal@scxd.info); improvements: Zielony (e-pl@o2.pl) set -e # PACKAGE GENERAL INFO [EDIT] PKGNAME=libgc VERSION=7.0 BUILD=1X ARCH=i686 URL=http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-$VERSION.tar.gz CWD=`pwd` TMP=/tmp/$PKGNAME PKG=$TMP/package if [ -e $TMP/$PKGNAME-$VERSION/'Makefile' ]; then cd $TMP/$PKGNAME-$VERSION make else if [ ! -d $TMP/$PKGNAME-$VERSION ]; then rm -rf $PKG mkdir -p $PKG/install # PACKAGE DESCRIPTION [EDIT] cat << SLACKDESC | fmt -w $(( 80 - `echo $PKGNAME | wc -c` - 3 )) | perl -pe "s/^/$PKGNAME: /" > $PKG/install/slack-desc libgc (C and C++ garbage collector) The Boehm-Demers-Weiser conservative garbage collector can be used as a garbage collecting replacement for C malloc or C++ new. It allows you to allocate memory basically as you normally would, without explicitly deallocating memory that is no longer useful. The collector automatically recycles memory when it determines that it can no longer be otherwise accessed. Package prepared by Zielony (e-pl@o2.pl) SLACKDESC cd $TMP # step 1: DOWNLOAD SOURCE PKGFNAME=`ls -t | grep "$PKGNAME-$VERSION." | head -1` ( wget -c $URL -P $TMP -O $PKGNAME-$VERSION.${URL//*.} ) PKGFNAME=`ls -t | grep "$PKGNAME-$VERSION." | head -1` # step 2: UNPACK SOURCE AND PREPARE PACKAGE EXTENSION=`echo ${PKGFNAME//*.}` if [ $EXTENSION = "bz2" ]; then tar jxvf $PKGFNAME -C $TMP else tar zxvf $PKGFNAME -C $TMP fi DIRNAME=`tar tf $PKGFNAME | head -1` echo $DIRNAME | grep '/' && DIRNAME=${DIRNAME%${DIRNAME#*/}} if [ "$DIRNAME" != "$PKGNAME-$VERSION/" ]; then mv $DIRNAME $PKGNAME-$VERSION; fi chown root:root $TMP -R fi cd $TMP/$PKGNAME-$VERSION case $ARCH in "i686") SLKCFLAGS="-O2 -march=i686 -mtune=i686" ;; "i486") SLKCFLAGS="-O2 -march=i486 -mtune=i686" ;; "i386") SLKCFLAGS="-O2 -march=i386 -mcpu=i686" ;; "s390") SLKCFLAGS="-O2" ;; "x86_64") SLKCFLAGS="-O2" ;; *) SLKCFLAGS="-O2" ;; esac if [ -s 'configure' ]; then CFLAGS="$SLKCFLAGS" CXXFLAGS="$SLKCFLAGS" ./configure \ --prefix=/usr \ --disable-debug \ --disable-static \ --enable-cplusplus \ --enable-large-config \ --mandir=/usr/man \ --sysconfdir=/etc \ --program-prefix="" \ --program-suffix="" \ $ARCH-slackware-linux fi make fi make install DESTDIR=$PKG # step 3: STRIP BINARIES & GZIP MANUALS cd $PKG ( find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : \ | xargs strip --strip-unneeded 2> /dev/null find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : \ | xargs strip --strip-unneeded 2> /dev/null find . | xargs file | grep "current ar archive" | grep ELF | cut -f 1 -d : \ | xargs strip --strip-debug 2> /dev/null ) ( find $PKG/usr -path '*/man/man?/*' -exec gzip \{} \; ) # step 4: CREATE PACKAGE & CLEAN TMP if [ `find . | wc -l` -le 1 ]; then echo "Brak plików pakietu!" else ( requiredbuilder -y -s $PKG/install $PKG ) makepkg -l y -c n $CWD/$PKGNAME-$VERSION-$ARCH-$BUILD.tgz if [ "$1" != "-nc" ]; then rm -rf $TMP; fi fi