#19610: Fix dependencies on PARI
-------------------------------------+-------------------------------------
       Reporter:  jdemeyer           |        Owner:
           Type:  defect             |       Status:  needs_review
       Priority:  major              |    Milestone:  sage-6.10
      Component:  cython             |   Resolution:
       Keywords:                     |    Merged in:
        Authors:  Jeroen Demeyer     |    Reviewers:
Report Upstream:  N/A                |  Work issues:
         Branch:                     |       Commit:
  u/jdemeyer/fix_dependencies_on_pari|  5d0e4d30588ab0f13bfc0770d2b4b407d7580035
   Dependencies:                     |     Stopgaps:
-------------------------------------+-------------------------------------

Comment (by leif):

 Replying to [comment:16 jdemeyer]:
 > If we decide to stop "overlinking", that would be a major change in how
 we build Sage.

 No.  We've cleaned up `module_list.py` a couple of times in the past with
 respect to this.

 Note that it's (only) ''the common case'' that you don't have to specify
 libraries used by the libraries you use.  (In particular, building the
 whole Sage library with the linker option `--as-needed` doesn't work, but
 would work for most modules.)

 The main exceptions are:

  * A library is ''intentionally'' "underlinked", e.g. to allow the user to
 choose from different (binary-compatible) alternatives at the final link
 stage or even at run-time, or the user/application has to provide some
 symbols the library uses (e.g. memory management functions, error handlers
 etc.).

  * The interface of the library (i.e., the header) exposes symbols of a
 library it uses, such that your code at least ''may'' contain references
 to the otherwise only indirectly used library.  This is in principle the
 same as if you would explicitly use the other library directly as well,
 but not always as obvious, and may (or usually does) depend on your code,
 not necessarily just the header(s) you include.  (Stupid example:  PARI
 could have a function `pari_foo(x)` implemented as a macro or inline
 function which expands to `gmp_bar(x)` or of course more complicated code
 containing calls of GMP functions.  Then you'd have to explicitly link
 with GMP ''if your code actually uses that macro or inline function''.
 But it's also a poor example, in that for especially PARI/GMP, this is
 ''not'' the case -- AFAIK.  A better example is probably MPC/MPFR, but you
 hardly ever use MPC without also ''explicitly'' using MPFR.)

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