aboutsummaryrefslogtreecommitdiff
path: root/src/createpkg
diff options
context:
space:
mode:
Diffstat (limited to 'src/createpkg')
-rw-r--r--src/createpkg480
1 files changed, 0 insertions, 480 deletions
diff --git a/src/createpkg b/src/createpkg
deleted file mode 100644
index 5ab979f..0000000
--- a/src/createpkg
+++ /dev/null
@@ -1,480 +0,0 @@
-#!/bin/bash
-#
-# createpkg: package builder using http://slack.sarava.org/slackbuilds scripts
-# feedback: rhatto at riseup.net | gpl
-#
-# createpkg is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or any later version.
-#
-# createpkg is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place - Suite 330, Boston, MA 02111-1307, USA
-#
-# /etc/simplepkg/slackbuildrc parameters:
-#
-# SLACKBUILDS="/folder/to/place/slackbuilds", defaults to /var/slackbuilds
-# SVN="svn://repository", defaults do svn://slack.sarava.org/slackbuilds
-# SYNC="yes|no", whether to always update the repository
-#
-# TODO
-#
-# - optionally show a dependency tree before create the package
-# - in function solve_dep: resolve program versions
-# - mkdir source directory - error... (please check!)
-
-#---------------------------------------------------
-# Createpkg functions
-#---------------------------------------------------
-
-function error_codes {
-
- # Slackbuilds error codes
- ERROR_WGET=31 # wget error
- ERROR_MAKE=32 # make source error
- ERROR_INSTALL=33 # make install error
- ERROR_MD5=34 # md5sum error
- ERROR_CONF=35 # ./configure error
- ERROR_HELP=36 # dasable
- ERROR_TAR=37 # tar error
- ERROR_MKPKG=38 # makepkg error
- ERROR_GPG=39 # gpg check error
- ERROR_PATCH=40 # patch error
- ERROR_VCS=41 # cvs error
- ERROR_MKDIR=42 # make directory error
-
- # Createpkg error codes
- ERROR_INSTPKG=200 # installpkg error
- ERROR_DEPEN=201 # dependency error
- SCRIPT_OR_PACKAGE_NOT_FOUND=202 # Script or package not found
-}
-
-function handle_error {
-
- # This function deals with internal createpkg errors
- # and also with non-zero exit codes from slackbuilds
- # Input: $1 - error code
- # Output: Error mensage
- #
- # check slackbuild exit status are:
- #
- # ERROR_WGET=31; ERROR_MAKE=32; ERROR_INSTALL=33
- # ERROR_MD5=34; ERROR_CONF=35; ERROR_HELP=36
- # ERROR_TAR=37; ERROR_MKPKG=38 ERROR_GPG=39
- # ERROR_PATCH=40; ERROR_VCS=41; ERROR_MKDIR=42
- #
- # thanks to rudsonalves at yahoo.com.br for this spec.
-
- # we don't want to process when exit status = 0
- [ "$1" == "0" ] && return
-
- # Exit codes
- case $1 in
- 2) usage ;;
- 3) echo -e "$CL_ALERT $BASENAME: could not update the repository $2 $CL_OFF" ;;
- 4) echo -e "$CL_ALERT $BASENAME: could not create folder $2 $CL_OFF" ;;
- 5) echo -e "$CL_ALERT $BASENAME: script not found for $2 $CL_OFF" ;;
- $ERROR_WGET)
- echo -e "$CL_ERROR $BASENAME: error downloading source/package for $2 $CL_OFF" ;;
- $ERROR_MAKE)
- echo -e "$CL_ERROR $BASENAME: error compiling $2 source code $CL_OFF" ;;
- $ERROR_INSTALL)
- echo -e "$CL_ERROR $BASENAME: error installing $2 $CL_OFF" ;;
- $ERROR_MD5)
- echo -e "$CL_ERROR $BASENAME: error on source code integrity check for $2 $CL_OFF" ;;
- $ERROR_CONF)
- echo -e "$CL_ERROR $BASENAME: error configuring the source code for $2 $CL_OFF" ;;
- $ERROR_HELP)
- exit 0 ;; # its supposed to never happen here :P
- $ERROR_TAR)
- echo -e "$CL_ERROR $BASENAME: error decompressing source code for $2 $CL_OFF" ;;
- $ERROR_MKPKG)
- echo -e "$CL_ERROR $BASENAME: error creating package $2 $CL_OFF" ;;
- $ERROR_GPG)
- echo -e "$CL_ERROR $BASENAME: error verifying GPG signature the source code for $2 $CL_OFF" ;;
- $ERROR_PATCH)
- echo -e "$CL_ERROR $BASENAME: error patching the source code for $2 $CL_OFF" ;;
- $ERROR_VCS)
- echo -e "$CL_ERROR $BASENAME: error downloading $2 source from version control system $CL_OFF" ;;
- $ERROR_MKDIR)
- echo -e "$CL_ERROR $BASENAME: make directory $2 error, aborting $CL_OFF" ;;
- $ERROR_INSTPKG)
- echo -e "$CL_ERROR $BASENAME: install package $2 error, aborting $CL_OFF" ;;
- $ERROR_DEPEN)
- echo -e "$CL_ERROR $BASENAME: dependency solve error, aborting $CL_OFF" ;;
- *) echo -e "$CL_ERROR $BASENAME: unknown error or user interrupt $CL_OFF" ;;
- $SCRIPT_OR_PACKAGE_NOT_FOUND)
- echo -e "$CL_ERROR $BASENAME: SlackBuild or package not found $CL_OFF" ;;
- esac
-
- exit $1
-
-}
-
-function build_repo {
-
- # Checkout a new slackbuild working copy
- BASEDIR="`dirname $SLACKBUILDS`"
- mkdir -p $BASEDIR || handle_error 4 $BASEDIR
- cd $BASEDIR
- svn checkout $SVN
- cd $SLACKBUILDS
-
-}
-
-function usage {
-
- # Help mensage
- echo -e "$CL_COMMU Usage: createpkg [--install/-i] package-name $CL_OFF"
- echo -e "$CL_COMMU createpkg --no-deps/-np package-name $CL_OFF"
- echo -e "$CL_COMMU createpkg --search/-s package-name $CL_OFF"
- echo -e "$CL_COMMU createpkg --info/-f package-name $CL_OFF"
- echo -e "$CL_COMMU createpkg --list/-l $CL_OFF"
- echo -e "$CL_COMMU createpkg --sync $CL_OFF"
- echo -e "$CL_COMMU createpkg --help/-h $CL_OFF"
-
-}
-
-function check_config {
-
- # check the configuration
- TMP=${TMP:=/tmp};
- REPOS=${REPOS:=$TMP};
- # Create $TMP and $REPOS if need
- [ ! -e $TPM ] && mkdir $TMP
- [ ! -e $REPOS ] && mkdir $REPOS
- #
- SLACKBUILDS=${SLACKBUILDS:=/var/slackbuilds}
- SVN=${SVN:=svn://slack.sarava.org/slackbuilds}
- SYNC=${SYNC:=no}
- BASEDIR="`dirname $SLACKBUILDS`"
-
-}
-
-function solve_dep {
- # Solve dependency
- local PACK="$1"
- local COND="$2"
- local VER="$3"
-
- # Check package in local system
- INSTALLED=`eval "ls /var/log/packages/ | egrep '^$PACK-[^-]+-[^-]+-[^-]+$'"`
- CHECK=$?
-
- # TODO: Make check version procedures
- if [ -z "$INSTALLED" ]; then
- if [ $CHECK -ne 0 ]; then
- # Check package in SlackBuilds tree
- echo -e "$CL_MENSG $BASENAME: processing $PACKAGE dependency $PACK $CL_OFF"
- SYNC=no CREATEPKG_CHILD=$CREATEPKG_CHILD createpkg --install $PACK
-
- # check if the package was built and installed
- EXIT_CODE="$?"
-
- if [ "$EXIT_CODE" == "5" ]; then
-
- # exit code 5 == slackbuild not found
- # try to use simplaret
- ARCH=$DEFAULT_ARCH simplaret --update
- ARCH=$DEFAULT_ARCH simplaret --install $PACK
- EXIT_CODE="$?"
- if [ "$EXIT_CODE" != "0" ]; then
- handle_error $SCRIPT_OR_PACKAGE_NOT_FOUND $PACK
- fi
-
- elif [ "$EXIT_CODE" != "0" ]; then
- handle_error $EXIT_CODE $PACK
- fi
-
- fi
- fi
-
-}
-
-function check_repo {
-
- # Verify if repository exist
- [ ! -d "$SLACKBUILDS" ] && build_repo
-
-}
-
-function sync_repo {
-
- # Synchronize repository
- cd $SLACKBUILDS
- svn update || build_repo
- #simplaret --update
-
-}
-
-function find_slackbuild {
-
- # Find SlackBuild script in the repository
- find $SLACKBUILDS -iname $1.SlackBuild
-
-}
-
-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]`
- echo -e "$CL_COMMU $NAME_UP: $CL_OFF"
-
- PKG_DIR=`dirname $i`
- if [ -e $PKG_DIR/slack-desc ]; then
- eval "cat $PKG_DIR/slack-desc | grep '^$PACKAGE:' | cut -f2- -d:"
- echo -e "$CL_OFF"
- else
- eval "cat $i | grep '^$PACKAGE:' | cut -f2- -d:"
- echo -e "$CL_OFF"
- fi
-
- if [ -e $PKG_DIR/slack-required ]; then
- echo -e "$CL_COMMU slack-required $CL_OFF"
- cat $PKG_DIR/slack-required | sed 's/^/ /'
- fi
- done
- fi
-
-}
-
-function list_builds {
-
- # List all available SlackBuilds
- cd $SLACKBUILDS
- 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
- echo -e "$CL_COMMU $j $CL_OFF"
- (
- cd $j
- BUILD="`ls *.SlackBuild 2>/dev/null`"
- if [ "$BUILD" != "" ]; then
- # level 3
- for k in $BUILD; do
- echo -e "$CL_MENSG $k $CL_OFF"
- done
- else
- BUILD=""
- fi
- for k in *; do
- if [ -d $k ]; then
- echo -e "$CL_MENSG $k.SlackBuild $CL_OFF"
- fi
- done
- )
- fi
- done
- )
- fi
- done
-}
-
-function color_select {
- # Select color mode: gray, color or none (*)
- # CL_COMMU - Communication
- # CL_MENSG - Commum messages
- # CL_ERROR - Error messages
- # CL_OFF - turn off color
- case "$1" in
- 'gray')
- CL_COMMU="\033[37;1m"
- CL_MENSG="\033[37;1m"
- CL_ERROR="\033[30;1m"
- CL_ALERT="\033[37m"
- CL_OFF="\033[m"
- ;;
- 'color')
- CL_COMMU="\033[34;1m" # green
- CL_MENSG="\033[32;1m" # blue
- CL_ERROR="\033[31;1m" # red
- CL_ALERT="\033[33;1m" # yellow
- CL_OFF="\033[m" # normal
- ;;
- *)
- CL_COMMU=""
- CL_MENSG=""
- CL_ERROR=""
- CL_ALERT=""
- CL_OFF=""
- ;;
- esac
-}
-
-#---------------------------------------------------
-# Starting createpkg
-#---------------------------------------------------
-# Common functions
-COMMON="/usr/libexec/simplepkg/common.sh"
-SIMPLEPKG_CONF="/etc/simplepkg/simplepkg.conf"
-
-# Loading error codes
-error_codes
-
-# First load simplepkg helper functions
-source $COMMON && source $SIMPLEPKG_CONF
-if [ $? -ne 0 ]; then
- echo -e "$CL_ERROR error: file $COMMON not found, check your $BASENAME installation $CL_OFF"
- exit 1
-fi
-
-# Load slackbuildrc definitions
-if [ -f ~/.slackbuildrc ]; then
- source ~/.slackbuildrc
-else
- source /etc/slackbuildrc 2>/dev/null
-fi
-
-# Select color mode: gray, color or none (*)
-color_select $COLOR
-
-# This is used to show how many children process we have
-if [ -z "$CREATEPKG_CHILD" ]; then
- CREATEPKG_CHILD="1"
-else
- let CREATEPKG_CHILD++
-fi
-
-BASENAME="`basename $0`[$CREATEPKG_CHILD]"
-
-check_config
-check_repo
-
-case $1 in
- '--search'|'-s')
- [ $# -ne 2 ] && handle_error 2 # two parameters is required
- find_slackbuild $2
- exit
- ;;
- '--info'|'-f')
- [ $# -ne 2 ] && handle_error 2 # two parameters is required
- PKG_PATH=`find_slackbuild $2`
- info_builds
- exit
- ;;
- '--install'|'-i')
- [ $# -ne 2 ] && handle_error 2 # two parameters is required
- PACKAGE="$2"
- INSTALL="1"
- ;;
- '--no-deps'|'-nd')
- [ $# -ne 2 ] && handle_error 2 # two parameters is required
- NO_DEPS="1"
- PACKAGE="$2"
- ;;
- '--sync')
- sync_repo
- exit 0
- ;;
- '--help'|'-h'|'')
- usage
- exit 0
- ;;
- '--list'|'-l')
- list_builds
- exit 0
- ;;
- *)
- if [ "${1:0:1}" != "-" ]; then
- PACKAGE="$1"
- else
- handle_error 2
- fi
- ;;
-esac
-
-# Synchronize repository
-[ "$SYNC" == "yes" ] && sync_repo
-
-# Get SlackBuild script
-BUILD_SCRIPT="`find_slackbuild $PACKAGE`"
-
-# 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
- echo -e "$CL_ERROR error: None package select $CL_OFF"
- 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=`echo $BUILD_SCRIPT | sed -r 's/.*\/(.*)\.SlackBuild$/\1/'`
-fi
-
-# Check SlackBuild script found
-[ -z "$BUILD_SCRIPT" ] && handle_error 5 $PACKAGE
-
-# Get dirname and script name from slackbuild
-SCRIPT_BASE="`dirname $BUILD_SCRIPT`"
-SCRIPT_NAME="`basename $BUILD_SCRIPT`"
-echo -e "$CL_MENSG $BASENAME: found script $PACKAGE.SlackBuild, now checking for dependencies $CL_OFF"
-
-# Sets the package's slack-required
-if [ -f "$SCRIPT_BASE/$PACKAGE.slack-required" ]; then
- SLACK_REQUIRED="$SCRIPT_BASE/$PACKAGE.slack-required"
-elif [ -f "$SCRIPT_BASE/slack-required" ]; then
- SLACK_REQUIRED="$SCRIPT_BASE/slack-required"
-fi
-
-if [ ! -z "$SLACK_REQUIRED" -a "$NO_DEPS" != "1" ]; then
- # this routine checks for dependencies in package's slack-required
- ( cat $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 )
- if [ $? -ne 0 ]; then
- echo -e "$CL_MENSG $BASENAME: dependency solve error $CL_OFF"
- exit 1
- fi
- echo -e "$CL_MENSG $BASENAME: done checking for $PACKAGE dependencies $CL_OFF"
-else
- echo -e "$CL_MENSG $BASENAME: no unmet dependencies for $PACKAGE $CL_OFF"
-fi
-
-echo -e "$CL_MENSG $BASENAME: processing $SCRIPT_NAME $CL_OFF"
-
-# Built package
-cd $SCRIPT_BASE
-# Execute SlackBuild script with variables protection
-( INTERACT=no ./$SCRIPT_NAME )
-
-# Check if package was built
-handle_error $? $PACKAGE
-
-PKG_TGZ="`ls -1 -c $REPOS/$PACKAGE-*-*-*tgz | head -n 1`"
-
-#mkdir -p $REPOS${SCRIPT_BASE/$SLACKBUILDS}
-#mv $PKG_TGZ $REPOS${SCRIPT_BASE/$SLACKBUILDS}/
-
-if [ "$INSTALL" == "1" ]; then
- # as we dont have the full package file name, we'll
- # use the newer file name that matches our wildcard:
-
- upgradepkg --install-new $PKG_TGZ
-fi