>> Howdy-- >> >> I'm working with Liane on directly generating an IPS repository from >> an ON build. When I parallelized the publication of packages to the >> repo, using a file: URI, I hit a PartialIndexingException. >> >> I've worked around that by starting up pkg.depotd and using an http: >> URI, but that seems suboptimal. >> >> When I experimented with turning off automatic indexing at transaction >> close, I found that I could switch back to a file: URI, and that (on >> my machine, with moderate parallelism) this saved me 25% real build >> time. (Building an entire ON repo dropped from 4m to 3m.) > > Yep. solaris.py uses the same trick.
Aha, and also explicitly refreshes the index when it's done. That's pretty much what we need. I'll look more at this part of the IPS code; I'm not yet up to speed on distro-constructor. >> So that leaves me with a couple of questions for y'all: >> >> 1. The transaction.close() method already takes a refresh_index >> argument, which defaults to True. My experiments above involved >> setting refresh_index=False in my pkgsend invocation, and modifying >> pkgsend on my system to pass pargs to t.close(): >> >> % diff publish.py /usr/bin/pkgsend >> 161c161 >> < pkg_state, pkg_fmri = t.close(abandon) >> --- >>> pkg_state, pkg_fmri = t.close(abandon, pargs) >> % >> >> ...is it inappropriate to pass additional command line arguments on >> from pkgsend to transaction methods (not just t.close, but all of em)? >> Or is pkgsend intended to help keep private interfaces private? If >> the latter, should pkgsend test for non-empty pargs after pulling out >> the options that it parses? > > See these RFEs: > > http://defect.opensolaris.org/bz/show_bug.cgi?id=6572 > http://defect.opensolaris.org/bz/show_bug.cgi?id=6573 > > But no, the pargs shouldn't be passed directly to close(). They need to > be specific options to the related pkgsend subcommand. The > pkgsend/pkgrecv command ideally should be wrappers around the > publication api, and then the publication api wrappers around the hidden > specifics. That ensures that if the publication api changes, that users > won't know, and that if the underlying apis change, the publication api > will hide that from pkgsend/pkgrecv. > > I'd suggest something like --no-refresh. Ok, so the two bugs you mention are complementary, and expose, through the pkgsend cli, functionality which already exists in the transaction publishing api. I think I read that (and paraphrased it) correctly. If that seems like the way we want to go, I'll either pick them up or find a minion to do so. --Mark _______________________________________________ pkg-discuss mailing list [email protected] http://mail.opensolaris.org/mailman/listinfo/pkg-discuss
