[pacman-dev] [PATCH] Use C locale for bsdtar calls during package creation

Allan McRae allan at archlinux.org
Wed Jun 11 22:53:00 EDT 2014


This ensures packages build on a UTF-8 locale system with non-ASCII character
names can be installed on non-UTF-8 systems.

Signed-off-by: Allan McRae <allan at archlinux.org>
---

Arch Linux has been explicitly setting the C locale when packaging with
devtools for a long time.  I think it is best we address this at the source.
bsdtar will give a warning when dealing with a file having non-ASCII
characters during packaging, but the resulting package works.

 scripts/makepkg.sh.in | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 4174ba5..e20b707 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -1998,7 +1998,7 @@ create_package() {
 	shopt -s nullglob
 
 	msg2 "$(gettext "Generating .MTREE file...")"
-	bsdtar -czf .MTREE --format=mtree \
+	LANG=C bsdtar -czf .MTREE --format=mtree \
 		--options='!all,use-set,type,uid,gid,mode,time,size,md5,sha256,link' \
 		"${comp_files[@]}" *
 	comp_files+=(".MTREE")
@@ -2009,7 +2009,7 @@ create_package() {
 	# 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[@]}" * |
+	LANG=C bsdtar -cf - "${comp_files[@]}" * |
 	case "$PKGEXT" in
 		*tar.gz)  ${COMPRESSGZ[@]:-gzip -c -f -n} ;;
 		*tar.bz2) ${COMPRESSBZ2[@]:-bzip2 -c -f} ;;
@@ -2143,7 +2143,7 @@ create_srcpackage() {
 	# tar it up
 	msg2 "$(gettext "Compressing source package...")"
 	cd_safe "${srclinks}"
-	if ! bsdtar -cL ${TAR_OPT} -f "$pkg_file" ${pkgbase}; then
+	if ! LANG=C bsdtar -cL ${TAR_OPT} -f "$pkg_file" ${pkgbase}; then
 		error "$(gettext "Failed to create source package file.")"
 		exit 1 # TODO: error code
 	fi
-- 
2.0.0



More information about the pacman-dev mailing list