Commit graph

818 commits

Author SHA1 Message Date
Kris Kennaway
5953f77e24 Rewrite this to make it more efficient (fewer external command
invocations).  It also fixes some edge cases that were not handled in
the previous version.

TODO: Correctly report IPv6 sockets (already in use by the sparc64 build)
2008-06-02 19:46:03 +00:00
Erwin Lansing
cdb5013c48 Remove support for FreeBSD 5.x 2008-06-01 09:26:12 +00:00
Mark Linimon
11ea3eeed1 Remove the force file, if it was used.
Forgotten by:	linimon
2008-05-29 14:14:54 +00:00
Mark Linimon
ed5147b294 Add a force function here, just like processlogs. 2008-05-29 02:34:41 +00:00
Mark Linimon
4cc67bd216 Add a note that processonelog and processlogs2 are finicky about the
header format of the log files.
2008-05-29 01:46:08 +00:00
Mark Linimon
f5c9292932 Fix these after the 1.31 update to buildscript.
Forgotten by:	pav
2008-05-29 01:45:39 +00:00
Kris Kennaway
9100b4ee0d Rewrite this in python instead of shell. Because we can read the
INDEX once and process internally instead of invoking many external
utilities, runtime is improved from ~20 minutes to <10 seconds.
2008-05-25 18:07:49 +00:00
Kris Kennaway
778518d745 NNew build scheduler written in python to replace the make+sh job
ordering, which had become too limited.

We now build packages ordered by those that are part of the longest
dependency chains first.  This has the effect of building the deepest
parts of the tree first and levelling out the tree height, hopefully
avoiding the situation we currently face where there appear
bottlenecks late in the build where the cluster becomes mostly idle
while waiting for a few long dependency chains to finish building
before the cluster can become fully loaded again.

The algorithm is that we sort the list of remaining packages according
to height (longest dependency chain), then add leaf packages from each
in order until we have filled a queue of length between 100 and 200,
to amortise the cost of this queue rebalancing while not losing the
height averaging property.  Jobs are dispatched from this queue into
worker threads as machine slots become available.

Unlike the make-based solution that required a fixed -j concurrency
value and could not respond to addition/removal of build resources, we
now can dynamically add new machines as they become available to the
queue.

The other advantage of using python is that we have more
customisability and visibility into the build status, e.g. we
periodically report the number of remaining packages, as well as the
list of deepest packages that we are working on.

TODO:

* Implement mtime checking for parent package staleness, so that
  parents are rebuilt if the dependencies are touched more recently.
  Currently packages will not be rebuild if they exist, whether or not
  they are "stale" wrt their dependencies.

* Offload the machine selection into an external queue manager.
  Currently the queue manager used here doesn't interoperate with the
  old one (getmachine/releasemachine) because it's not possible to use
  the lockf()-based mutual exclusion within a multithreaded client.
  Doing that will also allow for a more flexible job placement
  algorithm as well as finer queue customization.
2008-05-10 13:22:51 +00:00
Andrew Pantyukhin
0b5ca793be Add a tiny sh hack - ardiff - compares two archives. 2008-05-06 16:17:01 +00:00
Pav Lucistnik
989ac675fc Remove XFree86-4 from quickports 2008-04-11 11:34:30 +00:00
Pav Lucistnik
b88fea571b Parallelize to 4 concurrent jobs 2008-04-11 11:33:38 +00:00
Pav Lucistnik
0c02d135ff Include per-machine configuration and respect use_zfs flag 2008-04-11 11:32:29 +00:00
Pav Lucistnik
2545b7c79e Sync with pointyhat (reorg) 2008-04-11 11:31:33 +00:00
Pav Lucistnik
7b00cf5640 - Add the port's Makefile ident string to the build log headers
PR:		113234
Submitted by:	Andrej Zverev <andrey.zverev@electro-com.ru>

- Sync with actual script on pointyhat (whitespace, mostly)
2008-03-13 09:54:03 +00:00
Pav Lucistnik
d50ed44a19 - Don't write queue entry for machine that's not on mlist. This allows us to
gracefully remove a node from the workload, and also it prevents build from
  stucking when machine is deleted from mlist.
