#!/bin/bash base=`dirname $0` if [[ "$base" = "" || "$base" = "." ]] then base=`pwd` fi DEFNJ="$NUMJOBS" commondir=`readlink $(readlink $pc) | sed 's|.*/commonpkgs|../../../commonpkgs|'` if [[ "$2" != "" ]] then cat "$1" | perl -e ' $skip=shift; if($skip=~m/^-/) { # only packages to be build $onlybuild=1; $skip=~s/^-//; } if($skip=~m/\+/) { ($addskip)=($skip=~m/\+(\d+)/); $skip=~s/\+(\d+)//; } while(<>) { if($onlybuild && !m/^-/) { next; } if(m/$skip/) { if($addskip>0) { chop; print STDERR "Skipping $_...\n"; $addskip--; } else { print; } last; } } while($addskip>0) { $_=<>; if(length($_)==0) { last; } if(!m/^-/) { next; } chop; print STDERR "Skipping $_...\n"; $addskip--; } while(<>) { print; } ' -- "$2" > /tmp/i.txt else \cp "$1" /tmp/i.txt fi cat /tmp/i.txt | grep '^-' | while read xx do xxclean=`echo "$xx" | cut -c 3- | sed 's/\[.*//' | sed 's/(.*//' | sed 's/#.*//'` i=`echo "$xxclean" | awk '{print $1}'` i2=`echo "$xxclean" | awk '{print $2}'` i3=`echo "$xxclean" | awk '{print $3}'` i4=`echo "$xxclean" | awk '{print $4}'` pack=`echo "$xxclean" | awk '{print $2}' | sed 's/\//_/g' ` if [[ $i = "PAUSE" ]] then if [[ ! -f $HOME/batch/$pack ]] then echo "***** PAUSING ... $xx ... PRESS ENTER TO RESUME *******" read < /dev/tty touch $HOME/batch/$pack fi else if [[ "$i" = "PAUSEDIFF" ]] then pdiff=1 i="$i2" i2="$i3" i3="$i4" elif [[ "$i" = "PAUSEDIFFBATCH" ]] then if [[ ! -f $HOME/batch/$pack ]] then pdiff=2 else pdiff=0 fi i="$i2" i2="$i3" i3="$i4" else pdiff=0 fi echo "Checking $i $i2 $i3..." cd $HOME/source/$i pkg=`basename $i` ddd=`dirname $i` rebuild=`echo "$xx" | grep -c rebuild` if [[ $rebuild -eq 0 ]] then rebuild=`grep -c "^- $pkg" $base/rebuild.txt 2>/dev/null` fi pack=`echo "$i" | sed 's/\//_/g' ` nj=`cat $base/nj.txt 2>/dev/null| grep "^${pack}: " | sed "s/^${pack}: //"` if [[ "$nj" = "" ]] then nj=`cat $base/nj.txt 2>/dev/null | grep "^ALL: " | sed "s/^ALL: //"` fi if [[ "$nj" = "" ]] then nj="$DEFNJ" fi export NUMJOBS="$nj" if [[ $rebuild -gt 0 && ! -f $HOME/batch/$pack ]] then touch $HOME/batch/$pack rebuild=3 else checkout=$TMP/checkver_$$.txt if [[ `echo "$xxclean" | grep -c 'ARCH=""'` -gt 0 ]] then OLDARCH=$ARCH unset ARCH checkver.pl $pkg.SlackBuild $i2 2>$checkout err=$? export ARCH=$OLDARCH else checkver.pl $pkg.SlackBuild $i2 2>$checkout err=$? fi if [[ $err -ne 0 ]] then # Sleep a bit to allow break sleep 5 fi if [[ $err -eq 100 ]] then # Package found in architecture packages dir, install it. upgradepkg --install-new `cat $checkout` if [[ $? -ne 0 ]] then echo "ERROR INSTALLING common PACKAGE $i (`cat $checkout`). Aborting." exit 3 fi rebuild=0 elif [[ $err -eq 99 ]] then # Package found in common packages dir. Install it and then make link. upgradepkg --install-new `cat $checkout` if [[ $? -ne 0 ]] then echo "ERROR INSTALLING common PACKAGE $i (`cat $checkout`). Aborting." exit 4 fi # Get the commonpkgs dir name pfile=`cat $checkout|sed "s|$pc/||"` echo "LINK ln -s $commondir/$pfile $p/$pfile" ln -s $commondir/$pfile $p/$pfile if [[ ! -z "$PACKUSER" ]]; then chown -h $PACKUSER $p/$pfile 2>/dev/null fi rebuild=0 elif [[ $err -ne 0 ]] then rebuild=2 else rebuild=0 fi \rm $checkout fi if [[ $rebuild -ne 0 ]] then if [[ $pdiff -gt 0 ]] then echo "***** PAUSING ... $xx ... PRESS ENTER TO RESUME *******" read < /dev/tty if [[ $pdiff -ge 2 ]] then touch $HOME/batch/$pack fi fi # Package version is different, build it if [[ "$i2" = "*" ]] then cmd=`perl -e '$_=shift;s/.*?\* //;print;' "$xxclean"` (eval $cmd) else if [[ "$i2" = "NOINST" ]] then ./$pkg.SlackBuild < /dev/null else ./$pkg.SlackBuild $i2 $i3 < /dev/null fi fi if [[ $? -ne 0 ]] then echo "ERROR COMPILING/CREATING PACKAGE $i. Aborting." exit 2 fi reinstall="" if [[ $rebuild -ge 3 ]] then reinstall="--reinstall" fi if [[ "$i2" != "NOINST" ]] then pkgs=`eval echo $TMP/${pkg}-*.txz /tmp/${pkg}-*.txz` if [[ "$pkgs" != "" ]] then upgradepkg --install-new $reinstall $pkgs fi fi # Move packages that could be built but are not named like the package: for mpkg in ap/vim n/alpine a/aaa_glibc-solibs l/ncurses do mddd=`echo $mpkg| awk -F/ '{print $1}'` mpkg=`echo $mpkg| awk -F/ '{print $2}'` mpkg=`cd $TMP;\ls -d ${mpkg}-*txz 2>/dev/null |grep -v gvim-` if [[ "$mpkg" != "" ]] then if [[ -f $p/$mddd/$mpkg || `echo $mpkg | grep -c alpine-2.21` -gt 0 ]] then # Package already built, remove it \rm $TMP/$mpkg else if [[ "$i2" != "NOINST" ]] then upgradepkg --install-new $TMP/$mpkg fi if [[ ! -z "$PACKUSER" ]]; then chown -h $PACKUSER $TMP/$mpkg* 2>/dev/null fi mv -v $TMP/$mpkg $p/$mddd/ fi fi done if [[ "$ddd" != "" ]] then pd=$p if [ $err -eq 10 ]; then pd=$pc fi mkdir -p "$p/$ddd" mkdir -p "$pd/$ddd" if [[ ! -z "$PACKUSER" ]]; then chown -h $PACKUSER "$pd/$ddd" chown -h $PACKUSER "$p/$ddd" chown -h $PACKUSER `eval echo $TMP/*-*-*-*.txz` `eval echo /tmp/*-*-*-*.txz` 2>/dev/null fi #mv `eval echo $TMP/${pkg}-*txz` $pd/$ddd #mv `eval echo /tmp/${pkg}-*txz` $pd/$ddd if [[ "$pkg" = "kde" || "$pkg" = "x11" ]]; then # Move to common dir "noarch" files (should already be done in kde/x11 build scripts) for pfile in `eval echo $TMP/*-*-noarch-*.txz` `eval echo /tmp/*-*-noarch-*.txz` do if [[ -f "$pfile" ]] then mv -v "$pfile" $pc/$ddd pfile=`basename $pfile` echo "LINK ln -s $commondir/$ddd/$pfile $p/$ddd/$pfile" ln -s $commondir/$ddd/$pfile $p/$ddd/$pfile if [[ ! -z "$PACKUSER" ]]; then chown -h $PACKUSER $p/$ddd/$pfile 2>/dev/null fi fi done fi for pfile in `eval echo $TMP/*-*-*-*.txz` `eval echo /tmp/*-*-*-*.txz` do if [[ -f "$pfile" ]] then mv -v "$pfile" $pd/$ddd if [[ $err -eq 10 ]] then pfile=`basename $pfile` echo "LINK ln -s $commondir/$ddd/$pfile $p/$ddd/$pfile" ln -s $commondir/$ddd/$pfile $p/$ddd/$pfile if [[ ! -z "$PACKUSER" ]]; then chown -h $PACKUSER $p/$ddd/$pfile 2>/dev/null fi fi fi done fi sleep 2 else if [[ $rebuild -gt 0 && ! -f $HOME/batch/$pack ]] then echo "***** PAUSING for rebuilding $i... PRESS ENTER TO RESUME *******" read < /dev/tty touch $HOME/batch/$pack fi fi cd $HOME/source/ fi done