diff mbox series

[yocto-docs,v2] Update the documentation for SRCPV

Message ID 20241125-deprecated-srcpv-v2-1-89bc3afc78db@bootlin.com
State New
Headers show
Series [yocto-docs,v2] Update the documentation for SRCPV | expand

Commit Message

Antonin Godard Nov. 25, 2024, 8:17 a.m. UTC
The variable SRCPV is deprecated since 4.3. Instead of including SRCPV
in PV, including the sign "+" is enough for bitbake to add the source
control information to PKGV during the packaging phase.

Update the documentation for SRCPV and the places where it was used.
When instructions previously referred to SRCPV, replace by mentioning to
include "+" in the assignment.

In most examples, "+git" is added to PV as it is the most popular SCM.
Simply adding "+" is also possible, although it is better practice to
include the SCM name, so give that example.

Update the gcompat example with l3afpad as it didn't include "+git" in
its PV definition anymore.

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
---
Changes in v2:
- Fix typos reported by Quentin.
- kernel-dev/common: mention that `+git` is combined to LINUX_VERSION.
- Link to v1: https://lore.kernel.org/r/20241118-deprecated-srcpv-v1-1-bdab9da44267@bootlin.com
---
 .../contributor-guide/recipe-style-guide.rst       |  6 ++--
 documentation/dev-manual/external-scm.rst          |  9 +++--
 documentation/dev-manual/new-recipe.rst            | 10 +++---
 documentation/dev-manual/packages.rst              | 13 +++----
 documentation/kernel-dev/common.rst                | 13 ++-----
 documentation/ref-manual/variables.rst             | 42 +++++++++++-----------
 6 files changed, 43 insertions(+), 50 deletions(-)


---
base-commit: f064af984c491707dd5a0917e68a033f6c2104f6
change-id: 20241115-deprecated-srcpv-809341065cdf

Best regards,

Comments

Quentin Schulz Nov. 25, 2024, 3:57 p.m. UTC | #1
Hi Antonin,

On 11/25/24 9:17 AM, Antonin Godard wrote:
> The variable SRCPV is deprecated since 4.3. Instead of including SRCPV
> in PV, including the sign "+" is enough for bitbake to add the source
> control information to PKGV during the packaging phase.
> 
> Update the documentation for SRCPV and the places where it was used.
> When instructions previously referred to SRCPV, replace by mentioning to
> include "+" in the assignment.
> 
> In most examples, "+git" is added to PV as it is the most popular SCM.
> Simply adding "+" is also possible, although it is better practice to
> include the SCM name, so give that example.
> 
> Update the gcompat example with l3afpad as it didn't include "+git" in
> its PV definition anymore.
> 
> Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
> ---
[...]
> diff --git a/documentation/ref-manual/variables.rst b/documentation/ref-manual/variables.rst
> index ec4d7ab73fe3ac1bc64f5378c65d19ae0b749809..f611edae9f37097734234805faa34b1850e5cfd1 100644
> --- a/documentation/ref-manual/variables.rst
> +++ b/documentation/ref-manual/variables.rst
> @@ -209,12 +209,11 @@ system and gives an overview of their function and contents.
>            SRCREV = "${AUTOREV}"
>   
>         If you use the previous statement to retrieve the latest version of
> -      software, you need to be sure :term:`PV` contains
> -      ``${``\ :term:`SRCPV`\ ``}``. For example, suppose you have a kernel
> -      recipe that inherits the :ref:`ref-classes-kernel` class and you
> -      use the previous statement. In this example, ``${SRCPV}`` does not
> -      automatically get into :term:`PV`. Consequently, you need to change
> -      :term:`PV` in your recipe so that it does contain ``${SRCPV}``.
> +      software, you need to make sure :term:`PV` contains the ``+`` sign so
> +      :term:`bitbake` includes source control information to :term:`PKGV` when
> +      packaging the recipe. For example::
> +
> +        PV = "6.10.y+git"
>   

I believe this is not properly indented? Missing a space here to follow 
our standards?

>         For more information see the
>         ":ref:`dev-manual/packages:automatically incrementing a package version number`"
> @@ -5152,7 +5151,7 @@ system and gives an overview of their function and contents.
>         The :term:`LINUX_VERSION` variable is used to define :term:`PV`
>         for the recipe::
>   
> -         PV = "${LINUX_VERSION}+git${SRCPV}"
> +         PV = "${LINUX_VERSION}+git"
>   
>      :term:`LINUX_VERSION_EXTENSION`
>         A string extension compiled into the version string of the Linux
> @@ -6720,9 +6719,10 @@ system and gives an overview of their function and contents.
>         For example, consider two recipes ``foo_1.2.bb`` and ``foo_git.bb``
>         where ``foo_git.bb`` contains the following assignment::
>   
> -         PV = "1.1+git${SRCPV}"
> +         PV = "1.1+git${@bb.fetch2.get_srcrev(d)}"
>   

