Changes in version 2.1
======================
**Released on 2019-01-14.**
* Issue 3: Added a new `PBULK_LOG` setting to point at a location that
holds all build logs, and made the `build` command print out details
about such logs on success and failure.
* Issue 4: Fixed the installable bootstrap kit generated during a build
to not leak pkg_comp-internal paths.
* Issue 10: Fixed generation of pkg_summary so that it includes all
packages and not only those that were explicitly given to the `auto`
or `build` commands after a clean rebuild of the sandbox.
* PR 20: Fixed the default Git repository from jsonn's to NetBSD's as
it has moved upstream.
* Added a new `PKG_DEVELOPER` setting to enable pkgsrc development
from within the sandbox.
Package configuration files should be found in ${PKG_SYSCONFDIR},
which can be modified by a user-settable variable. Look for the
default sandboxctl(8) configuration files in
${PKG_SYSCONFDIR.sandboxctl} if that variable is set, or else in
${PKG_SYSCONFBASE}/sandboxctl.
Fixes problem noted by Iain Hibbert on tech-pkg@.
Bump the PKGREVISION to 2 due to changes in the binary package if
PKG_SYSCONFDIR.pkg_comp is set to a non-default value.
**Released on 2017-02-17.**
This is the first release of the pkg_comp project as a standalone
package. This new release shares no code with previous versions and is
not compatible with them.
The following are the major differences between pkg_comp 2.0 and all
previous releases, which incidentally are the reasons that triggered
this rewrite:
* Support for multiple platforms.
* Use of pbulk to (re)build packages within the sandbox. This results
in more reliable incremental builds after pkgsrc updates.
* Support for bootstrap, generating binary kits as part of the builds.
* Better scriptability to allow running from cron(8) trivially.
This is to make room for pkg_comp 2.0, which is coming soon. The new release
is significantly different from the 1.x series in features (supports multiple
platforms, bootstrap, and pbulk) but also comes with a different configuration
syntax.
pkgsrc uses the "BUILD_TARGET" definition internally as the primary
target for building in a package's WRKDIR. It defaults to "all".
So pkgsrc cd's to ${WRKDIR} and does a "make ${BUILD_TARGET}"
pkg_comp also wants to use the same "BUILD_TARGET" definition
internally for itself to guide the builds for making binary packages.
It's done at a higher level than the pkgsrc definition. It defaults
to "package".
The use of the same name for two different purposes can cause
pkg_comp to fail to build packages. This commit renames the pkg_comp
definition to be "BUILD_PKG_COMP_TARGET".
With this change in place, my pkg_comp builds now complete successfully.
Bump PKGREVISION for the BUILD_PKG_COMP_TARGET fix
- Add the GENERATE_PKG_SUMMARY option to tell pkg_comp to generate a
pkg_summary.gz file in the packages directory. Useful to later be
able to run a packaging tool like pkgin against new binary packages.
- Allow specifying packages by their basename, without a category. This
affects the arguments to the 'build' command as well as the list of
packages provided to AUTO_PACKAGES and BUILD_PACKAGES.
- Remove pkg_install version check and rebuild if outdated. pkgsrc is
supposed to do that for us. Addresses PR pkg/38323.
- Don't bother to explicitly builddigest. pkgsrc DTRT nowadays when
PKGSRC_COMPILER includes ccache/distcc.
* Do not force the install target to take a full package name. pkg_add will
automatically pick the latest version.
* When building a package as part of makeroot, make sure it actually gets
installed. This is to fix a regression with the switch to USE_DESTDIR=yes.
Otherwise these packages will get rebuilt later on when needed.
* It is common for calls to mktemp to have 6 placeholders in the template,
not 4. Make it so.
Approved by MAINTAINER, jmmv@.
Add option -N: with the expection of pkgtools/libkver (see manual
page about NETBSD_RELEASE) avoid installation of default packages as well as
INSTALL_PACKAGES and BUILD_PACKAGES during the creation of the chroot.
Note: This is useful for running pbulk in a sandbox created by
pkg_comp as binary packages , possibly very low in the build
dependencies tree like pkgtools/digest, won't be built by pkg_comp
while creating the sandbox hence pbulk won't have to rebuild nearly
all packages otherwise already up-to-date.
The maintainer notes that this seems like abusing pkg_comp to just
create sandboxes. And well... yes indeed!
INSTALLATION_DIRS, as well as all occurrences of ${PREFIX}/man with
${PREFIX}/${PKGMANDIR}.
Fixes PR 35265, although I did not use the patch provided therein.
Ensure that libkver.so is loaded if needed via LD_PRELOAD
for all kind of commands run via the chroot target.
This fix PR pkg/32921.
Approved by MAINTAINER.
- PKG_SYSCONFDIR cannot be set by mk.conf; it is PKG_SYSCONFBASE. This was
correct in one place but incorrect in another. Fixes PR pkg/33061 by
Yoshito Komatsu.
- add MAKEROOT_HOOKS, a whitespace separated list of functions
or external scripts to be executed after the sandbox is created,
- be more verbose about hooks execution,
- run hooks only when they are defined.
ok <jmmv>
Fix libkver support for pkg_comp's build, auto and install targets,
Reported broken and fix tested by salo@.
Also ensure libkver is built, if needed, even before digest.
Approved by jmmv@
When installing libkver, as required when NETBSD_RELEASE is set
in a pkg_comp configuration, do so in a special purpose prefix and use
it from there.
This is useful when running a bulk build in the chroot or simply
removing all installed packages in it: the libkver package won't
be removed hence the chroot will still be usable.
Approved by MAINTAINER.
- Make the EXTRA_MK variable be a list of files rather a single one.
From brook at biology.nmsu.edu in PR pkg/30099.
- Directly recognize pkg_* commands to be executed within the sandbox
(i.e., no need to use the chroot keyword).
From Robert Elz in PR pkg/29749.
- Fix a typo in the manual page.
- Ensure that the first attempt to build pkgtools/digest inside the
chroot works by explicitly setting PKGSRC_COMPILER to gcc (pkg_comp
assumes NetBSD in lots of places, so this assumption is acceptable).
It was failing because it set PKGSRC_COMPILER to the empty string in
the environment, which breaks the build.
- Make kern-GENERIC.tgz part of the default SETS value, so that we get a kernel
inside the chroot. If the user removes it from the list, and no /netbsd file
exists after extraction, create an empty /netbsd kernel.
This fixes packages that look for a kernel during compilation, like net-snmp.
Found by cube@.
- Recognize the PKGSRC_COMPILER variable and set it automatically in mk.conf.
- Add the REAL_CCACHE variable: if set, the directory pointed by it will be
null-mounted inside the chroot in a place known by ccache to store the
cache. This is useful to keep it across rebuilds of the sandbox.
Idea suggested by gavan@.