makepkg: replaces sed in-place with built in substitution
Reads PKGBUILD into an array and replaces the pkgver and pkgrel with bash parameter substitution, then uses shell redirection to write to to the file. Because shell redirection follows symlinks, this accomplishes the same thing as the previous default of using the GNU-specific --follow-symlinks sed flag. Removes SEDPATH and SEDINPLACEFLAGS from the build systems as they are not used elsewhere. Signed-off-by: Ethan Sommer <e5ten.arch@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
424129e8d1
commit
3a814ee6bc
6 changed files with 5 additions and 32 deletions
|
@ -20,8 +20,6 @@ mode=$3
|
|||
-e "s|@DEBUGSUFFIX[@]|@DEBUGSUFFIX@|g" \
|
||||
-e "s|@INODECMD[@]|@INODECMD@|g" \
|
||||
-e "s|@FILECMD[@]|@FILECMD@|g" \
|
||||
-e "s|@SEDINPLACEFLAGS[@]|@SEDINPLACEFLAGS@|g" \
|
||||
-e "s|@SEDPATH[@]|@SEDPATH@|g" \
|
||||
-e "s|@configure_input[@]|Generated from ${input##*/}; do not edit by hand.|g" \
|
||||
"$input" >"$output"
|
||||
|
||||
|
|
11
configure.ac
11
configure.ac
|
@ -369,7 +369,6 @@ AC_CHECK_MEMBERS([struct statfs.f_flags],,,[[#include <sys/param.h>
|
|||
GCC_VISIBILITY_CC
|
||||
|
||||
# Host-dependant definitions
|
||||
DEFAULT_SEDINPLACEFLAGS=" --follow-symlinks -i"
|
||||
INODECMD="stat -c '%i %n'"
|
||||
STRIP_BINARIES="--strip-all"
|
||||
STRIP_SHARED="--strip-unneeded"
|
||||
|
@ -377,30 +376,21 @@ STRIP_STATIC="--strip-debug"
|
|||
case "${host_os}" in
|
||||
*bsd*)
|
||||
INODECMD="stat -f '%i %N'"
|
||||
DEFAULT_SEDINPLACEFLAGS=" -i \"\""
|
||||
;;
|
||||
darwin*)
|
||||
host_os_darwin=yes
|
||||
INODECMD="/usr/bin/stat -f '%i %N'"
|
||||
DEFAULT_SEDINPLACEFLAGS=" -i ''"
|
||||
STRIP_BINARIES=""
|
||||
STRIP_SHARED="-S"
|
||||
STRIP_STATIC="-S"
|
||||
;;
|
||||
esac
|
||||
AM_CONDITIONAL([DARWIN], test "x$host_os_darwin" = "xyes")
|
||||
AC_PATH_PROGS([SEDPATH], [sed], [sed], [/usr/bin$PATH_SEPARATOR/bin] )
|
||||
AC_SUBST(INODECMD)
|
||||
AC_SUBST(STRIP_BINARIES)
|
||||
AC_SUBST(STRIP_SHARED)
|
||||
AC_SUBST(STRIP_STATIC)
|
||||
|
||||
# Flags for sed in place
|
||||
if test "${SEDINPLACEFLAGS+set}" != "set"; then
|
||||
SEDINPLACEFLAGS="${DEFAULT_SEDINPLACEFLAGS}"
|
||||
fi
|
||||
AC_ARG_VAR(SEDINPLACEFLAGS, [flags for sed, overriding the default])
|
||||
|
||||
# Variables plugged into makepkg.conf
|
||||
CARCH="${host%%-*}"
|
||||
CHOST="${host}"
|
||||
|
@ -576,7 +566,6 @@ ${PACKAGE_NAME}:
|
|||
Architecture : ${CARCH}
|
||||
Host Type : ${CHOST}
|
||||
File inode command : ${INODECMD}
|
||||
In-place sed command : ${SEDPATH} ${SEDINPLACEFLAGS}
|
||||
File seccomp command : ${FILECMD}
|
||||
|
||||
libalpm version : ${LIB_VERSION}
|
||||
|
|
11
meson.build
11
meson.build
|
@ -221,7 +221,6 @@ config_h = configure_file(
|
|||
add_project_arguments('-include', 'config.h', language : 'c')
|
||||
|
||||
filecmd = 'file'
|
||||
default_sedinplaceflags = ' --follow-symlinks -i'
|
||||
inodecmd = 'stat -c \'%i %n\''
|
||||
strip_binaries = '--strip-all'
|
||||
strip_shared = '--strip-unneeded'
|
||||
|
@ -237,18 +236,11 @@ endif
|
|||
os = host_machine.system()
|
||||
if os.startswith('darwin')
|
||||
inodecmd = '/usr/bin/stat -f \'%i %N\''
|
||||
default_sedinplaceflags = ' -i \'\''
|
||||
strip_binaries = ''
|
||||
strip_shared = '-s'
|
||||
strip_static = '-s'
|
||||
elif os.contains('bsd') or os == 'dragonfly'
|
||||
inodecmd = 'stat -f \'%i %N\''
|
||||
default_sedinplaceflags = ' -i \'\''
|
||||
endif
|
||||
|
||||
sedinplaceflags = get_option('sedinplaceflags')
|
||||
if sedinplaceflags == 'auto'
|
||||
sedinplaceflags = default_sedinplaceflags
|
||||
endif
|
||||
|
||||
chost = run_command(cc, '-dumpmachine').stdout().strip()
|
||||
|
@ -277,8 +269,6 @@ substs.set('TEMPLATE_DIR', get_option('makepkg-template-dir'))
|
|||
substs.set('DEBUGSUFFIX', get_option('debug-suffix'))
|
||||
substs.set('INODECMD', inodecmd)
|
||||
substs.set('FILECMD', filecmd)
|
||||
substs.set('SEDINPLACEFLAGS', sedinplaceflags)
|
||||
substs.set('SEDPATH', SED.path())
|
||||
substs.set('LIBMAKEPKGDIR', LIBMAKEPKGDIR)
|
||||
substs.set('STRIP_BINARIES', strip_binaries)
|
||||
substs.set('STRIP_SHARED', strip_shared)
|
||||
|
@ -430,7 +420,6 @@ message('\n '.join([
|
|||
' Architecture : @0@'.format(carch),
|
||||
' Host Type : @0@'.format(chost),
|
||||
' File inode command : @0@'.format(inodecmd),
|
||||
' In-place sed command : @0@ @1@'.format(SED.path(), sedinplaceflags),
|
||||
' File seccomp command : @0@'.format(filecmd),
|
||||
' libalpm version : @0@'.format(libalpm_version),
|
||||
' pacman version : @0@'.format(PACKAGE_VERSION),
|
||||
|
|
|
@ -54,6 +54,3 @@ option('i18n', type : 'boolean', value : true,
|
|||
# tools
|
||||
option('file-seccomp', type: 'feature', value: 'auto',
|
||||
description: 'determine whether file is seccomp-enabled')
|
||||
|
||||
option('sedinplaceflags', type : 'string', value : 'auto',
|
||||
description : 'flags to pass to sed to edit a file in-place')
|
||||
|
|
|
@ -186,8 +186,6 @@ edit = sed \
|
|||
-e 's|@DEBUGSUFFIX[@]|$(DEBUGSUFFIX)|g' \
|
||||
-e "s|@INODECMD[@]|$(INODECMD)|g" \
|
||||
-e "s|@FILECMD[@]|$(FILECMD)|g" \
|
||||
-e 's|@SEDINPLACEFLAGS[@]|$(SEDINPLACEFLAGS)|g' \
|
||||
-e 's|@SEDPATH[@]|$(SEDPATH)|g' \
|
||||
-e 's|@SCRIPTNAME[@]|$@|g' \
|
||||
-e 's|@configure_input[@]|Generated from $<; do not edit by hand.|g'
|
||||
|
||||
|
|
|
@ -199,13 +199,15 @@ update_pkgver() {
|
|||
fi
|
||||
|
||||
if [[ -n $newpkgver && $newpkgver != "$pkgver" ]]; then
|
||||
if [[ -f $BUILDFILE && -w $BUILDFILE ]]; then
|
||||
if ! @SEDPATH@ @SEDINPLACEFLAGS@ "s:^pkgver=[^ ]*:pkgver=$newpkgver:" "$BUILDFILE"; then
|
||||
if [[ -w $BUILDFILE ]]; then
|
||||
mapfile -t buildfile < "$BUILDFILE"
|
||||
buildfile=("${buildfile[@]/#pkgver=*([^ ])/pkgver=$newpkgver}")
|
||||
buildfile=("${buildfile[@]/#pkgrel=*([^ ])/pkgrel=1}")
|
||||
if ! printf '%s\n' "${buildfile[@]}" > "$BUILDFILE"; then
|
||||
error "$(gettext "Failed to update %s from %s to %s")" \
|
||||
"pkgver" "$pkgver" "$newpkgver"
|
||||
exit $E_PKGBUILD_ERROR
|
||||
fi
|
||||
@SEDPATH@ @SEDINPLACEFLAGS@ "s:^pkgrel=[^ ]*:pkgrel=1:" "$BUILDFILE"
|
||||
source_safe "$BUILDFILE"
|
||||
local fullver=$(get_full_version)
|
||||
msg "$(gettext "Updated version: %s")" "$pkgbase $fullver"
|
||||
|
|
Loading…
Add table
Reference in a new issue