Child pages
  • Release Publishing with IPS
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Current »

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.

  • No labels