From c27904661ef96cb2e7c729ce82b527146529c768 Mon Sep 17 00:00:00 2001 From: Allan McRae Date: Sun, 26 Apr 2009 20:58:04 +1000 Subject: makepkg: make in-place sed portable Do a sed replacement in-place is not very portable. On Mac OSX and BSDs, the syntax is "sed -i ''" where as with GNU sed the command is "sed -i''" or just "sed -i". This patch detects which command should be used during configure. Credit to Kevin Barry who researched this issue and provided a patch to work around this using temporary backup files. Signed-off-by: Allan McRae Signed-off-by: Dan McGee --- configure.ac | 5 +++++ scripts/Makefile.am | 1 + scripts/makepkg.sh.in | 4 ++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 5dcbe795..a83d5e4d 100644 --- a/configure.ac +++ b/configure.ac @@ -180,9 +180,11 @@ GCC_GNU89_INLINE_CC # Host-dependant definitions SIZECMD="stat -c %s" +SEDINPLACE="sed -i" case "${host_os}" in *bsd*) SIZECMD="stat -f %z" + SEDINPLACE="sed -i ''" ;; cygwin*) host_os_cygwin=yes @@ -191,12 +193,14 @@ case "${host_os}" in darwin*) host_os_darwin=yes SIZECMD="/usr/bin/stat -f %z" + SEDINPLACE="sed -i ''" ;; esac AM_CONDITIONAL([CYGWIN], test "x$host_os_cygwin" = "xyes") AM_CONDITIONAL([DARWIN], test "x$host_os_darwin" = "xyes") AC_SUBST(SIZECMD) +AC_SUBST(SEDINPLACE) # Check for architecture, used in default makepkg.conf # (Note single space left after CARCHFLAGS) @@ -356,6 +360,7 @@ ${PACKAGE_NAME}: Architecture flags : ${CARCHFLAGS} Host Type : ${CHOST} Filesize command : ${SIZECMD} + In-place sed command : ${SEDINPLACE} libalpm version : ${LIB_VERSION} libalpm version info : ${LIB_VERSION_INFO} diff --git a/scripts/Makefile.am b/scripts/Makefile.am index 5a2b780c..5d656534 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -41,6 +41,7 @@ edit = sed \ -e 's|@DBEXT[@]|$(DBEXT)|g' \ -e 's|@BUILDSCRIPT[@]|$(BUILDSCRIPT)|g' \ -e 's|@SIZECMD[@]|$(SIZECMD)|g' \ + -e 's|@SEDINPLACE[@]|$(SEDINPLACE)|g' \ -e 's|@configure_input[@]|Generated from $@.in; do not edit by hand.|g' ## All the scripts depend on Makefile so that they are rebuilt when the diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 97acfb49..b8e09f50 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -1172,8 +1172,8 @@ devel_update() { if [ -n "$newpkgver" ]; then if [ "$newpkgver" != "$pkgver" ]; then if [ -f "./$BUILDSCRIPT" ]; then - sed -i "s/^pkgver=[^ ]*/pkgver=$newpkgver/" "./$BUILDSCRIPT" - sed -i "s/^pkgrel=[^ ]*/pkgrel=1/" "./$BUILDSCRIPT" + @SEDINPLACE@ "s/^pkgver=[^ ]*/pkgver=$newpkgver/" "./$BUILDSCRIPT" + @SEDINPLACE@ "s/^pkgrel=[^ ]*/pkgrel=1/" "./$BUILDSCRIPT" source "$BUILDSCRIPT" fi fi -- cgit v1.2.3