On 22 Feb., 12:27, "Dr. David Kirkby" <david.kir...@onetel.net> wrote:
> This came up on the thread "mercurial on t2" but I thought I'd start a new
> thread on it.
>
> I'd propose that we include in any binary distribution gcc's C, C++ and 
> Fortran
> shared libraries. They would be placed in $SAGE_LOCAL/lib. Then we can ensure
> that people will run Sage with what libraries Sage was built with, rather than
> what versions they may or may not have lying around.
>
> The amount of bloat this would add to the binary would be very small. For
> Solaris, the compressed sizes of the files are:
>
> -rwxr-xr-x   1 drkirkby staff       1.5M Feb 22 10:10 libstdc++.so.6.0.10.gz
> -rwxr-xr-x   1 drkirkby staff       717K Feb 22 10:10 libgfortran.so.3.0.0.gz
> -rw-r--r--   1 drkirkby staff        80K Feb 22 10:10 libgcc_s.so.1.gz
>
> So adding all 3 adds 2.3 MB of extra code to the binary. But given the binary 
> is
> 500 MB (not untypical), that is less than 0.5% of bloat.
>
> By doing this, we ensure that people
>
>   * Always have the libraries.
>   * Always have the exact same versions Sage was built with.
>
> I believe the Fortran library might already be included for Linux (I have not
> checked), but I'd suggest all 3 were added to binaries.
>
> The C library is the one people most likely will have, but given it is by far
> the smallest, we might as well include it to be 100% sure.
>
> Comments?
>
> Dave

Hi Dave,

this only is reasonable, if for building Sage we do not use the (or
"a") "system's default compiler". So on GNU/Linux, or Mac OS X, this
is almost a non-issue --- it's clear what this default compiler is,
and Sage uses it.

It's far less clear on Solaris, or e.g. on Windows. If some future
Sage is built with some Microsoft Visual C++ compiler, we will have to
tell the casual user exactly which additional msvc libraries (for msvc
2008, or 2010, or ...) need to be installed on a "virgin" Windows in
order for Sage to be able to run. (These additional libraries are free
for download, but not free to distribute by others than Microsoft.)
But then, these libraries will be installed in some system location.

Back to the Solaris case --- as long as we do not have some "GCC
spkg", eventually optional, that installs the full GCC, I'm opposed to
install its compiler specific libraries under $SAGE_ROOT. Instead,
Sage should rely on them to be found in the standard system locations
--- or in the ones the user explicitly communicates to Sage via
environment variables.

Of course it would make sense to provide for Solaris some "minimal GCC
library install" specifically adapted for the need of potential Sage
users.
(Just like in the case of Microsoft not urging users to install the
full msvc, but providing some library-only package.) But IMHO, this is
outside the scope of our current model of fully relocatable yet
"open" (Sage) installs, so that would need to be offered somewhat in
parallel. (Otherwise, Sage would need to be yet far more paranoid
about taking in which dynamic libraries and how than today, see also
Robert's remark.)


Cheers,
Georg

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to