389 Commits

Author SHA1 Message Date
Joshua Root 825c45b0ed Use kqueue notifier instead of CF 2026-04-23 16:10:01 +10:00
Joshua Root d54ca2c6a9 critcl: handle macos platform synonym
Tcl 9 reports the platform name as 'macosx' for some versions and as
'macos' for others.
2026-04-14 07:06:24 +10:00
Joshua Root e5aa79688a regen configure 2026-04-14 07:05:40 +10:00
Clemens Lang e38ba073db configure: Disable trace mode on arm64 macOS <= 14
/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.
2026-04-12 14:29:41 +02:00
Clemens Lang dc9b17c26a tests: Fix trace test to run in source (and skip if root)
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.
2026-04-12 14:29:41 +02:00
Herby Gillot 227a37b749 tests: run test suite fully in-tree without depending on prefix
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>
2026-04-11 03:39:35 +02:00
Herby Gillot 1dadbbf8b5 pextlib: add BLAKE3 as new checksum type
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
2026-04-11 02:50:09 +02:00
Joshua Root 6dde22ecb2 configure: remove automatically added -std option 2026-04-09 02:46:50 +10:00
Joshua Root c6a5195be4 configure.ac: quote brackets 2026-04-09 00:35:46 +10:00
Joshua Root 4f6cde620d regen configure with autoconf 2.73 2026-04-09 00:35:02 +10:00
Herby Gillot 3ea4d20172 configure: add --with-git option
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>
2026-03-15 21:04:30 +11:00
Joshua Root efb8744580 MP_TAR_KEEP_OLD: correct output redirection 2026-02-05 19:20:40 +11:00
Joshua Root cf8e6d5526 Check if tar -k errors on existing files
Closes: https://trac.macports.org/ticket/73467
2026-02-05 16:21:03 +11:00
Joshua Root 97a7369bb7 Bump master version to 2.12.99 2026-02-03 07:23:02 +11:00
Joshua Root 8cc73ed9ad vendor/tcl: use install-sh to create dirs if needed
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
2025-08-22 02:41:30 +10:00
Joshua Root a215377381 Avoid dscl commands entirely if not root
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
2025-07-30 09:24:12 +10:00
Joshua Root 23e60c742b Use our custom install(1) to install our files
This should perform better since it uses clonefile() when possible.
2025-07-16 20:29:41 +10:00
Joshua Root a488313711 Bump master version to 2.11.99 2025-06-27 18:10:09 +10:00
Clemens Lang 002ac19a97 Re-generate configure after 186667728 2025-05-25 19:38:39 +00:00
Clemens Lang b951449b73 Re-run autoconf for port-tclsh change 2025-04-18 09:00:47 +00:00
Joshua Root 7bf1511f72 Build and install tcllibc
This requires critcl, which is now included in vendor/. It is built and
used to build tcllibc, but critcl itself is not installed.
2025-02-05 02:19:27 +11:00
Joshua Root fe87793b8e Drop support for Mac OS X 10.4 Tiger
See thread: https://lists.macports.org/pipermail/macports-dev/2025-January/046014.html
2025-02-01 16:43:15 +11:00
Joshua Root 16c4b69f42 Fix HAVE_DECL_CLONE_NOOWNERCOPY substitution 2024-09-25 13:09:12 +10:00
Joshua Root 67311775f3 More 10.12 fixes
See: https://trac.macports.org/ticket/70906
2024-09-25 11:54:03 +10:00
Joshua Root 3da9cd2a0d Use clonefile(2) in more places
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.
2024-08-28 00:24:25 +10:00