Signed-off-by: Gordian Edenhofer <gordian.edenhofer@gmail.com> --- contrib/bacman.sh.in | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/contrib/bacman.sh.in b/contrib/bacman.sh.in index 5c59758..58a9fe3 100644 --- a/contrib/bacman.sh.in +++ b/contrib/bacman.sh.in @@ -57,12 +57,13 @@ usage() { printf -- "$(gettext " -h, --help Show this help message and exit")\n" printf -- "$(gettext " -q, --quiet Silence most of the status reporting")\n" printf -- "$(gettext " -m, --nocolor Disable colorized output messages")\n" + printf -- "$(gettext " -j, --jobs <N> Build in parallel with N jobs - you may want to set XZ_OPT")\n" printf -- "$(gettext " -o, --out <dir> Write output to specified directory (instead of \$PKGDEST)")\n" printf -- "$(gettext " --pacnew Package .pacnew files")\n" echo printf -- "$(gettext "Examples: %s linux-headers")\n" "$myname" printf -- "$(gettext " %s gzip munge binutils -o ~/Downloads")\n" "$myname" - printf -- "$(gettext " %s --nocolor --pacnew -o /tmp gzip munge binutils")\n" "$myname" + printf -- "$(gettext " %s --nocolor --pacnew -o /tmp -j 5 gzip munge binutils")\n" "$myname" printf -- "$(gettext " %s \$(pacman -Qsq)")\n" "$myname" echo } @@ -90,8 +91,8 @@ for option in "$@"; do done # Parse arguments -OPT_SHORT='o:qmv' -OPT_LONG=('out:' 'quiet' 'nocolor' 'pacnew' 'version') +OPT_SHORT='o:j:qmv' +OPT_LONG=('out:' 'jobs:' 'quiet' 'nocolor' 'pacnew' 'version') if ! parseopts "$OPT_SHORT" "${OPT_LONG[@]}" -- "$@"; then usage exit 1 @@ -105,6 +106,14 @@ while :; do pkg_dest=$2 [[ ! -d "$2" ]] && echo -e "The directory \e[39;1m$2\e[0m does not exist!" && exit 3 shift ;; + -j|--jobs) + if [[ $2 =~ ^-?[0-9]+$ ]]; then + MAX_JOBS=$2 + else + echo -e "\e[39;1m$2\e[0m is not a valid integer!" + exit -1 + fi + shift ;; -q|--quiet) QUIET=1 ;; -m|--nocolor) @@ -191,7 +200,11 @@ fakebuild() { cd "$work_dir" || exit 1 # Assemble list of files which belong to the package and tar them - msg2 "Copying package files..." + if [[ $MAX_JOBS -gt 1 ]]; then + msg2 "${pkg_name}: Copying package files..." + else + msg2 "Copying package files..." + fi while read i; do if [[ -z $i ]]; then @@ -266,7 +279,11 @@ fakebuild() { # Reconstruct .PKGINFO from database # TODO adopt makepkg's write_pkginfo() into this or scripts/library - msg2 "Generating .PKGINFO metadata..." + if [[ $MAX_JOBS -gt 1 ]]; then + msg2 "${pkg_name}: Generating .PKGINFO metadata..." + else + msg2 "Generating .PKGINFO metadata..." + fi echo "# Generated by $myname $myver" > .PKGINFO if [[ $INFAKEROOT == "1" ]]; then echo "# Using $(fakeroot -v)" >> .PKGINFO @@ -354,7 +371,11 @@ fakebuild() { chmod 644 "$work_dir"/{.PKGINFO,.CHANGELOG,.INSTALL} 2> /dev/null # Generate the package - msg2 "Generating the package..." + if [[ $MAX_JOBS -gt 1 ]]; then + msg2 "${pkg_name}: Generating the package..." + else + msg2 "Generating the package..." + fi pkg_file="$pkg_dest/$pkg_namver-$pkg_arch${PKGEXT}" ret=0 -- 2.9.3