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.
$DISTDIR to put distfiles in, if they can't touch $PORTSDIR/distfiles.
If this is freefall, default to $tmpdir, which is relatively secure since
most users on it are trusted. Reset FETCH_BEFORE_ARGS to "-btA" instead
of "-btsA", so the distfile is actually fetched. Add a method to allow
the name of the module to be changed if -i is used. Update to use the
modulesupdate that's in /usr/local/bin.
Addport should now work properly on freefall, without -v option.
Submitted by: roger (-s, $tmpdir by default on freefall)
Thanks to: peter (copying modulesupdate to /usr/local/bin)
with a directory specified as ``.'' or containing a ``/''. A new option -i
was added to allow people more control over the port's position in the CVS
repository. A new feature was added to allow multiple ports to be added in
the same execution of addport. Addport will now add a port to the category
Makefile properly if it is the first port in a category.
A major reorganization of addport was also performed - now the functions
are at the *bottom* instead of scattered around. This should allow easier
understanding of the process addport goes through. I've also added -w to
perl's exec args, and moved to a hash for getopts().
usage() was extended to help explain addport's functionality better.
Bugs submitted by: nbm
Some help from: sheldonh
very good with perl yet, so anyone who can propose a better way to do
this (with s/// or m// or something using regex) that might also include
the case where the argument contains slashes (i.e. games/somegame). But
anyways, this should catch folks who use ``.''. :->
Submitted by: obrien, sada
gnomedepends is a script, which analyses pkg/PLIST and gives an advice as to
which GNOME ports should be listes in {RUN,LIB}_DEPENDS for the port to ensure
correct removal of GNOME shared directories.
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.
the script working for the cases when either one directory is a symlink.
Submitted by: Juriy Goloveshkin <juriy@avias.com>, Volodymyr Kostyrko <arcade@limbo.dn.ua>
installed ports collection and prompt to remove unmatching entries (i.e.
distfiles that doesn't have corresponding md5 file).
Hardly requiested by: will
gives a diff of any port with broken distfiles, if the distfile names are
the same. This script will help keep more ports' up-to-date distfiles on
ftp.FreeBSD.org.
PR: 18723
Submitted by: Alexander Langer <alex@cichlids.com>
can be fetched even if the packaging fails. This is to ensure distfiles
with correct checksums can be fetched and put on ftp.FreeBSD.org
before they disappear from the original master sites.
(2) Delete port and all dependencies after packaging, and print out
list of
(a) Security-related files (set[ug]id flag set or world-writable)
(b) Extra files and directories
Requested by: kris (2a only)
getpr - downloads a problem report from GNATS and attempts to extract
the patch, shar, uuencoded file from it.
this probably needs to be checked for potential security problems.
prpatch - just does `patch $1 < pr-patch' (pr-patch is created by getpr)
prdone - checks in the port, attempting to fill out the commit message using
information from the problem report and then takes you into edit-pr
so you don't forget to close the PR.
directory and create symlinks to it.
Move index generation back into the parallel part, let's see if the
echo `perl` fix to bsd.port.mk will make a difference. Move the index
syntax check out of the background job so it can be properly flagged.
XFree86, Motif) to copy, make a variable hold directory names, and
do a "make package-name" in there to obtain the package names.
(2) Exit if there is problem in INDEX. A line that contains
"non-existent" (suggesting a dangling dependency) or a line that
has less or more than nine |'s flag errors.
(3) Pass the fifth argument (bindist.tar's md5) to setupnode.
(4) Typo in spelling "restricted".
Submitted by: marcel
(5) Run cvsup at verbosity level 0 instead of 1.
(6) Print out only ${PKGNAME}, not ${PKGNAME}.log or ${PKGNAME}.tgz
when reporting new or old packages/failures.
(7) Archive /usr/ports used to build packages in ${branch}/tarballs.
Requested by: steve
everything under /var/db/pkg/* before installing dependencies and
during final cleanup.
(2) Change OSREL, OSVERSION and PORTOBJFORMAT (if necessary). Comment
out those for 3-stable.
Reported by: paul, tg
(3) Move mtree until after we actually mount /usr/src. ;)
Reported by: taoka
(4) Run ldconfig with and without -aout in all sorts of directories to
pick up everything that could be in compat dirs etc. Run ldconfig
-aout -R after cleanup too.
This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.
Boy, I'm glad we're not using sup anymore. This update would have been
insane otherwise.
list generation at the same time we're setting up the clients.
duds generation is intentionally separate. If we get an error back
from that one (usually means someone committed a Makefile with a
syntax error), abort the whole thing so we won't generate a faulty
index and destroy the stuff that's been builtbefore.
Lockfile handling is now moved to dopackages2 so we won't overwrite
the build.log file just to say "skipped".
Generate INDEX right after packages are built, from the same INDEX
that was used to build them.
Compare the packages from this build with the previous one and report
what's missing and whatnot.
(1) cvsup
(2) run cvs update on the ports and doc trees
(3) generate new index
(4) generate new duds list
(5) move old packages and distfiles out of the way
(6) build packages
(7) build packages again (to salvage those died with transient errors)
(8) generate restricted list
(9) generate no-cdrom list
Steps (3)-(9) are repeated for 4-current and 3-stable.
delete after building is done. Run mtree regardless of the directory
exists or not. Do not use local copy of dependency packages -- it is
too hard to maintain consistency -- always use one on master.
doesn't complete within the specified timeout period.
I tried to do this from within the pdispatch script, but I couldn't
get all the auxiliary processes to be killed correctly so implemented
this as a separate script in perl.
(2) New variable USE_ZIP -- will change EXTRACT_SUFX to ".zip" and
extract commands/arguments accordingly.
Submitted by: jseger
(3) Use ${GREP} in some places where grep was used.
(4) A little update to the MASTER_SITES_GNU list.
Submitted by: cpiazza@home.net
(5) New target clean-for-cdrom-list and clean-restricted-list -- will
print out commands to delete un-cdromable or unredistributable
files. Save them into a shell script for later use.
(6) Add CXXFLAGS="${CXXFLAGS}" to configure's environment.
Submitted by: reg@shale.csir.co.za
PR: 11353 (part 3/3)
(7) Print out a warning if you try to install without being root.
Abort if ${PREFIX} is not writable.
(8) Add web site to INDEX as tenth field.
Reviewed by: wosch, steve, scrappy
that is built. This saves a lot of time, especiall when the
parallelism (the number of jobs per machine, not the number of
machines) is low.
However, the build script only blows away /usr/local and
/usr/X11R6, so if there is a port that does some nasty things
outside that area, all bets are off.
(2) Better load balancing. Now, each machine reports its own
load in a form of a text file, which the master merely aggregates
to pick the lowest-loaded machine(s). Other than generally
running faster (and more up-to-date) under loaded conditions, the
master script will no longer hold up until a timeout when a
machine goes down.
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.
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 :).