aboutsummaryrefslogtreecommitdiff
path: root/trunk/src/createpkg
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/createpkg')
-rw-r--r--trunk/src/createpkg462
1 files changed, 245 insertions, 217 deletions
diff --git a/trunk/src/createpkg b/trunk/src/createpkg
index 557e3f6..93c658d 100644
--- a/trunk/src/createpkg
+++ b/trunk/src/createpkg
@@ -27,12 +27,12 @@
# Createpkg functions
#---------------------------------------------------
-CREATEPKG_VERSION="1.1.11"
+CREATEPKG_VERSION="1.1.12"
function usage {
- # Help message
- echo -e "${red}NAME${normal}
+ # Help message
+ echo -e "${red}NAME${normal}
createpkg - create Slackware packages from SlackBuilds in Sarava repository
${red}SYNOPSIS
@@ -48,7 +48,9 @@ ${red}DESCRIPTION${normal}
create all packages and install
${red}-np${normal}, ${red}--no-deps${normal}
does not solve dependences
- ${red}-s${normal}, ${red}--search${normal} <program${normal}>
+ ${red}-d${normal}, ${red}--debug${normal} ${green}<program>${normal}
+ enable SlackBuild debug (sh -x ...)
+ ${red}-s${normal}, ${red}--search${normal} ${green}S<program${normal}>
search for a ${green}<program>${normal}
${red}-f${normal}, ${red}--info${normal} ${green}<program>${normal}
show description and dependences of the program
@@ -87,163 +89,164 @@ ${red}COPYRIGHT${normal}
function build_all_slackbuild {
- # Build all SlackBuilds in repository
- createpkg --sync
+ # Build all SlackBuilds in repository
+ createpkg --sync
- cd $SLACKBUILDS_DIR
- LIST=`find . -name *.SlackBuild | sed 's/.*\/\(.*\)\.SlackBuild$/\1/' | sort | uniq`
- for i in $LIST; do
- [ ! lspkg $i >/dev/null ] && createpkg -i $i
- done
+ cd $SLACKBUILDS_DIR
+ LIST=`find . -name *.SlackBuild | sed 's/.*\/\(.*\)\.SlackBuild$/\1/' | sort | uniq`
+ for i in $LIST; do
+ [ ! lspkg $i >/dev/null ] && createpkg -i $i
+ done
}
function check_config {
- # check the configuration
- TMP=${TMP:=/tmp};
- if [ ! -z "$REPOS" ]; then
- MAKEPKG_REPOS="$REPOS"
- else
- REPOS=$MAKEPKG_REPOS
- fi
- # Create $TMP and $REPOS if need
- [ ! -e $TMP ] && mkdir -p $TMP
- [ ! -e $MAKEPKG_REPOS ] && mkdir -p $MAKEPKG_REPOS
- #
- SLACKBUILDS_DIR=${SLACKBUILDS_DIR:=/var/slackbuilds}
- #
- SYNC=${SYNC:=$no}
- SYNC=`convert_boolean $SYNC`
- BASEDIR="`dirname $SLACKBUILDS_DIR`"
+ # check the configuration
+ TMP=${TMP:=/tmp};
+ if [ ! -z "$REPOS" ]; then
+ MAKEPKG_REPOS="$REPOS"
+ else
+ REPOS=$MAKEPKG_REPOS
+ fi
+ # Create $TMP and $REPOS if need
+ [ ! -e $TMP ] && mkdir -p $TMP
+ [ ! -e $MAKEPKG_REPOS ] && mkdir -p $MAKEPKG_REPOS
+ #
+ SLACKBUILDS_DIR=${SLACKBUILDS_DIR:=/var/slackbuilds}
+ #
+ SYNC=${SYNC:=$no}
+ SYNC=`convert_boolean $SYNC`
+ BASEDIR="`dirname $SLACKBUILDS_DIR`"
}
function solve_dep {
- # Solve dependency
- [ $# -ne 3 ] && handle_error $ERROR_PAR_NUMBER
- local PACK="$1"
- local COND="$2"
- local VER="$3"
-
- # Check package in local system
- PACK="`echo $PACK | sed -e 's/\+/\\\+/'`"
- INSTALLED=`eval "ls /var/log/packages/ | egrep -E '^$PACK-[^-]+-[^-]+-[^-]+$'"`
- CHECK=$?
-
- # TODO: Make check version procedures
- if [ -z "$INSTALLED" ]; then
- if [ $CHECK -ne 0 ]; then
- # Check package in SlackBuilds tree
- eecho $messag "$BASENAME: processing $PACKAGE dependency $PACK"
- SYNC=$no CREATEPKG_CHILD=$CREATEPKG_CHILD createpkg --install $PACK
-
- # Check if the package was built and installed
- EXIT_CODE=$?
-
- if [ $EXIT_CODE -eq $ERROR_CREATEPKG_SLACKBUILD_NOTFOUND ]; then
- # Try to use simplaret
- ARCH=$CREATE_ARCH simplaret --update
- ARCH=$CREATE_ARCH simplaret --install $PACK
- [ $? -ne 0 ] && handle_error $ERROR_CREATEPKG_SLACKBUILD_NOTFOUND $PACK
- elif [ $EXIT_CODE -ne 0 ]; then
- handle_error $EXIT_CODE $PACK
- fi
-
- fi
+ # Solve dependency
+ [ $# -ne 3 ] && handle_error $ERROR_PAR_NUMBER
+ local PACK="$1"
+ local COND="$2"
+ local VER="$3"
+
+ # Check package in local system
+ PACK="`echo $PACK | sed -e 's/\+/\\\+/'`"
+ INSTALLED=`eval "ls /var/log/packages/ | egrep -E '^$PACK-[^-]+-[^-]+-[^-]+$'"`
+ CHECK=$?
+
+ # TODO: Make check version procedures
+ if [ -z "$INSTALLED" ]; then
+ if [ $CHECK -ne 0 ]; then
+ # Check package in SlackBuilds tree
+ eecho $messag "$BASENAME: processing $PACKAGE dependency $PACK"
+ SYNC=$no CREATEPKG_CHILD=$CREATEPKG_CHILD createpkg --install $PACK
+
+ # Check if the package was built and installed
+ EXIT_CODE=$?
+
+ if [ $EXIT_CODE -eq $ERROR_CREATEPKG_SLACKBUILD_NOTFOUND ]; then
+ # Try to use simplaret
+ ARCH=$CREATE_ARCH simplaret --update
+ ARCH=$CREATE_ARCH simplaret --install $PACK
+ [ $? -ne 0 ] && handle_error $ERROR_CREATEPKG_SLACKBUILD_NOTFOUND $PACK
+ elif [ $EXIT_CODE -ne 0 ]; then
+ handle_error $EXIT_CODE $PACK
+ fi
+
fi
+ fi
}
function find_slackbuild {
- # Find SlackBuild script in the repository
- [ $# -ne 1 ] && handle_error $ERROR_PAR_NUMBER
- find $SLACKBUILDS_DIR -iname $1.SlackBuild
-
+ # Find SlackBuild script in the repository
+ [ $# -ne 1 ] && handle_error $ERROR_PAR_NUMBER
+ find $SLACKBUILDS_DIR -iname $1.SlackBuild
+ EXIT_CODE=$?
}
function info_builds {
- # Show packages info
- if [ "$PKG_PATH" != "" ]; then
- for i in $PKG_PATH; do
- PACKAGE=`basename $i .SlackBuild`
- NAME_UP=`echo $PACKAGE | tr [a-z] [A-Z]`
- eecho $commun "$NAME_UP: "
-
- PKG_DIR=`dirname $i`
- if [ -e $PKG_DIR/slack-desc ]; then
- eval "cat $PKG_DIR/slack-desc | grep '^$PACKAGE:' | cut -f2- -d:"
- eecho $normal
- else
- eval "cat $i | grep '^$PACKAGE:' | cut -f2- -d:"
- eecho $normal
- fi
-
- if [ -e $PKG_DIR/slack-required ]; then
- eecho $commun "slack-required"
- cat $PKG_DIR/slack-required | sed 's/^/ /'
- fi
- done
- fi
+ # Show packages info
+ if [ "$PKG_PATH" != "" ]; then
+ for i in $PKG_PATH; do
+ PACKAGE=`basename $i .SlackBuild`
+ NAME_UP=`echo $PACKAGE | tr [a-z] [A-Z]`
+ eecho $commun "$NAME_UP: "
+
+ PKG_DIR=`dirname $i`
+ if [ -e $PKG_DIR/slack-desc ]; then
+ eval "cat $PKG_DIR/slack-desc | grep '^$PACKAGE:' | cut -f2- -d:"
+ eecho $normal
+ else
+ eval "cat $i | grep '^$PACKAGE:' | cut -f2- -d:"
+ eecho $normal
+ fi
+
+ if [ -e $PKG_DIR/slack-required ]; then
+ eecho $commun "slack-required"
+ cat $PKG_DIR/slack-required | sed 's/^/ /'
+ fi
+ done
+ fi
}
function list_builds {
- # List all available SlackBuilds
- cd $SLACKBUILDS_DIR
- echo "Sarava SlackBuilds list"
- # level 1
- for i in *; do
- if [ -d $i ]; then
- echo -e " $i: "
+ # List all available SlackBuilds
+ cd $SLACKBUILDS_DIR
+ echo "Sarava SlackBuilds list"
+ # level 1
+ for i in *; do
+ if [ -d $i ]; then
+ echo -e " $i: "
+ (
+ cd $i
+ # level 2
+ for j in *; do
+ if [ -d $j ]; then
+ eecho $commun " $j"
(
- cd $i
- # level 2
- for j in *; do
- if [ -d $j ]; then
- eecho $commun " $j"
- (
- cd $j
- BUILD="`ls *.SlackBuild 2>/dev/null`"
- if [ "$BUILD" != "" ]; then
- # level 3
- for k in $BUILD; do
- eecho $messag " $k"
- done
- else
- BUILD=""
- fi
- for k in *; do
- if [ -d $k ]; then
- eecho $messag " $k.SlackBuild"
- fi
- done
- )
+ cd $j
+ BUILD="`ls *.SlackBuild 2>/dev/null`"
+ if [ "$BUILD" != "" ]; then
+ # level 3
+ for k in $BUILD; do
+ eecho $messag " $k"
+ done
+ else
+ BUILD=""
+ fi
+ for k in *; do
+ if [ -d $k ]; then
+ eecho $messag " $k.SlackBuild"
fi
- done
+ done
)
- fi
- done
+ fi
+ done
+ )
+ fi
+ done
}
function load_parameters {
- # Load Createpkg parameters
- MAKEPKG_REPOS="`eval_parameter MAKEPKG_REPOS /var/simplaret/repos`"
- SOURCE_DIR="`eval_parameter SOURCE_DIR /var/simplaret/sources`"
- SLACKBUILDS_DIR="`eval_parameter SLACKBUILDS_DIR /var/simplaret/slackbuilds`"
- SLACKBUILDS_SVN="`eval_parameter SLACKBUILDS_SVN svn://slack.sarava.org/slackbuilds`"
+ # Load Createpkg parameters
+ MAKEPKG_REPOS="`eval_parameter MAKEPKG_REPOS /var/simplaret/repos`"
+ SOURCE_DIR="`eval_parameter SOURCE_DIR /var/simplaret/sources`"
+ SLACKBUILDS_DIR="`eval_parameter SLACKBUILDS_DIR /var/simplaret/slackbuilds`"
+ SLACKBUILDS_SVN="`eval_parameter SLACKBUILDS_SVN svn://slack.sarava.org/slackbuilds`"
+
+ COLOR_MODE="`eval_parameter COLOR_MODE none`"
+ CREATE_ARCH="`eval_parameter CREATE_ARCH $(default_arch)`"
+ CREATE_CLEANUP="`eval_parameter CREATE_CLEANUP yes`"
- COLOR_MODE="`eval_parameter COLOR_MODE none`"
- CREATE_ARCH="`eval_parameter CREATE_ARCH $(default_arch)`"
- CREATE_CLEANUP="`eval_parameter CREATE_CLEANUP yes`"
+ REMOVE_OLD_PACKAGE="`eval_boolean_parameter REMOVE_OLD_PACKAGE $off`"
+ MOVE_BIN_PACKAGE="`eval_boolean_parameter MOVE_BIN_PACKAGE $off`"
- REMOVE_OLD_PACKAGE="`eval_boolean_parameter REMOVE_OLD_PACKAGE $off`"
- MOVE_BIN_PACKAGE="`eval_boolean_parameter MOVE_BIN_PACKAGE $off`"
}
#---------------------------------------------------
@@ -253,6 +256,7 @@ function load_parameters {
COMMON="/usr/libexec/simplepkg/common.sh"
SIMPLEPKG_CONF="/etc/simplepkg/simplepkg.conf"
BASENAME="`basename $0`"
+EXIT_CODE=0
if [ -f "$COMMON" ]; then
source $COMMON
@@ -271,9 +275,9 @@ error_codes
# Load slackbuildrc definitions
if [ -f ~/.slackbuildrc ]; then
- source ~/.slackbuildrc
+ source ~/.slackbuildrc
else
- source /etc/slackbuildrc 2>/dev/null
+ source /etc/slackbuildrc 2>/dev/null
fi
# Select color mode: gray, color or none (*)
@@ -281,9 +285,9 @@ color_select $COLOR_MODE
# This is used to show how many children process we have
if [ -z "$CREATEPKG_CHILD" ]; then
- CREATEPKG_CHILD=1
+ CREATEPKG_CHILD=1
else
- let CREATEPKG_CHILD++
+ let CREATEPKG_CHILD++
fi
BASENAME="`basename $0`[$CREATEPKG_CHILD]"
@@ -293,53 +297,59 @@ check_repo $SLACKBUILDS_DIR $SLACKBUILDS_SVN
INSTALL=$off
NO_DEPS=$off
+DEBUG=$off
case $1 in
- '--all'|'-a')
- # build all SlackBuilds in repository
- build_all_slackbuild
- exit 0
- ;;
- '--search'|'-s')
- [ $# -ne 2 ] && usage # two parameters is required
- find_slackbuild $2
- exit 0
- ;;
- '--info'|'-f')
- [ $# -ne 2 ] && usage # two parameters is required
- PKG_PATH=`find_slackbuild $2`
- info_builds
- exit 0
- ;;
- '--install'|'-i')
- [ $# -ne 2 ] && usage # two parameters is required
- PACKAGE="$2"
- INSTALL=$on
- ;;
- '--no-deps'|'-nd')
- [ $# -ne 2 ] && usage # two parameters is required
- NO_DEPS=$on
- PACKAGE="$2"
- ;;
- '--sync')
- sync_repo $SLACKBUILDS_DIR $SLACKBUILDS_SVN
- exit 0
- ;;
- '--help'|'-h'|'')
- usage
- exit 0
- ;;
- '--list'|'-l')
- list_builds
- exit 0
- ;;
- *)
- if [ "${1:0:1}" != "-" ]; then
- PACKAGE="$1"
- else
- usage
- fi
- ;;
+ '--all'|'-a')
+ # build all SlackBuilds in repository
+ build_all_slackbuild
+ exit 0
+ ;;
+ '--search'|'-s')
+ [ $# -ne 2 ] && usage # two parameters is required
+ find_slackbuild $2
+ exit 0
+ ;;
+ '--info'|'-f')
+ [ $# -ne 2 ] && usage # two parameters is required
+ PKG_PATH=`find_slackbuild $2`
+ info_builds
+ exit 0
+ ;;
+ '--install'|'-i')
+ [ $# -ne 2 ] && usage # two parameters is required
+ PACKAGE="$2"
+ INSTALL=$on
+ ;;
+ '--no-deps'|'-nd')
+ [ $# -ne 2 ] && usage # two parameters is required
+ NO_DEPS=$on
+ PACKAGE="$2"
+ ;;
+ '--debug'|'-d')
+ [ $# -ne 2 ] && usage # two parameters is required
+ PACKAGE="$2"
+ DEBUG=$on
+ ;;
+ '--sync')
+ sync_repo $SLACKBUILDS_DIR $SLACKBUILDS_SVN
+ exit 0
+ ;;
+ '--help'|'-h'|'')
+ usage
+ exit 0
+ ;;
+ '--list'|'-l')
+ list_builds
+ exit 0
+ ;;
+ *)
+ if [ "${1:0:1}" != "-" ]; then
+ PACKAGE="$1"
+ else
+ usage
+ fi
+ ;;
esac
# Synchronize repository
@@ -350,29 +360,29 @@ BUILD_SCRIPT="`find_slackbuild $PACKAGE`"
# Check SlackBuild script found
if [ -z "$BUILD_SCRIPT" ]; then
- handle_error $ERROR_CREATEPKG_SLACKBUILD_NOTFOUND $PACKAGE
+ handle_error $ERROR_CREATEPKG_SLACKBUILD_NOTFOUND $PACKAGE
fi
# Select one SlackBuild
if [ "`echo $BUILD_SCRIPT | wc -w`" -gt 1 ]; then
- AUX="$PS3"
- PS3="Choice: "
- LIST=`echo $BUILD_SCRIPT | sed 's/ /\n/g' | sed -r 's/.*\/(.*)\.SlackBuild$/\1/'`" EXIT"
-
- select PACKAGE in `echo $LIST`; do
- break
- done
-
- if [ "$PACKAGE" = "EXIT" ]; then
- eecho $error "error: None package select"
- exit 1
- fi
-
- # Select only one SlackBuild in BUILD_SCRIPT
- BUILD_SCRIPT=`echo $BUILD_SCRIPT | sed 's/ /\n/g' | grep "/$PACKAGE.SlackBuild"`
- PS3="$AUX"
+ AUX="$PS3"
+ PS3="Choice: "
+ LIST=`echo $BUILD_SCRIPT | sed 's/ /\n/g' | sed -r 's/.*\/(.*)\.SlackBuild$/\1/'`" EXIT"
+
+ select PACKAGE in `echo $LIST`; do
+ break
+ done
+
+ if [ "$PACKAGE" = "EXIT" ]; then
+ eecho $error "error: None package select"
+ exit 1
+ fi
+
+ # Select only one SlackBuild in BUILD_SCRIPT
+ BUILD_SCRIPT=`echo $BUILD_SCRIPT | sed 's/ /\n/g' | grep "/$PACKAGE.SlackBuild"`
+ PS3="$AUX"
else
- PACKAGE=`basename $BUILD_SCRIPT .SlackBuild`
+ PACKAGE=`basename $BUILD_SCRIPT .SlackBuild`
fi
# Get dirname and script name from slackbuild
@@ -382,27 +392,29 @@ eecho $messag "$BASENAME: found script $PACKAGE.SlackBuild, now checking for dep
# Sets the package's slack-required
if [ -f "$SCRIPT_BASE/$PACKAGE.slack-required" ]; then
- SLACK_REQUIRED="$SCRIPT_BASE/$PACKAGE.slack-required"
+ SLACK_REQUIRED="$SCRIPT_BASE/$PACKAGE.slack-required"
elif [ -f "$SCRIPT_BASE/slack-required" ]; then
- SLACK_REQUIRED="$SCRIPT_BASE/slack-required"
+ SLACK_REQUIRED="$SCRIPT_BASE/slack-required"
fi
if [ ! -z "$SLACK_REQUIRED" -a $NO_DEPS -ne $on ]; then
- # This routine checks for dependencies in package's slack-required
- ( grep '^[^#]' $SLACK_REQUIRED | while read dep; do
- if [ ! -z "$dep" ]; then
- PROGRAM="`echo $dep | awk '{ print $1 }'`"
- CONDITION="`echo $dep | awk '{ print $2 }' | tr [=\>\<] [egl]`"
- VERSION="`echo $dep | awk '{ print $3 }' | tr -dc '[:digit:]'`"
- solve_dep "$PROGRAM" "$CONDITION" "$VERSION"
- fi
- true
- done )
- [ $? -ne 0 ] && handle_error $error $ERROR_CREATEPKG_DEPENDENCY
-
- eecho $messag "$BASENAME: done checking for $PACKAGE dependencies"
+ # This routine checks for dependencies in package's slack-required
+ (
+ grep '^[^#]' $SLACK_REQUIRED | while read dep; do
+ if [ ! -z "$dep" ]; then
+ PROGRAM="`echo $dep | awk '{ print $1 }'`"
+ CONDITION="`echo $dep | awk '{ print $2 }' | tr [=\>\<] [egl]`"
+ VERSION="`echo $dep | awk '{ print $3 }' | tr -dc '[:digit:]'`"
+ solve_dep "$PROGRAM" "$CONDITION" "$VERSION"
+ fi
+ true
+ done
+ )
+ [ $? -ne 0 ] && handle_error $error $ERROR_CREATEPKG_DEPENDENCY
+
+ eecho $messag "$BASENAME: done checking for $PACKAGE dependencies"
else
- eecho $messag "$BASENAME: no unmet dependencies for $PACKAGE"
+ eecho $messag "$BASENAME: no unmet dependencies for $PACKAGE"
fi
eecho $messag "$BASENAME: processing $SCRIPT_NAME"
@@ -411,15 +423,29 @@ eecho $messag "$BASENAME: processing $SCRIPT_NAME"
cd $SCRIPT_BASE
# Run SlackBuild script
-(
+if [ $DEBUG -eq $off ]; then
+ (
+ LANG=en_US \
SRC_DIR=${SRC_DIR:=$SOURCE_DIR} \
SRC=${SRC_DIR:=$SOURCE_DIR} \
ARCH=${ARCH:=$CREATE_ARCH} \
COLOR=${COLOR:=$COLOR_MODE} \
REPOS=${REPOS:=$MAKEPKG_REPOS} \
CLEANUP=${CLEANUP:=$CREATE_CLEANUP} \
- INTERACT=no sh ./$SCRIPT_NAME
-)
+ INTERACT=no sh +x ./$SCRIPT_NAME
+ )
+else
+ (
+ LANG=en_US \
+ SRC_DIR=${SRC_DIR:=$SOURCE_DIR} \
+ SRC=${SRC_DIR:=$SOURCE_DIR} \
+ ARCH=${ARCH:=$CREATE_ARCH} \
+ COLOR=${COLOR:=$COLOR_MODE} \
+ REPOS=${REPOS:=$MAKEPKG_REPOS} \
+ CLEANUP=${CLEANUP:=$CREATE_CLEANUP} \
+ INTERACT=no sh -x ./$SCRIPT_NAME
+ )
+fi
# Check if package was built
handle_error $? $PACKAGE
@@ -445,10 +471,10 @@ PKG_NAME="`ls -1 -c $MAKEPKG_REPOS/$PACKAGE-*-*-*.tgz | head -n 1 | xargs basena
# Install package
if [ "$INSTALL" -eq $on ]; then
- # as we dont have the full package file name, we'll
- # use the newer file name that matches our wildcard:
+ # as we dont have the full package file name, we'll
+ # use the newer file name that matches our wildcard:
- upgradepkg --install-new $NEW_REPOS/$PKG_NAME
+ upgradepkg --install-new $NEW_REPOS/$PKG_NAME
fi
# TODO: subversion integration
@@ -456,6 +482,8 @@ fi
# svn commit
# Update repository FILELIST.TXT, ...
(
- cd $MAKEPKG_REPOS
- gen_filelist
+ cd $MAKEPKG_REPOS
+ gen_filelist
)
+
+exit $EXIT_CODE