[pacman-dev] [PATCH] makepkg: add option to skip archive compression
hi pacman developers, i currently have to `makepkg' a huge package (go-hg) again and again. since compression takes very long (and pacman can handle uncompressed archives very well), i implemented an option to makepkg that skips the compression of the (tar)archive. this speeds-up my workflow enormously. btw, this option might be useful in packages like yaourt as well.. if you find this patch useful, feel free to include it :) thanks for developing this great package manager! cheers, chressie
Signed-off-by: Christian Himpel <chressie@gmail.com> --- scripts/makepkg.sh.in | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 32528b0..409c6e7 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -73,6 +73,7 @@ HOLDVER=0 BUILDFUNC=0 PKGFUNC=0 SPLITPKG=0 +NOCOMPRESS=0 PKGLIST=() # Forces the pkgver of the current PKGBUILD. Used by the fakeroot call @@ -1045,7 +1046,7 @@ create_package() { bsdtar -cf - $comp_files * > "$tar_file" || ret=$? shopt -u nullglob - if (( ! ret )); then + if (( ! ret && ! NOCOMPRESS )); then case "$PKGEXT" in *tar.gz) gzip -f -n "$tar_file" ;; *tar.bz2) bzip2 -f "$tar_file" ;; @@ -1512,6 +1513,7 @@ usage() { printf "$(gettext " -A, --ignorearch Ignore incomplete arch field in %s")\n" "$BUILDSCRIPT" echo "$(gettext " -c, --clean Clean up work files after build")" echo "$(gettext " -C, --cleancache Clean up source files from the cache")" + echo "$(gettext " --nocompress Do not compress package archive")" echo "$(gettext " -d, --nodeps Skip all dependency checks")" echo "$(gettext " -e, --noextract Do not extract source files (use existing src/ dir)")" echo "$(gettext " -f, --force Overwrite existing package")" @@ -1564,7 +1566,7 @@ ARGLIST=("$@") # Parse Command Line Options. OPT_SHORT="AcCdefFghiLmop:rRsV" -OPT_LONG="allsource,asroot,ignorearch,clean,cleancache,nodeps" +OPT_LONG="allsource,asroot,ignorearch,clean,cleancache,nocompress,nodeps" OPT_LONG+=",noextract,force,forcever:,geninteg,help,holdver" OPT_LONG+=",install,log,nocolor,nobuild,pkg:,rmdeps,repackage,skipinteg" OPT_LONG+=",source,syncdeps,version,config:" @@ -1590,6 +1592,7 @@ while true; do -A|--ignorearch) IGNOREARCH=1 ;; -c|--clean) CLEANUP=1 ;; -C|--cleancache) CLEANCACHE=1 ;; + --nocompress) NOCOMPRESS=1 ;; --config) shift; MAKEPKG_CONF=$1 ;; -d|--nodeps) NODEPS=1 ;; -e|--noextract) NOEXTRACT=1 ;; -- 1.7.2.1
On Mon, Aug 9, 2010 at 5:05 PM, Christian Himpel <chressie@googlemail.com> wrote:
Signed-off-by: Christian Himpel <chressie@gmail.com>
You've been beat, by what is probably a more flexible option (and doesn't force us to add yet another command line option): http://mailman.archlinux.org/pipermail/pacman-dev/2010-August/011470.html
--- scripts/makepkg.sh.in | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 32528b0..409c6e7 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -73,6 +73,7 @@ HOLDVER=0 BUILDFUNC=0 PKGFUNC=0 SPLITPKG=0 +NOCOMPRESS=0 PKGLIST=()
# Forces the pkgver of the current PKGBUILD. Used by the fakeroot call @@ -1045,7 +1046,7 @@ create_package() { bsdtar -cf - $comp_files * > "$tar_file" || ret=$? shopt -u nullglob
- if (( ! ret )); then + if (( ! ret && ! NOCOMPRESS )); then case "$PKGEXT" in *tar.gz) gzip -f -n "$tar_file" ;; *tar.bz2) bzip2 -f "$tar_file" ;; @@ -1512,6 +1513,7 @@ usage() { printf "$(gettext " -A, --ignorearch Ignore incomplete arch field in %s")\n" "$BUILDSCRIPT" echo "$(gettext " -c, --clean Clean up work files after build")" echo "$(gettext " -C, --cleancache Clean up source files from the cache")" + echo "$(gettext " --nocompress Do not compress package archive")" echo "$(gettext " -d, --nodeps Skip all dependency checks")" echo "$(gettext " -e, --noextract Do not extract source files (use existing src/ dir)")" echo "$(gettext " -f, --force Overwrite existing package")" @@ -1564,7 +1566,7 @@ ARGLIST=("$@")
# Parse Command Line Options. OPT_SHORT="AcCdefFghiLmop:rRsV" -OPT_LONG="allsource,asroot,ignorearch,clean,cleancache,nodeps" +OPT_LONG="allsource,asroot,ignorearch,clean,cleancache,nocompress,nodeps" OPT_LONG+=",noextract,force,forcever:,geninteg,help,holdver" OPT_LONG+=",install,log,nocolor,nobuild,pkg:,rmdeps,repackage,skipinteg" OPT_LONG+=",source,syncdeps,version,config:" @@ -1590,6 +1592,7 @@ while true; do -A|--ignorearch) IGNOREARCH=1 ;; -c|--clean) CLEANUP=1 ;; -C|--cleancache) CLEANCACHE=1 ;; + --nocompress) NOCOMPRESS=1 ;; --config) shift; MAKEPKG_CONF=$1 ;; -d|--nodeps) NODEPS=1 ;; -e|--noextract) NOEXTRACT=1 ;; -- 1.7.2.1
On Tue, Aug 10, 2010 at 12:20 AM, Dan McGee <dpmcgee@gmail.com> wrote:
On Mon, Aug 9, 2010 at 5:05 PM, Christian Himpel <chressie@googlemail.com> wrote:
Signed-off-by: Christian Himpel <chressie@gmail.com>
You've been beat, by what is probably a more flexible option (and doesn't force us to add yet another command line option): http://mailman.archlinux.org/pipermail/pacman-dev/2010-August/011470.html
yeah, i saw this mail on the list a few minutes after sending the patch and the last minute i was typing an apology, arguing that a command-line option is more flexible... => i've been double-beat.. thanks for the answer. cheers, chressie
--- scripts/makepkg.sh.in | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 32528b0..409c6e7 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -73,6 +73,7 @@ HOLDVER=0 BUILDFUNC=0 PKGFUNC=0 SPLITPKG=0 +NOCOMPRESS=0 PKGLIST=()
# Forces the pkgver of the current PKGBUILD. Used by the fakeroot call @@ -1045,7 +1046,7 @@ create_package() { bsdtar -cf - $comp_files * > "$tar_file" || ret=$? shopt -u nullglob
- if (( ! ret )); then + if (( ! ret && ! NOCOMPRESS )); then case "$PKGEXT" in *tar.gz) gzip -f -n "$tar_file" ;; *tar.bz2) bzip2 -f "$tar_file" ;; @@ -1512,6 +1513,7 @@ usage() { printf "$(gettext " -A, --ignorearch Ignore incomplete arch field in %s")\n" "$BUILDSCRIPT" echo "$(gettext " -c, --clean Clean up work files after build")" echo "$(gettext " -C, --cleancache Clean up source files from the cache")" + echo "$(gettext " --nocompress Do not compress package archive")" echo "$(gettext " -d, --nodeps Skip all dependency checks")" echo "$(gettext " -e, --noextract Do not extract source files (use existing src/ dir)")" echo "$(gettext " -f, --force Overwrite existing package")" @@ -1564,7 +1566,7 @@ ARGLIST=("$@")
# Parse Command Line Options. OPT_SHORT="AcCdefFghiLmop:rRsV" -OPT_LONG="allsource,asroot,ignorearch,clean,cleancache,nodeps" +OPT_LONG="allsource,asroot,ignorearch,clean,cleancache,nocompress,nodeps" OPT_LONG+=",noextract,force,forcever:,geninteg,help,holdver" OPT_LONG+=",install,log,nocolor,nobuild,pkg:,rmdeps,repackage,skipinteg" OPT_LONG+=",source,syncdeps,version,config:" @@ -1590,6 +1592,7 @@ while true; do -A|--ignorearch) IGNOREARCH=1 ;; -c|--clean) CLEANUP=1 ;; -C|--cleancache) CLEANCACHE=1 ;; + --nocompress) NOCOMPRESS=1 ;; --config) shift; MAKEPKG_CONF=$1 ;; -d|--nodeps) NODEPS=1 ;; -e|--noextract) NOEXTRACT=1 ;; -- 1.7.2.1
participants (2)
-
Christian Himpel
-
Dan McGee