Commit Graph

3162 Commits

Author SHA1 Message Date
espie
ca5467b575 there's no longer any need to keep track of build.log manually, as it
gets taken care off thru %p/build-stats/%a
2012-03-09 21:18:40 +00:00
espie
11d2036d1a duplicate -m option, resolve conflict by renaming old unused one to -M.
Document some new stuff
2012-03-09 15:16:38 +00:00
espie
38db8f2149 tweak weight handling so that fixing weights and scaling weights works.
add -m option as a reverse to -x, like in pkg_add
2012-03-09 12:51:38 +00:00
sthen
4c24feea48 .poison SEPERATE_BUILD 2012-03-09 11:38:56 +00:00
espie
d1754a0b78 fix things when we don't have any statistics to start with 2012-03-06 13:41:38 +00:00
espie
bffed54177 create build-stats dir (noticed by Mark Patruck) 2012-03-06 11:22:40 +00:00
espie
5327873dc1 fix -a bug: if you specify -I ..., this shouldn't negate a -a.
"permanent build log" under %f/build-stats/%a
-J250 by default
2012-03-05 19:43:09 +00:00
sthen
dc0ad8c2f5 reserve uid for www/trac 2012-03-03 11:40:32 +00:00
espie
a366b51e34 %f for distdir (where fetched distfiles live) 2012-03-02 19:35:09 +00:00
espie
0a05d056a4 keep track of how long a job is stuck, max. 2012-03-02 19:33:43 +00:00
espie
7222a75d55 fix detection of existing dpbs. 2012-03-02 17:14:41 +00:00
espie
243f41a146 better: if old locks, don't warn.
if no locks to possibly remove, well, don't even run ps !
2012-02-28 14:23:27 +00:00
espie
4e1e02f27d document recent options 2012-02-27 20:42:39 +00:00
fgsch
428ac64b90 add pypi mirrors from http://pypi.python.org/mirrors.
rpointel@ ajacoutot@ benoit@ sthen@ ok.
2012-02-27 18:10:41 +00:00
espie
2cc9bc20ca tweak so that dpb -I misc/screen/
will work
2012-02-27 17:50:14 +00:00
espie
fb2feec6cf let's do error messages differently: get die to reset_cursor and die
(reverse-override reporter), and get warn to use myprint (and need for
tabs to become spaces in that case...)
2012-02-27 15:37:36 +00:00
espie
56b1b3241a allow -I/-P/-C and command-line arguments to be lists of pkgpaths, or pkgpath
(it's easy to distinguish between a file and a directory under ports).

expand sequences for those files and hosts

when restarting dpb, kill locks that don't correspond to errors, but to a dpb
running on the same host that's no longer there.

do __WARN__ like __DIE__

option -DDONT_BUILD_ONCE
option -DDONT_CLEAN_LOCKS

document some
2012-02-27 14:51:37 +00:00
espie
e7e37de86c hack to avoid stopping midway thru, need to find a better way... ;( 2012-02-23 21:42:23 +00:00
espie
aa4fe831d9 give FULLPKGPATH in warning message. Redundant, but may be useful for multi. 2012-02-23 08:32:17 +00:00
espie
b4dfd43424 also log the fullpkgpath, no need to go look in the lock proper for that. 2012-02-21 10:37:26 +00:00
espie
1a4ddc336c record master dpb pid and hostname
(will be used for automatic clean-up of locks on startup)
2012-02-20 21:18:48 +00:00
espie
81064a2b7c make sure distdir exists before writing information in there 2012-02-20 16:38:23 +00:00
ajacoutot
ee22512dc3 Deprecate _avahi-autoipd. 2012-02-19 17:53:38 +00:00
robert
b8015755bb disable the _nginx user here 2012-02-19 15:02:56 +00:00
espie
a6d46ce156 make it more obvious that PLIST_DB uses that. 2012-02-18 18:48:21 +00:00
espie
62b1756e6b cosmetic 2012-02-17 07:42:20 +00:00
espie
25362a8808 prevent top-subdirs from ignoring flavor and subpackage markers 2012-02-17 07:41:22 +00:00
espie
958fa76f4d kill fetch-makefile here too 2012-02-17 07:40:35 +00:00
espie
ac82d6c329 cosmetic: fetches come in, so <
explain waiting time better.
2012-02-17 07:36:09 +00:00
espie
9a29fe97e4 allow weights to be scaled
add longer traceback in case we die
2012-02-17 07:35:42 +00:00
espie
bf99288338 scrap old fetch targets
add a warning when LIB_DEPENDS doesn't register (for sthen@)
tweak FLAVOR message for consistency
2012-02-17 07:33:04 +00:00
espie
c422b5ae52 when you never fetched anything after the cipher change, that directory
doesn't exist... don't error out...
2012-01-31 15:45:19 +00:00
espie
10df39f505 missing .P, zap extra parentheses. 2012-01-30 17:11:38 +00:00
ajacoutot
00fa1c45b1 Remove some obsolete syscalls and add one for fpathconf.
From Brad
ok espie@
2012-01-30 16:02:24 +00:00
espie
7b9687cb60 document -DHISTORY_ONLY
nitpick at column width.
2012-01-30 15:15:24 +00:00
espie
7f2b8805ae finish distfiles history handling: people who don't fetch/build the whole
tree may want to weed distfiles too, so allow for a full scan of the tree
without building/fetching anything, just to update history:

dpb -DHISTORY_ONLY

(just requires making sure the right engines are created, and a very shortened
loop at end waiting for history to be updated).
2012-01-30 15:11:04 +00:00
espie
623eb8b2c5 Better name for the task that, duh, is actually updating distfiles history. 2012-01-30 14:19:30 +00:00
espie
e8ba37e682 proper usage diagnostic. 2012-01-29 14:35:40 +00:00
espie
070d4f02a9 allow a list of exceptions, for easier management of distfiles from ports not
yet linked to the build.
2012-01-29 13:03:05 +00:00
espie
8ddfdef47f more flexible error path while scanning, accumulate reasons why broken.
remove a few explicit (and implicit) die from Fetch: missing/out-of-sync
distinfo no longer kill dpb, instead they're properly reported as broken
paths and things still go on (note that even a missing SUPDISTFILE checksum
*will* mark a path as broken, that's totally intentional)
2012-01-29 12:02:20 +00:00
espie
baeec434e0 PKGFILES, why not ? 2012-01-29 11:29:51 +00:00
espie
16fd5981f1 now that update sees all pkgpaths, we can still remove duplicates. 2012-01-28 08:39:40 +00:00
espie
1a3bfc6597 make new mirroring with dpb feature-complete, provide a small perl script that
can remove old distfiles in a smart way according to history.
2012-01-27 19:03:02 +00:00
dcoppa
65090e9b37 Reserve a user for cntlm 2012-01-25 20:55:44 +00:00
espie
cd3220153e remove a bit of noise from the log... we checked already, no need to
log it again.
2012-01-23 10:35:38 +00:00
espie
26b5c343e3 remove that check for now, something in pkg_create chain is not sanitizing
its environment...
2012-01-21 19:07:20 +00:00
espie
9971f34ba5 prevent some errors I've run into recently
- add ERRORS framework to bsd.port.subdir.mk
- trying to add a FLAVOR or a SUBPACKAGE to an intermediate SUBDIR is an
error (see editors/vim-spell,af recently)
- re-including bsd.port.mk/bsd.port.subdir.mk after either of them is an
error (can happen when one moves stuff to Makefile.inc without really thinking
about it, ends up with PKG_ARGS holding some contents twice and make package
erroring out with duplicate contents)
2012-01-21 14:44:40 +00:00
ajacoutot
a47bf72ee0 Update systrace.filter for rthreads syscalls renaming.
from Brad
ok espie@
2012-01-20 13:27:20 +00:00
espie
1ec4d51eba repair dpb -f0
noticed by phessler@
2012-01-18 15:26:49 +00:00
naddy
237122761a we have stpcpy() now 2012-01-17 16:10:42 +00:00
espie
f0d702b93c also scan by_cipher for old stuff. This requires a bit more logic, as
the names of files in there are not totally trivial to figure out from the
normal filename + sha.
-> filename will be stripped off DIST_SUBDIR
-> b64 checksums interfere with filesystem semantics, e.g., /u8//ffg
will become u8/ffg
2012-01-16 18:55:35 +00:00
sthen
baa2ffd218 poison NO_REGRSS, suggested by phessler 2012-01-16 13:18:58 +00:00
espie
0e7a96e0ae flesh out the description of $(DISTDIR)/distinfo and $(DISTDIR)/history 2012-01-14 12:40:35 +00:00
espie
3a6eaf5081 add support to obey PERMIT_DISTFILES* 2012-01-14 12:26:21 +00:00
espie
0739a30939 pass PERMIT_DISTFILES* to dpb fetch 2012-01-14 12:22:07 +00:00
espie
2fe091cc70 recognize pkgpath changes when updating 2012-01-14 12:21:13 +00:00
espie
cb500b33c7 remove files from distinfo when they no longer exist, so when you clean
up files and history, it won't recreate fantom stuff...
2012-01-10 19:35:36 +00:00
espie
f8050aba6f run "expire_old" as a separate job, since it may take some time.
find files under $DISTDIR, anything we don't know about should also
end up in history.
2012-01-09 17:56:28 +00:00
espie
c0aa7effe3 lock may fail 2012-01-09 11:54:30 +00:00
espie
fa990a1dba give dpb more knowledge about distfiles.
- keep a stash indexed by checksum, so dpb can identify duplicate files.
- in a full bulk, if the scan has no errors, write to a ${DISTDIR}/history
file  the files encountered in ${DISTDIR}/distinfo that seem to no longer
be needed (with full timestamp and checksum info).

Should be enough info to know when to expire old DISTDIR entries.
2012-01-08 20:28:37 +00:00
espie
52e58e485e make fetch_manually error directly visible in the lock 2012-01-08 14:40:58 +00:00
espie
3884c2f898 buglet with links and files with a DIST_SUBDIR, as found by naddy@.
people already running dpb -F: just remove /usr/ports/distfiles/distinfo
and rerun dpb.
(or at least all entries with a subdirectory)
2012-01-05 21:49:52 +00:00
espie
0d3bc83fef document -F, as naddy noticed it was not yet documented.
Add more comments to the fact that -R is a hack that doesn't always
work for various reasons, most of which might not ever be fixed...
2012-01-04 02:08:52 +00:00
ajacoutot
fbb3936550 Add remaining syscalls to allow rthreads to work.
from Brad
ok espie@
2012-01-02 12:51:53 +00:00
espie
d9eef11aed prevent dpb from dying if make_link dies (also does not append to global
distinfo, of course)
2012-01-01 18:34:35 +00:00
espie
d45d7573cb document new file semantics. 2011-12-31 14:53:17 +00:00
espie
9938b28564 allow the fetcher part to work as a "true" mirror maker:
- keep a cache of checked checksums as ${DISTDIR}/distinfo
- read existing cache on startup, don't need to recheck those files.
- split checksum_task: update the cache after the checksum is done
- create the by_cipher/sha256/... entries
- in fetch_only mode, do a "long" checksum on existing files not in the cache.

If you ever have doubts on the integrity of already checked files, just
rm ${DISTDIR}/distinfo.
2011-12-31 11:20:00 +00:00
ajacoutot
3126b354d6 Update systrace.filter to allow rthreads to work.
from Brad
ok espie@
2011-12-28 09:39:20 +00:00
sthen
e3b39ca21f reserve 691 for natpmpd 2011-12-23 14:51:21 +00:00
pea
d42d6b3e77 add _pgpool
ok ajacoutot@
2011-12-21 15:31:05 +00:00
miod
95cad4b2a7 In MAKE_ENV, quote PICFLAG as it may contain spaces. Other variables might
require similar quoting in the future, but so far this is enough to repair
port building operation on m68k.
ok espie@
2011-12-21 05:16:04 +00:00
robert
21e0488094 Add support for MODGCC4_VERSION which can be used to define which gcc
version to use with the gcc4 module.
It defaults to 4.2, so there is no functional change.
2011-12-14 18:20:12 +00:00
espie
4cab976e61 zap old junk 2011-12-12 14:52:02 +00:00
jasper
cbd2f0c9f4 add a fragment to prevent picking up gnu awk by accident.
tested in a bulk build by me

  ok espie@
2011-12-12 10:33:33 +00:00
espie
1f6bab1e34 filter out lib-deps with the same pkgpath_and_flavors as what we're
building, like bsd.port.mk does.
won't change anything in the build, but makes pkg_add -a less confusing,
since mp ports won't try to add itself while building.0
2011-12-11 19:55:37 +00:00
espie
d179751a0f on SIGINFO, dump T/B hashes into info.log (and mark the display for refresh,
as the shell might muck it with its own information)
2011-12-10 14:48:40 +00:00
espie
c71b9ad066 expose interface to "refresh" display after some disturbing operation. 2011-12-10 14:47:36 +00:00
espie
0603716dc7 - tweak CONFIG_SITE_LIST to run under infra/db.
- recognize absence of dependencies on gsed, gtar, ggrep,
and prevent more tests from seeing these.
2011-12-10 11:15:16 +00:00
espie
949fe672d3 make it possible to assemble a CONFIG_SITE instead of having one
single file.
approved by aja@, sthen@, jasper@...
2011-12-09 09:42:44 +00:00
espie
ab6b512da4 move the architecture *constants* to a private arch-defines.mk file
That way, bsd.port.arch.mk can still make available in a Makefile, but
we can also include them early in bsd.port.mk, so that they will always
be available from modules and Makefile.inc.
2011-12-08 08:15:36 +00:00
kili
ab869aba97 Reserve uid/gid for hoogle. 2011-12-06 20:35:03 +00:00
sthen
b09a05ec2b reserve uid 688 for dnscrypt-proxy 2011-12-06 19:50:55 +00:00
espie
3081c4ac9a remove "needed" debug log now that things work fine. 2011-12-05 21:27:53 +00:00
espie
c783276075 truly random mode shouldn't peek at most frequent dependencies ! 2011-12-05 21:22:35 +00:00
espie
03c4aa3410 ouch, don't forget to lock at front of prepare (okay, we can avoid it
if no-depends but that's complicated)

also, two distinct critical sections: we don't need to stay locked at
the end of show-prepare-result.

Even though that's not really important, simplify logic a wee little bit
2011-12-05 21:18:55 +00:00
espie
b10178048d move uninstall behavior to uninstall, unbreak !-J
as noticed by fgs@
2011-12-05 18:29:39 +00:00
espie
abb8ddf57d turn -J into an option taking a number.
always run show-prepare-results, and always serialize
depends/prepare/show-prepare-results(/junk) on a single host.
2011-12-05 16:10:00 +00:00
ajacoutot
749308d3d5 Remove MODULE from .poison; it's too generic and breaks at least
sudoku-solver.

ok espie@
2011-12-04 16:31:52 +00:00
espie
a38035bd67 clean-up job running a bit: add methods to Grabber and PortBuilder objects
to access more stuff they need.

Remove distantshell->make, ask state instead.
Provide state with the program we run, and the parameters we pass it.

- same make for distant and local hosts
- pass BUILD_ONCE=Yes if -a.
2011-12-04 12:05:41 +00:00
espie
ddebaf6da6 not ideal, but will now stop at the end of a -F run. 2011-12-04 11:24:38 +00:00
espie
3858760dd5 cut up big method into smaller parts 2011-12-04 10:57:46 +00:00
espie
69df96b71c properly forget old info when rescanning... 2011-12-04 10:39:52 +00:00
espie
0393f66f06 most important usage of dpb upfront, before the exhaustive description of
option.

Drop a few heavy hints regarding ssh usage.
2011-12-03 18:02:39 +00:00
espie
1674edcbbd open needed just once. 2011-12-03 11:10:48 +00:00
espie
c1a46f71e8 faster NFS: if the missing file suddenly reappears, we don't need to rescan
the path, just put it back in the queue, and forget it ever happened.
2011-12-03 11:03:07 +00:00
espie
91b04a0eac fix quick-start: the interface to grabber changed in a silent way.
explicitly move the main_loop near handle_non_waiting_jobs to try to
fix that mess (and finish all the time)
2011-12-03 11:01:47 +00:00
espie
0037a6f50e little message tweak (to be changed anyways) 2011-12-03 09:29:41 +00:00
espie
4d52ff4e54 new -J option
- refactor redirect a bit to store multi-line results to a temporary file
- new show-prepare-results stage using that
- prepare and show-prepare-results shouldn't be NoTime, since they're
predictable.
- lock host thru depends -> junk in the junk case.
acquiring the lock is done thru polling in the child, so that it doesn't block
dpb proper.
- new "junk" stage that gathers dependencies and deletes them.
2011-12-02 22:37:36 +00:00
espie
2cfd4c615d new junk option (to remove packages as they're no longer needed) to pass
around thru JobBuilder (along with locks since we need to write stuff into
that file)
2011-12-02 22:33:46 +00:00
espie
b5c447a355 don't buffer printing to locks, to be able to get dependencies early
gather needed=* lines from locks (may want to cache that info later,
but I don't think it has any actual performance impact)
2011-12-02 22:32:07 +00:00
espie
770bcd5b5a methods required to be able to lock per-host 2011-12-02 22:29:28 +00:00
espie
1c7aab78c9 sort -u requires one parameter to not hang on stdin...
allow SUBDIR=archivers/arc make show-prepare-results to work
2011-12-02 15:14:20 +00:00
espie
18a4d6f4bf remove dangerous optimization: have paths explicitly pass thru the depends
stages, even if the package is already there.

This could break EXTRA depends where the package would already be there,
and thus its dependency tree not really solved, and thus depends could
easily miss packages...

problem reported by nigel@... and not reported by ajacoutot@ :)
2011-12-02 11:52:06 +00:00
espie
f44c50300c EXTRA should (partly) be handled like DEPENDS/BDEPENDS 2011-12-02 11:40:25 +00:00
edd
fc6c327b16 reserve a uid/gid for lcdproc
OK sebastia@
2011-12-01 18:43:32 +00:00
espie
5a04aafc13 zap old stuff, only read plist from stdin if -i was given 2011-12-01 11:20:19 +00:00
espie
ac5bbeeeae rpath without libs, that's a fun one 2011-12-01 11:13:25 +00:00
espie
2a68fab763 thinko 2011-12-01 11:11:23 +00:00
dcoppa
f1ac9597b6 Reserve a seat for the redis user 2011-11-29 15:50:24 +00:00
naddy
4742472cb6 alpha uses gcc4 now, and so does hppa64 2011-11-29 15:11:18 +00:00
sthen
6a53633581 devel/quirks is important, enforce adding it to the plists in check-plist
as done with pkglocatedb. Adding it here suggested by naddy@ (I was originally
going to add it to all the plists).
2011-11-28 12:59:50 +00:00
jasper
5c15af4428 - move to bin and adjust paths where needed, manpages will follown soon 2011-11-28 10:30:22 +00:00
sthen
e7fe871f2c replace "!defined(MASTER_SITE_OVERRIDE)" check for MASTER_SITES[0..9] with the
new ${MASTER_SITE_OVERRIDE:L} == "no" construct, problem reported by naddy@.
2011-11-27 21:04:34 +00:00
espie
48b9bf74ff bug fix, don't forget to finish_scanning when reading from source ! 2011-11-27 17:37:47 +00:00
espie
34c5369453 unconfuse naming 2011-11-27 17:31:54 +00:00
espie
03d1bfec7f generate a tempfile, THEN move to saved_libs if things are okay 2011-11-27 17:21:44 +00:00
espie
51892d0631 explicitly ask for stdin 2011-11-27 16:52:04 +00:00
espie
0dd6bc04b7 document current changes 2011-11-27 16:50:34 +00:00
espie
adfd6c2aaf flag error with -i and no source 2011-11-27 16:50:19 +00:00
espie
5c28768a5a more sensible option combinations. 2011-11-27 16:40:58 +00:00
espie
e0c5221e97 add a bit of debug code that logs everything that's going on... 2011-11-27 16:15:52 +00:00
jasper
d435bb4bc0 whitespace nit 2011-11-27 14:59:21 +00:00
espie
bc6cc54b9b move binary scanner into its own module 2011-11-27 14:49:42 +00:00
jasper
5a5c2e9e14 add a manpage
ok espie@
2011-11-27 13:52:10 +00:00
espie
961be0f72e add a "quiet" option that doesn't say anything about extra libraries unless
there's also missing wantlibs.
2011-11-27 13:39:11 +00:00
espie
f57d8eb001 run objdump in batches, for a *huge* speed-up 2011-11-27 13:29:38 +00:00
jasper
953ca5dbf2 move to bin/ and ajust CPANTEST path
ok espie@
2011-11-27 13:29:35 +00:00
espie
061934ab66 prepare the non ldd parser to handle multiple files 2011-11-27 13:10:36 +00:00
espie
d1e36fa052 finish moving parts to the Runner object 2011-11-27 12:42:40 +00:00
espie
7a7321a0bb rename a few things 2011-11-27 12:29:10 +00:00
espie
d80fe79869 explain source to runner 2011-11-27 12:24:06 +00:00
espie
63f57fae21 abstract running objdump/ldd a bit more into its own class 2011-11-27 12:09:17 +00:00
espie
07aa1b9ba6 move objdump runs to state in order to be able to run it once 2011-11-27 11:50:26 +00:00
espie
cd9c477eff tweak to allow for several files in a single run 2011-11-27 11:37:58 +00:00
espie
5b1516ea0b unify ldd/objdump runs somewhat
tweak FileSource to return its directory separately from the filename,
so that running objdump does a chdir
adjust filename to be a relative path.
2011-11-27 11:29:33 +00:00
espie
a3733c98dd for :patch ports, show-prepare-results should also include the list of
installed dependent ports, so we have no choice but ask, which is fairly
easy to do.
2011-11-26 13:52:52 +00:00
espie
199c383918 slightly nicer display, especially in the presence of a progress meter
on long lists of WANTLIBs.
2011-11-26 12:02:54 +00:00
espie
7b925859cf stop getting bad timings from erroneous builds. 2011-11-26 11:46:15 +00:00
espie
ed8b3e60fa a few more notes 2011-11-25 15:05:56 +00:00
espie
03b76c3a13 - tweak "prepare" stage to give more accurate default/dependency result directly
code should still work with older pkg_info, but you need uptodate pkg_info
for best messages, e.g.,:
===> kdelibs-3.5.10p14 depends on: gettext->=0.10.38 -> gettext-0.18.1p0
===> kdelibs-3.5.10p14 depends on: metaauto-* -> metaauto-1.0
===> kdelibs-3.5.10p14 depends on: autoconf-2.61 -> autoconf-2.61p3
===> kdelibs-3.5.10p14 depends on: gmake-* -> gmake-3.82

- adds target: show-prepare-results that yields the list of installed packages
deduced by prepare

- kill undocumented CLEAN_PLIST_OUTPUT
- remove old internals
- ensure IS_INTERACTIVE and REGRESS_IS_INTERACTIVE are always defined
- fix a bug in FETCH_MANUALLY and BATCH interaction
2011-11-25 13:58:13 +00:00
espie
636426623c grmf, managed to reintroduce two PKG_DBLOCK 2011-11-24 19:24:54 +00:00
espie
ff9908d97d bug-fix, behavior for dependency check with "_DEPENDS_TARGET=package" is
disturbingly complicated (as reported by aja@, naddy@, and others. Sorry,
was looking at the wrong code, so I didn't see the bug)
2011-11-24 18:12:28 +00:00
espie
752bf17c1c zap/protect some stuff.
keep FTP_KEEP_ALIVE for now, until we sort it out.
2011-11-24 17:49:58 +00:00
ajacoutot
36de304a5c build->bin 2011-11-24 14:26:16 +00:00
espie
60bc66c627 use PREPARE_CHECK_ONLY to weed out bugs in dpb.
also, missed passing dontclean to one instance of add_normal_tasks, oops
2011-11-22 16:48:01 +00:00
espie
4b801b7017 shorter lock line: user doesn't really care that multiple pkgpaths ran into
the same lock, rather that it's a lock, and what the lockname is.
2011-11-22 16:46:44 +00:00
espie
fdc7a9c9fd subtle effect of equivalence: sometimes, we do not get back the subdir
we asked for.

This can be a problem, as rescan relies on it to reenter the path in the
various queues.

So, when we build the equivalence hash, give special treatment to extra
paths that match the actual subdirs list.

Problem reported by naddy@, who sees sporadic errors linked to NFS lag,
which mean that paths sometimes get flagged as errors, then later the error
vanishes automatically when the package appears...

well, this makes darn sure the correct pkgpath does not vanish.
2011-11-22 16:44:53 +00:00
jasper
a102f0ce98 whitespaces 2011-11-21 17:13:32 +00:00
espie
2522fc337e minor tweaks 2011-11-21 16:43:52 +00:00
espie
825f591fa4 BASESYSCONFDIR points to /etc (global user settings), and SYSCONFDIR
is derived from it.
old march discussion, prodded by fgs@ about it.
2011-11-21 16:42:52 +00:00