[pacman-dev] [PATCH] makepkg: allow compression type to be autodetected

Dan McGee dan at archlinux.org
Thu Sep 4 21:46:07 EDT 2008


Inspired by commit 7e8f1469c4168875b54956d63884b8583ce99e38, use our given
PKGEXT or SRCEXT to determine what method of compression to use on the
package we create. If the extension is invalid, this should fall back to
creating a non-compressed tar file.

Signed-off-by: Dan McGee <dan at archlinux.org>
---
 scripts/makepkg.sh.in |   20 ++++++++++++++++++--
 1 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index c15d91f..ff05e48 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -871,13 +871,21 @@ create_package() {
 	# tar it up
 	msg2 "$(gettext "Compressing package...")"
 
+	local TAR_OPT
+	case "$PKGEXT" in
+		*tar.gz)  TAR_OPT="z" ;;
+		*tar.bz2) TAR_OPT="j" ;;
+		*) warning "$(gettext "'%s' is not a valid archive extension.")" \
+		"$PKGEXT" ;;
+	esac
+
 	local pkg_file="$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}"
 
 	# when fileglobbing, we want * in an empty directory to expand to
 	# the null string rather than itself
 	shopt -s nullglob
 
-	if ! bsdtar -czf "$pkg_file" $comp_files *; then
+	if ! bsdtar -c${TAR_OPT}f "$pkg_file" $comp_files *; then
 		error "$(gettext "Failed to create package file.")"
 		exit 1 # TODO: error code
 	fi
@@ -992,12 +1000,20 @@ create_srcpackage() {
 		fi
 	done
 
+	local TAR_OPT
+	case "$SRCEXT" in
+		*tar.gz)  TAR_OPT="z" ;;
+		*tar.bz2) TAR_OPT="j" ;;
+		*) warning "$(gettext "'%s' is not a valid archive extension.")" \
+		"$SRCEXT" ;;
+	esac
+
 	local pkg_file="$PKGDEST/${pkgname}-${pkgver}-${pkgrel}${SRCEXT}"
 
 	# tar it up
 	msg2 "$(gettext "Compressing source package...")"
 	cd "${srclinks}"
-	if ! bsdtar -czLf "$pkg_file" ${pkgname}; then
+	if ! bsdtar -c${TAR_OPT}Lf "$pkg_file" ${pkgname}; then
 		error "$(gettext "Failed to create source package file.")"
 		exit 1 # TODO: error code
 	fi
-- 
1.6.0.1




More information about the pacman-dev mailing list