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 <allan@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
10584ec8ea
commit
c27904661e
@ -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}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user