public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: David Edelsohn <dje.gcc@gmail.com>
To: "Arsen Arsenović" <arsen@aarsen.me>
Cc: Richard Biener <richard.guenther@gmail.com>,
	Bruno Haible <bruno@clisp.org>,
	gcc-patches@gcc.gnu.org
Subject: Re: [PATCH v3 0/2] Replace intl/ with out-of-tree GNU gettext
Date: Thu, 16 Nov 2023 18:59:14 -0500	[thread overview]
Message-ID: <CAGWvnykb-NcwuQmrjqEEtspSyMXQ2jNWCy33KYo3ScWLBZdcBA@mail.gmail.com> (raw)
In-Reply-To: <867cmh8g6i.fsf@aarsen.me>

[-- Attachment #1: Type: text/plain, Size: 10361 bytes --]

On Thu, Nov 16, 2023 at 5:52 PM Arsen Arsenović <arsen@aarsen.me> wrote:

>
> David Edelsohn <dje.gcc@gmail.com> writes:
>
> > On Thu, Nov 16, 2023 at 5:22 PM Arsen Arsenović <arsen@aarsen.me> wrote:
> >
> >>
> >> David Edelsohn <dje.gcc@gmail.com> writes:
> >>
> >> > Don't build with the dependent libraries in tree.  Don't build the
> >> > dependent libraries as shared libraries. The libraries are already
> built
> >> > and in /opt/cfarm, as mentioned in the Compile Farm wiki.
> >> >
> >> > AIX is not Solaris and not Linux.  It doesn't use ELF.  AIX shared
> >> > libraries *ARE* shared object files in archives.  Shared object
> >> versioning
> >> > is handled by multiple objects in the same archive.
> >>
> >> Hmm, I see.  I removed all the deps but gettext from the tree.
> >>
> >> This leaves gettext-runtime fulfilling the previous role of intl/.
> >>
> >> However, I'm confused about how this worked before, in that case, since,
> >> IIRC, intl also produced libraries and was also put into host exports.
> >>
> >> Leaving gettext in tree produces:
> >>
> >> Could not load program gawk:
> >>         Dependent module
> >> /home/arsen/build/./gettext/intl/.libs/libintl.a(libintl.so.8) could
> not be
> >> loaded.
> >>         Member libintl.so.8 is not found in archive
> >>
> >> I'll try to see why intl/ didn't cause the same issue soon.
> >>
> >> Thanks, have a lovely evening.
> >>
> >
> > The previous version of "intl" was built as a static library.  Configure
> in
> > the older package had the option --enable-host-shared,
> > which I did not use.  Based on the failure message, the in-tree gettext
> > seems to be built as a shared library.  If you explicitly
> > pass --disable-shared to the in-tree configure, you may get farther.  I'm
> > currently using --disable-shared --disable-threads.
> > As we have discussed, the current gettext will retain some references to
> > pthreads despite the configure option.
>
> Sure, but my patch does insert --disable-shared:
>
> --8<---------------cut here---------------start------------->8---
> host_modules= { module= gettext; bootstrap=true; no_install=true;
>                 module_srcdir= "gettext/gettext-runtime";
>                 // We always build gettext with pic, because some packages
> (e.g. gdbserver)
>                 // need it in some configuratons, which is determined via
> nontrivial tests.
>                 // Always enabling pic seems to make sense for something
> tied to
>                 // user-facing output.
>                 extra_configure_flags='--disable-shared --disable-java
> --disable-csharp --with-pic';
>                 lib_path=intl/.libs; };
> --8<---------------cut here---------------end--------------->8---
>
> ... and it is applied:
>
> --8<---------------cut here---------------start------------->8---
> -bash-5.1$ ./config.status --config
> --srcdir=../../gcc/gettext/gettext-runtime --cache-file=./config.cache
>   --disable-werror --with-gmp=/opt/cfarm
>   --with-libiconv-prefix=/opt/cfarm --disable-libstdcxx-pch
>   --with-included-gettext --program-transform-name=s,y,y,
>   --disable-option-checking --build=powerpc-ibm-aix7.3.1.0
>   --host=powerpc-ibm-aix7.3.1.0 --target=powerpc-ibm-aix7.3.1.0
>   --disable-intermodule --enable-checking=yes,types,extra
>   --disable-coverage --enable-languages=c,c++
>   --disable-build-format-warnings --disable-shared --disable-java
>   --disable-csharp --with-pic build_alias=powerpc-ibm-aix7.3.1.0
>   host_alias=powerpc-ibm-aix7.3.1.0 target_alias=powerpc-ibm-aix7.3.1.0
>   CC=gcc CFLAGS=-g 'LDFLAGS=-static-libstdc++ -static-libgcc
>   -Wl,-bbigtoc' 'CXX=g++ -std=c++11' CXXFLAGS=-g
> --8<---------------cut here---------------end--------------->8---
>
> I'm unsure how to tell what the produced binaries are w.r.t static or
> shared, but I only see .o files inside intl/.libs/libintl.a, while I see
> a .so.1 in (e.g.) /lib/libz.a, hinting at it not being shared (?)
>

An AIX shared library created by libtool will look like
libfoo.a[libfoo.so.N], where N is the package major version number.
Normally with one file.

An AIX static library will look like libfoo.a[a.o, b.o, c.o]
with multiple object files.

An AIX archive can contain a combination of shared objects and
normal object files.

AIX normally uses the convention shr.o or shr_64.o for the name
of the shared object file.  Hint, hint, an AIX archive can contain
both 32 bit and 64 bit object files or shared objects.

I don't know why the gettext build system would create
/home/arsen/build/./gettext/intl/.libs/libintl.a(libintl.so.8)
if --disable-shared was requested.  That clearly is using the
naming of a libtool AIX shared object and failing due to
the missing shared object.  Although in this case, the problem
seems to be the shared library load path.  AIX uses LIBPATH,
not LD_LIBRARY_PATH.

Also, for me, the out of tree path was

gettext/gettext-runtime/intl/.libs

Is your search path missing a level?

Thanks, David


>
> I do see that the build system adds intl to the LD_LIBRARY_PATH.
>
> I will be testing dropping lib_path from the module definition above.
> It might be superflous (I think it is only used for LD_LIBRARY_PATH, for
> when the libs built by the build system are shared - which they never
> are for in-tree gettext).  I'll take the shot to add --disable-threads,
> too, for this test.
>
>
> > Thanks, David
> >
> >
> >>
> >> > Thanks, David
> >> >
> >> >
> >> >
> >> > On Thu, Nov 16, 2023 at 4:15 PM Arsen Arsenović <arsen@aarsen.me>
> wrote:
> >> >
> >> >>
> >> >> Arsen Arsenović <arsen@aarsen.me> writes:
> >> >>
> >> >> > [[PGP Signed Part:Good signature from 52C294301EA2C493 Arsen
> Arsenović
> >> >> (Gentoo Developer UID) <arsen@gentoo.org> (trust ultimate) created
> at
> >> >> 2023-11-16T19:47:16+0100 using EDDSA]]
> >> >> >
> >> >> > David Edelsohn <dje.gcc@gmail.com> writes:
> >> >> >
> >> >> >> On Wed, Nov 15, 2023 at 9:22 AM Arsen Arsenović <arsen@aarsen.me>
> >> >> wrote:
> >> >> >>
> >> >> >>>
> >> >> >>> David Edelsohn <dje.gcc@gmail.com> writes:
> >> >> >>>
> >> >> >>> > GCC had been working on AIX with NLS, using
> >> >> "--with-included-gettext".
> >> >> >>> > --disable-nls gets past the breakage, but GCC does not build
> for
> >> me
> >> >> on
> >> >> >>> AIX
> >> >> >>> > with NLS enabled.
> >> >> >>>
> >> >> >>> That should still work with gettext 0.22+ extracted in-tree (it
> >> should
> >> >> >>> be fetched by download_prerequisites).
> >> >> >>>
> >> >> >>> > A change in dependencies for GCC should have been announced and
> >> more
> >> >> >>> widely
> >> >> >>> > socialized in the GCC development mailing list, not just GCC
> >> patches
> >> >> >>> > mailing list.
> >> >> >>> >
> >> >> >>> > I have tried both the AIX Open Source libiconv and libgettext
> >> >> package,
> >> >> >>> and
> >> >> >>> > the ones that I previously built.  Both fail because GCC
> configure
> >> >> >>> decides
> >> >> >>> > to disable NLS, despite being requested, while libcpp is
> >> satisfied,
> >> >> so
> >> >> >>> > tools in the gcc subdirectory don't link against libiconv and
> the
> >> >> build
> >> >> >>> > fails.  With the included gettext, I was able to rely on a
> >> >> >>> self-consistent
> >> >> >>> > solution.
> >> >> >>>
> >> >> >>> That is interesting.  They should be using the same checks.  I've
> >> >> >>> checked trunk and regenerated files on it, and saw no significant
> >> diff
> >> >> >>> (some whitespace changes only).  Could you post the config.log of
> >> both?
> >> >> >>>
> >> >> >>> I've never used AIX.  Can I reproduce this on one of the cfarm
> >> machines
> >> >> >>> to poke around?  I've tried cfarm119, but that one lacked git,
> and I
> >> >> >>> haven't poked around much further due to time constraints.
> >> >> >>>
> >> >> >>
> >> >> >> The AIX system in the Compile Farm has a complete complement of
> Open
> >> >> Source
> >> >> >> software installed.
> >> >> >>
> >> >> >> Please ensure that /opt/freeware/bin is in your path.  Also, the
> GCC
> >> >> Wiki
> >> >> >> Compile Farm page has build tips that include AIX
> >> >> >>
> >> >> >>
> >> >>
> >>
> https://gcc.gnu.org/wiki/CompileFarm#Services_and_software_installed_on_farm_machines
> >> >> >
> >> >> > Thanks, that got me further.
> >> >> >
> >> >> >> that recommended --with-included-gettext configuration option.
> >> >> >
> >> >> > This flag should still exist and operate the same if gettext is
> >> present
> >> >> > in tree.  I've cloned gcc and downloaded prerequisites (via
> >> >> > contrib/download_prerequisites) and I am trying to configure it
> now.
> >> >>
> >> >> The build failed.  After gettext/gmp/... (in-tree hostlibs) get built
> >> >> and added to library paths, further GCC processes fail to run:
> >> >>
> >> >> configure:3305: gcc -g  -static-libstdc++ -static-libgcc -Wl,-bbigtoc
> >> >> conftest.c  >&5
> >> >> Could not load program
> >> >> /opt/freeware/libexec/gcc/powerpc-ibm-aix7.3.0.0/10/cc1:
> >> >>         Dependent module
> >> >> /home/arsen/build/./gmp/.libs/libgmp.a(libgmp.so.10) could not be
> >> loaded.
> >> >>         Member libgmp.so.10 is not found in archive
> >> >>
> >> >> This seems odd.  I am not sure what compels the RTDL (?) to look up
> .sos
> >> >> in archives, or how it knows about these archives..  I suspect it's
> >> >> getting tripped by something in HOST_EXPORTS.
> >> >>
> >> >> >> Thanks, David
> >> >> >>
> >> >> >>
> >> >> >>>
> >> >> >>> TIA, sorry about the inconvenience.  Have a lovely day.
> >> >> >>>
> >> >> >>> > The current gettext-0.22.3 fails to build for me on AIX.
> >> >> >>> >
> >> >> >>> > libcpp configure believes that NLS functions on AIX, but gcc
> >> >> configure
> >> >> >>> > fails in its tests of gettext functionality, which leads to an
> >> >> >>> inconsistent
> >> >> >>> > configuration and build breakage.
> >> >> >>> >
> >> >> >>> > Thanks, David
> >> >> >>>
> >> >> >>>
> >> >> >>> --
> >> >> >>> Arsen Arsenović
> >> >> >>>
> >> >>
> >> >>
> >> >> --
> >> >> Arsen Arsenović
> >> >>
> >>
> >>
> >> --
> >> Arsen Arsenović
> >>
>
>
> --
> Arsen Arsenović
>

  reply	other threads:[~2023-11-16 23:59 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-14 20:37 David Edelsohn
2023-11-14 23:06 ` Arsen Arsenović
2023-11-15  1:49   ` David Edelsohn
2023-11-15 12:29     ` building GNU gettext on AIX Bruno Haible
2023-11-15 19:26       ` David Edelsohn
2023-11-15 21:22         ` Bruno Haible
2023-11-15 21:31           ` David Edelsohn
2023-11-15 22:39             ` Bruno Haible
2023-11-16 16:00               ` David Edelsohn
2023-11-16 16:35                 ` David Edelsohn
2023-11-16 18:01                   ` David Edelsohn
2023-11-16 18:17                     ` David Edelsohn
2023-11-16 18:52                       ` Bruno Haible
2023-11-16 22:18                         ` David Edelsohn
2023-11-16 22:46                           ` Bruno Haible
2023-11-16 23:10                             ` Arsen Arsenović
2023-11-17  8:33                               ` Richard Biener
2023-11-17  8:49                                 ` Arsen Arsenović
2023-11-17 12:24                                 ` Bruno Haible
2023-11-17 13:06                                   ` Arsen Arsenović
2023-11-16 23:38                             ` David Edelsohn
2023-11-17  0:07                               ` Bruno Haible
2023-11-17  0:15                                 ` David Edelsohn
     [not found]                 ` <84B39BF1-33D5-488E-8CF5-D08B09417568@gmail.com>
2023-11-16 17:44                   ` David Edelsohn
2023-11-16 18:47                     ` Bruno Haible
2023-11-16 18:50                       ` Arsen Arsenović
2023-11-16 18:59                         ` Bruno Haible
2023-11-16 19:14                           ` Arsen Arsenović
2023-11-19 19:49                       ` Bruno Haible
2023-11-15 14:14     ` [PATCH v3 0/2] Replace intl/ with out-of-tree GNU gettext Arsen Arsenović
2023-11-15 15:51       ` Xi Ruoyao
2023-11-16 18:48         ` Arsen Arsenović
2023-11-15 17:19       ` David Edelsohn
2023-11-16 18:33         ` Arsen Arsenović
2023-11-16 21:11           ` Arsen Arsenović
2023-11-16 21:40             ` David Edelsohn
2023-11-16 22:19               ` Arsen Arsenović
2023-11-16 22:30                 ` David Edelsohn
2023-11-16 22:32                   ` Arsen Arsenović
2023-11-16 23:59                     ` David Edelsohn [this message]
2023-11-17  8:34                       ` Arsen Arsenović
2023-11-17  8:50                         ` Richard Biener
2023-11-17  8:56                           ` Arsen Arsenović
2023-11-17 14:41                         ` David Edelsohn
2023-11-17 15:16                           ` Arsen Arsenović
2023-11-17 16:07                             ` David Edelsohn
2023-11-18 18:10                               ` Arsen Arsenović
2023-11-19 21:55                               ` Bruno Haible
2023-11-19 23:00                                 ` Bruno Haible
2023-11-19 23:06                                   ` Andrew Pinski
2023-11-20  1:17                                 ` David Edelsohn
2023-11-20 21:18                                   ` Arsen Arsenović
2023-11-20 21:38                                     ` David Edelsohn
2023-11-21  0:44                                       ` Arsen Arsenović
2023-11-20 23:00                                     ` Bruno Haible
2023-11-21  0:45                                       ` Arsen Arsenović
2023-11-21 13:13                                         ` Arsen Arsenović
2023-11-21 16:28                                           ` David Edelsohn
2023-11-21 20:58                                           ` Eric Gallager
2023-11-15 19:58       ` David Edelsohn
  -- strict thread matches above, loose matches on Subject: below --
2023-11-02  8:27 Arsen Arsenović
2023-11-10 10:37 ` Richard Biener

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAGWvnykb-NcwuQmrjqEEtspSyMXQ2jNWCy33KYo3ScWLBZdcBA@mail.gmail.com \
    --to=dje.gcc@gmail.com \
    --cc=arsen@aarsen.me \
    --cc=bruno@clisp.org \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=richard.guenther@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).