I originally thought that the process for publishing consolidation IPS repositories into the main repo would be such that arguments would be used to pass in the URL for each consolidation repo for publishing. In fact, the set-publisher command does this if called directly:

./set-publisher.sh -b $(BUILDID) -d $(SETPUBLISHERDIR) -p $(REPO) $(REPO1) $(REPO2) ... $(REPON)

But the makefile for calling the set-publisher.sh script lists each consolidation explicitly:

publish_setpublisher: $(SETPUBLISHERDIR)
        PYTHONPATH=$(PYTHONPATH) ./set-publisher.sh -b $(BUILDID) \
                -d $(SETPUBLISHERDIR) -p $(REPO) $(ON_REPO) $(INSTALL_REPO)

The makefile doesn't allow the publishing of a single consolidation repository. This would be useful in order to publish consolidation repositories asynchronously. An example of it's usefulness would be if several consolidation repositories are ready for publishing, but 1 or 2 are not. Instead of waiting for the stragglers to start the whole process, the ready repositories could be published first.

In addition, as more consolidations move to IPS, the Makefile will require modifying to add the new consolidations to the list. I think it would be desirable to edit as little source as possible as new consolidations get added.

So my first question is: Is it required that all consolidations be published together, or can they be run through set-publisher.sh individually?

The second question (related to the first):

I'm wondering whether it would be more practical/flexible to instead pass in the consolidation URLs in a single ENV variable, so that the makefile doesn't need to be modified for each new consolidation that comes into the build:

CONSOLIDATION_REPOS=
publish_setpublisher: $(SETPUBLISHERDIR)
        PYTHONPATH=$(PYTHONPATH) ./set-publisher.sh -b $(BUILDID) \
                -d $(SETPUBLISHERDIR) -p $(REPO) $(CONSOLIDATION_REPOS)

CONSOLIDATION_REPOS could be set a number of ways outside of the makefile, but in a way that does not require source changes.

I see that the disadvantage of this method is that there is no default way to publish all consolidation repos. If you did not have CONSOLIDATION_REPOS set to anything, the make would fail since set-publisher.sh would not have enough args. But using the default requires setting up local IPS repositories for each consolidation. By the time we have 6 or 7 consolidations in their own repositories, someone using the default would have to set up these repositories themselves.

One compromise (again assuming that you can publish one repository at a time) would be a combination of having each consolidation repository defined, and having a combined variable that can be overriden. The Makefile would look like:

REPO=http://localhost:10000
ON_REPO=http://localhost:20000
INSTALL_REPO=http://localhost:20001
X_REPO=http://localhost:20002
GNOME_REPO=http://localhost:20003
L10N_REPO=http://localhost:20004
CONSOLIDATION_REPOS=\
ON_REPO \
INSTALL_REPO \
X_REPO \
GNOME_REPO \
L10N_REPO
publish_setpublisher: $(SETPUBLISHERDIR)
        PYTHONPATH=$(PYTHONPATH) ./set-publisher.sh -b $(BUILDID) \
                -d $(SETPUBLISHERDIR) -p $(REPO) $(CONSOLIDATION_REPOS)

In this way, there is still a default, but it can be overridden by setting CONSOLIDATION_REPOS externally to the list of desired repositories.

So in looking ahead, does it make any sense to change the util/publish/Makefile now in anticipation of more consolidation repositories?

-- Alan

_______________________________________________
pkg-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/pkg-discuss

Reply via email to