Prior to August 2023, any config.guess generated by autoconf will
include a hardcoded /usr/bin/uname invocation for FreeBSD on any
architecture other than arm. This clearly doesn't work under nix.
We must then update or otherwise patch each old config.guess.
Without the change `pcre2` build without `jit` support. This happens
because --wit-jit=auto was broken in this release. THe change backports
upstream fix.
Before the change ./configure log:
pcre2> Enable JIT compiling support ....... : no
After the change:
pcre2> Enable JIT compiling support ....... : yes
I initially observed the failures on `rizin` as a spam of failures to
JIT a trivial regex:
$ rizin
ERROR: Regex compilation for '\s+' failed at 0: bad JIT option
ERROR: Regex compilation for '\s+' failed at 0: bad JIT option
...
ERROR: Regex compilation for '\s+' failed at 0: bad JIT option
-- Check your IO plugins with 'rizin -L'
[0x00000000]>
Using PHP with PCRE2 built with the JIT SEAlloc is known to be
problematic [0] and it may crashes apps using pcntl to process a
workload in parallel like Psalm or PHPCS.
Another solution would be to disable `pcre.jit` but this is likely to
have a noticeable performance impact.
PCRE2 JIT SEAlloc was enabled in order to make possible to use
`MemoryDenyWriteExecute=true` in the NixOS Gitea module [1]. Doing
something similar for a PHP module is likely to involve more steps as
you will also need to disable PHP's JIT. Not building PCRE2 with the JIT
SEAlloc is however not really blocking for someone wanting to build an
hardened PHP module as they likely will disable `pcre.jit` and make sure
`opcache.jit` is disabled.
It should also be noted that OpenSUSE did try to enable PCRE2 JIT
SEAlloc by default in the past but recently reverted the change [2].
[0] https://bugs.php.net/bug.php?id=78630
[1] c990bd6007
[2] https://bugzilla.opensuse.org/show_bug.cgi?id=1182864
PCRE JIT is not supported on most architectores: m68k, s390,
ia64 to name a few.
Example build failure is:
$ nix build -f. pkgsCross.s390.pcre
...
pcre_jit_compile.c:65:2: error: #error Unsupported architecture
The change shifts from --enable-jit[=yes] to --enable-jit=auto which
allows nixpkgs to enable jit automatically only on supported targets.
We still ensure the old and new ones start, respectfully, with `a/` and
`b/`. Use with `stripLen` to ensure tha the old `a/` and `/b` are gone
if a new prefix is added.
* pkgs: refactor needless quoting of homepage meta attribute
A lot of packages are needlessly quoting the homepage meta attribute
(about 1400, 22%), this commit refactors all of those instances.
* pkgs: Fixing some links that were wrongfully unquoted in the previous
commit
* Fixed some instances