David Edelsohn <dje....@gmail.com> writes: > On Thu, Nov 16, 2023 at 5:22 PM Arsen Arsenović <ar...@aarsen.me> wrote: > >> >> David Edelsohn <dje....@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 (?) 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.
From 4b75355d5ee9162a922a85517ef3c0a16931544d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arsen=20Arsenovi=C4=87?= <ar...@aarsen.me> Date: Thu, 16 Nov 2023 23:50:30 +0100 Subject: [PATCH] disable threads, lib_path on gettext --- Makefile.def | 3 +-- Makefile.in | 27 +++++++++++---------------- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/Makefile.def b/Makefile.def index 792f81447e1b..78414b4cd89c 100644 --- a/Makefile.def +++ b/Makefile.def @@ -80,8 +80,7 @@ host_modules= { module= gettext; bootstrap=true; no_install=true; // 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; }; + extra_configure_flags='--disable-shared --disable-threads --disable-java --disable-csharp --with-pic'; }; host_modules= { module= tcl; missing=mostlyclean; }; host_modules= { module= itcl; }; diff --git a/Makefile.in b/Makefile.in index b65ab4953bce..796717665eb7 100644 --- a/Makefile.in +++ b/Makefile.in @@ -768,7 +768,7 @@ TARGET_LIB_PATH_libatomic = $$r/$(TARGET_SUBDIR)/libatomic/.libs: # This is the list of directories that may be needed in RPATH_ENVVAR # so that programs built for the host machine work. -HOST_LIB_PATH = $(HOST_LIB_PATH_gmp)$(HOST_LIB_PATH_mpfr)$(HOST_LIB_PATH_mpc)$(HOST_LIB_PATH_isl)$(HOST_LIB_PATH_gettext) +HOST_LIB_PATH = $(HOST_LIB_PATH_gmp)$(HOST_LIB_PATH_mpfr)$(HOST_LIB_PATH_mpc)$(HOST_LIB_PATH_isl) # Define HOST_LIB_PATH_gcc here, for the sake of TARGET_LIB_PATH, ouch @if gcc @@ -796,11 +796,6 @@ HOST_LIB_PATH_isl = \ $$r/$(HOST_SUBDIR)/isl/.libs:$$r/$(HOST_SUBDIR)/prev-isl/.libs: @endif isl -@if gettext -HOST_LIB_PATH_gettext = \ - $$r/$(HOST_SUBDIR)/gettext/intl/.libs:$$r/$(HOST_SUBDIR)/prev-gettext/intl/.libs: -@endif gettext - CXX_FOR_TARGET_FLAG_TO_PASS = \ "CXX_FOR_TARGET=$(CXX_FOR_TARGET)" @@ -19827,7 +19822,7 @@ configure-gettext: $$s/$$module_srcdir/configure \ --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} --disable-shared --disable-java --disable-csharp --with-pic \ + --target=${target_alias} --disable-shared --disable-threads --disable-java --disable-csharp --with-pic \ || exit 1 @endif gettext @@ -19863,7 +19858,7 @@ configure-stage1-gettext: --target=${target_alias} \ \ $(STAGE1_CONFIGURE_FLAGS) \ - --disable-shared --disable-java --disable-csharp --with-pic + --disable-shared --disable-threads --disable-java --disable-csharp --with-pic @endif gettext-bootstrap .PHONY: configure-stage2-gettext maybe-configure-stage2-gettext @@ -19897,7 +19892,7 @@ configure-stage2-gettext: --target=${target_alias} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) \ - --disable-shared --disable-java --disable-csharp --with-pic + --disable-shared --disable-threads --disable-java --disable-csharp --with-pic @endif gettext-bootstrap .PHONY: configure-stage3-gettext maybe-configure-stage3-gettext @@ -19931,7 +19926,7 @@ configure-stage3-gettext: --target=${target_alias} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) \ - --disable-shared --disable-java --disable-csharp --with-pic + --disable-shared --disable-threads --disable-java --disable-csharp --with-pic @endif gettext-bootstrap .PHONY: configure-stage4-gettext maybe-configure-stage4-gettext @@ -19965,7 +19960,7 @@ configure-stage4-gettext: --target=${target_alias} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) \ - --disable-shared --disable-java --disable-csharp --with-pic + --disable-shared --disable-threads --disable-java --disable-csharp --with-pic @endif gettext-bootstrap .PHONY: configure-stageprofile-gettext maybe-configure-stageprofile-gettext @@ -19999,7 +19994,7 @@ configure-stageprofile-gettext: --target=${target_alias} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) \ - --disable-shared --disable-java --disable-csharp --with-pic + --disable-shared --disable-threads --disable-java --disable-csharp --with-pic @endif gettext-bootstrap .PHONY: configure-stagetrain-gettext maybe-configure-stagetrain-gettext @@ -20033,7 +20028,7 @@ configure-stagetrain-gettext: --target=${target_alias} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEtrain_CONFIGURE_FLAGS) \ - --disable-shared --disable-java --disable-csharp --with-pic + --disable-shared --disable-threads --disable-java --disable-csharp --with-pic @endif gettext-bootstrap .PHONY: configure-stagefeedback-gettext maybe-configure-stagefeedback-gettext @@ -20067,7 +20062,7 @@ configure-stagefeedback-gettext: --target=${target_alias} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) \ - --disable-shared --disable-java --disable-csharp --with-pic + --disable-shared --disable-threads --disable-java --disable-csharp --with-pic @endif gettext-bootstrap .PHONY: configure-stageautoprofile-gettext maybe-configure-stageautoprofile-gettext @@ -20101,7 +20096,7 @@ configure-stageautoprofile-gettext: --target=${target_alias} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEautoprofile_CONFIGURE_FLAGS) \ - --disable-shared --disable-java --disable-csharp --with-pic + --disable-shared --disable-threads --disable-java --disable-csharp --with-pic @endif gettext-bootstrap .PHONY: configure-stageautofeedback-gettext maybe-configure-stageautofeedback-gettext @@ -20135,7 +20130,7 @@ configure-stageautofeedback-gettext: --target=${target_alias} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEautofeedback_CONFIGURE_FLAGS) \ - --disable-shared --disable-java --disable-csharp --with-pic + --disable-shared --disable-threads --disable-java --disable-csharp --with-pic @endif gettext-bootstrap -- 2.42.1
> Thanks, David > > >> >> > Thanks, David >> > >> > >> > >> > On Thu, Nov 16, 2023 at 4:15 PM Arsen Arsenović <ar...@aarsen.me> wrote: >> > >> >> >> >> Arsen Arsenović <ar...@aarsen.me> writes: >> >> >> >> > [[PGP Signed Part:Good signature from 52C294301EA2C493 Arsen Arsenović >> >> (Gentoo Developer UID) <ar...@gentoo.org> (trust ultimate) created at >> >> 2023-11-16T19:47:16+0100 using EDDSA]] >> >> > >> >> > David Edelsohn <dje....@gmail.com> writes: >> >> > >> >> >> On Wed, Nov 15, 2023 at 9:22 AM Arsen Arsenović <ar...@aarsen.me> >> >> wrote: >> >> >> >> >> >>> >> >> >>> David Edelsohn <dje....@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ć
signature.asc
Description: PGP signature