Child pages
  • Release Publishing with IPS

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

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:

Code Block
# 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:

Code Block
<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.

Code Block
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.