Getting back at my original comment in v1 (forgot to answer again there, 
so doing it here). I'm not sure this makes sense as an example as it is 
not necessary anymore since + character is enough to include that 
information in PKGV (as far as I understood from the patch). I would 
like to avoid suggesting using something that isn't relevant here (or 
discouraged).

I think we could simplify the example. The point is not necessarily to 
use % with a git-named recipe but rather that a git-named recipe is not 
going to match "git" but the "PV" defined in the recipe. What do you think?

Otherwise, I don't really know what kind of example we could provide 
that would match the state before the + character behavior change.

Looks good otherwise!

Cheers,
Quentin
Antonin Godard Nov. 27, 2024, 8:18 a.m. UTC | #2
Hi Quentin,

On Mon Nov 25, 2024 at 4:57 PM CET, Quentin Schulz wrote:
> Hi Antonin,
>
> On 11/25/24 9:17 AM, Antonin Godard wrote:
>> The variable SRCPV is deprecated since 4.3. Instead of including SRCPV
>> in PV, including the sign "+" is enough for bitbake to add the source
>> control information to PKGV during the packaging phase.
>> 
>> Update the documentation for SRCPV and the places where it was used.
>> When instructions previously referred to SRCPV, replace by mentioning to
>> include "+" in the assignment.
>> 
>> In most examples, "+git" is added to PV as it is the most popular SCM.
>> Simply adding "+" is also possible, although it is better practice to
>> include the SCM name, so give that example.
>> 
>> Update the gcompat example with l3afpad as it didn't include "+git" in
>> its PV definition anymore.
>> 
>> Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
>> ---
> [...]
>> diff --git a/documentation/ref-manual/variables.rst b/documentation/ref-manual/variables.rst
>> index ec4d7ab73fe3ac1bc64f5378c65d19ae0b749809..f611edae9f37097734234805faa34b1850e5cfd1 100644
>> --- a/documentation/ref-manual/variables.rst
>> +++ b/documentation/ref-manual/variables.rst
>> @@ -209,12 +209,11 @@ system and gives an overview of their function and contents.
>>            SRCREV = "${AUTOREV}"
>>   
>>         If you use the previous statement to retrieve the latest version of
>> -      software, you need to be sure :term:`PV` contains
>> -      ``${``\ :term:`SRCPV`\ ``}``. For example, suppose you have a kernel
>> -      recipe that inherits the :ref:`ref-classes-kernel` class and you
>> -      use the previous statement. In this example, ``${SRCPV}`` does not
>> -      automatically get into :term:`PV`. Consequently, you need to change
>> -      :term:`PV` in your recipe so that it does contain ``${SRCPV}``.
>> +      software, you need to make sure :term:`PV` contains the ``+`` sign so
>> +      :term:`bitbake` includes source control information to :term:`PKGV` when
>> +      packaging the recipe. For example::
>> +
>> +        PV = "6.10.y+git"
>>   
>
> I believe this is not properly indented? Missing a space here to follow 
> our standards?


Good catch, thank you. Some others below are also not properly indented. It
would be nice if sphinx-lint could report this, but I don't think it is able to.

>>         For more information see the
>>         ":ref:`dev-manual/packages:automatically incrementing a package version number`"
>> @@ -5152,7 +5151,7 @@ system and gives an overview of their function and contents.
>>         The :term:`LINUX_VERSION` variable is used to define :term:`PV`
>>         for the recipe::
>>   
>> -         PV = "${LINUX_VERSION}+git${SRCPV}"
>> +         PV = "${LINUX_VERSION}+git"
>>   
>>      :term:`LINUX_VERSION_EXTENSION`
>>         A string extension compiled into the version string of the Linux
>> @@ -6720,9 +6719,10 @@ system and gives an overview of their function and contents.
>>         For example, consider two recipes ``foo_1.2.bb`` and ``foo_git.bb``
>>         where ``foo_git.bb`` contains the following assignment::
>>   
>> -         PV = "1.1+git${SRCPV}"
>> +         PV = "1.1+git${@bb.fetch2.get_srcrev(d)}"
>>   
>
> Getting back at my original comment in v1 (forgot to answer again there, 
> so doing it here). I'm not sure this makes sense as an example as it is 
> not necessary anymore since + character is enough to include that 
> information in PKGV (as far as I understood from the patch). I would 

Exactly, "+" is enough now.

> like to avoid suggesting using something that isn't relevant here (or 
> discouraged).
>
> I think we could simplify the example. The point is not necessarily to 
> use % with a git-named recipe but rather that a git-named recipe is not 
> going to match "git" but the "PV" defined in the recipe. What do you think?

