aboutsummaryrefslogtreecommitdiff
path: root/trunk/src
diff options
context:
space:
mode:
authorrudson <rudson@04377dda-e619-0410-9926-eae83683ac58>2007-06-18 16:58:14 +0000
committerrudson <rudson@04377dda-e619-0410-9926-eae83683ac58>2007-06-18 16:58:14 +0000
commite0da3bf1ac364cde1ffbf603699005d803e5bb78 (patch)
treefd2be2ea8f046a1839141158f40fdbeef5bdd8fd /trunk/src
parentadd67aa2ed0e25b65ac48a0551b477e12d6f33ce (diff)
downloadsimplepkg-e0da3bf1ac364cde1ffbf603699005d803e5bb78.tar.gz
simplepkg-e0da3bf1ac364cde1ffbf603699005d803e5bb78.tar.bz2
mkbuild-0.9.8: adicionado ao trunk
git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@394 04377dda-e619-0410-9926-eae83683ac58
Diffstat (limited to 'trunk/src')
-rwxr-xr-xtrunk/src/mkbuild1519
1 files changed, 532 insertions, 987 deletions
diff --git a/trunk/src/mkbuild b/trunk/src/mkbuild
index b6c718d..fce2533 100755
--- a/trunk/src/mkbuild
+++ b/trunk/src/mkbuild
@@ -1,4 +1,4 @@
-#!/bin/bash -x
+#!/bin/bash
#
# Script para gerar SlackBuild
# Por Rudson R. Alves
@@ -9,1127 +9,672 @@
# SlackBuilds são scripts utilizados no Slackware para gerar
# pacotes tgz.
#
-# Turn off debug
-set +x
-#
-# Version 0.9.16
-PROG_VERSION=0.9.16
+# Version 0.9.8
+PROG_VERSION=0.9.8
#--------------------------------------------------------------------
# Functions
#--------------------------------------------------------------------
-
-function config_help {
-
- # Show ./configure --help
-
- view_file "Check ./configure --help" $CONFIG_HELP
-
-}
-
-
-function view_file {
-
- # Show <file> in dialog textbox
- # use: view_file <textbox> <file>
-
- [ $# -ne 2 ] && return 1
- dialog --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title " $1 " --textbox $2 20 75
-
-}
-
-function mk_exit {
-
- # Close all temporary files and exit
-
- clean_all
- clear
+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 clean_all {
-
- # Clear all temp files
+function is_number {
- [ -s $DEPENDENCY_LIST ] && cp $DEPENDENCY_LIST $BASEDIR/slack-required
-
- rm $AUX_TMP 2>/dev/null
- rm $SLACKDESC_TMP 2>/dev/null
- rm $SLACKBUILD.test 2>/dev/null
- rm $DEPENDENCY_LIST 2>/dev/null
- if [ ! -z $MK_PKGNAME ]; then
- rm $BASEDIR/*_$MK_PKGNAME.mkbuild 2>/dev/null
- rm -rf /tmp/$MK_PKGNAME 2>/dev/null
- rm $CONFIG_HELP 2>/dev/null
+ # 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
- rm md5sum 2>/dev/null
-
-}
-
-function print_lines {
-
- # Print from <file>, the lines betwen <tag_string> and </tag_string> lines
- # use: print_lines_to <tag_string> <file>
-
- [ $# -ne 2 ] && mk_exit 1
- eval "sed -n '/<$1>/,/<\/$1>/ { /<$1>/ b; /<\/$1>/ b; p; }' $2"
-
}
-function print_lines_to {
-
- # Print from <file>, the lines betwen <tag_string_1> and string_2 lines
- # use: print_lines_to <tag_string_1> <string_2> <file>
-
- [ $# -ne 3 ] && mk_exit 1
- eval "sed -n '/<$1>/,/$2/ { /<$1>/ b; /$2/ b; p; }' $3"
-
-}
-
-function mk_slackdesc {
-
- # Make slack-desc file
-
- print_lines_to "slackdesc" "|-----" $SB_MODEL
- echo -n $MK_PKGNAME | tr [a-z+\-] " "
- echo -n "|-----handy-ruler"
- let N=18+${#MK_PKGNAME}
- for i in `seq $N $SLACKDESC_LEN`; do
- echo -n "-"
- done
- echo -en "|\n"
-
- for i in `seq 1 11`; do
- echo -en "$MK_PKGNAME: \n"
+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
- print_lines "slackdesc" $SB_MODEL | sed '1,/\]\]/ d'
-
}
-function get_status {
-
- # Get label status from section in the SlackBuild model
- # use: get_status <section_name> <SlackBuild_model>
+function get_variable {
- [ $# -ne 2 ] && mk_exit 1
- eval "sed -n '/<$1>/ p' $2 | sed 's/.*> \([a-z]\+\)/\1/'"
-
-}
-
-function mk_status {
-
- # Get status from edited SlackBuild
- # input: <section_name>
- # output: section status and section number
- # use: mk_status <section_name>
-
- for i in `seq 0 $MAXSECTION`;do
- if [ "${SECTION_NAME[i]}" = "$1" ]; then
- echo "${SECTION_FLAG[i]} $i"
- return 0
- fi
- done
- return 1
+ # 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>, by change string [[<old_string>]] to <new_string>
- # use: edit_file <old_string> <new_string> <file>
-
+ # Edit file $3, by change string [[$1]] to $2
local STR_OLD
local STR_NEW
- [ $# -ne 3 ] && mk_exit 1
+ [ $# -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 unpkg_source {
-
- # Unpackage source
- # FIXME: if MK_DECOMPRESSOR -ne bunzip2 or gunzip...
-
- if [ $MK_DECOMPRESSOR = "bunzip2" -o $MK_DECOMPRESSOR = "gunzip" ]; then
- dialog --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" \
- --cancel-label "Main Menu" --title "$MK_TITLE" --infobox "Uncompress source in /tmp/$MK_PKGNAME. Wait" 3 45
- [ $? -ne 0 ] && return 100
- mkdir /tmp/$MK_PKGNAME/ 2>/dev/null
- tar xvf $MK_SOURCE -C /tmp/$MK_PKGNAME/ 1>/dev/null
- [ $? -ne 0 ] && mk_exit 1
- MK_TMPSRC="/tmp/$MK_PKGNAME/`ls /tmp/$MK_PKGNAME/`"
-
- DOC_FILES=`find $MK_TMPSRC -type f -maxdepth 1 -name "[A-Z]*" | sed 's/.*\/\(.*\)$/\1/'`
- else
- dialog --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" \
- --title "$MK_TITLE" --msgbox "$MK_DECOMPRESSOR not configurated..." 5 45
- fi
-
-}
-
-function download_url {
-
- # Download source
-
- clear
- mkdir -p $MK_SOURCEDIR/$MK_PKGNAME 2>/dev/null
- wget --continue --limit-rate=$MK_LIMITRATE $MK_URL -P $MK_SOURCEDIR/$MK_PKGNAME/
- if [ $? -ne 0 ]; then
- echo "URL error"
- return 0
- fi
- MK_SOURCE=$MK_SOURCEDIR/$MK_PKGNAME/$MK_SRCNAME
-
-}
-
-function select_source {
-
- # Select source file
-
- MK_SOURCE=$BASEDIR
- while [ ! -f $MK_SOURCE ]; do
- MK_SOURCE=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" \
- --cancel-label "Main Menu" --title " Select source file name (use spaces to select): " --fselect "$MK_SOURCE" 10 70`
- [ $? -ne 0 ] && return 100
- if [ ! -f $MK_SOURCE ]; then
- MK_SOURCE="$MK_SOURCE/"
- fi
- done
-
- MK_SRCNAME=`basename $MK_SOURCE`
- MK_SOURCEDIR=`dirname $MK_SOURCE`
-
}
-function change_strings {
+function edit_file_full {
- # Change string string_1 to string_2 in all files in the current directory
- # use: change_strings <string_1> <string_2>
-
- [ $# -ne 2 ] && mk_exit 1
- #[ -z "$2" ] && return 0
- eval "grep -l \"\[\[$1\]\]\" *" | while read FILE; do
- edit_file "$1" "$2" $FILE
- done
+ # 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 get_source_dialog {
+function start_build {
- # Dialog to download source
+ # Build initial sections
+ [ $# -ne 1 ] && mkbuild_error $ERROR_PROGRAM
- if [ ! -e $MK_SOURCE ]; then
- dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" \
- --title "$MK_TITLE" --yesno " Download $MK_SRCNAME? " 5 50
- if [ $? -eq 0 ]; then
- download_url
- else
- select_source
- [ $? -eq 100 ] && return 100
- fi
- fi
+ 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 test_source {
-
- # Test source by $MK_DECOMPRESSOR $MK_DECOMPRESSOR_TEST_FLAG
-
- local TEST=1
- local ANS=0
-
- while [ $TEST -ne 0 ]; do
- dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --infobox "Test source with $MK_DECOMPRESSOR $MK_DECOMPRESSOR_TEST_FLAG $MK_SOURCE" 5 50
- $MK_DECOMPRESSOR $MK_DECOMPRESSOR_TEST_FLAG $MK_SOURCE
- TEST=$?
- if [ $TEST -ne 0 ]; then
- dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --yesno "Source uncompress error. Download source again?" 6 50
- if [ $? -eq 0 ]; then
- rm $MK_SOURCE
- get_source_dialog
- [ $? -eq 100 ] return 100
- else
- TEST=0
- fi
- fi
- done
+function clear_files {
+ # Remove temporary files
+ rm $AUX_TMP 2>/dev/null
+ rm $SLACKBUILD_TEMP 2>/dev/null
}
-function set_source_test {
+function set_status {
- # Configure test source variables
-
- MK_SOURCE=$MK_SOURCEDIR/$MK_PKGNAME/$MK_SRCNAME
- if [ "$MK_EXTENSION" = "tar.gz" -o "$MK_EXTENSION" = "gz" -o "$MK_EXTENSION" = "tgz" ]; then
- MK_DECOMPRESSOR=gunzip
- MK_DECOMPRESSOR_TEST_FLAG="-t"
- elif [ "$MK_EXTENSION" = "tar.bz2" -o "$MK_EXTENSION" = "bz2" ]; then
- MK_DECOMPRESSOR=bunzip2
- MK_DECOMPRESSOR_TEST_FLAG="-t"
+ # 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
- edit_decompress_arg
- [ $? -eq 100 ] && return 100
+ echo "Warning: Section $1 have status all. Can't change!"
fi
-
}
-function desable_configure {
-
- # Desable configure section
-
- local i=0
- while [ "${SECTION_NAME[i]}" != "configure" -a $i -le $MAXSECTION ]; do
- let i++
- done
-
- [ $i -ne $MAXSECTION ] && SECTION_FLAG[i]="off"
-
-}
-
-#--------------------------------------------------------------------
-# Edit functions
-#--------------------------------------------------------------------
-
-function edit_author {
-
- # Edit .mkslackbuild variables
-
- MK_AUTHOR=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --inputbox "Enter with author complite name:" 8 60 "$MK_AUTHOR"`
- edit_file "AUTHOR NAME" "$MK_AUTHOR" ~/.mkslackbuild
-
- MK_AUTHOR_INITIALS=`echo $MK_AUTHOR | sed 's/ /\n/g' | sed 's/^\([A-Z]\).*/\1/' | sed ':i; $!N; s/\n//; ti' | tr [A-Z] [a-z]`
- MK_AUTHOR_INITIALS=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --inputbox "Enter with author assignature:" 8 60 "$MK_AUTHOR_INITIALS"`
- edit_file "AUTHOR INITIALS" "$MK_AUTHOR_INITIALS" ~/.mkslackbuild
-
- MK_EDITOR=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --inputbox "Enter with editor command:" 8 60 "pico"`
- edit_file "EDITOR" "$MK_EDITOR" ~/.mkslackbuild
-
- MK_SOURCEDIR=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --inputbox "Enter with sources directory:" 8 60 "\`pwd\`"`
- edit_file "SOURCE DIR" "$MK_SOURCEDIR" ~/.mkslackbuild
-
- if [ "$USER" != "root" ]; then
- SLACKBUILDRC=`[ -e ~/.slackbuildrc ] && echo ~/.slackbuildrc || echo /etc/slackbuildrc`
- MK_REPOS=`grep 'REPOS=' $SLACKBUILDRC | sed 's/REPOS=\(.*\)/\1/'`
- else
- SLACKBUILDRC=`su -c "[ -e ~/.slackbuildrc ] && echo ~/.slackbuildrc || echo /etc/slackbuildrc" 2>/dev/null`
- MK_REPOS=`su -c "grep 'REPOS=' $SLACKBUILDRC | sed 's/REPOS=\(.*\)/\1/'" 2>/dev/null`
- fi
-
- MK_REPOS=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --inputbox "Enter with binary repository directory:" 8 60 "$MK_REPOS"`
- edit_file "REPOS DIR" "$MK_REPOS" ~/.mkslackbuild
-
- MK_ARCH=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --inputbox "Enter default architecture to SlackBuild:" 8 60 "i468"`
- edit_file "DEFAULT ARCH" "$MK_ARCH" ~/.mkslackbuild
-
- MK_LIMITRATE=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --inputbox "Enter wget limit rate:" 8 60 "120k"`
- edit_file "LIMIT RATE" "$MK_LIMITRATE" ~/.mkslackbuild
+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 {
-function edit_url {
-
- # Edit source URL
-
- MK_URL=${MK_URL:="http://downloads.sourceforge.net/"}
- MK_URL=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --cancel-label "Main Menu" --title "$MK_TITLE" --inputbox "Enter with complite URL from source:" 8 60 "$MK_URL"`
- [ $? -ne 0 ] && return 100
-
+ # 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 edit_source_name {
-
- # Edit source name
-
- MK_SRCNAME=`basename $MK_URL`
- MK_SRCNAME=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --cancel-label "Main Menu" --title "$MK_TITLE" --inputbox "Enter with source file name:" 8 60 "$MK_SRCNAME"`
- [ $? -ne 0 ] && return 100
+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 edit_pkgname {
-
- # Edit MK_PKGNAME, MK_VERSION and MK_EXTENSION
-
- # Remove variables values from $MK_SRCNAME
- MK_SRC_NAME=`echo $MK_SRCNAME | sed -r 's/(.*)-(.*)\.(.*\..*)$/\1/'`
- MK_PKGNAME=`echo $MK_SRC_NAME | tr [A-Z_] [a-z\-]`
- MK_VERSION=`echo $MK_SRCNAME | sed -r 's/(.*)-(.*)\.(.*\..*)$/\2/'`
- MK_EXTENSION=`echo $MK_SRCNAME | sed -r 's/(.*)-(.*)\.(.*\..*)$/\3/'`
-
- # Check variables values
- ANS=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" \
- --cancel-label "Main Menu" --title "$MK_TITLE" \
- --form "Check information below:" 14 52 7 \
- "Source name:" 1 1 "$MK_SRC_NAME" 1 15 30 60 \
- "Package name:" 3 1 "$MK_PKGNAME" 3 15 30 60 \
- "Version:" 5 1 "$MK_VERSION" 5 15 30 60 \
- "Extension:" 7 1 "$MK_EXTENSION" 7 15 30 60`
- [ $? -ne 0 ] && return 100
-
- MK_SRC_NAME=`echo $ANS | awk '{print $1}'`
- MK_PKGNAME=`echo $ANS | awk '{print $2}'`
- MK_VERSION=`echo $ANS | awk '{print $3}'`
- MK_EXTENSION=`echo $ANS | awk '{print $4}'`
-
-}
+function section_edit {
-function edit_decompress_arg {
+ # Edit sections by change you values
+ [ -z $MK_INPUT_FILE ] && return 0
- # Edit MK_DECOMPRESSOR and MK_DECOMPRESSOR_TEST_FLAG
+ SECTION_LIST=`grep '^#>[a-z]' $MK_INPUT_FILE | cut -c3-`
- MK_DECOMPRESSOR=""
- MK_DECOMPRESSOR_TEST_FLAG=""
+ # Check for sections change
+ [ -z "$SECTION_LIST" ] && return 0
- ANS3=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" \
- --cancel-label "Main Menu" --title "$MK_TITLE" \
- --form "Check information below:" 10 55 3 \
- "Uncompress program:" 1 1 "$MK_DECOMPRESSOR" 1 23 25 60 \
- "Uncompress test flag:" 3 1 "$MK_DECOMPRESSOR_TEST_FLAG" 3 23 25 100`
- [ $? -ne 0 ] && return 100
-
- MK_DECOMPRESSOR=`echo $ANS3 | awk '{print $1}'`
- MK_DECOMPRESSOR_TEST_FLAG=`echo $ANS3 | awk '{print $2}'`
-
-}
-
-function edit_configure {
-
- # Edit configure options
-
- local ANS0=1
-
- CONFIG_HELP=`mktemp -p /tmp/ config_$MK_PKGNAME.XXXXXX`
-
- $MK_TMPSRC/configure --help > $CONFIG_HELP
-# config_help
-
- # Default PREFIX for Slackware 11+
- MK_PREFIX="/usr"
- MK_OPTIONS=""
-
- while [ $ANS0 -eq 1 ]; do
- local ANS1="7"
- while [ $ANS1 -ne 0 ]; do
- ANS1=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" \
- --cancel-label "Continue" --title "$MK_TITLE" \
- --menu "Select one option" 0 0 0 \
- 1 "View ./configure --help" \
- 2 "View documentations" \
- 3 "PREFIX=$MK_PREFIX" \
- 4 "OPTIONS=$MK_OPTIONS" \
- 0 "Continue"`
-
- case $ANS1 in
- '1')
- config_help
- ;;
- '2')
- view_docs
- ;;
- '3')
- MK_PREFIX=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --inputbox "Enter with prefix for install $MK_PKGNAME" 8 60 "$MK_PREFIX"`
- ;;
- '4')
- MK_OPTIONS=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --inputbox "Enter with configure options for compile $MK_PKGNAME" 8 60 "$MK_OPTIONS"`
- ;;
- *)
- ANS1=0
- ;;
- esac
- done
-
- # Configure
- dialog --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title " Execute ./configure below? " --yesno "./configure --prefix=$MK_PREFIX $MK_OPTIONS" 6 70
- if [ $? -eq 0 ]; then
- (
- cd $MK_TMPSRC
- ./configure --prefix=$MK_PREFIX $MK_OPTIONS
- )
-
- echo -en "\nPress ENTER to continue"
- read ANS0
+ # 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
-
- dialog --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title " Configure line is ok? " --yesno "./configure --prefix=$MK_PREFIX $MK_OPTIONS" 6 70
-
- ANS0=$?
- done
-
-}
-
-function view_docs {
-
- # Show Documentations files
-
- local MENU=""
- local SELECT=""
- local ANS2=0
-
- for i in $DOC_FILES; do
- MENU="$MENU \"$i\" \"\" "
done
-
- while [ $ANS2 -eq 0 ]; do
- SELECT=`eval "dialog --stdout --backtitle \"Make SlackBuild $PROG_VERSION [$MK_PKGNAME]\" --cancel-label \"Continue\" --title \"$MK_TITLE\" --menu \"Select doc-file below:\" 20 45 13 $MENU"`
- ANS2=$?
- [ $ANS2 -eq 0 ] && view_file "File: $SELECT" $MK_TMPSRC/$SELECT
- done
-
}
-function edit_docfiles {
-
- # Edit documentations files
+function slackdesc_edit {
- [ -z $MK_TMPSRC ] && return 0
-
-# if [ -e $MK_TMPSRC ]; then
- LIST=`( cd $MK_TMPSRC; find . -type f -maxdepth 1 | cut -c3- )`
- DOCMENU=""
- for i in $LIST; do
- if [ "`echo NEWS TODO README AUTHORS INSTALL ChangeLog MAINTAINERS COPYING | grep $i`" != "" ]; then
- DOCMENU="$DOCMENU $i \"\" on"
- else
- DOCMENU="$DOCMENU $i \"\" off"
- fi
+ # 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
- SELECTDOCS=`eval "dialog --stdout --separate-output --backtitle \"Make SlackBuild $PROG_VERSION [$MK_PKGNAME]\" --title \"$MK_TITLE\" --cancel-label \"Continue\" --checklist \"Select documentation files below:\" 20 45 13 $DOCMENU"`
-# fi
-
- MK_DOCFILES="`echo $SELECTDOCS | sed ':i; N; s/\n/ /; bi'`"
+ echo -en "|\n"
+ sed -n '/#>slackdesc/,/#<slackdesc/ { /^#/ b; p }' $MK_INPUT_FILE
+ sed '1, /\[\[SLACK-DESC\]\]/ d' $SLACKBUILD_TEMP
}
-function edit_arch {
-
- # Edit compiler architecture
+function section_change {
- MK_ARCH=`dialog --stdout --backtitle "Make SlackBuild documentation files below:" --cancel-label "Main Menu" --title "$MK_TITLE" --inputbox "Set an architecture to compiler:" 8 45 $MK_ARCH`
- [ $? -ne 0 ] && return 100
+ # Change section lines
+ [ $# -ne 1 ] && mkbuild_error $ERROR_PROGRAM
-}
-
-#--------------------------------------------------------------------
-# Mount files
-#--------------------------------------------------------------------
-
-function start_build {
-
- # Start build sections
-
- change_strings "SLACKBUILD AUTHOR" "$MK_AUTHOR"
- change_strings "SLACKBUILD AUTHOR INITIALS" $MK_AUTHOR_INITIALS
- change_strings "SOURCE NAME" "$MK_SRC_NAME"
- change_strings "PROGRAM NAME" "$MK_PKGNAME"
- change_strings "PACKAGE NAME" "$MK_PKGNAME"
- change_strings "DECOMPRESSOR" "$MK_DECOMPRESSOR"
- change_strings "DECOMPRESSOR TEST FLAG" "$MK_DECOMPRESSOR_TEST_FLAG"
- change_strings "PROGRAM URL" "${MK_URL//$MK_SRCNAME}"
- change_strings "ARCH" "$MK_ARCH"
- change_strings "VERSION" $MK_VERSION
- change_strings "SOURCE EXTENSION" ${MK_EXTENSION#tar.}
- change_strings "DOWNLOAD FOLDER URL" "`dirname $MK_URL`"
- if [ -z $MK_OPTIONS ]; then
- change_strings "OTHER CONFIGURE ARGS" "\"\""
- else
- change_strings "OTHER CONFIGURE ARGS" "$MK_OPTIONS"
- fi
- change_strings "DOCUMENTATION FILES" "$MK_DOCFILES"
- change_strings "PREFIX" "$MK_PREFIX"
+ # 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 mount_slackbuild {
+function make_slack_required {
- # Mount SlackBuild
+ # Build slack-required file
+ [ -e slack-required ] && mv slack-required slack-required.old
+ [ -z "$SLACK_REQUIRED" ] && return 0
- dialog --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --infobox "SlackBuild save in $SLACKBUILD" 5 45
+ echo -e "# Dependency list to $SRC_NAME\n#\n# dependency [condition] [version]]" > slack-required
- rm $SLACKBUILD 2>/dev/null
-
- for i in `seq 0 $MAXSECTION`; do
- if [ "${SECTION_FLAG[i]}" = "all" -o "${SECTION_FLAG[i]}" = "on" ]; then
- cat ${SECTION_NAME[i]}_$MK_PKGNAME.mkbuild >> $SLACKBUILD
- echo "" >> $SLACKBUILD
- fi
+ 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
- chmod +x $SLACKBUILD
-
}
-function mount_slackbuild_to {
-
- # Mount SlackBuild to section section_name
- # use: mount_slackbuild_to <section_name>
-
- if [ $# -eq 1 ]; then
- END_SECTION=$1
- dialog --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --infobox "SlackBuild save in $SLACKBUILD.test" 5 45
-
- rm $SLACKBUILD.test 2>/dev/null
- let i=0
- while [ $i -le $END_SECTION ]; do
- if [ "${SECTION_FLAG[i]}" = "all" -o "${SECTION_FLAG[i]}" = "on" ]; then
- cat ${SECTION_NAME[i]}_$MK_PKGNAME.mkbuild >> $SLACKBUILD.test
- echo "" >> $SLACKBUILD
- fi
- let i++
- done
- echo "" >> $SLACKBUILD
- fi
+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 make_file_sections {
-
- # Make files section
-
- THIS_MODEL=$1
+function commit_slackbuild {
- # Create SlackBuilds-sections files
- rm *_$MK_PKGNAME.mkbuild 2>/dev/null
-
- # create file section
- INDEX=0
- while read ITEM; do
- SECTION_NAME[INDEX]="$ITEM"
-
- AUX=${SB_SECTION[$INDEX,0]}_${MK_PKGNAME}
- SECTION_FILE=${SECTION_NAME[INDEX]}_${MK_PKGNAME}.mkbuild
- rm $SECTION_FILE 2>/dev/null
+ # 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
- STRING=$ITEM
- # Save section status flag
- SECTION_FLAG[INDEX]=`get_status "$STRING" $THIS_MODEL`
+ # check SlackBuilds directory
+ [ ! -e $SLACKBUILDS_DIR ] && createpkg --sync
+ # change to SlackBuilds directory
+ cd $SLACKBUILDS_DIR/
- # Create sections files
- print_lines "$STRING" $THIS_MODEL > $SECTION_FILE
- let INDEX++
- done < <( cat $THIS_MODEL | grep '^<[a-z_0-9]\+>' | sed 's/<\(.*\)>.*$/\1/' )
+ # Add SlackBuild scripts
+ # check path
+ [ ! -e $SLACKBUILD_PATH ] && svn_mkdir $SLACKBUILD_PATH
+ # add SlackBuild
+ svn_add $SLACKBUILD $SLACKBUILD_PATH
- let INDEX--
- MAXSECTION=$INDEX
- md5sum *.mkbuild > md5sum
+ # check slack-required
+ # add slack-required
+ [ -e $WORK/slack-required ] && svn_add slack-required $SLACKBUILD_PATH
+ cd $WORK
}
-#--------------------------------------------------------------------
-# Main Menu functions
-#--------------------------------------------------------------------
-
-function create_slackbuild {
-
- # Create new SlackBuild
- # Config package URL
- edit_url
- [ $? -eq 100 ] && return 100
-
- # Source Name
- edit_source_name
- [ $? -eq 100 ] && return 100
-
- # Package name, version and extension
- edit_pkgname
- [ $? -eq 100 ] && return 100
+function svn_mkdir {
- # Compile arch
- edit_arch
- [ $? -eq 100 ] && return 100
+ # svn make directory
+ [ $# -ne 1 ] && mkbuild_error 0
- # Set source test variables
- set_source_test
- [ $? -eq 100 ] && return 100
+ echo "svn_mkdir $1 $2"
+ DIR_LIST=`echo $1 | tr '/' ' '`
- # Get source file
- MK_SOURCE=$MK_SOURCEDIR/$MK_PKGNAME/$MK_SRCNAME
- get_source_dialog
- [ $? -eq 100 ] && return 100
-
- # Test source
- test_source
- [ $? -eq 100 ] && return 100
+ DIR=""
+ for i in $DIR_LIST; do
+ DIR=$DIR/$i
+ [ ! -e ${DIR:1} ] && svn mkdir ${DIR:1}
+ done
+}
- # Uncompress source
- unpkg_source
- [ $? -eq 100 ] && return 100
+function svn_add {
- # GPG and MD5 test
- # ADD: edit_signature
+ # svn add file
+ [ $# -ne 2 ] && mkbuild_error 0
- # Configure compiler options if exist
- if [ -e $MK_TMPSRC/configure ]; then
- edit_configure
+ # copy file
+ if [ -e $2/$1 ]; then
+ echo "$2/$1 exist. Overwriter it."
+ cp $WORK/$1 $2/
else
- desable_configure
+ cp $WORK/$1 $2/
+ # add file to svn tree
+ svn add $2/$1
fi
-
- # Edit documentation list
- edit_docfiles
-
- # Create files sections
- make_file_sections $SB_MODEL
-
- # SlackBuild script name
- SLACKBUILD=$BASEDIR/$MK_PKGNAME.SlackBuild
-
- # mkSlackBuild script name
- # FIXME: make an MODELDIR???
- MKSLACKBUILD=$BASEDIR/$MK_PKGNAME.mkslackbuild
-
- mk_slackdesc > slackdesc_$MK_PKGNAME.mkbuild
-
- # Edit builds sections
- start_build
-
- # Main-Menu
- edit_menu
-
}
-function open_mkslackbuild_dialog {
-
- # Open mkslackbuild dialog input
- MKSLACKBUILD=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" \
- --title " Select source file name: " \
- --fselect "$BASEDIR/" 10 70`
- [ $? -ne 0 ] && return 100
-
- open_mkslackbuild
- [ $? -eq 100 ] || return 100
-
-}
-
-function open_mkslackbuild {
-
- # Open mkslackbuild
- if [ -f $MKSLACKBUILD ]; then
- # Start defaults variables
- source $MKSLACKBUILD
-
- # SlackBuild scrit name
- SLACKBUILD=$BASEDIR/$MK_PKGNAME.SlackBuild
-
- # Create files sections
- make_file_sections $MKSLACKBUILD
-
- [ -e $BASEDIR/slack-required ] && ( cp $BASEDIR/slack-required $DEPENDENCY_LIST )
+function is_number {
+ # Check if $1 is a number
+ local -i int
+ if [ $# -eq 0 ]; then
+ return 1
else
- dialog --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" \
- --title "$MK_TITLE" --msgbox "$MKSLACKBUILD most be a mkslackbuild file" 6 45
- return 100
+ (let int=$1) 2>/dev/null
+ return $? # Exit status of the let thread
fi
-
- # CHECK:
- # Set source test vadiables
- set_source_test
- [ $? -eq 100 ] && return 100
-
- # Get source file
- get_source_dialog
- [ $? -eq 100 ] && return 100
-
- # Test source
- test_source
-
- # Uncompress source
- unpkg_source
-
}
-function save_mkslackbuild {
-
- # Save mkSlackBuild
- dialog --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --infobox "mkSlackBuild save in $MKSLACKBUILD" 5 30
-
- rm $MKSLACKBUILD 2>/dev/null
- echo '#!/bin/bash' > $MKSLACKBUILD
- echo -e "# mkSlackBuild version $MK_VERSION\n" >> $MKSLACKBUILD
- echo "MK_SRC_NAME=\"$MK_SRC_NAME\"" >> $MKSLACKBUILD
- echo "MK_SRCNAME=\"$MK_SRCNAME\"" >> $MKSLACKBUILD
- echo "MK_PKGNAME=\"$MK_PKGNAME\"" >> $MKSLACKBUILD
- echo "MK_URL=\"$MK_URL\"" >> $MKSLACKBUILD
- echo "MK_AUTHOR=\"$MK_AUTHOR\"" >> $MKSLACKBUILD
- echo "MK_AUTHOR_INITIALS=\"$MK_AUTHOR_INITIALS\"" >> $MKSLACKBUILD
- echo "MK_VERSION=\"$MK_VERSION\"" >> $MKSLACKBUILD
- echo "MK_EXTENSION=\"$MK_EXTENSION\"" >> $MKSLACKBUILD
- echo "MK_DECOMPRESSOR=\"$MK_DECOMPRESSOR\"" >> $MKSLACKBUILD
- echo "MK_DECOMPRESSOR_TEST_FLAG=\"$MK_DECOMPRESSOR_TEST_FLAG\"" >> $MKSLACKBUILD
- echo "MK_DOCFILES=\"$MK_DOCFILES\"" >> $MKSLACKBUILD
- echo "MK_OPTIONS=\"$MK_OPTIONS\"" >> $MKSLACKBUILD
- echo "MK_PREFIX=\"$MK_PREFIX\"" >> $MKSLACKBUILD
- echo "MK_MD5SUM_EXT=\"$MK_MD5SUM_EXT\"" >> $MKSLACKBUILD
- echo -e "return 0\n\n" >> $MKSLACKBUILD
-
- for i in `seq 0 $MAXSECTION`; do
- echo "<${SECTION_NAME[i]}> ${SECTION_FLAG[i]}" >> $MKSLACKBUILD
- cat ${SECTION_NAME[i]}_$MK_PKGNAME.mkbuild >> $MKSLACKBUILD
- echo "</${SECTION_NAME[i]}>" >> $MKSLACKBUILD
- echo "" >> $MKSLACKBUILD
- done
+function validate_parameter {
- [ -s $DEPENDENCY_LIST ] && cp $DEPENDENCY_LIST $BASEDIR/slack-required
-
-}
-
-function edit_menu {
-
- # Edit Menu
-
- ANSE=0
- while [ $ANSE -ne 1 ]; do
-
- # Create main-menu string
- EDITMENU=""
- for i in `seq 0 $MAXSECTION`; do
- EDITMENU="$EDITMENU ${SECTION_NAME[i]} ${SECTION_FLAG[i]}"
- done
-
- # Show edit menu
- SELECT=`eval "dialog --stdout --backtitle \"Make SlackBuild $PROG_VERSION [$MK_PKGNAME]\" --ok-label \"Edit\" --cancel-label \"Main Menu\" --title \"$MK_TITLE\" --menu \"Select one section to edit\" 20 40 13 $EDITMENU"`
- ANSE=$?
- if [ $ANSE -ne 1 ]; then
- STATUS=`mk_status $SELECT`
- if [ $? -ne 0 ]; then
- echo "Section name error..."
- mk_exit 1
- fi
-
- FLAG=`echo $STATUS | awk '{print $1}'`
- INDEX=`echo $STATUS | awk '{print $2}'`
-
- if [ "$FLAG" = "on" ]; then
- SECTION_FLAG[$INDEX]=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --radiolist "Change $SELECT status?" 0 0 0 "on" "enable section" "on" "off" "desable section" "off"`
- elif [ "$FLAG" = "off" ]; then
- SECTION_FLAG[$INDEX]=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --radiolist "Change $SELECT status?" 0 0 0 "on" "enable section" "off" "off" "desable section" "on"`
- fi
-
- if [ $? -eq 0 ]; then
- if [ "${SECTION_FLAG[$INDEX]}" = "on" -o "${SECTION_FLAG[$INDEX]}" = "all" ]; then
- if [ "$SELECT" = "md5sum_download_and_check" ]; then
- md5sum_edit ${SELECT}_${MK_PKGNAME}.mkbuild
-# elif [ "$SELECT" = "gpg_signature_check" ]; then
-# gpg_edit
- else
- $MK_EDITOR ${SELECT}_${MK_PKGNAME}.mkbuild
- fi
- fi
- else
- SECTION_FLAG[$INDEX]=$FLAG
- fi
+ # 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
- done
-
+ fi
}
-function md5sum_edit {
+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
- # Edit md5sum
- local SELECT=0
- local FILE=$1
+if [ -f "$COMMON" ]; then
+ source $COMMON
+else
+ echo "error: file $COMMON found, check your $BASENAME installation"
+ mk_exit 0
+fi
- if ( grep '\[\[MD5SUM EXTENSION\]\]' $FILE &>/dev/null ); then
- SELECT=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --radiolist "Select one option" 0 0 0 "1" "$MK_SRC_NAME-$MK_VERSION.[[MD5SUM EXT]]" on "2" "$MK_SRCNAME.[[MD5SUM EXT]]" off "3" "MK5SUM CODE" off`
+# createpkg and mkbuild section
+SLACKBUILDS_DIR="`eval_parameter SLACKBUILDS_DIR /var/slackbuilds`"
+#-----------------------------
- case $SELECT in
- 1)
- MK_MD5SUM_EXT="md5sum"
- MK_MD5SUM_EXT=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --inputbox "Enter with md5sum extension:" 8 50 $MK_MD5SUM_EXT`
- edit_file "MD5SUM EXTENSION" "$MK_MD5SUM_EXT" $FILE
- ;;
- 2)
- MK_MD5SUM_EXT="md5"
- MK_MD5SUM_EXT=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --inputbox "Enter with md5sum extension:" 8 50 $MK_MD5SUM_EXT`
- eval "sed 's/^MD5SUM_FILE.*$/MD5SUM_FILE=\$SRC.$MK_MD5SUM_EXT/' $FILE > $AUX_TMP"
- cp $AUX_TMP $FILE
- ;;
- 3)
- MK_MD5SUM_CODE=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --inputbox "Enter with md5sum extension:" 8 50 $MK_MD5SUM_CODE`
- sed '1! d' $FILE > $AUX_TMP
- sed -n '2, /^fi/ p' $FILE | while read LINE; do echo "#$LINE" >> $AUX_TMP; done
- sed -n '/^fi/, $ { /^fi/ b; p; }' $FILE >> $AUX_TMP
- eval "sed 's/^MD5SUM_SRC.*/MD5SUM_SRC=\"$MK_MD5SUM_CODE\"/' $AUX_TMP > $FILE"
- ;;
- esac
- fi
+# 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
- $MK_EDITOR $FILE
+# Extension
+EXTENSION=`validate_parameter "$EXTENSION" "EXTENSION" "$STR_MOUNT"` || mkbuild_error $ERROR_CONSTRUCTION "EXTENSION"
-}
+# Build archteture
+ARCH=`validate_parameter "$ARCH" "ARCH" "i486"`
-function test_menu {
+# 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"
- # Test Menu
- local ANST=0
- local SECTION=0
- local EDITMENU=""
+# Package name
+STR_MOUNT=`echo $SRC_NAME | tr [A-Z_] [a-z\-]`
+PKG_NAME=`validate_parameter "$PKG_NAME" "PACKAGE NAME" "$STR_MOUNT"`
- # Create main-menu string
- for i in `seq 0 $MAXSECTION`; do
- if [ "${SECTION_FLAG[i]}" = "all" -o "${SECTION_FLAG[i]}" = "on" ]; then
- EDITMENU="$EDITMENU $i ${SECTION_NAME[i]}"
- fi
- done
+# Version
+STR_MOUNT=`echo $SOURCE_NAME | sed -r 's/(.*)-(.*)\.(.*\..*)$/\2/'`
+VERSION=`validate_parameter "$VERSION" "VERSION" $STR_MOUNT` || mkbuild_error $ERROR_CONSTRUCTION "VERSION"
- EDITMENU="all \"SlackBuild\" $EDITMENU"
-
- while [ "$ANST" != "1" ]; do
- SECTION=`eval "dialog --stdout --backtitle \"Make SlackBuild $PROG_VERSION [$MK_PKGNAME]\" --cancel-label \"Exit\" --title \"$MK_TITLE\" --menu \"Select section to test end\" 20 40 13 $EDITMENU"`
- ANST=$?
-
- if [ $ANST -ne 1 ]; then
- [ "$SECTION" = "all" ] && SECTION=$MAXSECTION
- mount_slackbuild_to $SECTION
-
- # FIXME: -> sintaxe check
- clear
- echo "---------------------------------------------------------"
- echo " --= SINTAX CHECK =--"
- sh -n $SLACKBUILD.test
- if [ $? -eq 0 ]; then
- echo " --= 0K =--"
- DEBUG=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" \
- --cancel-label "no debug" --title "$MK_TITLE" \
- --menu "Select debug level" 10 35 3 \
- "-x" "Simple debug" \
- "-xv" "More information" \
- "none" "No debug"`
-
- [ $? -ne 0 -o "$DEBUG" = "none" ] && DEBUG=""
-
- clear
- echo "---------------------------------------------------------"
- echo " --= START BUILDING =--"
- if [ "$USER" != "root" ]; then
- su -c "( sh $DEBUG $SLACKBUILD.test )"
- else
- ( sh $DEBUG $SLACKBUILD.test )
- fi
- echo "---------------------------------------------------------"
- echo " --= END =--"
-
- echo -n "Enter 1 to end test: "
- read ANST
- else
- echo "Script error..."
- read ANST
- fi
- fi
- done
+# 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"`
-function menu_dependency {
+# Decompressor program and test flag
+DECOMPRESSOR=`validate_parameter "$DECOMPRESSOR" "DECOMPRESSOR" ""` || decompress_find
- # Dependency Menu
- local ANSD=11
- while [ $ANSD -ne 0 ]; do
- ANSD=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" \
- --cancel-label "Main Menu" --title "$MK_TITLE" --menu "Main Menu:" 0 0 0 \
- "1" "Edit dependency list" \
- "2" "Test dependency list"`
+DECOMPRESSOR_TEST_FLAG=`validate_parameter "$DECOMPRESSOR_TEST_FLAG" "DECOMPRESSOR TEST FLAG" ""` || mkbuild_error $ERROR_CONSTRUCTION "DECOMPRESSOR TEST FLAG"
- [ $? -ne 0 ] && ANSD=0
+# Documentations list
+DOCFILES=`validate_parameter "$DOCFILES" "DOCUMENTATION FILES" "NEWS TODO README AUTHORS INSTALL ChangeLog MAINTAINERS COPYING readme.*"`
- case $ANSD in
- 1)
- edit_dependency
- ;;
- 2)
- test_dependency
- ;;
- esac
- done
+# ./configure option
+OPTIONS=`validate_parameter "$OPTIONS" "OTHER CONFIGURE ARGS" ""`
-}
+# PREFIX
+PREFIX=`validate_parameter "$PREFIX" "PREFIX" "/usr"`
-function edit_dependency {
+# Number of jobs
+NUMJOBS=`validate_parameter "$NUMJOBS" "NUMBER OF JOBS" ""`
- # Dependency list edit
- if [ ! -s $DEPENDENCY_LIST ]; then
- echo -e "# Dependency list to $MK_PKGNAME\n# \n# dependency [condition] [version]]\n" > $DEPENDENCY_LIST
- fi
+# Make slack-required file.
+SLACK_REQUIRED=`validate_parameter "$SLACK_REQUIRED" "SLACK REQUIRED" ""`
- $MK_EDITOR $DEPENDENCY_LIST
+# 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
-function test_dependency {
-
- # Check dependency and comment not found dependencies
- local DEP_LIST=""
-
- if [ -s $DEPENDENCY_LIST ]; then
- for i in `grep '^[^#]' $DEPENDENCY_LIST | awk '{print $1}' | sort | uniq`; do
- if [ `ls /var/log/packages/$i-[0-9]* 2>/dev/null` ]; then
- DEP_LIST="$DEP_LIST $i \"intalled\" off"
- else
- DEP_LIST="$DEP_LIST $i \"unintalled\" on"
- fi
- done
-
- DEP_SELECT=`eval "dialog --stdout --separate-output --backtitle \"Make SlackBuild $PROG_VERSION [$MK_PKGNAME]\" --title \"$MK_TITLE\" --checklist \"Select packages to remove from dependency list:\" 0 0 0 $DEP_LIST"`
- # 20 45 13
-
- for i in $DEP_SELECT; do
- eval "sed 's/$i$/#$i/' $DEPENDENCY_LIST > $AUX_TMP "
- eval "sed 's/$i /#$i /' $AUX_TMP > $DEPENDENCY_LIST"
- eval "sed 's/$i\t/#$i\t/' $DEPENDENCY_LIST > $AUX_TMP"
- cp $AUX_TMP $DEPENDENCY_LIST
- done
- fi
+# Change Strings from model
+start_build $SLACKBUILD_TEMP
-}
+# On/Off sections
+activate_sections
-#
-#--------------------------------------------------------------------
-# Start Program
-#--------------------------------------------------------------------
-#
-# Start variables
-LANG=en_US
-BASEDIR=`pwd`
-AUX_TMP=`mktemp -p /tmp/ aux_tmp.XXXXXX`
-SLACKDESC_TMP=`mktemp -p /tmp/ slackdesc_tmp.XXXXXX`
-SLACKDESC_LEN=77
-DEPENDENCY_LIST=`mktemp -p /tmp/ slack-required.XXXXXX`
-if [ -z $SB_MODEL ]; then
- if [ -e ~/.generic.mkSlackBuild ]; then
- SB_MODEL=~/.generic.mkSlackBuild
- elif [ -e /etc/simplepkg/generic.mkSlackBuild ]; then
- SB_MODEL=/etc/simplepkg/generic.mkSlackBuild
- else
- echo "SlackBuild model (generic.mkSlackBuild) not found"
- mk_exit 0
- fi
-fi
-[ $# -ne 0 ] && MKSLACKBUILD=${1//.*}.mkslackbuild
+# Change sections
+section_edit
-# Clear dialog
-dialog --clear
+# Remove off sections
+build_slackbuild
-# Load/create personal definitions
-if [ ! -e ~/.mkslackbuild ]; then
- ( cat << EOF > ~/.mkslackbuild
-#!/bin/bash
-# mkslackbuild definitions
-#
-MK_AUTHOR="[[AUTHOR NAME]]"
-MK_AUTHOR_INITIALS="[[AUTHOR INITIALS]]"
-MK_EDITOR=[[EDITOR]]
-MK_REPOS=[[REPOS DIR]]
-MK_LIMITRATE=[[LIMIT RATE]]
-MK_SOURCEDIR=[[SOURCE DIR]]
-MK_ARCH=[[DEFAULT ARCH]]
-#SB_MODEL="my_model"
-EOF
-)
-fi
-source ~/.mkslackbuild
-MK_SOURCEDIR=${MK_SOURCEDIR:=$BASEDIR}
-MK_ARCH=${MK_ARCH:="i486"}
-
-# Config Author
-if [ "$MK_AUTHOR" = "[[AUTHOR NAME]]" ]; then
- MK_TITLE=" Personal Config "
- edit_author
- MK_TITLE=""
-fi
+# Make slack-required file
+make_slack_required
-if [ ! -z $MKSLACKBUILD ]; then
- MK_TITLE=" Open mkSlackBuild "
- open_mkslackbuild
+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
-MK_TITLE=""
+# Others changes
+change_others_fields
-ANS0=11
-while [ $ANS0 -ne 0 ]; do
- if [ -z $MK_PKGNAME ]; then
- ANS0=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" \
- --cancel-label "Exit" --menu "Main Menu:" 0 0 0 \
- "1" "Create New SlackBuild" \
- "2" "Open mkSlackBuild" \
- "0" "Exit"`
-
- if [ $? -ne 0 ]; then
- ANS0=0
- fi
+# Clear temporary files
+clear_files
- case $ANS0 in
- 1)
- MK_TITLE=" Create SlackBuild "
- create_slackbuild
- [ $? -eq 100 ] && MK_PKGNAME=""
- ;;
- 2)
- MK_TITLE=" Open mkSlackBuild "
- open_mkslackbuild_dialog
- [ $? -eq 100 ] && MK_PKGNAME=""
- ;;
- *)
- echo "Exit..."
- ANS0=0
- ;;
- esac
- MK_TITLE=""
- else
- ANS0=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" \
- --cancel-label "Exit" --menu "Main Menu:" 0 0 0 \
- "1" "Edit SlackBuild sections" \
- "2" "Edit dependency list" \
- "3" "Test SlackBuild script" \
- "4" "View Doc-Files" \
- "5" "Save SlackBuild and mkslackbuild"`
-
- if [ $? -ne 0 ]; then
- ANS0=0
- fi
- case $ANS0 in
- 1) # Edit Sections
- MK_TITLE=" Edit Menu "
- edit_menu
- ;;
- 2) # Dependency Menu
- MK_TITLE=" Dependency Menu "
- menu_dependency
- ;;
- 3) # Test Script
- MK_TITLE=" Test Menu "
- test_menu
- ;;
- 4) # View Doc-Files
- MK_TITLE=" View Docs "
- view_docs
- ;;
- 5) # Save SlackBuild
- save_mkslackbuild
- mount_slackbuild
- ;;
- 0) # Exit
- ANS0=0
- ;;
- esac
- MK_TITLE=""
- fi
-done
-
-# Check changes
-if [ ! -z $MK_PKGNAME ]; then
- md5sum -c md5sum >/dev/null
- if [ $? -ne 0 ]; then
- MKSLACKBUILD=$BASEDIR/$MK_PKGNAME.mkslackbuild
- save_mkslackbuild
- mount_slackbuild
- fi
-fi
+[ $COMMIT -eq 1 ] && commit_slackbuild
-mk_exit 0
-# _________________________________END_______________________________