Child pages
  • Release Publishing with IPS

Versions Compared


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

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 (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 tool from pkg-gate:

Code Block
# pkg-gate/src/util/publish/

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
     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, use:

Code Block
<transform set name=pkg.fmri -> edit value pkg://[^/]+/ pkg://>

# 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 .*> must be run from within pkg-gate/src/util/publish.

The command below worked for me and pulled in all version of the packages. 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/*; ./ -b ".*" -d /export/home/openindiana/scratch \
-p \  \  \ \

NOTE: If a repository already has a correct publisher and you just want to merge with another repository DO NOT USE Just use pkgrecv instead, otherwise the target repository will be utterly screwed and will not see the newer versions.