Commit graph

31 commits

Author SHA1 Message Date
Kris Kennaway
90e209c3d9 * Cleanup
* Catch up to build ID directory changes
* Add support for ssh_cmd and scp_cmd to allow using HPN-SSH with the
  none cipher where possible (for performance)
* Lazy client setup; claim-chroot will report if the client needs to be
  set up with this buildid, and we initiate the setup and poll until
  it is complete.  This allows fast clients to begin building before
  slow ones have finished setting up.

TODO: a better solution would be to avoid trying to dispatch jobs onto
clients that are in the process of setting up, since they often have low
loads and are picked preferentially by the job scheduler.
2008-07-26 14:01:07 +00:00
Mark Linimon
2c493361b0 Add the standard 6-line header and URL to all build failure logs, not
just the plist ones.  If the log is less than 1000 lines after the header,
include it all; else, trim to last 1000 lines.

This should help when deciding where to forward logs.

Tested on:	pointyhat
2007-12-24 14:25:42 +00:00
Kris Kennaway
bc7eeeee96 Increase global build timeout to 100 hours 2007-02-18 08:58:46 +00:00
Kris Kennaway
57407fb769 * Drop alpha support
* Increase sparc64 build timeout to 24 hours (we have so few build
  machines that we cannot afford to tie them up for longer)

* Increase other arch build timeout to 100 hours (hello openoffice!)

* If we successfully build a formerly broken package, touch errors/.force
  which will kick off a rebuild of the html files
2006-09-14 05:24:09 +00:00
Kris Kennaway
fc0b01f665 Temporarily back out the pre.log change, it doesn't work properly.
Approved by:    portmgr (implicit)
2006-03-13 03:05:51 +00:00
Kris Kennaway
56aabd9e31 Save the output of portbuild run on the client to a temporary log file.
If portbuild bailed out unexpectedly, mail the log to ${mailto}.

Add some XXX comments about improving robustness of this script.

Sleep for 2 minutes before retrying builds, to avoid spamming ${mailto}
with a high rate of failure logs.  In future we might be smarter about
attempting to automatically correct common failure modes.
2006-02-15 07:44:47 +00:00
Kris Kennaway
624d76fbca * Use ${mailto} portbuild.conf variable instead of hard-coded list [1]
* Remove old logs and possible compressed logs before attempting the build

Requested by:   lofi [1]
Submitted by:   linimon [1]
No more accidental portbuild spam:      kris and krion [1]
2006-02-11 09:49:53 +00:00
Kris Kennaway
e3e716a021 Flip "noclean" to "clean" 2006-02-03 20:08:56 +00:00
Kris Kennaway
86a1e3f264 * Use lockf -k instead of lockf. If there is ever contention from >1
process, you must use -k or lockf can give out two locks at once
2005-10-11 03:47:33 +00:00
Kris Kennaway
353d47ddd9 * Remove support for the unused -nodummy function
* Finish flipping the switch on -noplistcheck - this is activated by
  passing in the NOPLISTCHECK environment variable instead of
  using PLISTCHECK in the opposite case

* Always pull in the distfiles from the client if they exist (needed
  for forthcoming ports tree changes to satisfy GPL license requirements)

* If the build did not complete "cleanly", e.g. it was interrupted by a
  network outage or client machine panic, then retry it until it succeeds
  instead of just leaving a dirty truncated log
2005-10-11 03:36:50 +00:00
Kris Kennaway
0280b07725 Check for extra files on !i386 also 2005-07-24 20:38:06 +00:00
Kris Kennaway
0715403560 * Include portbuild.conf before portbuild.${hostname} to reset the default
value of variables

* Allow krion to drink from the email firehose

Approved by:    portmgr (self)
2005-01-06 23:07:50 +00:00
Kris Kennaway
e47e305126 Overhaul of the job scheduler. The new scheduler runs builds
synchronously instead of probabilistically scheduling jobs, which
means that the job load on a machine never exceeds a desired
threshold, and we can preferentially use faster machines when they are
available.  This has a dramatic effect on package build throughput,
although I don't yet have precise measurements of the performance
improvements.

Specifically, the changes are:

* Introduce the new variable maxjobs in portbuild.  This replaces the
build scheduling weights previously listed in the mlist file, which
now changes format to list the build machines only, ranked in order of
preference for job dispatches (i.e. faster machines first).

* The ${arch}/queue directory is used to list machines available for
jobs (file content is the number of jobs currently running on the
machine).  Changes to files in this directory are serialized using
lockf on the .lock file.

* Claim a machine with the getmachine script, with the .lock held.
This picks the machine with the fewestnumber of jobs running, which is
listed highest in the mlist file in case of multiple machines with
equal load.  The job counter is incremented, and the file removed if
the counter reaches ${maxjobs} for that machine.  If all machines are
busy, sleep for 15 seconds and retry.

* After we have claimed a machine, we run claim-chroot on it to claim
an empty chroot, as before.  If the claim fails, release the job from
the queue with the releasemachine script and retry after a 15 second
wait.

* When the build is finished, decrement the job counter with the
releasemachine script, with .lock held.

* The checkmachines script now exists only to poll the load averages
for admin convenience (every 2 minutes), and to ping for unreachable
machines.  When a machine cannot be reached, remove the entry in the
queue directory to stop further job dispatches to it.  This needs more
work to deal with reinitialization of machines after they become
available again.