Ok, something like:

  If your PV is equal to "a.b.c+git", you can match it with "a.b.c%" in
  PREFERRED_VERSION?

This makes more sense with the current state of things, and simplifies the
example a bit.

> Otherwise, I don't really know what kind of example we could provide 
> that would match the state before the + character behavior change.
>
> Looks good otherwise!

Thanks!
Antonin
Quentin Schulz Nov. 27, 2024, 12:51 p.m. UTC | #3
Hi Antonin,

On 11/27/24 9:18 AM, Antonin Godard wrote:
> Hi Quentin,
> 
> On Mon Nov 25, 2024 at 4:57 PM CET, Quentin Schulz wrote:
>> Hi Antonin,
>>
>> On 11/25/24 9:17 AM, Antonin Godard wrote:
>>> The variable SRCPV is deprecated since 4.3. Instead of including SRCPV
>>> in PV, including the sign "+" is enough for bitbake to add the source
>>> control information to PKGV during the packaging phase.
>>>
>>> Update the documentation for SRCPV and the places where it was used.
>>> When instructions previously referred to SRCPV, replace by mentioning to
>>> include "+" in the assignment.
>>>
>>> In most examples, "+git" is added to PV as it is the most popular SCM.
>>> Simply adding "+" is also possible, although it is better practice to
>>> include the SCM name, so give that example.
>>>
>>> Update the gcompat example with l3afpad as it didn't include "+git" in
>>> its PV definition anymore.
>>>
>>> Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
>>> ---
>> [...]
>>> diff --git a/documentation/ref-manual/variables.rst b/documentation/ref-manual/variables.rst
>>> index ec4d7ab73fe3ac1bc64f5378c65d19ae0b749809..f611edae9f37097734234805faa34b1850e5cfd1 100644
>>> --- a/documentation/ref-manual/variables.rst
>>> +++ b/documentation/ref-manual/variables.rst
>>> @@ -209,12 +209,11 @@ system and gives an overview of their function and contents.
>>>             SRCREV = "${AUTOREV}"
>>>    
>>>          If you use the previous statement to retrieve the latest version of
>>> -      software, you need to be sure :term:`PV` contains
>>> -      ``${``\ :term:`SRCPV`\ ``}``. For example, suppose you have a kernel
>>> -      recipe that inherits the :ref:`ref-classes-kernel` class and you
>>> -      use the previous statement. In this example, ``${SRCPV}`` does not
>>> -      automatically get into :term:`PV`. Consequently, you need to change
>>> -      :term:`PV` in your recipe so that it does contain ``${SRCPV}``.
>>> +      software, you need to make sure :term:`PV` contains the ``+`` sign so
>>> +      :term:`bitbake` includes source control information to :term:`PKGV` when
>>> +      packaging the recipe. For example::
>>> +
>>> +        PV = "6.10.y+git"
>>>    
>>
>> I believe this is not properly indented? Missing a space here to follow
>> our standards?
> 
> 
> Good catch, thank you. Some others below are also not properly indented. It
> would be nice if sphinx-lint could report this, but I don't think it is able to.
> 

It's open-source, so maybe something we can contribute :)

>>>          For more information see the
>>>          ":ref:`dev-manual/packages:automatically incrementing a package version number`"
>>> @@ -5152,7 +5151,7 @@ system and gives an overview of their function and contents.
>>>          The :term:`LINUX_VERSION` variable is used to define :term:`PV`
>>>          for the recipe::
>>>    
>>> -         PV = "${LINUX_VERSION}+git${SRCPV}"
>>> +         PV = "${LINUX_VERSION}+git"
>>>    
>>>       :term:`LINUX_VERSION_EXTENSION`
>>>          A string extension compiled into the version string of the Linux
>>> @@ -6720,9 +6719,10 @@ system and gives an overview of their function and contents.
>>>          For example, consider two recipes ``foo_1.2.bb`` and ``foo_git.bb``
>>>          where ``foo_git.bb`` contains the following assignment::
>>>    
>>> -         PV = "1.1+git${SRCPV}"
>>> +         PV = "1.1+git${@bb.fetch2.get_srcrev(d)}"
>>>    
>>
>> Getting back at my original comment in v1 (forgot to answer again there,
>> so doing it here). I'm not sure this makes sense as an example as it is
>> not necessary anymore since + character is enough to include that
>> information in PKGV (as far as I understood from the patch). I would
> 
> Exactly, "+" is enough now.
> 
>> like to avoid suggesting using something that isn't relevant here (or
>> discouraged).
>>
>> I think we could simplify the example. The point is not necessarily to
>> use % with a git-named recipe but rather that a git-named recipe is not
>> going to match "git" but the "PV" defined in the recipe. What do you think?
> 
> Ok, something like:
> 
>    If your PV is equal to "a.b.c+git", you can match it with "a.b.c%" in
>    PREFERRED_VERSION?
> 
> This makes more sense with the current state of things, and simplifies the
> example a bit.
> 

