Ping on go part.
On Tue, Dec 16, 2025 at 09:50:19AM +0100, Stefan Schulze Frielinghaus wrote: > Ping on go part. > > On Wed, Dec 03, 2025 at 03:03:56PM +0100, Stefan Schulze Frielinghaus wrote: > > From: Stefan Schulze Frielinghaus <[email protected]> > > > > While experimenting with a new warning, I was running into build errors > > for libphobos as e.g. > > > > libtool: compile: mv -f "atomic.o" "core/.libs/atomic.o" > > mv: cannot stat 'atomic.o': No such file or directory > > > > or when building libgo like > > > > libtool: compile: mv -f "tables.o" ".libs/unicode.o" > > mv: cannot stat 'tables.o': No such file or directory > > > > These boil down to the fact that test _LT_COMPILER_C_O evaluates to "no" > > for those, i.e., we have > > > > lt_cv_prog_compiler_c_o=yes > > lt_cv_prog_compiler_c_o_D=no > > > > likewise > > > > lt_cv_prog_compiler_c_o=yes > > lt_cv_prog_compiler_c_o_GO=no > > > > and at the same time _LT_ENABLE_LOCK/need_locks evaluates to "no" which > > breaks parallel builds due to races on those files. Although I think > > for a parallel build need_locks should be rather set to "yes" in case > > _LT_COMPILER_C_O evaluates to "no", this patch enables a parallel build > > without the need of locks. > > > > _LT_COMPILER_C_O evaluates to "no" in the first place because > > boilerplate is computed with a different CC when it is compared to. > > When boilerplate is computed, CC equals xgcc which means we emit > > warnings of the form > > > > xgcc: warning: ... > > d21: warning: ... > > > > whereas when we compute _LT_COMPILER_C_O, CC is changed shortly before > > to gdc so we end up with warnings of the form > > > > gdc: warning: ... > > d21: warning: ... > > > > which ultimately means the check whether the warning is expected fails > > and we do not set _LT_COMPILER_C_O to "yes". > > > > Fixed by moving the computation of boilerplate after setting CC to > > gdc/gccgo. > > > > PR d/122794 > > > > ChangeLog: > > > > * libgo/config/libtool.m4: Move _LT_COMPILER_BOILERPLATE and > > _LT_LINKER_BOILERPLATE after setting CC. > > * libgo/configure: Regenerate. > > > > libphobos/ChangeLog: > > > > * configure: Regenerate. > > * m4/libtool.m4: Move _LT_COMPILER_BOILERPLATE and > > _LT_LINKER_BOILERPLATE after setting CC. > > --- > > Note, for the sake of completeness in libgo/config/libtool.m4 I have moved > > the boilerplate computation not only for _LT_LANG_GO_CONFIG but also for > > _LT_LANG_{CXX,F77,FC,GCJ,RC}_CONFIG. > > > > Successfully bootstrapped and regtested on x86_64. Ok for mainline? > > > > libgo/config/libtool.m4 | 49 +++++++++++++++++++++-------------------- > > libgo/configure | 28 +++++++++++------------ > > libphobos/configure | 28 +++++++++++------------ > > libphobos/m4/libtool.m4 | 8 +++---- > > 4 files changed, 57 insertions(+), 56 deletions(-) > > > > diff --git a/libgo/config/libtool.m4 b/libgo/config/libtool.m4 > > index 4ca90ee71bc..4d27d86b63b 100644 > > --- a/libgo/config/libtool.m4 > > +++ b/libgo/config/libtool.m4 > > @@ -5476,10 +5476,6 @@ if test "$_lt_caught_CXX_error" != yes; then > > # ltmain only uses $CC for tagged configurations so make sure $CC is set. > > _LT_TAG_COMPILER > > > > - # save warnings/boilerplate of simple test code > > - _LT_COMPILER_BOILERPLATE > > - _LT_LINKER_BOILERPLATE > > - > > # Allow CC to be a program name with arguments. > > lt_save_CC=$CC > > lt_save_LD=$LD > > @@ -5503,6 +5499,10 @@ if test "$_lt_caught_CXX_error" != yes; then > > _LT_TAGVAR(compiler, $1)=$CC > > _LT_CC_BASENAME([$compiler]) > > > > + # save warnings/boilerplate of simple test code > > + _LT_COMPILER_BOILERPLATE > > + _LT_LINKER_BOILERPLATE > > + > > if test -n "$compiler"; then > > # We don't want -fno-exception when compiling C++ code, so set the > > # no_builtin_flag separately > > @@ -6727,10 +6727,6 @@ if test "$_lt_disable_F77" != yes; then > > # ltmain only uses $CC for tagged configurations so make sure $CC is set. > > _LT_TAG_COMPILER > > > > - # save warnings/boilerplate of simple test code > > - _LT_COMPILER_BOILERPLATE > > - _LT_LINKER_BOILERPLATE > > - > > # Allow CC to be a program name with arguments. > > lt_save_CC="$CC" > > lt_save_GCC=$GCC > > @@ -6739,6 +6735,11 @@ if test "$_lt_disable_F77" != yes; then > > _LT_TAGVAR(compiler, $1)=$CC > > _LT_CC_BASENAME([$compiler]) > > GCC=$G77 > > + > > + # save warnings/boilerplate of simple test code > > + _LT_COMPILER_BOILERPLATE > > + _LT_LINKER_BOILERPLATE > > + > > if test -n "$compiler"; then > > AC_MSG_CHECKING([if libtool supports shared libraries]) > > AC_MSG_RESULT([$can_build_shared]) > > @@ -6857,10 +6858,6 @@ if test "$_lt_disable_FC" != yes; then > > # ltmain only uses $CC for tagged configurations so make sure $CC is set. > > _LT_TAG_COMPILER > > > > - # save warnings/boilerplate of simple test code > > - _LT_COMPILER_BOILERPLATE > > - _LT_LINKER_BOILERPLATE > > - > > # Allow CC to be a program name with arguments. > > lt_save_CC="$CC" > > lt_save_GCC=$GCC > > @@ -6868,6 +6865,10 @@ if test "$_lt_disable_FC" != yes; then > > compiler=$CC > > GCC=$ac_cv_fc_compiler_gnu > > > > + # save warnings/boilerplate of simple test code > > + _LT_COMPILER_BOILERPLATE > > + _LT_LINKER_BOILERPLATE > > + > > _LT_TAGVAR(compiler, $1)=$CC > > _LT_CC_BASENAME([$compiler]) > > > > @@ -6952,10 +6953,6 @@ lt_simple_link_test_code='public class conftest { > > public static void main(String > > # ltmain only uses $CC for tagged configurations so make sure $CC is set. > > _LT_TAG_COMPILER > > > > -# save warnings/boilerplate of simple test code > > -_LT_COMPILER_BOILERPLATE > > -_LT_LINKER_BOILERPLATE > > - > > # Allow CC to be a program name with arguments. > > lt_save_CC="$CC" > > lt_save_GCC=$GCC > > @@ -6973,6 +6970,10 @@ _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds > > _LT_TAGVAR(reload_flag, $1)=$reload_flag > > _LT_TAGVAR(reload_cmds, $1)=$reload_cmds > > > > +# save warnings/boilerplate of simple test code > > +_LT_COMPILER_BOILERPLATE > > +_LT_LINKER_BOILERPLATE > > + > > ## CAVEAT EMPTOR: > > ## There is no encapsulation within the following macros, do not change > > ## the running order or otherwise move them around unless you know exactly > > @@ -7019,10 +7020,6 @@ lt_simple_link_test_code='package main; func main() > > { }' > > # ltmain only uses $CC for tagged configurations so make sure $CC is set. > > _LT_TAG_COMPILER > > > > -# save warnings/boilerplate of simple test code > > -_LT_COMPILER_BOILERPLATE > > -_LT_LINKER_BOILERPLATE > > - > > # Allow CC to be a program name with arguments. > > lt_save_CC="$CC" > > lt_save_GCC="$GCC" > > @@ -7033,6 +7030,10 @@ _LT_TAGVAR(compiler, $1)=$CC > > _LT_TAGVAR(LD, $1)="$LD" > > _LT_CC_BASENAME([$compiler]) > > > > +# save warnings/boilerplate of simple test code > > +_LT_COMPILER_BOILERPLATE > > +_LT_LINKER_BOILERPLATE > > + > > # Go did not exist at the time GCC didn't implicitly link libc in. > > _LT_TAGVAR(archive_cmds_need_lc, $1)=no > > > > @@ -7085,10 +7086,6 @@ > > lt_simple_link_test_code="$lt_simple_compile_test_code" > > # ltmain only uses $CC for tagged configurations so make sure $CC is set. > > _LT_TAG_COMPILER > > > > -# save warnings/boilerplate of simple test code > > -_LT_COMPILER_BOILERPLATE > > -_LT_LINKER_BOILERPLATE > > - > > # Allow CC to be a program name with arguments. > > lt_save_CC="$CC" > > lt_save_GCC=$GCC > > @@ -7099,6 +7096,10 @@ _LT_TAGVAR(compiler, $1)=$CC > > _LT_CC_BASENAME([$compiler]) > > _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes > > > > +# save warnings/boilerplate of simple test code > > +_LT_COMPILER_BOILERPLATE > > +_LT_LINKER_BOILERPLATE > > + > > if test -n "$compiler"; then > > : > > _LT_CONFIG($1) > > diff --git a/libgo/configure b/libgo/configure > > index b1a2228fa1b..79b2f8d5cae 100755 > > --- a/libgo/configure > > +++ b/libgo/configure > > @@ -11912,20 +11912,6 @@ LTCFLAGS=${LTCFLAGS-"$CFLAGS"} > > compiler=$CC > > > > > > -# save warnings/boilerplate of simple test code > > -ac_outfile=conftest.$ac_objext > > -echo "$lt_simple_compile_test_code" >conftest.$ac_ext > > -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err > > -_lt_compiler_boilerplate=`cat conftest.err` > > -$RM conftest* > > - > > -ac_outfile=conftest.$ac_objext > > -echo "$lt_simple_link_test_code" >conftest.$ac_ext > > -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err > > -_lt_linker_boilerplate=`cat conftest.err` > > -$RM -r conftest* > > - > > - > > # Allow CC to be a program name with arguments. > > lt_save_CC="$CC" > > lt_save_GCC="$GCC" > > @@ -11945,6 +11931,20 @@ done > > cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` > > > > > > +# save warnings/boilerplate of simple test code > > +ac_outfile=conftest.$ac_objext > > +echo "$lt_simple_compile_test_code" >conftest.$ac_ext > > +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err > > +_lt_compiler_boilerplate=`cat conftest.err` > > +$RM conftest* > > + > > +ac_outfile=conftest.$ac_objext > > +echo "$lt_simple_link_test_code" >conftest.$ac_ext > > +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err > > +_lt_linker_boilerplate=`cat conftest.err` > > +$RM -r conftest* > > + > > + > > # Go did not exist at the time GCC didn't implicitly link libc in. > > archive_cmds_need_lc_GO=no > > > > diff --git a/libphobos/configure b/libphobos/configure > > index 1b540662073..b533f1c6947 100755 > > --- a/libphobos/configure > > +++ b/libphobos/configure > > @@ -12624,20 +12624,6 @@ LTCFLAGS=${LTCFLAGS-"$CFLAGS"} > > compiler=$CC > > > > > > -# save warnings/boilerplate of simple test code > > -ac_outfile=conftest.$ac_objext > > -echo "$lt_simple_compile_test_code" >conftest.$ac_ext > > -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err > > -_lt_compiler_boilerplate=`cat conftest.err` > > -$RM conftest* > > - > > -ac_outfile=conftest.$ac_objext > > -echo "$lt_simple_link_test_code" >conftest.$ac_ext > > -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err > > -_lt_linker_boilerplate=`cat conftest.err` > > -$RM -r conftest* > > - > > - > > # Allow CC to be a program name with arguments. > > lt_save_CC=$CC > > lt_save_CFLAGS=$CFLAGS > > @@ -12659,6 +12645,20 @@ done > > cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` > > > > > > +# save warnings/boilerplate of simple test code > > +ac_outfile=conftest.$ac_objext > > +echo "$lt_simple_compile_test_code" >conftest.$ac_ext > > +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err > > +_lt_compiler_boilerplate=`cat conftest.err` > > +$RM conftest* > > + > > +ac_outfile=conftest.$ac_objext > > +echo "$lt_simple_link_test_code" >conftest.$ac_ext > > +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err > > +_lt_linker_boilerplate=`cat conftest.err` > > +$RM -r conftest* > > + > > + > > # GDC did not exist at the time GCC didn't implicitly link libc in. > > archive_cmds_need_lc_D=no > > > > diff --git a/libphobos/m4/libtool.m4 b/libphobos/m4/libtool.m4 > > index 0263a530cf0..6d7a6f95863 100644 > > --- a/libphobos/m4/libtool.m4 > > +++ b/libphobos/m4/libtool.m4 > > @@ -34,10 +34,6 @@ lt_simple_link_test_code="\ > > # ltmain only uses $CC for tagged configurations so make sure $CC is set. > > _LT_TAG_COMPILER > > > > -# save warnings/boilerplate of simple test code > > -_LT_COMPILER_BOILERPLATE > > -_LT_LINKER_BOILERPLATE > > - > > # Allow CC to be a program name with arguments. > > lt_save_CC=$CC > > lt_save_CFLAGS=$CFLAGS > > @@ -50,6 +46,10 @@ _LT_TAGVAR(compiler, $1)=$CC > > _LT_TAGVAR(LD, $1)=$CC > > _LT_CC_BASENAME([$compiler]) > > > > +# save warnings/boilerplate of simple test code > > +_LT_COMPILER_BOILERPLATE > > +_LT_LINKER_BOILERPLATE > > + > > # GDC did not exist at the time GCC didn't implicitly link libc in. > > _LT_TAGVAR(archive_cmds_need_lc, $1)=no > > > > -- > > 2.49.0 > >
