diff --git a/pkgadd b/pkgadd index 4443581..0375d15 100755 --- a/pkgadd +++ b/pkgadd @@ -86,8 +86,9 @@ Options: --no-preupgrade skip preupgrade script before upgrade package --no-postupgrade skip postupgrade script after upgrade package --no-backup skip backup when upgrading package - --no-hook skip executing hook + --no-hook skip trigger hook --root= install to custom root directory + EOF } diff --git a/pkgbuild b/pkgbuild index dd9f60c..f4561a4 100755 --- a/pkgbuild +++ b/pkgbuild @@ -234,7 +234,9 @@ run_build() { pushd $SRC >/dev/null - runprebuildscript + if [ "$NO_PREBUILD" != yes ]; then + runprebuildscript + fi if [ "$LOGGING" = yes ]; then ( @@ -450,38 +452,6 @@ checkdir() { done } -help() { - cat << EOF -Usage: - $(basename $0) [ ] - -Options: - -i, --install install package into system - -u, --upgrade upgrade package - -r, --reinstall reinstall package - -c, --ignore-conflict ignore conflict when installing package - -v, --verbose verbose install process - -f, --force-rebuild rebuild package - -m, --skip-mdsum skip md5sum checking - -g, --genmdsum generate md5sum - -o, --download download only source file - -x, --extract extract only source file - -w, --keep-work keep working directory - -s, --silent print install message in simple format - -h, --help show this help message - --srcdir= override directory path for sources - --pkgdir= override directory path for compiled package - --no-prebuild skip prebuild script before build package - --no-preinstall skip preinstall script before 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-color disable color - --no-backup skip backup configuration file when upgrading package - --redownload re-download source file -EOF -} - clearworkdir() { if [ ! "$KEEP_WORK" ]; then rm -fr $WORK_DIR/$name @@ -524,26 +494,59 @@ parse_opts() { -o | --download) DOWNLOAD_ONLY=yes ;; -x | --extract) EXTRACT_ONLY=yes ;; -w | --keep-work) KEEP_WORK=yes ;; - -s | --silent) INST_OPT=$1 ;; -l | --log) LOGGING=yes ;; -h | --help) SHOWHELP=yes ;; + --no-prebuild) NO_PREBUILD=yes ;; --no-preinstall) NO_PREINSTALL=yes; OPTS+=($1) ;; --no-postinstall) OPTS+=($1) ;; --no-preupgrade) OPTS+=($1) ;; --no-postupgrade) OPTS+=($1) ;; --no-hook) OPTS+=($1) ;; - --no-color) NOCOLOR=yes; OPTS+=($1) ;; --no-backup) OPTS+=($1) ;; --redownload) REDOWNLOAD_SOURCE=yes ;; - --check-source) SOURCE_CHECK=yes ;; --srcdir=*) SOURCE_DIR="${1#*=}" ;; --pkgdir=*) PACKAGE_DIR="${1#*=}" ;; + --logdir=*) LOG_DIR="${1#*=}" ;; *) msg "Invalid $(basename $0) option! ($1)"; exit 1 ;; esac shift done } +help() { + cat << EOF +Usage: + $(basename $0) [ ] + +Options: + -i, --install install package into system + -u, --upgrade upgrade package + -r, --reinstall reinstall package + -c, --ignore-conflict ignore conflict when installing package + -v, --verbose verbose install process + -f, --force-rebuild rebuild package + -m, --skip-mdsum skip md5sum checking + -g, --genmdsum generate md5sum + -o, --download download only source file + -x, --extract extract only source file + -w, --keep-work keep working directory + -l, --log log build process + -h, --help show this help message + --srcdir= override directory path for sources + --pkgdir= override directory path for compiled package + --logdir= override directory path for build logs + --no-prebuild skip prebuild script before build package + --no-preinstall skip preinstall script before 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-hook skip trigger hook + --no-backup skip backup configuration file when upgrading package + --redownload re-download source file + +EOF +} + main() { if [ -f $PKGBUILD_CONF ]; then @@ -580,10 +583,10 @@ main() { msgerr "Option '--pkgdir=' need argument (path)" exit 1 fi - checkdir "$SOURCE_DIR" "$PACKAGE_DIR" "$WORK_DIR" + checkdir "$SOURCE_DIR" "$PACKAGE_DIR" "$WORK_DIR" "$LOG_DIR" - if [ -f $LOG_DIR/$name-$version-$release.log ] && [ ! -w $LOG_DIR/$name-$version-$release.log ]; then - msgerr "You dont have write permission for '$LOG_DIR/$name-$version-$release.log'!" + if [ "$LOGGING" = yes ] && [ -f $LOG_DIR/$name-$version-$release.log ] && [ ! -w $LOG_DIR/$name-$version-$release.log ]; then + msgerr "You dont have write permission for '$LOG_DIR/$name-$version-$release.log'." abort 1 fi diff --git a/pkgdel b/pkgdel index 272f55a..166c6e7 100755 --- a/pkgdel +++ b/pkgdel @@ -86,6 +86,7 @@ Options: --no-postremove don't run post-remove script --no-hook skip executing hook --root= remove package from custom root directory + EOF } diff --git a/scratch b/scratch index fd0ef48..dfc9c70 100755 --- a/scratch +++ b/scratch @@ -221,22 +221,17 @@ checkintegrity() { } listinstalled() { - local pkg + local pkg for pkg in $(allinstalled); do - iname=$(installed_pkg_info name $pkg) - iversion=$(installed_pkg_info version $pkg) - irelease=$(installed_pkg_info release $pkg) - echo -e "$iname ${GREEN}$iversion${CRESET}-${BLUE}$irelease${CRESET}" - unset iname iversion irelease - done + echo $pkg + done } listorphan() { local pkg dep tmpallpkg=$(mktemp) tmpalldep=$(mktemp) - for pkg in $INDEX_DIR/*/.pkginfo; do - pkg=$(basename $(dirname $pkg)) + for pkg in $(allinstalled); do echo $pkg >> $tmpallpkg dep="$dep $(grep "^# depends[[:blank:]]*:" $(getportpath $pkg)/$BUILD_SCRIPT 2>/dev/null | sed 's/^# depends[[:blank:]]*:[[:blank:]]*//' | tr ' ' '\n' | awk '!a[$0]++')" done @@ -278,8 +273,7 @@ unlockpkg() { } listlocked() { - local pkg - + local pkg for pkg in $(allinstalled); do if [ -f "$INDEX_DIR"/$pkg/.lock ]; then echo -e "$pkg" @@ -434,7 +428,6 @@ searchpkg() { } foreignpkg() { - for pkg in $(allinstalled); do if ! getportpath $pkg >/dev/null; then iname=$(installed_pkg_info name $pkg) @@ -443,12 +436,11 @@ foreignpkg() { echo -e "$iname ${GREEN}$iversion${CRESET}-${CYAN}$irelease${CRESET}" fi unset iname iversion irelease - done - + done } srunhooks() { - local hook + local hooks if [ "$mode" = "upgrade" ] || [ "$mode" = "sysup" ]; then opr=upgrade else @@ -525,11 +517,11 @@ buildpkg() { return 1 fi while [ "$1" ]; do - if [[ "$1" =~ ^-(f|v|w|m|o|x|l)$ ]]; then + if [[ "$1" =~ ^-(f|w|m|o|x|l)$ ]]; then OPTS+=($1) elif [[ "$1" =~ ^--(no-prebuild|force-rebuild|skip-mdsum|download|extract|keep-work|log)$ ]]; then OPTS+=($1) - elif [[ "$1" =~ ^--(pkgdir|srcdir)= ]]; then + elif [[ "$1" =~ ^--(pkgdir|srcdir|logdir)= ]]; then OPTS+=($1) elif [[ "$1" =~ ^-. ]]; then echo "Unrecognize option. ($1)" @@ -561,7 +553,9 @@ installpkg() { return 1 fi while [ "$1" ]; do - if [[ "$1" =~ ^-(c|v|l|-verbose|-ignore-conflict|-log)$ ]]; then + if [[ "$1" =~ ^-(c|v|-verbose|-ignore-conflict)$ ]]; then + OPTS+=($1) + elif [[ "$1" =~ ^--(no-preinstall|no-postinstall) ]]; then OPTS+=($1) elif [[ "$1" =~ ^-(r|-reinstall)$ ]]; then OPTS+=($1) @@ -587,6 +581,7 @@ installpkg() { echo "Package '$ii' not installed." else pushd $(getportpath $ii) + settermtitle "Reinstalling $ii..." pkgbuild --no-hook ${OPTS[@]} if [ $? != 0 ]; then error=1 @@ -596,7 +591,9 @@ installpkg() { popd fi done + settermtitle "Triggering install hook" srunhooks ${done_pkg[@]} + settermtitle "Reinstalling done" [ "$error" = 1 ] && return 1 || return 0 fi if [ "$NO_DEP" = 1 ]; then @@ -608,6 +605,7 @@ installpkg() { return 0 else pushd $(getportpath $ii) + settermtitle "Installing $ii..." pkgbuild -i --no-hook ${OPTS[@]} if [ $? != 0 ]; then error=1 @@ -617,7 +615,9 @@ installpkg() { popd fi done + settermtitle "Triggering install hook" srunhooks ${done_pkg[@]} + settermtitle "Installing done" [ "$error" = 1 ] && return 1 || return 0 fi for i in ${PKGNAME[@]}; do @@ -763,14 +763,27 @@ sysup() { needroot "Upgrading package" while [ "$1" ]; do - if [ "$1" = "--yes" ] || [ "$1" = "-y" ]; then - NOCONFIRM=1 - elif [ "$1" = "--no-backup" ]; then + if [[ "$1" =~ ^--(no-postupgrade|no-preupgrade|no-backup)$ ]]; then OPTS+=($1) + elif [[ "$1" =~ ^-(c|v|-verbose|-ignore-conflict)$ ]]; then + OPTS+=($1) + elif [ "$1" = "--yes" ] || [ "$1" = "-y" ]; then + NOCONFIRM=1 + elif [ "$1" = "--np-dep" ] || [ "$1" = "-d" ]; then + NODEP=1 + elif [ "$1" = "--sync" ] || [ "$1" = "-s" ]; then + SYNC=1 + elif [[ "$1" =~ ^-. ]]; then + echo "Unrecognize option. ($1)" + exit 1 fi shift done + if [ "$SYNC" = 1 ]; then + updports + fi + echo "Checking for outdated packages..." PKGOUTDATE=$(outdatepkg) @@ -778,23 +791,33 @@ sysup() { echo "All package is up to date." return 0 fi - echo "Resolving dependencies..." - DEP=$(pkgdeplist ${PKGOUTDATE[@]} -l | awk '{print $2}') - echo - + UPGPKG=0 NEWPKG=0 - for d in $DEP; do - if [ "$(echo $PKGOUTDATE | tr ' ' '\n' | grep -x $d)" = "$d" ]; then - echo -ne "[${GREEN}u${CRESET}] $d " - WILLINSTALL+=($d) + + if [ "$NODEP" != 1 ]; then + echo "Resolving dependencies..." + DEP=$(pkgdeplist ${PKGOUTDATE[@]} -l | awk '{print $2}') + echo + for d in $DEP; do + if [ "$(echo $PKGOUTDATE | tr ' ' '\n' | grep -x $d)" = "$d" ]; then + echo -ne "[${GREEN}u${CRESET}] $d " + WILLINSTALL+=($d) + UPGPKG=$(( $UPGPKG + 1 )) + elif ! isinstalled $d && [ $(getportpath "$d") ]; then + echo -ne "[${CYAN}n${CRESET}] $d " + WILLINSTALL+=($d) + NEWPKG=$(( $NEWPKG + 1 )) + fi + done + else + echo + for dd in ${PKGOUTDATE[@]}; do + echo -ne "[${GREEN}u${CRESET}] $dd " + WILLINSTALL+=($dd) UPGPKG=$(( $UPGPKG + 1 )) - elif ! isinstalled $d && [ $(getportpath "$d") ]; then - echo -ne "[${CYAN}n${CRESET}] $d " - WILLINSTALL+=($d) - NEWPKG=$(( $NEWPKG + 1 )) - fi - done + done + fi echo echo echo "( $UPGPKG upgrade, $NEWPKG new install )" @@ -841,7 +864,9 @@ upgradepkg() { needarg "$@" while [ "$1" ]; do - if [[ "$1" =~ ^--(no-postupgrade|no-preupgrade)$ ]]; then + if [[ "$1" =~ ^--(no-postupgrade|no-preupgrade|no-backup)$ ]]; then + OPTS+=($1) + elif [[ "$1" =~ ^-(c|v|-ignore-conflict|-verbose) ]]; then OPTS+=($1) elif [[ "$1" =~ ^-(-no-dep|d)$ ]]; then NO_DEP=1 @@ -1099,30 +1124,29 @@ duplicateports() { usage_extra() { cat << EOF Usage: - $(basename $0) [ ] + $(basename $0) [ ] Operation: - depends show depends of a package - search search packages in port's repos - lock lock packages from upgrade - unlock unlock packages from upgrade - cat view a package build scripts - dependent show package's dependent - own show package's owner of file - pkgtree show list files of installed package - path show package's buildscripts path - sync update port's repo - sysup full system update - dup print duplicate ports in repo - readme print readme file if exist - listinst list installed package in system - listorphan list orphan package - integrity check integrity of package's files - outdate check for outdate packages - cache print leftover cache - missingdep check for mising dependency of installed package - foreignpkg print package installed without port in repo - listlocked print locked packages + depends show depends of a package + search search packages in port's repos + lock lock packages from upgrade + unlock unlock packages from upgrade + cat view a package build scripts + dependent show package's dependent + own show package's owner of file + files show list files of installed package + path show package's buildscripts path + readme print readme file if exist + sync update port's repo + dup print duplicate ports in repo + listinst list installed package in system + listorphan list orphan package + integrity check integrity of package's files + outdate check for outdated packages + cache print leftover cache + missingdep check for mising dependency of installed package + foreignpkg print package installed without port in repo + listlocked print locked packages EOF } @@ -1135,15 +1159,15 @@ Usage: Options: -f, --force-rebuild force rebuild -m, --skip-mdsum skip md5sum check for sources - -d, --no-dep skip dependency check - -e, --extract extract only + -x, --extract extract only -w, --keep-work keep woring directory -o, --download download source files only - -v, --verbose be verbose + -l, --log log build process --redownload re-download source files --srcdir= override default SOURCE_DIR --pkgdir= override default PACKAGE_DIR - --no-preinstall skip pre-install script + --logdir= override default LOG_DIR + --no-prebuild skip pre-build script EOF } @@ -1157,10 +1181,28 @@ Options: -d, --no-dep skip installing dependencies (new dependencies) -c, --ignore-conflict skip file conflict check -v, --verbose print install process + -y, --yes dont ask confirmation --no-backup skip backup configuration file --no-preupgrade skip pre-upgrade script --no-postupgrade skip post-upgrade script + +EOF +} + +usage_sysup() { + cat << EOF +Usage: + $(basename $0) sysup + +Options: + -d, --no-dep skip installing dependencies (new dependencies) + -c, --ignore-conflict skip file conflict check + -v, --verbose print install process + -s, --sync sync ports before upgrades -y, --yes dont ask confirmation + --no-backup skip backup configuration file + --no-preupgrade skip pre-upgrade script + --no-postupgrade skip post-upgrade script EOF } @@ -1171,11 +1213,10 @@ Usage: $(basename $0) remove [ ] Options: - -d, --no-dep skip dependency check -v, --verbose print removed files + -y, --yes dont ask confirmation --no-preremove skip pre-remove script --no-postremove skip post-remove script - -y, --yes dont ask confirmation EOF } @@ -1189,9 +1230,10 @@ Options: -d, --no-dep skip installing dependencies -c, --ignore-conflict skip file conflict check -r, --reinstall reinstall installed package + -v, --verbose print install files + -y, --yes dont ask confirmation --no-preinstall skip pre-install script --no-postinstall skip post-install script - -y, --yes dont ask confirmation EOF } @@ -1202,10 +1244,11 @@ Usage: $(basename $0) help Operation: - build build only packages + build build package install install packages - remove remove packages in system - upgrade upgrade packages and install new dependencies (if any) + upgrade upgrade packages + sysup full system upgrades + remove remove packages extra various extra options EOF @@ -1220,6 +1263,7 @@ usage() { remove) usage_remove ;; upgrade) usage_upgrade ;; build) usage_build ;; + sysup) usage_sysup ;; extra) usage_extra ;; esac fi @@ -1288,7 +1332,7 @@ main() { exit $? fi - if [ "$mode" = "pkgtree" ]; then + if [ "$mode" = "files" ]; then showtree $1 exit $? fi @@ -1363,7 +1407,7 @@ main() { exit $? fi - echo "Run 'scratch help' to see available mode and options" + echo "Run 'scratch help' to see available operations and options" exit 5 }