ftp site (specified in portbuild.conf). (It used to be implied by
-norestr.)
(2) Remove x11-toolkits/Motif-dummy from list of dummy ports, since
open-motif is now the default. Also gone is the MOTIF_OPEN
variable.
(3) Run the tar -czf of the ports tree and generation of CHECKSUM.MD5
in the background.
(4) Print the amount of time it took for the entire process, as well
as phase 1 and phase 2 of the compilations. (It is done by date
-r, so it will only work modulo 24 hours. Hopefully the build
will never go over 24 hours again.)
(5) Make symlink of the form [ae].${branch}.YYYYMMDD ->
[ae].${branch}.YYYYMMDDHH so we can have the simple "date" form as
well as the new "date+hour" directories for logs.
(6) Remove temporary make status files from /tmp that are over 60
minutes since the last modification. It was filling up the root
filesystem.
(7) Print out an "ls -lrt" of packages/All into logs/ls-lrt. This is
going to be used to evaluate make's job dispatch policies.
mtree outputs.
Also change the title of the file from "List of extra files and
directories" to "List of files and directories that do not match their
mtree description", which is more accurate.
/var/portbuild is the new designated home of the portbuild setup, and
is expected to be a symlink to wherever you choose to put the stuff.
Also, change reportload to use /var/portbuild to store temporary files.
Seems there are some bugs in the null mount code that make the files
inaccessible if you are using an NFS root.
around now.
Make a symlink "Makefile" so I don't have to "make -f ../../Makefile"
when I'm restarting an aborted build.
Print out pnohang messages along with ptimeout messages.
Count the number of jobs at the beginning of the second phase too.
Check integrity of packages at end with gzip -t. Remove the ones that
don't pass the test.
Don't try to compare list of packages if there is no prior list to
compare with.
If the -norestr flag is given, copy the packages to the ftp site.
Make INDEX build failure a fatal error.
Copy INDEX to INDEX-${branch} for later perusal.
There is no -a flag in OpenSSH's scp.
Use sed to remove /usr/ports and stuff from restricted.sh and
cdrom.sh, so they can be run without further modification using
relative directories.
Take more options, namely -norestr (don't build RESTRICTED ports),
-noplistcheck (turn off "extra files check"), and -nodummy (use
open-motif instead of Motif-dummy and XFree86-4-* instead of
XFree86-3). -nodummy will become the default soon. Also a new flag
-nocvs will prevent cvs update on ${branch}/src only (while -nocvsup
will prevent cvsup and cvs update on usr/ports). -nocvs is to be used
when builds for more than one branch shares a same cvsup session.
Write out time cvsup is done so it can be used by log processing
scripts.
Handle dummy ports by using a more generic approach -- list the
directories they reside in (e.g., x11-toolkits/Motif-dummy) and
generate the package name from there, instead of hardcoding them
package names everywhere. Hopefully this will go away when we get rid
of the special case handling for Motif and XFree86.
Add something called "quickports" -- these are packages with very long
dependency lists that always seem to throttle the parallel build near
the end. By spelling them out explicitly, try to make make build
dependencies for them earlier while there are a lot of other stuff to
do. (Our make doesn't do anything with the target list, but maybe I
can fix that someday.)
Copy bindist.tar to clients before the second run of package build
too. It can be useful to "sneak" in fixes if something minorly wrong
is discovered in the bindist during the first run. Since there is a
md5 checking, this copying will not be done unless the files are
actually different.
When -norestr is set, delete restricted packages and distfiles using
restricted.sh immediately after completion of package build.
Generate CHECKSUM.MD5 after packages are built.
Copy distfiles over to the ftp site after everything is done. This is
run in the background on bak/distfiles so the next package build can
immediately start.
distfile to the server right after checksum. This will make it
possible to "harvest" distfiles even for ports that don't currently
build. (This was a reason for a lot of distfiles being lost in the
past -- someone commits a broken port, distfile doesn't get fetched to
ftp.FreeBSD.org since package doesn't build, and distfile is gone from
the master site before the port is fixed.) This also enables more
efficient sharing of distfiles since we can set MASTER_SITE_OVERRIDE
to the port build server and have a better chance of finding the
distfiles there.
Instead of using a simple make package | tee, redirect the output of
make package into a separate log file and concatenate it later. For
some reason, the gconf build always hangs after the build succeeds
(tee doesn't exit).
Handle the new arguments (-norestr for NO_RESTRICTED, -noplistcheck
for NOPLISTCHECK and -nodummy for NODUMMY) by converting them to
environment variables.
Add the branch=5 case. Run ldconfig on /usr/lib/compat too.
dopackages and abort build if there were any errors. It intentionally
leaves lock files behind in that case because it usually requires my
manual intervention to fix whatever's wrong (usually a botched INDEX
build due to someone forgetting to update dependency lines) and we
don't want subsequent failed tries to wipe out all the good packages
and distfiles we have accumulated.
effect since the job scheduler will only look at the first field, but
will give humans looking at the load reports some idea about the
machines (especially crashes).
location.
This is done to avoid write-on-write race conditions, when two package
builds try to write the same distfile back into the server. To avoid
this, the distfiles are first copied over to
distfiles/.pbtmp/${PKGNAME}, and then a .done file is created in that
directory. This script runs on the server periodically to copy the
files to the central location. Since this script copies one distfile
at a time, the race mentioned above doesn't exist. Also, it will only
copy files from directories where the .done file exists to avoid
read-before-write race conditions.
logs when there are logs newer than the .stamp file.
(2) Print time cvs update is done for reference.
(3) Print number of affected ports (the "aff." field). Basically the
number of times the port appears in INDEX minus one (itself), so
it won't take care of all chained build dependencies, but it will
give you some idea how critical a port is when looking at the long
list.
(4) Catch a few more error cases.
Otherwise it is often too hard to find out which port left the directory
behind since packages propagates extra directories. Also, many
of the extra directories contain files, so it makes no sense to ignore them.
directories are still included in the list of "extra stuff", but
are not considered fatal (for now).
(2) Use ls's -a flag to print out list of all files in ${PREFIX}, for
obvious reasons.