All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] u-boot: Add UBOOT_LOCALVERSION_AUTO support
@ 2020-03-31 17:46 Otavio Salvador
  2020-03-31 18:07 ` [OE-core] " Denys Dmytriyenko
  0 siblings, 1 reply; 5+ messages in thread
From: Otavio Salvador @ 2020-03-31 17:46 UTC (permalink / raw)
  To: OpenEmbedded Core Mailing List; +Cc: Tom Rini, Stefano Babic, Otavio Salvador

Add the Git revision used for the build. It is very useful especially when
using custom or vendor U-Boot forks so we can map a binary to a specific
source revision. Valid values are "0" or "1".

This is based on a class which has been in use in `meta-freescale` BSP
for years and has been very useful especially for custom U-Boot releases
as it allow we to know the exact Git revision used for the binary.

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---

 meta/recipes-bsp/u-boot/u-boot.inc | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/meta/recipes-bsp/u-boot/u-boot.inc b/meta/recipes-bsp/u-boot/u-boot.inc
index b13db224732..39d35500e11 100644
--- a/meta/recipes-bsp/u-boot/u-boot.inc
+++ b/meta/recipes-bsp/u-boot/u-boot.inc
@@ -24,6 +24,11 @@ PACKAGECONFIG[openssl] = ",,openssl-native"
 # file already exists it will not be overwritten.
 UBOOT_LOCALVERSION ?= ""
 
+# Add the Git revision used for the build. It is very useful especially when
+# using custom or vendor U-Boot forks so we can map a binary to a specific
+# source revision. Valid values are "0" or "1".
+UBOOT_LOCALVERSION_AUTO ?= "0"
+
 # Some versions of u-boot use .bin and others use .img.  By default use .bin
 # but enable individual recipes to change this value.
 UBOOT_SUFFIX ??= "bin"
@@ -84,6 +89,19 @@ do_configure () {
             oe_runmake -C ${S} O=${B} oldconfig
         fi
         merge_config.sh -m .config ${@" ".join(find_cfgs(d))}
+
+        if [ ! -e ${B}/.scmversion -a ! -e ${S}/.scmversion ]; then
+            if [ "${UBOOT_LOCALVERSION_AUTO}" = "1" ]; then
+                # Add GIT revision to the local version
+                head=`cd ${S} ; git rev-parse --verify --short HEAD 2> /dev/null`
+                printf "%s%s%s" "${UBOOT_LOCALVERSION}" +g $head > ${S}/.scmversion
+                printf "%s%s%s" "${UBOOT_LOCALVERSION}" +g $head > ${B}/.scmversion
+            else
+                printf "%s" "${UBOOT_LOCALVERSION}" > ${S}/.scmversion
+                printf "%s" "${UBOOT_LOCALVERSION}" > ${B}/.scmversion
+            fi
+        fi
+
         cml1_do_configure
     else
         DEVTOOL_DISABLE_MENUCONFIG=true
@@ -99,12 +117,6 @@ do_compile () {
 	unset CFLAGS
 	unset CPPFLAGS
 
-	if [ ! -e ${B}/.scmversion -a ! -e ${S}/.scmversion ]
-	then
-		echo ${UBOOT_LOCALVERSION} > ${B}/.scmversion
-		echo ${UBOOT_LOCALVERSION} > ${S}/.scmversion
-	fi
-
     if [ -n "${UBOOT_CONFIG}" ]
     then
         unset i j k
-- 
2.26.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [OE-core] [PATCH] u-boot: Add UBOOT_LOCALVERSION_AUTO support
  2020-03-31 17:46 [PATCH] u-boot: Add UBOOT_LOCALVERSION_AUTO support Otavio Salvador
@ 2020-03-31 18:07 ` Denys Dmytriyenko
  2020-03-31 18:18   ` Otavio Salvador
  0 siblings, 1 reply; 5+ messages in thread
From: Denys Dmytriyenko @ 2020-03-31 18:07 UTC (permalink / raw)
  To: Otavio Salvador
  Cc: OpenEmbedded Core Mailing List, Tom Rini, Stefano Babic,
	Otavio Salvador

On Tue, Mar 31, 2020 at 02:46:41PM -0300, Otavio Salvador wrote:
> Add the Git revision used for the build. It is very useful especially when
> using custom or vendor U-Boot forks so we can map a binary to a specific
> source revision. Valid values are "0" or "1".

Well, UBOOT_LOCALVERSION was originally added specifically for this purpose - 
to be able to append git hash.


> This is based on a class which has been in use in `meta-freescale` BSP
> for years and has been very useful especially for custom U-Boot releases
> as it allow we to know the exact Git revision used for the binary.

And in meta-ti BSP we've used for many years:
UBOOT_LOCALVERSION = "-g${@get_git_revision('${S}')}"

And get_git_revision() just calls "git rev-parse HEAD"

So, it seems a bit redundant to add another variable for this...

-- 
Denys


> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
> ---
> 
>  meta/recipes-bsp/u-boot/u-boot.inc | 24 ++++++++++++++++++------
>  1 file changed, 18 insertions(+), 6 deletions(-)
> 
> diff --git a/meta/recipes-bsp/u-boot/u-boot.inc b/meta/recipes-bsp/u-boot/u-boot.inc
> index b13db224732..39d35500e11 100644
> --- a/meta/recipes-bsp/u-boot/u-boot.inc
> +++ b/meta/recipes-bsp/u-boot/u-boot.inc
> @@ -24,6 +24,11 @@ PACKAGECONFIG[openssl] = ",,openssl-native"
>  # file already exists it will not be overwritten.
>  UBOOT_LOCALVERSION ?= ""
>  
> +# Add the Git revision used for the build. It is very useful especially when
> +# using custom or vendor U-Boot forks so we can map a binary to a specific
> +# source revision. Valid values are "0" or "1".
> +UBOOT_LOCALVERSION_AUTO ?= "0"
> +
>  # Some versions of u-boot use .bin and others use .img.  By default use .bin
>  # but enable individual recipes to change this value.
>  UBOOT_SUFFIX ??= "bin"
> @@ -84,6 +89,19 @@ do_configure () {
>              oe_runmake -C ${S} O=${B} oldconfig
>          fi
>          merge_config.sh -m .config ${@" ".join(find_cfgs(d))}
> +
> +        if [ ! -e ${B}/.scmversion -a ! -e ${S}/.scmversion ]; then
> +            if [ "${UBOOT_LOCALVERSION_AUTO}" = "1" ]; then
> +                # Add GIT revision to the local version
> +                head=`cd ${S} ; git rev-parse --verify --short HEAD 2> /dev/null`
> +                printf "%s%s%s" "${UBOOT_LOCALVERSION}" +g $head > ${S}/.scmversion
> +                printf "%s%s%s" "${UBOOT_LOCALVERSION}" +g $head > ${B}/.scmversion
> +            else
> +                printf "%s" "${UBOOT_LOCALVERSION}" > ${S}/.scmversion
> +                printf "%s" "${UBOOT_LOCALVERSION}" > ${B}/.scmversion
> +            fi
> +        fi
> +
>          cml1_do_configure
>      else
>          DEVTOOL_DISABLE_MENUCONFIG=true
> @@ -99,12 +117,6 @@ do_compile () {
>  	unset CFLAGS
>  	unset CPPFLAGS
>  
> -	if [ ! -e ${B}/.scmversion -a ! -e ${S}/.scmversion ]
> -	then
> -		echo ${UBOOT_LOCALVERSION} > ${B}/.scmversion
> -		echo ${UBOOT_LOCALVERSION} > ${S}/.scmversion
> -	fi
> -
>      if [ -n "${UBOOT_CONFIG}" ]
>      then
>          unset i j k
> -- 
> 2.26.0
> 

> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [OE-core] [PATCH] u-boot: Add UBOOT_LOCALVERSION_AUTO support
  2020-03-31 18:07 ` [OE-core] " Denys Dmytriyenko
