From: Eli Schwartz <eschwartz93@gmail.com>
To: paul@mad-scientist.net, "git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: ./configure fails to link test program due to missing dependencies
Date: Wed, 25 Sep 2024 21:35:05 -0400 [thread overview]
Message-ID: <6e3ac135-8357-4d2d-a49b-de7f1ab4da95@gmail.com> (raw)
In-Reply-To: <5bd2f41c92a00f7799bc543e229b16fa7a473760.camel@mad-scientist.net>
[-- Attachment #1.1: Type: text/plain, Size: 3498 bytes --]
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 #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 963 bytes --]
next prev parent reply other threads:[~2024-09-26 1:35 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-14 22:57 ./configure fails to link test program due to missing dependencies Henrik Holst
2024-09-15 16:37 ` Junio C Hamano
2024-09-15 16:47 ` brian m. carlson
2024-09-16 7:50 ` Patrick Steinhardt
2024-09-18 10:04 ` Phillip Wood
2024-09-18 22:39 ` Junio C Hamano
2024-09-24 12:10 ` Patrick Steinhardt
2024-09-24 13:59 ` Eli Schwartz
2024-09-24 14:25 ` Paul Smith
2024-09-25 4:36 ` Patrick Steinhardt
2024-09-25 6:02 ` Eli Schwartz
2024-09-25 6:04 ` Patrick Steinhardt
2024-09-26 13:55 ` Phillip Wood
2024-09-26 14:02 ` Patrick Steinhardt
2024-09-27 10:10 ` Phillip Wood
2024-09-26 16:04 ` Eli Schwartz
2024-09-27 10:00 ` phillip.wood123
2024-09-26 16:22 ` Junio C Hamano
2024-09-29 17:56 ` Johannes Schindelin
2024-09-29 18:10 ` Eli Schwartz
2024-09-30 8:50 ` Phillip Wood
2024-09-30 13:57 ` Eli Schwartz
2024-09-30 16:31 ` Junio C Hamano
2024-09-30 16:05 ` Johannes Schindelin
2024-09-25 19:15 ` Patrick Steinhardt
2024-09-25 19:17 ` Patrick Steinhardt
2024-09-24 17:39 ` Junio C Hamano
2024-09-25 15:33 ` Paul Smith
2024-09-26 1:35 ` Eli Schwartz [this message]
2024-09-26 19:42 ` Paul Smith
2024-09-24 14:31 ` Eli Schwartz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6e3ac135-8357-4d2d-a49b-de7f1ab4da95@gmail.com \
--to=eschwartz93@gmail.com \
--cc=git@vger.kernel.org \
--cc=paul@mad-scientist.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).