# This file is part of the src2pkg program: # Copyright 2005-2009 Gilbert Ashley # src2pkg is released under the GNU General Public License Version 2 # make_package make_package() { if [[ $ALLOW_USER_EXTENSIONS = "YES" ]] ; then # check if the user has any pre-execution extensions to this file and run them, if so. [[ -f "$HOME"/.src2pkg/extensions/15.pre ]] && . "$HOME"/.src2pkg/extensions/15.pre fi if [[ "$FAILED" = "" ]] && [[ ! $USER_CANCELLED ]] ; then if [[ ! $RESUME ]] || [[ $RESUME = $FUNCNAME ]] || [[ $HAVE_RESUMED ]] ; then [[ $RESUME = $FUNCNAME ]] && HAVE_RESUMED=1 && echo $CYAN"Notice - "$BLUE"Resuming build at: "$NORMAL "$FUNCNAME" if [[ $PAUSE = "BEFORE" ]] ; then echo $MAGENTA"Notice - "$BLUE"Pausing before: "$NORMAL" '$FUNCNAME' Press ENTER to continue" read fi if [[ $HAVE_RESUMED ]] ; then if [[ -f $PACKAGE ]] ; then echo $MAGENTA" Notice: "$NORMAL" You are resuming this build and the PACKAGE already exists." echo " The old package should be removed before $FUNCNAME is run again." echo -n " Would you like to remove the old package [y/n] (default 'y'): " read -n 1 ANSWER if [[ $ANSWER = y ]] || [[ $ANSWER = Y ]] || [[ $ANSWER = "" ]] ; then echo -e '\n'$CYAN" Notice - "$NORMAL"Removing old PACKAGE" rm -f $PACKAGE fi fi fi # Build the package: echo -n $BLUE"Making installable package - "$NORMAL if [[ $QUIET = "YES" ]] ; then cd "$PKG_DIR" ; tiny_make_package "$PACKAGE" &> /dev/null else cd "$PKG_DIR" ; echo "" tiny_make_package "$PACKAGE" fi if [[ $? -ne 0 ]] ; then echo "" echo $RED"FAILED! "$NORMAL"Creation of package has failed." FAILED="PACKAGE CREATION in: $FUNCNAME" else [[ $QUIET = "YES" ]] && echo $GREEN"Done"$NORMAL || echo "" if [[ "$CREATE_MD5_CHECKSUM" = "YES" ]]; then echo $BLUE"Creating md5 checksum - "$NORMAL"$(basename $PACKAGE).md5" cd "$PKG_DEST_DIR" md5sum $(basename "$PACKAGE") > "$PACKAGE".md5 fi echo $BLUE"Package Creation - "$GREEN"Successful! "$BLUE"- Package Location:"$NORMAL echo "$PACKAGE" fi [[ $REALLY_INSTALL = "YES" ]] && really_install if [[ $PAUSE = "AFTER" ]] ; then echo $MAGENTA"Notice - "$BLUE"Pausing after: "$NORMAL" '$FUNCNAME' Press ENTER to continue" read fi fi fi if [[ $ALLOW_USER_EXTENSIONS = "YES" ]] ; then # check if the user has any post-execution extensions to this file and run them, if so. [[ -f "$HOME"/.src2pkg/extensions/15.post ]] && . "$HOME"/.src2pkg/extensions/15.post fi } # end make_package # tiny_make_package tiny_make_package() { PACKAGE_NAME=$1 TARGET_NAME=$(dirname "$PACKAGE_NAME") PACKAGE_NAME=$(basename "$PACKAGE_NAME") TAR_NAME=$(basename "$PACKAGE_NAME" ".$PKG_FORMAT") umask 022 echo "" if [[ "$EUID" = "0" ]] ; then ${TAR} cvf "$TAR_NAME".tar . else ${TAR} --owner=root --group=root -cvf "$TAR_NAME".tar . fi echo "" if [[ "$PKG_FORMAT" = "tgz" ]] ; then LONG_NAME=$TAR_NAME.tar.gz echo "Compressing $TAR_NAME.tar using gzip..." gzip -9 $TAR_NAME.tar elif [[ "$PKG_FORMAT" = "tbz" ]] ; then LONG_NAME=$TAR_NAME.tar.bz2 echo "Compressing $TAR_NAME.tar using bzip2..." bzip2 $TAR_NAME.tar elif [[ "$PKG_FORMAT" = "tlz" ]] ; then LONG_NAME=$TAR_NAME.tar.lzma echo "Compressing $TAR_NAME.tar using lzma..." lzma $TAR_NAME.tar elif [[ "$PKG_FORMAT" = "txz" ]] ; then LONG_NAME=$TAR_NAME.tar.xz echo "Compressing $TAR_NAME.tar using xz(lzma-2)..." xz $TAR_NAME.tar fi echo "Renaming $LONG_NAME to $PACKAGE_NAME..." mv "$LONG_NAME" "$PACKAGE_NAME" if [[ ! "$TARGET_NAME" = "." ]]; then echo "Moving $PACKAGE_NAME to $TARGET_NAME" mv "$PACKAGE_NAME" "$TARGET_NAME" fi } # Internal Routines mini_installpkg() { echo $BLUE"Installing package "$NORMAL"$PKG_NAME" case "$PKG_FORMAT" in tgz) PKG_COMPRESSOR=gzip ;; tbz) PKG_COMPRESSOR=bzip2 ;; tlz) PKG_COMPRESSOR=lzma ;; txz) PKG_COMPRESSOR=xz ;; esac # ( cd $ROOT/ ; ${TAR} -xzlUpvf - ) < $PACKAGE 2> /dev/null # ( cd $ROOT/ ; ${TAR} -xlUpv --use-compress-program $PKG_COMPRESSOR -f - ) < $PACKAGE 2> /dev/null ${TAR} -xlUpv -C $ROOT/ --use-compress-program $PKG_COMPRESSOR -f $PACKAGE 2> /dev/null DATABASE_FILE=$ROOT/$ADM_DIR_NAME/packages/$SHORT_NAME make_database if [[ -f $ROOT/install/doinst.sh ]] ; then echo "Executing install script for $SHORT_NAME..." ( cd $ROOT/ ; sh install/doinst.sh -install; ) fi if [[ -x /sbin/ldconfig ]] && [[ $ROOT = "" ]] ; then /sbin/ldconfig fi if [[ -d $ROOT/install ]] ; then if [[ -r $ROOT/install/doinst.sh ]]; then cp $ROOT/install/doinst.sh $ROOT/$ADM_DIR_NAME/scripts/$SHORT_NAME chmod 755 $ROOT/$ADM_DIR_NAME/scripts/$SHORT_NAME fi # /install/doinst.sh and /install/slack-* are reserved locations for the package system. ( cd $ROOT/install ; rm -f doinst.sh slack-* pkg-* *desc *required *provides *suggests *conflicts 1> /dev/null 2>&1 ) rmdir $ROOT/install 1> /dev/null 2>&1 fi } # really install the package only if REALLY_INSTALL="YES" really_install() { if [[ "$FAILED" = "" ]] && [[ "$REALLY_INSTALL" = "YES" ]] ; then if [[ "$INSTALLPKG" = "internal" ]] ; then mini_installpkg else echo $BLUE"Installing package $PKG_NAME"$NORMAL if [[ $QUIET="YES" ]] ; then "$INSTALLPKG" "$PACKAGE" 2> /dev/null 1> /dev/null else "$INSTALLPKG" "$PACKAGE" fi fi fi }