@ 2020-03-31 18:18   ` Otavio Salvador
  2020-03-31 18:47     ` Denys Dmytriyenko
  0 siblings, 1 reply; 5+ messages in thread
From: Otavio Salvador @ 2020-03-31 18:18 UTC (permalink / raw)
  To: Denys Dmytriyenko
  Cc: OpenEmbedded Core Mailing List, Tom Rini, Stefano Babic,
	Otavio Salvador

Hello Denys,

On Tue, Mar 31, 2020 at 3:07 PM Denys Dmytriyenko <denis@denix.org> wrote:
> On Tue, Mar 31, 2020 at 02:46:41PM -0300, Otavio Salvador wrote:
> > Add the Git revision used for the build. It is very useful especially when
> > using custom or vendor U-Boot forks so we can map a binary to a specific
> > source revision. Valid values are "0" or "1".
>
> Well, UBOOT_LOCALVERSION was originally added specifically for this purpose -
> to be able to append git hash.

Not really; it kinda of maps to what Linux kernel provides and it is a
"suffix" for the version. For example "-ti" to imply it came from a
Texas Instruments fork.

> > This is based on a class which has been in use in `meta-freescale` BSP
> > for years and has been very useful especially for custom U-Boot releases
> > as it allow we to know the exact Git revision used for the binary.
>
> And in meta-ti BSP we've used for many years:
> UBOOT_LOCALVERSION = "-g${@get_git_revision('${S}')}"
>
> And get_git_revision() just calls "git rev-parse HEAD"
>
> So, it seems a bit redundant to add another variable for this...

