]> gitweb.fluxo.info Git - simplepkg.git/commitdiff
mkbuild: 0.9.17
authorrudson <rudson@04377dda-e619-0410-9926-eae83683ac58>
Tue, 10 Apr 2007 03:08:50 +0000 (03:08 +0000)
committerrudson <rudson@04377dda-e619-0410-9926-eae83683ac58>
Tue, 10 Apr 2007 03:08:50 +0000 (03:08 +0000)
git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@329 04377dda-e619-0410-9926-eae83683ac58

trunk/conf/generic.mkSlackBuild.new
trunk/install/doinst.sh
trunk/simplepkg.SlackBuild
trunk/src/mkbuild

index b42853a38ef8cd7284c78beb9555b0624a2fcd48..6b5473e5d470a925fda777524f7be5ff884c047a 100644 (file)
@@ -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
index f3af964c364f1e87ae847e144e12e1fe5467b93f..b2fe966686bec6c953d201d63f74f86a65f172a6 100644 (file)
@@ -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 )
index d56d2c5c9e6b89adf0201e6a5c81586bff95948f..c6a183eb9ed7e398263ee1ea51cb6a295eff5bd8 100755 (executable)
@@ -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
index 1ec1b6b46180d82b53ccc99a6d206369542947f9..dc3dceb2287872ca15cfb07b9e59d8f5a9a8f429 100755 (executable)
@@ -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