[pacman-dev] [PATCH] makepkg: make in-place sed portable
Dan McGee
dpmcgee at gmail.com
Sun Apr 26 10:22:37 EDT 2009
On Sun, Apr 26, 2009 at 6:13 AM, Allan McRae <allan at archlinux.org> wrote:
> 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>
Signed-off-by: Dan McGee <dan at archlinux.org>
Of course I didn't test it too extensively, but the concept looks just fine.
> ---
> 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
>
> _______________________________________________
> pacman-dev mailing list
> pacman-dev at archlinux.org
> http://www.archlinux.org/mailman/listinfo/pacman-dev
>
More information about the pacman-dev
mailing list