How I use this is:

UBOOT_LOCALVERSION = "-updatehub"
UBOOT_LOCALVERSION_AUTO = "1"

I think it is way easier for users to do that. Using inline Python
code is possible but it is not something I qualify as user friendly.


-- 
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://code.ossystems.com.br
Mobile: +55 (53) 9 9981-7854          Mobile: +1 (347) 903-9750

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [OE-core] [PATCH] u-boot: Add UBOOT_LOCALVERSION_AUTO support
  2020-03-31 18:18   ` Otavio Salvador
@ 2020-03-31 18:47     ` Denys Dmytriyenko
  2020-03-31 19:20       ` Otavio Salvador
  0 siblings, 1 reply; 5+ messages in thread
From: Denys Dmytriyenko @ 2020-03-31 18:47 UTC (permalink / raw)
  To: Otavio Salvador
  Cc: OpenEmbedded Core Mailing List, Tom Rini, Stefano Babic,
	Otavio Salvador

On Tue, Mar 31, 2020 at 03:18:41PM -0300, Otavio Salvador wrote:
> Hello Denys,
> 
> On Tue, Mar 31, 2020 at 3:07 PM Denys Dmytriyenko <denis@denix.org> wrote:
> > On Tue, Mar 31, 2020 at 02:46:41PM -0300, Otavio Salvador wrote:
> > > Add the Git revision used for the build. It is very useful especially when
> > > using custom or vendor U-Boot forks so we can map a binary to a specific
> > > source revision. Valid values are "0" or "1".
> >
> > Well, UBOOT_LOCALVERSION was originally added specifically for this purpose -
> > to be able to append git hash.
> 
> Not really; it kinda of maps to what Linux kernel provides and it is a
> "suffix" for the version. For example "-ti" to imply it came from a
> Texas Instruments fork.

There are multiple uses and you can append anything you want. Here's the 
original patch that specifically mentions adding git hash, as an example:
https://lists.openembedded.org/g/openembedded-core/topic/72204283


> > > This is based on a class which has been in use in `meta-freescale` BSP
> > > for years and has been very useful especially for custom U-Boot releases
> > > as it allow we to know the exact Git revision used for the binary.
> >
> > And in meta-ti BSP we've used for many years:
> > UBOOT_LOCALVERSION = "-g${@get_git_revision('${S}')}"
> >
> > And get_git_revision() just calls "git rev-parse HEAD"
> >
> > So, it seems a bit redundant to add another variable for this...
> 
> How I use this is:
> 
> UBOOT_LOCALVERSION = "-updatehub"
> UBOOT_LOCALVERSION_AUTO = "1"
> 
> I think it is way easier for users to do that. Using inline Python
> code is possible but it is not something I qualify as user friendly.

UBOOT_LOCALVERSION = "-updatehub-g${SRCPV}"

-- 
Denys

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [OE-core] [PATCH] u-boot: Add UBOOT_LOCALVERSION_AUTO support
  2020-03-31 18:47     ` Denys Dmytriyenko
