From f0551877c779b30005759584a14fc366263d8525 Mon Sep 17 00:00:00 2001 From: emmett1 Date: Sat, 3 Nov 2018 22:51:28 +0800 Subject: [PATCH] updated --- pkgbuild | 4 +-- revdep | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- scratch | 8 ++--- 3 files changed, 104 insertions(+), 8 deletions(-) diff --git a/pkgbuild b/pkgbuild index 304e27a..9446360 100755 --- a/pkgbuild +++ b/pkgbuild @@ -233,7 +233,7 @@ run_build() { [ "$MAKE_FLAGS" = 1 ] && export MAKEFLAGS || unset MAKEFLAGS [ "$BUILD_FLAGS" = 1 ] && export CFLAGS CXXFLAGS || unset CFLAGS CXXFLAGS - [ -f $name.install ] && . $name.install + [ -f install ] && . install pushd $SRC >/dev/null @@ -357,7 +357,7 @@ backupconf() { packaging() { local FILE - [ -f $name.install ] && cp $name.install $PKG/.pkginstall + [ -f install ] && cp install $PKG/.pkginstall [ -f readme ] && cp readme $PKG/.pkgreadme pushd $PKG >/dev/null diff --git a/revdep b/revdep index f9884cb..12c8c1c 100755 --- a/revdep +++ b/revdep @@ -18,6 +18,100 @@ # along with this program. If not, see . # +interrupted() { + cleanup + echo + exit 1 +} + +cleanup() { + rm -f $FILE_LIST +} + +usage() { + cat << EOF +Usage: + $(basename $0) [option] [arg] + +Options: + -r, --rebuild rebuild & reinstall broken package + -e, --exclude exclude package when rebuild (use with -r|--rebuild) + -h, --help print this help message + +EOF +} + +parse_opt() { + while [ $1 ]; do + case $1 in + -r|--rebuild) REBUILD=1 ;; + -e|--exclude) while [ "$2" ]; do + case $2 in + -*) break ;; + *) [ -z "$expkg" ] && expkg="$2" || expkg="$expkg $2" + esac + shift + done ;; + -h|--help) usage; exit 0 ;; + *) echo "Invalid option ($1)"; exit 1 ;; + esac + shift + done +} + +rebuild() { + if [[ "$expkg" ]]; then + for broken in $ALLPKG; do + for exclude in $expkg; do + if [ $broken = $exclude ]; then + remove=1 + fi + done + if [ "$remove" != 1 ]; then + if [ -z "$needrebuild" ]; then + needrebuild="$broken" + else + needrebuild="$needrebuild $broken" + fi + fi + unset remove + done + else + needrebuild=$ALLPKG + fi + + for allpkg in $(pkgdeplist $needrebuild | cut -d ' ' -f2); do + for pkg in $needrebuild; do + if [ $pkg = $allpkg ]; then + if [ -z "$order" ]; then + order="$allpkg" + else + order="$order $allpkg" + fi + break + fi + done + done + echo + echo "Package will be rebuild & reinstall by this order:" + echo $order + echo + echo "Press ENTER to continue" + read + for p in $order; do + scratch build -f $p && scratch install -r $p || exit 1 + done +} + +trap "interrupted" SIGHUP SIGINT SIGQUIT SIGTERM + +parse_opt $@ + +if [ "$UID" != 0 ] && [ "$REBUILD" = 1 ]; then + echo "$(basename $0) need to run as root to rebuild & reinstall package" + exit 1 +fi + while read line; do if [[ $(echo ${line::1}) = "/" ]]; then EXTRA_SEARCH_DIRS+="$line " @@ -55,6 +149,7 @@ SEARCH_DIRS="/bin /usr/bin /sbin /usr/sbin /lib /usr/lib /lib64 /usr/libexec $EX INDEX_DIR="/var/lib/scratchpkg/index" FILE_LIST=/tmp/$(basename $0)-$$ +touch $FILE_LIST || { echo "Can't create temporary file .Aborting..."; exit 1; } echo "SEARCH DIRS:" for d in $SEARCH_DIRS; do @@ -122,10 +217,11 @@ if [ "$ALLPKG" ]; then for rebuild in $ALLPKG; do echo -e "$rebuild" done + if [ "$REBUILD" = 1 ]; then + rebuild + fi else echo "All packages is doing fine." fi - -rm -f $FILE_LIST exit 0 diff --git a/scratch b/scratch index 4bf9e5a..37d6615 100755 --- a/scratch +++ b/scratch @@ -320,7 +320,7 @@ showdependent() { for port in ${PORT_REPO[@]}; do if [ -d $port ]; then - for all in $(ls $port/*/$BUILD_SCRIPT | rev | cut -d '/' -f2 | rev 2>/dev/null); do + for all in $(ls $port/*/$BUILD_SCRIPT 2>/dev/null | rev | cut -d '/' -f2 | rev); do if [ -f $port/$all/$BUILD_SCRIPT ]; then depend=$(cat $port/$all/$BUILD_SCRIPT | grep ^'# depends' | tr -d ':' | cut -d " " -f3-) for dep in ${depend[@]}; do @@ -455,7 +455,7 @@ buildpkg() { while [ "$1" ]; do if [[ "$1" =~ ^-(f|v|w|m|o|x)$ ]]; then OPTS+=($1) - elif [[ "$1" =~ ^--(no-prebuild|--force-rebuild|skip-mdsum|download|extract|keep-work)$ ]]; then + elif [[ "$1" =~ ^--(no-prebuild|force-rebuild|skip-mdsum|download|extract|keep-work)$ ]]; then OPTS+=($1) elif [[ "$1" =~ ^--(pkgdir|srcdir)= ]]; then OPTS+=($1) @@ -469,7 +469,7 @@ buildpkg() { done pushd $(getportpath $PKGNAME) if [ $? = 0 ]; then - pkgbuild ${OPTS[@]} + pkgbuild ${OPTS[@]} || exit 1 else echo "Package '$PKGNAME' not found." exit 1 @@ -512,7 +512,7 @@ installpkg() { echo "Package '$ii' not found." else pushd $(getportpath $ii) - pkgbuild -r ${OPTS[@]} + pkgbuild -r ${OPTS[@]} || exit 1 popd fi done