From c17ef8ec52390e431ce185a8c4c26ce12ee7bb19 Mon Sep 17 00:00:00 2001 From: emmett1 Date: Mon, 28 Jan 2019 16:37:52 +0800 Subject: [PATCH] remove unused options, codes, colour and etc... --- pkgadd | 115 ++++++++++++++----------------------------- pkgbuild | 128 ++++++++++++++++-------------------------------- pkgdel | 98 ++++++++++++------------------------ pkgdeplist | 24 ++------- revdep | 7 +-- scratch | 14 +++--- scratchpkg.conf | 25 ++-------- 7 files changed, 127 insertions(+), 284 deletions(-) diff --git a/pkgadd b/pkgadd index 26779e4..4ed7952 100755 --- a/pkgadd +++ b/pkgadd @@ -18,45 +18,32 @@ # along with this program. If not, see . # -RED='\e[0;31m' -GREEN='\e[0;32m' -YELLOW='\e[0;33m' -CYAN='\e[0;36m' -CRESET='\e[0m' - trap "interrupted" SIGHUP SIGINT SIGQUIT SIGTERM +export LC_ALL=C + interrupted() { echo ret 1 } -nocolor() { - RED= - GREEN= - YELLOW= - CYAN= - CRESET= -} - msg() { - echo -e "${GREEN}==>${CRESET} $1" + echo -e "==> $1" } msg2() { - echo -e " ${CYAN}*${CRESET} $1" + echo -e " -> $1" } msgerr() { - echo -e "${RED}==> ERROR:${CRESET} $1" + echo -e "==> ERROR: $1" } msgwarn() { - echo -e "${YELLOW}==> WARNING:${CRESET} $1" + echo -e "==> WARNING: $1" } -runhooks() { - +runhooks() { if [ "$UPGRADE_PKG" ]; then opr=upgrade else @@ -71,7 +58,6 @@ runhooks() { if [ -n "$description" ] && [ -n "$operation" ] && [ -n "$target" ]; then if [ "$(echo $operation | grep -w "$opr" )" ]; then if [ "$(grep $target $INDEX_DIR/$name/.files)" ]; then - [ "$SILENT_INSTALL" ] || msg2 "$description" . $hook if [ "`type -t exechook`" = "function" ]; then exechook @@ -81,34 +67,27 @@ runhooks() { fi unset description operation target unset -f exechook - done - + done } help() { cat << EOF Usage: - $(basename $0) package.spkg.txz + $(basename $0) [ ] Options: -u, --upgrade upgrade package -r, --reinstall reinstall package -c, --ignore-conflict ignore conflict when installing package -v, --verbose print files installed - -s, --silent print install message in simple format -h, --help show this help message --no-preinstall skip preinstall script before build/install package --no-postinstall skip postinstall script after install package --no-preupgrade skip preupgrade script before upgrade package --no-postupgrade skip postupgrade script after upgrade package --no-backup skip backup when upgrading package - --no-color disable colour for output --no-hook skip executing hook --root= install to custom root directory - -Example: - $(basename $0) foobar-1.0-1.spkg.txz -uc --no-backup upgrade package foobar-1.0-1 without backup its - old configuration files and skip conflict check EOF } @@ -133,7 +112,6 @@ parse_opts() { -r | --reinstall) REINSTALL_PKG=yes ;; -c | --ignore-conflict) IGNORE_CONFLICT=yes ;; -v | --verbose) VERBOSE_INSTALL=yes ;; - -s | --silent) SILENT_INSTALL=yes ;; -h | --help) SHOWHELP=yes ;; --no-preinstall) NO_PREINSTALL=yes ;; --no-postinstall) NO_POSTINSTALL=yes ;; @@ -152,8 +130,8 @@ parse_opts() { } ret() { - # remove lock file on exit - rm -fr $LOCK_FILE $TMP_PKGADD + # remove lock and all tmp files on exit + rm -f $LOCK_FILE $TMP_PKGADD $TMP_PKGINSTALL $TMP_PKGINSTALL_BKP $TMP_PKGADD_RMLIST exit $1 } @@ -169,10 +147,7 @@ parse_opts $(extract_opt $@) INDEX_DIR="$ROOT/var/lib/scratchpkg/index" PKGADD_DIR="$ROOT/var/lib/scratchpkg" -TMP_PKGADD="$PKGADD_DIR/$(basename $0)-tmp" LOCK_FILE="$PKGADD_DIR/spkg.lock" -TMP_PKGINSTALL="$TMP_PKGADD/$(basename $0).install" -TMP_PKGINSTALL_BKP="$TMP_PKGADD/$(basename $0).bkp.install" HOOK_DIR=/etc/hooks # show help page @@ -180,13 +155,11 @@ if [ "$SHOWHELP" ] || [ -z "$PKGNAME" ]; then help ret 0 fi - -# disable color for output -if [ "$NOCOLOR" ]; then - nocolor -fi -mkdir -p $PKGADD_DIR +if [ ! -d $INDEX_DIR ]; then + msgerr "Package's database directory not exist! ($INDEX_DIR)" + ret 1 +fi # check for lock file if [ -f $LOCK_FILE ]; then @@ -201,8 +174,6 @@ else fi fi -mkdir -p $INDEX_DIR $TMP_PKGADD - if [ -n "$PKGNAME" ]; then BASEPKGNAME=$(basename $PKGNAME) fi @@ -232,14 +203,19 @@ if isinstalled $name; then fi if [ "$ALREADYINSTALLED" = "yes" ] && [ ! "$UPGRADE_PKG" ] && [ ! "$REINSTALL_PKG" ]; then - msg "Package '$name' already installed. ($iversion-$irelease)" + echo "Package '$name' already installed. ($iversion-$irelease)" ret 0 fi echo -ne "Loading $BASEPKGNAME...\033[0K\r" +TMP_PKGADD="$(mktemp)" || exit 1 +TMP_PKGINSTALL="$(mktemp)" || exit 1 +TMP_PKGINSTALL_BKP="$(mktemp)" || exit 1 +TMP_PKGADD_RMLIST="$(mktemp)" || exit 1 + # check integrity of package -tar -tf $PKGNAME > $TMP_PKGADD/files 2>/dev/null +tar -tf $PKGNAME > $TMP_PKGADD 2>/dev/null if [ $? != 0 ]; then msgerr "Package '$1' is corrupted!" ret 1 @@ -254,21 +230,20 @@ if [ "$UPGRADE_PKG" ] || [ "$REINSTALL_PKG" ]; then fi if [ "$UPGRADE_PKG" ]; then if [ "$version-$release" = "$iversion-$irelease" ]; then - msg "Package '$name' is up-to-date. ($iversion-$irelease)" + echo "Package '$name' is up-to-date. ($iversion-$irelease)" ret 0 fi fi fi ### INSTALL PACKAGE INTO SYSTEM ### -opr=Installing; oprdone=installed -[ "$UPGRADE_PKG" ] && { opr=Upgrading; oprdone=upgraded; } -[ "$REINSTALL_PKG" ] && { opr=Reinstalling; oprdone=reinstalled; } -[ "$SILENT_INSTALL" ] || msg "$opr '$name-$version-$release'..." +opr=Installing +[ "$UPGRADE_PKG" ] && opr=Upgrading +[ "$REINSTALL_PKG" ] && opr=Reinstalling +echo "$opr '$name-$version-$release'..." #ignore conflict if [ ! "$IGNORE_CONFLICT" ]; then - [ "$SILENT_INSTALL" ] || msg2 "Checking file conflict..." while IFS=' ' read -r line; do if [ "$line" = "${line%.*}.spkgnew" ]; then line=${line%.*} @@ -282,19 +257,18 @@ if [ ! "$IGNORE_CONFLICT" ]; then fileconflict+=(${line}) fi fi - done < <(cat $TMP_PKGADD/files | grep -Ev '(.pkginfo|.pkginstall|.pkgreadme)' | grep -v '/$') + done < <(cat $TMP_PKGADD | grep -Ev '(.pkginfo|.pkginstall|.pkgreadme)' | grep -v '/$') if [ "${#fileconflict[@]}" -gt 0 ]; then - [ "$SILENT_INSTALL" ] && echo msgerr "File conflict found:" for fc in ${fileconflict[@]}; do - msg2 "$fc" + echo "$fc" done ret 1 fi fi -if [ $(grep -x .pkginstall $TMP_PKGADD/files) ]; then +if [ $(grep -x .pkginstall $TMP_PKGADD) ]; then source <(tar -xf "$PKGNAME" .pkginstall -O) fi @@ -302,7 +276,6 @@ fi ( cd $ROOT/ if [ ! "$NO_PREINSTALL" ] && [ ! "$UPGRADE_PKG" ]; then if [ "`type -t pre_install`" = "function" ]; then - [ "$SILENT_INSTALL" ] || msg2 "Running preinstall script..." pre_install "$version" &>/dev/null fi fi @@ -312,23 +285,15 @@ fi ( cd $ROOT/ if [ "$UPGRADE_PKG" ] && [ ! "$NO_PREUPGRADE" ]; then if [ "`type -t pre_upgrade`" = "function" ]; then - [ "$SILENT_INSTALL" ] || msg2 "Running preupgrade script..." pre_upgrade "$version" "$iversion" &>/dev/null fi fi ) -#installing package into system -total=$(cat $TMP_PKGADD/files | grep -Ev '(.pkginfo|.pkginstall|.pkgreadme)' | wc -l) -count=0 - -[ "$SILENT_INSTALL" ] || msg2 "Extracting package..." installcmd="tar --keep-directory-symlink -p -x -v -f $PKGNAME -C ${ROOT:-/} --exclude=.pkginfo --exclude=.pkginstall --exclude=.pkgreadme" rm -f $TMP_PKGINSTALL $TMP_PKGINSTALL_BKP $installcmd | while IFS=' ' read line; do - count=$(( $count + 1 )) - [ "$SILENT_INSTALL" ] && echo -ne "$opr $name-$version-$release [ $(( 100*$count/$total ))% ]\r" if [ "$line" = "${line%.*}.spkgnew" ]; then echo "$line" >> $TMP_PKGINSTALL_BKP line=${line%.*} @@ -340,17 +305,17 @@ $installcmd | while IFS=' ' read line; do mv "$ROOT/$line".spkgnew "$ROOT/$line" fi fi + [ "$VERBOSE_INSTALL" = yes ] && echo ">>> $line" echo "$line" >> $TMP_PKGINSTALL done # remove old files from old package that not exist in new package if [ "$UPGRADE_PKG" ] || [ "$REINSTALL_PKG" ]; then - [ "$SILENT_INSTALL" ] || msg2 "Removing old files..." - grep -Fxv -f $TMP_PKGINSTALL $INDEX_DIR/$name/.files > $TMP_PKGADD/$name.rmlist - grep -v '/$' $TMP_PKGADD/$name.rmlist | while IFS=' ' read line; do + grep -Fxv -f $TMP_PKGINSTALL $INDEX_DIR/$name/.files > $TMP_PKGADD_RMLIST + grep -v '/$' $TMP_PKGADD_RMLIST | while IFS=' ' read line; do rm "$ROOT/$line" &>/dev/null done - grep '/$' $TMP_PKGADD/$name.rmlist | tac | while IFS=' ' read line; do + grep '/$' $TMP_PKGADD_RMLIST | tac | while IFS=' ' read line; do if [ ! "$(grep -R --exclude-dir="$name" -w "$line" "$INDEX_DIR")" ]; then rmdir "$ROOT/$line" &>/dev/null fi @@ -363,14 +328,13 @@ mkdir $INDEX_DIR/$name echo "name = $name" > $INDEX_DIR/$name/.pkginfo echo "version = $version" >> $INDEX_DIR/$name/.pkginfo echo "release = $release" >> $INDEX_DIR/$name/.pkginfo -mv $TMP_PKGINSTALL $INDEX_DIR/$name/.files -[ -f $TMP_PKGINSTALL_BKP ] && mv $TMP_PKGINSTALL_BKP $INDEX_DIR/$name/.bkpfiles +install -m644 $TMP_PKGINSTALL $INDEX_DIR/$name/.files +[ -f $TMP_PKGINSTALL_BKP ] && install -m644 $TMP_PKGINSTALL_BKP $INDEX_DIR/$name/.bkpfiles tar -x -f $PKGNAME -C $INDEX_DIR/$name .pkginstall .pkgreadme >/dev/null 2>&1 ( cd $ROOT/ if [ ! "$NO_POSTINSTALL" ] && [ ! "$UPGRADE_PKG" ]; then if [ "`type -t post_install`" = "function" ]; then - [ "$SILENT_INSTALL" ] || msg2 "Running postinstall script..." post_install "$version" &>/dev/null fi fi @@ -379,7 +343,6 @@ tar -x -f $PKGNAME -C $INDEX_DIR/$name .pkginstall .pkgreadme >/dev/null 2>&1 ( cd $ROOT/ if [ "$UPGRADE_PKG" ] && [ ! "$NO_POSTUPGRADE" ]; then if [ "`type -t post_upgrade`" = "function" ]; then - [ "$SILENT_INSTALL" ] || msg2 "Running postupgrade script..." post_upgrade "$version" "$iversion" &>/dev/null fi fi @@ -390,12 +353,6 @@ if [ "$ROOT" = "" ]; then [ $(type -p sysusers) ] && sysusers fi -if [ "$SILENT_INSTALL" ]; then - echo -else - msg "Package '$name-$version-$release' $oprdone." -fi - # running ldconfig if [ -x /sbin/ldconfig ]; then /sbin/ldconfig -r $ROOT/ diff --git a/pkgbuild b/pkgbuild index 177088c..7f87398 100755 --- a/pkgbuild +++ b/pkgbuild @@ -18,26 +18,20 @@ # along with this program. If not, see . # -RED='\e[0;31m' -GREEN='\e[0;32m' -YELLOW='\e[0;33m' -CYAN='\e[0;36m' -CRESET='\e[0m' - msg() { - echo -e "${GREEN}==>${CRESET} $1" + echo -e "==> $1" } msg2() { - echo -e " ${CYAN}*${CRESET} $1" + echo -e " -> $1" } msgerr() { - echo -e "${RED}==> ERROR:${CRESET} $1" + echo -e "==> ERROR: $1" } msgwarn() { - echo -e "${YELLOW}==> WARNING:${CRESET} $1" + echo -e "==> WARNING: $1" } updatemdsum() { @@ -127,7 +121,10 @@ download_src() { FILENAME=$(basename $FILE) SRCURL=$FILE fi - WGETCMD="wget -c --passive-ftp --no-directories --tries=3 --waitretry=3 --output-document=$SOURCE_DIR/$FILENAME.partial" + case $DOWNLOAD_PROG in + curl) DLCMD="curl -C - --fail --ftp-pasv --retry 3 --retry-delay 3 -o $SOURCE_DIR/$FILENAME.partial $CURL_OPTS" ;; + wget) DLCMD="wget -c --passive-ftp --no-directories --tries=3 --waitretry=3 --output-document=$SOURCE_DIR/$FILENAME.partial $WGET_OPTS" ;; + esac if [ "$FILENAME" != "$FILE" ]; then if [ -f "$SOURCE_DIR/$FILENAME" ] && [ -z "$REDOWNLOAD_SOURCE" ]; then msg "Source '$FILENAME' found." @@ -138,7 +135,7 @@ download_src() { else msg "Downloading '$SRCURL'." fi - $WGETCMD $SRCURL + $DLCMD $SRCURL if [ $? = 0 ]; then [ "$REDOWNLOAD_SOURCE" ] && rm -f "$SOURCE_DIR/$FILENAME" mv $SOURCE_DIR/$FILENAME.partial $SOURCE_DIR/$FILENAME @@ -218,7 +215,7 @@ prepare_src() { runprebuildscript() { if [ "`type -t pre_build`" = "function" ]; then - pre_build && PREBUILD_STATUS=OK || PREBUILD_STATUS=KO + pre_build fi } @@ -255,7 +252,6 @@ run_build() { purgefiles() { local OPTIONS [ "${#PURGE_FILES[@]}" -gt 0 ] || return 0 - msg2 "Purging unwanted files..." for OPTIONS in ${PURGE_FILES[@]}; do if [ -e $OPTIONS ]; then rm -fr $OPTIONS @@ -264,26 +260,14 @@ purgefiles() { } removeemptydirs() { - msg2 "Removing empty directories..." find . -type d -empty -delete } -removedocs() { - local OPTIONS - [ "${#DOC_DIRS[@]}" -gt 0 ] || return 0 - msg2 "Removing docs..." - for OPTIONS in ${DOC_DIRS[@]}; do - [ -d $OPTIONS ] && rm -fr $OPTIONS - done -} - removelibtool() { - msg2 "Removing libtool files..." find . ! -type d -name "*.la" -delete } -strip_files() { - msg2 "Stripping binaries & libraries..." +strip_files() { find . -type f 2>/dev/null | while read -r binary ; do case "$(file -bi "$binary")" in *application/x-sharedlib*) # Libraries (.so) @@ -307,30 +291,23 @@ strip_files() { done } -compressinfomanpages() { - msg2 "Compressing man & info pages..." - for mandir in ${MAN_DIRS[@]}; do - if [ -d $mandir ]; then - (cd $mandir - for file in $(find . -type f); do - if [ "$file" = "${file%%.gz}" ]; then - gzip -9 -f "$file" - fi - done - for i in $(find . -type l) ; do - FILE="${i%%.gz}.gz" - TARGET="$(readlink $i)" - TARGET="${TARGET##*/}" - TARGET="${TARGET%%.gz}.gz" - DIR=$(dirname "$FILE") - rm -f $i - if [ -e "$DIR/$TARGET" ]; then - ln -sf $TARGET $FILE - fi - done - ) +compressinfomanpages() { + find . -type f -path "*/man/man*/*" | while read file; do + if [ "$file" = "${file%%.gz}" ]; then + gzip -9 -f "$file" fi - done + done + find . -type l -path "*/man/man*/*" | while read file; do + FILE="${file%%.gz}.gz" + TARGET="$(readlink $file)" + TARGET="${TARGET##*/}" + TARGET="${TARGET%%.gz}.gz" + DIR=$(dirname "$FILE") + rm -f $file + if [ -e "$DIR/$TARGET" ]; then + ln -sf $TARGET $FILE + fi + done if [ -d usr/share/info ]; then (cd usr/share/info for file in $(find . -type f); do @@ -357,14 +334,14 @@ backupconf() { packaging() { local FILE - [ -f install ] && cp install $PKG/.pkginstall - [ -f readme ] && cp readme $PKG/.pkgreadme + [ -f install ] && install -m644 install $PKG/.pkginstall + [ -f readme ] && install -m644 readme $PKG/.pkgreadme pushd $PKG >/dev/null - [ "$PURGE_FILE" = 1 ] && purgefiles + rm -f usr/{,share/}info/dir + [ "$KEEP_EMPTYDIR" = 0 ] && removeemptydirs - [ "$KEEP_DOC" = 0 ] && removedocs [ "$KEEP_LIBTOOL" = 0 ] && removelibtool [ "$STRIP_BINARY" = 1 ] && strip_files [ "$ZIP_MAN" = 1 ] && compressinfomanpages @@ -373,7 +350,6 @@ packaging() { backupconf fi - msg2 "Compressing package..." for FILE in .pkginstall .pkgreadme; do if [ -f $FILE ]; then addtotar+=($FILE) @@ -384,24 +360,15 @@ packaging() { tar -c -J -p -f $PACKAGE_DIR/$PKGNAME * "${addtotar[@]}" if [ $? != 0 ]; then - msgerr "Packaging failed." - if [ -f $PACKAGE_DIR/$PKGNAME ]; then - rm $PACKAGE_DIR/$PKGNAME - fi + rm -f $PACKAGE_DIR/$PKGNAME + msgerr "Packaging '$PKGNAME' failed." abort 1 fi + tar -tvf $PACKAGE_DIR/$PKGNAME pkgsize="$(ls -lh $PACKAGE_DIR/$PKGNAME | awk '{print $5}')" - if [ "$VERBOSE" ]; then - tar -t -v -f $PACKAGE_DIR/$PKGNAME - fi msg "Successfully created package '$PKGNAME'. (${pkgsize})" - case $PREBUILD_STATUS in - OK) msg2 "prebuild : ${GREEN}OK${CRESET}" ;; - KO) msg2 "prebuild : ${RED}FAIL${CRESET}" ;; - esac - popd >/dev/null } @@ -445,10 +412,6 @@ set_options() { !emptydirs) KEEP_EMPTYDIR=0;; strip) STRIP_BINARY=1 ;; !strip) STRIP_BINARY=0 ;; - docs) KEEP_DOC=1 ;; - !docs) KEEP_DOC=0 ;; - purge) PURGE_FILE=1 ;; - !purge) PURGE_FILE=0 ;; zipman) ZIP_MAN=1 ;; !zipman) ZIP_MAN=0 ;; buildflags) BUILD_FLAGS=1 ;; @@ -504,13 +467,6 @@ Options: --no-color disable color --no-backup skip backup configuration file when upgrading package --redownload re-download source file - -Example: - $(basename $0) -irw this will force rebuild, install package and keep working directory - -Note: - * use $(basename $0) without any options will only download source and build package by using other default options - * $(basename $0) need to run inside port directory EOF } @@ -542,8 +498,7 @@ extract_opt() { echo ${BOPTS[@]} } -parse_opts() { - +parse_opts() { while [ "$1" ]; do case $1 in -i | --install) INSTALL_PKG=yes ;; @@ -573,8 +528,7 @@ parse_opts() { *) msg "Invalid $(basename $0) option! ($1)"; exit 1 ;; esac shift - done - + done } main() { @@ -658,7 +612,7 @@ main() { # build package if [ -f "$PACKAGE_DIR/$PKGNAME" ] && [ ! "$FORCE_REBUILD" ]; then if [ ! "$INSTALL_PKG" ] && [ ! "$REINSTALL_PKG" ] && [ ! "$UPGRADE_PKG" ]; then - msg "Package '$PKGNAME' is up-to-date." + echo "Package '$PKGNAME' is up-to-date." abort 0 fi else @@ -680,16 +634,16 @@ main() { trap "interrupted" SIGHUP SIGINT SIGQUIT SIGTERM +export LC_ALL=C + PKGBUILD_CONF="/etc/scratchpkg.conf" PKGBUILD_BSCRIPT="spkgbuild" SOURCE_DIR="/var/cache/scratchpkg/sources" PACKAGE_DIR="/var/cache/scratchpkg/packages" WORK_DIR="/tmp" +DOWNLOAD_PROG="wget" -OPTIONS=(!libtool emptydirs strip docs purge zipman buildflags makeflags) -DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc}) -MAN_DIRS=({usr{,/local}{,/share},opt/*}/man) -PURGE_FILES=(usr/{,share/}info/dir) +OPTIONS=(!libtool emptydirs strip zipman buildflags makeflags) main "$@" diff --git a/pkgdel b/pkgdel index b11eda8..113abb0 100755 --- a/pkgdel +++ b/pkgdel @@ -18,52 +18,38 @@ # along with this program. If not, see . # -RED='\e[0;31m' -GREEN='\e[0;32m' -YELLOW='\e[0;33m' -CYAN='\e[0;36m' -CRESET='\e[0m' - trap "interrupted" SIGHUP SIGINT SIGQUIT SIGTERM +export LC_ALL=C + interrupted() { echo ret 1 } -nocolor() { - RED= - GREEN= - YELLOW= - CYAN= - CRESET= -} - msg() { - echo -e "${GREEN}==>${CRESET} $1" + echo -e "==> $1" } msg2() { - echo -e " ${CYAN}*${CRESET} $1" + echo -e " -> $1" } msgerr() { - echo -e "${RED}==> ERROR:${CRESET} $1" + echo -e "==> ERROR: $1" } msgwarn() { - echo -e "${YELLOW}==> WARNING:${CRESET} $1" + echo -e "==> WARNING: $1" } -runremovehooks() { - +runremovehooks() { if [ "${#runthishook[@]}" -gt 0 ]; then for hook in ${runthishook[@]}; do description=$(cat "$hook" | grep ^"# description" | sed 's/\://' | cut -d ' ' -f 3-) operation=$(cat "$hook" | grep ^"# operation" | sed 's/\://' | cut -d ' ' -f 3-) target=$(cat "$hook" | grep ^"# target" | sed 's/\://' | cut -d ' ' -f 3-) if [ -n "$description" ] && [ -n "$operation" ] && [ -n "$target" ]; then - [ "$SILENT_REMOVE" ] || msg2 "$description" . $hook if [ "`type -t exechook`" = "function" ]; then exechook @@ -72,12 +58,10 @@ runremovehooks() { unset description operation target unset -f exechook done - fi - + fi } -runpreremovehooks() { - +runpreremovehooks() { for hook in $HOOK_DIR/*.hook; do [ -f $hook ] || continue operation=$(cat "$hook" | grep ^"# operation" | sed 's/\://' | cut -d ' ' -f 3-) @@ -88,8 +72,7 @@ runpreremovehooks() { fi fi unset operation target - done - + done } help() { @@ -98,18 +81,11 @@ Usage: $(basename $0) [ ] Options: - -v, --verbose print removed files -h, --help show this help message - -s, --silent print remove message in simple format --no-preremove don't run pre-remove script --no-postremove don't run post-remove script - --no-color disable colour for output --no-hook skip executing hook --root= remove package from custom root directory - -Example: - $(basename $0) firefox -dv --no-preremove remove package firefox, skipping dependency check, - print deleted files and skipp pre-remove script EOF } @@ -124,28 +100,24 @@ extract_opt() { echo ${OPTS[@]} } -parse_opts() { - +parse_opts() { if [ -z "$1" ]; then SHOWHELP=yes else while [ "$1" ]; do case $1 in - -v | --verbose) VERBOSE_REMOVE=yes ;; -h | --help) SHOWHELP=yes ;; - -s | --silent) SILENT_REMOVE=yes ;; + -v | --verbose) VERBOSE_REMOVE=yes ;; --no-preremove) NO_PREREMOVE=yes ;; --no-postremove) NO_POSTREMOVE=yes ;; - --no-color) NOCOLOR=yes ;; - --no-hook) NOHOOK=yes ;; + --no-hook) NOHOOK=yes ;; --root=*) ROOT="${1#*=}" ;; -*) msg "Invalid option: ($1)"; exit 1 ;; *) RMNAME=$1 ;; esac shift done - fi - + fi } ret() { @@ -174,11 +146,6 @@ if [ "$SHOWHELP" ] || [ -z "$RMNAME" ]; then help ret 0 fi - -# disable color for output -if [ "$NOCOLOR" ]; then - nocolor -fi # check for lock file if [ -f $LOCK_FILE ]; then @@ -213,11 +180,7 @@ if [ -z $name ] && [ -z $version ] && [ -z $release ]; then ret 1 fi -if [ "$SILENT_REMOVE" ]; then - echo -ne "Removing $name-$version-$release " -else - msg "Removing '$name-$version-$release'..." -fi +echo "Removing '$name-$version-$release'..." # source .install script if [ "$ROOT" = "" ]; then @@ -228,36 +191,41 @@ fi if [ ! "$NO_PREREMOVE" ]; then if [ "`type -t pre_remove`" = "function" ]; then - [ "$SILENT_REMOVE" ] || msg2 "Running preremove script..." pre_remove "$version" &>/dev/null fi fi if [ "$ROOT" = "" ] && [ "$NOHOOK" != "yes" ]; then - runpreremovehooks $name + runpreremovehooks $name &>/dev/null fi if [ -f "$INDEX_DIR/$name/.bkpfiles" ]; then - [ "$SILENT_REMOVE" ] || msg2 "Removing backup files..." while IFS=' ' read -r line; do - [ -e "$ROOT/$line" ] && rm "$ROOT/$line" + if [ -e "$ROOT/$line" ]; then + [ "$VERBOSE_REMOVE" = yes ] && echo "<<< $line" + rm "$ROOT/$line" + fi done < <(tac $INDEX_DIR/$name/.bkpfiles) fi -[ "$SILENT_REMOVE" ] || msg2 "Removing files & dirs..." while IFS=' ' read -r line; do - rm "$ROOT/$line" &>/dev/null + if [ -e $ROOT/$line ]; then + [ "$VERBOSE_REMOVE" = yes ] && echo "<<< $line" + rm "$ROOT/$line" + fi done < <(tac $INDEX_DIR/$name/.files | grep -v '/$') while IFS=' ' read -r line; do if [ ! "$(grep -R --exclude-dir="$name" -w "$line" "$INDEX_DIR")" ]; then - rmdir "$ROOT/$line" &>/dev/null + if [ -d $ROOT/$line ]; then + [ "$VERBOSE_REMOVE" = yes ] && echo "<<< $line" + rmdir "$ROOT/$line" + fi fi done < <(tac $INDEX_DIR/$name/.files | grep '/$') if [ ! "$NO_POSTREMOVE" ]; then if [ "`type -t post_remove`" = "function" ]; then - [ "$SILENT_REMOVE" ] || msg2 "Running postremove script..." post_remove "$version" &>/dev/null fi fi @@ -268,15 +236,9 @@ if [ "$ROOT" = "" ] && [ "$NOHOOK" != "yes" ]; then runremovehooks fi -if [ "$SILENT_REMOVE" ]; then - echo "[ done ]" -else - msg "Package '$name-$version-$release' removed." -fi - # running ldconfig -if [ "$ROOT" = "" ] && [ -x /sbin/ldconfig ]; then - /sbin/ldconfig +if [ -x /sbin/ldconfig ]; then + /sbin/ldconfig -r $ROOT/ fi ret 0 diff --git a/pkgdeplist b/pkgdeplist index 498fb07..523712f 100755 --- a/pkgdeplist +++ b/pkgdeplist @@ -18,29 +18,23 @@ # along with this program. If not, see . # -RED='\e[0;31m' -GREEN='\e[0;32m' -YELLOW='\e[0;33m' -CYAN='\e[0;36m' -CRESET='\e[0m' - INDEX_DIR="/var/lib/scratchpkg/index" REPO_FILE="/etc/scratchpkg.repo" msgerr() { - echo -e "${RED}==> ERROR:${CRESET} $1" + echo -e "==> ERROR: $1" } msginst() { - echo -e "[${GREEN}i${CRESET}] $1" + echo -e "[i] $1" } msgmiss() { - echo -e "[${YELLOW}m${CRESET}] $1" + echo -e "[m] $1" } msgnoinst() { - echo -e "[${RED}-${CRESET}] $1" + echo -e "[-] $1" } checkdep() { @@ -48,7 +42,6 @@ checkdep() { PORT_PATH=$(getportpath "$1") if [ "$PORT_PATH" ]; then depends=$(grep "^# depends[[:blank:]]*:" $PORT_PATH/spkgbuild | sed 's/^# depends[[:blank:]]*:[[:blank:]]*//' | tr ' ' '\n' | awk '!a[$0]++') - #source $PORT_PATH/spkgbuild for dep in ${depends[@]}; do echo $dep done @@ -128,6 +121,7 @@ while [ "$1" ]; do -m|--missing) MISSING=1 ;; -l|--loop) IGNORE_LOOP=1 ;; -h|--help) USAGE=1 ;; + -*) msgerr "Invalid option. ($1)"; exit 1 ;; *) PKG+=($1) ;; esac shift @@ -162,14 +156,6 @@ if [ ! "$INSTALLED" ] && [ ! "$NOT_INSTALLED" ] && [ ! "$MISSING" ]; then MISSING=1 fi -# check for ports existence -#for pkg in ${PKG[@]}; do - #if [ ! $(getportpath $pkg) ]; then - #msgerr "Package '$pkg' not found." - #exit 1 - #fi -#done - # calculate dependencies for pkg in ${PKG[@]}; do deplist $pkg diff --git a/revdep b/revdep index 81f850a..6082cb8 100755 --- a/revdep +++ b/revdep @@ -105,7 +105,7 @@ rebuild() { read fi for p in $order; do - scratch build -f $p && scratch install -r $p || exit 1 + scratch build -f $p && scratch install -r $p || { cleanup; exit 1; } done } @@ -154,8 +154,7 @@ done TARGET_SEARCH_DIRS="/bin /usr/bin /sbin /usr/sbin /lib /usr/lib /lib64 /usr/libexec $EXTRA_SEARCH_DIRS" INDEX_DIR="/var/lib/scratchpkg/index" -FILE_LIST=/tmp/$(basename $0)-$$ -touch $FILE_LIST || { echo "Can't create temporary file .Aborting..."; exit 1; } +FILE_LIST=$(mktemp) || { echo "Can't create temporary file .Aborting..."; exit 1; } echo "SEARCH DIRS:" for d in $TARGET_SEARCH_DIRS; do @@ -234,4 +233,6 @@ else echo "All packages is doing fine." fi +cleanup + exit 0 diff --git a/scratch b/scratch index ce48d98..cb43b3e 100755 --- a/scratch +++ b/scratch @@ -579,7 +579,7 @@ installpkg() { echo "Package '$ii' not installed." else pushd $(getportpath $ii) - pkgbuild -s --no-hook ${OPTS[@]} + pkgbuild --no-hook ${OPTS[@]} if [ $? != 0 ]; then error=1 break @@ -650,7 +650,7 @@ installpkg() { pushd $portpathh . $BUILD_SCRIPT settermtitle "[ $count/$total ] installing $name-$version-$release" - pkgbuild -is --no-hook ${OPTS[@]} + pkgbuild -i --no-hook ${OPTS[@]} if [ $? != 0 ]; then error=1 break @@ -738,7 +738,7 @@ removepkg() { count=$(( $count + 1 )) srunpreremovehooks $pkg settermtitle "[ $count/$pkgcount ] Removing $pkg" - pkgdel -s --no-hook $pkg ${OPTS[@]} || return 1 + pkgdel --no-hook $pkg ${OPTS[@]} || return 1 done settermtitle "Triggering remove hook" srunremovehooks @@ -801,14 +801,14 @@ sysup() { . $BUILD_SCRIPT if ! isinstalled $inst; then settermtitle "[ $count/$total ] Installing $name-$version-$release" - pkgbuild -is --no-hook ${OPTS[@]} + pkgbuild -i --no-hook ${OPTS[@]} if [ $? != 0 ]; then error=1 break fi else settermtitle "[ $count/$total ] Upgrading $name-$version-$release" - pkgbuild -us --no-hook ${OPTS[@]} + pkgbuild -u --no-hook ${OPTS[@]} if [ $? != 0 ]; then error=1 break @@ -894,7 +894,7 @@ upgradepkg() { pushd $(getportpath $newpkg) . $BUILD_SCRIPT settermtitle "[ $count/$total ] Installing $name-$version-$release" - pkgbuild -is --no-hook ${OPTS[@]} + pkgbuild -i --no-hook ${OPTS[@]} if [ $? != 0 ]; then error=1 break @@ -907,7 +907,7 @@ upgradepkg() { pushd $(getportpath $pkg) . $BUILD_SCRIPT settermtitle "[ $count/$total ] Upgrading $name-$version-$release" - pkgbuild -us --no-hook ${OPTS[@]} + pkgbuild -u --no-hook ${OPTS[@]} if [ $? != 0 ]; then error=1 break diff --git a/scratchpkg.conf b/scratchpkg.conf index 38bd7f2..7e08aae 100644 --- a/scratchpkg.conf +++ b/scratchpkg.conf @@ -2,23 +2,17 @@ # Configuration file for scratchpkg # -## -## COMPILE FLAGS -## CFLAGS="-O2 -march=x86-64 -pipe" CXXFLAGS="${CFLAGS}" MAKEFLAGS="-j$(nproc)" -## -## PATH -## -# -- Default path for some configuration -# -- Uncomment and change it if you want change these path -# # SOURCE_DIR="/var/cache/scratchpkg/sources" # PACKAGE_DIR="/var/cache/scratchpkg/packages" # WORK_DIR="/tmp" # HOOK_DIR="/etc/hooks" +# DOWNLOAD_PROG="wget" +# WGET_OPTS="" +# CURL_OPTS="" ## ## GLOBAL PACKAGE OPTIONS @@ -26,8 +20,6 @@ MAKEFLAGS="-j$(nproc)" # -- libtool: Keep libtool file (*.la) in packages # -- emptydirs: Keep empty directories in packages # -- strip: Strip symbols from binaries/libraries -# -- docs: Keep docs directories specified by DOC_DIRS -# -- purge: Remove files specified in PURGE_FILES # -- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip # -- buildflags: Enable buildflags (CFLAGS and CXXFLAGS) # -- makeflags: Enable makeflags (MAKEFLAGS) @@ -35,13 +27,4 @@ MAKEFLAGS="-j$(nproc)" # -- These are default values for the options=() settings # -- add '!' in front of this option to disable it # -# OPTIONS=(!libtool emptydirs strip docs purge zipman buildflags makeflags) - -# -- Files to be removed from all packages (if purge is specified) -# PURGE_FILES=(usr/{,share/}info/dir) - -# -- Doc directories to remove (if !docs is specified) -# DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc}) - -# -- Manual (man and info) directories to compress (if zipman is specified) -# MAN_DIRS=({usr{,/local}{,/share},opt/*}/man) +# OPTIONS=(!libtool emptydirs strip zipman buildflags makeflags)