This should not be used under normal circumstances, however on arm64 macOS it
is currently impossible to execute native arm64 binaries inside a chroot, and
so the chroot must run in x86_64 mode via Rosetta. This causes uname/arch/etc
to all report that the system is x86, and so the only way to force MACHINE_ARCH
to be set correctly to "aarch64" is using this argument.
This is part 1 to support additional platforms with the RC scripts provided in
pkgsrc, in privileged as well as in unprivileged mode, including on NetBSD
(with part 2 in pkgtools/rc.subr).
This variable is meant to point to the configuration directory of the base
system (as opposed to pkgsrc's own prefix) when it should be used by pkgsrc in
special cases (e.g. installing RC scripts), or to point to the existing
PKG_SYSCONFBASE directory otherwise (e.g. for any unprivileged bootstrap).
This teaches pkgsrc where the RC scripts should be installed, and more
importantly, where the local copy of rc.subr can be expected. Part 3 will
progressively update each and every RC script to substitute this path as
expected.
No functional changes are intended in privileged mode without a bootstrap. The
only variable affected by this change directly is RCD_SCRIPTS_DIR, which
currently remains with the same default of /etc/rc.d, and can be overridden as
before.
When bootstrapping, SYSCONFBASE also remains with the existing default when no
prefix is set or is "/usr/pkg" or "/usr"; it is set to $prefix/etc otherwise. It
can be specified specifically with --sysconfbase if necessary.
Existing installations or bootstraps are not affected, as this change needs
setting SYSCONFBASE in the corresponding $sysconfdir/mk.conf to have an impact.
Tested in privileged and unprivileged modes on NetBSD/amd64, and unprivileged
mode on Darwin/amd64; submitted for review on tech-pkg@.
From a discussion with jperkin, who tested this on bulk builds, the
remaining issues with non-BSD echo are in legacy wrappers.
Keep the workaround to use bash on Debian GNU kFreeBSD because it still
uses legacy wrappers and add a comment that that's why it's there.
Now naive usage of bootstrap on many popular Linux distros doesn't require
setting an environment variable.
can catch users out with the two --prefer options. Make the parsing
of these better by checking their argument exists and is not another
command line option.
Addresses PR#55952. Reviewed with jperkin@
Consolidate some old version info.
Declare that PRs about 10.12 and earlier that do not contain fixes may
be closed without fixing. (At this point there is still a lot of
useful hardware that runs 10.13. Systems too old to run 10.13 are now
more or less heading towards retrocomputing, and those too old to run
10.11 have arrived.) If you don't like this and would like to
actually work on such PRs, feel free to volunteer to have <= 10.12 PRs
assigned to you.
A lot of patches for Elbrus 2000 have not been upstreamed, which results
in important packages such as openssl failing to build, while the native
one is quite up-to-date and working.
Tested building devel/fossil with this, which results in a fully working
binary.
It looks like lld doesn't want to statically link a libarchive without
resolving all of the symbols, even if only a few symbols are used.
In order to resolve all of the symbols, we need to also link with -lmd.
One generic way to do so is inspect Libs.private in the pkgconfig file.
While pkgsrc is likely not at fault here, having a dysfunctional bootstrap
is bad. We should check again in the future to see if this can be removed.
Actually fixes PR pkg/55400.
Tested with QNX 6.5.0SP1.
Two things were needed:
* bootstrap needs to export ACCEPT_INFERIOR_RM_PROGRAM=yes on QNX,
because libarchive checks for "rm -f" (with no arguments) working in
configure. It doesn't seem to actually use it during the build, so
this works.
* QNX.sys.mk sets LORDER to echo, but sets TSORT to tsort -q. This
results in tsort complaining about having an uneven number of inputs,
since of course there are no dependency pairs.
Hence, if LORDER is overridden to echo, TSORT also needs to be
overridden to cat. Interestingly, Linux.sys.mk also sets LORDER=echo
and TSORT=tsort -q, so it's surprising this isn't broken as well?
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.