"""
If you want to select a recipe named foo_git.bb which has :term:`PV` set 
to `1.2.3+git`, you can do so by setting :term:`PREFERRED_VERSION_foo` 
to `1.2.3%` (i.e. using simply `git` will not work as the name of the 
recipe isn't used, but rather its :term:`PV`).
"""

or something like that?

Is PV really extended with the git hash when there's a + in there or is 
it only PKGV that gets it? Basically, do you even need % character when 
we have a + in PV now?

Not sure it's clear, lemme know if I need to rephrase my question.

Cheers,
Quentin
Antonin Godard Nov. 27, 2024, 1:17 p.m. UTC | #4
Hi Quentin,

On Wed Nov 27, 2024 at 1:51 PM CET, Quentin Schulz via lists.yoctoproject.org wrote:
> Hi Antonin,
>
> On 11/27/24 9:18 AM, Antonin Godard wrote:
>> Hi Quentin,
>> 
>> On Mon Nov 25, 2024 at 4:57 PM CET, Quentin Schulz wrote:
>>> Hi Antonin,
>>>
>>> On 11/25/24 9:17 AM, Antonin Godard wrote:
>>>> The variable SRCPV is deprecated since 4.3. Instead of including SRCPV
>>>> in PV, including the sign "+" is enough for bitbake to add the source
>>>> control information to PKGV during the packaging phase.
>>>>
>>>> Update the documentation for SRCPV and the places where it was used.
>>>> When instructions previously referred to SRCPV, replace by mentioning to
>>>> include "+" in the assignment.
>>>>
>>>> In most examples, "+git" is added to PV as it is the most popular SCM.
>>>> Simply adding "+" is also possible, although it is better practice to
>>>> include the SCM name, so give that example.
>>>>
>>>> Update the gcompat example with l3afpad as it didn't include "+git" in
>>>> its PV definition anymore.
>>>>
>>>> Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
>>>> ---
>>> [...]
>>>> diff --git a/documentation/ref-manual/variables.rst b/documentation/ref-manual/variables.rst
>>>> index ec4d7ab73fe3ac1bc64f5378c65d19ae0b749809..f611edae9f37097734234805faa34b1850e5cfd1 100644
>>>> --- a/documentation/ref-manual/variables.rst
>>>> +++ b/documentation/ref-manual/variables.rst
>>>> @@ -209,12 +209,11 @@ system and gives an overview of their function and contents.
>>>>             SRCREV = "${AUTOREV}"
>>>>    
>>>>          If you use the previous statement to retrieve the latest version of
>>>> -      software, you need to be sure :term:`PV` contains
>>>> -      ``${``\ :term:`SRCPV`\ ``}``. For example, suppose you have a kernel
>>>> -      recipe that inherits the :ref:`ref-classes-kernel` class and you
>>>> -      use the previous statement. In this example, ``${SRCPV}`` does not
>>>> -      automatically get into :term:`PV`. Consequently, you need to change
>>>> -      :term:`PV` in your recipe so that it does contain ``${SRCPV}``.
>>>> +      software, you need to make sure :term:`PV` contains the ``+`` sign so
>>>> +      :term:`bitbake` includes source control information to :term:`PKGV` when
>>>> +      packaging the recipe. For example::
>>>> +
>>>> +        PV = "6.10.y+git"
>>>>    
>>>
>>> I believe this is not properly indented? Missing a space here to follow
>>> our standards?
>> 
>> 
>> Good catch, thank you. Some others below are also not properly indented. It
>> would be nice if sphinx-lint could report this, but I don't think it is able to.
>> 
>
> It's open-source, so maybe something we can contribute :)

For sure. I took a glance at it, and there's no support for any config file at
all so that would be a first step to add, considering 2 or 3 spaces is a
personal choice.

[...]
>>> I think we could simplify the example. The point is not necessarily to
>>> use % with a git-named recipe but rather that a git-named recipe is not
>>> going to match "git" but the "PV" defined in the recipe. What do you think?
>> 
>> Ok, something like:
>> 
>>    If your PV is equal to "a.b.c+git", you can match it with "a.b.c%" in
>>    PREFERRED_VERSION?
>> 
>> This makes more sense with the current state of things, and simplifies the
>> example a bit.
>> 
>
> """
> If you want to select a recipe named foo_git.bb which has :term:`PV` set 
> to `1.2.3+git`, you can do so by setting :term:`PREFERRED_VERSION_foo` 
> to `1.2.3%` (i.e. using simply `git` will not work as the name of the 
> recipe isn't used, but rather its :term:`PV`).
> """
>
> or something like that?
>
> Is PV really extended with the git hash when there's a + in there or is 
> it only PKGV that gets it? Basically, do you even need % character when 
> we have a + in PV now?
>
> Not sure it's clear, lemme know if I need to rephrase my question.

