Buildsystem: deprecating autotools for meson/muon #1068
Replies: 6 comments 3 replies
-
|
Is the --program-transform-name=* feature from the Autotools version still unimplemented in the meson version? It makes difficult for fvwm2 and fvwm3 to coexist at the same system. Would be nice to keep the Autotools version until this issue is solved. |
Beta Was this translation helpful? Give feedback.
-
|
I just use the packing tools to rename things, which is easy enough. From my override_dh_install:
dh_install
# Rename fvwm helper binaries to install along side fvwm package.
cd $(CURDIR)/debian/fvwm3/usr/bin; \
mv FvwmCommand Fvwm3Command; \
for name in convert-2.6 menu-desktop menu-directory menu-xlock \
perllib root; \
do \
mv fvwm-$$name fvwm3-$$name; \
done
override_dh_installman:
dh_installman
# Rename fvwm3 manpages to install along side fvwm package.
cd $(CURDIR)/debian/fvwm3/usr/share/man/man1; \
for module in Animate Auto Backer Buttons Command Event \
Form IconMan Ident MFL Pager Perl Rearrange Script; \
do \
mv Fvwm$$module.1 Fvwm3$$module.1; \
done; \
for name in convert-2.6 menu-desktop menu-directory menu-xlock \
perllib root; \
do \
mv fvwm-$$name.1 fvwm3-$$name.1; \
done |
Beta Was this translation helpful? Give feedback.
-
|
Thank You! So it will be necessary to keep track of what should be renamed (and what appears/disappears in fvwm3) and to manually add the respective commands to my SlackBuild... |
Beta Was this translation helpful? Give feedback.
-
|
I wouldn't say there is much to track (fvwm3 isn't changing binary names and module names that much and fvwm2 won't change). But yes, it is going to be up to the various downstream distro maintainers to decide if they want fvwm and fvwm3 to be installable side by side. This can be done by either making fvwm3 and fvwm conflict, or rename the files of one of the packages. That means another option would be to leave fvwm3 alone (since it is the active developed version) and setup the fvwm (which still uses autotools) to rename its binaries. Since fvwm2 won't be changing, less to keep track of. But this decision is going to be up to downstream maintainers and what is required for their distro's policies. |
Beta Was this translation helpful? Give feedback.
-
|
Hey, trying to install FVWM3 on my work Ubuntu24 system. Pulled the code and tried running meson w/ TLDR; Note the Ubuntu24 FVWM3 package is version 1.0.6a I had earlier issues trying to install the Ubuntu fvwm package, no integration w/GDM and crashing prob because its fvwm2 and OBE and not fvwm3 like a thought (why keep that package?). So I'm thinking I probably want to build the latest fvwm3 version as I doubt Ubuntu is really managing this package. I had to ask IT to reimage my computer after the fvwm package install because it would boot to an xserver w/no window manager. Running startx then put me in some default gnome desktop. And fvwm --replace would just crash (Again that was all fvwm2). Anyway, it would be nice if we could add other packages like Ubuntu. I see someone created one for Debian. The last time I did this I spent a few hours figuring out which /etc files to modify in RedHat, and installing the fvwm package hosed my gnome login so I'm hesitant to trust a Ubuntu fvwm3 package to touch the write /etc files |
Beta Was this translation helpful? Give feedback.
-
|
Looks like you may need to update your ubuntu version, or see if ubuntu has backports or a way to install newer software on older versions. But looking here https://launchpad.net/ubuntu/+source/meson Seems you would need ubuntu "The Plucky Puffin" the current stable release or newer. There might be ways to get a newer version of meson in an older version of ubuntu, but you would have to bring the support to ubuntu users to figure out the best way to go about that. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
A Tale of Three Build Systems
This is not a detailed technical explanation as to the rationale, but rather outlines some of the reasons why
fvwmhas officially moved away from autotools.Timeline
Fvwmis one of X11's oldest window managers. As such, its history predates a lot of changes to more modern build tools. Indeed,fvwmstarted out with just having a few hand-crafted Makefiles.In 1998, someone called
steveconverted these Makefiles to autotools version 2.12 released in 1996. See commit b657ebb. This was at a time when theconfigurescript was named just that. There was noconfigure.acat this point.Indeed, even around 1998,
fvwmwould have been seeing more interest cross-platform, especially around Solaris, *BSD, VAX, etc., and maintaining these hand-crafted Makefiles would have become difficult especially as the toolchains between these systems won't have been common; Solaris is well-known for having a different C compiler, compared to the more likely GCC variants across those other systems.In 2006, Dominik Vogt updated
fvwmto use autotools-2.53 which meant using./configure.ac-- see commit 0f9bc15.Between then and 2024, autotools continued as the build tool of choice in the
fvwmproject.Considering Alternatives
In 2020, autoconf 2.70 was released. This introduced a number of significant changes to some of the core
m4macros autotools was using. Indeed, for a project of its age, those changes represented something of a headache, as they're tightly ingrained in howfvwmhas been developed over the years. Because of its age, it was going to be a lot of work to change some of these macros, to clean up a lot of self-written m4 code which previously was required for older autotools versions.As a side-note, the previous autoconf version prior to 2.70 being released (2.69), was in 2012. Hence, the 2.70 release represented eight years worth of changes!
This work could have been done, but it was known that other build systems existed, some of which were touted to be smaller in scope, and perhaps "faster" than
autotools.CMake
In looking at alternatives,
CMakewas considered. This is used in quite a few projects (neovimuses it, for example). But this wasn't offering much more than autotools did, and instead made the complexity of Makefile maintainership harder.Meson
This was chosen primary because X11 itself is transitioning its projects from autotools to meson. Additionally, there has been good help from the wider community around meson's adoption.
In terms of "speed", the parallelised nature of not using
makedoes mean compilation speeds are improved, even on lower-end systems.For example, here's some compilation times. Note that this is merely indicative of potential improvements to developers and packagers:
Planned Support and Obsolescence
As of
fvwm3-1.1.1, the default supported build system will bemeson.This means, it's the build system which is being predominately used for CI, as well as creating release tarballs.
Maintaining two build systems though is an unnecessary burden for any project maintainer.
Therefore, once
fvwm3-1.1.1has been released, that will mark a six month countdown from which autotools and meson will be maintained side-by-side, but after which autotools will be removed from fvwm3's codebase*, making meson the only option for building fvwm3.FAQs
I like autotools. It just works, requiring only sh, make as dependencies. Meson uses python3 which my system doesn't have.
muonexists (https://muon.build) and works withfvwm3as of muon-0.13 onward. muon is written in C and only needs to be built using a C compiler. It has an internal implementation of theninjabackend which it uses for compilation.Isn't this going to cause significant churn for downstream package maintainers?
Beta Was this translation helpful? Give feedback.
All reactions