Skip to contentSkip to conversation

base.bbclass: Deprecate the PRINC logic

RFC PATCH In review Mark Hatle 4 participants 8 messages May 29, 2013

lore
Share & tools
lore

Mark Hatle

author
#0 lore raw

RFC PATCH 1/1 base.bbclass: Deprecate the PRINC logic

Background:

At the recent TSC meeting we were discussing ways of removing the PRINC in favor of the PR server, which should now be standard. The first step in this process is coming up with a simple patch that declared PRINC as deprecated. If this type of patch is successful, the block of code could be replaced with a bb.error eventually.

It is not expected that this patch will go in by itself, but instead should be coordinated with changes to the recipes in common layers such as openembedded-core, meta-openembedded/meta-* and other community layers.

The commit message follows:

The PRINC logic is now deprecated, the PR server should be used to handle the automatic incrementing of the PR (package release) field.

A warning message has been added when princ is defined as anything but '0'.

The default setting of '0' has been retained as some layers use embedded python to increment the PRINC filed. This fails if the base PRINC is not defined.

---
 meta/classes/base.bbclass | 4 ++++
 1 file changed, 4 insertions(+)
meta/classes/base.bbclass +4 -0
index b1642a2..29084a2 100644
@@ -465,8 +465,12 @@ python () {
             appendVar('EXTRA_OECONF', extraconf)
 
     # If PRINC is set, try and increase the PR value by the amount specified
+    # The PR server is now the preferred way to handle PR changes based on
+    # the checksum of the recipe (including bbappend).  The PRINC is now
+    # obsolete.  Return a warning to the user.
     princ = d.getVar('PRINC', True)
     if princ and princ != "0":
+        bb.warn("Use of PRINC is deprecated.  The PR server should be used to automatically increment the PR.  See: https://wiki.yoctoproject.org/wiki/PR_Service"
         pr = d.getVar('PR', True)
         pr_prefix = re.search("\D+",pr)
         prval = re.search("\d+",pr)
Signature · 1 line
1.8.1.2.545.g2f19ada
#1 lore raw
Quoted 33 lines · Mark Hatle

Background:

At the recent TSC meeting we were discussing ways of removing the PRINC in favor of the PR server, which should now be standard. The first step in this process is coming up with a simple patch that declared PRINC as deprecated. If this type of patch is successful, the block of code could be replaced with a bb.error eventually.

It is not expected that this patch will go in by itself, but instead should be coordinated with changes to the recipes in common layers such as openembedded-core, meta-openembedded/meta-* and other community layers.

The commit message follows:

The PRINC logic is now deprecated, the PR server should be used to handle the automatic incrementing of the PR (package release) field.

A warning message has been added when princ is defined as anything but '0'.

The default setting of '0' has been retained as some layers use embedded python to increment the PRINC filed. This fails if the base PRINC is not defined.

---
 meta/classes/base.bbclass | 4 ++++
 1 file changed, 4 insertions(+)
meta/classes/base.bbclass +0 -0
index b1642a2..29084a2 100644

meta/classes/base.bbclass python () { · line 473

Quoted 9 lines
meta/classes/base.bbclass +4 -0
@@ -465,8 +465,12 @@ python () {
             appendVar('EXTRA_OECONF', extraconf)
 
     # If PRINC is set, try and increase the PR value by the amount specified
+    # The PR server is now the preferred way to handle PR changes based on
+    # the checksum of the recipe (including bbappend).  The PRINC is now
+    # obsolete.  Return a warning to the user.
     princ = d.getVar('PRINC', True)
     if princ and princ != "0":
+        bb.warn("Use of PRINC is deprecated.  The PR server should be used to automatically increment the PR.  See: https://wiki.yoctoproject.org/wiki/PR_Service"

There is a missing ")" here.

Cheers,

Richard

Quoted 3 lines
meta/classes/base.bbclass +0 -0
         pr = d.getVar('PR', True)
         pr_prefix = re.search("\D+",pr)
         prval = re.search("\d+",pr)
#2 lore raw
In reply to Mark Hatle
Quoted 11 lines · Mark Hatle

Background:

At the recent TSC meeting we were discussing ways of removing the PRINC in favor of the PR server, which should now be standard. The first step in this process is coming up with a simple patch that declared PRINC as deprecated. If this type of patch is successful, the block of code could be replaced with a bb.error eventually.

It is not expected that this patch will go in by itself, but instead should be coordinated with changes to the recipes in common layers such as openembedded-core, meta-openembedded/meta-* and other community layers.

This doesn't say what's the process of getting all PR increments applied.

Should we send list of recipes and required PR increments per layer (and someone will sum these increments and create actual PR bump from it). Or will we take turns and send actual PR bump patches per layer and someone will define order of layers to go in (so that we prevent many conflicts while merging)?

Quoted 36 lines

The commit message follows:

The PRINC logic is now deprecated, the PR server should be used to handle the automatic incrementing of the PR (package release) field.

A warning message has been added when princ is defined as anything but '0'.

The default setting of '0' has been retained as some layers use embedded python to increment the PRINC filed. This fails if the base PRINC is not defined.

---
 meta/classes/base.bbclass | 4 ++++
 1 file changed, 4 insertions(+)
meta/classes/base.bbclass +4 -0
index b1642a2..29084a2 100644
@@ -465,8 +465,12 @@ python () {
             appendVar('EXTRA_OECONF', extraconf)
 
     # If PRINC is set, try and increase the PR value by the amount specified
+    # The PR server is now the preferred way to handle PR changes based on
+    # the checksum of the recipe (including bbappend).  The PRINC is now
+    # obsolete.  Return a warning to the user.
     princ = d.getVar('PRINC', True)
     if princ and princ != "0":
+        bb.warn("Use of PRINC is deprecated.  The PR server should be used to automatically increment the PR.  See: https://wiki.yoctoproject.org/wiki/PR_Service"
         pr = d.getVar('PR', True)
         pr_prefix = re.search("\D+",pr)
         prval = re.search("\d+",pr)
Signature · 1 line
1.8.1.2.545.g2f19ada
Signature · 1 line
Martin 'JaMa' Jansa     jabber: [email protected]
#3 lore raw
Quoted 13 lines · Martin Jansa
Quoted 11 lines · Mark Hatle

Background:

At the recent TSC meeting we were discussing ways of removing the PRINC in favor of the PR server, which should now be standard. The first step in this process is coming up with a simple patch that declared PRINC as deprecated. If this type of patch is successful, the block of code could be replaced with a bb.error eventually.

It is not expected that this patch will go in by itself, but instead should be coordinated with changes to the recipes in common layers such as openembedded-core, meta-openembedded/meta-* and other community layers.

Quoted 8 lines

This doesn't say what's the process of getting all PR increments applied.

Should we send list of recipes and required PR increments per layer (and someone will sum these increments and create actual PR bump from it). Or will we take turns and send actual PR bump patches per layer and someone will define order of layers to go in (so that we prevent many conflicts while merging)?

This is something we need to figure out. The realistic process is probably do this layer by layer. If we can batch some up together that would obviously be better...

Cheers,

Richard

#4 lore raw
Quoted 26 lines · Richard Purdie
Quoted 5 lines · Martin Jansa
Quoted 4 lines · Mark Hatle

Background:

At the recent TSC meeting we were discussing ways of removing the PRINC in favor of the PR server, which should now be standard. The first

step

Quoted 2 lines
Quoted 2 lines

in this process is coming up with a simple patch that declared PRINC as deprecated. If this type of patch is successful, the block of code

could

Quoted 5 lines
Quoted 5 lines

be replaced with a bb.error eventually.

It is not expected that this patch will go in by itself, but instead should be coordinated with changes to the recipes in common layers such as openembedded-core, meta-openembedded/meta-* and other community

layers.

Quoted 9 lines

This doesn't say what's the process of getting all PR increments applied.

Should we send list of recipes and required PR increments per layer (and someone will sum these increments and create actual PR bump from it). Or will we take turns and send actual PR bump patches per layer and someone will define order of layers to go in (so that we prevent many conflicts while merging)?

Quoted 4 lines

This is something we need to figure out. The realistic process is probably do this layer by layer. If we can batch some up together that would obviously be better...

If this is the case, to ensure we have the PR in sync we should have it PRINC as a bb.error; this will cause some pain but will avoid PRServer picking the layer PRINC and losing it in next build. Or does PRServer handle this gracefully?

Regards,

Signature · 3 lines
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://projetos.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750
#5 lore raw
Quoted 44 lines · Otavio Salvador

On Wed, May 29, 2013 at 11:47 AM, Richard Purdie <[email protected]> wrote:
On Wed, 2013-05-29 at 16:37 +0200, Martin Jansa wrote:
> On Wed, May 29, 2013 at 08:51:36AM -0500, Mark Hatle wrote:
> > Background:
> >
> > At the recent TSC meeting we were discussing ways of removing the PRINC
> > in favor of the PR server, which should now be standard.
The first step
> > in this process is coming up with a simple patch that declared PRINC as
> > deprecated. If this type of patch is successful, the block of code could
> > be replaced with a bb.error eventually.
> >
> > It is not expected that this patch will go in by itself, but instead
> > should be coordinated with changes to the recipes in common layers such
> > as openembedded-core, meta-openembedded/meta-* and other community layers.
>
> This doesn't say what's the process of getting all PR increments
> applied.
>
> Should we send list of recipes and required PR increments per layer (and
> someone will sum these increments and create actual PR bump from it). Or
> will we take turns and send actual PR bump patches per layer and someone
> will define order of layers to go in (so that we prevent many conflicts
> while merging)?

This is something we need to figure out. The realistic process is
probably do this layer by layer. If we can batch some up together that
would obviously be better...

Quoted 4 lines

If this is the case, to ensure we have the PR in sync we should have it PRINC as a bb.error; this will cause some pain but will avoid PRServer picking the layer PRINC and losing it in next build. Or does PRServer handle this gracefully?

I proposed this but other TSC members didn't like the approach and would prefer a grace/warning period, maybe spanning until after the next release.

I can see the arguments both ways...

Cheers,

Richard

author
#6 lore raw
Quoted 50 lines · Richard Purdie
Quoted 44 lines · Otavio Salvador

On Wed, May 29, 2013 at 11:47 AM, Richard Purdie <[email protected]> wrote:
On Wed, 2013-05-29 at 16:37 +0200, Martin Jansa wrote:
> On Wed, May 29, 2013 at 08:51:36AM -0500, Mark Hatle wrote:
> > Background:
> >
> > At the recent TSC meeting we were discussing ways of removing the PRINC
> > in favor of the PR server, which should now be standard.
The first step
> > in this process is coming up with a simple patch that declared PRINC as
> > deprecated. If this type of patch is successful, the block of code could
> > be replaced with a bb.error eventually.
> >
> > It is not expected that this patch will go in by itself, but instead
> > should be coordinated with changes to the recipes in common layers such
> > as openembedded-core, meta-openembedded/meta-* and other community layers.
>
> This doesn't say what's the process of getting all PR increments
> applied.
>
> Should we send list of recipes and required PR increments per layer (and
> someone will sum these increments and create actual PR bump from it). Or
> will we take turns and send actual PR bump patches per layer and someone
> will define order of layers to go in (so that we prevent many conflicts
> while merging)?

This is something we need to figure out. The realistic process is
probably do this layer by layer. If we can batch some up together that
would obviously be better...

Quoted 4 lines

If this is the case, to ensure we have the PR in sync we should have it PRINC as a bb.error; this will cause some pain but will avoid PRServer picking the layer PRINC and losing it in next build. Or does PRServer handle this gracefully?

Quoted 5 lines

I proposed this but other TSC members didn't like the approach and would prefer a grace/warning period, maybe spanning until after the next release.

I can see the arguments both ways...

I prefer the warning for one release approach. What I'm afraid will happen is oe-core is released in the Fall, and a group of users migrates to it from the last release and suddenly all of their layers break. These are the people who do not keep up with day to day development.

With the warning, they won't be immediately blocked -- but will be sufficiently annoyed (and warned) that they need to fix something or it will break.

--Mark

Quoted 10 lines

Cheers,

Richard

_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

#7 lore raw
Quoted 63 lines · Mark Hatle
Quoted 54 lines · Richard Purdie
Quoted 39 lines · Otavio Salvador

On Wed, May 29, 2013 at 11:47 AM, Richard Purdie <richard.purdie@**linuxfoundation.org<[email protected]>> wrote:
On Wed, 2013-05-29 at 16:37 +0200, Martin Jansa wrote:
> On Wed, May 29, 2013 at 08:51:36AM -0500, Mark Hatle wrote:
> > Background:
> >
> > At the recent TSC meeting we were discussing ways of removing the PRINC
> > in favor of the PR server, which should now be standard.
The first step
> > in this process is coming up with a simple patch that declared PRINC as
> > deprecated. If this type of patch is successful, the block of code could
> > be replaced with a bb.error eventually.
> >
> > It is not expected that this patch will go in by itself, but instead
> > should be coordinated with changes to the recipes in common layers such
> > as openembedded-core, meta-openembedded/meta-* and other community layers.
>
> This doesn't say what's the process of getting all PR increments
> applied.
>
> Should we send list of recipes and required PR increments per layer (and
> someone will sum these increments and create actual PR bump from it). Or
> will we take turns and send actual PR bump patches per layer and someone
> will define order of layers to go in (so that we prevent many conflicts
> while merging)?

Quoted 6 lines

This is something we need to figure out. The realistic process is
probably do this layer by layer. If we can batch some up together that
would obviously be better...

If this is the case, to ensure we have the PR in sync we should have

Quoted 4 lines

it PRINC as a bb.error; this will cause some pain but will avoid PRServer picking the layer PRINC and losing it in next build. Or does PRServer handle this gracefully?

Quoted 6 lines

I proposed this but other TSC members didn't like the approach and would prefer a grace/warning period, maybe spanning until after the next release.

I can see the arguments both ways...

Quoted 8 lines

I prefer the warning for one release approach. What I'm afraid will happen is oe-core is released in the Fall, and a group of users migrates to it from the last release and suddenly all of their layers break. These are the people who do not keep up with day to day development.

With the warning, they won't be immediately blocked -- but will be sufficiently annoyed (and warned) that they need to fix something or it will break.

The problem is the following:

OE-Core adds warning;
Layer1 submit the PR bump request and drop the internal PRINC Layer1 gets PRINC removal commited
User1 updates Layer1 (and OE-Core didn't yet apply the PR bump)

PR goes backwards.

Now the inverse:

OE-Core adds warning;
Layer1 submit the PR bump request and drop the internal PRINC OE-Core commits PR bump
User1 updates Layer1 (and OE-Core didn't yet apply the PR bump)

PR goes forward as PRINC didn't yet been removed so when Layer1 is updated again, it will go backwards

Signature · 3 lines
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://projetos.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750