[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: moopp: *** The 'sed' program is not GNU sed. Try installing GNU sed.
From: |
Jeffrey Walton |
Subject: |
Re: moopp: *** The 'sed' program is not GNU sed. Try installing GNU sed. |
Date: |
Tue, 4 Feb 2020 21:36:43 -0500 |
On Tue, Feb 4, 2020 at 8:44 PM Bruno Haible <address@hidden> wrote:
>
> > I'm having trouble building GetText 1.20.1 on NetBSD. I have GNU sed
> > installed at /usr/local/bin/sed. I set the SED variable to the same:
> >
> > $ export SED=/usr/local/bin/sed
> > $ ./configure ...
> > $ make
> > ...
> > ../build-aux/moopp ./fd-ostream.oo.c ./fd-ostream.oo.h ./ostream.oo.h
>
> This is surprising. In the tarball, the generated files are included
> and have a higher timestamp than the input files. Therefore 'make' should
> not invoke moopp.
>
> Did you make local modifications? That would explain it.
Ugh, you're right. I was doing a find on *.h and patching
__GNUC_PREQ(3, 3) to (4, 0). (It is needed for antique compilers).
This was the problem. Once I converted to a patch things were OK:
--- gettext-tools/libgrep/cdefs.h
+++ gettext-tools/libgrep/cdefs.h
@@ -51,7 +51,7 @@
gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions
as non-throwing using a function attribute since programs can use
the -fexceptions options for C code as well. */
-# if !defined __cplusplus && __GNUC_PREREQ (3, 3)
+# if !defined __cplusplus && __GNUC_PREREQ (4, 0)
# define __THROW __attribute__ ((__nothrow__ __LEAF))
# define __THROWNL __attribute__ ((__nothrow__))
# define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct
The comments are not quite right. GCC 3.3 is a tad bit early; GCC 4.0
is needed. The compile error can be duplicated on Fedora 1 or Ubuntu
4.
If you are interested in some other work-arounds for old compilers,
then see
https://github.com/noloader/Build-Scripts/blob/master/patch/gettext.patch.
For example, GetText should feature test for __builtin_clzll because
old compilers lack it.
The patch for read-properties.c was due to a UBsan finding:
unsigned char *utf8_string = XNMALLOC (utf8_buflen + 1, unsigned char);
- memcpy (utf8_string, utf8_buffer, utf8_buflen);
+ if (utf8_buffer)
+ memcpy (utf8_string, utf8_buffer, utf8_buflen);
utf8_string[utf8_buflen] = '\0';
Thanks again.
Jeff