2008-03-12 16:04:59 +00:00
Pav Lucistnik
f7c728bb1e Make the INDEX_JOBS definition actually effective 2008-03-11 17:05:55 +00:00
Erwin Lansing
170314e4e2 Remove support for 5-exp and add 7-exp, 8 and 8-exp 2008-01-14 17:10:33 +00:00
Erwin Lansing
d32d4753c3 Change homebrew locking routines with lockf(1) based locking. 2008-01-01 13:25:01 +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
Mark Linimon
1a3e27b0eb Copy the duds file to a directory where the web server can find it. This
makes it possible to correctly analyze why packages were not built for a
specific run.

Add a beginning and ending email notification to help coordinate between
multiple portmgrs doing runs.
2007-12-24 01:56:22 +00:00
Mark Linimon
ece1562584 Make the script less whiny for unpopulated builds. 2007-12-23 17:50:29 +00:00
Renato Botelho
e89241beff Fix a problem when add new ports on ports-mgmt category. ports-mgmt/Makefile
lines has 3 spaces before SUBDIR word and all other categories has 4.

I've asked pav@ if there is a default format of category Makefiles and he said
the number of spaces doesn't matter, so, i fix addport to respect the current
number of spaces and/or tabs the file has.

Reported by:	miwi, erwin
2007-12-19 16:54:37 +00:00
Kris Kennaway
6db6b14a8e Add support for 7-exp and 8 branches
Approved by:	portmgr (self)
2007-11-04 14:28:25 +00:00
Kris Kennaway
7822c39f44 Correctly report active builds when ZFS is in use
Approved by:	 portmgr (self)
2007-11-04 14:28:04 +00:00
Kris Kennaway
c94b9291a0 * Add support for 7-exp and 8 branches
* XORG_UPGRADE and USA_RESIDENT are no longer required

Approved by:   portmgr (self)
2007-11-04 14:27:19 +00:00
Erwin Lansing
0a56075360 - Add support for FreeBSD 8.0
- Be more robust about param.h and allow space as well as tab as seperator
  while determining OSVERION
2007-10-25 21:51:07 +00:00
Mark Linimon
46f9abbbb3 Add 7-exp, 8. 2007-10-16 00:53:33 +00:00
Mark Linimon
51dbc0f2a0 Add 7-exp and 8. 2007-10-16 00:51:01 +00:00
Mark Linimon
31a7bd9451 Rename 'missing' column to 'not yet built' so as not to confuse terminology
with portsmon reports.

Noticed by:	erwin
2007-10-16 00:37:03 +00:00
Renato Botelho
d54475429d s/query-pr.real/query-pr/ to fix getpr after freefall migration
Discussed at:	#bsdports
2007-10-15 19:37:31 +00:00
Mark Linimon
0cc5febd80 Reflect 8-CURRENT. 2007-10-15 00:40:38 +00:00
Mark Linimon
4451674575 The index page used on pointyhat. 2007-10-15 00:20:29 +00:00
Mark Linimon
d7decd3410 Update this example file to reflect 7.0 branching. 2007-10-14 18:21:34 +00:00
Gerald Pfeifer
957d2a35c5 Replace two further instances of /var/db/pkg by $PKG_DBDIR. 2007-09-16 22:24:12 +00:00
Mark Linimon
ba4a6e6a48 Remove the following false positives, which show up as compiler warnings,
not errors:

  discards qualifiers
  [0-9]: implicit declaration of function
  ISO C\+\+ forbids
2007-09-13 02:30:08 +00:00
Gerald Pfeifer
df787b975d Use PKG_DBDIR instead of hard-coding /var/db/pkg/. Do not silently revert
to defaults for PORTSDIR and PKG_DBDIR if the respective directory does
not exist, but bail out.

