[MacPorts] #72036: libpsl: Avoid Python dependency by using system python3

MacPorts noreply at macports.org
Sun Feb 9 19:20:18 UTC 2025


#72036: libpsl: Avoid Python dependency by using system python3
---------------------+--------------------
 Reporter:  ferdnyc  |      Owner:  (none)
     Type:  request  |     Status:  new
 Priority:  Low      |  Milestone:
Component:  ports    |    Version:
 Keywords:           |       Port:  libpsl
---------------------+--------------------
 I have a (perhaps) radical suggestion for libpsl, specifically, and how
 the clang_dependency morass can be eased some.

 First off:

 1. I have read the comments in the file, and I understand why the Python
 dependency there is so carefully managed and fragile.

 2. I have read tickets [70998], [55509], [60419], and others, so I know
 the history on this.

 3. I have read these FAQ entries:
    * "Will MacPorts link to system libraries rather than its own?
      https://trac.macports.org/wiki/FAQ#syslibs
    * "Why is MacPorts using its own libraries?"
      https://trac.macports.org/wiki/FAQ#ownlibs

 4. Because I have read those FAQ entries (and because I've been doing this
 stuff for a long time), I understand the importance, under normal
 circumstances, of dogfooding and of self-contained software collections.

 All the above notwithstanding, I ''also'' understand the importance of
 managing versions across package sets, and of avoiding dependency circuits
 and managing cascading dependency trees that can lead to conflicts and
 failures.

 == The libpsl Python dependency

 libpsl has a Python dependency for ONE reason and ONE reason only: It both
 runs (during the build), and provides to the user, the script that will
 ultimately become `${prefix}/bin/psl-make-dafsa`.

 This script is the most bare-bones of Python code possible: It contains
 three imports, all from the standard library (`sys`, `os.path`, and
 `hashlib`), and it is compatible with every Python version going all the
 way back to Python 2.7. It can easily be run, reliably, with the
 `/usr/bin/python3` present in every version of macOS for at least the past
 5 years.

 And that script is the sum total of libpsl's Python needs. It neither uses
 nor installs any Python modules beyond the standard library, it very
 explicitly AVOIDS any syntax that would exclude older Python versions, and
 it would not be expected to present any compatibility headaches should
 Apple either change their system Python3 version, or somehow manage to
 screw it up in some obscure fashion. (In the incredibly unlikely event
 that should occur, well, that's a bridge that can be crossed if it's ever
 encountered.)

 == The Python requirement for `psl-make-dafsa`

 Unlike Python packages/modules or the ports that make use of them, simple
 python-stdlib-only scripts ''really are'' independent of and agnostic to
 the specific python version they're run with. But since macports can't
 express that sort of dependency currently, eliminating it where possible
 is the next best solution. If ever there was a time to take advantage of
 system resources, this would seem to be that time.

 Removing libpsl's versioned python dependency means you can get all the
 way to installing curl without incurring any Python dependency, which
 helps prune the dependency graph somewhat for all of its dependents,
 including cmake. Which only makes the maintenance of all of those other
 packages that much simpler going forward, as there are fewer packages to
 juggle trying to keep versions in sync.

 == The proposal

 That's it, right there: Just eliminate the Python dependency in the libpsl
 `Portfile` entirely. Instead of the current code that modifies `psl-make-
 dafsa` so that the shebang is `#!/opt/local/bin/python${py_ver_nodot}`,
 instead set it to `#!/usr/bin/python3`, and also pass `/usr/bin/python3`
 to the configure as its `python` argument.

 I'd have just opened a PR in the repo with that change to the libpsl
 `Portfile`, but I felt that might come off as presumptuous so I figured
 I'd open this ticket for discussion first. If the response is, "Not just
 no, but HELL NO!" then I'll leave it at that.

-- 
Ticket URL: <https://trac.macports.org/ticket/72036>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list