aboutsummaryrefslogtreecommitdiff
path: root/trunk/src
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src')
-rw-r--r--trunk/src/createpkg1096
-rwxr-xr-xtrunk/src/jail-commit175
-rwxr-xr-xtrunk/src/jail-update62
-rwxr-xr-xtrunk/src/lspkg148
-rwxr-xr-xtrunk/src/mkbuild1904
-rwxr-xr-xtrunk/src/mkjail115
-rw-r--r--trunk/src/mkpatch145
-rwxr-xr-xtrunk/src/mkpatch.new145
-rwxr-xr-xtrunk/src/rebuildpkg86
-rwxr-xr-xtrunk/src/simplaret1194
-rwxr-xr-xtrunk/src/simpletrack66
-rwxr-xr-xtrunk/src/templatepkg987
12 files changed, 0 insertions, 6123 deletions
diff --git a/trunk/src/createpkg b/trunk/src/createpkg
deleted file mode 100644
index 10daf0b..0000000
--- a/trunk/src/createpkg
+++ /dev/null
@@ -1,1096 +0,0 @@
-#!/bin/bash
-#
-# createpkg: package builder using http://slack.sarava.org/slackbuilds scripts
-# feedback: rhatto at riseup.net / rudsonalves at yahoo.com.br
-#
-# createpkg is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or any later version.
-#
-# createpkg is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place - Suite 330, Boston, MA 02111-1307, USA
-#
-# Version $Rev$ - $Author$
-#
-
-#---------------------------------------------------
-# Createpkg functions
-#---------------------------------------------------
-
-function usage {
-
- # Help message
- echo -e "${red}NAME${normal}
- createpkg - create Slackware packages from SlackBuilds in Sarava repository
-
-${red}SYNOPSIS
- createpkg${normal} [${green}OPTIONS${normal}] [${green}program1${normal} ... ${green}programN${normal}]
-
-${red}DESCRIPTION${normal}
- [${green}program${normal}] name to build/search (some options support more than one program)
-
- Input ${green}OPTIONS${normal}:
- ${red}-i${normal}, ${red}--install${normal} ${green}<program1>${normal}
- create the package ${green}<program>${normal} and install
- ${red}-a${normal}, ${red}--all${normal}
- create all packages and install
- ${red}-np${normal}, ${red}--no-deps${normal}
- does not solve dependences
- ${red}-d${normal}, ${red}--debug${normal} ${green}<program>${normal}
- enable SlackBuild debug (sh -x ...)
- ${red}-s${normal}, ${red}--search${normal} ${green}<program${normal}>
- search for a ${green}<program>${normal}
- ${red}-f${normal}, ${red}--info${normal} ${green}<program>${normal}
- show description and dependences of the program
- ${red}-l${normal}, ${red}--list${normal}
- list all the SlackBuilds
- ${red}--list-packages ${green}[repository]${normal}
- list all packages in binary repositories
- ${red}--sign${green}<package_name>${normal}
- sign a binary package
- ${red}--remove${green}<package_name>${normal}
- remove a binary package
- ${red}--sync${normal}
- synchronize SlackBuilds repository
- ${red}--update${normal}
- synchronize packages repository
- ${red}--commit${normal} ${green}["message"]${normal}
- commit changes to binary packages' repository
- ${red}--status${normal}
- check binary packages' svn repository status
- ${red}--import${normal}
- import packages into a svn repository
- ${red}--checkout${normal}
- checkout binary packages from a svn repository
- ${red}--update-keyring${normal}
- update GPG-KEY from binary repositories
- ${red}-h${normal}, ${red}--help${normal}
- show this help
-
-${red}EXAMPLES${normal}
- ${red}createpkg -i scilab${normal}
- build and install scilab package
- ${red}createpkg -s at*${normal}
- search for all at* SlackBuilds scripts (at-spi, atk, ...)
- ${red}createpkg --info pyrex${normal}
- show pyrex description and dependences
- $SYNC=yes {red}createpkg -i scilab${normal}
- sync repository first, then build and install scilab package
-
-${red}AUTHOR${normal}
- Written by ${blue}Rudson R. Alves${normal} and ${blue}Silvio Rhatto${normal}
-
-${red}AVAILABILITY${normal}
- by svn: ${yellow}svn checkout http://slack.sarava.org/simplepkg${normal}
-
-${red}REPORTING BUGS${normal}
- Report bugs to <${blue}rudsonalves[at]rra.etc.br${normal}>
-
-${red}COPYRIGHT${normal}
- 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
- <${yellow}http://www.gnu.org/licenses/gpl.html${normal}>. There is NO WARRANTY,
- to the extent permitted by law."
-}
-
-function build_all_slackbuilds {
-
- # Build all SlackBuilds in repository
- createpkg --sync
-
- cd $SLACKBUILDS_DIR
- LIST=`find . -name *.SlackBuild | sed 's/.*\/\(.*\)\.SlackBuild$/\1/' | sort | uniq`
- for i in $LIST; do
- [ ! lspkg $i >/dev/null ] && createpkg -i $i
- done
-
-}
-
-function check_config {
-
- # Check the configuration
- TMP=${TMP:=/tmp}
-
- if [ ! -z "$REPOS" ]; then
- PACKAGES_DIR="$REPOS"
- else
- REPOS=$PACKAGES_DIR
- fi
-
- # Nested folders, if configured
- if [ ! -z "$PACKAGES_REPOS_STYLE" ]; then
- PACKAGES_REPOS_STYLE=$(echo $PACKAGES_REPOS_STYLE | sed -e "s/none//g" -e "s/distro/`default_distro`/g" \
- -e "s/arch/`default_arch`/g" -e "s/version/`default_version`/g")
- PACKAGES_DIR="$PACKAGES_DIR/$PACKAGES_REPOS_STYLE"
- REPOS="$REPOS/$PACKAGES_REPOS_STYLE"
- fi
-
- # Create $TMP and $REPOS if need
- [ ! -e $TMP ] && mkdir -p $TMP
- [ ! -e $PACKAGES_DIR ] && create_repo_folder $PACKAGES_DIR
- #
- SLACKBUILDS_DIR=${SLACKBUILDS_DIR:=/var/simplepkg/slackbuilds}
- #
- SYNC=${SYNC:=$no}
- SYNC=`convert_boolean $SYNC`
- BASEDIR="`dirname $SLACKBUILDS_DIR`"
-
-}
-
-function solve_dep {
-
- # Solve dependency
- [ $# -ne 3 ] && handle_error $ERROR_PAR_NUMBER
- local PACK="$1"
- local COND="$2"
- local VER="$3"
-
- # Check package in local system
- PACK="`echo $PACK | sed -e 's/\+/\\\+/'`"
- INSTALLED="`check_installed $PACK`"
- CHECK=$?
-
- # TODO: check dependency versions
- if [ -z "$INSTALLED" ]; then
- if [ $CHECK -ne 0 ]; then
- # Check package in SlackBuilds tree
- eecho $messag "$BASENAME: processing $PACKAGE dependency $PACK"
- SYNC=$no CREATEPKG_CHILD=$CREATEPKG_CHILD createpkg --install $PACK
-
- # Check if the package was built and installed
- EXIT_CODE=$?
-
- if [ $EXIT_CODE -eq $ERROR_CREATEPKG_SLACKBUILD_NOTFOUND ]; then
- # Try to use simplaret
- ARCH=$CREATEPKG_ARCH simplaret --update
- ARCH=$CREATEPKG_ARCH simplaret --install $PACK
- [ $? -ne 0 ] && handle_error $ERROR_CREATEPKG_SLACKBUILD_NOTFOUND $PACK
- elif [ $EXIT_CODE -ne 0 ]; then
- handle_error $EXIT_CODE $PACK
- fi
-
- fi
- fi
-
-}
-
-function find_slackbuild {
-
- # Find SlackBuild script in the repository
- [ $# -ne 1 ] && handle_error $ERROR_PAR_NUMBER
- OUTPUT=`find $SLACKBUILDS_DIR -iname $1.SlackBuild`
- [ "$OUTPUT" != "" ] && EXIT_CODE=0 || EXIT_CODE=1
- echo $OUTPUT
-
-}
-
-function info_builds {
-
- # Show packages info
- if [ "$PKG_PATH" != "" ]; then
- for i in $PKG_PATH; do
- PACKAGE=`basename $i .SlackBuild`
- NAME_UP=`echo $PACKAGE | tr [a-z] [A-Z]`
- ID_VERSION=`grep '^SRC_VERSION' $i | cut -f2- -d":" | cut -f2 -d= | cut -f1 -d}`
- eecho $commun "$NAME_UP: "
- eecho Version: "$ID_VERSION"
- eecho
-
- PKG_DIR=`dirname $i`
- if [ -e $PKG_DIR/slack-desc ]; then
- eval "cat $PKG_DIR/slack-desc | grep '^$PACKAGE:' | cut -f2- -d:"
- eecho $normal
- else
- eval "cat $i | grep '^$PACKAGE:' | cut -f2- -d:"
- eecho $normal
- fi
-
- if [ -e $PKG_DIR/slack-required ]; then
- eecho $commun "slack-required"
- cat $PKG_DIR/slack-required | sed 's/^/ /'
- fi
- done
- fi
-
-}
-
-function list_slackbuilds {
-
- # list all available slackbuilds
- # usage: list_slackbuilds
-
- list_builds $SLACKBUILDS_DIR SlackBuild
-
-}
-
-function load_parameters {
-
- # Load Createpkg parameters
- PACKAGES_DIR="`eval_parameter PACKAGES_DIR /var/simplepkg/repos`"
- PACKAGES_SVN="`eval_parameter PACKAGES_SVN http://slack.sarava.org/packages`"
- PACKAGES_REPOS_STYLE="`eval_parameter PACKAGES_REPOS_STYLE none`"
- NOARCH_DIR="`eval_parameter PACKAGES_DIR /var/simplepkg/repos`/noarch"
- SOURCE_DIR="`eval_parameter SOURCE_DIR /var/simplepkg/sources`"
- SLACKBUILDS_DIR="`eval_parameter SLACKBUILDS_DIR /var/simplepkg/slackbuilds`"
- SLACKBUILDS_SVN="`eval_parameter SLACKBUILDS_SVN http://slack.sarava.org/slackbuilds`"
- SVN_USER="`eval_parameter PACKAGES_SVN_USER`"
- SVN_GROUP="`eval_parameter PACKAGES_SVN_GROUP`"
- SOURCE_DIR_USER="`eval_parameter SOURCE_DIR_USER`"
- SOURCE_DIR_GROUP="`eval_parameter SOURCE_DIR_GROUP`"
-
- COLOR_MODE="`eval_parameter COLOR_MODE none`"
- CREATEPKG_ARCH="`eval_parameter CREATEPKG_ARCH $(default_arch)`"
- CREATEPKG_CLEANUP="`eval_parameter CREATEPKG_CLEANUP yes`"
- CREATEPKG_AUTHOR="`eval_parameter CREATEPKG_AUTHOR`"
-
- TMP="`eval_parameter TMP /tmp`"
- TMP_USER="`eval_parameter TMP_USER`"
- TMP_GROUP="`eval_parameter TMP_GROUP`"
-
- SIGN_PACKAGES="`eval_boolean_parameter SIGN_PACKAGES $off`"
- SIGN_PACKAGES_USER="`eval_parameter SIGN_PACKAGES_USER`"
- SIGN_PACKAGES_KEYID="`eval_parameter SIGN_PACKAGES_KEYID`"
- SIGN_PACKAGES_WITH_GPG_AGENT="`eval_boolean_parameter SIGN_PACKAGES_WITH_GPG_AGENT $off`"
-
- if [ ! -z "$SIGN_PACKAGES_KEYID" ]; then
- SIGN_PACKAGES_KEYID="`echo $SIGN_PACKAGES_KEYID | tr '[:lower:]' '[:upper:]'`"
- fi
-
- if [ "$SIGN_PACKAGES_WITH_GPG_AGENT" -eq $on ]; then
- GPG_AGENT_OPTION="--use-agent"
- else
- GPG_AGENT_OPTION=""
- fi
-
- # For use at common.sh functions
- SIGN="$SIGN_PACKAGES"
- SIGN_KEYID="$SIGN_PACKAGES_KEYID"
- SIGN_USER="$SIGN_PACKAGES_USER"
-
- REMOVE_OLD_PACKAGE="`eval_boolean_parameter REMOVE_OLD_PACKAGE $off`"
- MOVE_BIN_PACKAGE="`eval_boolean_parameter MOVE_BIN_PACKAGE $off`"
- MOVE_SLACK_REQUIRED="`eval_boolean_parameter MOVE_SLACK_REQUIRED $off`"
- PACKAGES_REPOS_NOARCH="`eval_boolean_parameter PACKAGES_REPOS_NOARCH $on`"
- FORCE_MANIFEST_CHECK="`eval_boolean_parameter FORCE_MANIFEST_CHECK $off`"
- FORCE_MANIFEST_CHECK_SIGNATURE="`eval_boolean_parameter FORCE_MANIFEST_CHECK_SIGNATURE $off`"
-
-}
-
-function repository_checkout {
-
- # checkout a binary repository
- # usage: repository_checkout [repository-adress]
-
- local svn oldfolder
-
- if [ -d "$PACKAGES_DIR" ]; then
- oldfolder="$(mktemp -d $(echo $PACKAGES_DIR | sed -e 's/\/*$//g').XXXXXX)"
- echo "Backing up old $folder at $oldfolder..."
- mv $PACKAGES_DIR $oldfolder
- fi
-
- if [ -z "$1" ]; then
- svn="$1"
- else
- svn="$PACKAGES_SVN"
- fi
-
- if valid_svn_repo $svn; then
- svn checkout $svn $PACKAGES_DIR
- chown_svn $PACKAGES_DIR && chgrp_svn $PACKAGES_DIR
- if [ "$svn" != "$PACKAGES_SVN" ]; then
- echo "Using svn repository different from the one pointed at $CONF."
- fi
- else
- echo "Invalid repository $repository, aborting."
- EXIT_CODE="1"
- fi
-
-}
-
-function repository_update {
-
- if [ ! -z "$1" ] && svn_folder $1; then
- echo "Fetching changes from svn repository for $1..."
- cwd="`pwd`"
- chown_svn $1 && chgrp_svn $1
- cd $1 && su_svn update
- cd $cwd
- fi
-
-}
-
-function repository_status {
-
- local cwd
-
- if svn_folder $PACKAGES_DIR; then
- echo "Status of $PACKAGES_DIR."
- cwd="`pwd`"
- cd $PACKAGES_DIR && su_svn status
- cd $cwd
- fi
-
- if svn_folder $NOARCH_DIR; then
- cwd="`pwd`"
- echo "Status of $NOARCH_DIR."
- cd $NOARCH_DIR && su_svn status
- cd $cwd
- fi
-
- exit 0
-
-}
-
-function binary_repository_import {
-
- # import packages into a subversion repository
- # usage: binary_repository_import [repository]
-
- local repository="$1" folder
-
- if [ -z "$repository" ]; then
- repository="file:////var/svn/packages"
- fi
-
- # eval again so it doesn't include repository style information
- folder="`eval_parameter PACKAGES_DIR /var/simplepkg/repos`"
-
- repository_import $folder $repository
-
-}
-
-function create_repo_folder {
-
- # Create repository directory
- # usage: create_repo_folder <repository_folder>
-
- local folder="$1" basedir
-
- if [ ! -d "$folder" ]; then
- echo "Creating packages folder $folder..."
- basedir="`dirname $folder`"
- if svn_folder $basedir && ! svn_check $folder; then
- (
- cd $basedir
- chown_svn $basedir && chgrp_svn $basedir
- svn_mkdir `basename $folder`/$SUBFOLDER
- )
- else
- mkdir -p $folder/$SUBFOLDER
- fi
- elif [ ! -e $folder/$SUBFOLDER ]; then
- if svn_folder $folder && ! svn_check $folder/$SUBFOLDER; then
- (
- cd $folder
- chown_svn $folder && chgrp_svn $folder
- svn_mkdir $SUBFOLDER
- )
- else
- mkdir -p $folder/$SUBFOLDER
- fi
- fi
-
-}
-
-function remove_old_package_data {
-
- # Remove old packages from repository tree
- # usage: remove_old_package_data <repository_folder>
-
- if [ ! -d "$1" ]; then
- return 1
- fi
-
- local makepkg_repos="$1"
-
- # Remove old PACKAGEs from repository tree
- if [ $REMOVE_OLD_PACKAGE -eq $on ]; then
-
- # first remove entries from CHECKSUMS.md5
- if [ -f "$makepkg_repos/CHECKSUMS.md5" ]; then
- sed -i "/$PACKAGE-.*-.*-.*.*$/d" $makepkg_repos/CHECKSUMS.md5
- fi
-
- # then remove entries from patches/CHECKSUMS.md5
- if [ -f "$makepkg_repos/patches/CHECKSUMS.md5" ]; then
- sed -i "/$PACKAGE-.*-.*-.*.*$/d" $makepkg_repos/patches/CHECKSUMS.md5
- fi
-
- # Using subversion
- if svn_folder $makepkg_repos; then
-
- (
-
- cd $makepkg_repos
-
- # Using -mindepth 2 so it doesn't delete the new PACKAGE
- for file in `find . -mindepth 2 -name "$PACKAGE-*-*-*.*"`; do
- candidate="`echo $file | sed -e 's/\.meta$/\.tgz/'`" # otherwise PACKAGE info functions can fail
- candidate="`echo $candidate | sed -e 's/\.asc$//'`" # otherwise PACKAGE info functions can fail
- # Just delete packages with different arch, version, build number or folder
- if [ "`package_name $candidate`" == "$PACKAGE" ]; then
- if [ "`package_version $candidate`" != "$PACKAGE_VERSION" ] || \
- [ "`package_arch $candidate`" != "$PACKAGE_ARCH" ] || \
- [ "`package_build $candidate`" != "$PACKAGE_BUILD" ] || \
- [ "`package_ext $candidate`" != "$PACKAGE_EXT" ] || \
- [ "`dirname $candidate | sed -e 's/^\.\///'`" != "`dirname $SUBFOLDER/$PKG_NAME | sed -e 's/^\.\///'`" ]; then
- svn_del $file
- fi
- fi
- done
-
- for file in `find $makepkg_repos -name "$PACKAGE.slack-required"`; do
- if [ $MOVE_SLACK_REQUIRED -eq $off ]; then
- svn_del $file
- elif [ ! -z "$SLACK_REQUIRED" ] && [ "$makepkg_repos/$SUBFOLDER/$PACKAGE.slack-required" != "$file" ]; then
- svn_del $file
- fi
- done
-
- )
-
- else
- # Using -mindepth 2 so it doesn't delete the new package
- eval find $makepkg_repos -mindepth 2 $(pkg_ext_find $PACKAGE-*-*-*) -exec rm {} 2>/dev/null \;
- find $makepkg_repos -mindepth 2 -name "$PACKAGE-*-*-*.meta" -exec rm {} 2>/dev/null \;
- find $makepkg_repos -mindepth 2 -name "$PACKAGE-*-*-*.*.asc" -exec rm {} 2>/dev/null \;
- find $makepkg_repos -name "$PACKAGE.slack-required" -exec rm {} 2>/dev/null \;
- fi
- fi
-
-}
-
-function update_metadata {
-
- # Update repository metadata
- # usage: update_metadata <repository_folder>
-
- if [ ! -d "$1" ]; then
- return 1
- fi
-
- local makepkg_repos="$1"
-
- (
-
- cd $makepkg_repos
-
- get_sign_user
- repo_gpg_key $makepkg_repos
- gen_meta $SUBFOLDER/$PKG_NAME
- gen_filelist
- update_md5_checksum $makepkg_repos $SUBFOLDER/$PKG_NAME
-
- # update md5 file from patches/ folder if needed
- if [ -d "patches/" ]; then
-
- found_patch="no"
-
- for file in `eval find patches/ $(pkg_ext_find $PACKAGE-*-*-*)`; do
- found_patch="yes"
- update_md5_checksum $makepkg_repos/patches patches/$SUBFOLDER/$PKG_NAME
- done
-
- if [ "$found_patch" == "yes" ]; then
- gen_patches_filelist patches
- fi
- fi
-
- )
-
-}
-
-function list_packages {
-
- # list packages in repositories
- # usage: list_packages [repository_list]
-
- local repository repositories="$*"
-
- if [ -z "$repositories" ]; then
- repositories="$PACKAGES_DIR $NOARCH_DIR"
- fi
-
- for repository in $repositories; do
- echo "Packages from $repository..."
- eval find $repository $(pkg_ext_find)
- done
-
-}
-
-function remove_package {
-
- # delete a package from repositories
- # usage: remove_packages <package> [repository_list]
-
- local package="$1" repository repositories="$2"
-
- if [ -z "$package" ]; then
- return 1
- fi
-
- if [ -z "$repositories" ]; then
- repositories="$PACKAGES_DIR $NOARCH_DIR"
- fi
-
- for repository in $repositories; do
-
- (
-
- cd $repository
-
- for file in `eval find . $(pkg_ext_find $package-*-*-*) -o -name "$package-*-*-*.meta" -o -name "$package-*-*-*.*.asc"`; do
- svn_del $file
- if [ -e "CHECKSUMS.md5" ] && echo $file | grep -q -E -e "$(pkg_ext_grep)$"; then
- # remove md5 information
- sed -i "/ \.*\/*$(regexp_slash $file)$/d" CHECKSUMS.md5
- cat CHECKSUMS.md5 | gzip -9 -c - > CHECKSUMS.md5.gz
- fi
- done
-
- for file in `find $repository -name "$package.slack-required"`; do
- svn_del $file
- done
-
- )
-
- update_metadata $repository
- done
-
-}
-
-function sign_package {
-
- # sign a package from repositories
- # usage: sign_package <package> [repository_list]
-
- local package="$1" repository repositories="$2"
-
- if [ -z "$package" ]; then
- return 1
- fi
-
- if [ -z "$repositories" ]; then
- repositories="$PACKAGES_DIR $NOARCH_DIR"
- fi
-
- for repository in $repositories; do
-
- (
-
- cd $repository
-
- for file in `eval find . $(pkg_ext_find $package-*-*-*)`; do
-
- echo "Signing package..."
-
- get_sign_user
-
- if [ ! -z "$SIGN_PACKAGES_USER" ] && [ "`whoami`" != "$SIGN_PACKAGES_USER" ]; then
- tmp_sign_folder="`mktemp -d $TMP/createpkg_sign.XXXXXX`"
- chown $SIGN_PACKAGES_USER $tmp_sign_folder
- su $SIGN_PACKAGES_USER -c "gpg $GPG_AGENT_OPTION --armor -sb -u $SIGN_KEYID -o $tmp_sign_folder/`basename $file`.asc $repository/$file"
- cp $tmp_sign_folder/`basename $file`.asc $repository/$file.asc
- rm -rf $tmp_sign_folder
- else
- tmp_sign_folder="`mktemp -d $TMP/createpkg_sign.XXXXXX`"
- gpg $GPG_AGENT_OPTION --armor -sb -u $SIGN_KEYID -o $tmp_sign_folder/`basename $file`.asc $repository/$file
- cp $tmp_sign_folder/`basename $file`.asc $repository/$file.asc
- rm -rf $tmp_sign_folder
- fi
-
- done
-
- )
-
- update_metadata $repository
- done
-
-}
-
-function create_package {
-
- # Synchronize repository
- [ $SYNC -eq $yes ] && sync_svn_repo $SLACKBUILDS_DIR $SLACKBUILDS_SVN
-
- # Update keyring
- update_keyring $SLACKBUILDS_DIR/GPG-KEY
-
- # Get SlackBuild script
- BUILD_SCRIPT="`find_slackbuild $PACKAGE`"
-
- # Check SlackBuild script found
- if [ -z "$BUILD_SCRIPT" ]; then
- handle_error $ERROR_CREATEPKG_SLACKBUILD_NOTFOUND $PACKAGE
- fi
-
- # Select one SlackBuild
- if [ "`echo $BUILD_SCRIPT | wc -w`" -gt 1 ]; then
- AUX="$PS3"
- PS3="Choice: "
- LIST=`echo $BUILD_SCRIPT | sed 's/ /\n/g' | sed -r 's/.*\/(.*)\.SlackBuild$/\1/'`" EXIT"
-
- select PACKAGE in `echo $LIST`; do
- break
- done
-
- if [ "$PACKAGE" = "EXIT" ]; then
- eecho $error "error: no package selected"
- return 1
- fi
-
- # Select only one SlackBuild in BUILD_SCRIPT
- BUILD_SCRIPT=`echo $BUILD_SCRIPT | sed 's/ /\n/g' | grep "/$PACKAGE.SlackBuild"`
- PS3="$AUX"
- else
- PACKAGE=`basename $BUILD_SCRIPT .SlackBuild`
- fi
-
- # Get dirname and script name from slackbuild
- SCRIPT_BASE="`dirname $BUILD_SCRIPT`"
- SCRIPT_NAME="`basename $BUILD_SCRIPT`"
- eecho $messag "$BASENAME: found script $PACKAGE.SlackBuild, now checking for dependencies"
-
- # Sets the package's slack-required
- if [ -f "$SCRIPT_BASE/$PACKAGE.slack-required" ]; then
- SLACK_REQUIRED="$SCRIPT_BASE/$PACKAGE.slack-required"
- elif [ -f "$SCRIPT_BASE/slack-required" ]; then
- SLACK_REQUIRED="$SCRIPT_BASE/slack-required"
- fi
-
- if [ ! -z "$SLACK_REQUIRED" -a $NO_DEPS -ne $on ]; then
- # This routine checks for dependencies in package's slack-required
- (
- grep '^[^#]' $SLACK_REQUIRED | while read dep; do
- if [ ! -z "$dep" ]; then
- PROGRAM="`echo $dep | awk '{ print $1 }'`"
- CONDITION="`echo $dep | awk '{ print $2 }' | tr [=\>\<] [egl]`"
- VERSION="`echo $dep | awk '{ print $3 }' | tr -dc '[:digit:]'`"
- solve_dep "$PROGRAM" "$CONDITION" "$VERSION"
- fi
- true
- done
- )
- [ $? -ne 0 ] && handle_error $error $ERROR_CREATEPKG_DEPENDENCY
-
- eecho $messag "$BASENAME: done checking for $PACKAGE dependencies"
- else
- eecho $messag "$BASENAME: no unmet dependencies for $PACKAGE"
- fi
-
- eecho $messag "$BASENAME: processing $SCRIPT_NAME"
-
- # Change to script base directory
- cd $SCRIPT_BASE
-
- # Use fakeroot if needed and available
- if [ "`whoami`" != "root" ]; then
- FAKEROOT="`which fakeroot`"
- if [ "$?" == "0" ]; then
- eecho $messag "$BASENAME: running SlackBuild with fakeroot."
- FAKEROOT="$FAKEROOT --"
- else
- eecho $messag "$BASENAME: WARNING: not running as root and no fakeroot found."
- eecho $messag "$BASENAME: WARNING: your build might not be successful."
- FAKEROOT=""
- fi
- else
- FAKEROOT=""
- fi
-
- # Manifest checking
- if [ $FORCE_MANIFEST_CHECK -eq $on ] || [ $FORCE_MANIFEST_CHECK_SIGNATURE -eq $on ]; then
- if [ ! -e "`dirname $SCRIPT_NAME`/Manifest" ]; then
- eecho $messag "$BASENAME: ERROR: no Manifest file for $PACKAGE."
- return 1
- fi
- fi
-
- # Manifest signature checking
- if [ $FORCE_MANIFEST_CHECK_SIGNATURE -eq $on ]; then
- if grep -q -- "-----BEGIN PGP SIGNED MESSAGE-----" `dirname $SCRIPT_NAME`/Manifest; then
- gpg --verify `dirname $SCRIPT_NAME`/Manifest &> /dev/null
- if [ "$?" != "0" ]; then
- eecho $messag "$BASENAME: ERROR: invalid signature for $PACKAGES's Manifest file."
- return 1
- fi
- else
- eecho $messag "$BASENAME: ERROR: no signed Manifest file for $PACKAGE."
- return 1
- fi
- fi
-
- # Run SlackBuild script
- [ $DEBUG -eq $off ] && SHELL_FLAG="+x" || SHELL_FLAG="-x"
- (
- LANG=en_US \
- TMP=$TMP \
- SRC_DIR=${SRC_DIR:=$SOURCE_DIR} \
- SRC=${SRC_DIR:=$SOURCE_DIR} \
- ARCH=${ARCH:=$CREATEPKG_ARCH} \
- COLOR=${COLOR:=$COLOR_MODE} \
- REPOS=${REPOS:=$PACKAGES_DIR} \
- CLEANUP=${CLEANUP:=$CREATEPKG_CLEANUP} \
- SLACKBUILD_PATH="/" \
- INTERACT=no $FAKEROOT sh $SHELL_FLAG ./$SCRIPT_NAME
- )
-
- # Check if package was built
- handle_error $? $PACKAGE
-
- # Fix source folder user
- if [ ! -z "$SOURCE_DIR_USER" ]; then
- chown -R $SOURCE_DIR_USER $SOURCE_DIR
- fi
-
- # Fix source folder group
- if [ ! -z "$SOURCE_DIR_GROUP" ]; then
- chgrp -R $SOURCE_DIR_GROUP $SOURCE_DIR
- fi
-
- # Get package name, arch, version and build number
- PKG_NAME="`ls -1 -c $PACKAGES_DIR/$PACKAGE-*-*-*.* | grep -E -e "$(pkg_ext_grep)$" | head -n 1 | xargs basename`"
- PACKAGE_NAME="`package_name $PKG_NAME`"
- PACKAGE_VERSION="`package_version $PKG_NAME`"
- PACKAGE_ARCH="`package_arch $PKG_NAME`"
- PACKAGE_BUILD="`package_build $PKG_NAME`"
- PACKAGE_EXT="`package_ext $PKG_NAME`"
-
- # Update package author
- if [ ! -z "$CREATEPKG_AUTHOR" ]; then
- AUTHOR="`echo $PACKAGE_BUILD | sed -e 's/^[0-9]*//'`"
- if [ "$AUTHOR" != "$CREATEPKG_AUTHOR" ]; then
- echo "Changing package build author..."
- BUILD_NUMBER="`echo $PACKAGE_BUILD | sed -e "s/$AUTHOR$//"`"
- NEW_BUILD="$BUILD_NUMBER""$CREATEPKG_AUTHOR"
- mv $PACKAGES_DIR/$PKG_NAME $PACKAGES_DIR/$PACKAGE_NAME-$PACKAGE_VERSION-$PACKAGE_ARCH-$NEW_BUILD.$PACKAGE_EXT
- PKG_NAME="$PACKAGE_NAME-$PACKAGE_VERSION-$PACKAGE_ARCH-$NEW_BUILD.$PACKAGE_EXT"
- PACKAGE_BUILD="$NEW_BUILD"
- AUTHOR="$CREATEPKG_AUTHOR"
- echo "New package name is $PKG_NAME."
- fi
- fi
-
- # Sign package
- if [ $SIGN_PACKAGES -eq $on ]; then
-
- echo "Signing package..."
-
- get_sign_user
-
- if [ ! -z "$SIGN_PACKAGES_USER" ] && [ "`whoami`" != "$SIGN_PACKAGES_USER" ]; then
- tmp_sign_folder="`mktemp -d $TMP/createpkg_sign.XXXXXX`"
- chown $SIGN_PACKAGES_USER $tmp_sign_folder
- su $SIGN_PACKAGES_USER -c "gpg $GPG_AGENT_OPTION --armor -sb -u $SIGN_KEYID -o $tmp_sign_folder/$PKG_NAME.asc $PACKAGES_DIR/$PKG_NAME"
- cp $tmp_sign_folder/$PKG_NAME.asc $PACKAGES_DIR/$PKG_NAME.asc
- rm -rf $tmp_sign_folder
- else
- tmp_sign_folder="`mktemp -d $TMP/createpkg_sign.XXXXXX`"
- gpg $GPG_AGENT_OPTION --armor -sb -u $SIGN_KEYID -o $tmp_sign_folder/$PKG_NAME.asc $PACKAGES_DIR/$PKG_NAME
- cp $tmp_sign_folder/$PKG_NAME.asc $PACKAGES_DIR/$PKG_NAME.asc
- rm -rf $tmp_sign_folder
- fi
-
- fi
-
- # Select repository directory
- if [ $MOVE_BIN_PACKAGE -eq $on ]; then
- SUBFOLDER="$( echo ${SCRIPT_BASE#$SLACKBUILDS_DIR/} )"
- NEW_REPOS=$PACKAGES_DIR/$SUBFOLDER
- else
- SUBFOLDER="."
- NEW_REPOS=$PACKAGES_DIR
- fi
-
- # Update information from remote repository
- repository_update $PACKAGES_DIR
-
- # Create the repository folders
- create_repo_folder $PACKAGES_DIR
-
- # Remove old packages from repository tree
- remove_old_package_data $PACKAGES_DIR
-
- # Move package to SlackBuilds-like tree
- if [ $MOVE_BIN_PACKAGE -eq $on ]; then
-
- mv $PACKAGES_DIR/$PKG_NAME $NEW_REPOS/
- if [ -e "$PACKAGES_DIR/$PKG_NAME.asc" ]; then
- mv $PACKAGES_DIR/$PKG_NAME.asc $NEW_REPOS/
- fi
-
- if svn_folder $NEW_REPOS; then
- (
- cd $NEW_REPOS
- chown_svn $PACKAGES_DIR && chgrp_svn $PACKAGES_DIR
- svn_add $PKG_NAME
- svn_add $PKG_NAME.asc
- )
- fi
-
- # Move package's slack-required to binary repository
- if [ $MOVE_SLACK_REQUIRED -eq $on ]; then
- if [ ! -z "$SLACK_REQUIRED" ]; then
- svn_copy $SLACK_REQUIRED $NEW_REPOS/$PACKAGE.slack-required
- fi
- fi
-
- fi
-
- # Update repository metadata
- update_metadata $PACKAGES_DIR
-
- # General cleanup
- echo Cleaning up the repository...
- svn_remove_empty_folders $PACKAGES_DIR
-
- # Update noarch repository
- if [ $PACKAGES_REPOS_NOARCH -eq $on ] && [ "`package_arch $PKG_NAME`" == "noarch" ]; then
- repository_update $NOARCH_DIR
- echo Copying package to noarch repository...
- create_repo_folder $NOARCH_DIR
- remove_old_package_data $NOARCH_DIR
- svn_copy $NEW_REPOS/$PKG_NAME $NOARCH_DIR/$SUBFOLDER/
- svn_copy $NEW_REPOS/`strip_pkg_ext $PKG_NAME`.meta $NOARCH_DIR/$SUBFOLDER/
- svn_copy $NEW_REPOS/`basename $PKG_NAME`.asc $NOARCH_DIR/$SUBFOLDER/
- svn_copy $NEW_REPOS/$PACKAGE.slack-required $NOARCH_DIR/$SUBFOLDER/
- update_metadata $NOARCH_DIR
- svn_remove_empty_folders $NOARCH_DIR
- fi
-
- # Install package
- if [ "$INSTALL" -eq $on ]; then
- upgradepkg --install-new $NEW_REPOS/$PKG_NAME
- fi
-
- echo "Package saved at $NEW_REPOS/$PKG_NAME"
-
- if [ $PACKAGES_REPOS_NOARCH -eq $on ] && [ "`package_arch $PKG_NAME`" == "noarch" ]; then
- echo "Aditional copy saved at $NOARCH_DIR/$SUBFOLDER/$PKG_NAME"
- fi
-
- return $EXIT_CODE
-
-}
-
-function build_queue {
-
- # createpkg's build queue
- # usage: build_queue <package1> ... <packageN>
-
- local unable_to_install last_status built=0 total=0
-
- if [ -z "$1" ]; then
- return
- fi
-
- for PACKAGE in $*; do
- create_package
- last_status="$?"
- let total++
- if [ "$last_status" != "0" ]; then
- unable_to_install="$unable_to_install\n\t`echo $PACKAGE | sed -e 's/\\\+/\+/'`"
- else
- let built++
- fi
- done
-
- if [ ! -z "$unable_to_install" ] && [[ $total > 1 ]]; then
- eecho $messag "$BASENAME: done building $built of $total requested SlackBuilds."
- eecho $messag "$BASENAME: unable to create the following packages:"
- echo -e "$unable_to_install"
- fi
-
- # Fix possible $TMP removal
- mkdir -p $TMP
-
- # Fix $TMP user
- if [ ! -z "$TMP_USER" ]; then
- chown $TMP_USER $TMP
- fi
-
- # Fix $TMP group
- if [ ! -z "$TMP_GROUP" ]; then
- chgrp $TMP_GROUP $TMP
- fi
-
- # Exit with last build package exit status
- exit $last_status
-
-}
-
-#---------------------------------------------------
-# Starting createpkg
-#---------------------------------------------------
-# Common functions
-COMMON="/usr/libexec/simplepkg/common.sh"
-SIMPLEPKG_CONF="/etc/simplepkg/simplepkg.conf"
-BASENAME="`basename $0`"
-EXIT_CODE=0
-
-if [ -f "$COMMON" ]; then
- source $COMMON
-else
- echo "error: file $COMMON found, check your $BASENAME installation"
- exit 0
-fi
-
-set_constants
-
-# Load simplepkg.conf variables
-load_parameters
-
-# Loading error codes
-error_codes
-
-# Load slackbuildrc definitions
-if [ -f ~/.slackbuildrc ]; then
- source ~/.slackbuildrc
-else
- source /etc/slackbuildrc 2>/dev/null
-fi
-
-# Select color mode: gray, color or none (*)
-color_select $COLOR_MODE
-
-# This is used to show how many children process we have
-if [ -z "$CREATEPKG_CHILD" ]; then
- CREATEPKG_CHILD=1
-else
- let CREATEPKG_CHILD++
-fi
-
-BASENAME="`basename $0`[$CREATEPKG_CHILD]"
-
-check_config
-check_svn_repo $SLACKBUILDS_DIR $SLACKBUILDS_SVN
-
-INSTALL=$off
-NO_DEPS=$off
-DEBUG=$off
-
-case $1 in
- '--all'|'-a')
- # build all SlackBuilds in repository
- build_all_slackbuilds
- exit $EXIT_CODE
- ;;
- '--search'|'-s')
- if [ $# -ne 2 ]; then
- list_slackbuilds
- else
- LIST=`find_slackbuild $2`
- if [ -z $LIST ]; then
- EXIT_CODE=1
- else
- for i in $LIST; do
- echo $i #| sed 's/.*\/\([^\/]\+\)\.[Ss]lack[Bb]uild$/ \1/'
- done
- fi
- fi
- exit $EXIT_CODE
- ;;
- '--info'|'-f')
- [ $# -ne 2 ] && usage # two parameters is required
- PKG_PATH=`find_slackbuild $2`
- info_builds
- exit $EXIT_CODE
- ;;
- '--install'|'-i')
- [ $# -ne 2 ] && usage # two parameters is required
- shift
- PACKAGE="$1"
- INSTALL=$on
- build_queue $*
- ;;
- '--no-deps'|'-nd')
- [ $# -ne 2 ] && usage # two parameters is required
- shift
- NO_DEPS=$on
- PACKAGE="$1"
- build_queue $*
- ;;
- '--debug'|'-d')
- [ $# -ne 2 ] && usage # two parameters is required
- shift
- PACKAGE="$1"
- DEBUG=$on
- build_queue $*
- ;;
- '--sync')
- sync_svn_repo $SLACKBUILDS_DIR $SLACKBUILDS_SVN
- exit $EXIT_CODE
- ;;
- '--help'|'-h'|'')
- usage
- exit $EXIT_CODE
- ;;
- '--list'|'-l')
- list_slackbuilds
- exit $EXIT_CODE
- ;;
- '--update')
- repository_update $PACKAGES_DIR
- repository_update $NOARCH_DIR
- exit $EXIT_CODE
- ;;
- '--commit')
- shift
- commit_changes $PACKAGES_DIR "`basename $PACKAGES_DIR:`" $*
- if [ $PACKAGES_REPOS_NOARCH -eq $on ]; then
- commit_changes $NOARCH_DIR "noarch:" $*
- fi
- exit $EXIT_CODE
- ;;
- '--status')
- repository_status
- exit $EXIT_CODE
- ;;
- '--import')
- shift
- binary_repository_import $*
- exit $EXIT_CODE
- ;;
- '--checkout')
- shift
- repository_checkout $*
- exit $EXIT_CODE
- ;;
- '--update-keyring')
- get_sign_user
- repo_gpg_key $PACKAGES_DIR --update
- if [ $PACKAGES_REPOS_NOARCH -eq $on ]; then
- repo_gpg_key $NOARCH_DIR --update
- fi
- exit $EXIT_CODE
- ;;
- '--list-packages')
- shift
- list_packages $*
- exit $EXIT_CODE
- ;;
- '--sign')
- shift
- sign_package $*
- exit $EXIT_CODE
- ;;
- '--remove')
- shift
- remove_package $*
- exit $EXIT_CODE
- ;;
- *)
- if [ "${1:0:1}" != "-" ]; then
- build_queue $*
- else
- usage
- fi
- ;;
-esac
diff --git a/trunk/src/jail-commit b/trunk/src/jail-commit
deleted file mode 100755
index 60e0a36..0000000
--- a/trunk/src/jail-commit
+++ /dev/null
@@ -1,175 +0,0 @@
-#!/bin/bash
-#
-# jail-commit: update config files from a jail to a template
-# feedback: rhatto@riseup.net | gpl
-#
-# Jail-commit is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or any later version.
-#
-# Jail-commit is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place - Suite 330, Boston, MA 02111-1307, USA
-#
-
-COMMON="/usr/libexec/simplepkg/common.sh"
-BASENAME="`basename $0`"
-
-if [ -f "$COMMON" ]; then
- source $COMMON
- eval_config $BASENAME
-else
- echo "error: file $COMMON found, check your $BASENAME installation"
- exit 1
-fi
-
-function usage {
-
- echo $BASENAME: commit a jail configuration into a template
- echo "usage: \"$BASENAME [<jail-path> [template]]\""
- echo " \"$BASENAME --all\" to commit all templates"
- echo " \"$BASENAME --help\" for help"
-
-}
-
-function template_merge {
-
- # copy differences between the jail
- # and the template in the template folder
-
- # usage: template_merge <jail-path>
-
- if [ -z "$1" ] || [ ! -d "`template_files`" ]; then
- return 1
- fi
-
- echo "" > `template_perms`.tmp
- cd `template_files`
-
- for file in `find | grep -v -e "/.svn$" | grep -v -e "/.svn/" | grep -v -e "^\.$"`; do
-
- if [[ -e "$file" && -e "$1/$file" ]]; then
-
- if [ ! -d "$file" ] && [ ! -h "$file" ]; then
- if ! diff -u $file $1/$file; then
- echo Updating $file
- cp -af $1/$file $file
- fi
- elif [ -h "$file" ]; then
- if [ "`readlink $file`" != "`readlink $1/$file`" ]; then
- rm -f $file
- ln -s `readlink $1/$file` $file
- fi
- fi
-
- perms="`numeric_perm $1/$file`"
- owner="`get_owner $1/$file`"
- group="`get_group $1/$file`"
-
- # secure the file
- chown root.root `template_files`/$file
- chmod $perms `template_files`/$file
-
- echo "$file;$owner;$group;$perms" >> `template_perms`.tmp
-
- else
- if [ ! -e "$1/$file" ]; then
- echo $BASENAME: warning: missing file `slash $1/$file`
- fi
- fi
-
- done
-
- cat `template_perms`.tmp | sed '/^$/d' > `template_perms`
- rm -f `template_perms`.tmp
-
- if templates_under_svn && ! svn_check `template_perms`; then
- svn add `template_perms`
- fi
-
-}
-
-function template_svn_commit {
-
- # issue a svn_commit from a template folder
- # usage: template_svn_commit <template-folder>
-
- if templates_under_svn && svn_folder $1; then
- cd $1
- echo First checking out from the repository...
- svn update
- echo Commiting changes to the repository...
- svn commit -m "changes for `date`"
- if [ "$?" != "0" ]; then
- echo $BASENAME: commit error
- fi
- fi
-
-}
-
-function do_commit {
-
- # commit jail changes to a repository
- # usage: do_commit <jailpath> [template]
-
- local jailpath template
-
- jailpath="$1"
- jail="`basename $jailpath`"
-
- if [ ! -z "$2" ]; then
- template="$2"
- else
- template="$jail"
- fi
-
- search_template $template --update
- if [ "$?" == "0" ] && ! echo "$TEMPLATE_UPDATE_LIST" | grep -q " `basename $TEMPLATE_BASE` "; then
- TEMPLATE_UPDATE_LIST=" $TEMPLATE_UPDATE_LIST `basename $TEMPLATE_BASE` " # the spaces are important
- if [ "$jailpath" == "/" ]; then
- echo Updating main installation...
- else
- echo Updating $jailpath...
- fi
- if [ -d "`template_files`" ] || [ -a "`template_packages`" ]; then
- SILENT=yes templatepkg -u $template $jailpath
- template_merge $jailpath
- fi
- else
- if [ -z "$SILENT" ]; then
- echo $BASENAME: template $template not found
- fi
- return 1
- fi
-
-}
-
-TEMPLATE_UPDATE_LIST=""
-
-if [ "$1" == "--help" ]; then
- usage
-elif [ "$1" == "--all" ]; then
- template_svn_commit $BASE_CONF/templates
-elif echo $1 | grep -q -e "^--"; then
- usage
-elif [ ! -z "$1" ]; then
- do_commit $1 $2
- if [ "$?" == "0" ]; then
- template_svn_commit `dirname $TEMPLATE_BASE`
- fi
-else
- SILENT="yes"
- if [ -e $JAIL_LIST ]; then
- for jailpath in `cat $JAIL_LIST`; do
- do_commit $jailpath
- done
- fi
- # main jail
- do_commit / main
- template_svn_commit $BASE_CONF/templates
-fi
-
diff --git a/trunk/src/jail-update b/trunk/src/jail-update
deleted file mode 100755
index ce2d165..0000000
--- a/trunk/src/jail-update
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/bash
-#
-# jail-update: update config files from a jail to a template
-# feedback: rhatto@riseup.net | gpl
-#
-# Jail-update is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or any later version.
-#
-# Jail-update is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place - Suite 330, Boston, MA 02111-1307, USA
-#
-
-COMMON="/usr/libexec/simplepkg/common.sh"
-BASENAME="`basename $0`"
-
-if [ -f "$COMMON" ]; then
- source $COMMON
- eval_config $BASENAME
-else
- echo "error: file $COMMON found, check your $BASENAME installation"
- exit 1
-fi
-
-function usage {
-
- echo "$BASENAME: update a jail configuration from a template"
- echo "usage: $BASENAME <jail-path> [template]"
-
-}
-
-if [ -z "$1" ] || [ "$1" == "--help" ] || echo $1 | grep -q -e "^--"; then
- usage
- exit 1
-fi
-
-if [ -z "$2" ]; then
- template_name="`basename $1`"
-else
- template_name="$2"
-fi
-
-search_template $template_name --update
-
-if [ "$?" != "0" ]; then
- echo $BASENAME: template $template_name not found
- exit 1
-elif [ ! -d "$1" ]; then
- echo $BASENAME: jail $1 not found
- exit 1
-fi
-
-update_template_files
-update_jail_packages $1
-copy_template_files $1
-set_jail_perms $1
-
diff --git a/trunk/src/lspkg b/trunk/src/lspkg
deleted file mode 100755
index c5e4ec8..0000000
--- a/trunk/src/lspkg
+++ /dev/null
@@ -1,148 +0,0 @@
-#!/bin/bash
-#
-# lspkg v0.4: view installed and contents of slackware packages
-#
-# feedback: rhatto at riseup.net | gpl
-#
-# Lspkg is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or any later version.
-#
-# Lspkg is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place - Suite 330, Boston, MA 02111-1307, USA
-#
-
-COMMON="/usr/libexec/simplepkg/common.sh"
-PKG_LIST_DIR="var/log/packages"
-
-if [ -f "$COMMON" ]; then
- source $COMMON
-else
- echo "error: file $COMMON not found, check your `basename $0` installation"
- exit 1
-fi
-
-function head_line {
- echo "usage: [ROOT=/otherroot] `basename $0` [option expression]"
-}
-
-function usage {
- head_line
- echo "
-options are:
-
- -v, --view <package_name>
- view installed package contents
- -p, --print <package_name>
- print the contents of a package file
- -r, --remove <package_name>
- remove matching packages
- -s, --search <file_name>
- search a file under installed packages
- -d, --description <package_name>
- show matching packages' descriptions
-"
-}
-
-# -----------------------------------------------------
-# lspkg
-# -----------------------------------------------------
-
-if [ $# -eq 2 ]; then
- pack=$2
-elif [ $# -eq 1 ]; then
- pack=$1
-else
- pack=""
-fi
-
-if [ ! -z "$pack" ]; then
- if echo $pack | grep -q "*"; then
- LIST_PKGS="`ls -1 /$ROOT/$PKG_LIST_DIR/$pack 2> /dev/null`"
- else
- pack="`echo $pack | sed -e 's/\+/\\\+/'`"
- LIST_PKGS=`eval "ls -1 /$ROOT/$PKG_LIST_DIR/ 2> /dev/null | grep -E '^$pack-[^-]+-[^-]+-[^-]+$'"`
- fi
-else
- LIST_PKGS="`ls /$ROOT/$PKG_LIST_DIR/ 2> /dev/null`"
-fi
-
-LIST_PKGS="`slash $LIST_PKGS`"
-
-case $1 in
- "-h"|"--help")
- usage
- ;;
- "-v"|"--view")
- if [ ! -z "$2" ]; then
- if [ ! -z "$LIST_PKGS" ]; then
- for file in $LIST_PKGS; do
- less /$PKG_LIST_DIR/$file
- done
- else
- if [ ! -z "$ROOT" ]; then
- echo "$2: package not found on /$ROOT/$PKG_LIST_DIR"
- exit 1
- else
- echo "$2: package not found on /$PKG_LIST_DIR"
- exit 1
- fi
- fi
- else
- head_line
- exit 1
- fi
- ;;
- "-p"|"--print")
- if [ -f "$2" ]; then
- tar ztvf $2
- else
- echo $2: file not found
- fi
- ;;
- "-r"|"--remove")
- if [ ! -z "$2" ]; then
- if [ ! -z "$LIST_PKGS" ]; then
- removepkg /$ROOT/$PKG_LIST_DIR/$1-[0-9]*
- fi
- fi
- ;;
- "-s"|"--search")
- if [ ! -z "$2" ]; then
- eval "grep -l '\/$2$' /$ROOT/$PKG_LIST_DIR/*"
- fi
- ;;
- "-d"|"--description")
- if [ ! -z "$2" ]; then
- for file in $LIST_PKGS; do
- pack="`package_name $file`"
- echo -e " Package description for $file:\n"
- sed -n "/^$pack:/ { s/$pack://; p; }" $file
- done
- else
- head_line
- exit 1
- fi
- ;;
- *)
- if [ ! -z "$LIST_PKGS" ]; then
- for pack in $LIST_PKGS; do
- echo $pack
- done
- else
- if [ ! -z "$ROOT" ]; then
- echo "$1: package not found on /$ROOT/$PKG_LIST_DIR"
- exit 1
- else
- echo "$1: package not found on /$PKG_LIST_DIR"
- exit 1
- fi
- fi
- ;;
-esac
-
diff --git a/trunk/src/mkbuild b/trunk/src/mkbuild
deleted file mode 100755
index 9be4a16..0000000
--- a/trunk/src/mkbuild
+++ /dev/null
@@ -1,1904 +0,0 @@
-#!/bin/bash
-#
-# mkbuild: SlackBuild script maker
-# feedback: rudsonaalves at yahoo.com.br
-#
-# mkbuild is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or any later version.
-#
-# mkbuild is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place - Suite 330, Boston, MA 02111-1307, USA
-#
-# Based in model generic.SlackBuild from Luis
-# Version $Rev$ - $Author$
-#
-
-#--------------------------------------------------------------------
-# Functions
-#--------------------------------------------------------------------
-
-function mkbuild_use {
-
- # mkbuild help function
- echo -e "${red}NAME${normal}
- mkbuild - create SlackBuild script from ${green}.mkbuild${normal} input file
-
-${red}SYNOPSIS
- mkbuild${normal} [${green}OPTIONS${normal}] [${green}mkbuild_file${normal}]
-
-${red}DESCRIPTION${normal}
- [${green}mkbuild_file${normal}] input file with build rules and variables
-
- Input ${green}OPTIONS${normal}:
- ${red}-a${normal}, ${red}--author${normal} ${green}<author_name>${normal}
- author name
- ${red}-ai${normal}, ${red}--author_initials${normal} ${green}<initials>${normal}
- author signature
- ${red}-bn${normal}, ${red}--build-number${normal}
- change build number
- ${red}-cs${normal}, ${red}--const_string${normal} ${green}<string>${normal}
- construction string to source name
- ${red}-j${normal}, ${red}--jobs${normal} ${green}<jobs_number>${normal}
- Number of jobs to run simultaneously
- ${red}-md${normal}, ${red}--model${normal} ${green}<SlackBuild_model>${normal}
- SlackBuild model file
- ${red}-npss${normal}, ${red}--nps-strip${normal}
- Number of prefix slashes to strip
- ${red}-pf${normal}, ${red}--patch-files${normal}
- List of patch files
- ${red}-pn${normal}, ${red}--pkg_name${normal} ${green}<package_name>${normal}
- package name
- ${red}--prefix${normal} <install_dir>${normal}
- Prefix install directory
- ${red}-pv${normal}, ${red}--pkg_version${normal} ${green}<version>${normal}
- package version
- ${red}-sn${normal}, ${red}--src_name${normal} ${green}<source_name>${normal}
- source name
- ${red}-u${normal}, ${red}--url${normal} ${green}<url_address>${normal}
- url address to source
-
- Program options:
- ${red}-d${normal}, ${red}--debug${normal}
- enable debug mode
- ${red}-ss${normal}, ${red}--submit-slackbuild${normal}
- submit SlackBuilds in local svn SlackBuild tree
- ${red}-sm${normal}, ${red}--submit-mkbuild${normal}
- submit .mkbuild in local svn mkbuild tree
- ${red}-sa${normal}, ${red}--submit-all${normal}
- submit SlackBuild and .mkbuild files in local svn tree
- ${red}-cs${normal}, ${red}--commit-slackbuild${normal}
- commit SlackBuilds in svn SlackBuild tree
- ${red}-cm${normal}, ${red}--commit-mkbuild${normal}
- commit .mkbuild in svn mkbuild tree
- ${red}-ca${normal}, ${red}--commit-all${normal}
- commit SlackBuild and .mkbuild files in svn tree
- ${red}-im${normal}, ${red}--import-mkbuilds${normal}
- import mkbuild repository in a svn tree
- ${red}-is${normal}, ${red}--import-slackbuilds${normal}
- import SlackBuild repository in a svn tree
- ${red}-ia${normal}, ${red}-i${normal}, ${red}--import-all${normal}, ${red}--import${normal}
- import mkbuild and SlackBuild repositories in a svn tree
- ${red}--status${normal}
- print mkbuild and SlackBuild svn repositories status
- ${red}-ls${normal}, ${red}--list${normal}
- list mkbuild folder contents
- ${red}-h${normal}, ${red}--help${normal}
- this help mesage
- ${red}-n${normal}, ${red}--new${normal} ${green}<mkbuild_name>${normal}
- start a new mkbuild configure file
- ${red}-s${normal}, ${red}--search${normal} ${green}<mkbuild_name>${normal}
- search for a ${green}<mkbuild_name>${normal} file
- ${red}--sync${normal}
- synchronize mkbuilds repository
- ${red}-v${normal}, ${red}--version${normal}
- program version
- ${red}-V${normal}, ${red}--verbose${normal}
- print debug information
- ${red}-e${normal}, ${red}--edit${normal}
- edit a mkbuild
- ${red}-um${normal}, ${red}--update-manifest${normal}
- update manifest file
- ${red}-wc${normal}, ${red}--working-copy${normal}
- create an unversioned mkbuild working copy
- ${red}--get-param-copy${normal}
- get a parameter from a given mkbuild
-
-${red}EXAMPLES${normal}
- ${red}mkbuild -sa pyrex.mkbuild${normal}
- build pyrex.SlackBuild and submit .mkbuild and .SlackBuild in
- Slack.Sarava local tree.
- ${red}mkbuild -a \"Jose Araujo\" -ai \"ja\" -n pyrex${normal}
- make a basic pyrex.mkbuild with author name \"Jose Araujo\" and
- author signature \"ja\".
- ${red}mkbuild --prefix /usr/local pyrex.mkbuild${normal}
- build pyrex.SlackBuild with prefix /usr/local and pyrex.mkbuild
- variables and options definitions.
-
-${red}AUTHOR${normal}
- Written by ${blue}Rudson R. Alves${normal}
-
-${red}AVAILABILITY${normal}
- by svn: ${yellow}svn checkout http://slack.sarava.org/simplepkg${normal}
-
-${red}REPORTING BUGS${normal}
- Report bugs to <${blue}rudsonaalves[at]rra.etc.br${normal}>
-
-${red}COPYRIGHT${normal}
- 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
- <${yellow}http://www.gnu.org/licenses/gpl.html${normal}>. There is NO WARRANTY,
- to the extent permitted by law."
-}
-
-function set_parameters {
-
- # Get and set mkbuild variables with parameters input
- # Use: set_parameters $@
- # where $@ are the parameters input
- #
- # Parameter evaluation
- ACTION="build"
-
- local search match
-
- while [ "$1" ]; do
- case $1 in
- '-bn'|'--build-number')
- # Build Number
- BUILD_NUMBER=$2
- is_number $BUILD_NUMBER || handle_error "$ERROR_NOT_NUMBER" "--build-number"
- shift
- ;;
- '-ss'|'--submit-slackbuild')
- # Submit SlackBuild file
- SUBMIT_SLACKBUILD=$on
- ;;
- '-sm'|'--submit-mkbuild')
- # Submit mkbuild file
- SUBMIT_MKBUILD=$on
- ;;
- '-sa'|'--submit-all')
- # Submit SlackBuild and mkbuild file
- SUBMIT_SLACKBUILD=$on
- SUBMIT_MKBUILD=$on
- ;;
- '-cs'|'--commit-slackbuild')
- # Commit SlackBuild file
- ACTION="commit_slackbuild"
- set_mkbuild_name $2
- break # we need to break otherwise commit log message is evalued
- ;;
- '-cm'|'--commit-mkbuild')
- # commit mkbuild file
- ACTION="commit_mkbuild"
- set_mkbuild_name $2
- break # we need to break otherwise commit log message is evalued
- ;;
- '-ca'|'--commit-all')
- # Commit SlackBuild and mkbuild file
- ACTION="commit_all"
- set_mkbuild_name $2
- break # we need to break otherwise commit log message is evalued
- ;;
- '-is'|'--import-slackbuilds')
- # Import SlackBuilds
- ACTION="import_slackbuilds"
- set_mkbuild_name $2
- break # we need to break otherwise specific arguments are evalued
- ;;
- '-im'|'--import-mkbuilds')
- # Import mkbuilds
- ACTION="import_mkbuilds"
- set_mkbuild_name $2
- break # we need to break otherwise specific arguments are evalued
- ;;
- '-ia'|'-i'|'--import-all'|'--import')
- # Import SlackBuilds and mkbuilds
- ACTION="import_all"
- set_mkbuild_name $2
- break # we need to break otherwise specific arguments are evalued
- ;;
- '-ds'|'--delete-slackbuild')
- # Delete SlackBuild
- ACTION="delete_slackbuild"
- set_mkbuild_name $2
- break # we need to break otherwise specific arguments are evalued
- ;;
- '-dm'|'--delete-mkbuild')
- # Delete mkbuild
- ACTION="delete_mkbuild"
- set_mkbuild_name $2
- break # we need to break otherwise specific arguments are evalued
- ;;
- '-da'|'--delete-all')
- # Delete mkbuild and SlackBuild
- ACTION="delete_all"
- set_mkbuild_name $2
- break # we need to break otherwise specific arguments are evalued
- ;;
- '--status')
- # Repository status
- ACTION="status"
- set_mkbuild_name $2
- break # we need to break otherwise specific arguments are evalued
- ;;
- '-ls'|'--list')
- # List mkbuild folder contents
- ACTION="list"
- set_mkbuild_name $2
- break # we need to break otherwise specific arguments are evalued
- ;;
- '-um'|'--update-manifest')
- ACTION="update_manifest"
- set_mkbuild_name $2
- SOURCE_FILE="$3"
- shift 2
- ;;
- '-n'|'--new')
- # New mkbuild configure file
- set_mkbuild_name $2
- ACTION="new"
- shift
- ;;
- '-s'|'--search')
- # Search for a mkbuild file
- set_mkbuild_name $2
- ACTION='search'
- ;;
- '-e'|'--edit')
- # Open mkbuild with $EDITOR
- set_mkbuild_name $2
- ACTION='edit'
- break # we need to break otherwise specific arguments are evalued
- ;;
- '-wc'|'--working-copy')
- # Create an unversioned mkbuild working copy
- set_mkbuild_name $2
- ACTION='working_copy'
- break # we need to break otherwise specific arguments are evalued
- ;;
- '--get-param')
- # Get parameter for a given mkbuild
- set_mkbuild_name $2
- ACTION='get_param'
- break # we need to break otherwise specific arguments are evalued
- ;;
- '-d'|'--debug')
- # Debug mode
- set -x
- ;;
- '-h'|'--help' )
- # Show help mesage
- mkbuild_use && exit 0
- ;;
- '--sync' )
- # Synchronize mkbuilds repository
- mkbuild_update_keyring
- sync_svn_repo $MKBUILDS_DIR $MKBUILDS_SVN
- exit $?
- ;;
- '-v'|'--version')
- # Show program version
- eecho $normal "\n$BASENAME version $PROG_VERSION\n"
- ;;
- '-V' | '--verbose')
- # Enable verbose mode
- VERBOSE=1
- ;;
- '-a'|'--author')
- # Enter with author name
- AUTHOR=$2
- [ ${AUTHOR:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR AUTHOR
- shift
- ;;
- '-ai'|'--author_initials')
- # Enter with author name
- AUTHOR_INITIALS=$2
- [ ${AUTHOR_INITIALS:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR AUTHOR_INITIALS
- shift
- ;;
- '-cs'|'--const_string')
- # Enter with construction source name string
- CONST_STRING=$2
- [ ${CONST_STRING:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR CONST_STRING
- shift
- ;;
- '-md'|'--model')
- # Enter with SlackBuild model
- MODEL=$2
- [ ${MODEL:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR MODEL
- shift
- ;;
- '-j'|'--jobs')
- # Enter with SlackBuild model
- NUMJOBS=$2
- [ ${NUMJOBS:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR NUMJOBS
- ! is_number $NUMJOBS && handle_error $ERROR_NOT_NUMBER NUMJOBS
- NUMJOBS="-j$NUMJOBS"
- shift
- ;;
- '--prefix')
- # Enter with SlackBuild model
- PREFIX=$2
- [ ${PREFIX:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR PREFIX
- shift
- ;;
- '-pn'|'--pkg_name')
- # Enter with package name
- PKG_NAME=$2
- [ ${PKG_NAME:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR PKG_NAME
- shift
- ;;
- '-pv'|'pkg_version')
- # Enter with package version
- VERSION=$2
- [ ${VERSION:0:1} = "-" ] && handle_error $ERROR_MKBUILD_INPUT_PAR VERSION
- shift
- ;;
- '-sn'|'--src_name')
- # Enter with source name
- SRC_NAME=$2
- [ ${SRC_NAME:0:1} = '-' ] && handle_error $ERROR_MKBUILD_INPUT_PAR SRC_NAME
- shift
- ;;
- '-u'|'--url')
- # Enter with url address
- URL=$2
- [ ${URL:0:1} = '-' ] && handle_error $ERROR_MKBUILD_INPUT_PAR URL
- shift
- ;;
- '-pf'|'--patch-files')
- # Path files list
- PATCH_FILES=$2
- [ ${PATCH_FILES:0:1} = '-' ] && handle_error $ERROR_MKBUILD_INPUT_PAR PATCH_FILES
- shift
- ;;
- '-npss'|'--nps-strip')
- # Number of prefix slashes to strip
- NPS_STRIP=$2
- [ ${NPS_STRIP:0:1} = '-' ] && handle_error $ERROR_MKBUILD_INPUT_PAR NPS_STRIP
- shift
- ;;
- *)
- # mkbuild input file
- set_mkbuild_name $1
- ;;
- esac
- shift
- done
-
- if [ "${MKBUILD_NAME:0:1}" == "-" ]; then
- echo "Invalid mkbuild name $MKBUILD_NAME"
- exit 1
- fi
-
- if [ ! -e "$MKBUILD_NAME" ] && [ "$ACTION" != "search" ] && [ "$ACTION" != "status" ]; then
-
- search="`search_mkbuild`"
-
- if [ ! -z "$search" ]; then
- for match in $search; do
- MKBUILD_NAME="$match"
- WORK="`dirname $match`"
- break
- done
- else
- if [ "$ACTION" == "build" ]; then
- ACTION='new'
- fi
- fi
-
- fi
-
- MKBUILD_NAME="${MKBUILD_NAME//.mkbuild}.mkbuild"
- MKBUILD_BASENAME="`basename $MKBUILD_NAME .mkbuild`"
-
-}
-
-function get_variable {
-
- # Get variable value from mkbuild file (MKBUILD_NAME)
- [ $# -ne 1 ] && handle_error $ERROR_PAR_NUMBER
- [ -z $MKBUILD_NAME ] && echo "Warning: no [mkbuild_file]." && return 0
-
- sed -n '1,/^#>>/ p' $MKBUILD_NAME | grep "^\[\[${1}\]\]" | tail -n 1 | cut -f2- -d= | sed -e 's/^"//' -e 's/"$//'
-
-}
-
-function edit_file {
-
- # Edit file $3, by change string [[$1]] to $2
- [ $# -ne 3 ] && handle_error $ERROR_PAR_NUMBER
-
- eval "sed -i 's¦\[\[$1\]\]¦$2¦g' $3"
-
-}
-
-function edit_file_full {
-
- # Edit file $3, by change string $1 to $2
- [ $# -ne 3 ] && handle_error $ERROR_PAR_NUMBER
-
- eval "sed -i 's¦$1¦$2¦' $3"
-
-}
-
-function start_build {
-
- # Build initial sections
- [ $# -ne 1 ] && handle_error $ERROR_PAR_NUMBER
-
- 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
- if [ "$ARCH" == "noarch" ]; then
- sed -i 's/^ARCH=.*$/ARCH="noarch"/' $1
- else
- edit_file "ARCH" "$ARCH" $1
- fi
- 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 "MKBUILD COMPRESS" "$MKBUILD_COMPRESS" $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 "UNPACKER" "$UNPACKER" $1
- edit_file "UNPACKER FLAGS" "$UNPACKER_FLAGS" $1
- edit_file "BUILD NUMBER" "$BUILD_NUMBER" $1
- edit_file "PATCH FILES" "$PATCH_FILES" $1
- edit_file "NUMBER OF PREFIX SLASHES TO STRIP" "$NPS_STRIP" $1
-
- edit_file_full "\$EXTENSION" "$EXTENSION" $1
-
-}
-
-function clear_files {
-
- # Remove temporary files
- [ ! -z $AUX_TMP ] && rm $AUX_TMP 2>/dev/null
- [ ! -z $SLACKBUILD_TEMP ] && rm $SLACKBUILD_TEMP 2>/dev/null
- [ ! -z $DIFF_FILE ] && rm $DIFF_FILE 2>/dev/null
- if [ "`ls $TMP/`" == "" ]; then
- rm -rf $TMP
- fi
- chmod 755 *.SlackBuild 2>/dev/null
-
-}
-
-function set_status {
-
- # Set status section
- # $1 - Section
- # $2 - Status
- # $3 - file
- [ $# -ne 3 ] && handle_error $ERROR_PAR_NUMBER
- if [ "`get_status $1 $3`" != "all" ]; then
- verbose "Section $1 $2"
- eval "sed -i 's/^<$1>.*$/<$1> $2/' $3"
- else
- echo "Warning: Section $1 have status all. Can't change!"
- fi
-
-}
-
-function get_status {
-
- # Get status from section
- # $1 - Section
- # $2 - file
- [ $# -ne 2 ] && handle_error $ERROR_PAR_NUMBER
- eval "sed '/^<$1>.*$/! d' $2"
-
-}
-
-function get_mkbuild_status {
-
- # Get status from mkbuild file
- # $1 section
- eval "sed '/^#>>/,/<</ ! d; /^#/ d; /: *$1$/! d; s/^ *\(.*\):.*$/\1/' $MKBUILD_NAME"
-}
-
-function activate_sections {
-
- # Enable and disable sections
- ACTIONS_LIST=`sed '/^#>>/,/<</ ! d; /^#/ d ' $MKBUILD_NAME | tr -d ' '`
- for i in $ACTIONS_LIST; do
- STATUS=`echo $i | cut -f1 -d:`
- SECTION=`echo $i | cut -f2 -d:`
- set_status $SECTION $STATUS $SLACKBUILD_TEMP
- done
-
-}
-
-function build_slackbuild {
-
- # Clean SlackBuild
- # Make SlackBuild backup
- [ -e $SLACKBUILD ] && mv $SLACKBUILD $SLACKBUILD.old
- # Remove off sections
- sed -i '/^<[a-z].*> off/, /^<\/[a-z].*>$/ d' $SLACKBUILD_TEMP
- # Remove sections names
- sed -i '/^<.*$/ d' $SLACKBUILD_TEMP
- # Remove clear lines
- # isto pode ser feito com "cat -s SLACKBUILD_TEMP ..."
- #sed -i ':i ; $! N; s/\n/Ø/ ; t i ; s/Ø\{3,\}/ØØ/g ; s/Ø/\n/g' $SLACKBUILD_TEMP
- cat -s $SLACKBUILD_TEMP > $SLACKBUILD
- # Remove from frist line do #!/... line
- #sed '1,/^#\!/ {/^#\!/ b; d }' $SLACKBUILD_TEMP > $SLACKBUILD
- sed -i '1,/^#\!/ {/^#\!/ b; d }' $SLACKBUILD
-
-}
-
-function section_edit {
-
- # Edits a section substituting its content
- [ -z $MKBUILD_NAME ] && return 0
-
- SECTION_LIST=`grep '^#>[a-z]' $MKBUILD_NAME | cut -c3-`
-
- # Check for sections change
- [ -z "$SECTION_LIST" ] && return 0
-
- # Change sections
- for i in $SECTION_LIST; do
- verbose "Change section $i"
- if [ "$i" = "slackdesc" ]; then
- # Special slackdesc section
- slackdesc_edit > $AUX_TMP
- mv $AUX_TMP $SLACKBUILD_TEMP
- else
- # Others sections
- section_change $i
- fi
- done
-
-}
-
-function slackdesc_edit {
-
- # Edit slackdesc section
- sed -n '1,/|-----/ { /<slackdesc>/ b; /|-----/ b; p; }' $SLACKBUILD_TEMP
- echo -n $PKG_NAME | tr [a-z+\-] " "
- echo -n "|-----handy-ruler"
- let N=18+${#PKG_NAME}
- for i in `seq $N $SLACKDESC_LEN`; do
- echo -n "-"
- done
- echo -en "|\n"
-
- sed -n '/#>slackdesc/,/#<slackdesc/ { /^#/ b; p }' $MKBUILD_NAME
- sed '1, /\[\[SLACK-DESC\]\]/ d' $SLACKBUILD_TEMP
-
-}
-
-function section_change {
-
- # Change section lines
- [ $# -ne 1 ] && handle_error $ERROR_PAR_NUMBER
-
- # Copy first half
- eval "sed '1,/^<$1>/! d' $SLACKBUILD_TEMP > $AUX_TMP"
- # Paste new section
- eval "sed -n '/#>$1/,/#<$1/ { /^#>/ b; /^#</ b; p }' $MKBUILD_NAME >> $AUX_TMP"
- # Copy second halt
- eval "sed '/^<\/$1>/,$ ! d' $SLACKBUILD_TEMP >> $AUX_TMP"
-
- mv $AUX_TMP $SLACKBUILD_TEMP
-
-}
-
-function make_slack_required {
-
- # Build slack-required file
- [ -e $WORK/slack-required ] && mv $WORK/slack-required $WORK/slack-required.old
- [ -z "$SLACK_REQUIRED" ] && return 0
-
- echo -e "# Dependency list to $SRC_NAME\n#\n# dependency [condition] [version]]" > $WORK/slack-required
-
- echo $SLACK_REQUIRED | sed 's/:/\n/g' | while read i; do
- REQ=`echo $i | awk '{ print $1 }'`
- CON=`echo $i | awk '{ print $2 }'`
- VER=`echo $i | awk '{ print $3 }'`
- echo -e "$REQ\t\t$CON\t\t$VER" >> $WORK/slack-required
- done
-
-}
-
-function change_other_parameters {
-
- # Change other parameters started by '[[' in .mkbuild file
- sed '1,/#>>/ ! d' $MKBUILD_NAME | grep -v '^#' | grep '^\[\[[A-Za-z]' | \
- while read i; do
- CHANGE="`echo $i | sed 's/\[\[\(.*\)\]\]=\"\(.*\)\"/\1/'`"
- VALUE="`echo $i | sed 's/\[\[\(.*\)\]\]=\"\(.*\)\"/\2/'`"
- edit_file "$CHANGE" "$VALUE" $SLACKBUILD
- done
-
-}
-
-function get_slackbuild_path {
-
- # Search for SlackBuild Path in order:
- # - command line parameter;
- # - mkbuild parameters file;
- # - SlackBuild tree;
- # - Gentool-portage internet tree;
- # - default path (others/unclassified/$PKG_NAME).
-
- # Start AUX_PATH with command line parameter
- AUX_PATH="$SLACKBUILD_PATH"
-
- # Get in mkbuild
- [ -z "$AUX_PATH" ] && AUX_PATH=`validate_parameter "$SLACKBUILD_PATH" "SLACKBUILD PATH" ""`
-
- # SlackBuild path in SlackBuild tree
- [ -z "$AUX_PATH" ] && AUX_PATH=`cd $SLACKBUILDS_DIR && find . -name $SLACKBUILD | sed -e 's/^\.\///' | xargs dirname 2>/dev/null`
-
- # SlackBuild path default
- [ -z "$AUX_PATH" ] && AUX_PATH="others/unclassified/$PKG_NAME"
-
- # Down case SlackBuild path
- eval "echo $AUX_PATH" | tr [A-Z] [a-z]
-
-}
-
-function apply_mkpatch {
-
- # Apply mkpatch if exist
- sed -n '/#p>/,/#p</ { /^#/ b; p }' $MKBUILD_NAME > $DIFF_FILE
- if [ -s $DIFF_FILE ]; then
- mkpatch $DIFF_FILE $SLACKBUILD_TEMP > $AUX_TMP || handle_error $?
- [ ! -s $AUX_TMP ] && handle_error 1
- cp $AUX_TMP $SLACKBUILD_TEMP
- [ $VERBOSE -eq $on ] && ( echo -e "\nApply mkpath ..."; cat $DIFF_FILE )
- fi
-
-}
-
-# ----------------------------------------------------------------
-# svn functions
-# ----------------------------------------------------------------
-
-function submit_slackbuild {
-
- # Submit SlackBuild in local Slack.Sarava tree
- echo -e "\nSubmiting $SLACKBUILD"
-
- local candidate oldplace
-
- # check SlackBuilds directory
- [ ! -e $SLACKBUILDS_DIR ] && createpkg --sync
-
- # change to SlackBuilds directory
- cd $SLACKBUILDS_DIR/
-
- # Add SlackBuild scripts
- # check path
- [ ! -e $SLACKBUILD_PATH ] && svn_mkdir $SLACKBUILD_PATH
-
- # add SlackBuild
- svn_copy $WORK/`basename $SLACKBUILD` $SLACKBUILD_PATH
-
- # check and add slack-required
- [ -e $WORK/slack-required ] && svn_copy $WORK/slack-required $SLACKBUILD_PATH
-
- for i in `ls $WORK | grep -E -v '(SlackBuild|old|slack-required|.mkbuild$|.tmp$)\*{0,1}$'`; do
- svn_copy $WORK/$i $SLACKBUILD_PATH
- done
-
- # remove stuff in old places
- for candidate in $(find . -name $(basename $SLACKBUILD)); do
- oldplace="`dirname $candidate | sed -e 's/^\.\///'`"
- if [ "$oldplace" != "$SLACKBUILD_PATH" ]; then
- echo "Removing SlackBuild found at old path $oldplace"
- svn_del $oldplace
- fi
- done
-
- if [ "$SIGN_MANIFESTS" -eq $on ]; then
- repo_gpg_key $SLACKBUILDS_DIR
- fi
-
- cd $WORK
-
-}
-
-function submit_mkbuild {
-
- # Submit mkbuild in local mkbuild Slack.Sarava tree
- echo -e "\nSubmiting $MKBUILD_NAME"
-
- local candidate oldplace
-
- # Check mkbuild directory
- [ ! -d $MKBUILDS_DIR ] && build_svn_repo $MKBUILDS_DIR $MKBUILDS_SVN
-
- # Get mkbuild path in parameter file
- MKBUILD_PATH=$SLACKBUILD_PATH
-
- # Change to mkbuilds directory
- cd $MKBUILDS_DIR/
-
- # Check path
- [ ! -e $MKBUILD_PATH ] && svn_mkdir $MKBUILD_PATH
-
- # Add relevant files
- for i in `ls $WORK | grep -E -v '(SlackBuild|old|slack-required|.tmp$)\*{0,1}$'`; do
- if [ "`basename $i`" != "$DIST_SRC_NAME" ]; then
- if ! is_the_same $MKBUILD_PATH $WORK; then
- svn_copy $WORK/$i $MKBUILD_PATH
- else
- svn_add $WORK/$i
- fi
- fi
- done
-
- # Remove stuff in old places
- for candidate in $(find . -name $(basename $MKBUILD_NAME)); do
- oldplace="`dirname $candidate | sed -e 's/^\.\///'`"
- if [ "$oldplace" != "$MKBUILD_PATH" ]; then
- echo "Removing mkbuild found at old path $oldplace"
- svn_del $oldplace
- fi
- done
-
- submit_cleanup
-
- cd $WORK
-
-}
-
-function submit_cleanup {
-
- # Remove files that should not be stored at the mkbuilds repository
- if is_the_same $MKBUILD_PATH $WORK; then
- (
- cd $WORK
- rm -f *.old *.tmp *.SlackBuild slack-required $DIST_SRC_NAME
- )
- fi
-
-}
-
-function import_mkbuilds {
-
- # import mkbuilds into a subversion repository
- # usage: repository_import [repository]
-
- local repository="$1"
-
- if [ -z "$repository" ]; then
- repository="file:////var/svn/mkbuilds"
- fi
-
- repository_import $MKBUILDS_DIR $repository
-
-}
-
-function import_slackbuilds {
-
- # import SlackBuilds into a subversion repository
- # usage: repository_import [repository]
-
- local repository="$1"
-
- if [ -z "$repository" ]; then
- repository="file:////var/svn/slackbuilds"
- fi
-
- repository_import $SLACKBUILDS_DIR $repository
-
-}
-
-function repository_status {
-
- local cwd
-
- if svn_folder $MKBUILDS_DIR; then
- echo "Status of $MKBUILDS_DIR."
- cwd="`pwd`"
- cd $MKBUILDS_DIR && su_svn status
- cd $cwd
- fi
-
- if svn_folder $SLACKBUILDS_DIR; then
- cwd="`pwd`"
- echo "Status of $SLACKBUILDS_DIR."
- cd $SLACKBUILDS_DIR && su_svn status
- cd $cwd
- fi
-
- exit 0
-
-}
-
-# ----------------------------------------------------------------
-# general functions
-# ----------------------------------------------------------------
-
-function validate_parameter {
-
- # Validate parameter in .mkbuild file
- [ $# -ne 3 ] && handle_error $ERROR_PAR_NUMBER
-
- if [ ! -z "$1" ]; then
- echo "$1"
- else
- local STRING="`get_variable "$2"`"
- if [ ! -z "$STRING" ]; then
- echo "$STRING"
- else
- echo "$3"
- fi
- fi
-
-}
-
-function decompress_find {
-
- # Find decompressor program and test flag
- case $EXTENSION in
- 'gz'|'GZ')
- DECOMPRESSOR="gunzip"
- DECOMPRESSOR_TEST_FLAG="-t"
- ;;
- 'bz2'|'BZ2')
- DECOMPRESSOR="bunzip2"
- DECOMPRESSOR_TEST_FLAG="-t"
- ;;
- 'zip'|'ZIP')
- DECOMPRESSOR="unzip"
- DECOMPRESSOR_TEST_FLAG="-t"
- ;;
- *)
- handle_error $ERROR_MKBUILD_CONSTRUCTION "DECOMPRESSOR"
- ;;
- esac
-
-}
-
-function load_parameters {
-
- # Load Createpkg parameters
- SOURCE_DIR="`eval_parameter SOURCE_DIR /var/simplepkg/sources`"
- SLACKBUILDS_DIR="`eval_parameter SLACKBUILDS_DIR /var/simplepkg/slackbuilds`"
- [ ! -d $SLACKBUILDS_DIR ] && mkdir -p $SLACKBUILDS_DIR
-
- MKBUILDS_DIR="`eval_parameter MKBUILDS_DIR /var/simplepkg/mkbuilds`"
- [ ! -d $SLACKBUILDS_DIR ] && mkdir -p $SLACKBUILDS_DIR
-
- SLACKBUILDS_SVN="`eval_parameter SLACKBUILDS_DIR http://slack.sarava.org/slackbuilds`"
- MKBUILDS_SVN="`eval_parameter MKBUILDS_SVN http://slack.sarava.org/mkbuilds`"
- SVN_USER="`eval_parameter MKBUILDS_SVN_USER`"
- SVN_GROUP="`eval_parameter MKBUILDS_SVN_GROUP`"
-
- COLOR_MODE="`eval_parameter COLOR_MODE none`"
- TMP="`eval_parameter TMP /tmp`"
- [ ! -e $TMP ] && mkdir -p $TMP
-
- MKBUILD_COMPRESS="`eval_parameter MKBUILD_COMPRESS tgz`"
- MKBUILD_AUTHOR="`eval_parameter MKBUILD_AUTHOR`"
- MKBUILD_AUTHOR_INITIALS="`eval_parameter MKBUILD_AUTHOR_INITIALS`"
-
- SIGN_MANIFESTS="`eval_boolean_parameter SIGN_MANIFESTS $off`"
- SIGN_MANIFESTS_USER="`eval_parameter SIGN_MANIFESTS_USER`"
- SIGN_MANIFESTS_KEYID="`eval_parameter SIGN_MANIFESTS_KEYID`"
- SIGN_MANIFESTS_WITH_GPG_AGENT="`eval_boolean_parameter SIGN_MANIFESTS_WITH_GPG_AGENT $off`"
-
- if [ ! -z "$SIGN_MANIFESTS_KEYID" ]; then
- SIGN_MANIFESTS_KEYID="`echo $SIGN_MANIFESTS_KEYID | tr '[:lower:]' '[:upper:]'`"
- fi
-
- if [ "$SIGN_MANIFESTS_WITH_GPG_AGENT" -eq $on ]; then
- GPG_AGENT_OPTION="--use-agent"
- else
- GPG_AGENT_OPTION=""
- fi
-
- # For use at common.sh functions
- SIGN="$SIGN_MANIFESTS"
- SIGN_KEYID="$SIGN_MANIFESTS_KEYID"
- SIGN_USER="$SIGN_MANIFESTS_USER"
-
- if [ "$SIGN_MANIFESTS" -eq $on ]; then
- get_sign_user
- fi
-
-}
-
-function file_metainfo {
-
- # get integrity file metadata
- # usage: file_metainfo <file> <file_type> <manifest_file>
-
- local sum="" file="$1" file_type="`echo $2 | tr '[:lower:]' '[:upper:]'`"
- local size algo candidate folders path manifest_file="$3"
- local dist_name="`basename $file`"
-
- if [ -d "$file" ]; then
- return
- fi
-
- if [ -z "$file_type" ]; then
- file_type="AUX"
- fi
-
- if [ ! -e "$file" ]; then
- if [ "$file_type" == "DIST" ]; then
-
- # Add DIST information only if source is not under revision control
- if [ $SVN_MOD -eq $on -o $GIT_MOD -eq $on ]; then
- return
- fi
-
- # Force DIST file name at Manifest
- dist_name="$DIST_SRC_NAME"
-
- # Determine file location
- get_dist_file
-
- # Update Manifest metadata
- if [ -e "$DIST_SRC_LOCATION" ]; then
- file="$DIST_SRC_LOCATION"
- else
- echo "$file_type $dist_name " >> $manifest_file # end space is important
- return 1
- fi
-
- elif [ "$file_type" == "PATCH" ]; then
-
- # Determine file location
- get_patch_file $file
-
- # Update Manifest metadata
- if [ -e "$DOWNLOADED_PATCH_LOCATION" ]; then
- file="$DOWNLOADED_PATCH_LOCATION"
- else
- echo "$file_type $dist_name " >> $manifest_file # end space is important
- return 1
- fi
-
- else
- echo "$file_type $dist_name " >> $manifest_file # end space is important
- return 1
- fi
- fi
-
- for algo in md5 rmd160 sha1 sha256 sha512; do
- sum="$sum `echo $algo | tr '[:lower:]' '[:upper:]'` `gethash $algo $file`"
- done
-
- echo $file_type $dist_name `file_size $file` $sum >> $manifest_file
-
- if [ "$file_type" == "DIST" ] || [ "$file_type" == "PATCH" ]; then
- echo "Please make sure that the following hashes are correct:"
- grep -e "^$file_type $dist_name " $manifest_file
- fi
-
-}
-
-function update_manifest_info {
-
- # update manifest metainfo for a given file
- # usage: update_manifest_info <file> <file_type>
-
- local tmpfile file="$1" file_type="`echo $2 | tr '[:lower:]' '[:upper:]'`"
-
- if [ -z "$file_type" ]; then
- file_type="`file_extension $file | tr '[:lower:]' '[:upper:]'`"
- fi
-
- # Update Manifest file
- if [ ! -e "$WORK/Manifest" ]; then
- touch $WORK/Manifest
- fi
-
- # Set temporary file
- tmpfile="`mktemp $TMP/mkbuild_manifest.XXXXXX`"
-
- # Update metadata
- sed -e "/^$file_type `basename $file` /d" $WORK/Manifest > $tmpfile
- file_metainfo $file $file_type $tmpfile
-
- if [ "$?" != "0" ]; then
- echo "Could not add hashes for $file on Manifest: file not found."
- echo "Please do it with --update-manifest."
- fi
-
- # Save Manifest changes
- strip_gpg_signature $tmpfile | sort > $WORK/Manifest
-
- rm -f $tmpfile
-
-}
-
-function edit_manifest {
-
- local option="$1"
-
- # Check if existing Manifest is properly signed
- if ! check_manifest_signature; then
- echo "Invalid signature at $WORK/Manifest, aborting."
- return 1
- fi
-
- # Update Manifest file
- echo "Updating Manifest..."
-
- # Update mkbuild metainformation
- update_manifest_info $WORK/`basename $MKBUILD_NAME`
-
- # Update SlackBuild information
- update_manifest_info $WORK/`basename $SLACKBUILD`
-
- # Update slack-required information
- if [ -e "$WORK/slack-required" ]; then
- update_manifest_info $WORK/slack-required
- fi
-
- if [ "$option" == "--update" ]; then
- # Add DIST information only if source is not under revision control
- if [ $SVN_MOD -eq $on -o $GIT_MOD -eq $on ]; then
- echo "Source is under version control system, not adding hashes to Manifest."
- else
- echo "Updating DIST information at $MKBUILD_NAME Manifest..."
-
- # Determine file location
- get_dist_file $SOURCE_FILE
-
- # Update Manifest metadata
- if [ -e "$DIST_SRC_LOCATION" ]; then
- update_manifest_info $DIST_SRC_LOCATION dist
- else
- echo "Can't get $DIST_SRC_NAME."
- fi
- fi
- else
- # Add source code information if its not already there
- if ! grep -q -e "^DIST $DIST_SRC_NAME " $WORK/Manifest; then
- update_manifest_info $DIST_SRC_NAME dist
- fi
- fi
-
- # Update patches
- for i in `find $WORK | grep -E '(.diff$|.diff.gz$|.diff.bz2$|.patch$|.patch.gz$|.patch.bz2$)\*{0,1}$'`; do
- if [ ! -d "$WORK/$i" ] && ! grep -q -e "^PATCH `basename $i` " $WORK/Manifest; then
- update_manifest_info $i patch
- fi
- done
-
- # Update patches from URLs
- for i in $PATCH_URLS; do
- if ! grep -q -e "^PATCH `basename $i` " $WORK/Manifest; then
- update_manifest_info $i patch
- fi
- done
-
- # Update miscelaneous information
- for i in `find $WORK | grep -E -v '(SlackBuild|old|slack-required|.mkbuild$|.tmp$|Manifest$)\*{0,1}$' | \
- grep -E -v '(.diff$|.diff.gz$|.diff.bz2$|.patch$|.patch.gz$|.patch.bz2$)\*{0,1}$' | \
- grep -v "/\.svn"`; do
- # Avoid folders, dotfiles and DIST files
- if [ ! -d "$WORK/$i" ] && \
- [ "`basename $i`" != "$DIST_SRC_NAME" ] && \
- ! echo "`basename $i`" | grep -q -e "^\."; then
- update_manifest_info $i misc
- fi
- done
-
- # Finally, sign the Manifest
- sign_manifest
-
-}
-
-function get_file {
-
- # download a file
- # usage: download_file <file_type> <url> [file] [dist_name]
-
- local folder folders path candidate
- local file_type="`echo $1 | tr '[:lower:]' '[:upper:]'`"
- local url="$2" file="$3" file_name="$4"
- local protocol="`echo $url| cut -d : -f 1 | tr '[:upper:]' '[:lower:]'`"
-
- if [ -z "$file_name" ]; then
- if [ "$file_type" == "DIST" ]; then
- file_name="$DIST_SRC_NAME"
- else
- file_name="`basename $url`"
- fi
- fi
-
- # Clean global var
- DOWNLOADED_FILE_LOCATION=""
-
- # Determine file location
- if [ -d "$file" ]; then
-
- folder="$file"
- file="$file_name"
- for candidate in $(find $folder -name $(basename $file)); do
- if [ ! -z "$candidate" ]; then
- break 2
- fi
- done
-
- if [ ! -z "$candidate" ]; then
- echo "Using $(basename $candidate) found at $(dirname $candidate) to hash at the Manifest."
- file="$candidate"
- else
- echo "Can't find $file at $folder."
- return 1
- fi
-
- elif [ -z "$file" ]; then
-
- file="$file_name"
- folders="$WORK $TMP $SOURCE_DIR"
- if ! is_the_same /tmp $TMP; then
- folders="$folders /tmp"
- fi
-
- echo "Trying to find $(basename $file) at $folders..."
-
- for path in $folders; do
- for candidate in $(find $path -name $(basename $file) 2> /dev/null); do
- if [ ! -z "$candidate" ]; then
- break 2
- fi
- done
- done
-
- if [ ! -z "$candidate" ]; then
-
- echo "Using $(basename $candidate) found at $(dirname $candidate) to hash at the Manifest."
- file="$candidate"
-
- elif [ "$protocol" == "https" ] || \
- [ "$protocol" == "http" ] || \
- [ "$protocol" == "ftp" ]; then
-
- # Try to donwload the file
- echo "File $file not found, trying to download it..."
- if [ ! -e "$file" ]; then
- if is_writable_folder $SOURCE_DIR/$PKG_NAME; then
- file="$SOURCE_DIR/$PKG_NAME/`basename $file_name`"
- wget "$url" -O "$file"
- if [ "$?" != "0" ]; then
- echo "Could not download $file"
- return 1
- fi
- elif is_writable_folder $TMP; then
- file="$TMP/`basename $file_name`"
- if [ ! -e "$file" ]; then
- wget "$url" -O "$file"
- if [ "$?" != "0" ]; then
- echo "Could not download $file"
- return 1
- fi
- fi
- elif ! is_the_same /tmp $TMP; then
- file="/tmp/`basename $file_name`"
- if [ ! -e "$file" ]; then
- wget "$url" -O "$file"
- if [ "$?" != "0" ]; then
- echo "Could not download $file"
- return 1
- fi
- fi
- else
- echo "Could not download $file"
- return 1
- fi
- fi
- fi
- fi
-
- if [ -e "$file" ]; then
- DOWNLOADED_FILE_LOCATION="$file"
- fi
-
-}
-
-function get_dist_file {
-
- # get package source code
- # usage: get_dist_file <url> [file_name]
-
- DIST_SRC_LOCATION=""
- get_file dist $DIST_SRC_URL
- DIST_SRC_LOCATION="$DOWNLOADED_FILE_LOCATION"
-
-}
-
-function get_patch_file {
-
- # get a patch
- # usage: get_patch <file_name>
-
- local patch_url file_name="$1"
-
- if [ -z "$file_name" ]; then
- return 1
- fi
-
- DOWNLOADED_PATCH_LOCATION=""
-
- for patch_url in $PATCH_URLS; do
- if [ "`basename $file_name`" == "`basename $patch_url`" ]; then
- get_file patch $patch_url
- DOWNLOADED_PATCH_LOCATION="$DOWNLOADED_FILE_LOCATION"
- break
- fi
- done
-
-}
-
-function update_manifest {
-
- # Get mkbuild values
- get_mkbuild_values
-
- # Update the Manifest
- edit_manifest --update
-
-}
-
-function if_previous_error {
-
- if [ "$?" != "0" ]; then
- handle_error $*
- fi
-
-}
-
-function verbose {
-
- if [ $VERBOSE -eq $on ]; then
- echo $*
- fi
-
-}
-
-function get_mkbuild_values {
-
- # Get values
- # Author name
- AUTHOR=${AUTHOR:="`get_variable "SLACKBUILD AUTHOR"`"}
- [ -z "$AUTHOR" ] && handle_error $ERROR_MKBUILD_CONSTRUCTION "SLACKBUILD AUTHOR"
- verbose "[[SLACKBUILD AUTHOR]]=\"$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"`"
- if_previous_error $ERROR_MKBUILD_CONSTRUCTION "SLACKBUILD AUTHOR INITIALS"
- verbose "[[SLACKBUILD AUTHOR INITIALS]]=\"$AUTHOR_INITIALS\""
-
- # URL program
- URL=`validate_parameter "$URL" "DOWNLOAD FOLDER URL" ""`
- if_previous_error handle_error $ERROR_MKBUILD_CONSTRUCTION "URL"
- verbose "[[URL]]=\"$URL\""
-
- AUX=`get_mkbuild_status "svn_source"`
- SVN_MOD=`convert_boolean "$AUX"`
-
- AUX=`get_mkbuild_status "git_source"`
- GIT_MOD=`convert_boolean "$AUX"`
-
- # Check sections
- if [ $SVN_MOD -eq $on -o $GIT_MOD -eq $on -o $URL == "" ]; then
- LIST_OFF="download_source md5sum_download_and_check_0 md5sum_download_and_check_1 gpg_signature_check untar_source"
- verbose -e "\nCheck subversion or empty URL"
- for i in $LIST_OFF; do
- if [ `get_mkbuild_status "$i"` != "off" ]; then
- handle_error $ERROR_MKBUILD_VCS
- else
- verbose -e "off: $i is ok."
- fi
- done
- fi
-
- STR_MOUNT="`echo $URL | sed 's/.*\.\([a-z0-9]\+\)$/\1/'`"
- 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
- verbose "[[DOWNLOAD FOLDER URL]]=\"$URL_BASE\""
-
- if [ $SVN_MOD -eq $off ] && [ $GIT_MOD -eq $off ]; then
- # Extension
- EXTENSION=`validate_parameter "$EXTENSION" "EXTENSION" "$STR_MOUNT"`
- if_previous_error handle_error $ERROR_MKBUILD_CONSTRUCTION "EXTENSION"
- verbose "[[EXTENSION]]=\"$EXTENSION\""
-
- # Unpacker
- UNPACKER=`validate_parameter "$UNPACKER" "UNPACKER" "tar"`
- if_previous_error handle_error $ERROR_MKBUILD_CONSTRUCTION "UNPACKER"
- verbose "[[UNPACKER]]=\"$UNPACKER\""
-
- # Unpacker flags
- [ "$UNPACKER" == "tar" ] && STR_MOUNT="--no-same-owner --no-same-permissions -xvf" || STR_MOUNT=""
- UNPACKER_FLAGS=`validate_parameter "$UNPACKER_FLAGS" "UNPACKER FLAGS" "$STR_MOUNT"`
- if_previous_error handle_error $ERROR_MKBUILD_CONSTRUCTION "UNPACKER FLAGS"
- verbose "[[UNPACKER_FLAGS]]=\"$UNPACKER_FLAGS\""
-
- # Decompressor program and test flag
- DECOMPRESSOR=`validate_parameter "$DECOMPRESSOR" "DECOMPRESSOR" ""`
- [ -z $DECOMPRESSOR ] && decompress_find
- verbose "[[DECOMPRESSOR]]=\"$DECOMPRESSOR\""
-
- DECOMPRESSOR_TEST_FLAG=`validate_parameter "$DECOMPRESSOR_TEST_FLAG" "DECOMPRESSOR TEST FLAG" ""`
- if_previous_error handle_error $ERROR_MKBUILD_CONSTRUCTION "DECOMPRESSOR TEST FLAG"
- verbose "[[DECOMPRESSOR TEST FLAG]]=\"$DECOMPRESSOR_TEST_FLAG\""
- fi
-
- # Build number
- BUILD_NUMBER=`validate_parameter "$BUILD_NUMBER" "BUILD NUMBER" "1"`
- if_previous_error handle_error $ERROR_MKBUILD_CONSTRUCTION "BUILD NUMBER"
-
- # Build archteture
- ARCH=`validate_parameter "$ARCH" "ARCH" "i486"`
- verbose "[[ARCH]]=\"$ARCH\""
-
- # Source name
- STR_MOUNT=`echo $SOURCE_NAME | sed -r 's/(.*)-(.*)\.(.*\..*)$/\1/'`
- SRC_NAME=`validate_parameter "$SRC_NAME" "SOURCE NAME" "$STR_MOUNT"`
- if_previous_error handle_error $ERROR_MKBUILD_CONSTRUCTION "SOURCE NAME"
- verbose "[[SOURCE NAME]]=\"$SRC_NAME\""
-
- # SOURCE NAME cannot be empty
- if [ -z "$SRC_NAME" ]; then
- echo "SOURCE NAME is empty."
- handle_error $ERROR_MKBUILD_CONSTRUCTION "SOURCE NAME"
- fi
-
- # Package name
- STR_MOUNT=$SRC_NAME
- PKG_NAME=`validate_parameter "$PKG_NAME" "PACKAGE NAME" "$STR_MOUNT"`
- verbose "[[PACKAGE NAME]]=\"$PKG_NAME\""
-
- # PACKAGE NAME cannot be empty
- if [ -z "$PKG_NAME" ]; then
- echo "PACKAGE NAME is empty."
- handle_error $ERROR_MKBUILD_CONSTRUCTION "PACKAGE NAME"
- fi
-
- # Version
- STR_MOUNT=`echo $SOURCE_NAME | sed -r 's/(.*)-(.*)\.(.*\..*)$/\2/'`
- VERSION=`validate_parameter "$VERSION" "VERSION" "$STR_MOUNT"`
- if_previous_error handle_error $ERROR_MKBUILD_CONSTRUCTION "VERSION"
- verbose "[[VERSION]]=\"$VERSION\""
-
- # Source name construction string
- CONST_STRING="`validate_parameter "$CONST_STRING" "SOURCE NAME CONSTRUCTION STRING" "\\\$SRC_NAME-\\\$VERSION.tar.$EXTENSION"`"
- verbose "[[SOURCE NAME CONSTRUCTION STRING]]=\"$CONST_STRING\""
-
- # Build Source Name
- [ -z $SOURCE_NAME ] && SOURCE_NAME=`eval "echo $CONST_STRING"`
- verbose "SOURCE_NAME=\"$SOURCE_NAME\""
-
- # Eval source code name and URL
- DIST_SRC_NAME="`eval "echo $CONST_STRING"`" # we need this to strip some escape strings
- DIST_SRC_NAME="`eval "echo $DIST_SRC_NAME"`" # twice does the job
- DIST_SRC_URL="`eval "echo $URL_BASE"`" # we need this to strip some escape strings
- DIST_SRC_URL="`eval "echo $DIST_SRC_URL"`" # twice does the job
- DIST_SRC_URL="$DIST_SRC_URL/$DIST_SRC_NAME"
-
- # Documentations list
- DEFAULT_DOCFILES="NEWS TODO README AUTHORS INSTALL ChangeLog MAINTAINERS COPYING LICENSE SIGNATURE readme.*"
- DOCFILES=`validate_parameter "$DOCFILES" "DOCUMENTATION FILES" "$DEFAULT_DOCFILES"`
- verbose "[[DOCUMENTATION FILES]]=\"$DOCFILES\""
-
- # ./configure option
- OPTIONS=`validate_parameter "$OPTIONS" "OTHER CONFIGURE ARGS" ""`
- verbose "[[OTHER CONFIGURE ARGS]]=\"$OPTIONS\""
-
- # PREFIX
- PREFIX=`validate_parameter "$PREFIX" "PREFIX" "/usr"`
- verbose "[[PREFIX]]=\"$PREFIX\""
-
- # Number of jobs
- NUMJOBS=`validate_parameter "$NUMJOBS" "NUMBER OF JOBS" ""`
- is_number $NUMJOBS && NUMJOBS="-j${NUMJOBS}"
- verbose "[[NUMBER OF JOBS]]=\"$NUMJOBS\""
-
- # Make slack-required file
- SLACK_REQUIRED=`validate_parameter "$SLACK_REQUIRED" "SLACK REQUIRED" ""`
- verbose "[[SLACK REQUIRED]]=\"$SLACK_REQUIRED\""
-
- # SlackBuild model
- MODEL=`validate_parameter "$MODEL" "SLACKBUILD MODEL" "generic.mkSlackBuild"`
- verbose "[[SLACKBUILD MODEL]]=\"$MODEL\""
-
- # PATCH FILES
- PATCH_FILES=`validate_parameter "$PATCH_FILES" "PATCH FILES" ""`
- verbose "[[PATCH_FILES]]=\"$PATCH_FILES\""
-
- # PATCH URLs
- PATCH_URLS=`validate_parameter "$PATCH_URLS" "PATCH URLS" ""`
- verbose "[[PATCH_URLS]]=\"$PATCH_URLS\""
-
- # Strip the smallest prefix containing num leading slashes from each file name found in the patch file.
- NPS_STRIP=`validate_parameter "$NPS_STRIP" "NUMBER OF PREFIX SLASHES TO STRIP" "1"`
- verbose "[[NUMBER OF PREFIX SLASHES TO STRIP]]=\"$NPS_STRIP\""
-
- # SlackBuild path
- # SlackBuild path in mkbuild parameters file
- SLACKBUILD=$WORK/${PKG_NAME}.SlackBuild
- SLACKBUILD_PATH=`get_slackbuild_path`
- verbose "[[SLACKBUILD PATH]]=\"$SLACKBUILD_PATH\""
-
-}
-
-function make_slackbuild {
-
- #--------------------------------------------------------------
- #- Start build SlackBuild -
- #--------------------------------------------------------------
-
- # Get mkbuild values
- get_mkbuild_values
-
- verbose -e "\nStart SlackBuild make"
- SLACKBUILD_TEMP=$SLACKBUILD.tmp
- cp $MODEL_DIR/$MODEL $SLACKBUILD_TEMP
-
- # Apply mkpatch
- verbose -e "\nMkpatch section ..."
- apply_mkpatch
-
- # On/Off sections
- verbose -e "\nEnable/disable sections ..."
- activate_sections
-
- # Change sections
- verbose -e "\nEdit sections ..."
- section_edit
-
- # Change strings from model
- verbose -e "\nChange strings in $PACKAGE.SlackBuild model..."
- start_build $SLACKBUILD_TEMP
-
- # Remove off sections
- verbose -e "\nRemove off sections ..."
- build_slackbuild
-
- # Make slack-required file
- verbose -e "\nMake slack-required file ..."
- make_slack_required
-
- if [ -e slack-required ]; then
- DEPENDENCY_LIST="`cat $WORK/slack-required | awk '{print $1}' | grep '^[a-z]' | tr '\012' ' '`"
- edit_file "REQUIRES" "$DEPENDENCY_LIST" $SLACKBUILD
- else
- edit_file "REQUIRES" " " $SLACKBUILD
- fi
-
- # Others changes
- verbose -e "\nEdit other [[]] parameters ..."
- change_other_parameters
-
- if [ "$SIGN_MANIFESTS" -eq $on ]; then
- mkbuild_update_keyring
- repo_gpg_key $MKBUILDS_DIR
- fi
-
- # Update Manifest file
- edit_manifest
-
- if [ "$?" == "0" ]; then
-
- # Commit SlackBuild
- [ $SUBMIT_SLACKBUILD -eq $on ] && submit_slackbuild
-
- # Commit mkbuild
- [ $SUBMIT_MKBUILD -eq $on ] && submit_mkbuild
- fi
-
-}
-
-function create_mkbuild {
-
- # Create a new .mkbuild parameters-file
- cp $MODEL_DIR/model.mkbuild $MKBUILD_NAME
-
- if [ -z "$AUTHOR" ] && [ ! -z "$MKBUILD_AUTHOR" ]; then
- AUTHOR="$MKBUILD_AUTHOR"
- fi
-
- if [ -z "$AUTHOR_INITIALS" ] && [ ! -z "$MKBUILD_AUTHOR_INITIALS" ]; then
- AUTHOR_INITIALS="$MKBUILD_AUTHOR_INITIALS"
- fi
-
- # Package Author
- if [ ! -z "$AUTHOR" ]; then
- edit_file "YOUR NAME" "${AUTHOR}" $MKBUILD_NAME
- # Package Author Signature
- if [ -z "$AUTHOR_INITIALS" ]; then
- AUTHOR_INITIALS=`echo $AUTHOR | tr '[A-Z]' '[a-z]' | sed 's/ /\n/g' | sed 's/^\([a-z]\).*/\1/' | sed ':i ; $! N ; s/\n// ; t i'`
- fi
- edit_file "YOUR SIGNATURE" "${AUTHOR_INITIALS}" $MKBUILD_NAME
- fi
-
- # Change Default SourceForge URL
- [ -z "$URL" ] && URL="http://downloads.sourceforge.net/[[PKG NAME]]/"
- edit_file "DEFAULT URL" "${URL}" $MKBUILD_NAME
-
- # Change Package Name
- edit_file "PKG NAME" "${MKBUILD_NAME//.mkbuild}" $MKBUILD_NAME
-
- # Change SlackBuild Path
- if [ ! -z "$MKBUILD_PATH" ]; then
- edit_file_full "\[\[SLACKBUILD PATH\]\]=.*" "\[\[SLACKBUILD PATH\]\]=\"`regexp_slash $MKBUILD_PATH`\"" $MKBUILD_NAME
- fi
-
- # Print .mkbuild name
- echo "$MKBUILD_NAME"
-
-}
-
-function search_mkbuild {
-
- # find a given mkbuild
- # usage: search_mkbuild [-i]
-
- if [ "$MKBUILD_NAME" == ".mkbuild" ]; then
- list_mkbuilds
- return
- fi
-
- if [ ! -z "$MKBUILD_PATH" ]; then
- if echo $name | grep -q -e "\.mkbuild$"; then
- if [ -d "$MKBUILDS_DIR/$MKBUILD_PATH" ]; then
- find $MKBUILDS_DIR/$MKBUILD_PATH -name $MKBUILD_NAME
- else
- find $MKBUILDS_DIR -name $MKBUILD_NAME
- fi
- else
- if [ -d "$MKBUILDS_DIR/$MKBUILD_PATH" ]; then
- find $MKBUILDS_DIR/$MKBUILD_PATH -name '*.mkbuild'
- fi
- fi
- else
- if [ "$1" == "-i" ]; then
- # case insensitive mode
- find $MKBUILDS_DIR -iname $MKBUILD_NAME
- else
- find $MKBUILDS_DIR -name $MKBUILD_NAME
- fi
- fi
-
-}
-
-function set_mkbuild_name {
-
- local name="$1"
-
- MKBUILD_PATH=""
-
- if [ ! -z "$name" ]; then
- MKBUILD_NAME="`basename $name`"
- fi
-
- if echo $name | grep -q "/"; then
- if echo $name | grep -q -e "\.mkbuild$"; then
- MKBUILD_NAME="`basename $name`"
- MKBUILD_PATH="`dirname $name`"
- else
- MKBUILD_PATH="$name"
- fi
- else
- MKBUILD_NAME="${name//.mkbuild}.mkbuild"
- fi
-
-}
-
-function list_mkbuilds {
-
- # list all available mkbuilds
- # usage: list_mkbuilds
-
- list_builds $MKBUILDS_DIR mkbuild
-
-}
-
-function edit_mkbuild {
-
- # edit a mkbuild
- # usage: edit_mkbuild
-
- if [ -e "$MKBUILD_NAME" ]; then
- if [ -z "$EDITOR" ]; then
- EDITOR="vi"
- fi
- $EDITOR $MKBUILD_NAME
- else
- echo "Not found: $MKBUILD_NAME"
- return 1
- fi
-
-}
-
-function mkbuild_update_keyring {
-
- # Update keyring using GPG-KEY from
- # mkbuild repository
-
- update_keyring $MKBUILDS_DIR/GPG-KEY
-
-}
-
-function sign_manifest {
-
- # sign manifest file
- # usage: sign_manifest
-
- if [ "$SIGN_MANIFESTS" -eq $on ]; then
- echo "Signing Manifest..."
- if [ ! -z "$SIGN_USER" ] && [ "`whoami`" != "$SIGN_USER" ]; then
- su $SIGN_USER -c "gpg $GPG_AGENT_OPTION --clearsign -u $SIGN_KEYID $WORK/Manifest"
- mv $WORK/Manifest.asc $WORK/Manifest
- else
- gpg $GPG_AGENT_OPTION --clearsign -u $SIGN_KEYID $WORK/Manifest
- mv $WORK/Manifest.asc $WORK/Manifest
- fi
- fi
-
-}
-
-function check_manifest_signature {
-
- # check if a manifest signature is valid
- # usage: check_manifest_signature
-
- if [ -e "$WORK/Manifest" ]; then
- if grep -q -- "-----BEGIN PGP SIGNED MESSAGE-----" $WORK/Manifest; then
- echo "Checking existing Manifest signature..."
- mkbuild_update_keyring
- if [ ! -z "$SIGN_USER" ] && [ "`whoami`" != "$SIGN_USER" ]; then
- su $SIGN_USER -c "gpg --verify $WORK/Manifest"
- if [ "$?" != "0" ]; then
- return 1
- fi
- else
- gpg --verify $WORK/Manifest
- if [ "$?" != "0" ]; then
- return 1
- fi
- fi
- fi
- fi
-
-}
-
-function delete_mkbuild {
-
- # delete content from a mkbuild folder
- # usage: delete_mkbuilds [file]
-
- local folder candidate file="$1"
- local name="`basename $MKBUILD_NAME .mkbuild`.mkbuild"
-
- for candidate in `find $MKBUILDS_DIR -name $name`; do
- folder="`dirname $candidate`"
- if [ -d "$folder" ]; then
- if [ -z "$1" ]; then
- # Delete the whole mkbuild folder
- svn_del $folder
- elif [ -e "$folder/$file" ]; then
- svn_del $folder/$file
- fi
- fi
- done
-
-}
-
-function delete_slackbuild {
-
- # delete content from a SlackBuild folder
- # usage: delete_slackbuilds [file]
-
- local folder candidate file="$1"
- local name="`basename $MKBUILD_NAME .mkbuild`.SlackBuild"
-
- for candidate in `find $SLACKBUILDS_DIR -name $name`; do
- folder="`dirname $candidate`"
- if [ -d "$folder" ]; then
- if [ -z "$1" ]; then
- # Delete the whole mkbuild folder
- svn_del $folder
- elif [ -e "$folder/$file" ]; then
- svn_del $folder/$file
- fi
- fi
- done
-
-}
-
-function list_mkbuild_contents {
-
- if [ -e "$MKBUILD_NAME" ]; then
- ls `dirname $MKBUILD_NAME`
- else
- echo "Not found: $MKBUILD_NAME"
- return 1
- fi
-
-}
-
-function working_copy {
-
- local copy tmpfolder name
-
- if [ -e "$MKBUILD_NAME" ]; then
- name="$(basename $MKBUILD_NAME .mkbuild)"
- copy="$(basename $(basename $MKBUILD_NAME .mkbuild))"
- if [ -d "$copy" ]; then
- tmpfolder="`mktemp $name.XXXXXX`"
- mv $copy $tmpfolder/
- fi
- rsync -av --exclude=".svn" --exclude=".git" `dirname $MKBUILD_NAME`/ $copy/ &> /dev/null
- echo "Working copy for $name set at $(pwd)/$name."
- else
- echo "Not found: $MKBUILD_NAME"
- return 1
- fi
-
-}
-
-function get_param {
-
- # get a parameter from a mkbuild file
- # usage: get_param <parameter>
-
- local parameter="`echo $* | tr '[:lower:]' '[:upper:] | tr -d '"' | tr -d "'"'`"
-
- if [ -e "$MKBUILD_NAME" ]; then
- grep -e "\[\[$parameter\]\]" $MKBUILD_NAME | cut -d = -f 2 | tr -d '"' | tr -d "'"
- fi
-
-}
-
-# ----------------------------------------------------------------
-
-#=============================
-# Main Program
-#=============================
-
-# Common functions
-COMMON_SH="/usr/libexec/simplepkg/common.sh"
-PROG_VERSION="`echo '$Rev$' | sed -e 's/[^0-9]//g'`"
-BASENAME="`basename $0`"
-WORK=`pwd`
-LANG=en_US
-EXIT_CODE=0
-
-if [ -f "$COMMON_SH" ]; then
- source $COMMON_SH
-else
- echo $error "$BASENAME: file $COMMON_SH not found. Check your $BASENAME installation"
-fi
-
-# Start constants
-set_constants
-
-# Set submit off
-SUBMIT_SLACKBUILD=$off
-SUBMIT_MKBUILD=$off
-# Set verbose off
-VERBOSE=$off
-SVN_MOD=$off
-
-# Load /etc/simplepkg/simplepkg.conf parameters
-load_parameters
-
-# Select color mode: gray, color or none (*)
-color_select $COLOR_MODE
-
-# Auxiliar file
-AUX_TMP=/tmp/mkbuild_tmp.$RANDOM
-DIFF_FILE=/tmp/mkbuild.diff.$RANDOM
-# Derectory to SlackBuild models
-MODEL_DIR=${MODEL_DIR:="/etc/simplepkg/defaults/mkbuild"}
-# SlackDesk line length
-SLACKDESC_LEN=78
-
-# Load error codes
-error_codes
-
-# Show help if has no arguments
-[ $# -eq 0 ] && mkbuild_use && exit 1
-
-# Configure input parameters
-set_parameters "$@"
-
-verbose -e "$BASENAME version $PROG_VERSION\n"
-case $ACTION in
- 'update_manifest')
- shift
- update_manifest $*
- ;;
- 'commit_slackbuild')
- shift 2
- commit_changes $SLACKBUILDS_DIR $MKBUILD_BASENAME: $*
- ;;
- 'commit_mkbuild')
- shift 2
- commit_changes $MKBUILDS_DIR $MKBUILD_BASENAME: $*
- ;;
- 'commit_all')
- shift 2
- commit_changes $SLACKBUILDS_DIR $MKBUILD_BASENAME: $*
- commit_changes $MKBUILDS_DIR $MKBUILD_BASENAME: $*
- ;;
- 'import_slackbuilds')
- shift
- import_slackbuilds $*
- ;;
- 'import_mkbuilds')
- shift
- import_mkbuilds $*
- ;;
- 'import_all')
- shift
- import_mkbuilds $*
- import_slackbuilds $*
- ;;
- 'delete_slackbuild')
- delete_slackbuild
- ;;
- 'delete_mkbuild')
- delete_mkbuild
- ;;
- 'delete_all')
- delete_mkbuild
- delete_slackbuild
- ;;
- 'new')
- create_mkbuild
- ;;
- 'build')
- make_slackbuild
- ;;
- 'search')
- search_mkbuild -i
- ;;
- 'status')
- repository_status
- ;;
- 'list')
- list_mkbuild_contents
- ;;
- 'edit')
- edit_mkbuild
- ;;
- 'working_copy')
- working_copy
- ;;
- 'get_param')
- shift 2
- get_param $*
- ;;
-esac
-
-# Clear temporary files
-verbose -e "\nRemove temporary files ..."
-clear_files
-exit $EXIT_CODE
diff --git a/trunk/src/mkjail b/trunk/src/mkjail
deleted file mode 100755
index 4b00c38..0000000
--- a/trunk/src/mkjail
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/bin/bash
-#
-# mkjail: chroot jail maker
-# feedback: rhatto at riseup.net | GPL
-#
-# Mkjail is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or any later version.
-#
-# Mkjail is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place - Suite 330, Boston, MA 02111-1307, USA
-#
-# $Rev$ - $Author$
-#
-
-COMMON="/usr/libexec/simplepkg/common.sh"
-BASENAME="`basename $0`"
-
-if [ -f "$COMMON" ]; then
- source $COMMON
-else
- echo "error: file $COMMON found, check your `basename $0` installation"
- exit 1
-fi
-
-function usage {
-
- echo "usage: [ARCH=arch] [VERSION=version] [ROOT=/otherroot] $BASENAME <jail-name> [template]"
- exit 1
-
-}
-
-function exec_post_install_scripts {
-
- # exec post installation scripts
- # usage: exec_post_install_script <jail-root> <jail-name>
-
- local list
-
- if [ -z "$2" ]; then
- return 1
- fi
-
- echo "$BASENAME: executing template scripts..."
- if [ -d "`template_scripts`" ]; then
- for file in `template_scripts`/*; do
- if [ -x "$file" ]; then
- $file $1 $2
- fi
- done
- fi
-
-}
-
-function jailist_update {
-
- # update the jail list file
- # usage: jailist_update <jail-path>
-
- if [ "$ADD_TO_JAIL_LIST" == "1" ]; then
- touch $JAIL_LIST
- if ! grep -q -e "^$1\$" $JAIL_LIST; then
- echo $1 >> $JAIL_LIST
- fi
- fi
-
-}
-
-if [ -z "$1" ]; then
- usage
-else
- server="$1"
- eval_config $BASENAME -u
-fi
-
-if [ ! -z "$2" ]; then
- search_template $2
- result="$?"
-else
- search_default_template
- result="$?"
-fi
-
-if [ "$result" != "0" ]; then
- exit 1
-fi
-
-TEMPLATE="`template_packages`"
-
-if [ ! -d "$JAIL_ROOT/$server" ]; then
- mkdir -p $JAIL_ROOT/$server
-else
- if [ ! -z "`ls $JAIL_ROOT/$server | grep -v 'lost+found'`" ]; then
- echo $BASENAME: error: folder $JAIL_ROOT/$server already exists and seens to be not empty
- echo $BASENAME: probably the jail $1 already exists
- exit 1
- fi
-fi
-
-echo "Instaling packages into $JAIL_ROOT/$server..."
-echo "Using template $TEMPLATE."
-
-install_packages
-copy_template_files $JAIL_ROOT/$server
-set_jail_perms $JAIL_ROOT/$server
-jailist_update $JAIL_ROOT/$server
-exec_post_install_scripts $JAIL_ROOT $server
-
-echo $BASENAME: done creating $server jail
-
diff --git a/trunk/src/mkpatch b/trunk/src/mkpatch
deleted file mode 100644
index bbf990b..0000000
--- a/trunk/src/mkpatch
+++ /dev/null
@@ -1,145 +0,0 @@
-#!/bin/bash
-#
-# mkpatch: Simple patch program to .mkbuild models
-# feedback: rudsonaalves at yahoo.com.br | gpl
-#
-# mkbuild is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or any later version.
-#
-# mkbuild is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place - Suite 330, Boston, MA 02111-1307, USA
-#
-# Input:
-# - $1 Diff_File
-# - #2 Source_File
-#
-# Version:
-PROG_VERSION=1.1
-BASENAME=`basename $0`
-
-function get_line {
-
- # get a line $1 from file $2
- [ $# -ne 2 ] && exit $ERROR_PAR_NUMBER
- ! is_number $1 && exit $ERROR_NOT_NUMBER
- [ ! -e $2 ] && exit $ERROR_FILE_NOTFOUND
-
- sed "$1 q;d" $2
-}
-
-function get_diff_line {
-
- # get diff line e return:
- # - Action in Diff_Action
- # - Diff Line in Diff_Str_Line
- if [ $1 -gt $Diff_N_Lines ]; then
- Diff_Action=" "
- Diff_Str_Line=""
- return 0
- fi
- Line=`get_line $1 $2`
- Diff_Action=`echo "$Line" | cut -c1`
- Diff_Str_Line=`echo "$Line" | cut -c2-`
-}
-
-
-# ----------------------------------------------------------------
-# ------------------- mkpatch program ----------------------------
-# common.sh library start
-COMMON_SH="/usr/libexec/simplepkg/common.sh"
-if [ -f "$COMMON_SH" ]; then
- source $COMMON_SH
-else
- echo "$BASENAME: file $COMMON_SH not found. Check your $BASENAME installation"
-fi
-
-# Load error codes
-error_codes
-# ----------------
-
-if [ "$1" = "--help" -o "$1" = "-h" ]; then
- echo "Use: $BASENAME <diff_file> <source_file>"
- exit $ERROR_HELP
-fi
-
-# Check input parameters
-[ $# -ne 2 ] && exit $ERROR_PAR_NUMBER
-[ ! -e $1 ] && exit $ERROR_FILE_NOTFOUND
-[ ! -e $2 ] && exit $ERROR_FILE_NOTFOUND
-
-# Start variables
-Diff_File=$1
-Source_File=$2
-Diff_N_Lines=`wc -l $1 | cut -f1 -d" "`
-Source_N_Lines=`wc -l $2 | cut -f1 -d" "`
-
-# Start vars
-Diff_Line=1
-Diff_Pointer=1
-Status_Diff=0
-
-# Get frist Diff_File line
-get_diff_line $Diff_Line $Diff_File || exit $?
-
-Source_Line=1
-# Get frist Source_File line
-Source_Str_Line=`get_line $Source_Line $Source_File` || exit $?
-while [ $Source_Line -le $Source_N_Lines ]; do
- # make Actions
- case $Diff_Action in
- '-')
- if [ "$Source_Str_Line" = "$Diff_Str_Line" ]; then
- Status_Diff=1
- let Diff_Line++
- else
- Diff_Line=$Diff_Pointer
- Status_Diff=0
- echo "$Source_Str_Line"
- fi
- get_diff_line $Diff_Line $Diff_File || exit $?
- let Source_Line++
- Source_Str_Line=`get_line $Source_Line $Source_File` || exit $?
- ;;
- '+')
- echo "$Diff_Str_Line"
- let Diff_Line++
- get_diff_line $Diff_Line $Diff_File || exit $?
- ;;
- ' ')
- if [ "$Source_Str_Line" = "$Diff_Str_Line" ]; then
- Status_Diff=1
- let Diff_Line++
- else
- Status_Diff=0
- Diff_Line=$Diff_Pointer
- fi
- echo "$Source_Str_Line"
- get_diff_line $Diff_Line $Diff_File || exit $?
- let Source_Line++
- Source_Str_Line=`get_line $Source_Line $Source_File` || exit $?
- ;;
- '=')
- let Diff_Line++
- Status_Diff=0
- Diff_Pointer=$Diff_Line
- get_diff_line $Diff_Line $Diff_File || exit $?
- ;;
- *)
- echo "Invalid diff action."
- exit $ERROR_MKPATCH
- ;;
- esac
-done
-
-# Make others addline "+" in the end file
-while [ "$Diff_Action" = "+" -a $Diff_Line -le $Diff_N_Lines ]; do
- echo "$Diff_Str_Line"
- let Diff_Line++
- get_diff_line $Diff_Line $Diff_File || exit $?
-done
diff --git a/trunk/src/mkpatch.new b/trunk/src/mkpatch.new
deleted file mode 100755
index cacab52..0000000
--- a/trunk/src/mkpatch.new
+++ /dev/null
@@ -1,145 +0,0 @@
-#!/bin/bash
-#
-# MKPatch 2.0.0: Simple patch program to .mkbuild models
-# feedback: rudsonaalves at yahoo.com.br | gpl
-#
-# mkbuild is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or any later version.
-#
-# mkbuild is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place - Suite 330, Boston, MA 02111-1307, USA
-#
-# Input:
-# - $1 Diff_File
-# - #2 Source_File
-#
-# Version:
-PROG_VERSION=2.0
-BASENAME=`basename $0`
-
-# Errors codes. From common.sh
-ERROR_FILE_NOTFOUND=${ERROR_FILE_NOTFOUND:=100}
-ERROR_PAR_NUMBER=${ERROR_PAR_NUMBER:=102}
-ERROR_MKPATCH=${ERROR_MKPATCH:=600}
-
-# check input arguments
-if [ "$1" = "--help" -o "$1" = "-h" ]; then
- echo "Use: $BASENAME <diff_file> <source_file>"
- exit $ERROR_HELP
-fi
-
-# check number of parameters
-[ $# -ne 2 ] && exit $ERROR_PAR_NUMBER
-
-# check diff_file exit
-[ ! -e $1 ] && exit $ERROR_FILE_NOTFOUND
-
-# check source_file exit
-[ ! -e $2 ] && exit $ERROR_FILE_NOTFOUND
-
-# Change IFS value to <ENTER> only
-OLD_IFS=$IFS
-IFS='
-'
-
-# Read vector from patch file
-index=0
-while read line; do
- Diff_lines[index]="`echo $line | cut -c2-`"
- Diff_action[index]="`echo $line | cut -c1`"
- let index++
-done < $1
-let Diff_n_lines=index-1
-
-# Read vector from source file
-index=0
-while read line; do
- Source_lines[index]="$line"
- let index++
-done < $2
-let Source_n_lines=index-1
-
-# Rescue IFS value
-IFS=$OLD_IFS
-
-# Stating variables
-Source_index=0
-Diff_index=0
-Diff_pointer=0
-Status_diff=0
-
-# Output vector
-Output=""
-Output_index=0
-
-# Apply patch
-while [ $Source_index -le $Source_n_lines -a $Diff_index -le $Diff_n_lines ]; do
- # make Actions
- case "${Diff_action[Diff_index]}" in
- '-')
- if [ "${Source_lines[Source_index]}" == "${Diff_lines[Diff_index]}" ]; then
- Status_diff=1
- let Diff_index++
- else
- Diff_index=$Diff_pointer
- Status_diff=0
- Output[Output_index]="${Source_lines[Souce_index]}"
- let Output_index++
- fi
- let Source_index++
- ;;
- '+')
- Output[Output_index]="${Diff_lines[Diff_index]}"
- let Diff_index++
- let Output_index++
- ;;
- ' ')
- if [ "${Source_lines[Source_index]}" == "${Diff_lines[Diff_index]}" ]; then
- Status_diff=1
- let Diff_index++
- else
- Status_diff=0
- Diff_index=$Diff_pointer
- fi
- Output[Output_index]="${Source_lines[Source_index]}"
- let Output_index++
- let Source_index++
- ;;
- '=')
- let Diff_index++
- Status_diff=0
- Diff_pointer=$Diff_index
- ;;
- '*')
- echo "Invalid diff action."
- exit $ERROR_MKPATCH
- ;;
- esac
-done
-
-# Check end of file mkSlackBuild
-if [ $Diff_index -gt $Diff_n_lines -a $Source_index -le $Source_n_lines ]; then
- # write the rest of mkSlackBuild in Output vector
- for index in `seq $Source_index $Source_n_lines`; do
- Output[Output_index]="${Source_lines[index]}"
- let Output_index++
- done
-elif [ $Diff_index -le $Diff_n_lines ]; then
- # Write others addlines, "+", in Output vector
- while [ "${Diff_Action[Diff_index]}" == "+" ]; do
- Output[Output_index]="${Diff_lines[Diff_index]}"
- let Diff_index++
- let Output_index++
- done
-fi
-
-# Print Output file
-for index in `seq 1 $Output_index`; do
- echo "${Output[$index-1]}"
-done
diff --git a/trunk/src/rebuildpkg b/trunk/src/rebuildpkg
deleted file mode 100755
index 65315ad..0000000
--- a/trunk/src/rebuildpkg
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/bin/bash
-#
-# rebuildpkg: build a package from a /var/log/packages entry
-#
-# feedback: rhatto at riseup.net | gpl
-#
-# Rebuildpkg is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or any later version.
-#
-# Rebuildpkg is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place - Suite 330, Boston, MA 02111-1307, USA
-#
-
-COMMON="/usr/libexec/simplepkg/common.sh"
-
-function usage {
- echo "usage: ROOT=/otherroot `basename $0` <package-name>"
-}
-
-if [ -f "$COMMON" ]; then
- source $COMMON
-else
- echo "error: file $COMMON found, check your `basename $0` installation"
- exit 1
-fi
-
-if [ -z "$1" ]; then
- usage
- exit 1
-fi
-
-pack="$1"
-
-for file in `ls $ROOT/var/log/packages/$pack*`; do
- if [[ "`package_name $file.tgz`" == "$pack" ]]; then
- package_file="$file"
- break
- fi
-done
-
-if [ -z "$package_file" ]; then
- echo error: package $pack does not exist
- exit 1
-fi
-
-if [ -d "$TMP/package-$pack" ]; then
- rm -rf $TMP/package-$pack
-fi
-
-mkdir $TMP/package-$pack
-cd $TMP/package-$pack
-
-for file in `grep -v -e "^PACKAGE NAME:" -e "^UNCOMPRESSED PACKAGE SIZE:" \
- -e "^COMPRESSED PACKAGE SIZE:" -e "^PACKAGE LOCATION:" \
- -e "^PACKAGE DESCRIPTION:" -e "^$pack:" -e "^FILE LIST:" $package_file`; do
-
- if [ "$file" != "install" ] && [ "$file" != "install/slack-desc" ] && [ "$file" != "install/doinst,sh" ]; then
- if [ -d /$file ]; then
- mkdir -p $TMP/package-$pack/$file
- elif [ -f /$file ]; then
- cp /$file $TMP/package-$pack/$file
- else
- echo file /$file was not found, please add it manually, exploding and making the package again
- fi
- fi
-
-done
-
-mkdir $TMP/package-$pack/install
-grep "^$pack:" $package_file > $TMP/package-$pack/install/slack-desc
-
-package_name="`grep "PACKAGE NAME:" $package_file | awk '{ print $3 }'`"
-
-if [ -f "$ROOT/var/log/scripts/$package_name" ]; then
- cp $ROOT/var/log/scripts/$package_name $TMP/package-$pack/install/doinst.sh
-fi
-
-makepkg $package_name.$MKBUILD_COMPRESS
-mv $package_name.$MKBUILD_COMPRESS $TMP/
-echo "done: package rebuilt and stored at $TMP/$package_name.$MKBUILD_COMPRESS"
diff --git a/trunk/src/simplaret b/trunk/src/simplaret
deleted file mode 100755
index 7b157bb..0000000
--- a/trunk/src/simplaret
+++ /dev/null
@@ -1,1194 +0,0 @@
-#!/bin/bash
-#
-# simplaret: simplepkg's retrieval tool
-# feedback: rhatto at riseup.net | gpl
-#
-# Simplaret is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or any later version.
-#
-# Simplaret is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place - Suite 330, Boston, MA 02111-1307, USA
-#
-# $Rev$ - $Author$
-#
-
-BASENAME="`basename $0`"
-COMMON="/usr/libexec/simplepkg/common.sh"
-
-if [ -f "$COMMON" ]; then
- source $COMMON
-else
- echo "error: file $COMMON found, check your $BASENAME installation"
- exit 1
-fi
-
-if [ -f "$HOME/.simplepkg/repos.conf" ]; then
- REPOS_CONF="$HOME/.simplepkg/repos.conf"
-elif [ -f "/etc/simplepkg/repos.conf" ]; then
- REPOS_CONF="/etc/simplepkg/repos.conf"
-else
- REPOS_CONF="/etc/simplepkg/defaults/repos.conf"
-fi
-
-function simplaret_usage {
-
- echo "usage: [ARCH=otherarch] [VERSION=otherversion] $BASENAME [OPTION] package-name"
- echo -e "\t OPTIONS: --help, --install, --update (or --sync), --upgrade, --search, --get, --get-patches, --purge, --remove"
- exit 1
-
-}
-
-function simplaret_get_index {
-
- for file in `simplaret_metafiles`; do
- simplaret_download $1 $file $2 --no-verbose
- done
-
-}
-
-function simplaret_backup_index {
-
- for file in `simplaret_metafiles`; do
- if [ -f "$1/$file" ]; then
- mv $1/$file $1/$file.old
- fi
- done
-
-}
-
-function simplaret_check_index {
-
- for file in `simplaret_metafiles`; do
- if [ ! -f "$1/$file" ] && [ -f "$1/$file.old" ]; then
- echo Restoring old $file to $1...
- mv $1/$file.old $1/$file
- else
- rm -f $1/$file.old
- fi
- done
-
-}
-
-function simplaret_import_gpg_keys {
-
- if [ "$SIGNATURE_CHECKING" == "$on" ]; then
- check_gnupg
- if [ -f "$1/GPG-KEY" ] && [ -f "$1/GPG-KEY.old" ]; then
- if ! diff $1/GPG-KEY $1/GPG-KEY.old &> /dev/null; then
- gpg --import < $1/GPG-KEY
- fi
- elif [ -f "$1/GPG-KEY" ]; then
- gpg --import < $1/GPG-KEY
- fi
- fi
-
-}
-
-function simplaret_download {
-
- # download a file from a repo to a folder
- # usage: simplaret <repository_url> <package> <destination-folder> [--no-verbose]
-
- local protocol file
- local wget_timeout wget_passive_ftp wget_verbose
- local curl_timeout curl_passive_ftp curl_verbose
- local ncftpget_timeout ncftpget_passive_ftp
-
- protocol="`echo $1 | cut -d : -f 1 | tr '[:upper:]' '[:lower:]'`"
- file="`basename $2`"
-
- if [ ! -d "$3" ]; then
- mkdir -p $3
- fi
-
- if [ ! -z "$CONNECT_TIMEOUT" ] || [ "$CONNECT_TIMEOUT" != "0" ]; then
- wget_timeout="--timeout $CONNECT_TIMEOUT"
- ncftpget_timeout="-t $CONNECT_TIMEOUT"
- curl_timeout="--connect-timeout $CONNECT_TIMEOUT"
- fi
-
- if [ "$4" == "--no-verbose" ]; then
- wget_verbose="--no-verbose"
- curl_verbose="-#"
- echo ""
- fi
-
- if [ "$protocol" == "http" ] || [ "$protocol" == "https" ]; then
-
- echo Getting $1/$2:
- if [ "$HTTP_TOOL" == "wget" ]; then
- wget $wget_timeout $wget_verbose $1/$2 -O $3/$file
- elif [ "$HTTP_TOOL" == "curl" ]; then
- curl $curl_timeout $curl_verbose $1/$2 > $3/$file
- else
- echo $BASENAME: error: invalid value for config variable HTTP_TOOL: $HTTP_TOOL
- echo $BASENAME: please check your config file $CONF
- exit 1
- fi
-
- elif [ "$protocol" == "ftp" ]; then
- echo Getting $1/$2:
-
- if [ "$PASSIVE_FTP" == "1" ]; then
- wget_passive_ftp="--passive-ftp"
- ncftpget_passive_ftp="-F"
- curl_passive_ftp="--ftp-pasv"
- fi
-
- if [ "$FTP_TOOL" == "ncftpget" ]; then
- ncftpget -c $ncftpget_timeout $ncftpget_passive_ftp $1/$2 > $3/$file
- elif [ "$FTP_TOOL" == "wget" ]; then
- wget $wget_timeout $wget_passive_ftp $wget_verbose $1/$2 -O $3/$file
- elif [ "$FTP_TOOL" == "curl" ]; then
- curl $curl_timeout $curl_passive_ftp $curl_verbose $1/$2 > $3/$file
- else
- echo $BASENAME: error: invalid value for config variable FTP_TOOL: $FTP_TOOL
- echo $BASENAME: please check your config file $CONF
- exit 1
- fi
-
- elif [ "$protocol" == "file" ]; then
-
- url="`echo $1 | sed -e 's/file:\/\///'`"
- if [ -f "$3/$file" ]; then
- rm -f $3/$file
- fi
- echo -n "Copying $url/$2..."
- if [ -f "$url/$2" ]; then
- cp $url/$2 $3/$file 2> /dev/null
- fi
- if [ -f "$3/$file" ]; then
- echo " done."
- else
- echo " failed."
- fi
-
- else
-
- echo $BASENAME error: invalid protocol $protocol
-
- fi
-
-}
-
-function simplaret_repository {
-
- # return repository definitions from $REPOS_CONF file
- # usage: simplaret_repository [root|repos|noarch|patches]
-
- local definition
-
- if [ -z "$1" ]; then
- definition="ROOT"
- else
- definition="`echo $1 | tr '[:lower:]' '[:upper:]'`"
- fi
-
- if [ "$definition" == "REPOS" ] || [ "$definition" == "PATCHES" ]; then
- definition="$definition-$ARCH-$VERSION"
- elif [ "$definition" == "ROOT" ]; then
- definition="$definition-$ARCH"
- fi
-
- grep -e "^$definition=" $REPOS_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1
-
-}
-
-function simplaret_repository_name {
-
- # return a repository name according the value of $repository
-
- if [ -z "$repository" ]; then
- false
- elif echo $repository | grep -qe %; then
- repository_name="`echo $repository | cut -d % -f 1`"
- if [ -z "$repository_name" ]; then
- echo $BASENAME: you should set a name for the repository $repository
- echo $BASENAME: please correct your $REPOS_CONF
- exit 1
- fi
- else
- echo $BASENAME: you should set a name for the repository $repository
- echo $BASENAME: please correct your $REPOS_CONF
- exit 1
- fi
-
-}
-
-function simplaret_repository_url {
-
- # return a repository url according the value of $repository
-
- if echo $repository | grep -qe %; then
- repository_url="`echo $repository | cut -d % -f 2`"
- if [ -z "$repository_url" ]; then
- echo $BASENAME: you should set a url for the repository $repository
- echo $BASENAME: please correct your $REPOS_CONF
- exit 1
- fi
- else
- echo $BASENAME: you should set a url for the repository $repository
- echo $BASENAME: please correct your $REPOS_CONF
- exit 1
- fi
-
- if [ "$repos_type" == "root" ]; then
- simplaret_set_arch
- distro="`basename $repository_url`"
- if [ "$ARCH" == "x86_64" ] && [ "$distro" == "slackware" ]; then
- distro="slackware64"
- fi
- repository_url="$repository_url/$distro-$VERSION/"
- fi
-
-}
-
-function simplaret_set_storage_folder {
-
- storage="$STORAGE/$ARCH/$VERSION/$repos_type"
- if [ "$repos_type" == "noarch" ]; then
- storage="$STORAGE/noarch"
- elif [ "$repos_type" == "patches" ]; then
- storage="$PATCHES_DIR/$ARCH/$VERSION"
- fi
-
-}
-
-function simplaret_update {
-
- local storage
-
- echo Updating package information for arch $ARCH and version $VERSION...
-
- for repos_type in patches root repos noarch; do
-
- simplaret_set_storage_folder
-
- for repository in `simplaret_repository $repos_type`; do
-
- simplaret_repository_name
- simplaret_repository_url
-
- if [ ! -d "$storage/$repository_name" ]; then
- mkdir -p $storage/$repository_name
- else
- simplaret_backup_index $storage/$repository_name
- fi
-
- simplaret_get_index $repository_url $storage/$repository_name
- simplaret_import_gpg_keys $storage/$repository_name
- simplaret_check_index $storage/$repository_name
-
- unset repository_name repository_url repository_protocol
-
- done
- done
-
-}
-
-function simplaret_find_package {
-
- # grep packages in a repository's file list
- # usage: simplaret_find_package <package-name|-all> <repository-folder>
-
- if [ "$1" == "-all" ]; then
- grep -E -e "$(pkg_ext_grep .)$" $2/`simplaret_filelist` | awk '{ print $8 }'
- else
- grep $1 $2/`simplaret_filelist` | awk '{ print $8 }' | grep -E -e "$(pkg_ext_grep .)$"
- fi
-
-}
-
-function simplaret_show_package {
-
- # print a package result
- # usage: simplaret_show_package <package-file-name> [--basename-only|--filename-only|--formatted]
-
- if [ "$2" == "--basename-only" ]; then
- echo `basename $1`
- elif [ "$2" == "--filename-only" ]; then
- echo $1
- elif [ "$2" == "--formatted" ]; then
- echo $1,$repos_type,$repository
- else
- if echo $1 | grep -q "/patches/"; then
- patch="(patch)"
- fi
- if [ "$repos_type" == "noarch" ]; then
- echo $name repository $repository_name: `basename $1` $patch
- else
- echo $name repository $repository_name, arch: $ARCH, version: $VERSION: `basename $1` $patch
- fi
- fi
- unset patch
-
-}
-
-function simplaret_filelist {
-
- if [ "$repos_type" == "patches" ]; then
- echo FILE_LIST
- else
- echo FILELIST.TXT
- fi
-
-}
-
-function simplaret_metafiles {
-
- if [ "$SIGNATURE_CHECKING" == "$on" ]; then
- echo `simplaret_filelist` CHECKSUMS.md5 GPG-KEY
- else
- echo `simplaret_filelist` CHECKSUMS.md5
- fi
-
-}
-
-function simplaret_search {
-
- # search packages
- # usage: simplaret_search [package-name] [-display_mode]
- # display_mode can be any accepted by simplaret_show_package
-
- local priority priority_match message pattern mode
-
- if [ ! -z "$1" ] && ! echo $1 | grep -q -e "^-"; then
- pattern="$1"
- mode="$2"
- else
- pattern="-all"
- mode="$1"
- fi
-
- for repos_type in patches root repos noarch; do
-
- name="`echo $repos_type | tr '[:lower:]' '[:upper:]'`"
- simplaret_set_storage_folder
-
- for repository in `simplaret_repository $repos_type`; do
-
- simplaret_repository_name
-
- if [ ! -f "$storage/$repository_name/`simplaret_filelist`" ]; then
- if [ "$WARNING" != "0" ] || [ ! -z "$SILENT" ]; then
- if [ "$repos_type" == "noarch" ]; then
- message=""
- else
- message="on arch $ARCH version $VERSION"
- fi
- echo warning: no file list for $repository_name repository $repository_name $message
- echo please do a simplaret --update
- fi
- else
-
- if [ "$repos_type" == "root" ]; then
- # root repositories has ROOT_PRIORITY
- for priority in $ROOT_PRIORITY; do
- for file in `simplaret_find_package $pattern $storage/$repository_name | grep "/$priority/"`; do
- simplaret_show_package $file $mode
- done
- priority_match="$priority_match|/$priority/"
- done
- # now we should return all matches that are not part of ROOT_PRIORITY
- priority_match="`echo $priority_match | sed -e 's/^|//'`"
- for file in `simplaret_find_package $pattern $storage/$repository_name | grep -E -v $priority_match`; do
- simplaret_show_package $file $mode
- done
- priority_match=""
- elif [ "$repos_type" == "repos" ]; then
- # repos repositories has REPOS_PRIORITY
- for priority in $REPOS_PRIORITY; do
- for file in `simplaret_find_package $pattern $storage/$repository_name | grep "/$priority/"`; do
- simplaret_show_package $file $mode
- done
- priority_match="$priority_match|/$priority/"
- done
- # now we should return all matches that are not part of REPOS_PRIORITY
- priority_match="`echo $priority_match | sed -e 's/^|//'`"
- for file in `simplaret_find_package $pattern $storage/$repository_name | grep -E -v $priority_match`; do
- simplaret_show_package $file $mode
- done
- priority_match=""
- else
- for file in `simplaret_find_package $pattern $storage/$repository_name`; do
- simplaret_show_package $file $mode
- done
- fi
-
- fi
-
- done
- done
-
-}
-
-function simplaret_purge {
-
- # purge simplaret package cache
- # usage: simplaret_purge [-w N]
-
- local mtime mtime_message which and_patches
-
- if [ "$1" == "-w" ] && [ ! -z "$2" ]; then
- mtime="-mtime +`echo "$2*7" | bc -l`"
- mtime_message="older than $2 weeks"
- elif [ "$SIMPLARET_PURGE_WEEKS" != "0" ]; then
- mtime="-mtime +`echo "$SIMPLARET_PURGE_WEEKS*7" | bc -l`"
- mtime_message="older than $SIMPLARET_PURGE_WEEKS weeks"
- else
- mtime=""
- mtime_mesage=""
- fi
-
- which="root repos noarch"
- and_patches=""
-
- if [ "$SIMPLARET_PURGE_PATCHES" == "1" ]; then
- which="patches $which"
- and_patches="including patches"
- fi
-
- if [ -z "$SILENT" ]; then
- if [ -z "$mtime_message" ]; then
- echo "$BASENAME: purging all packages for:"
- else
- echo "$BASENAME: purging all packages $mtime_message for:"
- fi
- echo -e "\t- Arch $ARCH and version $VERSION $and_patches"
- echo -e "\t- Noarch folder"
- fi
-
- for repos_type in $which; do
-
- simplaret_set_storage_folder
-
- for file in `find $storage/ $mtime 2> /dev/null`; do
- for extension in `pkg_ext` asc meta txt slack-required; do
- if echo $file | grep -qe ".$extension$"; then
- rm $file
- fi
- done
- done
-
- done
-
- if [ -z "$SILENT" ]; then
- echo $BASENAME: done purging simplaret cache
- echo $BASENAME: please run $BASENAME --update to retrieve new package listings on this arch and version
- fi
-
-}
-
-function simplaret_search_and_delete {
-
- # search and delete packages
- # usage: simplaret_search_and_delete <package> <folder> [--silent]
-
- local file candidate place basename name version build
- local name_version name_build
-
- name="`package_name $1`"
-
- if [ "$name" != "$1" ]; then
- # searching by full package filename
- name_version="`package_version $1`"
- name_build="`package_build $1`"
- name_ext="`package_ext $1`"
-
- # search wheter the package filename is in the repositories
- if [ "`simplaret_search $1 | grep $1 | wc -l`" == "0" ]; then
- echo "Error: package not found: $1"
- return 1
- fi
-
- for file in `eval find $2/ $(pkg_ext_find $name*) 2> /dev/null`; do
- candidate="`basename $file`"
- version="`package_version $candidate`"
- build="`package_build $candidate`"
- ext="`package_ext $candidate`"
- if [ "`package_name $candidate`" == "$name" ]; then
-
- if [ "$name_version" == "$version" ] && \
- [ "$name_build" == "$build" ] && \
- [ "$name_ext" == "$ext" ]; then
- LAST_DOWNLOADED_PACKAGE="$file"
- if [ "$3" != "--silent" ]; then
- echo Package $candidate already downloaded
- # echo Package $candidate stored at `dirname $file`
- else
- true
- # echo $file
- fi
- return 1
- else
- place="`dirname $file`"
- basename="`strip_pkg_ext $file`"
- rm -f $file
- rm -f $place/$candidate.slack-required
- rm -f $file.asc $place/$basename.meta $place/$basename.txt
- break
- fi
-
- fi
- done
-
- else
-
- for file in `eval find $2/ $(pkg_ext_find $name*) 2> /dev/null`; do
- candidate="`basename $file`"
- version="`package_version $candidate`"
- build="`package_build $candidate`"
- ext="`package_ext $candidate`"
- if [ "`package_name $candidate`" == "$name" ]; then
- # check if has the same version and build number, otherwise erase the old one
- for result in `simplaret_search $(package_name $candidate) --basename-only`; do
- if [ "`package_name $candidate`" == "`package_name $result`" ]; then
-
- if [ "$version" == "`package_version $result`" ] && \
- [ "$build" == "`package_build $result`" ] && \
- [ "$ext" == "`package_ext $result`" ]; then
- LAST_DOWNLOADED_PACKAGE="$file"
- if [ "$3" != "--silent" ]; then
- echo Package $candidate already downloaded
- # echo Package $candidate stored at `dirname $file`
- else
- true
- # echo $file
- fi
- return 1
- else
- place="`dirname $file`"
- basename="`strip_pkg_ext $file`"
- rm -f $file
- rm -f $place/$candidate.slack-required
- rm -f $file.asc $place/$basename.meta $place/$basename.txt
- break
- fi
-
- fi
- done
- fi
- done
-
- fi
-
-}
-
-function simplaret_get {
-
- # get a package
- # usage: simplaret_get <package-name|package-file-name> [--silent]
-
- local silent generate_patches search search_results
- local name version build
-
- # prevent user to stay in $storage
- cd
-
- name="`package_name $1`"
-
- if [ "$name" != "$1" ]; then
- # simplaret_get was called with the package file
- # name and not with just the package name
- version="`package_version $1`"
- build="`package_build $1`"
- else
- version=""
- build=""
- fi
-
- # first search for an already downloaded package
- for repos_type in patches root repos noarch; do
-
- simplaret_set_storage_folder
- simplaret_search_and_delete $1 $storage $2
-
- if [ "$?" == "1" ]; then
- return 0
- fi
-
- done
-
- # then search for the package in the repositories
- search="`simplaret_search $1 --formatted`"
- search_results="`echo "$search" | wc -l`"
-
- for result in $search; do
-
- # remaining search results
- let search_results--
-
- file="`echo $result | cut -d , -f 1`"
- repos_type="`echo $result | cut -d , -f 2`"
- repository="`echo $result | cut -d , -f 3`"
-
- simplaret_set_storage_folder
- simplaret_repository_name
-
- candidate="`basename $file`"
- if [ "`package_name $candidate`" == "$name" ]; then
-
- if [ ! -z "$build" ] && [ ! -z "$version" ]; then
- # simplaret_get was called with the package file
- # name and not with just the package name
- if [ "$version" != "`package_version $candidate`" ] && \
- [ "$build" != "`package_build $candidate`" ]; then
- # the package version and/or build doesnt matched
- # the desired one
- continue
- fi
- fi
-
- simplaret_repository_url
-
- # if repos_type == root, the package is a patch and
- # STORE_ROOT_PATCHES_ON_PATCHES_DIR config parameter is enabled, then
- # save it on $PATCHES_DIR/root-$repository_name, so all patches
- # are placed in the same tree
- if [ "$repos_type" == "root" ] && \
- [ "$STORE_ROOT_PATCHES_ON_PATCHES_DIR" == "1" ] && echo $file | grep -q "patches"; then
- folder="$PATCHES_DIR/$ARCH/$VERSION/root-$repository_name"
- generate_patches="1"
- else
- folder="$storage/$repository_name"
- fi
-
- # download the package
- simplaret_download $repository_url $file $folder
-
- if [ -f "$folder/$candidate.asc" ]; then
- rm $folder/$candidate.asc
- fi
-
- if [ -f "$folder/$name.slack-required" ]; then
- rm $folder/$name.slack-required
- fi
-
- # download the signature, if exist
- if simplaret_check_url $repository_url/$file.asc; then
- simplaret_download $repository_url $file.asc $folder
- fi
-
- # download slack-required, if exist
- if simplaret_check_url $repository_url/`dirname $file`/$name.slack-required; then
- simplaret_download $repository_url `dirname $file`/$name.slack-required $folder
- fi
-
- if [ ! -f "$folder/$candidate" ]; then
- LAST_DOWNLOADED_PACKAGE="0"
- if [ "$2" != "--silent" ]; then
- echo Error downloading $candidate from $repos_type repository $repository_url, please check your settings
- fi
- # check if there's also more repositories to try
- if [ "$SIMPLARET_DOWNLOAD_FROM_NEXT_REPO" != "1" ]; then
- return 1
- else
- if [ "$2" != "--silent" ]; then
- echo Trying to fetch $candidate from the next repository...
- fi
- if (($search_results <= 0)); then
- return 1
- fi
- fi
- else
- LAST_DOWNLOADED_PACKAGE="$folder/$candidate"
- if [ "$2" != "--silent" ]; then
- silent=""
- echo Package $candidate stored at $folder
- else
- # echo $folder/$candidate
- silent="--silent"
- fi
- if [ "$SIGNATURE_CHECKING" == "$on" ]; then
- if [ -f "$folder/$candidate.asc" ]; then
- gpg --verify $folder/$candidate.asc $folder/$candidate
- if [ "$?" != "0" ]; then
- echo "Package signature does not match. Removing package."
- rm -f $folder/$candidate.asc $folder/$candidate
- LAST_DOWNLOADED_PACKAGE=""
- return 1
- fi
- else
- echo "Missing signature. Removing package."
- rm -f $folder/$candidate.asc $folder/$candidate
- LAST_DOWNLOADED_PACKAGE=""
- return 1
- fi
- fi
- # generate the patches FILE_LIST and PACKAGES.TXT if needed
- if [ "$generate_patches" == "1" ]; then
- gen_patches_filelist $folder
- gen_packages_txt $folder
- gen_md5_checksums $folder
- fi
- simplaret_checksum $storage/$repository_name/CHECKSUMS.md5 $folder/$candidate $silent
- return $?
- fi
-
- fi
-
- done
-
-}
-
-function simplaret_search_and_process_patch {
-
- local package_version package_build installed_version pack
- local installed_build repos_type get is_patch package_match
-
- # get just the file and package name
- sugested_filename="`echo $sugested | cut -d , -f 1`"
- sugested_pack="`package_name $sugested_filename`"
-
- # search if its installed in the jail
- if grep -q -e "^$sugested_pack$" $PACKAGES_TMP; then
-
- # get the repository type
- repos_type="`echo $sugested | cut -d , -f 2`"
-
- if echo $sugested | grep -q "patches"; then
- is_patch="yes"
- else
- is_patch="no"
- fi
-
- # now split the file name into pieces
- package_version="`package_version $sugested_filename`"
- package_build="`package_build $sugested_filename`"
-
- # check if the patch was already downloaded
- if echo "$DOWNLOADED_PATCHES" | grep -q " $ARCH:$VERSION:$sugested_pack "; then
- #if [ "$IS_UPGRADE" != "1" ]; then
- #echo Package $sugested_pack already downloaded
- #echo "Jail $root needs package $sugested_pack (already downloaded, skipping)"
- return
- #fi
- fi
-
- pack="`echo $sugested_pack | sed -e 's/\+/\\\+/'`"
- installed="`check_installed $pack $root`"
- installed_version="`package_version $installed.tgz`"
- installed_build="`package_build $installed.tgz`"
-
- get="no"
-
- # if needed, download the patch
- if [ "$repos_type" == "patches" ]; then
-
- if [ "$package_version" != "$installed_version" ] || [ "$package_build" != "$installed_build" ]; then
- get="yes"
- package_match="no"
- elif [ "$DOWNLOAD_EVEN_APPLIED_PATCHES" == "1" ]; then
- get="yes"
- fi
-
- elif [ "$repos_type" == "root" ] && [ "$is_patch" == "yes" ]; then
-
- if [ "$package_version" != "$installed_version" ] || [ "$package_build" != "$installed_build" ]; then
- get="yes"
- package_match="no"
- elif [ "$DOWNLOAD_EVEN_APPLIED_PATCHES" == "1" ]; then
- get="yes"
- fi
-
- else
- # here, we're dealing with repositories other than ROOT and REPOS,
- # so we need to check if either version or build number are different,
- # otherwise all installed packages would be downloaded
- if [ "$package_version" != "$installed_version" ] || [ "$package_build" != "$installed_build" ]; then
- get="yes"
- package_match="no"
- fi
- fi
-
- # finally, get the package
- if [ "$get" == "yes" ]; then
- if [ "$IS_UPGRADE" == "1" ]; then
- if [ "$package_match" == "no" ]; then
- simplaret_install $sugested_pack
- else
- simplaret_get $sugested_pack
- fi
- else
- simplaret_get $sugested_pack
- fi
- if [ "$?" == "0" ]; then
- DOWNLOADED_PATCHES="$DOWNLOADED_PATCHES $ARCH:$VERSION:$sugested_pack " # the ending space is important
- fi
- fi
-
- fi
-
- unset get
-
-}
-
-function simplaret_get_jail_patches {
-
- # get patches from a jail
- # usage: simplaret_get_jail_patches <jail-folder>
-
- local oldarch oldversion
-
- if [ ! -z "$1" ]; then
- root="$1"
- else
- root="/"
- fi
-
- # save current arch and version
- oldarch="$ARCH"
- oldversion="$VERSION"
-
- ARCH="`default_arch $root`"
- VERSION="`default_version $root`"
-
- # in case there's something wrong with the jail, abort
- if [ -z "$VERSION" ] || [ -z "$ARCH" ]; then
- return
- fi
-
- # we need to do that for each arch/version pairs, but just once for each pair
- if ! echo "$DISTRO_UPDATED" | grep -q " $ARCH:$VERSION "; then
- simplaret_update
- DISTRO_UPDATED="$DISTRO_UPDATED $ARCH:$VERSION " # the ending space is important
- echo ""
- fi
-
- # installed packages at $root
- PACKAGES_TMP=/tmp/simplaret_packages.$RANDOM
- rm -f $PACKAGES_TMP ; touch $PACKAGES_TMP ; chmod 600 $PACKAGES_TMP
- ls -1 $root/var/log/packages/ | sed -e 's/-[^-]*-[^-]*-[^-]*$//' > $PACKAGES_TMP
-
- echo Fetching patches for arch $ARCH and version $VERSION for jail $root
-
- # list all available patches from PATCHES and ROOT repositories
- for sugested in `simplaret_search --formatted | grep patches | grep -v ",repos," | grep -v ",noarch,"`; do
- simplaret_search_and_process_patch
- done
-
- # grab patches from every other places
- if [ "$CONSIDER_ALL_PACKAGES_AS_PATCHES" == "1" ]; then
-
- for sugested in `simplaret_search --formatted | grep patches | grep ",repos," | grep ",noarch,"`; do
- simplaret_search_and_process_patch
- done
-
- for sugested in `simplaret_search --formatted | grep -v patches`; do
- simplaret_search_and_process_patch
- done
-
- fi
-
- rm $PACKAGES_TMP
-
- # restore arch and version
- ARCH="$oldarch"
- VERSION="$oldversion"
-
-}
-
-function simplaret_get_patches {
-
- local jailpath
-
- if [ "$1" == "--upgrade" ]; then
- IS_UPGRADE="1"
- fi
-
- if [ ! -z "$ROOT" ]; then
- simplaret_get_jail_patches $ROOT
- return $?
- fi
-
- # first get patches from the root system
- simplaret_get_jail_patches
-
- # then get the needed patches for each installed jail
- if [ -s "$JAIL_LIST" ]; then
- for jailpath in `cat $JAIL_LIST`; do
- if [ -d "$jailpath/var/log/packages" ]; then
- ROOT="$jailpath"
- simplaret_get_jail_patches $jailpath
- fi
- done
- fi
-
- ROOT=""
-
-}
-
-function simplaret_checksum {
-
- # simplaret_checksum <md5file> <file-name> [--silent]
-
- if [ ! -f "$1" ] || [ ! -f "$2" ]; then
- if [ "$3" != "--silent" ]; then
- echo Checksum error: file not found
- fi
- return 1
- fi
-
- pack="`basename $2`"
- checksum="`grep -e "$pack\$" $1 | awk '{ print $1 }'`"
-
- if [ -z "$checksum" ]; then
- echo file $2 not in checksum $1
- return 1
- elif [ "$checksum" != "`md5sum $2 | awk '{ print $1 }'`" ]; then
- if [ "$3" != "--silent" ]; then
- echo Checksum mismatch for file `basename $file`
- fi
- return 1
- else
- if [ "$3" != "--silent" ]; then
- echo Checksum ok for file `basename $file`
- fi
- return 0
- fi
-
-}
-
-function simplaret_install {
-
- # download and install a package
- # usage: simplaret_install <package-name1|package-file-name1> ... [--skip-checks]
-
- local package root jail_arch jail_version slack_required dep dependency tmp
- local name version build
-
- for package in $*; do
-
- if [ "$package" == "--skip-checks" ]; then
- continue
- fi
-
- name="`package_name $package`"
-
- root="/$ROOT"
- mkdir -p $root/var/log/setup/tmp
-
- if [ "`echo $package | sed -e 's/\(..\).*/\1/g'`" == "--" ]; then
- echo $BASENAME: install: syntax error: expected package name
- return 1
- fi
-
- # now we check if ARCH and VERSION from the
- # repository are the same of the jail
- if ! echo $* | grep -q -- "--skip-checks"; then
- jail_arch="`default_arch $root`"
- jail_version="`default_version $root`"
- if [ "$ARCH" != "$jail_arch" ]; then
- echo "$BASENAME: requested repository arch ($ARCH) doesn't match jail arch ($jail_arch)"
- echo "$BASENAME: please use \"$BASENAME --get $package --skip-checks\" to ignore this warning and install anyway"
- return
- elif [ "$VERSION" != "$jail_version" ]; then
- echo "$BASENAME: requested repository version ($VERSION) doesn't match jail version ($jail_version)"
- echo "$BASENAME: please use \"$BASENAME --get $package --skip-checks\" to ignore this warning and install anyway"
- return 1
- fi
- fi
-
- # package="`simplaret_get $package --silent`"
- simplaret_get $package --silent
- package="$LAST_DOWNLOADED_PACKAGE"
-
- if [ "$package" != "0" ] && [ ! -z "$package" ]; then
- slack_required="`dirname $package`/$name.slack-required"
- if [ -f "$package" ]; then
-
- if [ -f "$slack_required" ] && [ "$DEPENDENCY_CHECKING" == "1" ]; then
- # TODO: check dependency versions
- # this routine checks for dependencies in package's slack-required
- # procedure adapted from createpkg script
- ( grep -v '^#' $slack_required | awk '{ print $1 }' | while read dep; do
- if [ ! -z "$dep" ]; then
- dependency="`echo $dep | awk '{ print $package }'`"
- simplaret_solve_dep $name $dependency $root
- fi
- true
- done )
- fi
-
- ROOT=$root upgradepkg --install-new $package
- LAST_DOWNLOADED_PACKAGE="0"
-
- else
- echo "Error: could not install package $package: file not found"
- LAST_DOWNLOADED_PACKAGE="0"
- return 1
- fi
- else
- echo "Error: could not install package $package"
- LAST_DOWNLOADED_PACKAGE="0"
- return 1
- fi
-
- done
-
-}
-
-function simplaret_set_arch {
-
- # set correct value for ARCH
-
- local repos_type new_arch
-
- # any arch defined in ARCH_i486 that hasn't an entry
- # on $REPOS_CONF will be mapped to i486
-
- ARCH_i486=" nocona prescott pentium4m pentium4 pentium-m pentium3m pentium3 "
- ARCH_i486="$ARCH_i486 pentium2 i686 pentium-pro i586 pentium-mmx pentium i486 "
- ARCH_i486="$ARCH_i486 athlon-mp athlon-xp athlon4 athlon-tbird athlon k6 k6-2 "
- ARCH_i486="$ARCH_i486 k6-3 winchip-c6 winchip2 c3 c3-2 "
-
- # any arch defined in ARCH_x86_64 that hasn't an entry
- # on $REPOS_CONF will be mapped to x86_64
-
- ARCH_x86_64=" k8 opteron athlon64 athlon-fx x86_64 "
-
- for repos_type in patches root repos noarch; do
- if [ -z "`simplaret_repository $repos_type`" ]; then
- # there's no repository definition for that arch
- if echo "$ARCH_i486" | grep -q " $ARCH "; then
- new_arch="i486"
- elif echo "$ARCH_x86_64" | grep -q " $ARCH "; then
- new_arch="x86_64"
- else
- echo "$BASENAME: error: no repository definition for arch $ARCH"
- echo "$BASENAME: please check your $CONF and $REPOS_CONF config files"
- exit 1
- fi
- else
- return
- fi
- done
-
- echo "$BASENAME: changing arch from $ARCH to $new_arch"
-
- ARCH="$new_arch"
-
-}
-
-function simplaret_check_url {
-
- # check if a given url exist, use just with small files
- # usage: simplaret_check_url <url>
-
- if [ -z "$1" ]; then
- return 1
- fi
-
- if echo $1 | grep -q -e "^file:///"; then
- url="`echo $1 | sed -e 's/file:\/\///'`"
- if [ -e "$url" ]; then
- return 0
- else
- return 1
- fi
- fi
-
- if [ ! -z "$CONNECT_TIMEOUT" ] || [ "$CONNECT_TIMEOUT" != "0" ]; then
- curl_timeout="--connect-timeout $CONNECT_TIMEOUT"
- fi
-
- if [ "`curl $curl_timeout -I $1 2> /dev/null | head -n 1 | awk '{ print $2 }'`" == "200" ]; then
- # server gave a 200 response, so the url exist
- return 0
- else
- # the url is missing
- return 1
- fi
-
-}
-
-function simplaret_solve_dep {
-
- # solve dependency for a package
- # this function was adapted from createpkg script
- # usage: simplaret_solve_dep <package-name> <package-depencency-name> [root-folder]
-
- local installed check exit_code
-
- local package="$1"
- local pack="$2"
- local root="/$3"
-
- pack="`echo $pack| sed -e 's/\+/\\\+/'`"
- installed="`check_installed $pack $root`"
- check=$?
-
- if [ -z "$installed" ]; then
- if [ $check -ne 0 ]; then
- echo "$BASENAME: processing $1 dependency $pack"
- # simplaret_install $pack
- SIMPLARET_CHILD=$SIMPLARET_CHILD ROOT=$root ARCH=$ARCH VERSION=$VERSION \
- simplaret --install $pack
- fi
- fi
-
-}
-
-function simplaret_remove {
-
- # remove packages
- # usage: simplaret_remove <package1> [<package2> ... <packageN>]
-
- for package in $*; do
- ROOT=/$ROOT removepkg $package
- done
-
-}
-
-function simplaret_req_arg {
-
- # requires arg
-
- if [ -z "$1" ]; then
- simplaret_usage;
- fi
-
-}
-
-if [ -z "$1" ]; then
- simplaret_usage
- exit 1
-else
- eval_config $BASENAME
- set_constants
-fi
-
-# This is used to show how many children process we have
-if [ -z "$SIMPLARET_CHILD" ]; then
- SIMPLARET_CHILD="1"
-else
- let SIMPLARET_CHILD++
-fi
-
-BASENAME="`basename $0`[$SIMPLARET_CHILD]"
-
-case $1 in
- "--update" | "update" | "--sync" | "sync" ) simplaret_update ;;
- "--upgrade" | "upgrade") simplaret_get_patches --upgrade ;;
- "--get-patches" | "get-patches") simplaret_get_patches ;;
- "--search" | "search") shift ; simplaret_req_arg $1 ; simplaret_search $* ;;
- "--get" | "get") shift ; simplaret_req_arg $1 ; simplaret_get $* ;;
- "--purge" | "purge") shift ; simplaret_purge $* ;;
- "--install" | "install") shift ; simplaret_req_arg $1 ; simplaret_install $* ;;
- "--remove" | "remove") shift ; simplaret_req_arg $1 ; simplaret_remove $* ;;
- "--help" | "help") simplaret_usage ;;
- *)
- if echo $1 | grep -q -v '^--'; then
- simplaret_install $*
- else
- simplaret_usage
- fi
- ;;
-esac
-
diff --git a/trunk/src/simpletrack b/trunk/src/simpletrack
deleted file mode 100755
index 31b7225..0000000
--- a/trunk/src/simpletrack
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/bin/bash
-#
-# simpletrack $Id$: slacktrack/altertrack wrapper from simplepkg suite
-# feedback: rhatto at riseup.net | gpl
-#
-# Simpletrack is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or any later version.
-#
-# Simpletrack is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place - Suite 330, Boston, MA 02111-1307, USA
-#
-
-PRIORITY=${SLACKTRACK_PRIORITY:=slacktrack-real slacktrack altertrack}
-BASENAME="`basename $0`"
-
-function slacktrack {
-
- $1 -b $REPOS -x $TMP,$SRC_DIR,/dev -jefkzp "$PACKAGE-$VERSION-$ARCH-$BUILD.$MKBUILD_COMPRESS" "./$2"
-
-}
-
-function slacktrack-real {
-
- $1 -b $REPOS -x $TMP,$SRC_DIR,/dev -jefkzp "$PACKAGE-$VERSION-$ARCH-$BUILD.$MKBUILD_COMPRESS" "./$2"
-
-}
-
-function altertrack {
-
- $1 -b $REPOS -x $TMP,$SRC_DIR,/dev -jefkzp "$PACKAGE-$VERSION-$ARCH-$BUILD.$MKBUILD_COMPRESS" "./$2"
-
-}
-
-# -----------------------------------------------------
-# main
-# -----------------------------------------------------
-
-if [ -z "$1" ]; then
- echo "usage: $BASENAME [options] <build-script>"
- exit 1
-elif [ ! -f "$1" ]; then
- echo "$1: file not found"
- exit 1
-fi
-
-for tracker in $PRIORITY; do
- path="`which $tracker 2> /dev/null`"
- found="$?"
- if [ "$found" == "0" ]; then
- echo $BASENAME: using $tracker...
- $tracker $path $*
- break
- fi
-done
-
-if [ "$found" != "0" ]; then
- echo "Can't find any suitable tracker among $PRIORITY"
- echo "Does slacktrack package is installed in your system?"
- exit 1
-fi
diff --git a/trunk/src/templatepkg b/trunk/src/templatepkg
deleted file mode 100755
index c107bd8..0000000
--- a/trunk/src/templatepkg
+++ /dev/null
@@ -1,987 +0,0 @@
-#!/bin/bash
-#
-# templatepkg: template maintenance script from simplepkg suite
-# feedback: rhatto at riseup.net | gpl
-#
-# Templatepkg is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or any later version.
-#
-# Templatepkg is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place - Suite 330, Boston, MA 02111-1307, USA
-#
-# $Rev$ - $Author$
-#
-
-COMMON="/usr/libexec/simplepkg/common.sh"
-BASENAME="`basename $0`"
-
-if [ -f "$COMMON" ]; then
- source $COMMON
- eval_config $BASENAME
-else
- echo "error: file $COMMON found, check your $BASENAME installation"
- exit 1
-fi
-
-function usage_summary {
-
- echo "options are:"
- echo ""
- echo " -c | --create: create a template from a jail or existing template"
- echo " -u | --update: update a template from a jail"
- echo " -a | --add: add files into a template"
- echo " -d | --delete: delete files or folders from a template"
- echo " -s | --sync: sync $TEMPLATE_FOLDER working copy"
- echo " -e | --export: export $TEMPLATE_FOLDER to a svn repository"
- echo " -i | --import: grab $TEMPLATE_FOLDER from a svn repository"
- echo " -r | --remove: remove a template"
- echo " -l | --list: list templates"
- echo " -b | --batch-edit: add or edit post-installation scripts"
- echo " -p | --pack: create a package from a template"
- echo " -t | --template-edit: edit template package list"
- echo " -h | --help: display this summary"
- echo ""
-
-}
-
-function display_help {
-
- # display help
- # usage: help [help-topic]
-
- local option
-
- if [ -z "$1" ]; then
- echo "type $BASENAME --help <option> for aditional help"
- usage_summary
- exit
- fi
-
- option="$1"
-
- if ! echo $option | grep -q -e "^-"; then
- option="-`echo $option | sed -e 's/--/-/' -e 's/\(.\).*/\1/'`"
- else
- option="`echo $option | sed -e 's/--/-/' -e 's/\(..\).*/\1/'`"
- fi
-
- echo "$BASENAME: help for option $option:"
- echo ""
-
- usage_summary | grep -e "^ $option"
-
- echo ""
- case $option in
-
- "-c" | "--create")
- echo " $BASENAME $option <template> [jail-root|template-name]"
- ;;
- "-u" | "--update")
- echo " $BASENAME $option <template> [jail-root]"
- ;;
- "-a" | "--add")
- echo " $BASENAME $option <template> <file-name> [jail-root]"
- echo ""
- echo " file-name: the file or directory to be added"
- echo " jail-root: the jail under file-name is located"
- ;;
- "-d" | "--delete")
- echo " $BASENAME $option <template> <file-name> [jail-root]"
- echo ""
- echo " file-name: the file or directory to be removed"
- echo " jail-root: if specified, the file is also removed from the jail"
- ;;
- "-s" | "--sync")
- echo " $BASENAME $option"
- ;;
- "-e" | "--export")
- echo " $BASENAME $option <svn-repository>"
- ;;
- "-i" | "--import")
- echo " $BASENAME $option <svn-repository>"
- ;;
- "-r" | "--remove")
- echo " $BASENAME $option <template-name>"
- ;;
- "-l" | "--list")
- echo " $BASENAME $option [path]"
- ;;
- "-b" | "--batch-edit")
- echo " $BASENAME $option <template-name> <script-name>"
- ;;
- "-p" | "--pack")
- echo " $BASENAME $option <template-name> [version] [build] [arch]"
- ;;
- "-t" | "--template-edit")
- echo " $BASENAME $option <template-name>"
- ;;
- "-h" | "--help")
- echo " -h | --help: display this help."
- ;;
- *)
- echo $BASENAME: invalid help option $option
- esac
-
- case $option in
- "-c" | "-u" | "-a")
- echo ""
- echo " if ommited, jail-root defaults to /"
- ;;
- esac
-
- echo ""
-
-}
-
-function usage {
-
- echo "usage: $BASENAME <option> [<template> [arguments]]"
- usage_summary
- exit
-
-}
-
-function import_export_templates {
-
- # import from or export to $TEMPLATE_FOLDER in a svn repository
- # usage: template_export <import|export> <repository>
-
- local templates templates_folder basedir repository mode preposition
- local repository_type repository_path
-
- if [ "$?" != 0 ]; then
- usage
- exit 1
- elif ! templates_under_svn; then
- echo $BASENAME: simplepkg not configured to use svn
- exit 1
- fi
-
- templates_folder="$TEMPLATE_FOLDER"
- templates="`basename $TEMPLATE_FOLDER`"
- basedir="`dirname $templates_folder`"
- mode="$1"
- repository="$2"
- preposition="from"
-
- valid_svn_repo $repository
-
- if [ ! -z "$2" ]; then
-
- if ! svn_folder $templates_folder; then
-
- cd $basedir
-
- if [ "$mode" == "export" ]; then
- preposition="to"
- check_and_create_svn_repo $repository
- echo Exporting templates to $repository...
- svn import $templates/ $repository/ -m "initial import"
- if [ "$?" != "0" ]; then
- echo $BASENAME: export failed
- exit 1
- fi
- fi
-
- if [ -d "templates" ]; then
- mv $templates $templates.old
- fi
-
- echo Checking out templates from $repository...
- svn checkout $repository $templates
-
- if [ "$?" == "0" ]; then
- rm -rf $templates.old
- else
- rm -rf $templates
- mv $templates.old $templates
- echo $BASENAME: $mode failed
- exit 1
- fi
-
- else
- echo "$BASENAME: $templates_folder seens to be already $mode""ed $preposition $repository"
- exit 1
- fi
-
- fi
-
-}
-
-function template_create {
-
- # create a new template
-
- local template_base info_commit orig_template list
- local orig_packages orig_perms orig_scripts orig_files
-
- if [ ! -d "`dirname $TEMPLATE_BASE`" ]; then
-
- echo Creating template `basename $TEMPLATE_BASE`...
-
- if templates_under_svn && svn_folder `dirname $TEMPLATE_BASE`; then
- cd `dirname $TEMPLATE_BASE`
- svn mkdir `dirname $TEMPLATE_BASE`
- else
- mkdir -p `dirname $TEMPLATE_BASE`
- fi
-
- else
- echo $BASENAME: template `basename $TEMPLATE_BASE` already exists
- exit 1
- fi
-
- touch `template_perms`
- touch `template_packages`
-
- if templates_under_svn && svn_folder `dirname $TEMPLATE_BASE`; then
-
- cd `dirname $TEMPLATE_BASE`
-
- if ! svn_check `template_files`; then
- svn mkdir `template_files`
- info_commit="yes"
- else
- mkdir -p `template_files`
- fi
-
- if ! svn_check `template_scripts`; then
- svn mkdir `template_scripts`
- info_commit="yes"
- else
- mkdir -p `template_scripts`
- fi
-
- if ! svn_check `template_packages`; then
- svn add `template_packages`
- info_commit="yes"
- fi
-
- if ! svn_check `template_perms`; then
- svn add `template_perms`
- info_commit="yes"
- fi
-
- elif templates_under_svn && svn_folder "$TEMPLATE_FOLDER"; then
-
- mkdir `template_files` `template_scripts`
- cd $TEMPLATE_FOLDER
- svn add `basename $TEMPLATE_BASE`
- info_commit="yes"
-
- else
- mkdir `template_files` `template_scripts`
- fi
-
- if [ -d "/$ROOT" ]; then
- template_update
- elif [ ! -z "$ROOT" ]; then
-
- # copy from an existing template
-
- if [ -d "$TEMPLATE_FOLDER/$ROOT" ]; then
- orig_template="$TEMPLATE_FOLDER/$ROOT"
- elif [ -d "$BASE_CONF/templates/$ROOT" ]; then
- orig_template="$BASE_CONF/templates/$ROOT"
- elif [ -d "$BASE_CONF/defaults/templates/$ROOT" ]; then
- orig_template="$BASE_CONF/defaults/templates/$ROOT"
- else
- return 1
- fi
-
- if [ -e "$orig_template/$ROOT/packages" ]; then
- orig_packages="$orig_template/$ROOT/packages"
- orig_perms="$orig_template/$ROOT/perms"
- orig_scripts="$orig_template/$ROOT/scripts"
- orig_files="$orig_template/$ROOT/files"
- else
- orig_packages="$orig_template/$ROOT.template"
- orig_perms="$orig_template/$ROOT.perms"
- orig_scripts="$orig_template/$ROOT.s"
- orig_files="$orig_template/$ROOT.d"
- fi
-
- if [ -f "$orig_perms" ]; then
- cat $orig_perms > `template_perms`
- fi
-
- if [ -f "$orig_packages" ]; then
- cat $orig_packages > `template_packages`
- fi
-
- if templates_under_svn && svn_folder $orig_template; then
-
- cd `dirname $TEMPLATE_BASE`
-
- list="`ls $orig_files/ 2> /dev/null`"
- if [ ! -z "$list" ]; then
- echo Copying files to the new template...
- rsync -av --exclude=.svn $orig_files/ `template_files`/
- svn add `basename $(template_files)`/*
- info_commit="yes"
- fi
-
- list="`ls $orig_scripts/ 2> /dev/null`"
- if [ ! -z "$list" ]; then
- echo Copying scripts to the new template...
- rsync -av --exclude=.svn $orig_scripts/ `template_scripts`/
- svn add `basename $(template_scripts)`/*
- info_commit="yes"
- fi
-
- else
-
- list="`ls $orig_files/ 2> /dev/null`"
- if [ ! -z "$list" ]; then
- echo Copying files to the new template...
- rsync -av $orig_files/ `template_files`/
- fi
-
- list="`ls $orig_scripts/ 2> /dev/null`"
- if [ ! -z "$list" ]; then
- echo Copying scripts to the new template...
- rsync -av $orig_scripts/ `template_scripts`/
- fi
-
- fi
-
- else
- echo $BASENAME: warning: no root directory defined
- fi
-
- if [ "$info_commit" == "yes" ] && [ -z "$SILENT" ]; then
- echo "Please run 'jail-commit --all' to add files under $file into the svn repository"
- fi
-
-}
-
-function template_update {
-
- # update the template package list
-
- check_template_exist
-
- if [ ! -d "$ROOT/var/log/packages" ]; then
- echo $ROOT/var/log/packages: directory not found
- exit 1
- fi
-
- echo Checking package list for template `basename $TEMPLATE_BASE`...
-
- for package in `ls -1 $ROOT/var/log/packages/`; do
- pack=`package_name $package`
- if [ -f $TEMPLATE ]; then
- if ! `grep -v -e "^#" $TEMPLATE | cut -d : -f 1 | awk '{ print $1 }' | grep -q -e "^$pack\$"`; then
- echo $pack >> $TEMPLATE
- echo Adding $pack # on $TEMPLATE
- fi
- else
- echo $pack >> $TEMPLATE
- echo Adding $pack # on $TEMPLATE
- fi
- done
-
- # check if each package from the template is installed
- grep -v -e "^#" $TEMPLATE | cut -d : -f 1 | awk '{ print $1 }' | while read pack; do
-
- if [ ! -z "$pack" ]; then
- unset found
- for candidate in `ls $ROOT/var/log/packages/$pack* 2> /dev/null`; do
- candidate="`package_name $candidate`"
- if [ "$pack" == "$candidate" ]; then
- found="1"
- break
- fi
- done
- if [ "$found" != "1" ]; then
- # remove a non-installed package from the template
- sed "/^$pack$/d" $TEMPLATE | sed "/^$pack $/d" | sed "/^$pack:*/d" | sed "/^$pack */d" > $TEMPLATE.tmp
- cat $TEMPLATE.tmp > $TEMPLATE
- rm -f $TEMPLATE.tmp
- echo Removing $pack # from $TEMPLATE
- fi
- fi
-
- done
-
- if ! svn_check `template_packages` && svn_folder `dirname $TEMPLATE_BASE`; then
- cd `dirname $TEMPLATE_BASE`
- svn add `basedir $(template_packages)`
- fi
-
-}
-
-function template_add {
-
- # add a file in a template
- # usage: template_add <jail-root> <file>
-
- local info_commit cwd
-
- if [ -z "$1" ] || [ -z "$2" ]; then
- return 1
- fi
-
- check_template_exist
-
- jail="/$1"
- file="$2"
-
- if [ -a "`template_files`/$file" ]; then
- if [ -d "`template_files`/$file" ]; then
-
- echo $BASENAME: folder `slash $file` already on `template_files`, checking for contents
-
- cd $jail
- for candidate in `find $file`; do
- if [ ! -a "`template_files`/$candidate" ]; then
- mkdir -p `template_files`/`dirname $candidate`
- cp -a $jail/$candidate `template_files`/$candidate
- if templates_under_svn && svn_folder `template_files`; then
- cwd="`pwd`"
- cd `template_files`
- svn add ./$candidate
- if [ "$?" != "0" ]; then
- echo $BASENAME: error adding `slash $candidate` into the revision system
- fi
- cd $cwd
- info_commit="yes"
- else
- echo Added `slash $jail/$candidate` on `slash $(template_files)/$candidate`
- fi
- fi
- done
-
- if [ "$info_commit" == "yes" ] && [ -z "$SILENT" ]; then
- echo "Please run 'jail-commit --all' to add files under `slash $file` into the svn repository"
- fi
-
- else
- echo $BASENAME: file `slash $file` already on `template_files`
- exit 1
- fi
- else
-
- if [ -a "$jail/$file" ]; then
-
- destination="`echo $(template_files)/$file | sed -e 's/\/$//'`"
-
- if templates_under_svn && svn_folder `template_files`; then
-
- candidate="./`dirname $file`"
-
- if ! svn_folder `template_files`/$candidate; then
- mkdir -p `template_files`/$candidate
- cd `template_files`/`dirname $candidate`
- while true; do
- if svn_folder $(pwd); then
- svn add `basename $candidate`
- break
- else
- candidate="`basename $(pwd)`"
- cd ..
- fi
- done
- fi
-
- cp -a $jail/$file $destination
-
- cwd="`pwd`"
- cd `template_files`
- svn add ./$file
-
- if [ "$?" != "0" ]; then
- echo $BASENAME: error adding `slash $candidate` into the revision system
- else
- if [ -z "$SILENT" ]; then
- echo "Please run 'jail-commit --all' to add `slash $file` into the svn repository"
- fi
- fi
-
- cd $cwd
-
- else
-
- mkdir -p `template_files`/`dirname $file`/
- cp -a $jail/$file $destination
- echo Added `slash $jail/$file` on `slash $destination`
-
- fi
-
- else
- echo $BASENAME: `slash $jail/$file`: file not found
- exit 1
- fi
- fi
-
-}
-
-function check_template_exist {
-
- # check if a template exists
- # and create missing components
-
- local components
-
- components="`template_packages` `template_perms` `template_files` `template_scripts`"
-
- if [ ! -d "`dirname $TEMPLATE_BASE`" ]; then
- echo $BASENAME: template not found
- exit 1
- fi
-
- for component in $components; do
-
- if [ ! -e "$component" ]; then
-
- echo "$BASENAME: template component not found: $component; creating..."
-
- cd `dirname $TEMPLATE_BASE`
-
- if [ "$component" == "perms" ] || [ "$component" == "template" ]; then
- touch $component
- else
- mkdir $component
- fi
-
- if templates_under_svn && svn_folder `dirname $TEMPLATE_BASE`; then
- svn add $component
- info_commit="yes"
- fi
-
- elif templates_under_svn && svn_folder `dirname $TEMPLATE_BASE` && \
- ! svn_check $component; then
-
- cd `dirname $TEMPLATE_BASE`
- svn add $component
- info_commit="yes"
-
- fi
-
- done
-
- if [ "$info_commit" == "yes" ] && [ -z "$SILENT" ]; then
- echo "Please run 'jail-commit --all' to add new files in the svn repository"
- fi
-
-}
-
-function template_delete {
-
- # delete a file from a template
- # usage: template_delete <file> [jail-root]
-
- if [ -e "`template_files`/$1" ]; then
-
- # first try to remove the file from the template
- if templates_under_svn && svn_folder `template_files`; then
- cd `template_files`
- svn del --force ./$1 || rm -rf ./$1
- if [ -z "$SILENT" ]; then
- echo "Please run 'jail-commit --all' to del $1 in the svn repository"
- fi
- else
- rm -rf `template_files`/$1
- echo Removed $1 from `template_files`
- fi
-
- # then, if requested, remove the file from the jail
- if [ ! -z "$2" ]; then
- if [ ! -d "$2" ]; then
- echo $BASENAME: jail not found: $2
- elif [ -e "$2/$1" ]; then
- rm -rf $2/$1
- echo Removed $1 from jail $2
- else
- echo $BASENAME: file not found: $2/$1
- fi
- fi
-
- elif [ -e "`template_scripts`/$1" ]; then
- if templates_under_svn && svn_folder `template_scripts`; then
- cd `template_scripts`
- svn del --force ./$1 || rm -rf ./$1
- if [ -z "$SILENT" ]; then
- echo "Please run 'jail-commit --all' to del $1 in the svn repository"
- fi
- else
- rm -rf `template_scripts`/$1
- echo Removed $1 from `template_scripts`
- fi
- else
- if [ ! -d "`template_files`" ]; then
- echo $BASENAME: template folder `template_files` not found
- else
- echo $BASENAME: file $1 not found at `template_files`
- fi
- exit 1
- fi
-
-}
-
-function template_remove {
-
- # remove a template
- # usage: template_remove
-
- local basedir template
-
- basedir="`dirname $TEMPLATE_BASE`"
- template="`basename $basedir`"
-
- if [ ! -d "$basedir" ]; then
- echo $BASENAME: template $template does not exist
- exit 1
- fi
-
- if templates_under_svn && svn_folder $basedir; then
- cd $TEMPLATE_FOLDER
- svn update
- svn del --force $template
- if [ "$?" != "0" ]; then
- echo $BASENAME: error deleting template $template
- else
- svn commit -m "deleted $template"
- if [ "$?" != "0" ]; then
- echo $BASENAME: error commiting to svn repository
- fi
- fi
- else
- rm -rf $basedir
- fi
-
-}
-
-function template_list {
-
- # list templates
- # usage: template_list [path]
-
- local list basedir template
-
- if [ "$TEMPLATE_STORAGE_STYLE" != "own-folder" ] && \
- [ "$TEMPLATE_STORAGE_STYLE" != "compact" ]; then
- echo "$BASENAME: option only available if TEMPLATE_STORAGE_STYLE configured as 'own-folder' or 'compact'"
- return 1
- fi
-
- if echo $1 | grep -q "/" || [ ! -z "$1" ]; then
-
- template="`echo $1 | cut -d "/" -f 1`"
-
- if [ -e "$BASE_CONF/defaults/templates/$1" ]; then
- list="`ls $BASE_CONF/defaults/templates/$1 2> /dev/null`"
- if [ "$?" == "0" ]; then
- list="`echo $list | xargs`"
- echo "In the default template $template: $list"
- fi
- fi
-
- if [ -e "$TEMPLATE_FOLDER/$1" ]; then
- list="`ls $TEMPLATE_FOLDER/$1 2> /dev/null`"
- if [ "$?" == "0" ]; then
- list="`echo $list | xargs`"
- echo "In the custom template $template: $list"
- fi
- fi
-
- else
-
- list="`ls $BASE_CONF/defaults/templates/$1 2> /dev/null`"
- if [ "$?" == "0" ]; then
- list="`echo $list | xargs`"
- echo "Default templates: $list"
- fi
-
- list="`ls $TEMPLATE_FOLDER/$1 2> /dev/null`"
- if [ "$?" == "0" ]; then
- list="`echo $list | xargs`"
- echo "Custom templates: $list"
- fi
-
- fi
-
-}
-
-function template_post_install_edit {
-
- # add or edit a post-installation script
- # usage: template_post_install_edit <script-name>
-
- if [ -z "$1" ]; then
- echo $BASENAME: no template specified
- exit 1
- elif echo $1 | grep -q "/"; then
- echo $BASENAME: error: invalid script name $1
- fi
-
- if [ -f "`template_scripts`/$1" ]; then
- sha1sum="`sha1sum $(template_scripts)/$1`"
- if [ ! -z "$EDITOR" ]; then
- $EDITOR `template_scripts`/$1
- else
- vi `template_scripts`/$1
- fi
- if [ "$sha1sum" != "`sha1sum $(template_scripts)/$1`" ] && \
- svn_folder `dirname $TEMPLATE_BASE` && [ -z "$SILENT" ]; then
- echo "Please run 'jail-commit --all' to send changes to the repository"
- fi
- else
-
- if [ -e "`template_scripts`/$1" ]; then
-
- echo $BASENAME: file `template_scripts`/$1 not a regular file
-
- elif [ -d "`template_scripts`" ]; then
-
- touch `template_scripts`/$1
- chmod +x `template_scripts`/$1
-
- if svn_folder `template_scripts`; then
- cd `template_scripts`
- svn add $1
- if [ -z "$SILENT" ]; then
- echo "Please run 'jail-commit --all' to send the script to the repository"
- fi
- fi
-
- echo "$BASENAME: script created; run templatepkg -p `basename $TEMPLATE_BASE` $1 again to edit it"
-
- else
- echo $BASENAME: folder not found: `template_scripts`
- fi
-
- fi
-
-}
-
-function template_edit {
-
- # edit a template package list
- # usage: template_edit
-
- if [ -f "`template_packages`" ]; then
- sha1sum="`sha1sum $(template_packages)`"
- if [ ! -z "$EDITOR" ]; then
- $EDITOR `template_packages`
- else
- vi `template_packages`
- fi
- if [ "$sha1sum" != "`sha1sum $(template_packages)`" ] && \
- svn_folder `dirname $TEMPLATE_BASE` && [ -z "$SILENT" ]; then
- echo "Please run 'jail-commit --all' to send changes to the repository"
- fi
- elif [ -e "`template_packages`" ]; then
- echo $BASENAME: file `template_packages` not a regular file
- else
- echo $BASENAME: file not found: `template_packages`
- fi
-
-}
-
-function require {
-
- # requires a string
- # usage: require [string]
-
- if [ -z "$1" ]; then
- usage
- fi
-
-}
-
-function setroot {
-
- # set ROOT variable
- # usage: setroot <value1> <value2>
-
- if [ -z "$1" ]; then
- ROOT="/"
- else
- ROOT="$1"
- fi
-
-}
-
-function create_doinst {
-
- # create a doinst.sh from a template perms file
- # usage: create_doinst <doinst-path>
-
- rm -f $1/doinst.sh
-
- if [ -s "`template_perms`" ]; then
- echo Creating doinst.sh...
- cat `template_perms` | while read entry; do
- file="`echo $entry | cut -d ";" -f 1`"
- if [ -e "`template_files`/$file" ]; then
- owner="`echo $entry | cut -d ";" -f 2`"
- group="`echo $entry | cut -d ";" -f 3`"
- perms="`echo $entry | cut -d ";" -f 4`"
- echo "( chmod $perms /$file )" >> $1/doinst.sh
- echo "( chown $owner:$group /$file )" >> $1/doinst.sh
- fi
- done
- fi
-
-}
-
-function package_template {
-
- # make a package from a template
- # usage: package_template [version] [build] [arch]
-
- local template version build arch
-
- template="`basename $TEMPLATE_BASE`"
-
- if [ ! -d "`template_files`" ]; then
- $BASENAME: folder not found: `template_files`
- return 1
- fi
-
- echo Buiding package for template $template...
-
- if [ -z "$1" ]; then
- version="1"
- else
- version="$1"
- fi
-
- if [ -z "$2" ]; then
- build="1"
- else
- build="$2"
- fi
-
- if [ -z "$3" ]; then
- arch="noarch"
- else
- arch="$3"
- fi
-
- TMP=${TMP:=/tmp}
- rm -rf $TMP/templatepkg
- mkdir -p $TMP/templatepkg
-
- rsync -av --exclude=.svn `template_files`/ $TMP/templatepkg/
- mkdir $TMP/templatepkg/install
- create_doinst $TMP/templatepkg/install
-
- echo "template-$template: template-$template" > $TMP/templatepkg/install/slack-desc
- echo "template-$template: " >> $TMP/templatepkg/install/slack-desc
- echo "template-$template: simplepkg template $template" >> $TMP/templatepkg/install/slack-desc
-
- for ((n=1;n<=8;n++)); do
- echo "template-$template: " >> $TMP/templatepkg/install/slack-desc
- done
-
- cd $TMP/templatepkg
-
- makepkg -c n -l y $TMP/template-$template-$version-noarch-$build.$MKBUILD_COMPRESS
-
- cd $TMP
- rm -rf templatepkg
-
-}
-
-# -----------------------------------------------------
-# main
-# -----------------------------------------------------
-
-if [ ! -z "$2" ]; then
- search_template $2 --new
-fi
-
-TEMPLATE="`template_packages`"
-
-if [ "$1" == "-u" ] || [ "$1" == "--update" ]; then
-
- require $2
- setroot $3
- template_update
-
-elif [ "$1" == "-c" ] || [ "$1" == "--create" ]; then
-
- require $2
- setroot $3
- template_create
-
-elif [ "$1" == "-a" ] || [ "$1" == "--add" ]; then
-
- require $2
-
- if [ -z "$3" ]; then
- usage
- else
- setroot $4
- fi
-
- template_add $ROOT $3
-
-elif [ "$1" == "-d" ] || [ "$1" == "--delete" ]; then
-
- require $2
-
- if [ -z "$3" ]; then
- usage
- else
- template_delete $3 $4
- fi
-
-elif [ "$1" == "-s" ] || [ "$1" == "--sync" ]; then
-
- if templates_under_svn && svn_folder $TEMPLATE_FOLDER; then
- ( cd $TEMPLATE_FOLDER && svn update )
- true
- fi
-
-elif [ "$1" == "-e" ] || [ "$1" == "--export" ]; then
-
- require $2
- import_export_templates export $2
-
-elif [ "$1" == "-i" ] || [ "$1" == "--import" ]; then
-
- require $2
- import_export_templates import $2
-
-elif [ "$1" == "-r" ] || [ "$1" == "--remove" ]; then
-
- require $2
- template_remove
-
-elif [ "$1" == "-l" ] || [ "$1" == "--list" ]; then
-
- template_list $2
-
-elif [ "$1" == "-b" ] || [ "$1" == "--batch-edit" ]; then
-
- require $3
- template_post_install_edit $3
-
-elif [ "$1" == "-t" ] || [ "$1" == "--template-edit" ]; then
-
- require $2
- template_edit
-
-elif [ "$1" == "-p" ] || [ "$1" == "--pack" ]; then
-
- require $2
- shift ; shift
- package_template $*
-
-elif [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
-
- display_help $2
-
-else
- usage
-fi
-