Personal patches
Go to file
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
accessibility -De-bashism and remove bash dependency. [1] 2008-05-05 19:22:06 +00:00
arabic Removal of arabic/katoob 2008-04-30 07:50:15 +00:00
archivers A change in the lpq1 component of the port: 2008-05-09 14:47:34 +00:00
astro Chase updated distfile, at 4.3.7204.836 now (working again on 6, at least 2008-05-03 13:00:41 +00:00
audio - Update to 2.22.2. 2008-05-07 18:32:26 +00:00
benchmarks - Update to 3.1 2008-05-08 07:14:19 +00:00
biology - add PORTSCOUT 2008-05-04 11:41:25 +00:00
cad Replace local patch with one from vendor. 2008-05-06 08:22:54 +00:00
chinese - Unbreak build after tty changes 2008-05-06 21:49:59 +00:00
comms Exclude releases less then FreeBSD 6.0-STABLE from build process. 2008-05-04 07:45:24 +00:00
converters Update to 0.105. 2008-05-08 08:32:34 +00:00
databases - Update to 1.604 2008-05-09 17:58:04 +00:00
deskutils - fix dependecy 2008-05-05 20:00:46 +00:00
devel Update to 3.4.5. 2008-05-09 22:28:17 +00:00
dns PowerDNS is an advanced DNS server, which allows for several different 2008-05-07 12:40:00 +00:00
editors Update to 2.6.3. 2008-05-07 21:31:54 +00:00
emulators Fix "drive_init()" Disk Format Security Bypass 2008-05-08 20:45:10 +00:00
finance - Update distinfo 2008-04-23 19:37:20 +00:00
french - Limit BROKEN status to 6.x only 2008-05-05 07:35:09 +00:00
ftp - Update to 1.3.6 2008-05-08 12:10:02 +00:00
games - Update to 0.5.1 2008-05-08 12:12:07 +00:00
german Update to version 4.1.3 (bug fix release). 2008-05-04 16:59:51 +00:00
graphics Upgrade to 3.0.1. 2008-05-09 12:46:51 +00:00
hebrew - Remove unneeded dependency from gtk12/gtk20 [1] 2008-04-19 17:56:05 +00:00
hungarian - Update to 1.3 2008-04-23 16:52:20 +00:00
irc - Update to 0.054 2008-05-08 23:13:22 +00:00
japanese Make migemo ports to properly handle a case that EMACS_PORT_NAME is defined in /etc/make.conf. 2008-05-06 06:43:24 +00:00
java . Update to Eclipse 3.3.2. 2008-05-10 03:51:42 +00:00
korean Update to 0.0.8. 2008-04-22 09:31:01 +00:00
lang - add new option MULTIPLE_THREADS. With this option enabled libsee/dtoa.c is 2008-05-09 17:11:13 +00:00
mail Update to 2.4 124b 2008-05-10 12:02:07 +00:00
math Update to 14.0.2 2008-05-08 21:29:06 +00:00
mbone Reset fenner's port maintainerships. portmgr has taken his commit bit 2008-04-29 05:36:38 +00:00
misc - Update to 13.7 2008-05-07 04:56:00 +00:00
Mk Add support for GCC 4.3 (lang/gcc43), to be enabled by USE_GCC=4.3+. 2008-05-05 23:26:30 +00:00
multimedia Update to 2.22.3. 2008-05-09 21:30:52 +00:00
net - fix build with gcc 4.2 [1] 2008-05-10 09:00:09 +00:00
net-im - Update to 4.22.5-36-gc1c0 2008-05-06 13:23:52 +00:00
net-mgmt - Update to 0.11.7 2008-05-10 12:25:48 +00:00
net-p2p Update to 1.20. 2008-05-09 22:39:29 +00:00
news Forgot to remove the patch file 2008-05-04 05:01:44 +00:00
palm update to 1.62 2008-04-30 12:50:15 +00:00
polish - Add openssl option 2008-04-23 21:49:02 +00:00
ports-mgmt Remove the ports-mgmt/instant-tinderbox port since its design doesn't 2008-05-06 23:25:46 +00:00
portuguese - Remove unneeded dependency from gtk12/gtk20 [1] 2008-04-19 17:56:05 +00:00
print - Fix build problem on !i386 platforms[1]. 2008-05-08 18:54:23 +00:00
russian Update to version 4.1.3 (bug fix release). 2008-05-04 16:59:51 +00:00
science - fix Bundle install 2008-05-07 04:28:38 +00:00
security Upgrade from 0.42 to 0.43 2008-05-10 07:40:22 +00:00
shells Better version of the previous commit, with an unconditional patch this 2008-05-06 11:52:45 +00:00
sysutils Backport of https support from Apt 0.7. This is a useful feature that would be 2008-05-09 16:52:12 +00:00
Templates
textproc Update to 1.45 2008-05-08 19:26:16 +00:00
Tools NNew build scheduler written in python to replace the make+sh job 2008-05-10 13:22:51 +00:00
ukrainian - Remove unneeded dependency from gtk12/gtk20 [1] 2008-04-19 17:56:05 +00:00
vietnamese - Remove unneeded dependency from gtk12/gtk20 [1] 2008-04-19 17:56:05 +00:00
www - Update to 2008-05-05. 2008-05-10 04:48:07 +00:00
x11 Eagle Mode is an advanced solution for a futuristic style of 2008-05-08 12:06:03 +00:00
x11-clocks 3 2008-04-29 18:00:11 +00:00
x11-drivers - Update 1.2.1 2008-04-19 20:57:04 +00:00
x11-fm - Downgrade to 1.2.4 because 1.2.5 have some problems and doesn't build fine in all architectures. 2008-04-29 12:49:30 +00:00
x11-fonts Add port x11-fonts/code2001: 2008-05-10 06:50:57 +00:00
x11-servers - Remove unneeded dependency from gtk12/gtk20 [1] 2008-04-19 17:56:05 +00:00
x11-themes The gnome-themes-extras no longer has industrial engine since GNOME 2.20 and 2008-04-30 03:43:11 +00:00
x11-toolkits - Update to 3.4M6 2008-05-09 07:52:54 +00:00
x11-wm Update 2.5.24 --> 2.5.26 2008-05-07 17:41:21 +00:00
.cvsignore
CHANGES
COPYRIGHT
GIDs - Add entries for irc/undernet-ircu 2008-05-01 00:54:22 +00:00
KNOBS
LEGAL Update the licensing conditions of Aqua Data Studio. 2008-04-20 15:20:43 +00:00
Makefile
MOVED Remove x11-toolkits/gtkdatabox in favour of x11-toolkits/gtkdatabox2. 2008-05-07 22:57:52 +00:00
README
UIDs - Add entries for irc/undernet-ircu 2008-05-01 00:54:22 +00:00
UPDATING - Add entry for databases/ptop 2008-05-09 00:56:58 +00:00

This is the FreeBSD Ports Collection.  For an easy to use
WEB-based interface to it, please see:

	http://www.FreeBSD.org/ports

For general information on the Ports Collection, please see the
FreeBSD Handbook ports section which is available from:

	http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/ports.html
		for the latest official version
	or:
	The ports(7) manual page (man ports).

These will explain how to use ports and packages.

If you would like to search for a port, you can do so easily by
saying (in /usr/ports):


	make search name="<name>"
	or:
	make search key="<keyword>"

which will generate a list of all ports matching <name> or <keyword>.
make search also supports wildcards, such as:

	make search name="gtk*"

For information about contributing to FreeBSD ports, please see the Porter's
Handbook, available at:

	http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/porters-handbook/

NOTE:  This tree will GROW significantly in size during normal usage!
The distribution tar files can and do accumulate in /usr/ports/distfiles,
and the individual ports will also use up lots of space in their work
subdirectories unless you remember to "make clean" after you're done
building a given port.  /usr/ports/distfiles can also be periodically
cleaned without ill-effect.