On 9/25/24 11:33 AM, Paul Smith wrote: > On Tue, 2024-09-24 at 10:39 -0700, Junio C Hamano wrote: >> Our dependance of heavy use of GNU-ism in our Makefiles makes an >> argument that make is the common denominator a fairly weak one, so >> the single one that eventually we use does not have to be "make", >> but it has to be something available widely and easy to learn. > > Regardless of what one might imagine :), I am not advocating GNU Make > as the perfect solution: it certainly has downsides and disadvantages. :) I've read your article about why people should use autoconf! (By the way: I had a bit of a... chuckle, when I read in your previous email that as the GNU maintainer of Make, you build lots of projects with Make or CMake, but not with GNU autoconf / automake. I assume that was just bad wording?) > But, it also has benefits that should not be ignored: for example, it's > highly portable and it consists of a single binary that can be copied > anywhere and run from anywhere with no other prerequisites or need for > any setup or privileges. Also it's extremely flexible since it just > runs shell scripts. That also makes portability much more "do it > yourself" than other tools of course. > > Meson is portable, but that's because it's written in Python: that > means you have to have a Python interpreter already available > (currently Python 3.7 or better), and the ability to add new modules to > it. Admittedly this is not a super-high bar in 2024, but it's a non- > trivial requirement if you're trying to start from scratch. FWIW: you don't need the ability to add new modules to python, you can run meson by acquiring its sources (tarball or git clone, either one works) and running meson as $ python3 mesonsources/meson.py .... No installation required. You can also make a single-file executable using the "create_zipapp.py" packer that ships in the meson sources. It uses python's ability to execute a .zip archive by expecting the root of the zip file to contain a) the file __main__.py containing the program entrypoint b) any additional modules that should be available at runtime You do still need python3, sure. There are a few different tools available for creating single-file executables that don't require a python interpreter. What they do is create a self-extracting executable that includes its own python and internalized support files. Meson uses https://pyinstaller.org to do this in order to create the Windows .msi and macOS .dmg installer bundles without requiring the user to install python. I've used it to create Linux executable installers of meson too -- but I have no strong feelings about linux executable installers existing, so I only bother doing so in order to run tests on the packing process e.g. when I want to verify that the Windows installers are ok without actually running Windows. It's not that hard to build a more or less standalone python that only depends on "glibc from CentOS 7 or newer" to use as your base. There's an unofficial project that hosts some precompiled versions at https://gregoryszorc.com/docs/python-build-standalone/main/index.html Single-file executables are alive and flourishing. :) The same could probably be done for other operating systems and not just "the big 3", but I lack direct personal experience with deploying software to such systems so I can't really say for sure. -- Eli Schwartz
Attachment:
OpenPGP_signature.asc
Description: OpenPGP digital signature