Commit graph

43 commits

Author SHA1 Message Date
dmcmahill
4e23ffd1d9 correct the 'broken due to depends' processing. This change makes the
summary email list correctly the packages which are broken because of
their dependencies.  Problem noted on Huberts most recent bulk build.
2003-02-13 22:51:03 +00:00
kei
2a95fc68a5 honor PKG_SKIP_REASON as well as PKG_FAIL_REASON, like normal build does. 2003-02-08 23:27:00 +00:00
schmonz
a2849a9dca Replace IGNORE into PKG_FAIL_REASON and PKG_SKIP_REASON, so pkgsrc
can stop builds when a dependency is broken, yet continue builds
when a dependency is merely skipped (usually because it duplicates
functionality in the base system). Thus IGNORE_FAIL, the
oft-misunderstood and naught-documented option, goes away.

This addresses many people's complaints on tech-pkg@ and other
lists, as well as PR pkg/18157.
2002-12-07 02:37:56 +00:00
jlam
b119dbc8ef Merge pkgsrc/mk from the buildlink2 branch back into the main trunk. 2002-08-22 08:21:26 +00:00
mrauch
740ad47954 Make bulk builds aware of packages with INTERACTIVE_STAGE and mark them as
"not packaged" instead of "broken".
2002-07-21 11:53:18 +00:00
dmcmahill
187edbfd07 don't hard code the start time stamp file as .start.${arch} but allow
OBJMACHINE and OBJHOSTNAME to work.  Also don't hardcode /usr/pkg and
/usr/X11R6 for LOCALBASE and X11BASE.  Finally, fix a few typos in messages
while here.
2002-06-29 03:33:34 +00:00
hubertf
207d50e572 Use <pre> to surround build logs - monospaced fonts are so much more readable.
OK'd by Dan McMahill
2002-03-04 21:10:47 +00:00
dmcmahill
0aa7588bd1 add some html markup to the .broken files (which now have .html extenstion).
The primary purpose is so when a package is broken due to broken depends,
there are links to the build logs of the broken dependencies.

Suggested by Brook Milligan on tech-pkg.
2002-01-20 03:07:05 +00:00
dmcmahill
d99a79b2eb add the OBJHOSTNAME functionality that appeared in 1.901 of bsd.pkg.mk.
When OBJHOSTNAME is set, the various cache files and log files will include
the hostname in their names.  Useful when multiple machines of the same
architecture share pkgsrc.
2002-01-12 02:25:59 +00:00
dmcmahill
f68e56c389 - add 'bulk-cache' and 'clean-bulk-cache' targets to create and remove
the cache files used during a bulk pkgsrc build.

- replace the code in the build script that used to create the cache
  files with a 'make bulk-cache' call.
2001-12-17 02:32:22 +00:00
dmcmahill
6ce14a63b7 add more checks to be more robust in the face of an index file which
may not be 100% accurate.
2001-12-16 14:27:07 +00:00
agc
ccff9099bc Modify all references to PKGSRCDIR to _PKGSRCDIR, except in the external
references of the pkglint package.

_PKGSRCDIR is an internal definition in bsd.pkg.mk, and a few packages
which would like to refer to other packages in the build tree. It should
not be set by users, but neither should it stop a user from building a
package if it is defined, so make it obvious that this is the case.
2001-12-15 20:25:34 +00:00
abs
6dd01d2785 lose some more pkg/ references 2001-11-28 10:21:46 +00:00
hubertf
b3e7e7baec The $DEPENDS file has the pkg's directory in the first column, followed by
whitespeace, followed by it's required pkgs. Make sure to look for that
whitespace, to not catch any wrong positives, e.g.

	egrep "x11/kdebase.*" $DEPENDSFILE

will catch depends for both KDE1 and KDE2 and do weird things then (among
other things, think that kdelibs-2.2.1 is ok as a dependency when building
in x11/kdebase, which is certainly not!)

Eight broken pkgs less in the bulk builds by adding a single space!
(Now if adding some more would help further... :-)
2001-11-07 00:29:20 +00:00
abs
783b4399f5 When working out if an installed package should be left as it
matches one of the DEPENDS, the bulk-build system looked up the
package in the INDEXFILE, then used the pkgdir returned to check
against the DEPENDS. If for some reason the package was not found
in the index file the package was left installed as 'requires
installed package'.
2001-10-20 09:07:13 +00:00
dmcmahill
32188bfde2 if an outdated package is still installed and 'make deinstall' fails
to remove it, then try again with 'pkg_delete -r'.  This can happen when
some other out date pacakges are installed and we're trying to bulk build
a single package.
2001-07-21 19:36:47 +00:00
hubertf
d392e30e8a Add date when a buid for a pkg started, and comment a place that has some
side effecs
2001-05-09 02:54:38 +00:00
dmcmahill
6ce703782b don't exit if a depends can't be pkg_add'ed. In this case it will be
rebuilt from sources.
2001-05-09 02:39:31 +00:00
dmcmahill
ab699dabf0 some code cleanup.
- use the PKGPATH variable instead of getting it indirectly

- don't use `foo` when we only want the return value, not the output.

Also, in the non-cache case, we need to remove un-needed packages as noted
in the most recent non-cached bulk build.

Patches provided by Hubert and slightly modified by me.
2001-05-03 21:19:55 +00:00
dmcmahill
0c4917e918 do some extra checks. In particular, don't try to pkg_add a package if
it doesn't exist (doh!).
2001-05-02 13:51:43 +00:00
dmcmahill
fe65792de1 get rid of an unneeded awk invocation 2001-03-31 00:03:03 +00:00
dmcmahill
c341f514d3 -add support for a BULK_PREREQ make variable. BULK_PREREQ contains a list
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.
2001-03-19 11:25:39 +00:00
dmcmahill
4e817902cb reduce the verbosity when adding/removing pkgs. Suggested by Hubert 2001-02-17 15:48:51 +00:00
dmcmahill
7a46b730b6 when removing out of date binary packages from ${PACKAGES}/All, also remove
the links from the package category subdirectories so we don't leave bad
links around.
2001-02-15 20:13:28 +00:00
dmcmahill
8595fb34da only use the depends cache files during a bulk build, otherwise revert to
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.
2001-02-13 23:02:23 +00:00
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