[pacman-dev] [PATCH] makepkg: make in-place sed portable
Allan McRae
allan at archlinux.org
Sun Apr 26 07:13:19 EDT 2009
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 <allan at archlinux.org>
---
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 5dcbe79..a83d5e4 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 5a2b780..5d65653 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 c97eff2..ca25fbb 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -1171,8 +1171,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
--
1.6.2.4
More information about the pacman-dev
mailing list