Additional changes to this file:

* Exit if passed a null package name, to avoid badness later on

* Send a nag-mail if pkg-plist errors are detected in the build
2004-12-28 05:40:15 +00:00
Kris Kennaway
cb3b4b98c7 * Bail out if we can't claim a chroot directory in the client (e.g. if
ssh times out)

* Support new portbuild.conf settings:

    client_user = user to connect to on the client (not necessarily root)

    sudo_cmd = If ssh'ing to a non-root user, run this command to gain
               root privs (set to empty string for client_user=root,
               or sudo for !root).  Cannot require interactivity, of
               course.

Approved by:    portmgr (self)
2004-09-26 22:04:57 +00:00
Kris Kennaway
0d973156a7 * Add support for ${TRYBROKEN}.
* Clients no longer have ssh access to the master, so we need to
  push/pull everything on the client from here.  This means we need to
  know where the build took place so we can go in and get the files
  after it finishes.  Introduce the claim-chroot script which
  atomically claims a free chroot directory on the host and returns
  the name.  This directory is later populated by the portbuild script
  if it does not already contain an extracted bindist.

* Use the per-node portbuild.$(hostname) config file to decide where
  in the filesystem to claim the chroot on the build host.

* If a port failed unexpectedly (i.e. is not marked BROKEN), or if
  something strange happened when trying to pull in build results from
  a client, then send me email (XXX should be configurable).

* Clean up after the build finishes and we have everything we need, by
  dispatching the clean-chroot script on the client.
2004-07-14 10:33:19 +00:00
Kris Kennaway
88ecf0ff35 Increase timeout on slow build machines (alpha, sparc64) to 16 hours.
This should probably be made a per-machine variable.
2004-03-08 01:25:25 +00:00
Kris Kennaway
d6e37c8332 Add a -fetch-original switch to dopackages that fetches the distfiles from
the listed MASTER_SITES instead of ftp-master.  Pass the FETCH_ORIGINAL
environment variable to pdispatch and as a command-line switch to
portbuild.
2003-05-18 00:04:28 +00:00
Kris Kennaway
116e3b3e87 Pass down the request to keep distfiles if appropriate. 2003-05-17 00:25:59 +00:00
Kris Kennaway
182d4cc46d Work around broken rand() in -current by changing the way we pick a
random build host.
2003-02-14 09:26:20 +00:00
Kris Kennaway
b26c9f68bd - Use ${arch}
- Increase timeout to 8 hours (this needs to be made per-arch so it
  doesn't overly pessimize fast client machines)
- Support building as a non-privileged user
2003-01-24 04:49:09 +00:00
Kris Kennaway
538513b7da Use PKGSUFFIX from buildenv 2002-09-15 21:57:52 +00:00
Kris Kennaway
2f9e4ad54b * Use portbuild.conf for config information.
* Shorten timeout period from 12 hours to 4 hours to avoid delaying the builds
  unnecessarily.
* Reverse sense of NOPLISTCHECK -> PLISTCHECK, since it's not an option
  we want enabled by default (it causes too many build failures).  This
  was too easy to forget when building packages 'by hand' using the parallel
  makefile.
2002-03-09 23:14:41 +00:00
Kris Kennaway
51d99dad1e Document the use and purpose of this script. 2002-02-11 02:43:14 +00:00
Satoshi Asami
68d197cd25 Add -t and -n flags to ssh. (-t flag suggested by: ps)
This seems to fix a lot of the hang problems to bump up the timeout from
5 hours to 12 hours.
2000-09-26 23:40:13 +00:00
Satoshi Asami
fcb5d2b7fe Instead of doing a pwd | grep (duh!) to find the branch we are
building ports for, pass it as an argument.

Pass NO_RESTRICTED, NOPLISTCHECK and NODUMMY to ssh as flags when said
environment variables are set.
2000-08-29 08:25:14 +00:00
Satoshi Asami
2adb18bf67 Increase wait from 4 hours to 5 hours. Seems the ports are taking longer
to build now.
1999-10-10 11:33:15 +00:00
Satoshi Asami
45f51c8307 Timeout port builds after 4 hours. This will prevent ports that get
stuck indefinitely in fetch or configure from hanging up the entire
build process.
1999-06-22 10:18:40 +00:00
Satoshi Asami
b568349be8 The build root is now one directory up from here. 1999-01-22 10:20:32 +00:00
Satoshi Asami
58dc5e1a21 By defining NOCLEAN in the environment, you can have the chroot dir left
behind.  Useful for debugging.

Touch package on master after copying it back.  This will avoid synchronization
problems when the machines' clocks are wildly skewed.

Remove log from master when build is successful.  No need to keep around
transient error logs.
1999-01-22 10:00:08 +00:00
Satoshi Asami
a348de2d8c Typo in echo statement. 1999-01-07 08:21:37 +00:00
Satoshi Asami
75ec193fb8 The scripts to allow parallel package building. See the README file in
Tools/portbuild for details.

Note that this is still a major work in progress.  I probably forgot
something but I need to go to sleep.  At least it works here (most of
the time :).
1998-12-28 13:27:27 +00:00