aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/common.sh411
1 files changed, 0 insertions, 411 deletions
diff --git a/lib/common.sh b/lib/common.sh
deleted file mode 100644
index d0fde3c..0000000
--- a/lib/common.sh
+++ /dev/null
@@ -1,411 +0,0 @@
-#!/bin/bash
-#
-# common.sh: common functions for simplepkg
-# feedback: rhatto at riseup.net | gpl
-#
-# Uses some functions from pkgtools, which license is:
-#
-# Copyright 1999 Patrick Volkerding, Moorhead, Minnesota, USA
-# Copyright 2001, 2002, 2003 Slackware Linux, Inc., Concord, California, USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-BASE_CONF="/etc/simplepkg"
-CONF="$BASE_CONF/simplepkg.conf"
-JAIL_LIST="$BASE_CONF/jailist"
-SIMPLARET="simplaret"
-
-# pkgtool stuff
-function package_name {
-
- STRING=`basename $1 .tgz`
- # Check for old style package name with one segment:
- if [ "`echo $STRING | cut -f 1 -d -`" = "`echo $STRING | cut -f 2 -d -`" ]; then
- echo $STRING
- else # has more than one dash delimited segment
- # Count number of segments:
- INDEX=1
- while [ ! "`echo $STRING | cut -f $INDEX -d -`" = "" ]; do
- INDEX=`expr $INDEX + 1`
- done
- INDEX=`expr $INDEX - 1` # don't include the null value
- # If we don't have four segments, return the old-style (or out of spec) package name:
- if [ "$INDEX" = "2" -o "$INDEX" = "3" ]; then
- echo $STRING
- else # we have four or more segments, so we'll consider this a new-style name:
- NAME=`expr $INDEX - 3`
- NAME="`echo $STRING | cut -f 1-$NAME -d -`"
- echo $NAME
- fi
- fi
-
-}
-
-function package_version {
-
- # get VERSION from a package name
- local file pack version
- file="`basename $1`"
- pack="`package_name $1`"
- version="`echo $file | sed -e "s/^$pack-//" | cut -d "-" -f 1`"
- echo $version
-
-}
-
-function package_arch {
-
- # get ARCH from a package name
- local file pack arch
- file="`basename $1`"
- pack="`package_name $1`"
- arch="`echo $file | sed -e "s/^$pack-//" | cut -d "-" -f 2`"
- echo $arch
-
-}
-
-function package_build {
-
- # get BUILD from a package name
- local file pack build
- file="`basename $1 .tgz`"
- pack="`package_name $1`"
- build="`echo $file | sed -e "s/^$pack-//" | cut -d "-" -f 3`"
- echo $build
-
-}
-
-function install_packages {
-
- local check installed unable_to_install root
-
- # check if is time to clean the local repository
- if [ "$SIMPLARET_CLEAN" == "1" ]; then
- ARCH=$ARCH VERSION=$VERSION $SIMPLARET --purge
- elif [ ! -z "$SIMPLARET_PURGE_WEEKS" ] && [ "$SIMPLARET_PURGE_WEEKS" != "0" ]; then
- ARCH=$ARCH VERSION=$VERSION $SIMPLARET --purge -w $SIMPLARET_PURGE_WEEKS
- fi
-
- root="$JAIL_ROOT/$server"
-
- # now tries to install each package listed in the template
- for pack in `cat $TEMPLATE | grep -v -e "^#" | cut -d : -f 1`; do
-
- # try to install the package
- ROOT=/$root ARCH=$ARCH VERSION=$VERSION $SIMPLARET --install $pack --skip-checks
-
- # check if the package was installed
- installed=`eval "ls /$root/var/log/packages/ | egrep '^$pack-[^-]+-[^-]+-[^-]+$'"`
- check=$?
-
- if [ ! -z "$installed" ] && [ "$check" == "0" ]; then
- # the package is installed
- if [ ! -z "$SIMPLARET_DELETE_DURING" ] && [ "$SIMPLARET_DELETE_DURING" != "0" ]; then
- SILENT=1 ARCH=$ARCH VERSION=$VERSION $SIMPLARET --purge
- fi
- else
- unable_to_install="$unable_to_install\n\t$pack"
- fi
-
- done
-
- # purge packages, if needed
- if [ "$SIMPLARET_DELETE_DOWN" == "1" ]; then
- ARCH=$ARCH VERSION=$VERSION $SIMPLARET --purge
- fi
-
- if [ ! -z "$unable_to_install" ]; then
- echo "mkjail was unable to install the following packages on $root:"
- echo -e "$unable_to_install"
- fi
-
-}
-
-function remove_packages {
-
- for pack in `cat $TEMPLATE | grep -v -e "^#" | cut -d : -f 1`; do
- ROOT=/$JAIL_ROOT/$server removepkg $pack
- done
-
-}
-
-function eval_parameter {
-
- # usage: eval $1 parameter from $CONF
- # return the evaluated parameter if available or $2 $3 ... $n
-
- if grep -qe "^$1=" $CONF; then
- grep -e "^$1=" $CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | sed -e 's/ *#.*$//'
- else
- shift
- echo $*
- fi
-
-}
-
-function eval_boolean_parameter {
-
- # get a boolean parameter from the configuration
-
- local value
-
- # get the value
- value="`eval_parameter $1 $2`"
-
- # force case insensitiveness
- value="`echo $value | tr '[:upper:]' '[:lower:]'`"
-
- # convert it to wheter 0 or 1
- if [ "$value" == "yes" ] || [ "$value" == "1" ]; then
- echo 1
- else
- echo 0
- fi
-
-}
-
-function eval_config {
-
- # simplepkg config file evaluation
- # usage: eval_config <program-name> [-u]
-
- if [ -f "$CONF" ]; then
-
- DEFAULT_ARCH="`eval_parameter DEFAULT_ARCH $(default_arch)`"
- DEFAULT_VERSION="`eval_parameter DEFAULT_VERSION $(default_version)`"
-
- STORAGE="`eval_parameter STORAGE /var/simplaret/packages`"
- JAIL_ROOT="`eval_parameter JAIL_ROOT /vservers`"
- PATCHES_DIR="`eval_parameter PATCHES_DIR /var/simplaret/patches`"
- ROOT_PRIORITY="`eval_parameter ROOT_PRIORITY patches slackware extra testing pasture`"
- SIMPLARET_PURGE_WEEKS="`eval_parameter SIMPLARET_PURGE_WEEKS 0`"
- FTP_TOOL="`eval_parameter FTP_TOOL curl`"
- HTTP_TOOL="`eval_parameter HTTP_TOOL curl`"
- CONNECT_TIMEOUT="`eval_parameter CONNECT_TIMEOUT 0`"
- TEMPLATE_FOLDER="`eval_parameter TEMPLATE_BASE /etc/simplepkg/templates`"
- TEMPLATE_STORAGE_STYLE="`eval_parameter TEMPLATE_STORAGE_STYLE own_folder`"
-
- SIMPLARET_CLEAN="`eval_boolean_parameter SIMPLARET_CLEAN 1`"
- SIMPLARET_DELETE_DOWN="`eval_boolean_parameter SIMPLARET_DELETE_DOWN 1`"
- SIMPLARET_UPDATE="`eval_boolean_parameter SIMPLARET_UPDATE 0`"
- SIMPLARET_DELETE_DURING="`eval_boolean_parameter SIMPLARET_DELETE_DURING 0`"
- SIMPLARET_PURGE_PATCHES="`eval_boolean_parameter SIMPLARET_PURGE_PATCHES 0`"
- PASSIVE_FTP="`eval_boolean_parameter PASSIVE_FTP 0`"
- WARNING="`eval_boolean_parameter WARNING 0`"
- SIGNATURE_CHECKING="`eval_boolean_parameter SIGNATURE_CHECKING 0`"
- DEPENDENCY_CHECKING="`eval_boolean_parameter DEPENDENCY_CHECKING 1`"
- TEMPLATES_UNDER_SVN="`eval_boolean_parameter TEMPLATES_UNDER_SVN 0`"
-
- # Enabling this option (i.e, setting to "1" or "yes"), simplaret will
- # donwload even # already applied patches, a good option when you plan
- # to keep local copies of all needed patches for your system
- DOWNLOAD_EVEN_APPLIED_PATCHES="`eval_boolean_parameter DOWNLOAD_EVEN_APPLIED_PATCHES 0`"
-
- # Enabling this option, jail-upgrade will look at your
- # standard repositories for new packages; if it find a package
- # with different version of your current installed package and
- # also this package isnt in the packages folder, then the new
- # package is apllied; if in doubt, just say no or leave blank.
- CONSIDER_ALL_PACKAGES_AS_PATCHES="`eval_boolean_parameter CONSIDER_ALL_PACKAGES_AS_PATCHES 0`"
-
- # Enabling this option (i.e, setting to "1" or "yes"), simplaret will
- # store patches it finds on ROOT repositories on
- #
- # $PATCHES_DIR/$ARCH/$VERSION/root-$repository_name.
- #
- # By default this option is turned off because it breaks the standard
- # way to store packages and can cause some confusion, but its an useful
- # feature if you like to see all patches apart from common packages and/or
- # stored in the same tree.
- STORE_ROOT_PATCHES_ON_PATCHES_DIR="`eval_boolean_parameter STORE_ROOT_PATCHES_ON_PATCHES_DIR 0`"
-
- # now we place "patches" on the top of ROOT_PRIORITY
- ROOT_PRIORITY="patches `echo $ROOT_PRIORITY | sed -e 's/patches//'`"
-
- else
- echo $1 error: config file $CONFIG not found
- exit 1
- fi
-
- if [ ! -d "$STORAGE" ]; then
- mkdir -p $STORAGE
- fi
-
- if [ ! -d "$PATCHES_DIR" ]; then
- mkdir -p $PATCHES_DIR
- fi
-
- if [ -z "$ARCH" ]; then
- ARCH="$DEFAULT_ARCH"
- fi
-
- if [ -z "$VERSION" ]; then
- VERSION="$DEFAULT_VERSION"
- fi
-
- if [ "$FTP_TOOL" != "wget" ] && [ "$FTP_TOOL" != "curl" ] && [ "$FTP_TOOL" != "ncftpget" ]; then
- echo "$1 configuration error: invalid value $FTP_TOOL for config parameter FTP_TOOL"
- echo "$1 assuming value \"curl\" for variable FTP_TOOL"
- FTP_TOOL="curl"
- fi
-
- if [ "$HTTP_TOOL" != "wget" ] && [ "$HTTP_TOOL" != "curl" ]; then
- echo "$1 configuration error: invalid value $HTTP_TOOL for config parameter HTTP_TOOL"
- echo "$1 assuming value \"curl\" for variable HTTP_TOOL"
- HTTP_TOOL="curl"
- fi
-
- if which $SIMPLARET &> /dev/null; then
- if [ "$SIMPLARET_UPDATE" == "1" ]; then
- if [ "$2" == "-u" ]; then
- echo "updating package database..."
- ARCH=$ARCH VERSION=$VERSION $SIMPLARET --update
- fi
- fi
- else
- echo "$SIMPLARET not found, please install it before run $0"
- fi
-
- if [ "$TEMPLATE_STORAGE_STYLE" != "simplepkg-folder" ] && \
- [ "$TEMPLATE_STORAGE_STYLE" != "templates-folder" ] && \
- [ "$TEMPLATE_STORAGE_STYLE" != "own-folder" ]; then
- TEMPLATE_STORAGE_STYLE="own-folder"
- fi
-
-}
-
-function default_version {
-
- # get version from /etc/slackware-version
- if [ -f "$1/etc/slackware-version" ]; then
- cat $1/etc/slackware-version | awk '{ print $2 }' | sed -e 's/.0$//'
- else
- echo "none"
- fi
-
-}
-
-function default_arch {
-
- # get arch from /etc/slackware-version
-
- local arch
- arch="`cat $1/etc/slackware-version | awk '{ print $3 }' | sed -e 's/(//' -e 's/)//'`"
-
- if [ -z "$arch" ]; then
- echo i386
- else
- echo $arch
- fi
-
-}
-
-function search_default_template {
-
- if [ -f "$BASE_CONF/templates/default.template" ]; then
- TEMPLATE_BASE="$BASE_CONF/templates/default"
- echo $BASENAME: using default template
- elif [ -f "$BASE_CONF/default.template" ]; then
- TEMPLATE_BASE="$BASE_CONF/default"
- echo $BASENAME using default template
- else
- echo $BASENAME: error: default template not found
- echo $BASENAME: please create a template using templatepkg
- return 1
- fi
-}
-
-function search_template {
-
- # determine the template to be used
- # usage: <search-template> <template-name> [--new | --update]
-
- #
- # templates can be stored either on
- #
- # - $BASE_CONF/template_name.template
- # - $BASE_CONF/templates/template_name.template
- # - $BASE_CONF/templates/template_name/template_name.template
- #
-
- if [ -f "$BASE_CONF/$1.template" ]; then
- TEMPLATE_BASE="$BASE_CONF/$1"
- elif [ -f "$BASE_CONF/templates/$1.template" ]; then
- TEMPLATE_BASE="$BASE_CONF/templates/$1"
- elif [ -f "$BASE_CONF/templates/$1/$1.template" ]; then
- TEMPLATE_BASE="$BASE_CONF/templates/$1/$1"
- else
- if [ "$2" == "--new" ]; then
- # we need to return the path for a new template
- if [ "$TEMPLATE_STORAGE_STYLE" == "simplepkg-folder" ]; then
- TEMPLATE_BASE="$BASE_CONF/$1"
- elif [ "$TEMPLATE_STORAGE_STYLE" == "templates-folder" ]; then
- TEMPLATE_BASE="$BASE_CONF/templates/$1"
- else
- TEMPLATE_BASE="$BASE_CONF/templates/$1/$1"
- mkdir -p $BASE_CONF/templates/$1
- fi
- elif [ "$2" == "--update" ]; then
- return 1
- else
- echo $BASENAME: template $1 not found
- search_default_template
- fi
- fi
-
-}
-
-function numeric_perm {
-
- # get the numeric permission of a file
- # usage: numeric_perm <file-name>
-
- # just a bit of forbidden secrets
-
- if [ -a "$1" ]; then
- ls -ln $1| awk '{ print $1 }' | \
- sed -e 's/^.//' -e 's/r/4/g' -e 's/w/2/g' -e 's/x/1/g' \
- -e 's/-/0/g' -e 's/\(.\)\(.\)\(.\)/\1+\2+\3/g' | \
- fold -w5 | bc -l | xargs | sed -e 's/ //g'
- fi
-
-}
-
-function get_owner {
-
- # get the numeric owner for a file
- # usage: get_owner <file>
-
- if [ -a "$1" ]; then
- ls -ln $1 | awk '{ print $3 }'
- fi
-
-}
-
-function get_group {
-
- # get the numeric group for a file
- # usage: get_group <file>
-
- if [ -a "$1" ]; then
- ls -ln $1 | awk '{ print $4 }'
- fi
-
-}
-