#19602: Fix library dependencies
-------------------------------------+-------------------------------------
Reporter: jdemeyer | Owner:
Type: defect | Status: needs_review
Priority: major | Milestone: sage-6.10
Component: build | Resolution:
Keywords: | Merged in:
Authors: Jeroen Demeyer | Reviewers:
Report Upstream: N/A | Work issues:
Branch: | Commit:
u/jdemeyer/cython_depends | 7cd8477bdb031b87607c185c9f2c96fde277943d
Dependencies: | Stopgaps:
-------------------------------------+-------------------------------------
Changes (by jdemeyer):
* status: needs_work => needs_review
Old description:
> After upgrading MPIR, not all modules depending on MPIR are rebuilt. The
> offending modules are
> {{{
> sage/ext/interrupt/interrupt.so
> sage/symbolic/substitution_map.so
> sage/symbolic/constants_c.so
> sage/symbolic/expression.so
> sage/symbolic/getitem.so
> }}}
>
> This is because dependencies on library files (e.g. `.so` files) are not
> picked up by `distutils`. We monkeypatch Cython to add the missing
> dependencies.
>
> After applying this patch and running `sage -f sagelib`, the top of
> `src/build/cythonized/sage/ext/interrupt/interrupt.c` looks like
> {{{
> /* Generated by Cython 0.23.3 */
>
> /* BEGIN: Cython Metadata
> {
> "distutils": {
> "depends": [
> "/usr/local/src/sage-
> config/local/include/python2.7/Python.h",
> "/usr/local/src/sage-config/src/sage/ext/interrupt/debug.h",
> "/usr/local/src/sage-
> config/src/sage/ext/interrupt/implementation.c",
> "/usr/local/src/sage-config/src/sage/ext/interrupt/macros.h",
> "/usr/local/src/sage-config/src/sage/ext/interrupt/pxi.h",
> "/usr/local/src/sage-
> config/src/sage/ext/interrupt/struct_signals.h",
> "/usr/local/src/sage-config/src/setup.py",
> "setup.py",
> "/usr/local/src/sage-config/local/lib/libpari.so",
> "/usr/local/src/sage-config/local/lib/libpari.a",
> "/usr/local/src/sage-config/local/lib/libgmp.so",
> "/usr/local/src/sage-config/local/lib/libgmp.a"
> ],
> "extra_compile_args": [
> "-fno-strict-aliasing",
> "-w",
> "-fno-tree-dominator-opts"
> ],
> "include_dirs": [
> "/usr/local/src/sage-config/local/include",
> "/usr/local/src/sage-config/local/include/python2.7",
> "/usr/local/src/sage-config/local/lib/python2.7/site-
> packages/numpy/core/include",
> "/usr/local/src/sage-config/src",
> "/usr/local/src/sage-config/src/sage/ext",
> "/usr/local/src/sage-config/src/build/cythonized",
> "/usr/local/src/sage-config/src/build/cythonized/sage/ext"
> ],
> "libraries": [
> "pari",
> "gmp"
> ],
> "library_dirs": [
> "/usr/local/src/sage-config/local/lib"
> ]
> }
> }
> END: Cython Metadata */
> }}}
> Note the added dependency on `libgmp.so`.
New description:
After upgrading MPIR, not all modules depending on MPIR are rebuilt. The
offending modules are
{{{
sage/ext/interrupt/interrupt.so
sage/symbolic/substitution_map.so
sage/symbolic/constants_c.so
sage/symbolic/expression.so
sage/symbolic/getitem.so
}}}
This is because dependencies on library files (e.g. `.so` files) are not
picked up by `distutils`. We monkeypatch Cython to add the missing
dependencies.
To test this, first build Sage with this patch. Then run
{{{
$ touch local/lib/*.so
$ ./sage -b
}}}
This will rebuild 223 Cython extensions (apparently 223 extensions depend
on some library).
After applying this patch and running `sage -f sagelib`, the top of
`src/build/cythonized/sage/ext/interrupt/interrupt.c` looks like
{{{
/* Generated by Cython 0.23.3 */
/* BEGIN: Cython Metadata
{
"distutils": {
"depends": [
"/usr/local/src/sage-config/local/include/python2.7/Python.h",
"/usr/local/src/sage-config/src/sage/ext/interrupt/debug.h",
"/usr/local/src/sage-
config/src/sage/ext/interrupt/implementation.c",
"/usr/local/src/sage-config/src/sage/ext/interrupt/macros.h",
"/usr/local/src/sage-config/src/sage/ext/interrupt/pxi.h",
"/usr/local/src/sage-
config/src/sage/ext/interrupt/struct_signals.h",
"/usr/local/src/sage-config/src/setup.py",
"setup.py",
"/usr/local/src/sage-config/local/lib/libpari.so",
"/usr/local/src/sage-config/local/lib/libpari.a",
"/usr/local/src/sage-config/local/lib/libgmp.so",
"/usr/local/src/sage-config/local/lib/libgmp.a"
],
"extra_compile_args": [
"-fno-strict-aliasing",
"-w",
"-fno-tree-dominator-opts"
],
"include_dirs": [
"/usr/local/src/sage-config/local/include",
"/usr/local/src/sage-config/local/include/python2.7",
"/usr/local/src/sage-config/local/lib/python2.7/site-
packages/numpy/core/include",
"/usr/local/src/sage-config/src",
"/usr/local/src/sage-config/src/sage/ext",
"/usr/local/src/sage-config/src/build/cythonized",
"/usr/local/src/sage-config/src/build/cythonized/sage/ext"
],
"libraries": [
"pari",
"gmp"
],
"library_dirs": [
"/usr/local/src/sage-config/local/lib"
]
}
}
END: Cython Metadata */
}}}
Note the added dependency on `libgmp.so`.
--
--
Ticket URL: <http://trac.sagemath.org/ticket/19602#comment:8>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.