Commit graph

18 commits

Author SHA1 Message Date
dmcmahill
82f326d1da when a package fails to package, keep a count of how many others packages
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.
2001-02-08 19:17:38 +00:00
dmcmahill
bf85b1aa00 This commit incorporates several speed improvements which have been tested
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'
2001-02-01 08:47:29 +00:00
dmcmahill
7954444aca be consistant about the use of "BULK> " as the prompt relating to the bulk
build system instead of a mix of ">> " and "BULK> ".

replace a few foo -> ${FOO}
2001-01-28 21:20:48 +00:00
hubertf
a638bc5107 Whitespace fix 2000-09-15 21:47:03 +00:00
hubertf
07dccfdb81 remove debug code 2000-09-02 14:05:36 +00:00
hubertf
94e6e8bd17 log more stuff to buildlog 2000-09-02 13:53:06 +00:00
dmcmahill
7b2960addc a couple of minor changes to the bulk-check-uptodate target:
- 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.
2000-08-25 12:43:28 +00:00
dmcmahill
d768c43c3c escape the \ in an echo command so we see it 2000-08-24 15:48:12 +00:00
hubertf
f3fb78f833 If a required binary pkg is found newer, tell which one. 2000-08-24 02:49:44 +00:00
hubertf
7a01adbfdb Remove a comment that's no longer valid after we have 'pkg_admin lsbest'
now - we can expand all pkg wildcards with that.
2000-08-24 00:59:18 +00:00
hubertf
0711a31398 Back out last commit: It nuked pkgs that we compile in several versions,
e.g. for "normal" and -current pkgs.
2000-08-24 00:52:23 +00:00
hubertf
e0fcb9cbea When rebuilding a pkg, don't only remove the binary pkg currently
available with the current version, but ALL version.

That way, old pkg versions are automatically removed when building new
ones.
2000-08-11 20:38:04 +00:00
hubertf
71fc302230 Suppress any errors from pkg_delete if no pkgs are installed 2000-08-04 03:24:33 +00:00
dmcmahill
b5e3262f6a minor grammar fix 2000-08-01 21:19:21 +00:00
hubertf
8926c8c0b2 s/depends/install-depends/ 2000-08-01 02:56:43 +00:00
hubertf
1d49b935a8 make sure the required packages (depends) are installed before the
package is about to be built. This allows measuring of (only) this
pkg's build cost in some future step.
2000-07-31 22:22:33 +00:00
hubertf
ff3cf6b5cf No need to set PKG_MISC_TARGETS in /etc/mk.conf any more, it's now
on per default in bsd.pkg.subdir.mk
2000-07-28 01:16:04 +00:00
hubertf
ac4380bdd5 initial commit of bulk build targets (more to come) 2000-07-28 00:46:17 +00:00