diff --git a/ChangeLog-current.txt b/ChangeLog-current.txt index fc45182..d7f1f09 100644 --- a/ChangeLog-current.txt +++ b/ChangeLog-current.txt @@ -118,4 +118,8 @@ enhancements: are preparing for the Slackware 13.0 release. * Add option to retry a failed build. Thanks to Zordrak for suggesting this feature. + * Add CLEANUP configuration variable, which when set to YES tells sbopkg to + delete the extracted sources, and all the associated "residuals" of the + build, as soon as the build is finished. Thanks to Marco Bonetti and + Gregory Tourte for the suggestion and the nice discussion. +--------------------------+ diff --git a/src/etc/sbopkg/sbopkg.conf.new b/src/etc/sbopkg/sbopkg.conf.new index 41e16db..7999cd8 100644 --- a/src/etc/sbopkg/sbopkg.conf.new +++ b/src/etc/sbopkg/sbopkg.conf.new @@ -18,6 +18,7 @@ REPO_BRANCH=${REPO_BRANCH:-13.0} KEEPLOG=YES LOGFILE=$LOGDIR/sbopkg-build-log DEBUG=0 +CLEANUP=NO # The following variables are used by sbopkg and by the SlackBuild scripts # themselves. They are exported for this reason. diff --git a/src/usr/man/man5/sbopkg.conf.5 b/src/usr/man/man5/sbopkg.conf.5 index 0d509e9..14f6d96 100644 --- a/src/usr/man/man5/sbopkg.conf.5 +++ b/src/usr/man/man5/sbopkg.conf.5 @@ -126,6 +126,17 @@ The default value of LOGDIR is: .br LOGDIR=${LOGDIR:-/var/log/sbopkg}. +.TP 5 +.B CLEANUP +.br +This option should be set to YES or NO. When set to YES, the source +files and the various residuals from the process of building a package +are deleted right after the build. +A side effect of setting CLEANUP to YES is that the TMP setting got +from the environment or from the configuration files is ignored. + +The default value of CLEANUP is: NO. + .TP 5 .B DEBUG .br @@ -207,6 +218,9 @@ would then set $TMP to /home/sbo/tmp for building SBo packages. OUTPUT can also be changed to save compiled packages in a location other than the default of /tmp. +Please note that if the CLEANUP variable is set to YES, the TMP setting +is ignored. + You can also export variables in sbopkg.conf that are not used by sbopkg at all. diff --git a/src/usr/sbin/sbopkg b/src/usr/sbin/sbopkg index 782ac6f..4a1da6b 100755 --- a/src/usr/sbin/sbopkg +++ b/src/usr/sbin/sbopkg @@ -30,9 +30,10 @@ # Antoine, ktabic, Ken Roberts, samac, Bert Babington, Murat D. Kadirov, # The-spiki, David Somero, LukenShiro, Drew Ames, nille, acidchild, mancha, # macavity, Zordrak, João Felipe Santos, cotterochan, necropresto, Pierre -# Cazenave, Mauro Giachero, The-Croupier, Wade Grant, TSquaredF, and -# alkos333. This script would not be where it is without the help of these -# folks. If I left anyone out, I apologize. Thank you! +# Cazenave, Mauro Giachero, The-Croupier, Wade Grant, TSquaredF, alkos333, +# Marco Bonetti and Gregory Tourte. +# This script would not be where it is without the help of these folks. +# If I left anyone out, I apologize. Thank you! # #set -x @@ -119,9 +120,14 @@ config_check() { else unset KEEPLOG fi + if [[ $CLEANUP == [Yy][Ee][Ss] ]]; then + CLEANUP=1 + else + unset CLEANUP + fi # Some configuration options are mandatory for VAR in REPO_ROOT LOGDIR QUEUEDIR SRCDIR SBOPKGTMP REPO_NAME \ - REPO_BRANCH KEEPLOG LOGFILE DEBUG TMP OUTPUT RSYNCFLAGS \ + REPO_BRANCH KEEPLOG CLEANUP LOGFILE DEBUG TMP OUTPUT RSYNCFLAGS \ WGETFLAGS DIFF DIFFOPTS SBOPKG_REPOS_D; do if [[ -z "${!VAR}" ]]; then MISSING+="$VAR " @@ -2889,7 +2895,19 @@ build_package() { [[ $BUILDOPTIONS ]] && eval "export $BUILDOPTIONS" fi export OUTPUT=$SB_OUTPUT - nice sh $PKGNAME.SlackBuild.build + if [[ $CLEANUP ]]; then + # We want to remove all the build residuals after running the + # SlackBuild script. To do that reliably (i.e. without + # deleting too much or leaving garbage behind us), a nice + # approach is to use a dedicated build directory. + export TMP=$SBOPKGTMP/sbopkg-build-directory + rm -rf $TMP # Just in case + nice sh $PKGNAME.SlackBuild.build + echo "Cleaning up..." + rm -rf $TMP + else + nice sh $PKGNAME.SlackBuild.build + fi ) # Let's see the result @@ -3723,6 +3741,7 @@ cleanup() { rm -f $SBOPKGTMP/sbopkg_* rm -f $SBOPKGTMP/sbopkgpidlist rm -rf $SBOPKGTMP/sbopkg-sbooutputdir + rm -rf $SBOPKGTMP/sbopkg-build-directory rm -f $SBOPKGTMP/sbopkg-*-queue rm -f $SBOPKGTMP/sbopkg-tmp-* rm -f $PIDFILE @@ -3933,6 +3952,8 @@ unset REPO_TOOL # Active branch's fetch tool unset REPO_LINK # Active branch's fetch link unset REPO_DIR # Active branch's directory unset REPO_GPG # Active branch's GPG checking +unset CLEANUP # If set, delete the sources & c. after the build +unset KEEPLOG # If set, keep a permanent build log unset BUILD BFLAG IFLAG CHK_UPDATES GENSEARCH CHANGELOG OBSOLETESRC GETPKGS unset RSYNC SEARCH UPDATE VERSION CUSTOMVER