Currently PKGBUILD has no way to receive from makepkg if it wants to use
parallel jobs during compilation. This patch adds the '-jN' option to
makepkg, which will propagate to PKGBUILD 2 variables:
JOBS is 0 if options is not used, or N otherwise.
JOBS_ARG is an empty string is option is not used, or '-jN' otherwise.

If the PKGBUILD script does not support parallel jobs, this option will
have no impact during the compilation.

Signed-off-by: David Cohen <[email protected]>
---
 doc/makepkg.8.asciidoc | 7 +++++++
 scripts/makepkg.sh.in  | 6 +++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/doc/makepkg.8.asciidoc b/doc/makepkg.8.asciidoc
index 38032e7b..6b6a481e 100644
--- a/doc/makepkg.8.asciidoc
+++ b/doc/makepkg.8.asciidoc
@@ -99,6 +99,13 @@ Options
        Install or upgrade the package after a successful build using
        linkman:pacman[8].

+*-j* <jobs>::
+       Suggest simultaneous jobs in parallel during compilation. If `PKGBUILD`
+       supports parallel compilation, it can use JOBS and JOBS_ARG variables.
+       JOBS is 0 if option is not used, or <jobs> otherwise.
+       JOBS_ARG is empty string if option is not used, or -j<jobs> otherwise.
+       If `PKGBUILD` does not support it, the option will make no difference.
+
 *-L, \--log*::
        Enable logging. This will use the *tee* program to send the output of 
each
        of the PKGBUILD functions to both the console and to a text file in the
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index e58edfa1..1a590d03 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -61,6 +61,8 @@ HOLDVER=0
 IGNOREARCH=0
 INFAKEROOT=0
 INSTALL=0
+JOBS=0
+JOBS_ARG=''
 LOGGING=0
 NEEDED=0
 NOARCHIVE=0
@@ -975,6 +977,7 @@ usage() {
        printf -- "$(gettext "  -g, --geninteg   Generate integrity checks for 
source files")\n"
        printf -- "$(gettext "  -h, --help       Show this help message and 
exit")\n"
        printf -- "$(gettext "  -i, --install    Install package after 
successful build")\n"
+       printf -- "$(gettext "  -j <jobs>        Suggest simultaneous jobs in 
parallel during compilation")\n"
        printf -- "$(gettext "  -L, --log        Log package build process")\n"
        printf -- "$(gettext "  -m, --nocolor    Disable colorized output 
messages")\n"
        printf -- "$(gettext "  -o, --nobuild    Download and extract files 
only")\n"
@@ -1037,7 +1040,7 @@ fi
 ARGLIST=("$@")

 # Parse Command Line Options.
-OPT_SHORT="AcCdefFghiLmop:rRsSV"
+OPT_SHORT="AcCdefFghij:Lmop:rRsSV"
 OPT_LONG=('allsource' 'check' 'clean' 'cleanbuild' 'config:' 'force' 'geninteg'
           'help' 'holdver' 'ignorearch' 'install' 'key:' 'log' 'noarchive' 
'nobuild'
           'nocolor' 'nocheck' 'nodeps' 'noextract' 'noprepare' 'nosign' 
'packagelist'
@@ -1076,6 +1079,7 @@ while true; do
                -g|--geninteg)    BUILDPKG=0 GENINTEG=1 IGNOREARCH=1;;
                --holdver)        HOLDVER=1 ;;
                -i|--install)     INSTALL=1 ;;
+               -j)               shift; JOBS=$1 JOBS_ARG="-j$1" ;;
                --key)            shift; GPGKEY=$1 ;;
                -L|--log)         LOGGING=1 ;;
                -m|--nocolor)     USE_COLOR='n'; PACMAN_OPTS+=("--color" 
"never") ;;
--
2.33.0


Reply via email to