Opened 10 years ago
Closed 10 years ago
#14737 closed defect (fixed)
Fragile GMP header hack in Singular and track all files
Reported by: | leif | Owned by: | leif |
---|---|---|---|
Priority: | critical | Milestone: | sage-5.12 |
Component: | packages: standard | Keywords: | git cf_gmp.h bits/c++config.h spkg factory build error Arch Linux Slackware |
Cc: | mmezzarobba | Merged in: | sage-5.12.beta0 |
Authors: | Leif Leonhardy, Volker Braun | Reviewers: | Volker Braun, Jean-Pierre Flori |
Report Upstream: | Not yet reported upstream; Will do shortly. | Work issues: | |
Branch: | Commit: | ||
Dependencies: | Stopgaps: |
Description (last modified by )
One (variant of possible) symptom(s):
In file included from ../kernel/si_gmp.h:4:0, from ../kernel/structs.h:15, from weight0.c:13: ../factory/cf_gmp.h:2501:28: fatal error: bits/c++config.h: No such file or directory #include <bits/c++config.h> ^ compilation terminated. make[4]: *** [weight0.o] Error 1
This is still present in Singular 3-1-6.
The file factory/cf_gmp.h
is supposed to contain a copy of the otherwise used gmp.h
found on the system, with some C++ definitions removed, later on to be used both by Singular C and C++ files (i.e., those include cf_gmp.h
instead of gmp.h
).
The actual problem is getting the location (i.e., the absolute path) of the header file used by the C/C++ compiler / preprocessor, in order to create a modified copy of it.
The latter is achieved by using GCC's -M
switch to output Makefile
dependencies (also taking into account include directory search paths eventually specified by the user, probably via --with-gmp=...
), but isn't robust w.r.t. the formatting of the generated rules.
In particular, undesired additional header files (which usually include others) may end up in cf_gmp.h
, leading to (potentially arbitrary) problems at least when C files include it, as the folders searched for C headers usually differ from those used when compiling / preprocessing C++. (This is the case in the rather obscure error above, where bits/c++config.h
isn't found.)
The current patch to the Singular spkg both simplifies the generation of cf_gmp.h
(no longer needing gen_cf_gmp.template
and [to ship] gen_cf_gmp.cc
, nor the generation of a temporary shell script, gen_cf_gmp.sh
), and of course makes it more robust, also making sure only the contents of gmp.h
ends up in its modified copy.
fixed spkg: http://boxen.math.washington.edu/home/vbraun/spkg/singular-3-1-5.p8.spkg
Attachments (1)
Change History (19)
comment:1 Changed 10 years ago by
Keywords: | factory build error added |
---|
comment:2 Changed 10 years ago by
Description: | modified (diff) |
---|
comment:3 Changed 10 years ago by
Description: | modified (diff) |
---|---|
Owner: | changed from jdemeyer to leif |
comment:4 Changed 10 years ago by
For the impatient:
An initial fixed spkg can be found here. (Currently just adds a patch to src/factory/GNUmakefile.in
, also simplifying the header generation a bit.)
comment:5 Changed 10 years ago by
Cc: | mmezzarobba added |
---|
comment:6 Changed 10 years ago by
Keywords: | Arch Linux Slackware added |
---|
comment:7 Changed 10 years ago by
Description: | modified (diff) |
---|
comment:8 follow-up: 9 Changed 10 years ago by
I used the patch to build sage 5.11β3 on a system that used to be affected by this bug (debian sid, gcc 4.8). It works for me.
comment:9 Changed 10 years ago by
Replying to mmezzarobba:
I used the patch to build sage 5.11β3 on a system that used to be affected by this bug (debian sid, gcc 4.8). It works for me.
Someone else just reported the same error for Debian testing... :-)
comment:10 Changed 10 years ago by
Description: | modified (diff) |
---|
Slightly changed the spkg; patch now removes unneeded files as well.
Changed 10 years ago by
Attachment: | sanitize_gmp_header_hack.patch added |
---|
Proposed patch to upstream (included in the .p8
spkg). For reference / review.
comment:11 Changed 10 years ago by
Priority: | major → critical |
---|
comment:12 Changed 10 years ago by
This spkg fixed the problem for me too ! And I also run debian sid. Thank you very much ! ;-)
Nathann
comment:13 Changed 10 years ago by
Leif, are you still working on the patch or is this ready for review?
comment:14 Changed 10 years ago by
Description: | modified (diff) |
---|---|
Summary: | Fragile GMP header hack in Singular → Fragile GMP header hack in Singular and track all files |
comment:15 Changed 10 years ago by
Authors: | → Leif Leonhardy, Volker Braun |
---|---|
Keywords: | git added |
Reviewers: | → Volker Braun |
Status: | new → needs_review |
The GMP header patch looks good to me (positive review)
Somebody needs to review the sage-src script and then we are ready.
comment:16 Changed 10 years ago by
Reviewers: | Volker Braun → Volker Braun, Jean-Pierre Flori |
---|---|
Status: | needs_review → positive_review |
I'm ok with spkg-src.
comment:17 Changed 10 years ago by
Milestone: | sage-5.11 → sage-5.12 |
---|
comment:18 Changed 10 years ago by
Merged in: | → sage-5.12.beta0 |
---|---|
Resolution: | → fixed |
Status: | positive_review → closed |
(More to come...)