Adds a new `port prefix` command that prints MacPorts' installation prefix on
stdout, unadorned, so it can be used directly in shell scripts.
Closes: https://trac.macports.org/ticket/72961
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 livecheck.user_agent to override the HTTP User-Agent for livecheck
requests, mirroring the existing fetch.user_agent option. Also document
both options in portfile.7, where they were previously undocumented.
Fixes: https://trac.macports.org/ticket/64369
Adds two related logging improvements to port build output:
- New -T flag prepends an ISO 8601 timestamp (e.g. 2026-03-18T09:42:01-0400)
to every line of terminal output. Timestamps are off by default. The flag is
implemented via a new ui_options(ports_timestamps) option, consistent with
ports_verbose, ports_debug, etc.
- Phase elapsed time is always reported. When a build phase completes,
a notice is emitted showing the phase name and duration in seconds
(e.g. "Phase build completed in 112.034 seconds"). This is implemented
in set_phase, which now tracks phase_start_ms and emits the notice on
each phase transition. A call to set_phase main after eval_targets
ensures the final phase's elapsed time is also reported.
The timestamp format is stored in macports::log_timestamp_format so it
is defined in one place. Tests are added for both features.
Closes: https://trac.macports.org/ticket/2020
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Forces use of rsync to download bases sources, just in case there are
unforeseen issues with http. Don't delete the base sources after
successful update with this option, since rsync updates them
incrementally.
Refactor the selfupdate package into smaller functions and switch to
a control flow of:
1. checking for newer versions by downloading a single URL
2. downloading the new version using HTTP when available
3. verifying the signature using EdDSA with ed25519 elliptic curve
crypto with the help of OpenBSD's signify(1)
4. Fall back to the old rsync method if the above fails.
This allows us to automatically fall back to other mirrors should our
main mirror not be available. We did not have this functionality
available for our previous rsync-based mechanism.
Additionally, the use of our standard curl wrapper enables displaying
a progress bar for the download and automatically uses any proxies that
might already be configured for HTTP.
Since we currently do not have a standard mechanism to sign the source
code tarballs uploaded to our distfiles server and github releases page
(we only sign the tarball pushed to rsync), I've taken the liberty to
introduce a new modern signature scheme for this channel – if we have to
touch this anyway, we might as well use modern tools and algorithms.
Co-authored-by: Joshua Root <jmr@macports.org>
Closes: https://trac.macports.org/ticket/38265
Closes: https://github.com/macports/macports-base/pull/184