Building all the consolidations produces a collection of IPS repositories, all of which might contain packages with different publisher strings (For example the default ONNV publisher is on-nightly).
The publisher can be set in openindiana.sh (see ?snv_138 on snv_134 build notes) by setting PKGPUBLISHER_REDIST.
When you're ready to take all these depots to do an official build, you can use the set-publisher.sh tool from pkg-gate:
# pkg-gate/src/util/publish/set-publisher.sh Usage: -b <build> -d <scratch_dir> -p <publish_repo> <input_repos> -b <build> e.g. -b 136, to make sure to publish only packages from the specified build. Packages from any other builds contained in the repository are simply discarded. This allows us to ignore packages obsoleted in a previous build without requiring that the consolidations strip them. -d <scratch_dir> A scratch directory to use for pkgrecv. If it's not initially empty other packages there will be published at publication time. -p <publish_repo> A file: or http: repository path to publish the results. This repository should have already been created with opensolaris.org as its publisher. <input_repos> A list of input IPS repositories to pull packages from for publishing.
It expects to be run from a directory with a file called set-publisher.transforms inside, which contains the transformation mapping. To change all publishers to openindiana.org, use:
<transform set name=pkg.fmri -> edit value pkg://[^/]+/ pkg://openindiana.org/> # These are needed until 14870 is fixed. <transform file depend -> delete pkg.debug.depend.file .*> <transform file depend -> delete pkg.debug.depend.reason .*> <transform file depend -> delete pkg.debug.depend.type .*> <transform file depend -> delete pkg.debug.depend.path .*> <transform file depend -> delete pkg.debug.depend.severity .*>
set-publisher.sh must be run from within pkg-gate/src/util/publish.
The command below worked for me and pulled in all version of the packages. dev05.openindiana.org:11000 was initially an empty repo. I had to restart pkg.depotd with --rebuild parameter for packages to show up in the repository after doing the publish.
rm -rf /export/home/openindiana/scratch/*; ./set-publisher.sh -b ".*" -d /export/home/openindiana/scratch \ -p http://dev05.openindiana.org:11000/ \ http://dev05.openindiana.org:11145/ \ http://dev05.openindiana.org:10001/ \ http://dev05.openindiana.org:10003/ \ http://dev05.openindiana.org:10000/
NOTE: If a repository already has a correct publisher and you just want to merge with another repository DO NOT USE set-publisher.sh. Just use pkgrecv instead, otherwise the target repository will be utterly screwed and will not see the newer versions.