[oi-dev] OpenIndiana /hipster build number

Alexander Pyhalov alp at rsu.ru
Thu Jan 9 22:06:24 UTC 2014


Good evening, Andrzej.
I'm glad that you brought up this question again and proposed a rational 
sollution.

However, I have a lot of questions. Sorry, more questions than 
suggestions.


Andrzej Szeszo писал 06.01.2014 17:55:
> I propose a new scheme similar to the following:
> 
> Current version strings:
> 
> pkg://openindiana.org/SUNWcs@0.5.11,5.11-0.151.1.8.1
> pkg://openindiana.org/shell/bash@4.2.45,5.11-0.151.1.8.1
> pkg://openindiana.org/package/pkg@0.5.11,5.11-0.151.1.8.1
> 
> Proposed new version strings:
> 
> pkg://openindiana.org/SUNWcs@0.5.11,5.11-0.2014.0.0.14302.2476
> pkg://openindiana.org/shell/bash@4.2.45,5.11-0.2014.0.0.0.2476
> pkg://openindiana.org/package/pkg@0.5.11,5.11-0.2014.0.0.5055.2476
> 
> The numbers would have the following meaning:
> 
> PKGVERS_BRANCH =
> 0.$(IPSREPO_YEAR).$(IPSREPO_NUM).$(IPSREPO_SUBNUM).$(PKGREV_COMPONENT).$(USERLAND_ID)
> PKGVERS = $(PKGVERS_COMPONENT),$(PKGVERS_BUILTON)-$(PKGVERS_BRANCH)
> 
> Currently, /hipster IPS repository is only growing, there is no way to
> obsolete packages in it, updates and all operations are becoming
> slower and slower. I propose importing latest installable packages
> from /hispter into /hipster-2014.0 and continuing work in a new
> smaller repo. If it becomes too big, we could switch over to
> /hipster-2014.1, etc.

As I understand, you propose two things
1) create multiple repositories to simplify their maintenance and to 
speed up work with them
2) new versioning scheme.

So, I'll group my questions in two parts.

First one concerns multiple repositories.

1) When new repository is created? Once a quarter? When old one is too 
big?

2) What packages are migrated to the new repository?  The latest 
versions of every package in the last active repository?

3) How do we migrate user systems to new repository, let's say from
pkg.openindiana.org/hipster to pkg.openindiana.org/hipster-2014.0 and 
further to pkg.openindiana.org/hipster-2014.1 ?
Some self-destructing SMF? We clearly have to force new BE creation on 
such shift.

As for spped of operations on current repository, is it possible to 
change "pkgrepo rebuild" to "pkgrepo refresh" in Jenkins build jobs? Is 
it safe? Is speedup significant?

> 
> I don't think "$(PKGVERS_COMPONENT),$(PKGVERS_BUILTON)-" part of the
> proposer version string needs much explanation. For illumos-gate or
> pkg5 packages it will always be 0.5.11,5.11-, for other packages it
> will be package-version,5.11- (4.2.45,5.11- in case of bash).
> 
> The -0.2014.0 part would say which pkg.openindiana.org/hipster-20xx.x
> IPS repo package is coming from, for example:
> 
> -0.2014.0 = http://pkg.openindiana.org/hipster-2014.0
> -0.2014.1 = http://pkg.openindiana.org/hipster-2014.1
> 
> IPSREPO_SUBNUM we could bump when there is a "flag day", or when
> multiple packages have to be rebuilt for some reason and updated as
> the same time.
> 
> PKGREV_COMPONENT could be used to specify revision on the component in
> the oi-userland, or in case of illumos-gate or pkg5 could be set to
> git commit number of illumos-gate or pkg-gate.
> 
> USERLAND_ID could be set to oi-userland git commit number that was
> used at the time of building the package.
> 

Now, about versioning scheme.
1) I still don't see a clean way to downgrade package with proposed 
versioning scheme.

2) What is a policy for changing PKGREV_COMPONENT? I propose to set it 
to 0 by default and force people to increment it with every change in a 
component which affects its functionality (i.e., not just code cleanup). 
I would reset it to 0 with every package version bump (e.g. php 5.21=> 
php 5.22), this will allow us to keep it sane. And I'm not sure that it 
is a good idea to use it just to force package rebuild.

3) What will we do with illumos-gate updates? I mean, proposed scheme 
allows us to do it in a safe way. However, when build machine is 
updated, this will force illumos-gate packages update (and BE creation) 
on a user system even if the user just wants to update, let's say, vim. 
And when you want just install security update for php on a server it's 
a problem if doing so requires reboot (for BE activation).
I see several oppotunities.
a) We say, that /hipster is a developer's OI version and it's enough if 
it just will not allow user to update package to non-functioning state 
(i.e. updating php 5.21 to 5.22 is not possible in the same BE if build 
server updated illumos-gate-produced packages between times when php 
5.21 and 5.22 versions were built). It's not a perfect scenario, but I'm 
OK with it. It's much better than allowing user to install php 5.22 in 
the same BE and to find out that  it is not functioning because of libc 
version bump.
b) We update illumos-gate on the server once a (month/week/ ??? ) to 
allow some period of stability. Let's say, each Saturday, so for more 
important servers I can schedule update if necessary for Sunday.
c) We update it by hand on "as strictly necessary" basis (perhaps, 
combining with once a month/quarter).
Related question...
If I have system/library version A installed on build machine and 
version A+N available in server's default repository, will dependent 
packages depend on version A or on A+N? Can we publish new illumos-gate 
versions, but hold build server's version?

4) The same question about IPS. As I understand, on each IPS update pkg 
will require new BE (and IIRC it refuses to install any new package 
until pkg is updated).
I expect that pkg5 repository will not change as often as illumos-gate 
(at least after some time of initial bug-fixing). However, we should 
have some consistent update policy for it.

5) Just a question of taste. Don't you think that 
"4.2.45,5.11-0.2014.0.0.0.2476" is too long? I know, 5.11 is a sacred 
number in Solaris world, but I don't understand why should we have this 
magic in version string (for successful migration? Or IPS just will not 
like anything else?) and not very sure about 0 before year number. (Why 
not just  4.2.45-2014.0.0.0.2476  or MAGIC-2014.0.0.0.2476 for system 
packages?).
I'm just whining and don't have strong opinion on this point :)

Thanks again for looking at this.
---
System Administrator of Southern Federal University Computer Center




More information about the oi-dev mailing list