Age | Commit message (Collapse) | Author | Files | Lines |
|
then run it at the end of pre-build. This lets users do things like:
echo "I do not have enough disk space to build this pig." \
> games/crafty-book-enormous/$BROKENF
|
|
|
|
printindex works now.
|
|
|
|
even if they are not enabled in the category makefiles. This catches,
in particular, pkgtools/xpkgwedge which was missing before.
Thanks to Christoph Badura for noting this.
|
|
of packages which must stay installed during the build, but are not pulled
in by the DEPENDS for each package. Currently, BULK_PREREQ will always include
pkgtools/digest. At this time, the primary use will be to add
BULK_PREREQ+=pkgtools/xpkgwedge
in /etc/mk.conf to do an xpkgwedge'd bulk build. It is up to the user to make
sure that the list of packages in BULK_PREREQ is a flattened list (ie all the
DEPENDS are listed too). Again, at this time, xpkgwedge is really the only
package that should be added to the list.
-add an ADMINSIG build.conf variable. This is the signature at the end of the
email report. Maybe now I'll quit forwarding reports signed as "-Hubert".
-while here, eliminate grep|awk lines and `grep >/dev/null` replacing them
with pure awk and grep -q.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
the links from the package category subdirectories so we don't leave bad
links around.
|
|
the old behaviour. This is done because unless we're in the middle of a
bulk build, we don't really know that the cache files are up to date. These
are fairly time consuming (relative to a single smallish package build) to
generate and depend on all of the pkgsrc makefiles. During a bulk build, the
overhead is far outweighed by the savings.
In particular, 'make bulk-install' will now work correctly outside of a bulk
build (useful for debugging broken packages).
Thanks to Hubert who noted the 'make bulk-install' problem in a private email.
|
|
|
|
fail as a result. Then report this number in the generated email and
html summary. The goal is to help the pkgsrc crew focus our efforts
on the broken packages which have the largest impact. Thanks to
Christoph Badura for suggesting that I do this and Hubert Feyrer who
suggested an easier to read output format.
|
|
tflat -u. Causes by not fully initializing an array before looping over
the array.
Other minor code cleanup.
|
|
when looking up the tree.
|
|
over several bulk builds on an alpha:
- At the start of a bulk build, 4 files are created to allow fast lookup of
various dependency tree things. These files are
.index == maps package name (foo-2.3) to directory (bar/foo)
.dependstree == contains the complete pkgsrc dependency tree in a tsort(1)
compatible format.
.depends == contains 1 line per package and lists all the build depends
for the package.
.supports == contains 1 line per package and lists all packages which
depend on this package.
- When a package fails to build, the list of all packages which depend upon
it is read from .supports. Each of those packages is immediately marked
as broken. This prevents us from trying to build those packages which can
have significant overhead if lots of other depends are installed before the
system notices the broken one.
In addition, the post-build postprocessing will now indicate that a package
is 'truely broken' (ie, bad PLIST, failed compilation) vs. a package which
is broken because it depends on a failed package. This assists in determining
where to focus our efforts in fixing broken packages.
- In the old approach, all packages are removed after each one is built. The
purpose was to a) conserve disk space, b) verify that all required dependencies
are in fact listed, and c) prevent conflicts. The problem was that often times
several packages in a row have similar depends. For example we might want to
build several perl packages in a row. In the old approach, we would install perl,
build the pkg, deinstall perl and continue with the next one.
In the new approach, when it is decided that a pkg is out of date and should be
rebuilt, the .depends file is used to obtain a list of pkgs we require. Then
and pkgs which are no longer needed are removed. This helps to minimize the total
number of pkg_add/pkg_delete's in a bulk build.
- Since the order of the build is controlled by the depends tree, all depends for a
given package will have been built by the time the pkg in question needs them.
If any of the depends failed to build, then the pkg which needs the failed one will
have been marked as broken. Given this, the complete depends list for a pkg is
read from .depends and the depends installed via pkg_add rather than relying on
recursive make calls to install the depends.
- while here, fix a few minor bugs
x - don't leave .make log files around when the build succeeds
x - make sure we refer to the correct report file in the email
x - use '.order' for the build order file instead of '.l'
x - use 'grep -c' instead of 'grep | wc -l'
|
|
sure to not miss libtool depends.
|
|
been deleted.
- when removing the '.start' file, don't remove them all, only the one we
created. Prevents clashes when pkgsrc is shared among multiple machines.
|
|
build system instead of a mix of ">> " and "BULK> ".
replace a few foo -> ${FOO}
|
|
tflat is a small awk script used to flatten a dependency tree. It can
process a tsort(1) compatible input file and produce a flattened
list showing all packages which depend on a particular package or
all packages which are depended upon by a package. This is used by
the bulk pkgsrc build system.
Written by Dan McMahill after careful study of a perl program that
does the same function in a nicer way written by Thomas Klausner
<wiz@netbsd.org>. The reason for rewriting it without perl was to
make it work with only in-tree utilities.
|
|
printindex is a small shell script run from /usr/pkgsrc. It generates
an index file which associates package directory (foo/bar) to package name
(bar-3.2) for the entire pkgsrc tree. The index file is useful for
processing of some of the dependencies during a bulk build.
Written by Dan McMahill using a little bit of the code from printdepends.
|
|
of the top level build script and into the {pre,post}-build scripts. This
ensures that either of those scripts may be run directly and not rely on
a variable being set by the top level script.
Thanks to Hubert Feyrer for pointing out the problem in a private email.
These changes do not require any user changes to the build.conf file and
should be transparent to the user.
|
|
- set BROKENF and BLDLOG in the 'build' script and pass those variables
down to {pre,post}-build in the environment to make sure we only set them
in one place. The values are determined by a
make show-var VARNAME=BROKENFILE
This causes the default (set in bsd.bulk-pkg.mk) or the user overridden
value from /etc/mk.conf or the environment to be correctly determined. This
is more robust that relying on a build.conf setting which may or may not be
correctly set.
- have pre-build only clean up BROKENF and BLDLOG files instead of
.broken* and .make*
This avoids conflicts when pkgsrc is shared among different machines.
|
|
|
|
pkgsrc is shared via nfs where multiple machines may want to run the script
at the same time. Also avoid conflicts if multiple copies are run on the
same machine at once.
|
|
|
|
hard coding it.
- explicitly only add $BROKENFILE's to the output rather than .broken.* This makes
things work correctly when /usr/pkgsrc is shared among several machines which might
use .broken.`hostname` for its broken file logs.
|
|
this way if you have 2 different pkgsrc trees sharing a distfiles directory
you don't nuke distfiles which may still be needed.
|
|
didn't like this. Make sure it's nuked.
|
|
|
|
|
|
(How did this EVER work before?!?)
|
|
|
|
* Store (t)sorted list of pkgs to build in .l
|
|
(Set to "" to prevent update e.g. on sparc64 where we don't have a working
ssh yet)
|
|
/usr/pkgsrc instead of the current dir. Bad!
|
|
don't get built.
|
|
* Prefix every line of the build's output with the architecture, so it's
easy to see at a glance which architecture you have scrolling by in
front of you
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- quote arguments to pkg_admin so the shell doesn't try to expand any *'s.
- be sure that all required binary packages exist. The previous version
made sure the required packages were not newer, but missed catching missing
required packages.
Still todo:
When examining required binary packages to see if they have changed, the test
only looks at the modification time of the binary package. It does not verify
that the required binary package is also up to date with respect to its
pkgsrc files.
|
|
|