pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

pbulk best practice for fixing packages that fail to build



Hello, pbulk experts!

How do you generally deal with fixing packages that failed to build
during a pbulk build?  I find myself wishing I could drop into a shell
in a pbulk sandbox right before it would have run bmake to build the
package.  Is there a way to do that?

The closest I could think of was to create a sandbox, enter it, extract
the bootstrap tarball, become the pbulk user, and configure the PATH
environment variable so that the extracted pkg_info, etc. binaries will
be found.  But when I run "bmake package", it tries to rebuild all
dependencies rather than using the existing packages that have already
been built.  Is there a way to get it to install the dependent packages
using the already built packages?  According to chapter 17, "The build
process," of the pkgsrc developer's guide, there's a "bulk-package"
target, but when I run that in a pkgsrc [CATEGORY]/[PACKAGE] directory,
I get:

  bmake: don't know how to make bulk-package. Stop

Looking at the source code of pbulk's pkg-build script, it appears
to invoke pkg_add to install the dependencies.  It reads the list of
dependencies from the standard input stream, but I stopped investigating
here.

Or do you generally treat pbulk as a black box and try to fix package
build failures *outside* of the sandbox?  I can't think of a good way
to do this without having to rebuild all of the package's dependencies.
I presume you would have a testing pkgsrc bootstrap under a testing
prefix of, for example, /opt/pkg-test?  But you still have to deal
with building all dependencies again because the packages built with
pbulk will have been built with the "production" pkgdbdir, pkginfodir,
pkgmandir, prefix, sysconfdir, and varbase paths.  So, to avoid messing
up your currently installed production pkgsrc packages, you can't use
those dependent packages already built by pbulk because those packages
can't be cleanly installed under the desired testing pkgsrc bootstrap
(/opt/pkg-test), right?

Thank you!

Lewis


Home | Main Index | Thread Index | Old Index