[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: failure in building po/Makefile due to crippled sed

From: Eric Blake
Subject: Re: failure in building po/Makefile due to crippled sed
Date: Thu, 7 Mar 2019 09:56:47 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1

On 3/7/19 4:07 AM, Perry Hutchison wrote:
> Feel free to direct me elsewhere if this is not the proper list
> for this report.  I have not found any similar reports, either
> in the autoconf archives or elsewhere, but it's certainly possible
> that I didn't look in the right place.

As the creation of po/Makefile is due to code from the gettext project,
your report will probably go further there. Autoconf is not the source
of this particular sed command.

> In attempting to build some of the GNU development tools on a Linux
> system that lacks them, I am encountering issues when config.status
> attempts to generate Makefiles for "po" directories.  For example,
> this sed command (reformatted, and with some parts not relevant to
> the current issue omitted):
>   sed -e "/^POTFILES =/r $ac_dir/POTFILES" \

$ git grep 'sed .*/r'

turns up nothing for autoconf.git sources, but DOES hit in m4/po.m4 in
gnulib.git, where it is in turn kept in sync from upstream gettext.

>       -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" \
>       -e "s|@POFILES@|$POFILES|g" \
>       ... \
>       "$ac_dir/" > "$ac_dir/Makefile"
> produces this error message when executed (while attempting to build
> GNU make):
>   config.status: executing po-directories commands
>   config.status: creating po/POTFILES
>   config.status: creating po/Makefile
>   sed: -e expression #1, char 14: e/r/w commands disabled in sandbox mode

That's a bummer that your system has a non-POSIX-compliant sed by
default.  I don't know where you'd complain to get that fixed, but POSIX
requires '/address/r file' to work; we'll probably have to come up with
ways to workaround your system's brain-dead policy, and could patch the
autoconf documentation to mention this as a new portability pitfall of
using POSIX-specified sed features.

>   config.status: creating
> leading me to suspect that this system's native sed has been crippled
> to always operate in "sandbox" mode, even without "--sandbox" having
> been specified on the command line.
> The resulting po/Makefile does not resemble at all.
> Later on, when "./make DESTDIR=... install" descends into the po
> directory:
>   Making install in po
>   make[1]: *** No rule to make target 'install'.  Stop.
> The same sed error message arises in attempting to build other GNU tools,
> including gettext (which is a dependency of GNU sed, so I haven't been
> able to build GNU sed to use in place of the system's crippled version).
> While the root cause of these failures is the broken sed, it would
> certainly help if configure checked for such breakage and generated
> a workaround when needed, e.g. replacing the above sed command with
> something along the lines of:
>   sed -e '/^POTFILES =/+1,$d' \
>       -e "s|@POFILES@|$POFILES|g" \
>       ... \
>       "$ac_dir/" > Temp1
>   sed -e '1,/^POTFILES =/d' -e '/^# Makevars/+1,$d' \
>       -e "s|@POFILES@|$POFILES|g" \
>       ... \
>       "$ac_dir/" > Temp2
>   sed -e '1,/^# Makevars/d' \
>       -e "s|@POFILES@|$POFILES|g" \
>       ... \
>       "$ac_dir/" > Temp3
>   cat Temp1 "$ac_dir/POTFILES" Temp2 "$ac_given_srcdir/$ac_dir/Makevars" \
>       Temp3 > "$ac_dir/Makefile"
>   rm Temp[123]

That's up to the authors of the specific .m4 files that tried to use
sed's r command.

Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization: |

Attachment: signature.asc
Description: OpenPGP digital signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]