Approved by:	netchild
2007-09-08 16:23:13 +00:00
Mark Linimon
6d3018e6fc Change to the latest names of the ooo ports; add jdk16; sort a bit.
Glanced at by:	kris
2007-09-04 21:14:45 +00:00
Alexander Leidinger
0d7a3e7e9f explicit_lib_depends.sh:
- check if an installed libtool records dependencies recursively and
   print a warning if it does
       currently it prints the warning on every system which has libtool
       installed from ports (only my local version doesn't do this, the
       version in the ports is not correctly patched for this, a patch
       similar in complexity (= simple) like the ltdl.m4 one in the
       libtool-port-patch-directory is needed)
 - enhance the regex which is responsible to not print a dependency to
   the port we are just checking
 - add a work in progress (not executed) to collapse the USE_* which
   can have more than one value

neededlibs.sh:
 - we also care about shared libs

resolveportsfromlibs.sh:
 - take care about USE_OPENSSL, USE_EFL, USE_GL, USE_FAM, USE_OPENLDAP,
   USE_SDL
 - search in the "ldconfig -r" output if we can not find the lib ourself
 - a better way of getting the first part of the LIB_DEPENDS stuff
   (lib/libXYZ.so can be specified now too)
 - some line wrapping + whitespace
 - print the origin for the USE_* too (except USE_OPENSSL), so an user
   can make some sanity checks and the explicit_lib_depends.sh can DTRT
   if we check the USE_* port itself
 - warn if we can not determine the right component (can happen for XORG)
   unambiguously.
2007-09-04 19:32:36 +00:00
Alexander Leidinger
5c2c9f05ad One more sanity check, else /+CONTENS will be searched. 2007-08-30 16:48:33 +00:00
Alexander Leidinger
142947601f USE_FREETYPE is for v1, not for v2. Use a perfect match in the case statement. 2007-08-30 16:47:11 +00:00
Alexander Leidinger
bd34c2cc9c Do not list libs which come with the port itself. 2007-08-26 15:03:55 +00:00
Alexander Leidinger
1fc8d4fdd0 Add explicit_lib_depends.sh. 2007-08-26 15:02:24 +00:00
Alexander Leidinger
dd65a20d30 - Add USE_FREETYPE.
- Print the portsdir variable in front of the origin for easy copy und paste
  of the output.
2007-08-26 14:43:52 +00:00
Alexander Leidinger
63e512d248 We should also look into sbin/ (not only bin/ and lib/). 2007-08-24 15:30:31 +00:00
Alexander Leidinger
2733307251 explicit_lib_depends.sh shows you the current explicit dependency list of
libs for a given installed port, e.g.:
	# ./explicit_lib_depends.sh gnome-vfs-2.18.1_2
	USE_GETTEXT=yes
	USE_GNOME+=gconf2
	USE_GNOME+=glib20
	USE_GNOME+=gnomevfs2
	USE_GNOME+=libxml2
	USE_GNOME+=orbit2
	USE_ICONV=yes
	avahi-client:net/avahi
	avahi-common:net/avahi
	avahi-glib:net/avahi
	dbus-1:devel/dbus
	dbus-glib-1:devel/dbus-glib
2007-08-24 14:29:42 +00:00
Alexander Leidinger
011560cf37 Teach about USE_ICONV, USE_GETTEXT, USE_GNOME and USE_XORG. 2007-08-24 14:29:03 +00:00
Alexander Leidinger
43b63893be Add 2 scripts which help in port maintenance to list all direct library
dependencies of a port:
	neededlibs.sh
		Extract direct library dependencies (filenames) from binaries.
	resolveportsfromlibs.sh
		Prints the name(s) of ports(s) given a library filename,
		suitable for direct use (copy&paste) in LIB_DEPENDS.

