Commit graph

25 commits

Author SHA1 Message Date
jlam
b119dbc8ef Merge pkgsrc/mk from the buildlink2 branch back into the main trunk. 2002-08-22 08:21:26 +00:00
agc
e9822c16a7 In the build script, set BATCH=1 and DEPENDS_TARGET=bulk-install in the
environment, and pass them down to the bulk build. This means that the
/etc/mk.conf (or $MAKECONF) can be shared between ordinary builds and
bulk builds.
2002-08-12 14:20:59 +00:00
agc
9a4f22c0ba Make these scripts useful on platforms other than NetBSD by using a BMAKE
environment variable, which contains the name of the make(1) program to
invoke - suggestion by Julien Letessier some time ago, the confusion mine,
since I thought he was referring to something else completely.

Don't rely on there being a POSIX tr(1) in the path by default - test
explicitly for both "yes" and "YES".

Set the default for PRUNEDISTFILES to "no", since we can't assume that
the user wants us to delete something which he may have been keeping
around, and there are other ways of accomplishing this aim (lintpkgsrc
-o, for example).

Clean up some superfluous white space at the end of lines.
2002-08-07 10:56:11 +00:00
agc
b1e763d5bc Add a missing "-o" from the compound test in the if statement 2002-08-06 18:14:49 +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
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
hubertf
2541962f5b Catch errors while running printindex 2001-12-01 12:40:52 +00:00
hubertf
a329f921a8 Run "make bulk-package" with stdin redirected from /dev/null,
to prevent it sitting there for days waiting for input in useless
situations.
2001-11-26 00:55:45 +00:00
jmc
7c6e04b09e Change running output from build to include timestamp and current package.
Makes the output a bit long at times but gives a nice concise idea of where
you're at and if the build is moving
2001-11-08 02:52:25 +00:00
hubertf
f1d960e21b "bulk-install" already makes a binary package and cleans up after itself,
no need to make "bulk-package" or "clean" after it!
2001-11-06 13:45:33 +00:00
dmcmahill
c6d0fbf0c5 - change the way we cause the build order to happen. The old way passed
GROUP_SPECIFIC_PKGS into a top pkgsrc level call to make.  The new way,
  uses a shell 'for pkgdir in ....' and then calls a make in each pkg
  directory.

  This does 2 things.  The first thing is that a 'build restart' starts
  up _much_ faster because instead of calling 'make' for each package we've
  already built and finding out they're already build, we just grep through
  the list of already built pkgs.  The second item (a side benefit) is that
  now a progress meter is simple.

- add a progress meter to the build.

- add even more error checking.
2001-10-20 00:30:22 +00:00
hubertf
485b9b34d5 Set ressource limits as high as possible before we'll start compiling 2001-10-15 17:19:23 +00:00
dmcmahill
d2b3a2b5e3 add some more failure checks for robustness.
- if something fails while extracting the DEPENDS for a particular package,
  mark that package as broken and drop the DEPENDS info for it.  This allows
  the build to continue and properly marks the package as broken.

- if something fails while extracting the PKGNAME, also mark the pkg as broken.

- be more careful about seeing if directories exist before cd'ing to them.
  Lack of such a test has caused problems elsewhere, so hopefully this will
  make the system more robust.
2001-10-14 20:34:53 +00:00
dmcmahill
8b1f1d76a0 after the build, pull in 'lang/perl5' instead of 'lang/perl5-base' as the
latter no longer exists.

Also, use '&&' to separate commands where you don't want the second to
execute if the first fails!
2001-10-13 14:32:01 +00:00
hubertf
cbf5bdf8e2 Change my non-standard copyright header to a BSD-style one. 2001-10-12 19:28:02 +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
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
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
c93e1e611d move the code which determines the BROKENFILE and BUILDLOG file names out
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.
2000-12-31 17:38:32 +00:00
dmcmahill
da395b7a6b further cleanup of handling the .broken.files and .make.files
- 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.
2000-12-30 14:53:28 +00:00
skrll
293740a951 Add date to email subject. 2000-12-11 21:40:54 +00:00
hubertf
d17056245a * Make setting ftp_proxy and http_proxy actually work
* Store (t)sorted list of pkgs to build in .l
2000-09-29 04:28:50 +00:00
hubertf
a7334fd64e * Put architecture into summary mail
* 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
2000-09-17 21:55:09 +00:00
hubertf
325db75d6d Allow setting ftp_proxy and http_proxy in build.conf or $environment 2000-09-15 22:25:57 +00:00
hubertf
0e7843f045 Bulk build framework 2000-09-15 22:05:46 +00:00