FS#64807 - [polymake] PLEASE ENTER SUMMARY

Attached to Project: Community Packages
Opened by Benjamin Lorenz (benlorenz) - Wednesday, 11 December 2019, 11:57 GMT
Last edited by Antonio Rojas (arojas) - Wednesday, 11 December 2019, 13:41 GMT
Task Type Bug Report
Category Packages
Status Closed
Assigned To Antonio Rojas (arojas)
Architecture All
Severity Medium
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:
polymake needs to be rebuilt against the latest normaliz version (3.8.3) since the abi changed between 3.8.1 and 3.8.2 and polymake now fails to start with a missing symbol error.

Additional info:
Name : polymake
Version : 3.6-1

Steps to reproduce:
1) install polymake
2) run polymake
$ polymake
Welcome to polymake version 3.6
Copyright (c) 1997-2019
Ewgenij Gawrilow, Michael Joswig, and the polymake team
Technische Universität Berlin, Germany
https://polymake.org

This is free software licensed under GPL; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Loading applications now...polymake: ERROR: "/usr/share/polymake/perllib/Polymake/Core/CPlusPlus.pm", line 1811: Can't load shared module /usr/lib/polymake/lib/polytope.so: undefined symbol: libnormaliz::Cone<__gmp_expr<__mpz_struct [1], __mpz_struct [1]> >::Cone(std::map<libnormaliz::Type::InputType, std::vector<std::vector<__gmp_expr<__mpz_struct [1], __mpz_struct [1]>, std::allocator<__gmp_expr<__mpz_struct [1], __mpz_struct [1]> > >, std::allocator<std::vector<__gmp_expr<__mpz_struct [1], __mpz_struct [1]>, std::allocator<__gmp_expr<__mpz_struct [1], __mpz_struct [1]> > > > >, std::less<libnormaliz::Type::InputType>, std::allocator<std::pair<libnormaliz::Type::InputType const, std::vector<std::vector<__gmp_expr<__mpz_struct [1], __mpz_struct [1]>, std::allocator<__gmp_expr<__mpz_struct [1], __mpz_struct [1]> > >, std::allocator<std::vector<__gmp_expr<__mpz_struct [1], __mpz_struct [1]>, std::allocator<__gmp_expr<__mpz_struct [1], __mpz_struct [1]> > > > > > > > const&)


polymake builds and tests without any errors with normaliz 3.8.3.

The reason is that a few constructors were changed from fixed types to templates and thus the symbols are not in the library anymore but will be instantiated during the polymake build:
https://github.com/Normaliz/Normaliz/commit/1dc1942422cbef47c7f5c67f1fa225da74baa06d#diff-34f056e434d911e381fec1aebb1c9e0e
This task depends upon

Closed by  Antonio Rojas (arojas)
Wednesday, 11 December 2019, 13:41 GMT
Reason for closing:  Fixed
Additional comments about closing:  polymake 3.6-2
Comment by Benjamin Lorenz (benlorenz) - Wednesday, 11 December 2019, 11:59 GMT
sorry for the missing summary. Is there a way to edit this?
Comment by Antonio Rojas (arojas) - Wednesday, 11 December 2019, 12:18 GMT
Did you actually build with normaliz support? Because 3.8.3 is not detected and the module is disabled.
Comment by Benjamin Lorenz (benlorenz) - Wednesday, 11 December 2019, 13:08 GMT
So far I tried it only with a manual installation of normaliz 3.8.3 in a custom path which produces:
> bundled extension libnormaliz ... ok (3.8.3 @ /home/lorenz/software/prefixes/normaliz-3.8.3)

My custom normaliz build was without e-antic support.

The configure ('./configure --with-libnormaliz=/usr') check with the package fails with the following in build/bundled.log:
> /tmp/ccUg8Knh.o:polymake_20688_configure.cc:function renf_elem_class::~renf_elem_class(): error: undefined reference to 'renf_elem_clear'

and this is coming from the e-antic / number-field stuff from normaliz.

A workaround would be to add 'LIBS=-leantic' to the configure command for polymake (or add this in a few places in bundled/libnormaliz/support/configure.pl).
I will think about how to do this properly as we need to support both variants and there is no pkg-config or similar for normaliz.

Loading...