#18450: Define library dependencies in .pxd files
-------------------------------------+-------------------------------------
       Reporter:  jdemeyer           |        Owner:
           Type:  enhancement        |       Status:  new
       Priority:  major              |    Milestone:  sage-6.7
      Component:  cython             |   Resolution:
       Keywords:                     |    Merged in:
        Authors:  Jeroen Demeyer     |    Reviewers:
Report Upstream:  Reported           |  Work issues:
  upstream. No feedback yet.         |       Commit:
         Branch:                     |  49029fd4db2d1a2874fab1011c8683ecd7a4bb02
  u/jdemeyer/define_library_dependencies_in__pxd_files|     Stopgaps:
   Dependencies:  #18455             |
-------------------------------------+-------------------------------------
Description changed by jdemeyer:

Old description:

> Rather than defining libraries in `module_list.py` or in `.pyx` files, we
> should add them to the `.pxd` files where the declarations are.
>
> In this branch, we do this as proof-of-concept for `pari` and `gmp`.
> Other tickets can be opened later for other libraries.
>
> One annoying part is that the order of libraries is not defined, so we
> need to manually re-order them using one global library order. Since the
> order of libraries currently specified in `src/module_list.py` is far
> from a DAG, many extensions will be compiled with a different library
> order than before.
>
> To clean up, we also remove the explicit mention of `stdc++` for `c++`
> code (which is automatically added anyway).
>
> -----
>
> These are all modules where the list of libraries was actually changed:
>
> These were probably underlinked before:
> * `sage/rings/polynomial/pbori`: added `gmp`
> * `sage/rings/rational`: added `pari`
> * `sage/rings/real_arb` (optional): added `gmp`
>
> This branch ''adds'' `gmp` for all modules where bitsets are used. Some
> bitset functions require GMP, others do not. These modules were only
> using the ones not implemented using GMP:
> * `sage/combinat/debruijn_sequence`
> * `sage/combinat/words/word_char`
> * `sage/graphs/base/static_sparse_backend`
> * `sage/graphs/weakly_chordal`
>
> Modules using the Sage/PARI interface but not directly using PARI will
> now link against `pari`. Strictly speaking, this is a bug but it's hard
> to avoid:
> * `sage/rings/real_double`
>
> Unused libraries are removed:
> * `sage/combinat/partitions`: removes `gmp` and `mpfr`
> * `sage/graphs/graph_generators_pyx`: removes `gmp`
> * `sage/groups/semimonomial_transformations/semimonomial_transformation`:
> removes `gmp`
> * `sage/modular/modsym/p1list`: removes `gmp`
>
> -----
>
> We need 2 patches to upstream Cython to fix dependency handling:
> * [https://github.com/cython/cython/pull/381]
> * [https://github.com/cython/cython/pull/392]

New description:

 Rather than defining libraries in `module_list.py` or in `.pyx` files, we
 should add them to the `.pxd` files where the declarations are.

 In this branch, we do this as proof-of-concept for `pari` and `gmp`. Other
 tickets can be opened later for other libraries.

 One annoying part is that the order of libraries is not defined, so we
 need to manually re-order them using one global library order. Since the
 order of libraries currently specified in `src/module_list.py` is far from
 a DAG, many extensions will be compiled with a different library order
 than before.

 To clean up, we also remove the explicit mention of `stdc++` for `c++`
 code (which is automatically added anyway).

 -----

 These are all modules where the list of libraries was actually changed:

 These were probably underlinked before:
 * `sage/rings/polynomial/pbori`: added `gmp`
 * `sage/rings/rational`: added `pari`
 * `sage/rings/real_arb` (optional): added `gmp`

 This branch adds `gmp` for all modules where bitsets are used. Some bitset
 functions require GMP, others do not. These modules were only using the
 ones not implemented using GMP:
 * `sage/combinat/debruijn_sequence`: added `gmp`
 * `sage/combinat/words/word_char`: added `gmp`
 * `sage/graphs/base/static_sparse_backend`: added `gmp`
 * `sage/graphs/weakly_chordal`: added `gmp`

 Modules using the Sage/PARI interface but not directly using PARI will now
 link against `pari`. Strictly speaking, this is a bug but it's hard to
 avoid:
 * `sage/rings/real_double`: added `pari`

 Unused libraries are removed:
 * `sage/combinat/partitions`: removed `gmp` and `mpfr`
 * `sage/graphs/graph_generators_pyx`: removed `gmp`
 * `sage/groups/semimonomial_transformations/semimonomial_transformation`:
 removed `gmp`
 * `sage/modular/modsym/p1list`: removed `gmp`

 -----

 We need 2 patches to upstream Cython to fix dependency handling:
 * [https://github.com/cython/cython/pull/381]
 * [https://github.com/cython/cython/pull/392]

--

--
Ticket URL: <http://trac.sagemath.org/ticket/18450#comment:15>
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.

Reply via email to