- eliminate use of ip/hostname as unique keys
- reduce # of fetch's down to 4
- move to using bsdstats.org
- put in a time delay on initial challenge/response
to make it a bit more difficult for fakers
============
1. -e mode to expunge a port via pkg_delete, and optionally
remove its distfiles
2. -s and -e modes now respect -b (backup) and -d|D options
regarding always deleting (or not deleting) distfiles
General
=======
1. Re-factor more code out into functions, and move them earlier in the
script so that they are available to the new features.
2. Clean up the code in a few places to make it slightly more efficient,
and a lot more readable.
Bug Fixes
=========
1. Fix exit status of various code paths to be more in keeping
with Unix tradition [1]
2. Be a lot more thorough about killing off errant children when
the user hits ^C [1]
3. If the directory referred to by PKGREPOSITORY exists, use it
to store packages built for -b and -g instead of HOME [2]
My thanks to both Darren and James for their patience and testing
of several development versions to nail down bugs 2 and 3.
Brought to my attention by: Darren Pilgrim <darren.pilgrim@bitfreak.org> [1]
Brought to my attention by: James O'Gorman <james@netinertia.co.uk> [2]
============
1. -L mode to list all installed ports, and search for updates.
2. Trap SIGINT, and use the opportunity to reap all the child processes
we can find.
3. Warn the user during config mode if a port sets IS_INTERACTIVE
4. Support +IGNOREME files in /var/db/pkg/<portname>, ala portupgrade
5. Store the results of the user's choices for -i during config, so they
don't have to enter it again during build
6. When deleting stale distfiles, recurse through successively shorter
versions of file-name-* till we find something to delete, or run out
of dashes. This means a lot fewer false positives, although the
algorithm is still aggressive.
Performance Optimizations
=========================
1. Skip dependency check prior to build if the 'make config' recursion
does not find any ports that need updating.
2. Cache the dependency list for the parent port.
3. -s mode is now recursive, so if a removed port has dependencies,
they are checked too. Remember what ports the user does not want to
delete so they don't have to keep saying "no."
4. Much better support for failed downloads in the background, and the
'make checksum' process is only run once for each port.
5. Switch to using variables and case rather then grep to maintain state
for current dependencies, answers for -i, etc.
6. Re-order some tests to micro-optimize do_update, etc.
7. Handle regular files in /var/db/pkg more efficiently
8. Track the pid of the parent process, and use that to manage state
more efficiently. Also makes for more readable code.
9. Don't clean dependencies, since we don't recurse through them using
the ports tree, we'll let each portmaster process handle it.
10. Cache information about dependencies that are already up to date
to avoid having to do this check when not necessary. This dramatically
improves performance for building/updating large ports (especially
meta-ports like gnome or kde) with a lot of dependencies.
Bug Fixes
=========
1. Add -f to pkg_delete in -s case
2. Reverse the "is required by" statements to make more sense for -r
3. Add PATCHFILES to the list of distfiles to delete when looking for
stale distfiles
4. Minor cleanups, and better code consistency
5. usage() already exits, so clean up h) getopt
6. Add a catchall getopt so user will get usage() for an invalid option
7. Update some messages to make them more meaningful and simplify code
8. Fix specifying second option to -o in <category/portname> format
9. Properly handle the case where the second argument to -o is a port
that is already installed
10. Don't mention the 'make config' step if -G
Security Enhancement
====================
1. Be more careful to only delete temp files if they haven't already been
deleted or moved
- Move manpage list to separate file
- Add python bindings support
- Pass maintainership to submitter
PR: ports/101372
Submitted by: Stanislav Sedov <ssedov at mbsd.msk.ru>