]> gitweb.fluxo.info Git - simplepkg.git/commitdiff
added mkslackbuild on utils/
authorrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>
Tue, 6 Feb 2007 20:45:56 +0000 (20:45 +0000)
committerrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>
Tue, 6 Feb 2007 20:45:56 +0000 (20:45 +0000)
git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@155 04377dda-e619-0410-9926-eae83683ac58

utils/mkslackbuild [new file with mode: 0755]

diff --git a/utils/mkslackbuild b/utils/mkslackbuild
new file mode 100755 (executable)
index 0000000..6a28520
--- /dev/null
@@ -0,0 +1,600 @@
+#!/bin/bash -x
+#
+# 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.0
+#
+#--------------------------------------------------------------------
+# Functions
+#--------------------------------------------------------------------
+# Show ./configure --help
+function config_help()
+{
+    dialog --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" --title " Check ./configure --help " --textbox $CONFIG_HELP 20 75
+}
+
+# Exit function
+function mk_exit()
+{
+    clean_all
+    exit $1
+}
+
+# Clear all temp files
+function clean_all()
+{
+    rm $AUX_TMP 2>/dev/null
+    rm $SLACKDESC_TMP 2>/dev/null
+    if [ ! -z $MK_PKGNAME ]; then
+        rm $BASEDIR/*_$MK_PKGNAME.mkbuild 2>/dev/null
+        [ -e /tmp/$MK_PKGNAME ] && rm -rf /tmp/$MK_PKGNAME
+        [ ! -z $CONFIG_HELP ] && rm $CONFIG_HELP 2>/dev/null
+    fi
+}
+
+# Print from file $2, the lines betwen <$1> and </$1> lines
+function print_lines()
+{
+    [ $# -ne 2 ] && mk_exit 1
+    eval "sed -n '/<$1>/,/<\/$1>/ { /<$1>/ b; /<\/$1>/ b; p; }' $2"
+}
+
+# Print from file $2, the lines betwen <$1> and $2 lines
+function print_lines_to()
+{
+    [ $# -ne 3 ] && mk_exit 1
+    eval "sed -n '/<$1>/,/$2/ { /<$1>/ b; /$2/ b; p; }' $3"
+}
+
+# Make slack-desc file
+function mk_slackdesc()
+{
+    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"
+    done
+    print_lines "slackdesc" $SB_MODEL | sed '1,/\]\]/ d'
+}
+
+# Get label status from Slackbuild model
+function get_status()
+{
+    [ $# -ne 2 ] && mk_exit 1
+    eval "sed -n '/<$1>/ p' $2 | sed 's/.*> \([a-z]\+\)/\1/'"
+}
+
+# Get status from edited SlackBuild
+# input: $1 -> section name
+# output: section status and section number
+function mk_status()
+{
+    for i in `seq 0 $MAXSECTION`;do
+        if [ "${SECTION_NAME[i]}" = "$1" ]; then
+            echo "${SECTION_FLAG[i]} $i"
+            return 0
+        fi
+    done
+    return 1
+}
+
+# Edit file $3, by change string [[$1]] to $2
+function edit_file()
+{
+    local STR_OLD
+    local STR_NEW
+
+    [ $# -ne 3 ] && mk_exit 1
+    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
+}
+
+# Unpackage source
+function unpkg_source()
+{
+    dialog --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" \
+        --infobox "Uncompress source in /tmp/$MK_PKGNAME. Wait" 3 45
+    [ $? -ne 0 ] && mk_exit 0
+    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/`"
+}
+
+# Download source
+function download_url()
+{
+    clear
+    wget --limit-rate=$MK_LIMITRATE $MK_URL -P $MK_SOURCEDIR/
+    if [ $? -ne 0 ]; then
+        echo "URL error"
+        return 0
+    fi
+    MK_SOURCE=$MK_SOURCEDIR/$MK_SRCNAME
+}
+
+# Select source file
+function select_source()
+{
+    MK_SOURCE=$BASEDIR
+    while [ ! -f $MK_SOURCE ]; do
+        MK_SOURCE=`dialog --stdout --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" \
+            --title " Select source file name (use spaces to select): " --fselect "$MK_SOURCE" 10 70`
+        [ $? -ne 0 ] && mk_exit
+        if [ ! -f $MK_SOURCE ]; then
+            MK_SOURCE="$MK_SOURCE/"
+        fi
+    done
+
+    MK_SRCNAME=`basename $MK_SOURCE`
+    MK_SOURCEDIR=`dirname $MK_SOURCE`
+}
+
+#--------------------------------------------------------------------
+# Edit functions
+#--------------------------------------------------------------------
+# Edit authot, Initials and editor
+function edit_author()
+{
+    MK_AUTHOR=`dialog --stdout --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" --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 "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" --inputbox "Enter with author assignature:" 8 60 "$MK_AUTHOR_INITIALS"`
+    edit_file "AUTHOR INITIALS" "$MK_AUTHOR_INITIALS" ~/.mkslackbuild
+    MK_EDITOR=`dialog --stdout --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" --inputbox "Enter with editor command:" 8 60 "pico"`
+    edit_file "EDITOR" "$MK_EDITOR" ~/.mkslackbuild
+}
+
+# Edit source URL
+function edit_url()
+{
+    MK_URL=`dialog --stdout --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" --inputbox "Enter with complite URL from source:" 8 60 "$MK_URL"`
+    [ $? -ne 0 ] && mk_exit 0
+}
+
+# Edit source name
+function edit_source_name()
+{
+    # Carrega nome do arquivo
+    MK_SRCNAME=`basename $MK_URL`
+    MK_SRCNAME=`dialog --stdout --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" --inputbox "Enter with source file name:" 8 60 "$MK_SRCNAME"`
+    [ $? -ne 0 ] && mk_exit 0
+}
+
+# Edit MK_PKGNAME, MK_VERSION and MK_EXTENSION
+function edit_pkgname()
+{
+    # Remove nome, versão e extensão do nome da fonte
+    MK_PKGNAME=`echo $MK_SRCNAME | sed -r 's/(.*)-(.*)\.(.*\..*)$/\1/'  | tr [A-Z] [a-z]`
+    MK_VERSION=`echo $MK_SRCNAME | sed -r 's/(.*)-(.*)\.(.*\..*)$/\2/'`
+    MK_EXTENSION=`echo $MK_SRCNAME | sed -r 's/(.*)-(.*)\.(.*\..*)$/\3/'`
+
+    # Configura nome, versão e extensão do pacote
+    ANS=`dialog --stdout --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" \
+        --form "Check information below:" 12 70 5 \
+        "Package name:" 1 1 "$MK_PKGNAME"  1 15 30 60 \
+        "Version:"      3 1 "$MK_VERSION"   3 15 30 100 \
+        "Extension:"    5 1 "$MK_EXTENSION" 5 15 30 8`
+    [ $? -ne 0 ] && mk_exit 0
+
+    MK_PKGNAME=`echo $ANS | awk '{print $1}'`
+    MK_VERSION=`echo $ANS | awk '{print $2}'`
+    MK_EXTENSION=`echo $ANS | awk '{print $3}'`
+}
+
+# Edit configure options
+function edit_configure()
+{
+    CONFIG_HELP=`mktemp -p /tmp/ config_$MK_PKGNAME.XXXXXX`
+
+    $MK_TMPSRC/configure --help > $CONFIG_HELP
+    config_help
+    [ "$( cat $CONFIG_HELP  | egrep '/usr/local')" != "" ] && MK_PREFIX=/usr || MK_PREFIX=/opt/kde
+    MK_OPTIONS=""
+    local ANS0=1
+
+    while [ $ANS0 -eq 1 ]; do
+        local ANS="0"
+        while [ $ANS -ne 4 ]; do
+            ANS=`dialog --stdout --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" \
+                --menu "Select one option" 0 0 0 \
+                1 "View ./configure help" \
+                2 "PREFIX=$MK_PREFIX" \
+                3 "OPTIONS=$MK_OPTIONS" \
+                4 "Continue"`
+            [ $? -ne 0 ] && mk_exit
+
+            case $ANS in
+                '1')
+                    config_help
+                ;;
+                '2')
+                    MK_PREFIX=`dialog --stdout --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" --inputbox "Enter with prefix for install $MK_PKGNAME" 8 60 "$MK_PREFIX"`
+                ;;
+                '3')
+                    MK_OPTIONS=`dialog --stdout --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" --inputbox "Enter with configure options for compile $MK_PKGNAME" 8 60 "$MK_OPTIONS"`
+                ;;
+                '4')
+                    echo "Continue..."
+                ;;
+                *)
+                    ANS=4
+                ;;
+            esac
+        done
+
+        # Configure
+        dialog --backtitle "mkSlackBuild $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
+        fi
+
+        dialog --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" --title " Configure line is ok? " --yesno "./configure --prefix=$MK_PREFIX $MK_OPTIONS" 6 70
+
+        ANS0=$?
+    done
+}
+
+# Edit documentations files
+function edit_docfiles()
+{
+    [ -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 | grep $i`" != "" ]; then
+                DOCMENU="$DOCMENU $i \"\" on"
+            else
+                DOCMENU="$DOCMENU $i \"\" off"
+            fi
+        done
+        SELECTDOCS=`eval "dialog --stdout --separate-output --backtitle \"mkSlackBuild $PROG_VERSION [$MK_PKGNAME]\" --title \" Documentations files \" --checklist \"Select documentation files below:\" 20 45 13 $DOCMENU"`
+    fi
+
+    MK_DOCFILES="$SELECTDOCS"
+}
+
+#--------------------------------------------------------------------
+# Mount files
+#--------------------------------------------------------------------
+# Change string $1 to $2 in all files in the current directory
+function change_strings()
+{
+    # echo "$1 -> $2"
+    [ $# -ne 2 ] && mk_exit 1
+    eval "grep -l \"\[\[$1\]\]\" *" | while read FILE; do
+        edit_file "$1" "$2" $FILE
+    done
+}
+
+# Build initial sections
+function start_build()
+{
+    change_strings "SOURCE NAME" "${MK_SRCNAME//.$MK_EXTENSION}"
+    change_strings "PROGRAM NAME" "$MK_PKGNAME"
+    change_strings "PACKAGE NAME" "$MK_PKGNAME"
+    change_strings "PROGRAM URL" "$MK_URL"
+    change_strings "AUTHOR" "$MK_AUTHOR"
+    change_strings "AUTHOR INITIALS" $MK_AUTHOR_INITIALS
+    change_strings "VERSION" $MK_VERSION
+    change_strings "SOURCE EXTENSION" $MK_EXTENSION
+    change_strings "DOWNLOAD FOLDER URL" "`dirname $MK_URL`"
+    change_strings "OTHER CONFIGURE ARGS" "$MK_OPTIONS"
+    change_strings "DOCUMENTATION FILES" "$MK_DOCFILES"
+    change_strings "PREFIX" "$MK_PREFIX"
+}
+
+# Mount final SlackBuild
+function mount_slackbuild()
+{
+    dialog --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" --infobox "SlackBuild save..." 5 30
+
+    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
+    done
+}
+
+# Make files section
+function make_file_sections()
+{
+    THIS_MODEL=$1
+
+    # Create SlackBuilds-sections files
+    rm *_$MK_PKGNAME.mkbuild 2>/dev/null
+
+    # Make files 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
+
+        STRING=$ITEM
+        # Save section status flag
+        SECTION_FLAG[INDEX]=`get_status "$STRING" $THIS_MODEL`
+
+        # Create sections files
+        print_lines "$STRING" $THIS_MODEL  > $SECTION_FILE
+        let INDEX++
+    done < <( cat $THIS_MODEL | grep '^<[a-z_]\+>' | sed 's/<\(.*\)>.*$/\1/' )
+
+    let INDEX--
+    MAXSECTION=$INDEX
+}
+
+#--------------------------------------------------------------------
+# Main functions
+#--------------------------------------------------------------------
+# Create new Slackbuild
+function create_slackbuild()
+{
+    # Config package URL
+    edit_url
+
+    # Source Name
+    edit_source_name
+
+    # Package name, version and extension
+    edit_pkgname
+
+    # Get source file
+    dialog --stdout --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" \
+            --yesno " Download $MK_SRCNAME? " 5 50
+    if [ $? -eq 0 ]; then
+        download_url
+    else
+        select_source
+    fi
+
+    # Uncompress source
+    unpkg_source
+
+    # Configure compiler options if exist .configure
+    if [ -e $MK_TMPSRC/configure ]; then
+        edit_configure
+    fi
+
+    # Edit documentation list
+    edit_docfiles
+
+    # Create files sections
+    make_file_sections $SB_MODEL
+
+    # Slackbuild script name
+    SLACKBUILD=$MK_SLACKBUILDDIR/$MK_PKGNAME.Slackbuild
+
+    mk_slackdesc > slackdesc_$MK_PKGNAME.mkbuild
+
+    # Edit builds sections
+    start_build
+
+    # Main-Menu
+    edit_menu
+}
+
+# Open mkslackbuild
+function open_mkslackbuild()
+{
+    MKFILE=`dialog --stdout --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" \
+            --title " Select source file name (use spaces to select): " \
+            --fselect "$BASEDIR/" 10 70`
+    [ $? -ne 0 ] && mk_exit 1
+
+    if [ -f $MKFILE ]; then
+        # Start defaults variables
+        source $MKFILE
+
+        # SlackBuild scrit name
+        SLACKBUILD=$MK_SLACKBUILDDIR/$MK_PKGNAME.Slackbuild
+
+        # Create files sections
+        make_file_sections $MKFILE
+
+        # Main-Menu
+        edit_menu
+    else
+        dialog --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" \
+            --msgbox "$MKFILE most be a file" 0 0
+    fi
+}
+
+# Save mkSlackbuild
+function save_mkslackbuild()
+{
+    dialog --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" --infobox "mkSlackBuild save..." 5 30
+
+    MKSLACKBUILD=$BASEDIR/$MK_PKGNAME.mkslackbuild
+
+    rm $MKSLACKBUILD 2>/dev/null
+    echo '#!/bin/bash' > $MKSLACKBUILD
+    echo -e "# mkSlackBuild version $MK_VERSION\n" >> $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_DOCFILES=\"$MK_DOCFILES\"" >> $MKSLACKBUILD
+    echo "MK_OPTIONS=\"$MK_OPTIONS\"" >> $MKSLACKBUILD
+    echo "MK_PREFIX=\"$MK_PREFIX\"" >> $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]}> ${SECTION_FLAG[i]}" >> $MKSLACKBUILD
+        echo "" >> $MKSLACKBUILD
+    done
+}
+
+# Edit Menu
+function edit_menu()
+{
+    ANSE=0
+    while [ $ANSE -ne 1 ]; do
+        # Create main-menu string
+        EDITMENU=""
+        for i in `seq 0 $MAXSECTION`; do
+            #echo "${SECTION_NAME[i]} ${SECTION_FLAG[i]} ${SECTION_FILE[i]}"
+            EDITMENU="$EDITMENU ${SECTION_NAME[i]} ${SECTION_FLAG[i]}"
+        done
+
+       SELECT=`eval "dialog --stdout --backtitle \"mkSlackBuild $PROG_VERSION [$MK_PKGNAME]\" --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 "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" --radiolist "Change status from $SELECT" 0 0 0 "on" "enable section" "on" "off" "desable section" "off"`
+            elif [ "$FLAG" = "off" ]; then
+                SECTION_FLAG[$INDEX]=`dialog --stdout --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" --radiolist "Change status from $SELECT" 0 0 0 "on" "enable section" "off" "off" "desable section" "on"`
+            fi
+            if [ "${SECTION_FLAG[$INDEX]}" = "on" -o "${SECTION_FLAG[$INDEX]}" = "all" ]; then
+                $MK_EDITOR ${SELECT}_${MK_PKGNAME}.mkbuild
+            fi
+        fi
+    done
+}
+
+
+#
+#--------------------------------------------------------------------
+#                        Start Program
+#--------------------------------------------------------------------
+#
+set +x
+PROG_VERSION=0.9.0
+LANG=us
+BASEDIR=`pwd`
+AUX_TMP=`mktemp -p  /tmp/ aux_tmp.XXXXXX`
+SLACKDESC_TMP=`mktemp -p  /tmp/ slackdesc_tmp.XXXXXX`
+SLACKDESC_LEN=77
+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
+
+# Clear dialog
+dialog --clear
+
+# 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_LIMITRATE="100k"
+MK_SOURCEDIR=\`pwd\`
+#MK_URL="ftp://localhost"
+#MK_SLACKBUILDDIR=/slackbuild-dir
+EOF
+)
+fi
+source ~/.mkslackbuild
+MK_SOURCEDIR=${MK_SOURCEDIR:=$BASEDIR}
+MK_SLACKBUILDDIR=${MK_SLACKBUILDDIR:=$BASEDIR}
+
+# Config Author
+if [ "$MK_AUTHOR" = "[[AUTHOR NAME]]" ]; then
+    edit_author
+fi
+
+ANS0=7
+while [ $ANS0 -ne 0 ]; do
+    if [ -z $MK_PKGNAME ]; then
+        ANS0=`dialog --stdout --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" \
+        --menu "Main Menu:" 0 0 0 \
+        "1" "Create New SlackBuild" \
+        "2" "Open edited SlackBuild" \
+        "0" "Exit"`
+        EXIT_STATUS=$?
+    else
+        ANS0=`dialog --stdout --backtitle "mkSlackBuild $PROG_VERSION [$MK_PKGNAME]" \
+        --menu "Main Menu:" 0 0 0 \
+        "1" "Create New SlackBuild" \
+        "2" "Open MkSlackBuild" \
+        "3" "Save MkSlackBuild" \
+        "4" "Make Slackbuild" \
+        "5" "Edit setions menu" \
+        "0" "Exit"`
+        EXIT_STATUS=$?
+    fi
+
+    if [ $EXIT_STATUS -ne 0 ]; then
+        mk_exit $EXIT_STATUS
+    fi
+
+    case $ANS0 in
+        1)
+            create_slackbuild
+            ;;
+        2)
+            open_mkslackbuild
+            ;;
+        3)
+            save_mkslackbuild
+            ;;
+        4)
+            mount_slackbuild
+            ;;
+        5)
+            edit_menu
+            ;;
+        *)
+            true
+            ;;
+    esac
+done
+
+if [ ! -z $MK_PKGNAME ]; then
+    MKSLACKBUILD=$BASEDIR/$MK_PKGNAME.mkslackbuild
+    if [ ! -e $MKSLACKBUILD ]; then
+        save_mkslackbuild
+    fi
+fi
+
+mk_exit 0
+# _________________________________END_______________________________