#!/bin/bash # # mkbuild: SlackBuild scripts maker # feedback: rudsonaalves at yahoo.com.br | gpl # # mkbuild 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. # # mkbuild 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 # # # Based in model generic.SlackBuild of Luiz # # Version 1.1.9 PROG_VERSION=1.1.9 PROG_NAME=`basename $0` #-------------------------------------------------------------------- # Functions #-------------------------------------------------------------------- function mkbuild_use() { # mkbuild help function echo " NAME mkbuild - create SlackBuild script from .mkbuild input file SYNOPSIS mkbuild [OPIONS] [mkbuild_file] DESCRIPTION input file with build rules and variables Input options: -a, --author author name -ai, --author_initials author signature -cs, --const_string construction string to source name -u, --url url address to source -pn, --pkg_name package name -sn, --src_name source name -pv, --pkg_version package version -md, --model SlackBuild model file -j, --jobs Number of jobs to run simultaneously --prefix Prefix install directory Program options: -h, --help this help mesage -cs, --commit-slackbuild commit SlackBuilds in local svn SlackBuild tree -cm, --commit-mkbuild commit .mkbuild in local svn mkbuild tree -c, --commit-all commit SlackBuild and .mkbuild files in local svn tree -n, --new start a new mkbuild configure file -v, --version program version -V, --verbose print debug information EXAMPLES mkbuild --prefix /usr/local pyrex.mkbuild build pyrex.SlackBuild with prefix /usr/local and pyrex.mkbuild variables and options definitions. AUTHOR Written by Rduson R. Alves AVAILABILITY by svn: svn checkout svn://slack.sarava.org/simplepkg this mkbuild is found in branches/0.6/ REPORTING BUGS Report bugs to COPYRIGHT Copyright © 2006 Free Software Foundation, Inc. This is free software. You may redistribute copies of it under the terms of the GNU General Public License . There is NO WARRANTY, to the extent permitted by law. " | less } function set_parameters { # Get and set mkbuild variables with parameters input # Use: set_parameters $@ # where $@ are the parameters input # # Parameters analyze while [ "$1" ]; do case $1 in '-cs'|'--commit-slackbuild') # Commit SlackBuild file COMMIT_SLACKBUILD=$on ;; '-cm'|'--commit-mkbuild') # commit mkbuild file COMMIT_MKBUILD=$on ;; '-c'|'--commit-all') # Commit SlackBuild and mkbuild file COMMIT_SLACKBUILD=$on COMMIT_MKBUILD=$on ;; '-n'|'--new') # New mkbuild configure file let i++ MKBUILD_NAME=$2 [ ${MKBUILD_NAME:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR "--new " shift ;; '-d'|'--debug') # Debug mode set -x ;; '-h'|'--help' ) # Show help mesage mkbuild_use && exit 0 ;; '-v'|'--version') # Show program version echo -e "\n$PROG_NAME version $PROG_VERSION\n" && exit 0 ;; '-V' | '--verbose') # Enable verbose mode VERBOSE=1 ;; '-a'|'--author') # Enter with author name let i++ AUTHOR=$2 [ ${AUTHOR:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR AUTHOR shift ;; '-ai'|'--author_initials') # Enter with author name let i++ AUTHOR_INITIALS=$2 [ ${AUTHOR_INITIALS:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR AUTHOR_INITIALS shift ;; '-cs'|'--const_string') # Enter with construction source name string let i++ CONST_STRING=$2 [ ${CONST_STRING:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR CONST_STRING shift ;; '-md'|'--model') # Enter with SlackBuild model let i++ MODEL=$2 [ ${MODEL:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR MODEL shift ;; '-j'|'--jobs') # Enter with SlackBuild model let i++ NUMJOBS=$2 [ ${NUMJOBS:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR NUMJOBS [ ! is_number $NUMJOBS ] && handle_error $ERROR_MKBUILD_INPUT_PAR NUMJOBS NUMJOBS="-j$NUMJOBS" shift ;; '--prefix') # Enter with SlackBuild model let i++ PREFIX=$2 [ ${PREFIX:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR PREFIX shift ;; '-pn'|'--pkg_name') # Enter with package name let i++ PKG_NAME=$2 [ ${PKG_NAME:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR PKG_NAME shift ;; '-pv'|'pkg_version') # Enter with package version let i++ VERSION=$2 [ ${VERSION:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR VERSION shift ;; '-sn'|'--src_name') # Enter with source name let i++ SRC_NAME=$2 [ ${SRC_NAME:0:1} = '-' ] && handle_error $ERROR_MKBUILD_INPUT_PAR SRC_NAME shift ;; '-u'|'--url') # Enter with url address let i++ URL=$2 [ ${URL:0:1} = '-' ] && handle_error $ERROR_MKBUILD_INPUT_PAR URL shift ;; *) # mkbuild input file MK_INPUT_FILE="${1//.mkbuild}.mkbuild" [ ! -e $MK_INPUT_FILE ] && handle_error $ERROR_FILE_NOTFOUND $MK_INPUT_FILE ;; esac shift done } function get_variable { # Get variable value from mkbuild file (MK_INPUT_FILE) [ $# -ne 1 ] && handle_error $ERROR_MKBUILD_PROGRAM [ -z $MK_INPUT_FILE ] && echo "Warning: no [mkbuild_file]." && return 0 grep "^\[\[${1}\]\]" $MK_INPUT_FILE | cut -f2- -d= | sed -e 's/^"//' -e 's/"$//' } function edit_file { # Edit file $3, by change string [[$1]] to $2 local STR_OLD local STR_NEW [ $# -ne 3 ] && handle_error $ERROR_MKBUILD_PROGRAM STR_OLD=$( echo $1 | sed 's/\//\\\//g' ) STR_NEW=$( echo $2 | sed 's/\//\\\//g' ) eval "sed 's/\[\[$STR_OLD\]\]/$STR_NEW/' $3 > $AUX_TMP" mv $AUX_TMP $3 } function edit_file_full { # Edit file $3, by change string $1 to $2 local STR_OLD local STR_NEW [ $# -ne 3 ] && handle_error $ERROR_MKBUILD_PROGRAM STR_OLD=$( echo $1 | sed 's/\//\\\//g' ) STR_NEW=$( echo $2 | sed 's/\//\\\//g' ) eval "sed 's/$STR_OLD/$STR_NEW/' $3 > $AUX_TMP" mv $AUX_TMP $3 } function start_build { # Build initial sections [ $# -ne 1 ] && handle_error $ERROR_MKBUILD_PROGRAM edit_file "SLACKBUILD AUTHOR" "$AUTHOR" $1 edit_file "SLACKBUILD AUTHOR INITIALS" $AUTHOR_INITIALS $1 edit_file "SOURCE NAME" "$SRC_NAME" $1 edit_file "PROGRAM NAME" "$PKG_NAME" $1 edit_file "PACKAGE NAME" "$PKG_NAME" $1 edit_file "DECOMPRESSOR" "$DECOMPRESSOR" $1 edit_file "DECOMPRESSOR TEST FLAG" "$DECOMPRESSOR_TEST_FLAG" $1 edit_file "PROGRAM URL" "$URL" $1 edit_file "ARCH" "$ARCH" $1 edit_file "NUMBER OF JOBS" "$NUMJOBS" $1 edit_file "VERSION" $VERSION $1 edit_file "SOURCE NAME CONSTRUCTION STRING" "$CONST_STRING" $1 edit_file "EXTENSION" "$EXTENSION" $1 edit_file "DOWNLOAD FOLDER URL" "$URL_BASE" $1 edit_file "OTHER CONFIGURE ARGS" "$OPTIONS" $1 edit_file "DOCUMENTATION FILES" "$DOCFILES" $1 edit_file "PREFIX" "$PREFIX" $1 edit_file "UNPACKER" "$UNPACKER" $1 edit_file "UNPACKER FLAGS" "$UNPACKER_FLAGS" $1 edit_file_full "\$EXTENSION" "$EXTENSION" $1 } function clear_files { # Remove temporary files rm $AUX_TMP 2>/dev/null rm $SLACKBUILD_TEMP 2>/dev/null chmod 755 *.SlackBuild 2>/dev/null } function set_status { # Set status section # $1 - Section # $2 - Status # $3 - file [ $# -ne 3 ] && handle_error $ERROR_MKBUILD_PROGRAM if [ "`get_status $1 $3`" != "all" ]; then [ $VERBOSE -eq $on ] && echo "Section $1 $2" eval "sed 's/^<$1>.*$/<$1> $2/' $3" > $AUX_TMP mv $AUX_TMP $3 else echo "Warning: Section $1 have status all. Can't change!" fi } function get_status { # Get status from section # $1 - Section # $2 - file [ $# -ne 2 ] && handle_error $ERROR_MKBUILD_PROGRAM eval "sed '/^<$1>.*$/! d' $2" } function activate_sections { # Enable and desable sections ACTIONS_LIST=`sed '/^#>>/,/< off/, /^<\/[a-z].*>$/ d' $SLACKBUILD_TEMP > $AUX_TMP # Remove sections names sed '/^<.*$/ d' $AUX_TMP > $SLACKBUILD_TEMP # Remove clear lines sed ':i ; $! N; s/\n// ; t i' $SLACKBUILD_TEMP | sed 's///g' | sed 's///g' | sed 's//\n/g' > $AUX_TMP # Remove from frist line do #!/... line sed '1,/^#\!/ {/^#\!/ b; d }' $AUX_TMP > $SLACKBUILD } function section_edit { # Edits a section substituting its content [ -z $MK_INPUT_FILE ] && return 0 SECTION_LIST=`grep '^#>[a-z]' $MK_INPUT_FILE | cut -c3-` # Check for sections change [ -z "$SECTION_LIST" ] && return 0 # Change sections for i in $SECTION_LIST; do [ $VERBOSE -eq $on ] && echo "Change section $i" if [ "$i" = "slackdesc" ]; then # Special slackdesc section slackdesc_edit > $AUX_TMP mv $AUX_TMP $SLACKBUILD_TEMP else # Others sections section_change $i fi done } function slackdesc_edit { # Edit slackdesc section sed -n '1,/|-----/ { // b; /|-----/ b; p; }' $SLACKBUILD_TEMP echo -n $PKG_NAME | tr [a-z+\-] " " echo -n "|-----handy-ruler" let N=18+${#PKG_NAME} for i in `seq $N $SLACKDESC_LEN`; do echo -n "-" done echo -en "|\n" sed -n '/#>slackdesc/,/#/! d' $SLACKBUILD_TEMP > $AUX_TMP" # Paste new section eval "sed -n '/#>$1/,/#<$1/ { /^#>/ b; /^#> $AUX_TMP" # Copy second halt eval "sed '/^<\/$1>/,$ ! d' $SLACKBUILD_TEMP >> $AUX_TMP" mv $AUX_TMP $SLACKBUILD_TEMP } function make_slack_required { # Build slack-required file [ -e slack-required ] && mv slack-required slack-required.old [ -z "$SLACK_REQUIRED" ] && return 0 echo -e "# Dependency list to $SRC_NAME\n#\n# dependency [condition] [version]]" > slack-required echo $SLACK_REQUIRED | sed 's/:/\n/g' | while read i; do REQ=`echo $i | awk '{ print $1 }'` CON=`echo $i | awk '{ print $2 }'` VER=`echo $i | awk '{ print $3 }'` echo -e "$REQ\t\t$CON\t\t$VER" >> slack-required done } function change_others_parameters { # Change others parameters started by '[[' in .mkbuild file grep '\[\[[A-Za-z]' $MK_INPUT_FILE | while read i; do CHANGE="`echo $i | sed 's/\[\[\(.*\)\]\]=\"\(.*\)\"/\1/'`" VALUE="`echo $i | sed 's/\[\[\(.*\)\]\]=\"\(.*\)\"/\2/'`" edit_file "$CHANGE" "$VALUE" $SLACKBUILD done } function get_slackbuild_path { # Search SlackBuild Path in gentoo tree eval "lynx -connect_timeout=10 -dump http://gentoo-portage.com/Search?search=$PKG_NAME | tr -d ' ' | grep '^[a-z].*\/$PKG_NAME\$' | head --lines=1" } # ---------------------------------------------------------------- # ------------------- svn functions ------------------------------ function commit_slackbuild { # Commit SlackBuild in local Slack.Sarava tree if [ $UID -ne 0 ]; then echo "Only root can commit SlackBuilds..." return 1 fi echo -e "\nCommit $SLACKBUILD" # check SlackBuilds directory [ ! -e $SLACKBUILDS_DIR ] && createpkg --sync # Get SlackBuild path # Get SlackBuild path in slackbuild local tree if [ -z $SLACKBUILD_PATH ]; then SLACKBUILD_PATH=`find $SLACKBUILDS_DIR -name $SLACKBUILD | xargs dirname` 2>/dev/null fi # Get SlackBuild path in gentoo-portage tree if [ -z $SLACKBUILD_PATH ]; then # Mount SlackBuild path [ $VERBOSE -eq $on ] && echo -e "\nFind SlackBuild PATH in Slack.Sarava tree..." AUX=`get_slackbuild_path` [ ! -z $AUX ] && SLACKBUILD_PATH="`dirname $AUX | tr - /`/`basename $AUX`" || SLACKBUILD_PATH="others/unclassified/$PKG_NAME" fi # change to SlackBuilds directory cd $SLACKBUILDS_DIR/ # Add SlackBuild scripts # check path [ ! -e $SLACKBUILD_PATH ] && svn_mkdir $SLACKBUILD_PATH # add SlackBuild svn_add $SLACKBUILD $SLACKBUILD_PATH # check slack-required # add slack-required [ -e $WORK/slack-required ] && svn_add slack-required $SLACKBUILD_PATH cd $WORK } function commit_mkbuild { # Commit mkbuild in local mkbuild Slack.Sarava tree if [ $UID -ne 0 ]; then echo "Only root can commit mkbuild..." return 1 fi echo -e "\nCommit $MK_INPUT_FILE" # check mkbuild directory [ ! -e $MKBUILDS_DIR ] && build_repo $MKBUILDS_DIR $MKBUILDS_SVN # Get mkbuild path in parameter file MKBUILD_PATH=`validate_parameter "$SLACKBUILD_PATH" "SLACKBUILD PATH" ""` #[ $VERBOSE -eq $on ] && echo "[[SLACKBUILD PATH]]=\"$SLACKBUILD_PATH\"" # Get mkbuild path in slackbuild local tree if [ -z $MKBUILD_PATH ]; then MKBUILD_PATH=`find $MKBUILDS_DIR -name $MK_INPUT_FILE | xargs dirname` 2>/dev/null fi # Get SlackBuild path in gentoo-portage tree if [ -z $MKBUILD_PATH ]; then # Mount mkbuild path [ $VERBOSE -eq $on ] && echo -e "\nFind mkbuild PATH in Slack.Sarava tree..." AUX=`get_slackbuild_path` [ ! -z $AUX ] && MKBUILD_PATH="`dirname $AUX | tr - /`/`basename $AUX`" || MKBUILD_PATH="others/unclassified/$PKG_NAME" fi # change to mkbuilds directory cd $MKBUILDS_DIR/ # Add mkbuild scripts # check path [ ! -e $MKBUILD_PATH ] && svn_mkdir $MKBUILD_PATH # add SlackBuild svn_add $MK_INPUT_FILE $MKBUILD_PATH cd $WORK } function svn_mkdir { # svn make directory [ $# -ne 1 ] && handle_error 0 DIR_LIST=`echo $1 | tr '/' ' '` DIR="" for i in $DIR_LIST; do DIR=$DIR/$i [ ! -e ${DIR:1} ] && svn mkdir ${DIR:1} done } function svn_add { # svn add file [ $# -ne 2 ] && handle_error 0 # copy file if [ -e $2/$1 ]; then echo "$2/$1 exist. Overwriter it." cp $WORK/$1 $2/ else cp $WORK/$1 $2/ # add file to svn tree svn add $2/$1 fi } # ---------------------------------------------------------------- # ------------------- general functions -------------------------- function validate_parameter { # Validate parameter in .mkbuild file [ $# -ne 3 ] && return 1 if [ ! -z "$1" ]; then echo "$1" else local STRING="`get_variable "$2"`" if [ -z "$STRING" ]; then echo "$3" else echo "$STRING" fi fi } function decompress_find { # Find decompressor program and test flag case $EXTENSION in 'gz'|'GZ') DECOMPRESSOR="gunzip" DECOMPRESSOR_TEST_FLAG="-t" ;; 'bz2'|'BZ2') DECOMPRESSOR="bunzip2" DECOMPRESSOR_TEST_FLAG="-t" ;; 'zip'|'ZIP') DECOMPRESSOR="unzip" DECOMPRESSOR_TEST_FLAG="-t" ;; *) handle_error $ERROR_MKBUILD_CONSTRUCTION "DECOMPRESSOR" ;; esac } function load_parameters { # Load Createpkg parameters SLACKBUILDS_DIR="`eval_parameter SLACKBUILDS_DIR /var/simplaret/slackbuilds`" MKBUILDS_DIR="`eval_parameter MKBUILDS_DIR /var/simplaret/mkbuilds`" SLACKBUILDS_SVN="`eval_parameter SLACKBUILDS_DIR svn://slack.sarava.org/slackbuilds`" MKBUILDS_SVN="`eval_parameter MKBUILDS_SVN svn://slack.sarava.org/mkbuilds`" COLOR_MODE="`eval_parameter COLOR_MODE none`" } # ---------------------------------------------------------------- #============================= # Main Program #============================= #----------------------------- # Common functions COMMON_SH="/usr/libexec/simplepkg/common.sh" SIMPLEPKG_CONF="/etc/simplepkg/simplepkg.conf" BASENAME="`basename $0`" WORK=`pwd` LANG=en_US if [ -f "$COMMON_SH" ]; then source $COMMON_SH else echo "error: file $COMMON_SH not found. Check your $BASENAME installation" handle_error 0 fi # Start constants set_constants # Set commit off COMMIT_SLACKBUILD=$off COMMIT_MKBUILD=$off # Set verbose off VERBOSE=$off # Load /etc/simplepkg/simplepkg.conf parameters load_parameters # Auxiliar file AUX_TMP=/tmp/mkbuild_tmp.$RANDOM # Derectory to SlackBuild models MODEL_DIR=${MODEL_DIR:="/etc/simplepkg/defaults/mkbuild"} # SlackDesk line length SLACKDESC_LEN=78 # Load error codes error_codes [ $# -eq 0 ] && mkbuild_use && exit 1 # Configure input parameters set_parameters "$@" [ $VERBOSE -eq $on ] && echo -e "$PROG_NAME version $PROG_VERSION\n" if [ ! -z "$MKBUILD_NAME" ]; then # Create a new .mkbuild parameters-file cp $MODEL_DIR/model.mkbuild ${MKBUILD_NAME}.mkbuild # Package Author if [ ! -z "$AUTHOR" ]; then edit_file "YOUR NAME" "${AUTHOR}" ${MKBUILD_NAME}.mkbuild # Package Author Signature if [ -z "$AUTHOR_INITIALS" ]; then AUTHOR_INITIALS=`echo $AUTHOR | tr '[A-Z]' '[a-z]' | sed 's/ /\n/g' | sed 's/^\([a-z]\).*/\1/' | sed ':i ; $! N ; s/\n// ; t i'` fi edit_file "YOUR SIGNATURE" "${AUTHOR_INITIALS}" ${MKBUILD_NAME}.mkbuild fi # Change Default SourceForge URL [ -z "$URL" ] && URL="http://downloads.sourceforge.net/[[PACKAGE NAME]]/" edit_file "DEFAULT URL" "${URL}" ${MKBUILD_NAME}.mkbuild # Change Package Name edit_file "PACKAGE NAME" "${MKBUILD_NAME}" ${MKBUILD_NAME}.mkbuild edit_file "PACKAGE NAME" "${MKBUILD_NAME}" ${MKBUILD_NAME}.mkbuild # Print .mkbuild name echo "${MKBUILD_NAME}.mkbuild" else # Get values # Author name AUTHOR=${AUTHOR:="`get_variable "SLACKBUILD AUTHOR"`"} [ -z "$AUTHOR" ] && handle_error $ERROR_MKBUILD_CONSTRUCTION "SLACKBUILD AUTHOR" [ $VERBOSE -eq $on ] && echo "[[SLACKBUILD AUTHOR]]=\"$AUTHOR\"" # Author initials STR_MOUNT=`echo $AUTHOR | sed 's/ /\n/g' | sed 's/^\([A-Z]\).*/\1/' | sed ':i; $!N; s/\n//; ti' | tr [A-Z] [a-z]` AUTHOR_INITIALS="`validate_parameter "$AUTHOR_INITIALS" "SLACKBUILD AUTHOR INITIALS" "$STR_MOUNT"`" || handle_error $ERROR_MKBUILD_CONSTRUCTION "SLACKBUILD AUTHOR INITIALS" [ $VERBOSE -eq $on ] && echo "[[SLACKBUILD AUTHOR INITIALS]]=\"$AUTHOR_INITIALS\"" # URL program URL=`validate_parameter "$URL" "DOWNLOAD FOLDER URL" ""` || handle_error $ERROR_MKBUILD_CONSTRUCTION "URL" [ $VERBOSE -eq $on ] && echo "[[URL]]=\"$URL\"" STR_MOUNT="`echo $URL | rev | cut -c1-3 | rev | tr -d '.'`" if [ $STR_MOUNT = "gz" -o $STR_MOUNT = "tgz" -o $STR_MOUNT = "bz2" -o $STR_MOUNT = "zip" ]; then SOURCE_NAME=`basename $URL` URL_BASE=`dirname $URL` else URL_BASE=$URL fi [ $VERBOSE -eq $on ] && echo "[[DOWNLOAD FOLDER URL]]=\"$URL_BASE\"" # Extension EXTENSION=`validate_parameter "$EXTENSION" "EXTENSION" "$STR_MOUNT"` || handle_error $ERROR_MKBUILD_CONSTRUCTION "EXTENSION" [ $VERBOSE -eq $on ] && echo "[[EXTENSION]]=\"$EXTENSION\"" # Unpacker UNPACKER=`validate_parameter "$UNPACKER" "UNPACKER" "tar"` || handle_error $ERROR_MKBUILD_CONSTRUCTION "UNPACKER" [ $VERBOSE -eq $on ] && echo "[[UNPACKER]]=\"$UNPACKER\"" # Unpacker flags [ "$UNPACKER" == "tar" ] && STR_MOUNT="--no-same-owner --no-same-permissions -xvf" || STR_MOUNT="" UNPACKER_FLAGS=`validate_parameter "$UNPACKER_FLAGS" "UNPACKER FLAGS" "$STR_MOUNT"` || handle_error $ERROR_MKBUILD_CONSTRUCTION "UNPACKER FLAGS" [ $VERBOSE -eq $on ] && echo "[[UNPACKER_FLAGS]]=\"$UNPACKER_FLAGS\"" # Build archteture ARCH=`validate_parameter "$ARCH" "ARCH" "i486"` [ $VERBOSE -eq $on ] && echo "[[ARCH]]=\"$ARCH\"" # Source name STR_MOUNT=`echo $SOURCE_NAME | sed -r 's/(.*)-(.*)\.(.*\..*)$/\1/'` SRC_NAME=`validate_parameter "$SRC_NAME" "SOURCE NAME" "$STR_MOUNT"` || handle_error $ERROR_MKBUILD_CONSTRUCTION "SOURCE NAME" [ $VERBOSE -eq $on ] && echo "[[SOURCE NAME]]=\"$SRC_NAME\"" # Package name STR_MOUNT=`echo $SRC_NAME | tr [A-Z_] [a-z\-]` PKG_NAME=`validate_parameter "$PKG_NAME" "PACKAGE NAME" "$STR_MOUNT"` [ $VERBOSE -eq $on ] && echo "[[PACKAGE NAME]]=\"$PKG_NAME\"" # Version STR_MOUNT=`echo $SOURCE_NAME | sed -r 's/(.*)-(.*)\.(.*\..*)$/\2/'` VERSION=`validate_parameter "$VERSION" "VERSION" $STR_MOUNT` || handle_error $ERROR_MKBUILD_CONSTRUCTION "VERSION" [ $VERBOSE -eq $on ] && echo "[[VERSION]]=\"$VERSION\"" # Construction source name string CONST_STRING="`validate_parameter "$CONST_STRING" "SOURCE NAME CONSTRUCTION STRING" "\\\$SRC_NAME-\\\$VERSION.tar.$EXTENSION"`" [ $VERBOSE -eq $on ] && echo "[[SOURCE NAME CONSTRUCTION STRING]]=\"$CONST_STRING\"" # Build Source Name [ -z $SOURCE_NAME ] && SOURCE_NAME=`eval "echo $CONST_STRING"` [ $VERBOSE -eq $on ] && echo "SOURCE_NAME=\"$SOURCE_NAME\"" # Decompressor program and test flag DECOMPRESSOR=`validate_parameter "$DECOMPRESSOR" "DECOMPRESSOR" ""` [ -z $DECOMPRESSOR ] && decompress_find [ $VERBOSE -eq $on ] && echo "[[DECOMPRESSOR]]=\"$DECOMPRESSOR\"" DECOMPRESSOR_TEST_FLAG=`validate_parameter "$DECOMPRESSOR_TEST_FLAG" "DECOMPRESSOR TEST FLAG" ""` || handle_error $ERROR_MKBUILD_CONSTRUCTION "DECOMPRESSOR TEST FLAG" [ $VERBOSE -eq $on ] && echo "[[DECOMPRESSOR TEST FLAG]]=\"$DECOMPRESSOR_TEST_FLAG\"" # Documentations list DOCFILES=`validate_parameter "$DOCFILES" "DOCUMENTATION FILES" "NEWS TODO README AUTHORS INSTALL ChangeLog MAINTAINERS COPYING readme.*"` [ $VERBOSE -eq $on ] && echo "[[DOCUMENTATION FILES]]=\"$DOCFILES\"" # ./configure option OPTIONS=`validate_parameter "$OPTIONS" "OTHER CONFIGURE ARGS" ""` [ $VERBOSE -eq $on ] && echo "[[OTHER CONFIGURE ARGS]]=\"$OPTIONS\"" # PREFIX PREFIX=`validate_parameter "$PREFIX" "PREFIX" "/usr"` [ $VERBOSE -eq $on ] && echo "[[PREFIX]]=\"$PREFIX\"" # Number of jobs NUMJOBS=`validate_parameter "$NUMJOBS" "NUMBER OF JOBS" ""` [ `is_number $NUMJOBS` ] && NUMJOBS="-j${NUMJOBS}" [ $VERBOSE -eq $on ] && echo "[[NUMBER OF JOBS]]=\"$NUMJOBS\"" # Make slack-required file SLACK_REQUIRED=`validate_parameter "$SLACK_REQUIRED" "SLACK REQUIRED" ""` [ $VERBOSE -eq $on ] && echo "[[SLACK REQUIRED]]=\"$SLACK_REQUIRED\"" # SlackBuild model MODEL=`validate_parameter "$MODEL" "SLACKBUILD MODEL" "generic.mkSlackBuild"` [ $VERBOSE -eq $on ] && echo "[[SLACKBUILD MODEL]]=\"$MODEL\"" # SlackBuild path SLACKBUILD_PATH=`validate_parameter "$SLACKBUILD_PATH" "SLACKBUILD PATH" ""` [ $VERBOSE -eq $on ] && echo "[[SLACKBUILD PATH]]=\"$SLACKBUILD_PATH\"" #-------------------------------------------------------------- #- Start build SlackBuild - #-------------------------------------------------------------- [ $VERBOSE -eq $on ] && echo -e "\nStart SlackBuild make" SLACKBUILD=${PKG_NAME}.SlackBuild SLACKBUILD_TEMP=$SLACKBUILD.tmp cp $MODEL_DIR/$MODEL $SLACKBUILD_TEMP # Change strings from model [ $VERBOSE -eq $on ] && echo -e "\nStart build $PACKAGE.SlackBuild..." start_build $SLACKBUILD_TEMP # On/Off sections [ $VERBOSE -eq $on ] && echo -e "\nEnable/desable sections ..." activate_sections # Change sections [ $VERBOSE -eq $on ] && echo -e "\nEdit sections ..." section_edit # Remove off sections [ $VERBOSE -eq $on ] && echo -e "\nRemove off sections ..." build_slackbuild # Make slack-required file [ $VERBOSE -eq $on ] && echo -e "\nMake slack-required file ..." make_slack_required if [ -e slack-required ]; then DEPENDENCY_LIST="`cat slack-required | awk '{print $1}' | grep '^[a-z]' | tr '\012' ' '`" edit_file "REQUIRES" "$DEPENDENCY_LIST" $SLACKBUILD else edit_file "REQUIRES" " " $SLACKBUILD fi # Others changes [ $VERBOSE -eq $on ] && echo -e "\nEdit others [[]] parameters ..." change_others_parameters # Commit SlackBuild [ $COMMIT_SLACKBUILD -eq $on ] && commit_slackbuild # Commit mkbuild [ $COMMIT_MKBUILD -eq $on ] && commit_mkbuild fi # Clear temporary files [ $VERBOSE -eq $on ] && echo -e "\nRemove temporary files ..." clear_files