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>
Tcl attempts to determine the path of its standard library relative to
the path of its binary, but does not expand symlinks when doing that.
`port-tclsh` thus inadvertently uses libraries from a MacPorts-installed
Tcl rather than the copies shipped with MacPorts.
See: https://trac.macports.org/ticket/64507
Closes: https://trac.macports.org/ticket/72359
These build as part of the install command and don't seem to have
checks to skip this if nothing has been updated. So create a file to
indicate that they have already been destrooted.
Note that this means that manual cleaning or removing the .stamp file
is needed after changing the source of these vendored packages, which
should however hopefully be infrequent.
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.
Add a new public key for use with signify(1) to verify downloaded
MacPorts base relases. Adjust the Makefile to install this key in
$prefix/share/macports/keys/base, so that we have a designated space for
additional keys (enabling future key roll-over) and separate keys, for
example for a ports tree signature.
signify(1) is a tool originally developed for OpenBSD that uses modern
EdDSA signatures on the ed25519 elliptic curve. Bundling this tool gives
us a good way forward away from our single RSA 4096 public key that has
now been in use since 2011 for all packages, all base updates and all
ports trees.
Shipping signify allows us to use (a) modern cryptography, (b) avoid
using the same key for everything and (c) eventually phase out the
RSA-RIPEMD160 signatures.
The vendor/signify-osx directory is a clone of
https://github.com/jpouellet/signify-osx/, udpated with the latest
OpenBSD upstream signify source code from CVS using the 'make up' target
of the signify-osx Makefile.
Some of the corner cases (such as very long paths, for example) are hard
to test manually, or at least you don't know exactly whether a specific
code path was covered just from installing a port.
Improve this situation by adding automated tests to darwintrace.
These will contain paths specific to the user's local system and should
thus not be under version control.
Remove the previously committed copies of this file.
Extract the vendor tarballs in order to avoid significant increases of
the repository size on updates. Rename the configure functionality from
MP_CONFIG_TARBALL to MP_CONFIG_SUBDIR.
Update vendor source versions: Tcl 8.5.19, tcllib 1.18
The wrapper script at vendor/tclsh ensures we can run helper scripts
even before MacPorts is installed, by using libraries from the source
directory. Previously, tclsh would erroneously have used
`/usr/lib/libtcl8.5.dylib`.
Closes: https://trac.macports.org/ticket/46533
- The build no longer produces *.dSYM directories.
- Re-anchor exclusions that I accidentally unmoored.
- Restrain broad exclusions to specific points in the directory tree.
- Replace exclusions of several individual files with more general
exclude/include pairs.
git-svn-id: https://svn.macports.org/repository/macports/trunk/base@151568 d073be05-634f-4543-b044-5fe20cf6d1d6