/bin/ln on macOS 14 is built with a set of relocations that break when
binary-patching the architecture from arm64e to arm64, leading to 'dyld:
bad bind opcode 0x19'.
Newer versions don't seem to ship such binaries, so until somebody comes
along to find a solution for these few binaries, let's just disable
tracemode support on macOS <= 14.
This also means we no longer need to reinplace the macports user's
username into the test file, so there's no longer a need to generate it
using configure.
Add a test-specific tclsh wrapper (`tests/test-tclsh`) that extends the
vendor tclsh wrapper with all `src/` package directories on `TCLLIBPATH`,
allowing the test suite to find in-tree packages without anything
installed at the configured prefix.
Switch all test Makefiles from `$(TCLSH)` to `$(TEST_TCLSH)` so unit and
integration tests use the in-tree interpreter. Replace all references
to `${bindir}/port` and `${bindir}/portindex` with direct invocations of
the in-tree `src/port/port.tcl` and `src/port/portindex.tcl` via the test
tclsh wrapper.
Add `init_tmp_prefix` to all test files that call `mportinit`, creating a
throwaway prefix with `macports.conf`, `sources.conf`, and `share/macports`
data populated from the source tree rather than the installed prefix.
Set `extra_env TCLLIBPATH` in test `macports.conf` files so that
`mportinit`'s environment scrub does not strip `TCLLIBPATH`, which threads
need to resolve packages.
Reorder CI workflows to run `make test` before `make install`, since the
test suite no longer requires an installed prefix.
See: https://trac.macports.org/ticket/56016
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Bundle the BLAKE3 1.8.4 C implementation (CC0/Apache-2.0 licensed) in
pextlib and wire it up as a new checksum type alongside md5, sha1,
rmd160, and sha256.
Architecture-specific SIMD acceleration is selected at configure time:
x86-64 gets SSE2/SSE41/AVX2/AVX512 assembly with runtime dispatch,
arm64 gets NEON intrinsics, and all other architectures (including
i386 and ppc for OS X 10.5 compatibility) use the portable C fallback.
Includes tests, and fixes some bad tests around checksum validation.
See: https://trac.macports.org/ticket/63885
Add MP_TOOL_PATH(GIT, [git]) to configure.ac so that users can supply
an alternate git binary via --with-git=PATH at configure time, matching
the pattern used for rsync, openssl, cvs, and other tools.
Fixes: https://trac.macports.org/ticket/72451
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The system install -d can fail when used concurrently, so only use
install(1) to create directories if it's our fixed version. Otherwise
use the bundled install-sh for directories but still use install(1) for
files.
See: https://trac.macports.org/ticket/72886
Apparently Crowdstrike only cares that the shell script being executed
mentions 'dscl' and 'Password', regardless of whether it's in a
conditional branch that never gets executed.
See: https://trac.macports.org/ticket/69187
A lot of file copies that we create are not subsequently modified,
especially in the destroot phase. This makes cloning a more efficient
alternative.
* Modified xinstall and 'file copy' Tcl commands to try cloning.
* Created a vendored copy of install(1) that tries cloning.
* Created a thin wrapper around cp(1) that adds the -c flag.
* If the build directory is on a filesystem that supports cloning, the
configure.install option defaults to our install(1), and the
directory containing our install and cp commands is added to the
front of PATH, currently only during the destroot phase.
The code for all of the above is not built on systems that lack
clonefile(2). If cloning fails, everything will fall back to creating
a copy as previously done.