aboutsummaryrefslogtreecommitdiff
path: root/tags/0.5.1/src/mkbuild
diff options
context:
space:
mode:
authorrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>2007-07-24 02:01:18 +0000
committerrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>2007-07-24 02:01:18 +0000
commitb28b0bd5f13135d64dca024f629100b3e30d47b2 (patch)
treeb1b8b18d0eb02939964fc610eaba3a6b1e8ca4fe /tags/0.5.1/src/mkbuild
parent2cb431c8236415e4f4cf24e51e8799c7579dc846 (diff)
downloadsimplepkg-b28b0bd5f13135d64dca024f629100b3e30d47b2.tar.gz
simplepkg-b28b0bd5f13135d64dca024f629100b3e30d47b2.tar.bz2
fixed a bug on 0.5 and tagged as 0.5.1
git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@407 04377dda-e619-0410-9926-eae83683ac58
Diffstat (limited to 'tags/0.5.1/src/mkbuild')
-rwxr-xr-xtags/0.5.1/src/mkbuild680
1 files changed, 680 insertions, 0 deletions
diff --git a/tags/0.5.1/src/mkbuild b/tags/0.5.1/src/mkbuild
new file mode 100755
index 0000000..fce2533
--- /dev/null
+++ b/tags/0.5.1/src/mkbuild
@@ -0,0 +1,680 @@
+#!/bin/bash
+#
+# Script para gerar SlackBuild
+# Por Rudson R. Alves
+#
+# Este script auxilia a criação de SlackBuilds, com o modelo
+# do Luiz do Sarava Linux
+#
+# SlackBuilds são scripts utilizados no Slackware para gerar
+# pacotes tgz.
+#
+# Version 0.9.8
+PROG_VERSION=0.9.8
+
+#--------------------------------------------------------------------
+# Functions
+#--------------------------------------------------------------------
+function mkbuild_use()
+
+{
+ # mkbuild help function
+ echo "
+NAME
+ mkbuild - create SlackBuild script from .mkbuild input file
+
+SYNOPSIS
+ mkbuild [OPIONS] [mkbuild_file]
+
+DESCRIPTION
+ <mkbuild_file> input file with build rules and variables
+
+ Input options:
+ -a, --author <author_name>
+ author name
+ -ai, --author_initials <initials>
+ author signature
+ -cs, --const_string <string>
+ construction string to source name
+ -u, --url <url_address>
+ url address to source
+ -pn, --pkg_name <package_name>
+ package name
+ -sn, --src_name <source_name>
+ source name
+ -pv, --pkg_version <version>
+ package version
+ -md, --model <SlackBuild_model>
+ SlackBuild model file
+ -j, --jobs <jobs_number>
+ Number of jobs to run simultaneously
+ --prefix <install_dir>
+ Prefix install directory
+
+ Program options:
+ -h, --help
+ this help mesage
+ -c, --commit
+ commit SlackBuilds in local svn tree
+ -v, --version
+ program version
+
+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 <alves_list@yahoo.com.br>
+
+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
+ <http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the
+ extent permitted by law.
+" | less
+}
+
+function error_codes {
+
+ # Start error codes function
+ NULL_STRING=499
+ ERROR_FILE_NOT_FOUND=500
+ ERROR_CONSTRUCTION=501
+ ERROR_PROGRAM=502
+ ERROR_INPUT_PAR=503
+}
+
+function mkbuild_error {
+
+ # Error function
+ case $1 in
+ "$ERROR_FILE_NOT_FOUND")
+ echo "File $2 not found!"
+ ;;
+ "$ERROR_CONSTRUCTION")
+ echo "Construction error in $2 variable."
+ ;;
+ "$ERROR_PROGRAM")
+ echo "Program logical error."
+ ;;
+ "$ERROR_INPUT_PAR")
+ echo "Input parameter $2 error. See \"mkbuild --help\"."
+ ;;
+ *)
+ echo "Unknow error!"
+ ;;
+ esac
+ exit $1
+}
+
+function is_number {
+
+ # Check if argument is a number
+ local -i int
+ if [ $# -eq 0 ]; then
+ return 1
+ else
+ (let int=$1) 2>/dev/null
+ return $? # Exit status of the let thread
+ fi
+}
+
+function set_parameters {
+
+ # Get and set mkbuild variables with parameters input
+ # Use: set_parameters $@
+ # where $@ are the parameters input
+ #
+ ALL_PAR=( $@ ) # carrega todos os parâmetros
+ N_PAR=$# # carrega o número de parâmetros
+
+ i=0 # inicia o contador
+ # Checa todos os parâmetros passados
+ while [ $i -lt $N_PAR ]; do
+ # get parameter[i]
+ PAR=${ALL_PAR[$i]}
+ case $PAR in
+ '-c'|'--commit')
+ # Commit directory
+ COMMIT=1
+ ;;
+ '-d'|'--debug')
+ # Debug mode
+ set -x
+ ;;
+ '-h'|'--help' )
+ # Show help mesage
+ mkbuild_use && exit 0
+ ;;
+ '-v'|'--version')
+ # Show program version
+ echo -e "\nmkbuild version $PROG_VERSION\n" && exit 0
+ ;;
+ '-a'|'--author')
+ # Enter with author name
+ let i++
+ AUTHOR=${ALL_PAR[$i]}
+ [ ${AUTHOR:0:1} = "-" ] && mkbuild_error $ERROR_INPUT_PAR AUTHOR
+ ;;
+ '-ai'|'--author_initials')
+ # Enter with author name
+ let i++
+ AUTHOR_INITIALS=${ALL_PAR[$i]}
+ [ ${AUTHOR_INITIALS:0:1} = "-" ] && mkbuild_error $ERROR_INPUT_PAR AUTHOR_INITIALS
+ ;;
+ '-cs'|'--const_string')
+ # Enter with construction source name string
+ let i++
+ CONST_STRING=${ALL_PAR[$i]}
+ [ ${CONST_STRING:0:1} = "-" ] && mkbuild_error $ERROR_INPUT_PAR CONST_STRING
+ ;;
+ '-md'|'--model')
+ # Enter with SlackBuild model
+ let i++
+ MODEL=${ALL_PAR[$i]}
+ [ ${MODEL:0:1} = "-" ] && mkbuild_error $ERROR_INPUT_PAR MODEL
+ ;;
+ '-j'|'--jobs')
+ # Enter with SlackBuild model
+ let i++
+ NUMJOBS=${ALL_PAR[$i]}
+ [ ${NUMJOBS:0:1} = "-" ] && mkbuild_error $ERROR_INPUT_PAR NUMJOBS
+ [ ! is_number $NUMJOBS ] && mkbuild_error $ERROR_INPUT_PAR NUMJOBS
+ NUMJOBS="-j$NUMJOBS"
+ ;;
+ '--prefix')
+ # Enter with SlackBuild model
+ let i++
+ PREFIX=${ALL_PAR[$i]}
+ [ ${PREFIX:0:1} = "-" ] && mkbuild_error $ERROR_INPUT_PAR PREFIX
+ ;;
+ '-pn'|'--pkg_name')
+ # Enter with package name
+ let i++
+ PKG_NAME=${ALL_PAR[$i]}
+ [ ${PKG_NAME:0:1} = "-" ] && mkbuild_error $ERROR_INPUT_PAR PKG_NAME
+ ;;
+ '-pv'|'pkg_version')
+ # Enter with package version
+ let i++
+ VERSION=${ALL_PAR[$i]}
+ [ ${VERSION:0:1} = "-" ] && mkbuild_error $ERROR_INPUT_PAR VERSION
+ ;;
+ '-sn'|'--src_name')
+ # Enter with source name
+ let i++
+ SRC_NAME=${ALL_PAR[$i]}
+ [ ${SRC_NAME:0:1} = '-' ] && mkbuild_error $ERROR_INPUT_PAR SRC_NAME
+ ;;
+ '-u'|'--url')
+ # Enter with url address
+ let i++
+ URL=${ALL_PAR[$i]}
+ [ ${URL:0:1} = '-' ] && mkbuild_error $ERROR_INPUT_PAR URL
+ ;;
+ *)
+ # mkbuild input file
+ MK_INPUT_FILE="${PAR//.mkbuild}.mkbuild"
+ [ ! -e $MK_INPUT_FILE ] && mkbuild_error $ERROR_FILE_NOT_FOUND $MK_INPUT_FILE
+ ;;
+ esac
+ let i++
+ done
+}
+
+function get_variable {
+
+ # Get variable value from mkbuild file (MK_INPUT_FILE)
+ [ $# -ne 1 ] && mkbuild_error $ERROR_PROGRAM
+ [ -z $MK_INPUT_FILE ] && echo "Warning: no [mkbuild_file]." && return 0
+
+ grep "^\[\[${1}\]\]" $MK_INPUT_FILE | cut -f2 -d\"
+}
+
+function edit_file {
+
+ # Edit file $3, by change string [[$1]] to $2
+ local STR_OLD
+ local STR_NEW
+
+ [ $# -ne 3 ] && mkbuild_error $ERROR_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 ] && mkbuild_error $ERROR_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 ] && mkbuild_error $ERROR_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
+ [ `is_number $NUMJOBS` ] && NUMJOBS="-j${NUMJOBS}"
+ 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_full "\$EXTENSION" "$EXTENSION" $1
+}
+
+function clear_files {
+
+ # Remove temporary files
+ rm $AUX_TMP 2>/dev/null
+ rm $SLACKBUILD_TEMP 2>/dev/null
+}
+
+function set_status {
+
+ # Set status section
+ # $1 - Section
+ # $2 - Status
+ # $3 - file
+ [ $# -ne 3 ] && mkbuild_error $ERROR_PROGRAM
+ if [ "`get_status $1 $3`" != "all" ]; then
+ 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 ] && mkbuild_error $ERROR_PROGRAM
+ eval "sed '/^<$1>.*$/! d' $2"
+}
+
+function activate_sections {
+
+ # Enable and desable sections
+ ACTIONS_LIST=`sed '/^#>>/,/<</ ! d; /^#/ d ' $MK_INPUT_FILE | tr -d ' '`
+ for i in $ACTIONS_LIST; do
+ STATUS=`echo $i | cut -f1 -d:`
+ SECTION=`echo $i | cut -f2 -d:`
+ set_status $SECTION $STATUS $SLACKBUILD_TEMP
+ done
+}
+
+function build_slackbuild {
+
+ # Remove off sections
+ [ -e $SLACKBUILD ] && mv $SLACKBUILD $SLACKBUILD.old
+ sed '/^<[a-z].*> 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/<NL>/ ; t i' $SLACKBUILD_TEMP | sed 's/<NL><NL><NL>/<NL><NL>/g' | sed 's/<NL><NL><NL>/<NL><NL>/g' | sed 's/<NL>/\n/g' > $AUX_TMP
+ sed '1,/^#\!/ {/^#\!/ b; d }' $AUX_TMP > $SLACKBUILD
+}
+
+function section_edit {
+
+ # Edit sections by change you values
+ [ -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
+ 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,/|-----/ { /<slackdesc>/ 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/,/#<slackdesc/ { /^#/ b; p }' $MK_INPUT_FILE
+ sed '1, /\[\[SLACK-DESC\]\]/ d' $SLACKBUILD_TEMP
+}
+
+function section_change {
+
+ # Change section lines
+ [ $# -ne 1 ] && mkbuild_error $ERROR_PROGRAM
+
+ # Copy first half
+ eval "sed '1,/^<$1>/! d' $SLACKBUILD_TEMP > $AUX_TMP"
+ # Paste new section
+ eval "sed -n '/#>$1/,/#<$1/ { /^#>/ b; /^#</ b; p }' $MK_INPUT_FILE >> $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_fields {
+
+ # Change others fields 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 commit_slackbuild {
+
+ # Commit SlackBuild in local Slack.Sarava tree
+ # Get SlackBuild path
+ SLACKBUILD_PATH=`validate_parameter "$SLACKBUILD_PATH" "SLACKBUILD PATH" ""`
+ if [ $? != 0 ]; then
+ # Mount SlackBuild path
+ AUX=`lynx -dump http://gentoo-portage.com/Search?search=$PKG_NAME | sed -n '/Results:/,+1 { /Results:/ b ; p }' | head --lines=1 | tr -d " "`
+ [ ! -z $AUX ] && SLACKBUILD_PATH="`dirname $AUX | tr - /`/`basename $AUX`" || SLACKBUILD_PATH="others/unclassified/$PKG_NAME"
+ fi
+
+ # check SlackBuilds directory
+ [ ! -e $SLACKBUILDS_DIR ] && createpkg --sync
+ # 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 svn_mkdir {
+
+ # svn make directory
+ [ $# -ne 1 ] && mkbuild_error 0
+
+ echo "svn_mkdir $1 $2"
+ 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 ] && mkbuild_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
+}
+
+function is_number {
+
+ # Check if $1 is a number
+ local -i int
+ if [ $# -eq 0 ]; then
+ return 1
+ else
+ (let int=$1) 2>/dev/null
+ return $? # Exit status of the let thread
+ fi
+}
+
+function validate_parameter {
+
+ # Validate parameter in .mkbuild file
+ if [ ! -z "$1" ]; then
+ echo "$1"
+ else
+ local STRING="`get_variable "$2"`"
+ if [ -z "$STRING" ]; then
+ [ ! -z "$3" ] && echo "$3" || return 1
+ 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"
+ ;;
+ *)
+ mkbuild_error $ERROR_CONSTRUCTION "DECOMPRESSOR"
+ ;;
+ esac
+}
+
+#=============================
+# Main Program
+#=============================
+#-----------------------------
+# Common functions
+COMMON="/usr/libexec/simplepkg/common.sh"
+SIMPLEPKG_CONF="/etc/simplepkg/simplepkg.conf"
+WORK=`pwd`
+LANG=en_US
+COMMIT=0
+
+if [ -f "$COMMON" ]; then
+ source $COMMON
+else
+ echo "error: file $COMMON found, check your $BASENAME installation"
+ mk_exit 0
+fi
+
+# createpkg and mkbuild section
+SLACKBUILDS_DIR="`eval_parameter SLACKBUILDS_DIR /var/slackbuilds`"
+#-----------------------------
+
+# Start variables
+DOWNLOAD_SOURCE=0 # desable download source
+# 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 $@
+
+# Get values
+# Author name
+AUTHOR=${AUTHOR:="`get_variable "SLACKBUILD AUTHOR"`"}
+[ -z "$AUTHOR" ] && mkbuild_error $ERROR_CONSTRUCTION "SLACKBUILD 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"`" || mkbuild_error $ERROR_CONSTRUCTION "SLACKBUILD AUTHOR INITIALS"
+
+# URL program
+URL=`validate_parameter "$URL" "DOWNLOAD FOLDER URL" ""` || mkbuild_error $ERROR_CONSTRUCTION "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
+
+# Extension
+EXTENSION=`validate_parameter "$EXTENSION" "EXTENSION" "$STR_MOUNT"` || mkbuild_error $ERROR_CONSTRUCTION "EXTENSION"
+
+# Build archteture
+ARCH=`validate_parameter "$ARCH" "ARCH" "i486"`
+
+# Source name
+STR_MOUNT=`echo $SOURCE_NAME | sed -r 's/(.*)-(.*)\.(.*\..*)$/\1/'`
+SRC_NAME=`validate_parameter "$SRC_NAME" "SOURCE NAME" "$STR_MOUNT"` || mkbuild_error $ERROR_CONSTRUCTION "SOURCE NAME"
+
+# Package name
+STR_MOUNT=`echo $SRC_NAME | tr [A-Z_] [a-z\-]`
+PKG_NAME=`validate_parameter "$PKG_NAME" "PACKAGE NAME" "$STR_MOUNT"`
+
+# Version
+STR_MOUNT=`echo $SOURCE_NAME | sed -r 's/(.*)-(.*)\.(.*\..*)$/\2/'`
+VERSION=`validate_parameter "$VERSION" "VERSION" $STR_MOUNT` || mkbuild_error $ERROR_CONSTRUCTION "VERSION"
+
+# Construction source name string
+CONST_STRING="`validate_parameter "$CONST_STRING" "SOURCE NAME CONSTRUCTION STRING" "\\\$SRC_NAME-\\\$VERSION.tar.$EXTENSION"`"
+
+# Build Source Name
+[ -z $SOURCE_NAME ] && SOURCE_NAME=`eval "echo $CONST_STRING"`
+
+# Decompressor program and test flag
+DECOMPRESSOR=`validate_parameter "$DECOMPRESSOR" "DECOMPRESSOR" ""` || decompress_find
+
+DECOMPRESSOR_TEST_FLAG=`validate_parameter "$DECOMPRESSOR_TEST_FLAG" "DECOMPRESSOR TEST FLAG" ""` || mkbuild_error $ERROR_CONSTRUCTION "DECOMPRESSOR TEST FLAG"
+
+# Documentations list
+DOCFILES=`validate_parameter "$DOCFILES" "DOCUMENTATION FILES" "NEWS TODO README AUTHORS INSTALL ChangeLog MAINTAINERS COPYING readme.*"`
+
+# ./configure option
+OPTIONS=`validate_parameter "$OPTIONS" "OTHER CONFIGURE ARGS" ""`
+
+# PREFIX
+PREFIX=`validate_parameter "$PREFIX" "PREFIX" "/usr"`
+
+# Number of jobs
+NUMJOBS=`validate_parameter "$NUMJOBS" "NUMBER OF JOBS" ""`
+
+# Make slack-required file.
+SLACK_REQUIRED=`validate_parameter "$SLACK_REQUIRED" "SLACK REQUIRED" ""`
+
+# SlackBuild model
+MODEL=`validate_parameter "$MODEL" "SLACKBUILD MODEL" "generic.mkSlackBuild"`
+
+#
+# Start build SlackBuild
+SLACKBUILD=${PKG_NAME}.SlackBuild
+SLACKBUILD_TEMP=$SLACKBUILD.tmp
+cp $MODEL_DIR/$MODEL $SLACKBUILD_TEMP
+
+# Change Strings from model
+start_build $SLACKBUILD_TEMP
+
+# On/Off sections
+activate_sections
+
+# Change sections
+section_edit
+
+# Remove off sections
+build_slackbuild
+
+# Make 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" "Null" $SLACKBUILD
+fi
+
+# Others changes
+change_others_fields
+
+# Clear temporary files
+clear_files
+
+[ $COMMIT -eq 1 ] && commit_slackbuild
+