@ 2020-03-31 19:20       ` Otavio Salvador
  0 siblings, 0 replies; 5+ messages in thread
From: Otavio Salvador @ 2020-03-31 19:20 UTC (permalink / raw)
  To: Denys Dmytriyenko
  Cc: OpenEmbedded Core Mailing List, Tom Rini, Stefano Babic,
	Otavio Salvador

On Tue, Mar 31, 2020 at 3:47 PM Denys Dmytriyenko <denis@denix.org> wrote:
> On Tue, Mar 31, 2020 at 03:18:41PM -0300, Otavio Salvador wrote:
> > On Tue, Mar 31, 2020 at 3:07 PM Denys Dmytriyenko <denis@denix.org> wrote:
> > > On Tue, Mar 31, 2020 at 02:46:41PM -0300, Otavio Salvador wrote:
> > > > Add the Git revision used for the build. It is very useful especially when
> > > > using custom or vendor U-Boot forks so we can map a binary to a specific
> > > > source revision. Valid values are "0" or "1".
> > >
> > > Well, UBOOT_LOCALVERSION was originally added specifically for this purpose -
> > > to be able to append git hash.
> >
> > Not really; it kinda of maps to what Linux kernel provides and it is a
> > "suffix" for the version. For example "-ti" to imply it came from a
> > Texas Instruments fork.
>
> There are multiple uses and you can append anything you want. Here's the
> original patch that specifically mentions adding git hash, as an example:
> https://lists.openembedded.org/g/openembedded-core/topic/72204283
>
> > > > This is based on a class which has been in use in `meta-freescale` BSP
> > > > for years and has been very useful especially for custom U-Boot releases
> > > > as it allow we to know the exact Git revision used for the binary.
> > >
> > > And in meta-ti BSP we've used for many years:
> > > UBOOT_LOCALVERSION = "-g${@get_git_revision('${S}')}"
> > >
> > > And get_git_revision() just calls "git rev-parse HEAD"
> > >
> > > So, it seems a bit redundant to add another variable for this...
> >
> > How I use this is:
> >
> > UBOOT_LOCALVERSION = "-updatehub"
> > UBOOT_LOCALVERSION_AUTO = "1"
> >
> > I think it is way easier for users to do that. Using inline Python
> > code is possible but it is not something I qualify as user friendly.
>
> UBOOT_LOCALVERSION = "-updatehub-g${SRCPV}"

U-Boot 2020.01-updatehub-AUTOINC+d228123da8 (Mar 20 2020 - 17:05:55 +0000)

This is kinda ugly. Also the old behaviour is still supported.

Let's see what others from community think about it.

-- 
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://code.ossystems.com.br
Mobile: +55 (53) 9 9981-7854          Mobile: +1 (347) 903-9750

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-03-31 19:20 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-03-31 17:46 [PATCH] u-boot: Add UBOOT_LOCALVERSION_AUTO support Otavio Salvador
2020-03-31 18:07 ` [OE-core] " Denys Dmytriyenko
2020-03-31 18:18   ` Otavio Salvador
2020-03-31 18:47     ` Denys Dmytriyenko
2020-03-31 19:20       ` Otavio Salvador

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.