summaryrefslogtreecommitdiff
path: root/Tools/portbuild/README
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/portbuild/README')
-rw-r--r--Tools/portbuild/README83
1 files changed, 83 insertions, 0 deletions
diff --git a/Tools/portbuild/README b/Tools/portbuild/README
new file mode 100644
index 000000000000..73d057f94d14
--- /dev/null
+++ b/Tools/portbuild/README
@@ -0,0 +1,83 @@
+This is the parallelized package building system. Many thanks to
+Steve Price for helping me put this together.
+
+ - Satoshi
+
+In the following, ${branch} is either "2.2" or "3.0" depending on
+which packages you intend to build.
+
+Note that this system is still under development. It will require a
+substantial amount of effort to set up initially, and the following is
+probably missing a lot of stuff. Please let me know of any warts you
+find.
+
+ (1) One of the machines are to be designated as the "master". It is
+ defined in the portbuild script. There is also a "buildroot"
+ directory where everything should reside on the master machine.
+ It is defined in ports/Makefile and the portbuild script. Copy
+ everything under this directory there and make necessary changes.
+
+ (2) On the master, check out the ports tree under
+ ${buildroot}/usr/ports, the appropriate source tree under
+ ${buildroot}/${branch}/src and the doc tree under
+ ${buildroot}/usr/opt/doc. These directories have to be NFS
+ exported to the build machines. (Hint: you should probably add
+ "-alldirs" to /etc/exports.)
+
+ (3) Setup ssh for root between the build machines and the master. It
+ has to work in both directions.
+
+ (4) Put the list of machines you have in "mlist". There is a sample
+ provided in this directory. Each line should have two entries,
+ "hostname" and "power". The "hostname" is self-explanatory; the
+ "power" entry generally discribes how many compilations that
+ machine can run in parallel. It is only relative, so designating
+ two machines 1 and 2 is the same as having them as 10 and 20
+ (modulo any rounding errors).
+
+ Note that you can put the master here as well, but our experience
+ is that our NFS is likely to act up when the master is too busy.
+ Even with a two-processor P6-200, we had to refrain from running
+ any compilations on the master to get NFS to work reliably.
+
+ (5) Go to ${branch}/bindist and follow the instructions in the README
+ files there to create the bindist tarball.
+
+ (6) Generate an XFree86 tarball in ports/x11/XFree86. Use
+ PLIST.stripped to create a smaller version. (You can use it by
+ setting 'PLIST=${PKGDIR}/PLIST.stripped'.) Put it in
+ ${branch}/tarballs.
+
+ (7) If you have Motif, generate a Motif tarball by using
+ ports/x11-toolkits/Motif-dummy. Put it in ${branch}/tarballs.
+
+ (8) Copy ${branch}/tarballs and ${buildroot}/portbuild to same
+ directories on the build machines. Create a directory
+ ${branch}/chroot on the build machines.
+
+ (9) Create the directory ${buildroot}/distfiles, ${branch}/logs and
+ ${branch}/packages/All on the master. Copy the XFree86 and Motif
+ tarballs to the latter directory.
+
+(10) Run the "checkmachines" script on the master in the background.
+ This will check all the machines listed in "mlist" periodically
+ and print the list of least-loaded machines to "ulist".
+
+(11) Run the "makeduds" script at ${buildroot}/usr/ports. The one
+ supplied is for building 2.2 packages on a 3.0 machines. For
+ 3.0, you can replace it with just two lines:
+
+ unset DISPLAY
+ PARALLEL_PACKAGE_BUILD=t make ignorelist ECHO_MSG=true > ../../3.0/duds
+
+(12) Run the "makeindex" script at ${buildroot}/usr/ports. The one
+ supplied is for building 2.2 packages on a 3.0 machines. For
+ 3.0, you can replace it with just one line:
+
+ PORTSDIR=$(pwd) PARALLEL_PACKAGE_BUILD=t make index
+
+(13) Run "make parallel > ../../${branch}/Makefile" in
+ ${buildroot}/usr/ports to generate the Makefile.
+
+(14) Go to ${branch}/packages/All on the master and type "make -k
+ -j<whatever> -f ../../Makefile &". Then wait. :)