git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: ./configure fails to link test program due to missing dependencies

From
Eli Schwartz <eschwartz93@gmail.com>
Date
Sep 26, 2024, 01:35 UTC
Message-ID
<6e3ac135-8357-4d2d-a49b-de7f1ab4da95@gmail.com>
In-Reply-To
<5bd2f41c92a00f7799bc543e229b16fa7a473760.camel@mad-scientist.net>
On 9/25/24 11:33 AM, Paul Smith wrote:
Show 8 quoted lines
> 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?)

Show 12 quoted lines
> 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
Previous: Paul SmithNext: Paul Smith
Message 29 of 31 in “./configure fails to link test program due to missing dependencies”
  1. Henrik HolstSep 14, 2024
  2. Junio C HamanoSep 15, 2024
  3. brian m. carlsonSep 15, 2024
  4. Patrick SteinhardtSep 16, 2024
  5. Phillip WoodSep 18, 2024
  6. Junio C HamanoSep 18, 2024
  7. Patrick SteinhardtSep 24, 2024
  8. Eli SchwartzSep 24, 2024
  9. Paul SmithSep 24, 2024
  10. Patrick SteinhardtSep 25, 2024
  11. Eli SchwartzSep 25, 2024
  12. Patrick SteinhardtSep 25, 2024
  13. Phillip WoodSep 26, 2024
  14. Patrick SteinhardtSep 26, 2024
  15. Phillip WoodSep 27, 2024
  16. Eli SchwartzSep 26, 2024
  17. phillip.wood123@gmail.comSep 27, 2024
  18. Junio C HamanoSep 26, 2024
  19. Johannes SchindelinSep 29, 2024
  20. Eli SchwartzSep 29, 2024
  21. Phillip WoodSep 30, 2024
  22. Eli SchwartzSep 30, 2024
  23. Junio C HamanoSep 30, 2024
  24. Johannes SchindelinSep 30, 2024
  25. Patrick SteinhardtSep 25, 2024
  26. Patrick SteinhardtSep 25, 2024
  27. Junio C HamanoSep 24, 2024
  28. Paul SmithSep 25, 2024
  29. Eli SchwartzSep 26, 2024
  30. Paul SmithSep 26, 2024
  31. Eli SchwartzSep 24, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.