Avoids problems caused by linking against aging enterprise Linux libraries or
libraries from Linux package managers that undergo ABI changes outside pkgsrc
control.
Add --prefer-native flag to bootstrap script so all PREFER_* values can be
set during bootstrap. This resolves issues where bootstrap links packages
against native libraries and pkgsrc equivalents are installed afterward due
to changes to PREFER_NATIVE after bootstrap.
Automatically document danger of changing PREFER_PKGSRC or PREFER_NATIVE after
boostrap in mk.conf
Tested by @astr0baby on Twitter on Tru64 5.1B, where bootstrap fails due to
incomplete C99 support for libarchive on the host system, but after mksh has
already been built successfully.
That leaves only AIX now remaining on pdksh, so if anyone has an AIX system
and is able to test a bootstrap run it would be appreciated.
El Capitan (10.11) introduced System Integrity Protection (SIP), and one of
the side effects of this protection is that system shells (i.e. /bin/*sh)
unset any variables that may affect the security of the system. This causes
problems with packages that rely on e.g. LD_LIBRARY_PATH.
Using a shell outside of the system paths allows us to work around this, at
least for now.
Tested in bulk builds on macOS Catalina, though with SIP disabled (as there
is no way to run sandboxed builds with SIP enabled).
Over time, and as they are tested, platforms will be migrated over to
shells/mksh ($need_mksh) instead of shells/pdksh ($need_ksh) when a
bootstrap shell is required. Once mksh is selected, it takes precedence
over pdksh.
Our shells/pdksh has been unmaintained for many years and has known
issues, shells/mksh is expected to provide a portable, fast, and well
maintained alternative.
With the upcoming Big Sur release we can't assume that the major version will
always be 10. Creating a combined major and minor version number also allows
us to simplify and future-proof some tests.
Should be no functional change.
Use the kernel architecture via isainfo -k to base our default on, as uname
will always return the same result regardless. Ensures we default to 64-bit
pkgsrc on amd64, as well as adding support for sparcv9.
Fixes issue seen bootstrapping on Solaris 9 when bash is available and being
used for SH, bmake was still defaulting to /usr/xpg4/bin/sh which dumps core
with some of the mk/check infrastructure.
Note this is only for the bmake used during the initial bootstrap, the final
bmake package will still use the defshell logic in its Makefile.
Move sanitfy check for absolute path of $prefix at a place where we are
sure it has been defined to avoid that a bootstrap can be built in a path
containing symbolic link when --prefix is not specified and default $prefix
is set.
Prompted by discussion of whether IRIX users exist on pkgsrc-users@,
list the pkgsrc platforms (foo, such that mk/platform/foo.mk exists)
according to whether they are actively maintained or not.
NB: This is merely informational, and not a deletion proposal.
This runs the echo command with fewer arguments (1 in most cases).
The observable behavior is still the same, except for directory names
containing spaces, which are not supported anyway.
Without this check, bootstrap will fail later when it builds
bootstrap-mk-files in the usual pkgsrc way. There is an additional check
in bsd.pkg.mk which then fails. Therefore, better fail fast to save some
time.
The working directory is only needed for bootstrapping pkgsrc, therefore
there aren't too many packages that can fail.
Loosening this check is needed for macOS, where /etc, /tmp and /var are
symlinks to /private, and using /tmp as the workdir for bootstrapping is
a sane choice.
Time has passed, and what was new is now crufty. Update descriptions,
and remove pointers to bulk builds that are no longer. Add a brief
explanation of SDK versions and a pointer to the code that
queries/sets them.
libarchive 3.3.3:
Avoid super-linear slowdown on malformed mtree files
Many fixes for building with Visual Studio
NO_OVERWRITE doesn't change existing directory attributes
New support for Zstandard read and write filters
Running bootstrap with short options (like -q for --quiet) is not
implemented. Therefore, instead of silently ignoring such options, fail
with an appropriate error message.