https://github.com/sagemath/sage/pull/36489 now implements a basic meson 
setup that replaces autoconf for sage library. Given the complexities 
mentioned above, I've restricted attention to when all the dependencies are 
provided via conda, which reduced the problem to something manageable. 
Thus, with this the build looks as follows: use conda to setup all 
dependencies, use meson to get a few config settings needed, then use 
setuptools to install sage library. Of course, the last step you ideally 
also want to replace with meson. Would love to collaborate on this. 
On Wednesday, May 3, 2023 at 3:28:12 AM UTC+8 Michael Orlitzky wrote:

> On Tue, 2023-05-02 at 10:35 -0700, Volker Weißmann wrote:
> > Hello,
> > 
> > I'm a developer that worked quite a bit with the meson build system and 
> > looked at sagemath for a few days. I thought that redoing the build 
> > system with meson instead of autoconf would be quite a bit of work, but 
> > would
> > 
> > 1. Be far, far more readable.
> > 2. Result in far faster incremental builds if very little has changed 
> since 
> > the last build.
> > 
> > What do you think? Is this a good idea? Would you appreciate (and merge) 
> > such an endeavour?
> > 
>
> Meson is my second favorite build system, but there are a few obstacles
> to a rewrite:
>
> * Autotools is nicer for end users, because all you need to run it is 
> a posix shell. The tradeoff is that writing autotools sucks for 
> developers. It is however already written.
>
> * Related to the first item, meson has bootstrapping issues because 
> it's written in python (which we use autotools to detect), and 
> because meson sometimes introduces new features. If we use those
> new features then users need newer versions of meson which need 
> newer versions of python... This is offset somewhat by the fact 
> that we already have a set of bootstrap dependencies but it would  
> be one more thing we'd have to worry about. (There is also a C99
> implementation of meson called muon.)
>
> * The ./configure && make process is "standard" and familiar to 
> everyone while meson is less so. This could change in a few years.
>
> * The sage build system is perpetually in flux and it would be very 
> hard to coordinate a rewrite.
>
> And the big one:
>
> * You probably haven't looked hard enough at the existing build 
> system. We've got mountains of highly unusual autoconf code and 
> hand-written Makefiles that all interact in weird ways with
> sage's own package manager. Meson makes the standard build tasks
> simple, but a lot of what we're doing is non-standard. Trying to
> rewrite those bits in meson might only make things worse.
>
> So I commend your bravery but I think you would waste a lot of time
> before eventually giving up. And IMO the benefits would be dubious.
>
> Some day we may reach a point where the sage library is an independent
> package with its own standard ./configure script that just looks for
> headers and libraries and substitutes strings into files. At that point
> this would be a less crazy idea.
>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/82f72404-26f7-44a0-8ffc-a234f77e5b9fn%40googlegroups.com.

Reply via email to