For CoCalc, where we have a bunch of different specific versions of
Sage pre-installed that all stay stable over *years*, we run a 1-2
pages long "./configure ..." command before I even do "make". At the
top it starts with

--with-system-python3=no \
--with-system-r=no \
--with-system-primecount=no \
--with-system-primesieve=no \
--with-system-qhull=no \
--with-system-cmake=no  \
...
… so,that's why R, Python interpreter, and other stuff is independent. …

We should definitely check if there is more I could make independent.
I mean, technically it's not independent, because some underlying libs
are shared, but there are certainly less surprises and the dependency
graph is not a wide blinking christmas tree.  What we are not doing is
sharing Sage across linux editions. i.e. 20.04 will have a couple of
Sage installs and with 22.04 there will be a new 9.6 one. But that's
not the issue in the thread.

Could there be a single option to the Sage build system such as:
"--without-system" that disables all system libraries, and hence
behaves exactly like Sage used to?  Is there already such an option
that I don't know about?

William

On Mon, Jul 25, 2022 at 12:44 PM Nils Bruin <nbr...@sfu.ca> wrote:
>
> On Thursday, 21 July 2022 at 11:52:42 UTC-7 Nils Bruin wrote:
>>
>> On Thursday, 21 July 2022 at 11:31:35 UTC-7 Matthias Koeppe wrote:
>>>
>>>
>>> You really just need to stop your distribution from automatically 
>>> uninstalling the old shared library packages when you do upgrades. Both the 
>>> old version (needed for your from-source installation of Sage) and the new 
>>> version (needed as dependencies of upgraded system packages) can coexist in 
>>> your system.
>>>
>>
>> Right .. but that would require telling the system which libraries need to 
>> be preserved ... I guess one could collect the dependencies by a liberal ldd 
>> application, but then one would need to query the package manager which 
>> packages provide the requisite library files and then somehow register those 
>> packages *are* dependencies ... I guess that could be done by building a 
>> placeholder package (rpm or deb) that declares all the specific 
>> dependencies. And to "declare" these, one could install that package. Upon a 
>> reconfigure+rebuild, one could uninstall the old placeholder, recompute the 
>> new dependencies, and install a new placeholder ...
>
>
> Ouch ... and it looks like this wouldn't even work: if I try
>
> dnf whatprovides /usr/lib64/libflint.so.17
>
> I get:
>
> flint-2.9.0-1.fc36.x86_64
>
> and similarly
>
> dnf whatprovides /usr.lib64/libflint.so.16
> flint-2.8.4-2.fc36.x86_64
>
> Hence, if a compiled-from-source sagemath were to declare its dependencies to 
> the package manager it would have to do so by depending on a *specific 
> version* of flint, and hence "updating" flint should lead to a dependency 
> conflict. As long as fedora doesn't allow two different version of flint to 
> be installed at the same time (and the fact that flint-2.9 "upgrades" 
> flint-2.8 suggests that it won't), we'd need a version lock: just keeping an 
> unmanaged so-file hang around in space that's supposed to be managed by a 
> package manager would lead to a rather messy system state.
>
> So, based on that, I think build-from-source using these kinds of system 
> resources should actually *not* be a recommended install method: 
> build-from-source should have its less stable prerequisites satisfied by some 
> separate environment -- possibly/likely conda. Resources/libraries such as 
> libflint are clearly *only* managed and provided by the OS in a way that is 
> appropriate for other OS-managed/packaged software. Turns out there's still a 
> niche for sage-the-distribution; possibly replaced by 
> sage-in-conda-the-distribution. Can we get sage-on-conda modified so that it 
> works nicely with git-trac, so that a sage-conda container can be used for 
> development? I would be very interested in a guide to that.
>
>
> --
> You received this message because you are subscribed to the Google Groups 
> "sage-devel" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sage-devel+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sage-devel/6aea8da4-bd04-4eda-914a-c04a6fcbb4e6n%40googlegroups.com.



-- 
William (http://wstein.org)

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/CACLE5GDv4ntTNay8j9UgOPrAyn_PpExNy4FPRyHt_bKc1RFFcA%40mail.gmail.com.

Reply via email to