So yes you got it right: PV will never contain the hash, only PKGV will (and
only during do_install iirc, so bitbake-getvar PKGV will not show the hash).

Which makes me wonder if giving the example above is any useful, since you could
just set PREFERRED_VERSION_foo to "1.2.3+git".


Antonin
Quentin Schulz Nov. 27, 2024, 2:08 p.m. UTC | #5
Hi Antonin,

On 11/27/24 2:17 PM, Antonin Godard wrote:
> Hi Quentin,
> 
> On Wed Nov 27, 2024 at 1:51 PM CET, Quentin Schulz via lists.yoctoproject.org wrote:
>> Hi Antonin,
>>
>> On 11/27/24 9:18 AM, Antonin Godard wrote:
>>> Hi Quentin,
>>>
>>> On Mon Nov 25, 2024 at 4:57 PM CET, Quentin Schulz wrote:
>>>> Hi Antonin,
>>>>
>>>> On 11/25/24 9:17 AM, Antonin Godard wrote:
>>>>> The variable SRCPV is deprecated since 4.3. Instead of including SRCPV
>>>>> in PV, including the sign "+" is enough for bitbake to add the source
>>>>> control information to PKGV during the packaging phase.
>>>>>
>>>>> Update the documentation for SRCPV and the places where it was used.
>>>>> When instructions previously referred to SRCPV, replace by mentioning to
>>>>> include "+" in the assignment.
>>>>>
>>>>> In most examples, "+git" is added to PV as it is the most popular SCM.
>>>>> Simply adding "+" is also possible, although it is better practice to
>>>>> include the SCM name, so give that example.
>>>>>
>>>>> Update the gcompat example with l3afpad as it didn't include "+git" in
>>>>> its PV definition anymore.
>>>>>
>>>>> Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
>>>>> ---
>>>> [...]
>>>>> diff --git a/documentation/ref-manual/variables.rst b/documentation/ref-manual/variables.rst
>>>>> index ec4d7ab73fe3ac1bc64f5378c65d19ae0b749809..f611edae9f37097734234805faa34b1850e5cfd1 100644
>>>>> --- a/documentation/ref-manual/variables.rst
>>>>> +++ b/documentation/ref-manual/variables.rst
>>>>> @@ -209,12 +209,11 @@ system and gives an overview of their function and contents.
>>>>>              SRCREV = "${AUTOREV}"
>>>>>     
>>>>>           If you use the previous statement to retrieve the latest version of
>>>>> -      software, you need to be sure :term:`PV` contains
>>>>> -      ``${``\ :term:`SRCPV`\ ``}``. For example, suppose you have a kernel
>>>>> -      recipe that inherits the :ref:`ref-classes-kernel` class and you
>>>>> -      use the previous statement. In this example, ``${SRCPV}`` does not
>>>>> -      automatically get into :term:`PV`. Consequently, you need to change
>>>>> -      :term:`PV` in your recipe so that it does contain ``${SRCPV}``.
>>>>> +      software, you need to make sure :term:`PV` contains the ``+`` sign so
>>>>> +      :term:`bitbake` includes source control information to :term:`PKGV` when
>>>>> +      packaging the recipe. For example::
>>>>> +
>>>>> +        PV = "6.10.y+git"
>>>>>     
>>>>
>>>> I believe this is not properly indented? Missing a space here to follow
>>>> our standards?
>>>
>>>
>>> Good catch, thank you. Some others below are also not properly indented. It
>>> would be nice if sphinx-lint could report this, but I don't think it is able to.
>>>
>>
>> It's open-source, so maybe something we can contribute :)
> 
> For sure. I took a glance at it, and there's no support for any config file at
> all so that would be a first step to add, considering 2 or 3 spaces is a
> personal choice.
> 

Another option is just to check whether the indentation is consistent, 
which wouldn't require a configuration file.

