diff options
-rw-r--r-- | trunk/conf/generic.mkSlackBuild.new | 7 | ||||
-rw-r--r-- | trunk/install/doinst.sh | 1 | ||||
-rwxr-xr-x | trunk/simplepkg.SlackBuild | 5 | ||||
-rwxr-xr-x | trunk/src/mkbuild | 223 |
4 files changed, 196 insertions, 40 deletions
diff --git a/trunk/conf/generic.mkSlackBuild.new b/trunk/conf/generic.mkSlackBuild.new index b42853a..6b5473e 100644 --- a/trunk/conf/generic.mkSlackBuild.new +++ b/trunk/conf/generic.mkSlackBuild.new @@ -39,6 +39,7 @@ REPOS=${REPOS:=$TMP} PREFIX=${PREFIX:=[[PREFIX]]} PKG_SRC="$TMP/$SRC_NAME-$SRC_VERSION" CONF_OPTIONS=${CONF_OPTIONS:=[[OTHER CONFIGURE ARGS]]} +NUMJOBS=${NUMJOBS:="-j4"} </set_variables> <slkflags> all @@ -146,7 +147,7 @@ CFLAGS="$SLKCFLAGS" \ <make_package> all # Compile -make || exit $ERROR_MAKE +make $NUMJOBS || exit $ERROR_MAKE </make_package> <install_package> all @@ -194,8 +195,8 @@ fi <install_documentation> on # Install documentation DOCS="[[DOCUMENTATION FILES]]" -mkdir -p "$PKG/$PREFIX/doc/$PKG_NAME-$PKG_VERSION" || exit $ERROR_MKDIR -cp -a $DOCS "$PKG/$PREFIX/doc/$PKG_NAME-$PKG_VERSION" +mkdir -p "$PKG/usr/doc/$PKG_NAME-$PKG_VERSION" || exit $ERROR_MKDIR +cp -a $DOCS "$PKG/usr/doc/$PKG_NAME-$PKG_VERSION" </install_documentation> <slackdesc> on diff --git a/trunk/install/doinst.sh b/trunk/install/doinst.sh index f3af964..b2fe966 100644 --- a/trunk/install/doinst.sh +++ b/trunk/install/doinst.sh @@ -1,2 +1,3 @@ ( if [ ! -f "etc/simplepkg/simplepkg.conf" ]; then mv etc/simplepkg/simplepkg.conf.new etc/simplepkg/simplepkg.conf; fi ) ( if [ ! -f "etc/simplepkg/repos.conf" ]; then mv etc/simplepkg/repos.conf.new etc/simplepkg/repos.conf; fi ) +( if [ ! -f "etc/simplepkg/generic.mkslackbuild" ]; then mv etc/simplepkg/generic.mkslackbuild.new etc/simplepkg/simplepkg.conf; fi ) diff --git a/trunk/simplepkg.SlackBuild b/trunk/simplepkg.SlackBuild index d56d2c5..c6a183e 100755 --- a/trunk/simplepkg.SlackBuild +++ b/trunk/simplepkg.SlackBuild @@ -12,7 +12,7 @@ LIBEXEC="/usr/libexec/$PACKAGE" BINDIR="/usr/bin" BINARY_LIST="simplaret repos lspkg mkbuild" SBINDIR="/usr/sbin" -SBINARY_LIST="mkjail templatepkg jail-update jail-commit metapkg rebuildpkg createpkg" +SBINARY_LIST="exec-slackbuild mkjail templatepkg jail-update jail-commit metapkg rebuildpkg createpkg exec-slackbuild" LIB_LIST="common.sh" DOC_DIR="/usr/doc" DOC_LIST="COPYING TODO CHANGELOG README README.pt_BR README.simplaret README.simplaret.pt_BR" @@ -32,7 +32,7 @@ done mkdir -p $PACK_DIR/$BINDIR for binary in $BINARY_LIST; do - cp src/$binary $PACK_DIR/$BINDIR + cp src/$binary $PACK_DIR/$BINDIR/ chmod +x $PACK_DIR/$BINDIR/$binary done @@ -54,6 +54,7 @@ chmod +x $PACK_DIR/etc/$PACKAGE/defaults/templates/vserver-legacy/vserver-legacy cp conf/simplepkg.conf.new $PACK_DIR/etc/$PACKAGE cp conf/repos.conf.new $PACK_DIR/etc/$PACKAGE cp conf/generic.mkSlackBuild.new $PACK_DIR/etc/$PACKAGE +cp utils/exec-slackbuild $PACK_DIR/$SBINDIR/ if [ -f "$PACK_DIR/usr/sbin/jail-upgrade" ]; then cd $PACK_DIR/usr/sbin && ln -s jail-upgrade vserver-upgrade diff --git a/trunk/src/mkbuild b/trunk/src/mkbuild index 1ec1b6b..dc3dceb 100755 --- a/trunk/src/mkbuild +++ b/trunk/src/mkbuild @@ -1,19 +1,19 @@ #!/bin/bash -x # -# Script para gerar Slackbuild +# 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 +# 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.17 +PROG_VERSION=0.9.17 #-------------------------------------------------------------------- # Functions @@ -89,7 +89,7 @@ function mk_slackdesc() print_lines "slackdesc" $SB_MODEL | sed '1,/\]\]/ d' } -# Get label status from Slackbuild model +# Get label status from SlackBuild model function get_status() { [ $# -ne 2 ] && mk_exit 1 @@ -148,7 +148,7 @@ function download_url() { clear mkdir -p $MK_SOURCEDIR/$MK_PKGNAME 2>/dev/null - wget --limit-rate=$MK_LIMITRATE $MK_URL -P $MK_SOURCEDIR/$MK_PKGNAME/ + wget --continue --limit-rate=$MK_LIMITRATE $MK_URL -P $MK_SOURCEDIR/$MK_PKGNAME/ if [ $? -ne 0 ]; then echo "URL error" return 0 @@ -192,7 +192,21 @@ function edit_author() 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 - MK_ARCH=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --inputbox "Enter default architecture to Slackbuild:" 8 60 "i468"` + 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_SLACKBUILD_DIR=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --inputbox "Enter with binary repository directory:" 8 60 "$MK_SLACKBUILD_DIR"` + edit_file "SLACKBUILD DIR" "$MK_SLACKBUILD_DIR" ~/.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"` @@ -202,6 +216,7 @@ function edit_author() # Edit source URL function edit_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 } @@ -220,7 +235,7 @@ function edit_pkgname() { # Remove nome, versão e extensão do nome da fonte MK_SRC_NAME=`echo $MK_SRCNAME | sed -r 's/(.*)-(.*)\.(.*\..*)$/\1/'` - MK_PKGNAME=`echo $MK_SRC_NAME | tr [A-Z] [a-z]` + 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/'` @@ -266,8 +281,9 @@ function edit_configure() $MK_TMPSRC/configure --help > $CONFIG_HELP config_help - [ "$( cat $CONFIG_HELP | egrep '/usr/local')" != "" ] && MK_PREFIX=/usr || MK_PREFIX=/opt/kde - MK_OPTIONS=" " + #[ "$( cat $CONFIG_HELP | egrep '/usr/local')" != "" ] && MK_PREFIX=/usr || MK_PREFIX=/opt/kde + MK_PREFIX="/usr" + MK_OPTIONS="" local ANS0=1 while [ $ANS0 -eq 1 ]; do @@ -393,7 +409,11 @@ function start_build() change_strings "VERSION" $MK_VERSION change_strings "SOURCE EXTENSION" ${MK_EXTENSION#tar.} change_strings "DOWNLOAD FOLDER URL" "`dirname $MK_URL`" - change_strings "OTHER CONFIGURE ARGS" "$MK_OPTIONS" + 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" } @@ -411,6 +431,7 @@ function mount_slackbuild() echo "" >> $SLACKBUILD fi done + chmod +x $SLACKBUILD } # Mount SlackBuild to section $1 @@ -461,6 +482,7 @@ function make_file_sections() let INDEX-- MAXSECTION=$INDEX + md5sum *.mkbuild > md5sum } function get_source_dialog() @@ -555,7 +577,7 @@ function edit_md5sum() #-------------------------------------------------------------------- # Main functions #-------------------------------------------------------------------- -# Create new Slackbuild +# Create new SlackBuild function create_slackbuild() { # Config package URL @@ -605,8 +627,8 @@ function create_slackbuild() # Create files sections make_file_sections $SB_MODEL - # Slackbuild script name - SLACKBUILD=$BASEDIR/$MK_PKGNAME.Slackbuild + # SlackBuild script name + SLACKBUILD=$BASEDIR/$MK_PKGNAME.SlackBuild # mkSlackBuild script name # FIXME: make an MODELDIR??? @@ -641,7 +663,7 @@ function open_mkslackbuild() source $MKSLACKBUILD # SlackBuild scrit name - SLACKBUILD=$BASEDIR/$MK_PKGNAME.Slackbuild + SLACKBUILD=$BASEDIR/$MK_PKGNAME.SlackBuild # Create files sections make_file_sections $MKSLACKBUILD @@ -670,7 +692,7 @@ function open_mkslackbuild() unpkg_source } -# Save mkSlackbuild +# Save mkSlackBuild function save_mkslackbuild() { dialog --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --infobox "mkSlackBuild save in $MKSLACKBUILD" 5 30 @@ -850,9 +872,8 @@ function menu_dependency() 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" \ - "0" "Main Menu"` + "1" "Edit dependency list" \ + "2" "Test dependency list"` [ $? -ne 0 ] && ANSD=0 @@ -864,7 +885,6 @@ function menu_dependency() test_dependency ;; esac - done } @@ -904,13 +924,119 @@ function test_dependency() fi } +# Add/commit one SlackBuild +function commit_SlackBuild() +{ + # Mount SlackBuild + mount_slackbuild + MK_TITLE="Commit SlackBuild" + + # Find SlackBuild + SB_PATH=`find $MK_SLACKBUILD_DIR -iname $MK_PKGNAME` + + # Change to SlackBuild directory + cd $MK_SLACKBUILD_DIR + + # Check for new SlackBuild + if [ -z $SB_PATH ]; then + # New SlackBuild + AUX="" + while [ -z $AUX ]; do + dialog --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --infobox "lynx -dump http://gentoo-portage.com/Search?search=$MK_PKGNAME. Wait..." 0 0 + AUX=`lynx -dump http://gentoo-portage.com/Search?search=$MK_PKGNAME | sed -n '/Results:/,+1 { /Results:/ b ; p }' | head --lines=1 | tr -d " "` + # Default directory + if [ -z $AUX ]; then + dialog --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --yesno "Net search error. Try again?" 0 0 + if [ $? -ne 0 ]; then + AUX="/others/unclass" + SB_PATH=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --inputbox "Enter dir-name to SlackBuild from $MK_PKGNAME:" 8 60 "$AUX"` + fi + else + SB_PATH="`dirname $AUX | tr - /`/`basename $AUX`" + fi + done + # Make directory and add SlackBuild to svn + svn mkdir $SB_PATH + cp $BASEDIR/$MK_PKGNAME.SlackBuild $SB_PATH/ + svn add $SB_PATH/$MK_PKGNAME.SlackBuild + if [ -e $BASEDIR/slack-required ]; then + cp $BASEDIR/slack-required $SB_PATH/ + svn add $SB_PATH/slack-required + fi + else + echo "cp $BASEDIR/$MK_PKGNAME.SlackBuild $SB_PATH/" + if [ -e $BASEDIR/slack-required ]; then + cp $BASEDIR/slack-required $SB_PATH/ + fi + fi + + # Commit SlackBuild + MK_MSG=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" --title "$MK_TITLE" --inputbox "Enter message do commit command:" 8 60` + svn commit -m "$MK_PKGNAME: $MK_MSG" + + cd $BASEDIR + + echo -e "\nPress ENTER to continue." + read ANS1 +} + +# Compile SlackBuild and install +function compile_install() +{ + local ANS="" + # Mount SlackBuild + mount_slackbuild + + # Clean temporary file + echo " " > $AUX_TMP + + if [ "$USER" = "root" ]; then + # Root user + # Compile pid + PID=`exec-slackbuild $SLACKBUILD $AUX_TMP` + + # Tail messages + tail -s .1 --pid=$PID -f $AUX_TMP + + # Package name + PACKAGE=`tail -10 $AUX_TMP | grep "^Moving $MK_PKGNAME-[0-9].*\.\.\.$" | awk '{ print $2 }' | grep "$MK_PKGNAME-.*\.tgz$"` + + # Install package + if [ ! -z $PACKAGE ]; then + installpkg $MK_REPOS/$PACKAGE + else + echo -e "\nBuild error!" + fi + else + # Commum users + # Compile pid + PID=`su -c "exec-slackbuild $SLACKBUILD $AUX_TMP"` + + # Tail messages + tail -s .1 --pid=$PID -f $AUX_TMP + + # Package name + PACKAGE=`tail -10 $AUX_TMP | grep "^Moving $MK_PKGNAME-[0-9].*\.\.\.$" | awk '{ print $2 }' | grep "$MK_PKGNAME-.*\.tgz$"` + + # Install package + if [ ! -z $PACKAGE ]; then + su -c "installpkg $MK_REPOS/$PACKAGE" + else + echo -e "\nBuild error!" + fi + fi + + echo -e "\nPress ENTER to continue." + read ANS +} + # #-------------------------------------------------------------------- # Start Program #-------------------------------------------------------------------- # # Start variables -LANG=us +LANG=en_US BASEDIR=`pwd` AUX_TMP=`mktemp -p /tmp/ aux_tmp.XXXXXX` SLACKDESC_TMP=`mktemp -p /tmp/ slackdesc_tmp.XXXXXX` @@ -926,7 +1052,7 @@ if [ -z $SB_MODEL ]; then mk_exit 0 fi fi -[ $# -ne 0 ] && MKSLACKBUILD=$1 +[ $# -ne 0 ] && MKSLACKBUILD=${1//.*}.mkslackbuild # Clear dialog dialog --clear @@ -940,9 +1066,11 @@ if [ ! -e ~/.mkslackbuild ]; then 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]] +MK_SLACKBUILD_DIR=[[SLACKBUILD DIR]] #SB_MODEL="my_model" EOF ) @@ -998,34 +1126,55 @@ while [ $ANS0 -ne 0 ]; do else ANS0=`dialog --stdout --backtitle "Make SlackBuild $PROG_VERSION [$MK_PKGNAME]" \ --cancel-label "Exit" --menu "Main Menu:" 0 0 0 \ - "1" "Edit Sections" \ - "2" "Dependency Menu" \ - "3" "Test Script" \ + "1" "Edit SlackBuild sections" \ + "2" "Edit dependency list" \ + "3" "Test SlackBuild script" \ "4" "View Doc-Files" \ - "0" "Exit and Save..."` + "5" "Save SlackBuild and mkslackbuild" \ + "6" "Compile/install package" \ + "7" "Remove package" \ + "8" "Commit SlackBuild to Sarava"` if [ $? -ne 0 ]; then ANS0=0 fi case $ANS0 in - 1) + 1) # Edit Sections MK_TITLE=" Edit Menu " edit_menu ;; - 2) + 2) # Dependency Menu MK_TITLE=" Dependency Menu " menu_dependency ;; - 3) + 3) # Test Script MK_TITLE=" Test Menu " test_menu ;; - 4) + 4) # View Doc-Files MK_TITLE=" View Docs " view_docs ;; - *) - echo "Exit..." + 5) # Save SlackBuild + save_mkslackbuild + mount_slackbuild + ;; + 6) # Compile/install package + compile_install + ;; + 7) # Remove package + if [ "$USER" = "root" ]; then + removepkg $MK_PKGNAME + else + su -c "( removepkg $MK_PKGNAME )" + fi + echo -e "\nPress ENTER to continue." + read ANS1 + ;; + 8) # Commit SlackBuild to Sarava + commit_SlackBuild + ;; + 0) # Exit ANS0=0 ;; esac @@ -1033,10 +1182,14 @@ while [ $ANS0 -ne 0 ]; do fi done +# Check changes if [ ! -z $MK_PKGNAME ]; then - MKSLACKBUILD=$BASEDIR/$MK_PKGNAME.mkslackbuild - save_mkslackbuild - mount_slackbuild + md5sum -c md5sum + if [ $? -ne 0 ]; then + MKSLACKBUILD=$BASEDIR/$MK_PKGNAME.mkslackbuild + save_mkslackbuild + mount_slackbuild + fi fi mk_exit 0 |