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:
Usage: -b <build> -d <scratch_dir> -p <publish_repo> <input_repos>
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.
A scratch directory to use for pkgrecv. If it's not initially
empty other packages there will be published at publication time.
A file: or http: repository path to publish the results. This
repository should have already been created with opensolaris.org
as its publisher.
A list of input IPS repositories to pull packages from for
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/ \
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.