diff options
Diffstat (limited to 'source/d/slacktrack/slacktrack-project/scripts/slackdtxt')
-rwxr-xr-x | source/d/slacktrack/slacktrack-project/scripts/slackdtxt | 312 |
1 files changed, 0 insertions, 312 deletions
diff --git a/source/d/slacktrack/slacktrack-project/scripts/slackdtxt b/source/d/slacktrack/slacktrack-project/scripts/slackdtxt deleted file mode 100755 index a32bf690..00000000 --- a/source/d/slacktrack/slacktrack-project/scripts/slackdtxt +++ /dev/null @@ -1,312 +0,0 @@ -#!/bin/bash -# -# Copyright 2002, 2009 Stuart Winter, Surrey, England, United Kingdom. -# 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. -# -################################################################################## -# Program: slackdtxt -# Purpose: Create package-ver-arch-build.txt files from slack-desc files. -# For use after running a SlackBuild script - you do not need to -# use this program for a package produced by slacktrack -- use its -# -c switch instead. -# Author : Stuart Winter <mozes@slackware.com> -# Date...: 24-Sep-2011 -# Version: 1.05 -################################################################################# -# History -########## -# 24-Sep-2011 - v1.05 -# * Look for 'install/slack-desc' and './install/slack-desc' -# in the packages. This provides support for malformed packages -# that have not been created with the Slackware 'makepkg' command. -# Thanks to Helmut Hullen for the suggestion. -# 15-May-2009 - v1.04 -# * Adjust to handle .tgz, .tbz, .tlz, .txz file extensions/ -# compression formats. -# 04-Sep-2008 - v1.03 -# * Display the filename of the .tgz being processed. -# * .txt files now use the time stamp of the corresponding .tgz -# * New default: only create a .txt or sign a package if there -# isn't an existing .txt or .asc *or* the .txt's time stamp -# isn't the same as the .tgz's. -# * Fixed bug where the gpg signing key wasn't being picked up -# at the command line. -# * Always wipe temp file when exiting -# * A GPG signing key must be specified -- it will not fall back -# on the default. This is because the code to check check the -# command line operators doesn't work. I checked the supplied -# examples for getopt and even they don't work! -# 28-Sep-2003 - v1.02 -# * Added option -G, --gpg-sign to sign the .tgz package -# (Patch from Emanuele Vicentini) -# * Removed -t option. You may now do specify the file after -# as before (but without -t) or specify more than one package -# at once: eg slackdtxt *.tgz -# 11-Jul-2003 - v1.01 -# * Fixed problem with checking the exit code from getopt. -# (reported by Emanuele Vicentini). -# 02-Mar-2003 - v1.00 -# * Created -################################################################################## - -# Program name -PROGNAME=slackdtxt - -# Version -VERSION="${PROGNAME} v1.03 by Stuart Winter <mozes@slackware.com>" - -# Temporary store for the slack-desc file -DESCTMPFILE="/var/tmp/$$.slackdtxt.desc.$$" - -trap "rm -f $DESCTMPFILE" EXIT - -############################## Functions################################### -function display_usage () { -printf "Usage: ${PROGNAME} [options] <package file/list of package files>\n" -if [ ! -z "$1" ]; then - echo "Use $( basename $0 ) --help for a list of options" -fi -} - -function display_help () { -printf "${VERSION}\n\n$(display_usage) - -Startup: - -h, --help Display this help - -v, --version Display version information - -Main options: - -s, --slackdescfile <file> 'slack-desc' file (cannot be used when - specifying more than one package file) - -d, --destdir <directory> The directory in which to store the package - file & create the .txt description file within - Omitting this flag implies --nodelete - -n, --nodelete Do not delete the original package file. - once moved into destination directory - -G, --gpg-sign <key id> Sign the package with GnuPG - -f, --force Force creation of a .txt and GPG signing. - By default, .txt files are only created and - packages signed if there is no existing .txt - or .asc file, or the .txt time stamps aren't - the same as the package's. -" -} - -############################################################################### - -############################## Configuration variables ######################### -# These can be changed via the command line switches -# -DELETEPKG="Yes" -# By default, don't force signing nor creation of .txt files -FORCE=No -################################################################################ - -PARAMS="$( getopt -qn "$( basename $0 )" -o s:d:fnhvG: -l slackdescfile:,destdir:,nodelete,force,help,version,gpg-sign: -- "$@" )" -# If params are incorrect then -if [ $? -gt 0 ]; then display_help ; exit 2 ; fi -eval set -- "${PARAMS}" -for param in $*; do - case "$param" in - -s|--slackdescfile) SLACKDESCFILE="$2" - shift 2;; - - -d|--destdir) DESTDIR="$2" - shift 2;; - - -n|--nodelete) DELETEPKG="No" - shift 1;; - - -f|--force) FORCE="Yes" - shift 1;; - - -G|--gpg-sign) SIGNPACKAGE="Yes" - SIGNINGKEY="$2" - shift 2 ;; - - -h|--help) display_help ; exit ;; - - -v|--version) printf "${VERSION}\n" ; exit;; - - --) shift; break;; - esac -done - -# Do we have the relevant information to proceed? -if [ -z "${1}" ]; then - display_usage help - exit 2 -fi - -# Do we have too *much* information to proceed? -if [ $# -gt 1 -a ! -z "${SLACKDESCFILE}" ]; then - echo "Error: You cannot specify a slack-desc file when" - echo " specifying more than one package file" - display_usage help - exit 2 -fi - -# Let's check if user really has gpg. -if [ "${SIGNPACKAGE}" = "Yes" ]; then - which gpg >/dev/null 2>&1 || { echo "${PROGNAME}: Warning: Cannot find gpg; disabling signature creation"; unset SIGNPACKAGE; } -fi - -# Main loop, handle any number (well, not really but you know..) -# of package files specified at the command line. -for PKGFILE in $*; do - -# If we were given a destination dir then check whether it exists -# Now giving a dest dir allows us to do -# # for i in *.t?z ; do slackdtxt -t $i ; done -# and create .txt files for all the package files in a dir. -if [ ! -z "${DESTDIR}" ]; then - DESTDIR="${DESTDIR}/" # otherwise when we tar without specifying a dest dir, it becomes /package-blah.tgz - if [ ! -d "${DESTDIR}" ]; then - echo "${PROGNAME}: ERROR: The destination directory does not exist" - exit 6 - fi - else - DELETEPKG="No" # otherwise we'd delete our only copy -fi - -# Does the specified package exist? -if [ ! -s "${PKGFILE}" ]; then - echo "${PROGNAME}: ERROR: The specified package "${PKGFILE}" does not exist" - exit 7 -fi - -# Does the specified slack-desc file exist ? -if [ ! -z "${SLACKDESCFILE}" ]; then - if [ ! -s "${SLACKDESCFILE}" ]; then - echo "${PROGNAME}: Warning: The specified slack-desc file ${SLACKDESCFILE} does not exist;" - echo " will try and extract from the package." - unset SLACKDESCFILE - else - # .. the file is fine. - # copy the slack-desc file to the temp location so I don't have - # to code around having the user specify one and having to take one - # from the package then delete it. - cp -f "${SLACKDESCFILE}" "${DESCTMPFILE}" - # .. but if copying it fails then we'll take it from the package anyway. - if [ $? -gt 0 ]; then - unset SLACKDESCFILE - else - SLACKDESCFILE="${DESCTMPFILE}" # we'll use the /var/tmp version now - fi - fi -fi -############################## Main program################################### - -# Move the pakage file to the dest dir if we were given one -if [ ! -z "${DESTDIR}" ]; then - echo -n "${PROGNAME}: Copying package to destination directory" - cp -fa "${PKGFILE}" "${DESTDIR}" - if [ $? -gt 0 ]; then - printf "\n${PROGNAME}: ERROR: Failed to copy the package\n" - exit 8 - else - echo " ... done" - fi -fi - -# Test the copied package -- it probably isn't corrupt (eg no disk space on $DESTDIR) -# as the cp would have errored, but I'd like to check anyway -if [ ! -z "${DESTDIR}" ]; then - echo -n "${PROGNAME}: Verifying the version of the package in the destination directory" - tar ftz "${DESTDIR}$( basename ${PKGFILE} )" >/dev/null 2>&1 - if [ $? -gt 0 ]; then - printf "\n${PROGNAME}: ERROR: The package in ${DESTDIR} is corrupt\n" - exit 8 - else - echo " ... done" - fi -fi - -# If we weren't given a slack-desc file then try and pull one from the -# package -if [ -z "${SLACKDESCFILE}" ]; then - SLACKDESCFILE="${DESCTMPFILE}" - echo "${PROGNAME}: Processing $( basename ${PKGFILE} ) ..." - echo -n "${PROGNAME}: Attempting to extract install/slack-desc from the package" - # In case somebody's not used 'makepkg' (which uses tar-1.13) to create the package, - # and tar has created the archive index with absolute path names. - # (it's a malformed package in this case, but we may as well support it) - tar fOx "${PKGFILE}" install/slack-desc ./install/slack-desc > "${SLACKDESCFILE}" 2>/dev/null - if [ ! -s "${SLACKDESCFILE}" ]; then - printf "\n${PROGNAME}: ERROR: Failed to extract the slack-desc file from the package\n" - rm -f "${SLACKDESCFILE}" # it may be zero bytes/empty - exit 8 - else - echo " ... done" - fi -fi - -# Turn the slack-desc file into a .txt file; -# only if there isn't an existing .txt or the .txt is older than the package -# unless -f,--force is specified. -SLACKTXTFILE="${DESTDIR}$( echo $( basename $PKGFILE ) | rev | cut -d. -f2- | rev ).txt" -if [ $SLACKTXTFILE -ot $PKGFILE -o $SLACKTXTFILE -nt $PKGFILE -o "$FORCE" = "Yes" ]; then - egrep -v '^($|#| *\|)' "${SLACKDESCFILE}" > $SLACKTXTFILE - rm -f "${SLACKDESCFILE}" - # Set the time stamp to that of the package: - touch -r $PKGFILE $SLACKTXTFILE - echo "${PROGNAME}: $SLACKTXTFILE created" - else - echo "${PROGNAME}: Not created .txt - is same age as package (use -f to override)" -fi - -# Let's sign the original package with user's gpg key -if [ ! -z "${SIGNPACKAGE}" ]; then -# If the .asc is the same time stamp as the package, don't sign unless -# forced. - if [ ${DESTDIR}${PKGFILE}.asc -ot $PKGFILE -o ${DESTDIR}${PKGFILE}.asc -nt $PKGFILE -o "$FORCE" = "Yes" ]; then - echo -n "${PROGNAME}: signing ${PKGFILE} with ${SIGNINGKEY:-your default} key" - GPG_OPTIONS="--detach-sign --armor --yes" - if [ "${SIGNINGKEY}" ]; then - GPG_OPTIONS="${GPG_OPTIONS} --local-user $SIGNINGKEY" - fi - gpg ${GPG_OPTIONS} --output ${DESTDIR}${PKGFILE}.asc ${PKGFILE} - if [ $? -ne 0 ]; then - echo "${PROGNAME}: ERROR: Signature has not been correctly generated" - else - echo " ... done" - # Set time stamp to that of the package: - touch -r $PKGFILE ${DESTDIR}${PKGFILE}.asc - fi - else - echo "${PROGNAME}: Not signed package - is same age as package (use -f to override)" - fi -fi - -# Delete the package ? -if [ "${DELETEPKG}" = "Yes" ]; then - echo -n "${PROGNAME}: Deleting the original package" - rm -f "${PKGFILE}" - if [ $? -gt 0 ]; then - printf "\n${PROGNAME}: Warning: unable to delete package\n" - else - echo " ... done" - fi -fi - -unset SLACKDESCFILE - -# Exit from main loop -done |