FreeBSD ports tree, and potentially other software repositories.
Various factors make this task a bit more difficult than it might
initially seem. In particular, the array of weird and wonderful
versioning schemes software vendors manage to come up with.
portscout spawns several child processes and does its version checking
in parallel, while attempting to best-guess strange-looking version
numbers, navigate around unhelpful sites and web servers, and contend
with the CPU-heavy rapidly-expanding FreeBSD ports system.
In addition to all this, it is possible to generate nice HTML reports
and send reminder mails to interested parties.
This should probably be considered beta until v1.0 is released.
============
1. Add -t mode to "thoroughly" recurse dependencies, using the
all-depends-list target instead of the combination of the
build-depends-list and run-depends-list targets. This is useful
when the dependencies of a dependency need to be updated, but
the dependency itself doesn't; and -a mode is impractical for
whatever reason.
2. If pkg_create fails, give the user the option of how to handle
it: fail, or ignore the error.
Improvements
============
1. If we are trying to delete distfiles, but a dist subdir has
gone missing, assume that the files are safely deleted (and
inform the user) rather than error'ing out.
2. Search for BROKEN state before FORBIDDEN state, since if
the former is set, the latter is implied, which made the error
message confusing. While I'm here, trim the error message by
removing some redundant information.
3. After successful install, before the dependencies are updated,
apply the same search pattern whether we're updating an existing
port, or installing from scratch using -p /usr/ports/foo/bar.
Otherwise, existing dependencies for a port that was forcibly
pkg_delete'd won't be updated, nor will the newly installed
port's +REQUIRED_BY file be up to date.
Fix
===
1. The file that contains the checksums is not always spelled
"distinfo," so use the MD5_FILE variable to find it
Cleanups
========
1. Further local'ize variables in functions, and factor in some
variables there were used only once. Add more comments that
describe usage of variables with global scope used in a function.
2. Twiddle white space a little more to help key messages stand
out better, and change wording on one message to (hopefully) make
it more clear.
3. Bump copyright
which first updates the ports tree and then runs an
update and a security checkup of all the installed packages.
Portcheck depends on portsnap, portaudit and pkg_version.
WWW: http://www.usebsd.com/pub/portcheck/
PR: ports/107418
Submitted by: Kim Naim Lesmer <naim at usebsd.com>
============
1. Attempt to avoid the problem of multiple background checksum
processes stepping on each other trying to download the same sets of
distfiles. The most pathological case for this is trying to portmaster
the xorg port on a clean box with no distfiles downloaded. (Brought to
my attention by George Hartzell <hartzell@alerce.com>.)
2. In cooperation with sem and skv, add three new environment
variables that can potentially be used by port authors, etc.
UPGRADE_TOOL contains the name of the tool being used, in this case
'portmaster'. UPGRADE_PORT is the full string for the port that we are
currently upgrading, and UPGRADE_PORT_VER is just the version string
part of that.
3. Collect a list of any pkg-message files that we "saw" while doing
the installs, and display them all at the end when everything is done
installing. (Old idea of mine, and others, most recently prompted by
kris.)
4. You can now do 'portmaster .' if you are in a port directory you
want to install.
5. If there is no DISTFILE information in the +CONTENTS file after
an installation, add it in the manner worked out on freebsd-ports@,
and documented in http://www.freebsd.org/cgi/query-pr.cgi?pr=106483.
If that information is present, use it to delete the last known set
of distfiles with certainty, but continue searching the "old" way
until the DISTFILE stuff has been around for a while.
Major Fixes
===========
1. Change the code that reads the MOVED file to recurse through the
whole file. This fixes the problem of getting an "answer" to a
find_moved_port() call only to find out that the "new" port has itself
been moved, or deleted. This is not a major problem, but when it
happens it's ugly. The fix slows down the function by about 1/2 second
on my (fairly fast) box, but that function isn't called often, and
it's better to be thorough. (Brought to my attention by erwin.)
2. Remove a change from the last version that caused way too many
false positives from the MOVED file when there was no installed
version of the port.
3. When running -e, warn the user if there are dependencies on the
port, and improve the error message both here and in the same code
for -s.
Minor Cleanups
==============
1. Assign TMPDIR early in the script, and export it to be safe. Change
occurrences of this variable to use the short form.
2. Factor some code that had been moved to a function back in line
since we're down to just one caller.
3. Only print the verbose message about keeping the current version
of a distfile if we're not in fact deleting all distfiles.
4. Make distfile listing more efficient by using the ALLFILES target
instead of the combination of DISTFILES and PATCHFILES.
allow removing either .tgz or .tbz temporary pkgs.
- Refactor the existing patches so that we have one patch per file to ease
maintenance.
- Pass maintainership to submitter.
- Bump PORTREVISION
PR: ports/106652
Submitted by: Robert C. Noland III <rnoland@2hip.net>
- fix deinstall when web interfaces are not installed
- don't install www[-exp] files and remove them afterwards, remove them after
build
- bump PORTREVISION
PR: 106556 [1]
Submitted by: Beat Gätzi [1]
- don't depend on php if neither web interface is intalled [1]
- bump PORTREVISON for plist changes.
PR: ports/106103 [1] (inspired by)
Submitted by: Nick Barkas [1]
2.3.4. This release is both a bug fix and a new feature release. The
changes include:
* A performance bug with tbcleanup that was introduced in 2.3.3 has been
fixed.
* The portbuild environment is now scrubbed to prevent pollution. This
greatly helps in producing the same packages as pointyhat.
* The HOME environment variable is initialized to /root to fix certain
false positive leftover problems.
* If a port fails to build, the Build is reinitialized before the next
port build is started (unless -noclean is passed to tinderbuild) to
prevent pollution.
* All the new failure patterns have been merged from pointyhat. This
will produce much more accurate failure analysis.
* A new feature has been added to support introducing custom OPTIONS
into port builds. Consult the README for more details.
* With the start of Xorg 7.x merge testing, port problems are being
found due to the move to LOCALBASE. Therefore, Tinderbox needs an easy
way to set non-standard LOCALBASE and X11BASE. This has been addressed
in 2.3.4. To make use of this feature you must either copy rawenv.dist
to rawenv, or add LOCALBASE and X11BASE variables to your rawenv file.
For example:
LOCALBASE=/usr/local
X11BASE=/usr/X11R6
When you want to run a build with non-standard LOCALBASE and/or X11BASE
paths, just change rawenv, then start your build.
Note: this release includes a micro dsversion bump, so you must run the
upgrade.sh to ensure your database static data is up-to-date.
* Replace a dead autotools link with a FreeBSD-based link instead [1]
* Replace USE_*_VER with USE_AUTOTOOLS instead [2]
* Check for a valid EXPIRATION_DATE [3]
PR: 104042 [3]
Requested by: piotr.smyrak@heron.pl [1]
Reported by: ahze [2]
Submitted by: vd [3]
Most visible changes are:
* Database files locking. Only one process can write to them
in the same time.
* pkgdb -F is more smart now and takes OPTIONS, make.conf and
pkgtools.conf settings into account.
Moreover:
* Many bugs fixed.
* Many code refactored.
o Added new output option: `rawfiles' to request outputting only matched
pfiles one by line
o Changed -b option to be the same as -f '(^|/)file$' instead of -f '/file$'
o Added new option -L to mimic -p path -f '.*' -o rawfiles i.e. show all
pfiles for (usually) one port. Inspired by pkg_info -L pkgname
o Ignore case by default and add -S option to force case sensitivity
* Remove my name from pkg-descr
* Raise an error when MOVED file has a wrong format instead of a weird
ruby error. (Reported by kris@FreeBSD.org).
* Fix a bug when -P always treated as -PP.
* Change PORT_UPGRADE environment variable with UPGRADE_PORT (contains
a package name for updating port) and UPGRADE_TOOL=portupgrade.
Discussed with skv@FreeBSD.org and DougB@FreeBSD.org.
* Respect INDEXDIR after fetching INDEX (Andrew Pantyukhin <sat@FreeBSD.org>)
* Add --batch opition.
* Add --without-env-upgrade option.
* Remove -DPACKAGE_BUILDING (it was in fetch-only mode) because it's only
for build cluster, not users. (Pointed out by kris@FreeBSD.org)
* Add detection of stale lock files. They can stay if one of tools suddenly
terminated.
* Improve pkgdb -F - respect OPTIONS and pkgtools.conf settings.
It is compatible with portupgrade and can be used as
an alternative to portupgrade and portmaster.
WWW: http://portutil.sourceforge.jp
Securedog <securedog@users.sourceforge.jp>
PR: ports/104971
Submitted by: Securedog <securedog at users.sourceforge.jp>
=============
1. You can now specify multiple ports to upgrade on the command line,
such as 'portmaster foo-1.23 bar-4.56 baz-7.98'. [1] Pass -n argument
to child processes (as needed) to handle this case.
2. Handle an alternate port that can satisfy a build requirement by
reading the CONFLICTS for the "standard" port, and seeing if we have
one of those installed. [1]
3. Unless the user specifies the new -B option, always build a backup
package when updating an existing port. Unless the user has specified
the -b option, delete the package on successful installation of the
new port, or print a helpful message telling the user where they can
find the package if install fails.
4. Don't only test a port for IGNORE, also test FORBIDDEN and BROKEN
to avoid doing a lot of work on dependencies for a port that we aren't
going to install.
Big Improvements:
=================
1. Significantly enhance the -r option by tracking what ports should
be rebuilt as a result of it, and rebuilding them "in line" if they
are dependencies of other ports that should also be rebuilt. Thus,
make sure that these ports get rebuilt once, and only once. Also,
don't rely on just the installed port's +REQUIRED_BY file to get the
list of dependencies, since it may be out of date. Search the pkg tree
for that port's DEPORIGIN to make sure that we get them all.
2. Track answers to ports that have +IGNOREME files, so the user is
not asked twice.
3. Rather than use all-depends-list to handle dependencies, use a
combination of build-depends and run-depends. This seems to get
everything we actually need, without sucking in a lot of stuff we don't.
4. Stop abusing the config_only mode, and make a clear separation
between first run (if any) and build run that does not depend on it.
This makes -G mode work as intended, with no bad side effects. [1]
Small Improvements:
===================
1. Add PREFIX/sbin to the PATH [1]
2. Cache "no" answers when using -i ("yes" was already cached).
3. If pkg_version thinks that two versions are the same even though
they have different pkg names, don't warn the user.
4. Clean up package code a little.
5. Twiddle the "waiting on" message for fetch & checksum.
6. If a user has a stale +REQUIRED_BY file in a pkg directory, print a
helpful message that suggests how to fix it. [2]
7. Don't tell a user about a -r port to rebuild if we're not going to
rebuild it for whatever reason.
Bug Fixes:
==========
1. Clean up trailing white space.
2. If the pkg data is corrupt, a search for installed port by ORIGIN
could return more than one answer. So, use only the first answer.
3. In dependency_check(), if a port has moved, check the new location
to see if it needs updating.
4. If there are no valid ports to build based on the command line
args, don't try to build /usr/ports/ [3]
[1] Suggested, debugged, and generally helped greatly by mezz
[2] Wondered about by yar
[3] Reminded by Bill Blue
- make sure we don't overwrite user's configuration file in case of [1]
upgrade;
- bump PORTREVISION.
PR: 103858 [1]
Submitted by: Sulev-Madis Silber <madis555 at hot.ee> (maintainer) [1]