Closed embray closed 3 years ago
The failure can be seen at https://github.com/mkoeppe/sage/runs/641394565
Description changed:
---
+++
@@ -1,4 +1,19 @@
-The error occurs when linking:
+Follow-up from #30163, where libtool's fallback to static library build for `giac` caused linker errors while building sagelib.
+
+This is fixed by passing `-no-undefined` to the libtool linking flags, by setting `AM_LDFLAGS=-no-undefined`.
+
+Affected packages can be found as follows:
+
+```
+$ grep "undefined symbols not allowed" logs/pkgs/*
+cliquer-1.21.p4.log:libtool: link: warning: undefined symbols not allowed in x86_64-unknown-cygwin shared libraries
+giac-1.5.0.87p0.log:libtool: warning: undefined symbols not allowed in x86_64-pc-cygwin shared libraries; building static only
+libbraiding-1.0.p0.log:libtool: warning: undefined symbols not allowed in x86_64-unknown-cygwin shared libraries; building static only
+rw-0.7.p0.log:libtool: link: warning: undefined symbols not allowed in x86_64-unknown-cygwin shared libraries
+singular-4.1.1p2.p0.log:libtool: warning: undefined symbols not allowed in x86_64-unknown-cygwin shared libraries; building static only
+```
+
+It also affects the optional package `meataxe`.
[meataxe-1.0.p0] /usr/bin/bash ../libtool --tag=CC --mode=link gcc -g -O2 -L/opt/sagemath-9.0/local/lib -Wl,-rpath,/opt/sagemath-9.0/local/lib -o libmtx.la -rpath /opt/sagemath-9.0/local/lib args.lo berlekmp.lo bsand.lo bscore.lo bsdup.lo bsissub.lo bsmatch.lo bsminus.lo bsop.lo bsor.lo bsprint.lo bsread.lo bswrite.lo cfinfo.lo charpol.lo chbasis.lo error.lo ffio.lo fpcore.lo fpdup.lo fpmul.lo fpmul2.lo fpprint.lo gcd.lo genseed.lo grmaprow.lo grmatcore.lo grtable.lo homcomp.lo imatcore.lo imatread.lo imatwrite.lo init.lo intio.lo issub.lo isisom.lo kernel-0.lo ldiag.lo maddmul.lo mat2vec.lo matadd.lo matclean.lo matcmp.lo maketabF.lo matcopy.lo matcore.lo matcut.lo matdup.lo matech.lo matid.lo matins.lo matinv.lo matmul.lo matnull.lo matorder.lo matpivot.lo matprint.lo matpwr.lo matread.lo mattr.lo mattrace.lo matwrite.lo message.lo mfcore.lo mfread.lo mfreadlong.lo mfwrite.lo mfwritelong.lo minpol.lo mkendo.lo mmulscal.lo mraddgen.lo mrcore.lo mrread.lo mrtranspose.lo mrwrite.lo msclean.lo mscore.lo mtensor.lo mtxobj.lo os.lo permcmp.lo permcore.lo permdup.lo perminv.lo permmul.lo permorder.lo permprint.lo permpwr.lo permread.lo permwrite.lo poladd.lo polcmp.lo polcore.lo polderive.lo poldiv.lo poldup.lo polgcd.lo polmul.lo polprint.lo polread.lo polwrite.lo quotient.lo random.lo rdcfgen.lo saction.lo setcore.lo setinsert.lo settest.lo spinup.lo spinup2.lo split.lo stabpwr.lo stfcore.lo stfread.lo stfwrite.lo string.lo sumint.lo temap.lo tkinfo.lo vec2mat.lo wgen.lo window.lo zcleanrow.lo zcmprow.lo zgap.lo zpermrow.lo zzz2.lo @@ -6,3 +21,5 @@
This is a common issue especially when using libtool to link Windows DLLs and should hopefully be straightforward to fix.
+
+
Cc'ing mmarco re libbraiding
cc'ing dimpase re cliquer, also reported at https://github.com/dimpase/autocliquer/issues/4
Upstream: Reported upstream. No feedback yet.
Upstream link in build/pkgs/rw/SPKG.rst
no longer works
Cc'ing gentoo, arch people to see if new rw
upstream is known
I'm getting it from https://sourceforge.net/projects/rankwidth/, but I don't know if there's anybody reading tickets there (there are none filed so far)
Replying to @antonio-rojas:
I'm getting it from https://sourceforge.net/projects/rankwidth/, but I don't know if there's anybody reading tickets there (there are none filed so far)
Same here in Gentoo https://packages.gentoo.org/packages/sci-mathematics/rw
What's wrong with rw upstream? The program is more or less "complete," so I wouldn't expect much activity. Last time (a few years ago), we just emailed the guy to ask about contributing an autotools build system.
I created a new release for libbraiding:
https://github.com/miguelmarco/libbraiding/releases/tag/1.1
Should I also update the sage package?
IIRC, there is a new way to upload the tarball. Isn't it?
Replying to @miguelmarco:
I created a new release for libbraiding:
Thanks a lot!
Should I also update the sage package?
Yes please
IIRC, there is a new way to upload the tarball. Isn't it?
No need to upload, but please add upstream_url
as explained in https://wiki.sagemath.org/ReleaseTours/sage-9.1#For_developers-1
Description changed:
---
+++
@@ -22,4 +22,6 @@
This is a common issue especially when using libtool to link Windows DLLs and should hopefully be straightforward to fix.
+See also:
+- #30271 `nauty`: Switch to autotoolized fork so that shared libraries can be built
Author: Matthias Koeppe, Miguel Marco
Description changed:
---
+++
@@ -1,4 +1,4 @@
-Follow-up from #30163, where libtool's fallback to static library build for `giac` caused linker errors while building sagelib.
+Follow-up from #30396, where libtool's fallback to static library build for `giac` caused linker errors while building sagelib.
This is fixed by passing `-no-undefined` to the libtool linking flags, by setting `AM_LDFLAGS=-no-undefined`.
Fix for meataxe at https://github.com/simon-king-jena/SharedMeatAxe/pull/1
New commits:
b2c0b15 | build/pkgs/meataxe/distros: Add fedora.txt |
Replying to @mkoeppe:
cc'ing dimpase re cliquer, also reported at https://github.com/dimpase/autocliquer/issues/4
Description changed:
---
+++
@@ -13,7 +13,20 @@
singular-4.1.1p2.p0.log:libtool: warning: undefined symbols not allowed in x86_64-unknown-cygwin shared libraries; building static only
-It also affects the optional package meataxe
.
+In singular
, only the gitfan.la
library (module) is affected:
+
+ +Making all in gitfan +... +/usr/bin/bash ../../../libtool --tag=CXX --mode=link g++ -std=gnu++11 -O2 -g -pipe -fno-common -g0 -O3 -Wno-unused-function -Wno-trigraphs -Wno-unused-parameter -Wunknown-pragmas -Wno-unused-variable -fomit-frame-pointer -fwrapv -fvisibility=default -finline-functions -fno-exceptions -fno-threadsafe-statics -fno-enforce-eh-specs -fconserve-space -funroll-loops -fno-delete-null-pointer-checks -fno-rtti -module -export-dynamic -avoid-version -flat_namespace -weak_reference_mismatches weak -undefined dynamic_lookup -L/cygdrive/d/a/sage/sage/local/lib -Wl,-rpath,/cygdrive/d/a/sage/sage/local/lib -pipe -fno-common -g0 -O3 -Wno-unused-function -Wno-trigraphs -Wno-unused-parameter -Wunknown-pragmas -Wno-unused-variable -fomit-frame-pointer -fwrapv -fvisibility=default -finline-functions -fno-exceptions -fconserve-space -funroll-loops -fno-delete-null-pointer-checks -Wl,-Bdynamic -o gitfan.la -rpath /cygdrive/d/a/sage/sage/local/libexec/singular/MOD gitfan_la-gitfan.lo -lreadline -lncurses -lmpfr -lrt +libtool: warning: undefined symbols not allowed in x86_64-unknown-cygwin shared libraries; building static only +libtool: link: ar cru .libs/gitfan.a gitfan_la-gitfan.o +libtool: link: ranlib .libs/gitfan.a +libtool: link: ( cd ".libs" && rm -f "gitfan.la" && ln -s "../gitfan.la" "gitfan.la" ) +
+
+
+The issue also affects the optional package meataxe
.
[meataxe-1.0.p0] /usr/bin/bash ../libtool --tag=CC --mode=link gcc -g -O2 -L/opt/sagemath-9.0/local/lib -Wl,-rpath,/opt/sagemath-9.0/local/lib -o libmtx.la -rpath /opt/sagemath-9.0/local/lib args.lo berlekmp.lo bsand.lo bscore.lo bsdup.lo bsissub.lo bsmatch.lo bsminus.lo bsop.lo bsor.lo bsprint.lo bsread.lo bswrite.lo cfinfo.lo charpol.lo chbasis.lo error.lo ffio.lo fpcore.lo fpdup.lo fpmul.lo fpmul2.lo fpprint.lo gcd.lo genseed.lo grmaprow.lo grmatcore.lo grtable.lo homcomp.lo imatcore.lo imatread.lo imatwrite.lo init.lo intio.lo issub.lo isisom.lo kernel-0.lo ldiag.lo maddmul.lo mat2vec.lo matadd.lo matclean.lo matcmp.lo maketabF.lo matcopy.lo matcore.lo matcut.lo matdup.lo matech.lo matid.lo matins.lo matinv.lo matmul.lo matnull.lo matorder.lo matpivot.lo matprint.lo matpwr.lo matread.lo mattr.lo mattrace.lo matwrite.lo message.lo mfcore.lo mfread.lo mfreadlong.lo mfwrite.lo mfwritelong.lo minpol.lo mkendo.lo mmulscal.lo mraddgen.lo mrcore.lo mrread.lo mrtranspose.lo mrwrite.lo msclean.lo mscore.lo mtensor.lo mtxobj.lo os.lo permcmp.lo permcore.lo permdup.lo perminv.lo permmul.lo permorder.lo permprint.lo permpwr.lo permread.lo permwrite.lo poladd.lo polcmp.lo polcore.lo polderive.lo poldiv.lo poldup.lo polgcd.lo polmul.lo polprint.lo polread.lo polwrite.lo quotient.lo random.lo rdcfgen.lo saction.lo setcore.lo setinsert.lo settest.lo spinup.lo spinup2.lo split.lo stabpwr.lo stfcore.lo stfread.lo stfwrite.lo string.lo sumint.lo temap.lo tkinfo.lo vec2mat.lo wgen.lo window.lo zcleanrow.lo zcmprow.lo zgap.lo zpermrow.lo zzz2.lo
Looks like the singular gitfan issue may be fixed by upstream commit 2617fca625d047a0b9890e6ffae1c5f8fe755aad
Description changed:
---
+++
@@ -13,20 +13,7 @@
singular-4.1.1p2.p0.log:libtool: warning: undefined symbols not allowed in x86_64-unknown-cygwin shared libraries; building static only
singular
, only the gitfan.la
library (module) is affected: -Making all in gitfan -... -/usr/bin/bash ../../../libtool --tag=CXX --mode=link g++ -std=gnu++11 -O2 -g -pipe -fno-common -g0 -O3 -Wno-unused-function -Wno-trigraphs -Wno-unused-parameter -Wunknown-pragmas -Wno-unused-variable -fomit-frame-pointer -fwrapv -fvisibility=default -finline-functions -fno-exceptions -fno-threadsafe-statics -fno-enforce-eh-specs -fconserve-space -funroll-loops -fno-delete-null-pointer-checks -fno-rtti -module -export-dynamic -avoid-version -flat_namespace -weak_reference_mismatches weak -undefined dynamic_lookup -L/cygdrive/d/a/sage/sage/local/lib -Wl,-rpath,/cygdrive/d/a/sage/sage/local/lib -pipe -fno-common -g0 -O3 -Wno-unused-function -Wno-trigraphs -Wno-unused-parameter -Wunknown-pragmas -Wno-unused-variable -fomit-frame-pointer -fwrapv -fvisibility=default -finline-functions -fno-exceptions -fconserve-space -funroll-loops -fno-delete-null-pointer-checks -Wl,-Bdynamic -o gitfan.la -rpath /cygdrive/d/a/sage/sage/local/libexec/singular/MOD gitfan_la-gitfan.lo -lreadline -lncurses -lmpfr -lrt -libtool: warning: undefined symbols not allowed in x86_64-unknown-cygwin shared libraries; building static only -libtool: link: ar cru .libs/gitfan.a gitfan_la-gitfan.o -libtool: link: ranlib .libs/gitfan.a -libtool: link: ( cd ".libs" && rm -f "gitfan.la" && ln -s "../gitfan.la" "gitfan.la" ) -
-
-The issue also affects the optional package meataxe
.
+It also affects the optional package meataxe
.
[meataxe-1.0.p0] /usr/bin/bash ../libtool --tag=CC --mode=link gcc -g -O2 -L/opt/sagemath-9.0/local/lib -Wl,-rpath,/opt/sagemath-9.0/local/lib -o libmtx.la -rpath /opt/sagemath-9.0/local/lib args.lo berlekmp.lo bsand.lo bscore.lo bsdup.lo bsissub.lo bsmatch.lo bsminus.lo bsop.lo bsor.lo bsprint.lo bsread.lo bswrite.lo cfinfo.lo charpol.lo chbasis.lo error.lo ffio.lo fpcore.lo fpdup.lo fpmul.lo fpmul2.lo fpprint.lo gcd.lo genseed.lo grmaprow.lo grmatcore.lo grtable.lo homcomp.lo imatcore.lo imatread.lo imatwrite.lo init.lo intio.lo issub.lo isisom.lo kernel-0.lo ldiag.lo maddmul.lo mat2vec.lo matadd.lo matclean.lo matcmp.lo maketabF.lo matcopy.lo matcore.lo matcut.lo matdup.lo matech.lo matid.lo matins.lo matinv.lo matmul.lo matnull.lo matorder.lo matpivot.lo matprint.lo matpwr.lo matread.lo mattr.lo mattrace.lo matwrite.lo message.lo mfcore.lo mfread.lo mfreadlong.lo mfwrite.lo mfwritelong.lo minpol.lo mkendo.lo mmulscal.lo mraddgen.lo mrcore.lo mrread.lo mrtranspose.lo mrwrite.lo msclean.lo mscore.lo mtensor.lo mtxobj.lo os.lo permcmp.lo permcore.lo permdup.lo perminv.lo permmul.lo permorder.lo permprint.lo permpwr.lo permread.lo permwrite.lo poladd.lo polcmp.lo polcore.lo polderive.lo poldiv.lo poldup.lo polgcd.lo polmul.lo polprint.lo polread.lo polwrite.lo quotient.lo random.lo rdcfgen.lo saction.lo setcore.lo setinsert.lo settest.lo spinup.lo spinup2.lo split.lo stabpwr.lo stfcore.lo stfread.lo stfwrite.lo string.lo sumint.lo temap.lo tkinfo.lo vec2mat.lo wgen.lo window.lo zcleanrow.lo zcmprow.lo zgap.lo zpermrow.lo zzz2.lo
The -no-undefined
is only needed when building a shared library, so the flag can be appended in e.g.
libfoo_la_LDFLAGS = -no-undefined
rather than the global
AM_LDFLAGS=-no-undefined
that will affect all link operations (including executables). It probably doesn't hurt much, but I remember vaguely that --as-needed
was nicer than --no-undefined
if you were going to apply it globally.
I also think most projects should have LT_INIT([disable-static])
in configure.ac these days, to disable the static libraries by default. They can still be enabled with --enable-static
, but for most people they're a waste of time/space.
Putting back the description I clobbered...
Description changed:
---
+++
@@ -13,7 +13,19 @@
singular-4.1.1p2.p0.log:libtool: warning: undefined symbols not allowed in x86_64-unknown-cygwin shared libraries; building static only
-It also affects the optional package meataxe
.
+In singular
, only the gitfan.la
library (module) is affected:
+
+ +Making all in gitfan +... +/usr/bin/bash ../../../libtool --tag=CXX --mode=link g++ -std=gnu++11 -O2 -g -pipe -fno-common -g0 -O3 -Wno-unused-function -Wno-trigraphs -Wno-unused-parameter -Wunknown-pragmas -Wno-unused-variable -fomit-frame-pointer -fwrapv -fvisibility=default -finline-functions -fno-exceptions -fno-threadsafe-statics -fno-enforce-eh-specs -fconserve-space -funroll-loops -fno-delete-null-pointer-checks -fno-rtti -module -export-dynamic -avoid-version -flat_namespace -weak_reference_mismatches weak -undefined dynamic_lookup -L/cygdrive/d/a/sage/sage/local/lib -Wl,-rpath,/cygdrive/d/a/sage/sage/local/lib -pipe -fno-common -g0 -O3 -Wno-unused-function -Wno-trigraphs -Wno-unused-parameter -Wunknown-pragmas -Wno-unused-variable -fomit-frame-pointer -fwrapv -fvisibility=default -finline-functions -fno-exceptions -fconserve-space -funroll-loops -fno-delete-null-pointer-checks -Wl,-Bdynamic -o gitfan.la -rpath /cygdrive/d/a/sage/sage/local/libexec/singular/MOD gitfan_la-gitfan.lo -lreadline -lncurses -lmpfr -lrt +libtool: warning: undefined symbols not allowed in x86_64-unknown-cygwin shared libraries; building static only +libtool: link: ar cru .libs/gitfan.a gitfan_la-gitfan.o +libtool: link: ranlib .libs/gitfan.a +libtool: link: ( cd ".libs" && rm -f "gitfan.la" && ln -s "../gitfan.la" "gitfan.la" ) +
+
+The issue also affects the optional package meataxe
.
[meataxe-1.0.p0] /usr/bin/bash ../libtool --tag=CC --mode=link gcc -g -O2 -L/opt/sagemath-9.0/local/lib -Wl,-rpath,/opt/sagemath-9.0/local/lib -o libmtx.la -rpath /opt/sagemath-9.0/local/lib args.lo berlekmp.lo bsand.lo bscore.lo bsdup.lo bsissub.lo bsmatch.lo bsminus.lo bsop.lo bsor.lo bsprint.lo bsread.lo bswrite.lo cfinfo.lo charpol.lo chbasis.lo error.lo ffio.lo fpcore.lo fpdup.lo fpmul.lo fpmul2.lo fpprint.lo gcd.lo genseed.lo grmaprow.lo grmatcore.lo grtable.lo homcomp.lo imatcore.lo imatread.lo imatwrite.lo init.lo intio.lo issub.lo isisom.lo kernel-0.lo ldiag.lo maddmul.lo mat2vec.lo matadd.lo matclean.lo matcmp.lo maketabF.lo matcopy.lo matcore.lo matcut.lo matdup.lo matech.lo matid.lo matins.lo matinv.lo matmul.lo matnull.lo matorder.lo matpivot.lo matprint.lo matpwr.lo matread.lo mattr.lo mattrace.lo matwrite.lo message.lo mfcore.lo mfread.lo mfreadlong.lo mfwrite.lo mfwritelong.lo minpol.lo mkendo.lo mmulscal.lo mraddgen.lo mrcore.lo mrread.lo mrtranspose.lo mrwrite.lo msclean.lo mscore.lo mtensor.lo mtxobj.lo os.lo permcmp.lo permcore.lo permdup.lo perminv.lo permmul.lo permorder.lo permprint.lo permpwr.lo permread.lo permwrite.lo poladd.lo polcmp.lo polcore.lo polderive.lo poldiv.lo poldup.lo polgcd.lo polmul.lo polprint.lo polread.lo polwrite.lo quotient.lo random.lo rdcfgen.lo saction.lo setcore.lo setinsert.lo settest.lo spinup.lo spinup2.lo split.lo stabpwr.lo stfcore.lo stfread.lo stfwrite.lo string.lo sumint.lo temap.lo tkinfo.lo vec2mat.lo wgen.lo window.lo zcleanrow.lo zcmprow.lo zgap.lo zpermrow.lo zzz2.lo
Replying to @orlitzky:
The
-no-undefined
is only needed when building a shared library, so the flag can be appended in e.g.libfoo_la_LDFLAGS = -no-undefined
rather than the global
AM_LDFLAGS=-no-undefined
that will affect all link operations
I agree, that would be a little bit cleaner. But I don't think it's worth going back for this
Replying to @orlitzky:
I also think most projects should have
LT_INIT([disable-static])
in configure.ac these days, to disable the static libraries by default. They can still be enabled with--enable-static
, but for most people they're a waste of time/space.
I agree, but I want to keep the upstream patches minimal. We have #28890 for the task of sending --disable-static
to all our packages
Replying to @mkoeppe:
cc'ing dimpase re cliquer, also reported at https://github.com/dimpase/autocliquer/issues/4
OK, done and dusted, thanks for the PR, see https://github.com/dimpase/autocliquer/releases/download/v1.22/cliquer-1.22.tar.gz
Branch pushed to git repo; I updated commit sha1. New commits:
1e94f7a | build/pkgs/cliquer: Update to 1.22 |
could you also add
--- a/build/pkgs/cliquer/SPKG.rst
+++ b/build/pkgs/cliquer/SPKG.rst
@@ -5,8 +5,8 @@ Description
-----------
Cliquer is a set of C routines for finding cliques in an arbitrary
-weighted graph. It uses an exact branch-and-bound algorithm recently
-developed by Patr Ostergard.
+weighted graph. It uses an exact branch-and-bound algorithm
+developed by Patric Östergård.
License
-------
@@ -28,4 +28,5 @@ Dependencies
Patches
-------
-- autotoolized - see https://github.com/dimpase/autocliquer
+- minor config updates (v1.22)
+- autotoolized - see https://github.com/dimpase/autocliquer (v1.21)
Branch pushed to git repo; I updated commit sha1. New commits:
f2632eb | build/pkgs/cliquer/SPKG.rst: Update |
Branch pushed to git repo; I updated commit sha1. New commits:
9c1ee37 | build/pkgs/rw: Update to 0.9 |
Branch pushed to git repo; I updated commit sha1. New commits:
e662986 | Merge tag '9.2.beta14' into t/29152/cygwin__make_sure_all_packages_build_shared_libraries__using__am_ldflags__no_undefined_ |
I am about to release a new minor version of SharedMeatAxe based on Matthias' suggestions, and my plan was to upgrade it in Sage now. But since it is "needs review" already: Did Matthias did the meataxe upgrade in Sage already?
Work Issues: Upgrade shared_meataxe to v1.0.1
Aparently the upgrade of meataxe hasn't been done yet. So, it should be "needs work".
Changed work issues from Upgrade shared_meataxe to v1.0.1 to none
Follow-up from #30396, where libtool's fallback to static library build for
giac
caused linker errors while building sagelib.This is fixed by passing
-no-undefined
to the libtool linking flags, by settingAM_LDFLAGS=-no-undefined
.Affected packages can be found as follows:
In
singular
, only thegitfan.la
library (module) is affected:The issue also affects the optional package
meataxe
.This is a common issue especially when using libtool to link Windows DLLs and should hopefully be straightforward to fix.
See also:
30271
nauty
: Switch to autotoolized fork so that shared libraries can be builtDepends on #31064
Upstream: Reported upstream. No feedback yet.
CC: @simon-king-jena @miguelmarco @dimpase @orlitzky @antonio-rojas @kiwifb @slel @jhpalmieri @vbraun
Component: porting: Cygwin
Author: Matthias Koeppe, Miguel Marco, Simon King
Branch/Commit:
6b6ee5c
Reviewer: Matthias Koeppe, Dima Pasechnik
Issue created by migration from https://trac.sagemath.org/ticket/29152