> [...]
>>>> I think we could simplify the example. The point is not necessarily to
>>>> use % with a git-named recipe but rather that a git-named recipe is not
>>>> going to match "git" but the "PV" defined in the recipe. What do you think?
>>>
>>> Ok, something like:
>>>
>>>     If your PV is equal to "a.b.c+git", you can match it with "a.b.c%" in
>>>     PREFERRED_VERSION?
>>>
>>> This makes more sense with the current state of things, and simplifies the
>>> example a bit.
>>>
>>
>> """
>> If you want to select a recipe named foo_git.bb which has :term:`PV` set
>> to `1.2.3+git`, you can do so by setting :term:`PREFERRED_VERSION_foo`
>> to `1.2.3%` (i.e. using simply `git` will not work as the name of the
>> recipe isn't used, but rather its :term:`PV`).
>> """
>>
>> or something like that?
>>
>> Is PV really extended with the git hash when there's a + in there or is
>> it only PKGV that gets it? Basically, do you even need % character when
>> we have a + in PV now?
>>
>> Not sure it's clear, lemme know if I need to rephrase my question.
> 
> So yes you got it right: PV will never contain the hash, only PKGV will (and
> only during do_install iirc, so bitbake-getvar PKGV will not show the hash).
> 
> Which makes me wonder if giving the example above is any useful, since you could
> just set PREFERRED_VERSION_foo to "1.2.3+git".
> 

It is useful! The point is to highlight the "version" in the filename of 
the recipe is not the one you should use in PREFERRED_VERSION, but 
rather the value of PV. Incidentally, PV = version in the filename by 
default I believe (maybe for the git ones too?) but it is 
recommended/required to set PV for git recipes. So in order to pick the 
git recipe, you need to use the PV set inside the git recipe and not use 
"git" along. I believe this is what the original author wanted this 
example to transpire?

Cheers,
Quentin
Antonin Godard Nov. 27, 2024, 3:20 p.m. UTC | #6
Hi Quentin,

On Wed Nov 27, 2024 at 3:08 PM CET, Quentin Schulz via lists.yoctoproject.org wrote:
[...]
>>>>> I think we could simplify the example. The point is not necessarily to
>>>>> use % with a git-named recipe but rather that a git-named recipe is not
>>>>> going to match "git" but the "PV" defined in the recipe. What do you think?
>>>>
>>>> Ok, something like:
>>>>
>>>>     If your PV is equal to "a.b.c+git", you can match it with "a.b.c%" in
>>>>     PREFERRED_VERSION?
>>>>
>>>> This makes more sense with the current state of things, and simplifies the
>>>> example a bit.
>>>>
>>>
>>> """
>>> If you want to select a recipe named foo_git.bb which has :term:`PV` set
>>> to `1.2.3+git`, you can do so by setting :term:`PREFERRED_VERSION_foo`
>>> to `1.2.3%` (i.e. using simply `git` will not work as the name of the
>>> recipe isn't used, but rather its :term:`PV`).
>>> """
>>>
>>> or something like that?
>>>
>>> Is PV really extended with the git hash when there's a + in there or is
>>> it only PKGV that gets it? Basically, do you even need % character when
>>> we have a + in PV now?
>>>
>>> Not sure it's clear, lemme know if I need to rephrase my question.
>> 
>> So yes you got it right: PV will never contain the hash, only PKGV will (and
>> only during do_install iirc, so bitbake-getvar PKGV will not show the hash).
>> 
>> Which makes me wonder if giving the example above is any useful, since you could
>> just set PREFERRED_VERSION_foo to "1.2.3+git".
>> 
>
> It is useful! The point is to highlight the "version" in the filename of 
> the recipe is not the one you should use in PREFERRED_VERSION, but 
> rather the value of PV. Incidentally, PV = version in the filename by 
> default I believe (maybe for the git ones too?) but it is 
> recommended/required to set PV for git recipes. So in order to pick the 
> git recipe, you need to use the PV set inside the git recipe and not use 
> "git" along. I believe this is what the original author wanted this 
> example to transpire?

I didn't think of it that way, but yes, maybe the author wanted to transpire
this + the fact that in the hash wasn't predictable hence the "%". Or only one
or the other.

In any case, I get what you mean, and I'll update the description in a v3.

Thanks,
Antonin
diff mbox series

Patch

diff --git a/documentation/contributor-guide/recipe-style-guide.rst b/documentation/contributor-guide/recipe-style-guide.rst
index 6a3eec3a0e3d3d6148d3ecf1738721d7dd5079a1..806bf23848114304192dadc3efcb9288f8dbb504 100644
--- a/documentation/contributor-guide/recipe-style-guide.rst
+++ b/documentation/contributor-guide/recipe-style-guide.rst
@@ -47,10 +47,10 @@  Debian policy closely.
 
 When a recipe references a git revision that does not correspond to a released
 version of software (e.g. is not a tagged version), the :term:`PV` variable
-should include the Git revision using the following to make the
-version clear::
+should include the sign ``+``, so :term:`bitbake` automatically includes package
+version information during the packaging phase::
 