Example usage is included in the scripts. The following combined usage may
be helpful for further porting/testing automation:
	resolveportsfromlibs.sh -b /usr/local $(neededlibs.sh /test/bin/*)

Requested by:	kris, lofi (sort of)
2007-08-12 12:49:23 +00:00
Gabor Kovesdan
4c9cd257fd - Extract command variable definitions from bsd.port.mk, they are now stored in
bsd.commands.mk and can be easily reused within the infrastructure.
- Revert old DESTDIR implementation.
- Add a new, fully chrooted DESTDIR implementation as bsd.destdir.mk.

Sponsored by:	Google Summer of Code 2007
Approved by:	portmgr (pav)
2007-08-04 11:37:24 +00:00
Kris Kennaway
687f043633 Support builds using zfs and tmpfs backing store
zfs:

* Enabled by use_zfs=1 in portbuild.conf

* Populate build chroots by cloning a zfs snapshot instead of maintaining
  many duplicate copies.  In principle this is very efficient since
  everything is copy-on-write and zfs snapshot creation is almost
  instantaneous.  There might be additional overheads from building on zfs
  though.  Currently the snapshot base is hard-wired to y/${branch}@base
  but should be parametrized.  This also must be populated beforehand, e.g.
  during machine startup

* Clean build chroots by just destroying the snapshot.

tmpfs:

* Enabled by use_tmpfs=1 and tmpfs_size in portbuild.conf

* The previous md strategy of mounting in used/, populating and then
  remounting (to avoid possible races from multiple builds claiming the
  same chroot) doesn't work here because tmpfs instances are destroyed at
  umount.  I am not entirely sure the simpler approach is free from races.
2007-07-29 20:27:54 +00:00
Kris Kennaway
8d84574a4a Refresh old sample portbuild.conf with the one currently used for i386
builds.  Probably this should be better documented and commented ;)
2007-07-29 20:06:05 +00:00
Kris Kennaway
d197960279 * Clean up hacks that had to copy in shared libraries from the host in
order to run certain host binaries that were kernel-dependent.  We
  now seem to be able to rely on the /rescue versions (and killall(1)
  seems to be unused).

* Allow for ccache directories to be shared over NFS via the ccache_dir_nfs
  portbuild.conf boolean

* Populate BSD.local.dist from ${PORTSDIR}/Templates and remove population
  of BSD.x11-4.dist and support for XFree86 3.x
2007-07-29 19:56:36 +00:00
Kris Kennaway
54783169b2 Correct typo ("singal") 2007-07-29 19:48:40 +00:00
Kris Kennaway
064bda8040 * Switch from netcat port to base system nc. Replace symbolic port name
by its numeric equivalent since nc(1) does not look up the former.
2007-07-29 19:45:43 +00:00
Kris Kennaway
5f9d4f6e71 * Retire 4 build and add 6-exp2 experimental build
* Don't populate BSD.local.dist, this file is maintained in the ports tree
  now and is populated at build time
2007-07-29 19:45:05 +00:00
Kris Kennaway
ca2e9e98c7 Retire support for 4 and 4-exp builds 2007-07-29 19:43:22 +00:00
Kris Kennaway
26965e6e9c * Increase index build concurrency to reflect the new, improved pointyhat
* Add support for 6-exp2 experimental builds
2007-07-29 19:42:35 +00:00
Kris Kennaway
cc0916c8a0 * Revise the machine selection algorithm. Previously it chose the first
machine with the lowest number of running jobs.  This worked when the
  clients were all roughly equivalent, but schedules poorly when there
  are some that are much more powerful (e.g. 8-core machines vs UP machines)

* We now compute the ratio of running jobs to maximum jobs and schedule on
  the machine with lowest occupation fraction.  This populates the machines
  to equal fractions of their capacity.
2007-07-29 19:41:52 +00:00
Kris Kennaway
13e1b025a1 Use rsync -L instead of rsync -l to deal with the fact that we like to
symlink ports and src trees elsewhere.  With -l this would turn a populated
tree into a dangling symlink.
2007-07-29 19:39:30 +00:00
Kris Kennaway
b3551fde44 * Remove support for 4 and 4-exp builds and add 6-exp2 experimental build
* Only hardlink the old log files instead of anything else that might be
  in the directories
* Add comment that old logfiles should be removed as well as packages, to
  avoid duplicate versions of the same port log
2007-07-29 19:38:08 +00:00
Pav Lucistnik
87b4c7c511 Introduce straslivy.py, a fancier showrunning type of thing, written in Python. 2007-07-29 19:36:55 +00:00
Kris Kennaway
3eb8ee9622 * Remove processing of 4 and 4-exp logs now that the builds are no longer
run
* Add a 6-exp2 build which is a second experimental tree
* Remove an archaic 4.x/5.x log comparison
2007-07-29 19:36:33 +00:00
Kris Kennaway
5d0b9b3789 * Remove vestiges of procfs mounting/umounting from here; we have to
do it in portbuild from outside the jail thesedays

* Ignore /var/db/fontconfig which does not get restored to pristine state

* Save copies of master.passwd and groups and check them after the build
  for changes, to look for user/group additions that may not be correctly
  registered in UIDs/GIDs.  Future work will hopefully automatically
  check against those files and make unregistered IDs a fatal condition

* Correct logic mistake that was keeping distfiles for collection when
  the checksum mismatched
2007-07-29 19:35:00 +00:00
Pav Lucistnik
98990a91c7 - Log the failure to copy dependant package from pointyhat 2007-07-29 19:27:48 +00:00
Kris Kennaway
fd3a8f51f6 Refactor common variables from case statement for various branches.
Update default X11BASE.  Retire PARALLEL_PACKAGE_BUILD and HAVE_MOTIF which
are now obsolete.
2007-07-29 19:27:22 +00:00
Kris Kennaway
0a0b1be73c Retire this obsolete instruction file dating back to last century. We
have a more modern and complete version in the doc collection.
2007-07-29 19:21:47 +00:00
Mark Linimon
2e85070f37 Drop 4.X statistics. They are half-a-year stale. 2007-07-22 04:36:49 +00:00
Mark Linimon
df852181a7 Add 9 more cases of gcc4; remove some false positives for autoconf; add
an 'f77' reason; flag 'warnings being treated as errors' as 'cc'.  This
reduces the unknown output on i386-7 by about half.
2007-07-02 10:22:47 +00:00
Erwin Lansing
afade85a8a ARCH may be set in the environment for cross building, so only
set it conditionally.

Submitted by:	kris
2007-06-12 15:14:29 +00:00
Erwin Lansing
87b364f5fd Set default architecture to i386. 2007-06-11 21:18:46 +00:00
Erwin Lansing
05ba2446ab Make it possible to override the templates by using an environement
variable TEMPLATES.

RT:		105108 (reworked from)
Submitted by:	Curtis Jewell<swordsman@csjewell.fastmail.us>
2007-05-24 22:23:37 +00:00
Florent Thoumie
d4f0d0048a - Welcome X.org 7.2 \o/.
- Set X11BASE to ${LOCALBASE} for recent ${OSVERSION}.
- Bump PORTREVISION for ports intalling files in ${X11BASE}.
2007-05-19 20:36:56 +00:00
Renato Botelho
75b87da473 Fix addport to work correctly with ports-mgmt category.
Reported by:	miwi
Tested by:	miwi
2007-04-20 12:45:01 +00:00
Vasil Dimov
101df1b468 Use echo instead of printf because external commands cannot be executed
with very long arguments (>400000 characters).

The problem reveals for example if
/usr/ports/Tools/scripts/rmport -d print/ghostscript-gnu
is executed - it does
printf "%s\n" "... 451109 chars ..."

Spotted by:	rafan
2007-03-28 20:39:18 +00:00
Mark Linimon
43ad8e0f95 Add a column for 'build logs'. This is larger than the number of the
packages due to packages being trimmed by RESTRICTED.

While here, note that the 'missing' column will be off by the number of
duplicates in the other columns.  This happens when partial builds are
restarted.
2007-03-23 05:49:49 +00:00
Mark Linimon
9d6f970760 Workaround for the fact that 4/ports is no longer populated on pointyhat. 2007-03-09 02:43:55 +00:00
Vasil Dimov
eed3828ab1 * Run cvs update just before cvs commit to sync a potentially changed files
in the repository. Suggested by: gabor@
* Fix typo in the output
2007-02-19 07:24:36 +00:00
Kris Kennaway
7379c7f034 Increase resource limits to 400MB filesize and 2 hours CPU limit per
process.  Thankyou openoffice!

Pass in the jail IP address in the JAIL_ADDR environment variable
2007-02-18 09:05:28 +00:00
Kris Kennaway
ae0d1702e9 Default to -nocopy when using -norsync 2007-02-18 09:03:52 +00:00
Kris Kennaway
f400f2bb03 Also filter out gconf leftover files from /usr/local as well as /usr/X11R6.
Set DISPLAY to the IP address instead of using the :<...> implied form.
This is required for jails.
2007-02-18 09:03:21 +00:00
Kris Kennaway
ac6a452879 Don't require arch to be passed in on the command line, query it using
uname
2007-02-18 08:59:51 +00:00
Kris Kennaway
b21c917ce8 Don't play silly games trying to guess the arch, we are passed it in on
the command line
2007-02-18 08:59:22 +00:00
Kris Kennaway
bc7eeeee96 Increase global build timeout to 100 hours 2007-02-18 08:58:46 +00:00
Kris Kennaway
487025d7c8 Improved sanitization of the build environment 2007-02-18 08:58:24 +00:00
Kris Kennaway
da57eeaeb0 Don't require an /etc/arch file, we can obtain the information from uname 2007-02-18 08:58:07 +00:00
Kris Kennaway
d48df213cd Also attempt to clean /root/.ccache in case it is in use. When cleaning
on a machine that has use_md_swap=1, allow for the possibility of reusing
a md between builds if md_persistent=1.  This requires a patch from pjd
to support BIO_DELETE in md devices, but it is a big optimization when
it can be used.
2007-02-18 08:57:20 +00:00
Kris Kennaway
21c449a7fa Index building needs to happen before prunefailures is run, otherwise it
will completely erase the list.

When using -continue, don't append to the duds.errors, we don't want to
preserve the old cruft from a previous build
2007-02-18 08:55:39 +00:00
Kris Kennaway
56b6a0b170 Increase cleanup timeout to 5 days from 48 hours, the openoffice builds
now regularly take longer than this :(
2007-02-18 08:53:21 +00:00
Mark Linimon
e472b6f28c Fix late typo in previous commit. 2007-02-14 08:24:23 +00:00
Mark Linimon
385bfc1533 Eliminate some false positives for missing_header, sometimes seen in the
configure step.
2007-02-14 04:16:30 +00:00
Mark Linimon
b0904b6955 Combine all like terms to get another 10% speedup in processing time.
There is no change in any of the individual terms; this is merely a
rearrangement.

This change undoes what I was trying to do back in 2004 of breaking up
each individual test into a grep, for readability.  The performance of
the script has continued to suffer as new greps were added over time,
to the point where this is now a bad tradeoff.
2007-02-13 21:58:21 +00:00
Mark Linimon
f95f03392e Move two more cases into the 'uncommon' section. 2007-02-10 09:19:24 +00:00
Mark Linimon
87143d71d6 Append one character to the gcc4 case (missed during cut-and-paste). 2007-02-10 06:59:13 +00:00
Mark Linimon
8bff98fdb9 Move the uncommon cases below the common ones. A 10% improvement on large
directories, but a 5% loss on smaller ones.

No code changes (yet) except for the deletion of one duplicate
("fetch: transfer timed out" -> "fetch_timeout".
2007-02-10 06:57:53 +00:00
Mark Linimon
31e52eb01c Remove the other 2 cases of apxs. 2007-02-09 21:49:11 +00:00
Mark Linimon
4dd06f27ed Speed up by removing the following obsolete tags:
alignment apxs assert CATEGORIES cgi-bin forbidden stl
2007-02-09 20:55:43 +00:00
Mark Linimon
db8225268f Add a new case, 'gcc4', to try to catch the majority of the exceptions that
we are seeing on the latest -current runs.  Saves 40 seconds of time on
those runs, at the cost of 4 on the others.
2007-02-09 04:50:10 +00:00
Mark Linimon
4a1e61ae9c Fix up the code for amd64-6-exp; add a column to label builds that
still have processes running, and add that into the highlight logic.
2007-02-07 08:00:20 +00:00
Kris Kennaway
2c759cf3d0 Retire PORTOBJFORMAT 2007-02-01 03:28:03 +00:00
Erwin Lansing
f3f3875210 Drop the build on RELENG_4 2007-01-30 14:49:21 +00:00
Vasil Dimov
92615ddfc4 A bunch of cosmetic changes - add one empty line to make the output more
readable and use double quotes everywhere.
2007-01-26 14:25:39 +00:00