[pacman-dev] [PATCH] makepkg: create tar file for bogus PKGEXT

lolilolicon lolilolicon at gmail.com
Fri Sep 30 01:23:11 EDT 2011


If PKGEXT is not one of the recognized tar*'s, create_package() would
create an empty package file and fail, since bsdtar on the left side of
the pipe returns 141 on SIGPIPE (broken pipe).
This patch changes the behavior for an invalid PKGEXT.  A warning is
printed on stderr, and a tar file is created.
Also retire the obsolete $EXT variable.
Also add the obligatory comment why we don't use bsdtar's compression.

Signed-off-by: lolilolicon <lolilolicon at gmail.com>
---
 scripts/makepkg.sh.in |   26 ++++++++++----------------
 1 files changed, 10 insertions(+), 16 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index cc06baa..213ac32 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -1256,17 +1256,6 @@ create_package() {
 	# tar it up
 	msg2 "$(gettext "Compressing package...")"
 
-	local EXT
-	case "$PKGEXT" in
-		*tar.gz)  EXT=${PKGEXT%.gz} ;;
-		*tar.bz2) EXT=${PKGEXT%.bz2} ;;
-		*tar.xz)  EXT=${PKGEXT%.xz} ;;
-		*tar.Z)   EXT=${PKGEXT%.Z} ;;
-		*tar)     EXT=${PKGEXT} ;;
-		*) warning "$(gettext "'%s' is not a valid archive extension.")" \
-		"$PKGEXT" ; EXT=$PKGEXT ;;
-	esac
-
 	local fullver=$(get_full_version)
 	local pkg_file="$PKGDEST/${nameofpkg}-${fullver}-${PKGARCH}${PKGEXT}"
 	local ret=0
@@ -1279,13 +1268,18 @@ create_package() {
 	shopt -s nullglob
 	# TODO: Maybe this can be set globally for robustness
 	shopt -s -o pipefail
+	# bsdtar's gzip compression always saves the time stamp, making one
+	# archive created using the same command line distinct from another.
+	# Disable bsdtar compression and use gzip -n for now.
 	bsdtar -cf - $comp_files * |
 	case "$PKGEXT" in
-	    *tar.gz)  gzip -c -f -n ;;
-	    *tar.bz2) bzip2 -c -f ;;
-	    *tar.xz)  xz -c -z - ;;
-	    *tar.Z)   compress -c -f ;;
-	    *tar)     cat ;;
+		*tar.gz)  gzip -c -f -n ;;
+		*tar.bz2) bzip2 -c -f ;;
+		*tar.xz)  xz -c -z - ;;
+		*tar.Z)   compress -c -f ;;
+		*tar)     cat ;;
+		*) warning "$(gettext "'%s' is not a valid archive extension." <&-)" \
+		"$PKGEXT" <&- >&2; cat ;;
 	esac > "${pkg_file}" || ret=$?
 
 	shopt -u nullglob
-- 
1.7.6.4



More information about the pacman-dev mailing list