-    PV = "<version>+git${SRCPV}"
+    PV = "<version>+git"
 
 In this case, ``<version>`` should be the most recently released version of the
 software from the current source revision (``git describe`` can be useful for
diff --git a/documentation/dev-manual/external-scm.rst b/documentation/dev-manual/external-scm.rst
index 97a7e63e366a5f510762e4e62742ef3df5fceda6..896b1b5ac70528848204a636ed7b63ac3bc99c5c 100644
--- a/documentation/dev-manual/external-scm.rst
+++ b/documentation/dev-manual/external-scm.rst
@@ -12,10 +12,13 @@  revision number for changes. Currently, you can do this with Apache
 Subversion (SVN), Git, and Bazaar (BZR) repositories.
 
 To enable this behavior, the :term:`PV` of
-the recipe needs to reference
-:term:`SRCPV`. Here is an example::
+the recipe needs to include a ``+`` sign in its assignment.
+Here is an example::
 
-   PV = "1.2.3+git${SRCPV}"
+   PV = "1.2.3+git"
+
+:term:`Bitbake` later includes the source control information in :term:`PKGV`
+during the packaging phase.
 
 Then, you can add the following to your
 ``local.conf``::
diff --git a/documentation/dev-manual/new-recipe.rst b/documentation/dev-manual/new-recipe.rst
index 61fc2eb1222d38fd9dfb575523688460622f2e0f..944b9627f93fd7a6aafd69482efbb76e90249d8c 100644
--- a/documentation/dev-manual/new-recipe.rst
+++ b/documentation/dev-manual/new-recipe.rst
@@ -291,13 +291,13 @@  another example that specifies these types of files, see the
 
 Another way of specifying source is from an SCM. For Git repositories,
 you must specify :term:`SRCREV` and you should specify :term:`PV` to include
-the revision with :term:`SRCPV`. Here is an example from the recipe
-``meta/recipes-core/musl/gcompat_git.bb``::
+a ``+`` sign in its definition. Here is an example from the recipe
+:oe_git:`meta/recipes-sato/l3afpad/l3afpad_git.bb </openembedded-core/tree/meta/recipes-sato/l3afpad/l3afpad_git.bb>`::
 
-   SRC_URI = "git://git.adelielinux.org/adelie/gcompat.git;protocol=https;branch=current"
+   SRC_URI = "git://github.com/stevenhoneyman/l3afpad.git;branch=master;protocol=https"
 
-   PV = "1.0.0+1.1+git${SRCPV}"
-   SRCREV = "af5a49e489fdc04b9cf02547650d7aeaccd43793"
+   PV = "0.8.18.1.11+git"
+   SRCREV ="3cdccdc9505643e50f8208171d9eee5de11a42ff"
 
 If your :term:`SRC_URI` statement includes URLs pointing to individual files
 fetched from a remote server other than a version control system,
diff --git a/documentation/dev-manual/packages.rst b/documentation/dev-manual/packages.rst
index e5028fffdc825aeeec00e3ef256e1583211d5b02..33cf78747d1bc62268811321ad7a40397268e13f 100644
--- a/documentation/dev-manual/packages.rst
+++ b/documentation/dev-manual/packages.rst
@@ -84,10 +84,6 @@  the following:
 
 -  :term:`PR`: The recipe revision.
 
--  :term:`SRCPV`: The OpenEmbedded
-   build system uses this string to help define the value of :term:`PV` when
-   the source code revision needs to be included in it.
-
 -  :yocto_wiki:`PR Service </PR_Service>`: A
    network-based service that helps automate keeping package feeds
    compatible with existing package manager applications such as RPM,
@@ -256,15 +252,14 @@  the software::
 
    SRCREV = "${AUTOREV}"
 
-Furthermore, you need to reference :term:`SRCPV` in :term:`PV` in order to
+Furthermore, you need to include a ``+`` sign in :term:`PV` in order to
 automatically update the version whenever the revision of the source
 code changes. Here is an example::
 
-   PV = "1.0+git${SRCPV}"
-
-The OpenEmbedded build system substitutes :term:`SRCPV` with the following:
+   PV = "1.0+git"
 
-.. code-block:: none
+The OpenEmbedded build system will automatically add the source control
+information to the end of the variable :term:`PKGV`, in this format::
 
    AUTOINC+source_code_revision
 
diff --git a/documentation/kernel-dev/common.rst b/documentation/kernel-dev/common.rst
index fda41694dc60fa738262a2cce33523708c7ce4ab..28ef3b22c343413fcd092f63e6b77ee156d3d7d7 100644
--- a/documentation/kernel-dev/common.rst
+++ b/documentation/kernel-dev/common.rst
@@ -1562,16 +1562,9 @@  Here are some basic steps you can use to work with your own sources:
       changed.
 
    -  :term:`PV`: The default :term:`PV`
-      assignment is typically adequate. It combines the
-      :term:`LINUX_VERSION` with the Source Control Manager (SCM) revision
-      as derived from the :term:`SRCPV`
-      variable. The combined results are a string with the following
-      form::
-
-         3.19.11+git1+68a635bf8dfb64b02263c1ac80c948647cc76d5f_1+218bd8d2022b9852c60d32f0d770931e3cf343e2
-
-      While lengthy, the extra verbosity in :term:`PV` helps ensure you are
-      using the exact sources from which you intend to build.
+      assignment is typically adequate. It combines the value of
+      :term:`LINUX_VERSION` and the value ``+git`` which adds source control
+      information to :term:`PKGV` later during the packaging phase.
 
    -  :term:`COMPATIBLE_MACHINE`:
       A list of the machines supported by your new recipe. This variable
diff --git a/documentation/ref-manual/variables.rst b/documentation/ref-manual/variables.rst
index ec4d7ab73fe3ac1bc64f5378c65d19ae0b749809..f611edae9f37097734234805faa34b1850e5cfd1 100644
--- a/documentation/ref-manual/variables.rst
+++ b/documentation/ref-manual/variables.rst
@@ -209,12 +209,11 @@  system and gives an overview of their function and contents.
          SRCREV = "${AUTOREV}"
 
       If you use the previous statement to retrieve the latest version of
-      software, you need to be sure :term:`PV` contains
-      ``${``\ :term:`SRCPV`\ ``}``. For example, suppose you have a kernel
-      recipe that inherits the :ref:`ref-classes-kernel` class and you
-      use the previous statement. In this example, ``${SRCPV}`` does not
-      automatically get into :term:`PV`. Consequently, you need to change
-      :term:`PV` in your recipe so that it does contain ``${SRCPV}``.
+      software, you need to make sure :term:`PV` contains the ``+`` sign so
+      :term:`bitbake` includes source control information to :term:`PKGV` when
+      packaging the recipe. For example::
+
+        PV = "6.10.y+git"
 
       For more information see the
       ":ref:`dev-manual/packages:automatically incrementing a package version number`"
@@ -5152,7 +5151,7 @@  system and gives an overview of their function and contents.
       The :term:`LINUX_VERSION` variable is used to define :term:`PV`
       for the recipe::
 
-         PV = "${LINUX_VERSION}+git${SRCPV}"
+         PV = "${LINUX_VERSION}+git"
 
    :term:`LINUX_VERSION_EXTENSION`
       A string extension compiled into the version string of the Linux
@@ -6720,9 +6719,10 @@  system and gives an overview of their function and contents.
       For example, consider two recipes ``foo_1.2.bb`` and ``foo_git.bb``
       where ``foo_git.bb`` contains the following assignment::
 
-         PV = "1.1+git${SRCPV}"
+         PV = "1.1+git${@bb.fetch2.get_srcrev(d)}"
 
-      In this case, the correct way to select
+      Here, the variable :term:`PV: will contain source control information that
+      is not possible to predict. In this case, the correct way to select
       ``foo_git.bb`` is by using an assignment such as the following::
 
          PREFERRED_VERSION_foo = "1.1+git%"
@@ -8316,21 +8316,23 @@  system and gives an overview of their function and contents.
       (SCM).
 
    :term:`SRCPV`
-      Returns the version string of the current package. This string is
-      used to help define the value of :term:`PV`.
+      The variable :term:`SRCPV` is deprecated. It was previously used to
+      include source control information in :term:`PV` for :term:`bitbake` to
+      work correctly but this is no longer a requirement. Source control
+      information will be automatically included by :term:`bitbake` in the
+      variable :term:`PKGV` during packaging if the ``+`` sign is present in
+      ``PV``.
 
-      The :term:`SRCPV` variable is defined in the ``meta/conf/bitbake.conf``
-      configuration file in the :term:`Source Directory` as
-      follows::
+      .. note::
 
-         SRCPV = "${@bb.fetch2.get_srcrev(d)}"
+         The :term:`SRCPV` variable used to be defined in the
+         ``meta/conf/bitbake.conf`` configuration file in the :term:`Source
+         Directory` as follows::
 
-      Recipes that need to define :term:`PV` do so with the help of the
-      :term:`SRCPV`. For example, the ``ofono`` recipe (``ofono_git.bb``)
-      located in ``meta/recipes-connectivity`` in the Source Directory
-      defines :term:`PV` as follows::
+            SRCPV = "${@bb.fetch2.get_srcrev(d)}"
 
-         PV = "0.12-git${SRCPV}"
+         The ``get_srcrev`` function can still be used to include source control
+         information in variables manually.
 
    :term:`SRCREV`
       The revision of the source code used to build the package. This