1. Packagers who want to test the package() function, i.e. to check the content
of the pkg/ folder.

2. Developers who want to check how the packaged version of a program looks, in
other words how the pkg/ folder looks.

3. For users of systems with no port tree, makepkg can ease package creation.
However the resulting archive of the whole makepkg process is often useless.

For all situations, makepkg will usually be called several times. But no archive
(the final package) is needed in any cases. The archive creation ends up being a
waste of time and resource, especially for big applications and slow machines.

Signed-off-by: Pierre Neidhardt <[email protected]>
---
 doc/makepkg.8.txt     |  7 ++++++-
 scripts/makepkg.sh.in | 14 ++++++++++----
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/doc/makepkg.8.txt b/doc/makepkg.8.txt
index 29f4a03..7b29023 100644
--- a/doc/makepkg.8.txt
+++ b/doc/makepkg.8.txt
@@ -102,7 +102,7 @@ Options
 
 *-i, \--install*::
        Install or upgrade the package after a successful build using
-       linkman:pacman[8].
+       linkman:pacman[8]. This option and '\--noarchive' are mutually 
exclusive.
 
 *-L, \--log*::
        Enable makepkg build logging. This will use the *tee* program to send
@@ -165,6 +165,11 @@ Options
        Run the check() function in the PKGBUILD, overriding the setting in
        linkman:makepkg.conf[5].
 
+*\--noarchive*::
+       Do not create the archive at the end of the build process. This can be
+       useful to test the package() function or if your target distribution 
does
+       not use pacman. This option and '\--install' are mutually exclusive.
+
 *\--nocheck*::
        Do not run the check() function in the PKGBUILD or handle the 
checkdepends.
 
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index b69c071..0689807 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -74,6 +74,7 @@ INFAKEROOT=0
 INSTALL=0
 LOGGING=0
 NEEDED=0
+NOARCHIVE=0
 NOBUILD=0
 NODEPS=0
 NOEXTRACT=0
@@ -1844,6 +1845,8 @@ write_pkginfo() {
 }
 
 create_package() {
+       (( NOARCHIVE )) && return
+
        if [[ ! -d $pkgdir ]]; then
                error "$(gettext "Missing %s directory.")" "\$pkgdir/"
                plain "$(gettext "Aborting...")"
@@ -2513,6 +2516,7 @@ usage() {
        printf -- "$(gettext "  --config <file>  Use an alternate config file 
(instead of '%s')")\n" "$confdir/makepkg.conf"
        printf -- "$(gettext "  --holdver        Do not update VCS sources")\n"
        printf -- "$(gettext "  --key <key>      Specify a key to use for %s 
signing instead of the default")\n" "gpg"
+       printf -- "$(gettext "  --noarchive      Skip package archive creation 
and installation")\n"
        printf -- "$(gettext "  --nocheck        Do not run the %s function in 
the %s")\n" "check()" "$BUILDSCRIPT"
        printf -- "$(gettext "  --noprepare      Do not run the %s function in 
the %s")\n" "prepare()" "$BUILDSCRIPT"
        printf -- "$(gettext "  --nosign         Do not create a signature for 
the package")\n"
@@ -2558,10 +2562,11 @@ ARGLIST=("$@")
 
 # Parse Command Line Options.
 OPT_SHORT="AcCdefFghiLmop:rRsSV"
+
 OPT_LONG=('allsource' 'asroot' 'check' 'clean' 'cleanbuild' 'config:' 'force' 
'geninteg'
-          'help' 'holdver' 'ignorearch' 'install' 'key:' 'log' 'nobuild' 
'nocolor'
-          'nocheck' 'nodeps' 'noextract' 'noprepare' 'nosign' 'pkg:' 
'repackage' 'rmdeps'
-          'sign' 'skipchecksums' 'skipinteg' 'skippgpcheck' 'source' 'syncdeps'
+          'help' 'holdver' 'ignorearch' 'install' 'key:' 'log' 'noarchive' 
'nobuild'
+          'nocolor' 'nocheck' 'nodeps' 'noextract' 'noprepare' 'nosign' 'pkg:' 
'repackage'
+          'rmdeps' 'sign' 'skipchecksums' 'skipinteg' 'skippgpcheck' 'source' 
'syncdeps'
           'verifysource' 'version')
 
 # Pacman Options
@@ -2584,6 +2589,7 @@ while true; do
                # Makepkg Options
                --allsource)      SOURCEONLY=2 ;;
                --asroot)         ASROOT=1 ;;
+               --noarchive)      NOARCHIVE=1; INSTALL=0 ;;
                -A|--ignorearch)  IGNOREARCH=1 ;;
                -c|--clean)       CLEANUP=1 ;;
                -C|--cleanbuild)  CLEANBUILD=1 ;;
@@ -2595,7 +2601,7 @@ while true; do
                -F)               INFAKEROOT=1 ;;
                -g|--geninteg)    GENINTEG=1 ;;
                --holdver)        HOLDVER=1 ;;
-               -i|--install)     INSTALL=1 ;;
+               -i|--install)     INSTALL=1; NOARCHIVE=0 ;;
                --key)            shift; GPGKEY=$1 ;;
                -L|--log)         LOGGING=1 ;;
                -m|--nocolor)     USE_COLOR='n' ;;
-- 
1.9.0


Reply via email to