[RFC PATCH 0/2] U-boot refactor

31 views
Skip to first unread message

Vijai Kumar K

unread,
Nov 15, 2021, 11:07:03 AM11/15/21
to isar-...@googlegroups.com, Vijai Kumar K
Hi,

This series refactors u-boot recipe to build selective packages
based on DEB_BUILD_PROFILES.

This solves 2 problems(kind of related).

1. Tools were always built irrespective of whether we ship them or not.
2. libssl-dev package is needed only when we cross compile tools.
Having this change, makes sure the dependency is only included when
it is actually needed.

P1 drops the U_BOOT_TOOLS_PACKAGE variable and introduces
U_BOOT_BUILD_PROFILES in which we can specify which package to
build(tools, dev, config).

P2 makes sure libssl-dev is included only when it is needed.


Thanks,
Vijai Kumar K


Vijai Kumar K (2):
u-boot: Switch to use DEB_BUILD_PROFILES
meta/u-boot: Include libssl-dev only when building tools

.../u-boot/u-boot-de0-nano-soc_2021.10.bb | 3 +-
.../u-boot/u-boot-stm32mp15x_2021.10.bb | 2 ++
.../u-boot/files/debian/control.tmpl | 13 ++++++++
meta/recipes-bsp/u-boot/files/debian/rules | 9 +++++-
meta/recipes-bsp/u-boot/u-boot-custom.inc | 32 ++++++-------------
5 files changed, 34 insertions(+), 25 deletions(-)

--
2.25.1

Vijai Kumar K

unread,
Nov 15, 2021, 11:07:12 AM11/15/21
to isar-...@googlegroups.com, Vijai Kumar K
Use DEB_BUILD_PROFILES to select packages to build.

This patch drops the U_BOOT_TOOLS_PACKAGE variable and introduces
U_BOOT_BUILD_PROFILES through which we can enable particular
packages like u-boot-tools and u-boot-dev.

Signed-off-by: Vijai Kumar K <Vijaikumar_...@mentor.com>
---
.../u-boot/u-boot-de0-nano-soc_2021.10.bb | 3 +-
.../u-boot/u-boot-stm32mp15x_2021.10.bb | 2 ++
.../u-boot/files/debian/control.tmpl | 13 +++++++++
meta/recipes-bsp/u-boot/files/debian/rules | 9 +++++-
meta/recipes-bsp/u-boot/u-boot-custom.inc | 29 +++++--------------
5 files changed, 32 insertions(+), 24 deletions(-)

diff --git a/meta-isar/recipes-bsp/u-boot/u-boot-de0-nano-soc_2021.10.bb b/meta-isar/recipes-bsp/u-boot/u-boot-de0-nano-soc_2021.10.bb
index dcb76c5..1340362 100644
--- a/meta-isar/recipes-bsp/u-boot/u-boot-de0-nano-soc_2021.10.bb
+++ b/meta-isar/recipes-bsp/u-boot/u-boot-de0-nano-soc_2021.10.bb
@@ -6,4 +6,5 @@
require u-boot-${PV}.inc

# Just for testing purposes, distro package would be recent enough
-U_BOOT_TOOLS_PACKAGE = "1"
+U_BOOT_BUILD_PROFILES += "tools"
+U_BOOT_BUILD_PROFILES += "dev"
diff --git a/meta-isar/recipes-bsp/u-boot/u-boot-stm32mp15x_2021.10.bb b/meta-isar/recipes-bsp/u-boot/u-boot-stm32mp15x_2021.10.bb
index 6d95643..ead6d38 100644
--- a/meta-isar/recipes-bsp/u-boot/u-boot-stm32mp15x_2021.10.bb
+++ b/meta-isar/recipes-bsp/u-boot/u-boot-stm32mp15x_2021.10.bb
@@ -4,3 +4,5 @@
# SPDX-License-Identifier: MIT

require u-boot-${PV}.inc
+
+U_BOOT_BUILD_PROFILES += "dev"
diff --git a/meta/recipes-bsp/u-boot/files/debian/control.tmpl b/meta/recipes-bsp/u-boot/files/debian/control.tmpl
index 9379be7..7ac11ad 100644
--- a/meta/recipes-bsp/u-boot/files/debian/control.tmpl
+++ b/meta/recipes-bsp/u-boot/files/debian/control.tmpl
@@ -11,4 +11,17 @@ Description: ${DESCRIPTION}, bootloader binaries

Package: u-boot-${MACHINE}-dev
Architecture: ${DISTRO_ARCH}
+Build-Profiles: <dev>
Description: ${DESCRIPTION}, bootloader libraries
+
+Package: u-boot-tools
+Architecture: linux-any
+Build-Profiles: <tools>
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: ${DESCRIPTION}, companion tools
+
+Package: u-boot-${MACHINE}-config
+Build-Profiles: <config>
+Provides: u-boot-config
+Architecture: ${DISTRO_ARCH}
+Description: ${DESCRIPTION}, environment configuration
diff --git a/meta/recipes-bsp/u-boot/files/debian/rules b/meta/recipes-bsp/u-boot/files/debian/rules
index 3d66762..121b00e 100755
--- a/meta/recipes-bsp/u-boot/files/debian/rules
+++ b/meta/recipes-bsp/u-boot/files/debian/rules
@@ -20,10 +20,17 @@ override_dh_auto_build:
else \
./scripts/get_default_envs.sh >u-boot-initial-env; \
fi
- $(MAKE) $(PARALLEL_MAKE) $(SET_CROSS_BUILD_TOOLS) NO_SDL=1 tools-only envtools
+ifneq (,$(filter dev,$(DEB_BUILD_PROFILES)))
+ $(MAKE) $(PARALLEL_MAKE) $(SET_CROSS_BUILD_TOOLS) NO_SDL=1 envtools
+endif
+ifneq (,$(filter tools,$(DEB_BUILD_PROFILES)))
+ $(MAKE) $(PARALLEL_MAKE) $(SET_CROSS_BUILD_TOOLS) NO_SDL=1 tools-only
+endif

override_dh_auto_install:
+ifneq (,$(filter dev,$(DEB_BUILD_PROFILES)))
mv tools/env/lib.a tools/env/libubootenv.a
+endif

override_dh_auto_test:

diff --git a/meta/recipes-bsp/u-boot/u-boot-custom.inc b/meta/recipes-bsp/u-boot/u-boot-custom.inc
index 57d4f36..bc92552 100644
--- a/meta/recipes-bsp/u-boot/u-boot-custom.inc
+++ b/meta/recipes-bsp/u-boot/u-boot-custom.inc
@@ -31,8 +31,8 @@ DEBIAN_BUILD_DEPENDS += "${@', libssl-dev' if d.getVar('ISAR_CROSS_COMPILE') ==
TEMPLATE_FILES = "debian/control.tmpl"
TEMPLATE_VARS += "MACHINE DEBIAN_BUILD_DEPENDS"

-U_BOOT_TOOLS_PACKAGE ?= "0"
-U_BOOT_CONFIG_PACKAGE ?= "0"
+
+U_BOOT_BUILD_PROFILES ?= ""

do_prepare_build() {
cp -r ${WORKDIR}/debian ${S}/
@@ -42,31 +42,15 @@ do_prepare_build() {
echo "${U_BOOT_BIN} /usr/lib/u-boot/${MACHINE}" > \
${S}/debian/u-boot-${MACHINE}.install

- echo "tools/env/libubootenv.a usr/lib" > \
- ${S}/debian/u-boot-${MACHINE}-dev.install
-
- if [ "${U_BOOT_TOOLS_PACKAGE}" = "1" ]; then
- cat <<EOF >>${S}/debian/control
-
-Package: u-boot-tools
-Architecture: linux-any
-Depends: \${shlibs:Depends}, \${misc:Depends}
-Description: ${DESCRIPTION}, companion tools
-EOF
+ if [ "${@bb.utils.contains('U_BOOT_BUILD_PROFILES', 'dev', 'yes', 'no', d)}" = "yes" ];then
+ echo "tools/env/libubootenv.a usr/lib" > \
+ ${S}/debian/u-boot-${MACHINE}-dev.install
fi

- if [ "${U_BOOT_CONFIG_PACKAGE}" = "1" ]; then
+ if [ "${@bb.utils.contains('U_BOOT_BUILD_PROFILES', 'config', 'yes', 'no', d)}" = "yes" ];then
cp ${WORKDIR}/fw_env.config ${S}/ || \
die "U_BOOT_CONFIG_PACKAGE requires a fw_env.config in SRC_URI"

- cat <<EOF >>${S}/debian/control
-
-Package: u-boot-${MACHINE}-config
-Provides: u-boot-config
-Architecture: ${DISTRO_ARCH}
-Description: ${DESCRIPTION}, environment configuration
-EOF
-
cat <<EOF >>${S}/debian/u-boot-${MACHINE}-config.install
u-boot-initial-env /etc
fw_env.config /etc
@@ -77,4 +61,5 @@ EOF
dpkg_runbuild_prepend() {
export U_BOOT_CONFIG="${U_BOOT_CONFIG}"
export U_BOOT_BIN="${U_BOOT_BIN}"
+ export DEB_BUILD_PROFILES="${U_BOOT_BUILD_PROFILES}"
}
--
2.25.1

Vijai Kumar K

unread,
Nov 15, 2021, 11:07:14 AM11/15/21
to isar-...@googlegroups.com, Vijai Kumar K
libssl-dev of the host architecture is needed only when you
cross compile u-boot-tools.

Signed-off-by: Vijai Kumar K <Vijaikumar_...@mentor.com>
---
meta/recipes-bsp/u-boot/u-boot-custom.inc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/meta/recipes-bsp/u-boot/u-boot-custom.inc b/meta/recipes-bsp/u-boot/u-boot-custom.inc
index bc92552..0887757 100644
--- a/meta/recipes-bsp/u-boot/u-boot-custom.inc
+++ b/meta/recipes-bsp/u-boot/u-boot-custom.inc
@@ -25,7 +25,8 @@ python() {
}

DEBIAN_BUILD_DEPENDS ?= "bc, bison, flex, device-tree-compiler, git, libssl-dev:native"
-DEBIAN_BUILD_DEPENDS += "${@', libssl-dev' if d.getVar('ISAR_CROSS_COMPILE') == '1' else ''}"
+DEBIAN_BUILD_DEPENDS += "${@', libssl-dev' if (d.getVar('ISAR_CROSS_COMPILE') == '1' and \
+ bb.utils.contains('U_BOOT_BUILD_PROFILES', 'tools', 1, 0, d)) else ''}"


TEMPLATE_FILES = "debian/control.tmpl"
--
2.25.1

vijai kumar

unread,
Nov 15, 2021, 11:10:42 AM11/15/21
to Vijai Kumar K, isar-users
On Mon, Nov 15, 2021 at 9:37 PM Vijai Kumar K
<Vijaikumar_...@mentor.com> wrote:
>
> Hi,
>
> This series refactors u-boot recipe to build selective packages
> based on DEB_BUILD_PROFILES.
>
> This solves 2 problems(kind of related).
>
> 1. Tools were always built irrespective of whether we ship them or not.
> 2. libssl-dev package is needed only when we cross compile tools.
> Having this change, makes sure the dependency is only included when
> it is actually needed.
>
> P1 drops the U_BOOT_TOOLS_PACKAGE variable and introduces
> U_BOOT_BUILD_PROFILES in which we can specify which package to
> build(tools, dev, config).
>
> P2 makes sure libssl-dev is included only when it is needed.

Ah. This already needs V2. Need to take care of the below line
u-boot-custom.inc:13:PROVIDES += "${@'u-boot-tools' if
d.getVar('U_BOOT_TOOLS_PACKAGE') == '1' else ''}"

Will wait for review comments and club the changes, if any.

Thanks,
Vijai Kumar K

>
>
> Thanks,
> Vijai Kumar K
>
>
> Vijai Kumar K (2):
> u-boot: Switch to use DEB_BUILD_PROFILES
> meta/u-boot: Include libssl-dev only when building tools
>
> .../u-boot/u-boot-de0-nano-soc_2021.10.bb | 3 +-
> .../u-boot/u-boot-stm32mp15x_2021.10.bb | 2 ++
> .../u-boot/files/debian/control.tmpl | 13 ++++++++
> meta/recipes-bsp/u-boot/files/debian/rules | 9 +++++-
> meta/recipes-bsp/u-boot/u-boot-custom.inc | 32 ++++++-------------
> 5 files changed, 34 insertions(+), 25 deletions(-)
>
> --
> 2.25.1
>
> --
> You received this message because you are subscribed to the Google Groups "isar-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/isar-users/20211115160642.765371-1-Vijaikumar_Kanagarajan%40mentor.com.

Jan Kiszka

unread,
Nov 15, 2021, 11:44:48 AM11/15/21
to Vijai Kumar K, isar-...@googlegroups.com
On 15.11.21 17:06, Vijai Kumar K wrote:
> Use DEB_BUILD_PROFILES to select packages to build.
>

Nice feature.
Must be "dev" - we were building the dev package by default before, no?
Otherwise, it would be a RECIPE-API-worth change, and it would need
argumentation why we need to break the API.

>
> do_prepare_build() {
> cp -r ${WORKDIR}/debian ${S}/
> @@ -42,31 +42,15 @@ do_prepare_build() {
> echo "${U_BOOT_BIN} /usr/lib/u-boot/${MACHINE}" > \
> ${S}/debian/u-boot-${MACHINE}.install
>
> - echo "tools/env/libubootenv.a usr/lib" > \
> - ${S}/debian/u-boot-${MACHINE}-dev.install
> -
> - if [ "${U_BOOT_TOOLS_PACKAGE}" = "1" ]; then
> - cat <<EOF >>${S}/debian/control
> -
> -Package: u-boot-tools
> -Architecture: linux-any
> -Depends: \${shlibs:Depends}, \${misc:Depends}
> -Description: ${DESCRIPTION}, companion tools
> -EOF
> + if [ "${@bb.utils.contains('U_BOOT_BUILD_PROFILES', 'dev', 'yes', 'no', d)}" = "yes" ];then
> + echo "tools/env/libubootenv.a usr/lib" > \
> + ${S}/debian/u-boot-${MACHINE}-dev.install

Doesn't that profile feature allow to copy that unconditionally?

> fi
>
> - if [ "${U_BOOT_CONFIG_PACKAGE}" = "1" ]; then
> + if [ "${@bb.utils.contains('U_BOOT_BUILD_PROFILES', 'config', 'yes', 'no', d)}" = "yes" ];then
> cp ${WORKDIR}/fw_env.config ${S}/ || \
> die "U_BOOT_CONFIG_PACKAGE requires a fw_env.config in SRC_URI"
>
> - cat <<EOF >>${S}/debian/control
> -
> -Package: u-boot-${MACHINE}-config
> -Provides: u-boot-config
> -Architecture: ${DISTRO_ARCH}
> -Description: ${DESCRIPTION}, environment configuration
> -EOF
> -
> cat <<EOF >>${S}/debian/u-boot-${MACHINE}-config.install
> u-boot-initial-env /etc
> fw_env.config /etc
> @@ -77,4 +61,5 @@ EOF
> dpkg_runbuild_prepend() {
> export U_BOOT_CONFIG="${U_BOOT_CONFIG}"
> export U_BOOT_BIN="${U_BOOT_BIN}"
> + export DEB_BUILD_PROFILES="${U_BOOT_BUILD_PROFILES}"
> }
>

Jan

--
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux

Jan Kiszka

unread,
Nov 15, 2021, 11:46:36 AM11/15/21
to Vijai Kumar K, isar-...@googlegroups.com
On 15.11.21 17:06, Vijai Kumar K wrote:
> libssl-dev of the host architecture is needed only when you
> cross compile u-boot-tools.

Did you mean "host" in the Gnu/Debian sense, i.e. the target (in Isar
sense)? Or "build" - but that would mean ":native"?

>
> Signed-off-by: Vijai Kumar K <Vijaikumar_...@mentor.com>
> ---
> meta/recipes-bsp/u-boot/u-boot-custom.inc | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/meta/recipes-bsp/u-boot/u-boot-custom.inc b/meta/recipes-bsp/u-boot/u-boot-custom.inc
> index bc92552..0887757 100644
> --- a/meta/recipes-bsp/u-boot/u-boot-custom.inc
> +++ b/meta/recipes-bsp/u-boot/u-boot-custom.inc
> @@ -25,7 +25,8 @@ python() {
> }
>
> DEBIAN_BUILD_DEPENDS ?= "bc, bison, flex, device-tree-compiler, git, libssl-dev:native"
> -DEBIAN_BUILD_DEPENDS += "${@', libssl-dev' if d.getVar('ISAR_CROSS_COMPILE') == '1' else ''}"
> +DEBIAN_BUILD_DEPENDS += "${@', libssl-dev' if (d.getVar('ISAR_CROSS_COMPILE') == '1' and \
> + bb.utils.contains('U_BOOT_BUILD_PROFILES', 'tools', 1, 0, d)) else ''}"
>
>
> TEMPLATE_FILES = "debian/control.tmpl"
>

Code makes sense - I assume to tested with a very recent U-Boot and all
profiles on.

vijai kumar

unread,
Nov 16, 2021, 3:43:00 AM11/16/21
to Jan Kiszka, Vijai Kumar K, isar-users
Yes. Will enable that by default here.

>
> >
> > do_prepare_build() {
> > cp -r ${WORKDIR}/debian ${S}/
> > @@ -42,31 +42,15 @@ do_prepare_build() {
> > echo "${U_BOOT_BIN} /usr/lib/u-boot/${MACHINE}" > \
> > ${S}/debian/u-boot-${MACHINE}.install
> >
> > - echo "tools/env/libubootenv.a usr/lib" > \
> > - ${S}/debian/u-boot-${MACHINE}-dev.install
> > -
> > - if [ "${U_BOOT_TOOLS_PACKAGE}" = "1" ]; then
> > - cat <<EOF >>${S}/debian/control
> > -
> > -Package: u-boot-tools
> > -Architecture: linux-any
> > -Depends: \${shlibs:Depends}, \${misc:Depends}
> > -Description: ${DESCRIPTION}, companion tools
> > -EOF
> > + if [ "${@bb.utils.contains('U_BOOT_BUILD_PROFILES', 'dev', 'yes', 'no', d)}" = "yes" ];then
> > + echo "tools/env/libubootenv.a usr/lib" > \
> > + ${S}/debian/u-boot-${MACHINE}-dev.install
>
> Doesn't that profile feature allow to copy that unconditionally?

Not sure about that. Will check and bypass this if possible.
> --
> You received this message because you are subscribed to the Google Groups "isar-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/isar-users/287571ee-909f-b7b2-7a7e-27a4495281a5%40siemens.com.

vijai kumar

unread,
Nov 16, 2021, 3:44:58 AM11/16/21
to Jan Kiszka, Vijai Kumar K, isar-users
On Mon, Nov 15, 2021 at 10:16 PM Jan Kiszka <jan.k...@siemens.com> wrote:
>
> On 15.11.21 17:06, Vijai Kumar K wrote:
> > libssl-dev of the host architecture is needed only when you
> > cross compile u-boot-tools.
>
> Did you mean "host" in the Gnu/Debian sense, i.e. the target (in Isar
> sense)? Or "build" - but that would mean ":native"?


Yes. host in Debian sense.

>
> >
> > Signed-off-by: Vijai Kumar K <Vijaikumar_...@mentor.com>
> > ---
> > meta/recipes-bsp/u-boot/u-boot-custom.inc | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/meta/recipes-bsp/u-boot/u-boot-custom.inc b/meta/recipes-bsp/u-boot/u-boot-custom.inc
> > index bc92552..0887757 100644
> > --- a/meta/recipes-bsp/u-boot/u-boot-custom.inc
> > +++ b/meta/recipes-bsp/u-boot/u-boot-custom.inc
> > @@ -25,7 +25,8 @@ python() {
> > }
> >
> > DEBIAN_BUILD_DEPENDS ?= "bc, bison, flex, device-tree-compiler, git, libssl-dev:native"
> > -DEBIAN_BUILD_DEPENDS += "${@', libssl-dev' if d.getVar('ISAR_CROSS_COMPILE') == '1' else ''}"
> > +DEBIAN_BUILD_DEPENDS += "${@', libssl-dev' if (d.getVar('ISAR_CROSS_COMPILE') == '1' and \
> > + bb.utils.contains('U_BOOT_BUILD_PROFILES', 'tools', 1, 0, d)) else ''}"
> >
> >
> > TEMPLATE_FILES = "debian/control.tmpl"
> >
>
> Code makes sense - I assume to tested with a very recent U-Boot and all
> profiles on.

Yes, tested with all profiles on. I will also push it through CI once.

Thanks,
Vijai Kumar K

>
> Jan
>
> --
> Siemens AG, T RDA IOT
> Corporate Competence Center Embedded Linux
>
> --
> You received this message because you are subscribed to the Google Groups "isar-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/isar-users/6d5763b1-97a5-390c-91b9-1e0a89b1da4f%40siemens.com.

Vijai Kumar K

unread,
Nov 16, 2021, 4:51:49 AM11/16/21
to isar-...@googlegroups.com, Vijai Kumar K
Changes since v1:
- Fix PROVIDES variable
- Enable dev by default

CI Job running at
http://ci.isar-build.org:8080/job/isar_vkk_devel/98/console

Vijai Kumar K (2):
u-boot: Switch to use DEB_BUILD_PROFILES
meta/u-boot: Include libssl-dev only when building tools

.../u-boot/u-boot-de0-nano-soc_2021.10.bb | 2 +-
.../u-boot/files/debian/control.tmpl | 13 ++++++
meta/recipes-bsp/u-boot/files/debian/rules | 9 +++-
meta/recipes-bsp/u-boot/u-boot-custom.inc | 41 +++++++------------
4 files changed, 37 insertions(+), 28 deletions(-)

--
2.25.1

Vijai Kumar K

unread,
Nov 16, 2021, 4:51:51 AM11/16/21
to isar-...@googlegroups.com, Vijai Kumar K
Use DEB_BUILD_PROFILES to select packages to build.

This patch drops the U_BOOT_TOOLS_PACKAGE variable and introduces
U_BOOT_BUILD_PROFILES through which we can enable particular
packages like u-boot-tools and u-boot-dev.

Signed-off-by: Vijai Kumar K <Vijaikumar_...@mentor.com>
---
.../u-boot/u-boot-de0-nano-soc_2021.10.bb | 2 +-
.../u-boot/files/debian/control.tmpl | 13 +++++++
meta/recipes-bsp/u-boot/files/debian/rules | 9 ++++-
meta/recipes-bsp/u-boot/u-boot-custom.inc | 38 +++++++------------
4 files changed, 35 insertions(+), 27 deletions(-)

diff --git a/meta-isar/recipes-bsp/u-boot/u-boot-de0-nano-soc_2021.10.bb b/meta-isar/recipes-bsp/u-boot/u-boot-de0-nano-soc_2021.10.bb
index dcb76c5..640b7ea 100644
--- a/meta-isar/recipes-bsp/u-boot/u-boot-de0-nano-soc_2021.10.bb
+++ b/meta-isar/recipes-bsp/u-boot/u-boot-de0-nano-soc_2021.10.bb
@@ -6,4 +6,4 @@
require u-boot-${PV}.inc

# Just for testing purposes, distro package would be recent enough
-U_BOOT_TOOLS_PACKAGE = "1"
+U_BOOT_BUILD_PROFILES += "tools"
diff --git a/meta/recipes-bsp/u-boot/u-boot-custom.inc b/meta/recipes-bsp/u-boot/u-boot-custom.inc
index 57d4f36..60dc1c9 100644
--- a/meta/recipes-bsp/u-boot/u-boot-custom.inc
+++ b/meta/recipes-bsp/u-boot/u-boot-custom.inc
@@ -9,10 +9,13 @@ FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/files:"

DESCRIPTION ?= "Custom U-Boot"

-PROVIDES += "u-boot-${MACHINE} u-boot-${MACHINE}-dev"
-PROVIDES += "${@'u-boot-tools' if d.getVar('U_BOOT_TOOLS_PACKAGE') == '1' else ''}"
+PROVIDES += "u-boot-${MACHINE}"
+PROVIDES += "${@'u-boot-tools' \
+ if bb.utils.contains('U_BOOT_BUILD_PROFILES', 'tools', 1, 0, d) else ''}"
PROVIDES += "${@('u-boot-config u-boot-' + d.getVar('MACHINE') + '-config') \
- if d.getVar('U_BOOT_CONFIG_PACKAGE') == '1' else ''}"
+ if bb.utils.contains('U_BOOT_BUILD_PROFILES', 'config', 1, 0, d) else ''}"
+PROVIDES += "${@('u-boot-' + d.getVar('MACHINE') + '-dev') \
+ if bb.utils.contains('U_BOOT_BUILD_PROFILES', 'dev', 1, 0, d) else ''}"

inherit dpkg

@@ -31,8 +34,8 @@ DEBIAN_BUILD_DEPENDS += "${@', libssl-dev' if d.getVar('ISAR_CROSS_COMPILE') ==
TEMPLATE_FILES = "debian/control.tmpl"
TEMPLATE_VARS += "MACHINE DEBIAN_BUILD_DEPENDS"

-U_BOOT_TOOLS_PACKAGE ?= "0"
-U_BOOT_CONFIG_PACKAGE ?= "0"
+
+U_BOOT_BUILD_PROFILES ?= "dev"

do_prepare_build() {
cp -r ${WORKDIR}/debian ${S}/
@@ -42,31 +45,15 @@ do_prepare_build() {
echo "${U_BOOT_BIN} /usr/lib/u-boot/${MACHINE}" > \
${S}/debian/u-boot-${MACHINE}.install

- echo "tools/env/libubootenv.a usr/lib" > \
- ${S}/debian/u-boot-${MACHINE}-dev.install
-
- if [ "${U_BOOT_TOOLS_PACKAGE}" = "1" ]; then
- cat <<EOF >>${S}/debian/control
-
-Package: u-boot-tools
-Architecture: linux-any
-Depends: \${shlibs:Depends}, \${misc:Depends}
-Description: ${DESCRIPTION}, companion tools
-EOF
+ if [ "${@bb.utils.contains('U_BOOT_BUILD_PROFILES', 'dev', 'yes', 'no', d)}" = "yes" ];then
+ echo "tools/env/libubootenv.a usr/lib" > \
+ ${S}/debian/u-boot-${MACHINE}-dev.install
fi

- if [ "${U_BOOT_CONFIG_PACKAGE}" = "1" ]; then
+ if [ "${@bb.utils.contains('U_BOOT_BUILD_PROFILES', 'config', 'yes', 'no', d)}" = "yes" ];then
cp ${WORKDIR}/fw_env.config ${S}/ || \
die "U_BOOT_CONFIG_PACKAGE requires a fw_env.config in SRC_URI"

- cat <<EOF >>${S}/debian/control
-
-Package: u-boot-${MACHINE}-config
-Provides: u-boot-config
-Architecture: ${DISTRO_ARCH}
-Description: ${DESCRIPTION}, environment configuration
-EOF
-
cat <<EOF >>${S}/debian/u-boot-${MACHINE}-config.install
u-boot-initial-env /etc
fw_env.config /etc
@@ -77,4 +64,5 @@ EOF
dpkg_runbuild_prepend() {
export U_BOOT_CONFIG="${U_BOOT_CONFIG}"
export U_BOOT_BIN="${U_BOOT_BIN}"
+ export DEB_BUILD_PROFILES="${U_BOOT_BUILD_PROFILES}"
}
--
2.25.1

Vijai Kumar K

unread,
Nov 16, 2021, 4:51:54 AM11/16/21
to isar-...@googlegroups.com, Vijai Kumar K
libssl-dev of the host architecture is needed only when you
cross compile u-boot-tools.

Signed-off-by: Vijai Kumar K <Vijaikumar_...@mentor.com>
---
meta/recipes-bsp/u-boot/u-boot-custom.inc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/meta/recipes-bsp/u-boot/u-boot-custom.inc b/meta/recipes-bsp/u-boot/u-boot-custom.inc
index 60dc1c9..855d6a4 100644
--- a/meta/recipes-bsp/u-boot/u-boot-custom.inc
+++ b/meta/recipes-bsp/u-boot/u-boot-custom.inc
@@ -28,7 +28,8 @@ python() {
}

DEBIAN_BUILD_DEPENDS ?= "bc, bison, flex, device-tree-compiler, git, libssl-dev:native"
-DEBIAN_BUILD_DEPENDS += "${@', libssl-dev' if d.getVar('ISAR_CROSS_COMPILE') == '1' else ''}"
+DEBIAN_BUILD_DEPENDS += "${@', libssl-dev' if (d.getVar('ISAR_CROSS_COMPILE') == '1' and \
+ bb.utils.contains('U_BOOT_BUILD_PROFILES', 'tools', 1, 0, d)) else ''}"


TEMPLATE_FILES = "debian/control.tmpl"
--
2.25.1

Gylstorff Quirin

unread,
Nov 16, 2021, 10:02:37 AM11/16/21
to Vijai Kumar K, isar-...@googlegroups.com
I would suggest using the naming convention[1] for Build Profiles.
in this case 'pkg.u-boot.dev' or something similar.

[1]: https://wiki.debian.org/BuildProfileSpec

Quirin
With best regards,
Quirin Gylstorff

Siemens AG
Technology
Research in Digitalization and Automation
Smart Embedded Systems
T RDA IOT SES-DE
Otto-Hahn-Ring 6
81739 Muenchen, Germany
Mobile: +49 173 3746683
mailto:quirin.g...@siemens.com <mailto:quirin.g...@siemens.com>
www.siemens.com <https://siemens.com>

Siemens Aktiengesellschaft: Chairman of the Supervisory Board: Jim
Hagemann Snabe; Managing Board: Roland Busch, Chairman, President and
Chief Executive Officer; Cedrik Neike, Matthias Rebellius, Ralf P.
Thomas, Judith Wiese; Registered offices: Berlin and Munich, Germany;
Commercial registries: Berlin-Charlottenburg, HRB 12300, Munich, HRB
6684; WEEE-Reg.-No. DE 23691322

Important notice: This e-mail and any attachment thereof contain
corporate proprietary information. If you have received it by mistake,
please notify us immediately by reply e-mail and delete this e-mail and
its attachments from your system. Thank you.



Jan Kiszka

unread,
Nov 16, 2021, 10:40:07 AM11/16/21
to Vijai Kumar K, isar-...@googlegroups.com
On 16.11.21 10:51, Vijai Kumar K wrote:
> Use DEB_BUILD_PROFILES to select packages to build.
>
> This patch drops the U_BOOT_TOOLS_PACKAGE variable and introduces
> U_BOOT_BUILD_PROFILES through which we can enable particular
> packages like u-boot-tools and u-boot-dev.
>
> Signed-off-by: Vijai Kumar K <Vijaikumar_...@mentor.com>
> ---
> .../u-boot/u-boot-de0-nano-soc_2021.10.bb | 2 +-
> .../u-boot/files/debian/control.tmpl | 13 +++++++
> meta/recipes-bsp/u-boot/files/debian/rules | 9 ++++-
> meta/recipes-bsp/u-boot/u-boot-custom.inc | 38 +++++++------------
> 4 files changed, 35 insertions(+), 27 deletions(-)
>
> diff --git a/meta-isar/recipes-bsp/u-boot/u-boot-de0-nano-soc_2021.10.bb b/meta-isar/recipes-bsp/u-boot/u-boot-de0-nano-soc_2021.10.bb
> index dcb76c5..640b7ea 100644
> --- a/meta-isar/recipes-bsp/u-boot/u-boot-de0-nano-soc_2021.10.bb
> +++ b/meta-isar/recipes-bsp/u-boot/u-boot-de0-nano-soc_2021.10.bb
> @@ -6,4 +6,4 @@
> require u-boot-${PV}.inc
>
> # Just for testing purposes, distro package would be recent enough
> -U_BOOT_TOOLS_PACKAGE = "1"
> +U_BOOT_BUILD_PROFILES += "tools"

Recipe-API change, needs to be documented. Ideally: Provide a compat
solution, translating the old switch into the new one, issuing a warning
about the recommended conversion.

vijai kumar

unread,
Nov 17, 2021, 12:52:17 AM11/17/21
to Gylstorff Quirin, Vijai Kumar K, isar-users
Yes. I went through that before, but decided against it for being long.
I see not many benefits in the ISAR context of this recipe. Maybe I am wrong.
Chose simplicity over compliance.


Thanks,
Vijai Kumar K
> --
> You received this message because you are subscribed to the Google Groups "isar-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/isar-users/1b1f56f5-5d86-75cb-9dc8-476fdbbe0f18%40siemens.com.

vijai kumar

unread,
Nov 17, 2021, 12:56:57 AM11/17/21
to Jan Kiszka, Vijai Kumar K, isar-users
Ok. Looking back it might silently break downstream layers.

Will address it in v3.

Thanks,
Vijai Kumar K

>
> Jan
>
> --
> Siemens AG, T RDA IOT
> Corporate Competence Center Embedded Linux
>
> --
> You received this message because you are subscribed to the Google Groups "isar-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/isar-users/2b8f8f63-a38e-c79a-8094-c651f4753b2e%40siemens.com.

Vijai Kumar K

unread,
Nov 17, 2021, 2:35:35 AM11/17/21
to isar-...@googlegroups.com, Vijai Kumar K
Changes since v2:
- Add entry in RECIPE-API-CHANGELOG
- Provide backward compatibitlity with U_BOOT_*_PACKAGE variable
- Issue a deprecation notice to use if the old variables are used

CI Job running at
http://ci.isar-build.org:8080/job/isar_vkk_devel/99/console

Changes since v1:
- Fix PROVIDES variable
- Enable dev by default

CI Job running at
http://ci.isar-build.org:8080/job/isar_vkk_devel/98/console

Vijai Kumar K (2):
u-boot: Switch to use DEB_BUILD_PROFILES
meta/u-boot: Include libssl-dev only when building tools

RECIPE-API-CHANGELOG.md | 12 ++++
.../u-boot/u-boot-de0-nano-soc_2021.10.bb | 2 +-
.../u-boot/files/debian/control.tmpl | 13 +++++
meta/recipes-bsp/u-boot/files/debian/rules | 9 ++-
meta/recipes-bsp/u-boot/u-boot-custom.inc | 55 ++++++++++---------
5 files changed, 63 insertions(+), 28 deletions(-)

--
2.25.1

Vijai Kumar K

unread,
Nov 17, 2021, 2:35:37 AM11/17/21
to isar-...@googlegroups.com, Vijai Kumar K
Use DEB_BUILD_PROFILES to select packages to build.

This patch drops the U_BOOT_TOOLS_PACKAGE and U_BOOT_CONFIG_PACKAGE
variables and introduces U_BOOT_BUILD_PROFILES through which we can
enable particular packages like u-boot-tools, u-boot-dev and
u-boot-config.

Also, provide backward compatibility with U_BOOT_*_PACKAGES
variable and prompt a deprecation warning to user.

Signed-off-by: Vijai Kumar K <Vijaikumar_...@mentor.com>
---
RECIPE-API-CHANGELOG.md | 12 +++++
.../u-boot/u-boot-de0-nano-soc_2021.10.bb | 2 +-
.../u-boot/files/debian/control.tmpl | 13 +++++
meta/recipes-bsp/u-boot/files/debian/rules | 9 +++-
meta/recipes-bsp/u-boot/u-boot-custom.inc | 52 ++++++++++---------
5 files changed, 61 insertions(+), 27 deletions(-)

diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md
index 7312d4d..3b926bd 100644
--- a/RECIPE-API-CHANGELOG.md
+++ b/RECIPE-API-CHANGELOG.md
@@ -301,3 +301,15 @@ Kernel update with "apt-get" will not work since bootloader configuration will
not be updated. It used to "kind of work" for grub and efi, that hack is gone.

When using the plugins it is advised to name the partition "/boot" and to exclude boot from the follwing rootfs to not waste space.
+
+### Deprecate U_BOOT_TOOLS_PACKAGE and U_BOOT_CONFIG_PACKAGE
+
+Use U_BOOT_BUILD_PROFILES instead of U_BOOT_TOOLS_PACKAGE and U_BOOT_CONFIG_PACKAGE
+
+U_BOOT_TOOLS_PACKAGE = "1" is achieved by U_BOOT_BUILD_PROFILES += "tools"
+U_BOOT_CONFIG_PACKAGE = "1" is achieved by U_BOOT_BUILD_PROFILES += "config"
+
+u-boot-${MACHINE}-dev package build can also be controlled now. Enabled by default
+in u-boot-custom.inc. To remove use the below code in your recipe.
+
+U_BOOT_BUILD_PROFILES_remove = "dev"
diff --git a/meta-isar/recipes-bsp/u-boot/u-boot-de0-nano-soc_2021.10.bb b/meta-isar/recipes-bsp/u-boot/u-boot-de0-nano-soc_2021.10.bb
index dcb76c5..640b7ea 100644
--- a/meta-isar/recipes-bsp/u-boot/u-boot-de0-nano-soc_2021.10.bb
+++ b/meta-isar/recipes-bsp/u-boot/u-boot-de0-nano-soc_2021.10.bb
@@ -6,4 +6,4 @@
require u-boot-${PV}.inc

# Just for testing purposes, distro package would be recent enough
-U_BOOT_TOOLS_PACKAGE = "1"
+U_BOOT_BUILD_PROFILES += "tools"
diff --git a/meta/recipes-bsp/u-boot/files/debian/control.tmpl b/meta/recipes-bsp/u-boot/files/debian/control.tmpl
index 9379be7..7ac11ad 100644
--- a/meta/recipes-bsp/u-boot/files/debian/control.tmpl
+++ b/meta/recipes-bsp/u-boot/files/debian/control.tmpl
@@ -11,4 +11,17 @@ Description: ${DESCRIPTION}, bootloader binaries

Package: u-boot-${MACHINE}-dev
Architecture: ${DISTRO_ARCH}
+Build-Profiles: <dev>
index 57d4f36..f7a7dac 100644
--- a/meta/recipes-bsp/u-boot/u-boot-custom.inc
+++ b/meta/recipes-bsp/u-boot/u-boot-custom.inc
@@ -9,10 +9,13 @@ FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/files:"

DESCRIPTION ?= "Custom U-Boot"

-PROVIDES += "u-boot-${MACHINE} u-boot-${MACHINE}-dev"
-PROVIDES += "${@'u-boot-tools' if d.getVar('U_BOOT_TOOLS_PACKAGE') == '1' else ''}"
+PROVIDES += "u-boot-${MACHINE}"
+PROVIDES += "${@'u-boot-tools' \
+ if bb.utils.contains('U_BOOT_BUILD_PROFILES', 'tools', 1, 0, d) else ''}"
PROVIDES += "${@('u-boot-config u-boot-' + d.getVar('MACHINE') + '-config') \
- if d.getVar('U_BOOT_CONFIG_PACKAGE') == '1' else ''}"
+ if bb.utils.contains('U_BOOT_BUILD_PROFILES', 'config', 1, 0, d) else ''}"
+PROVIDES += "${@('u-boot-' + d.getVar('MACHINE') + '-dev') \
+ if bb.utils.contains('U_BOOT_BUILD_PROFILES', 'dev', 1, 0, d) else ''}"

inherit dpkg

@@ -22,6 +25,20 @@ python() {
if d.getVar('BUILD_DEPENDS'):
bb.warn("u-boot-custom: Deprecated use of BUILD_DEPENDS, please switch to DEBIAN_BUILD_DEPENDS")
d.setVar('DEBIAN_BUILD_DEPENDS', d.getVar('BUILD_DEPENDS'))
+
+ if d.getVar('U_BOOT_TOOLS_PACKAGE') is not None:
+ bb.warn("u-boot-custom: Deprecated use of U_BOOT_TOOLS_PACKAGE, please switch to U_BOOT_BUILD_PROFILES")
+ if d.getVar('U_BOOT_TOOLS_PACKAGE') == "1":
+ d.appendVar('U_BOOT_BUILD_PROFILES', " tools")
+ else:
+ d.setVar('U_BOOT_BUILD_PROFILES_remove', "tools")
+
+ if d.getVar('U_BOOT_CONFIG_PACKAGE') is not None:
+ bb.warn("u-boot-custom: Deprecated use of U_BOOT_CONFIG_PACKAGE, please switch to U_BOOT_BUILD_PROFILES")
+ if d.getVar('U_BOOT_CONFIG_PACKAGE') == "1":
+ d.appendVar('U_BOOT_BUILD_PROFILES', " config")
+ else:
+ d.setVar('U_BOOT_BUILD_PROFILES_remove', "config")
}

DEBIAN_BUILD_DEPENDS ?= "bc, bison, flex, device-tree-compiler, git, libssl-dev:native"
@@ -31,8 +48,8 @@ DEBIAN_BUILD_DEPENDS += "${@', libssl-dev' if d.getVar('ISAR_CROSS_COMPILE') ==
TEMPLATE_FILES = "debian/control.tmpl"
TEMPLATE_VARS += "MACHINE DEBIAN_BUILD_DEPENDS"

-U_BOOT_TOOLS_PACKAGE ?= "0"
-U_BOOT_CONFIG_PACKAGE ?= "0"
+
+U_BOOT_BUILD_PROFILES ?= "dev"

do_prepare_build() {
cp -r ${WORKDIR}/debian ${S}/
@@ -42,31 +59,15 @@ do_prepare_build() {
@@ -77,4 +78,5 @@ EOF
dpkg_runbuild_prepend() {
export U_BOOT_CONFIG="${U_BOOT_CONFIG}"
export U_BOOT_BIN="${U_BOOT_BIN}"
+ export DEB_BUILD_PROFILES="${U_BOOT_BUILD_PROFILES}"
}
--
2.25.1

Vijai Kumar K

unread,
Nov 17, 2021, 2:35:40 AM11/17/21
to isar-...@googlegroups.com, Vijai Kumar K
libssl-dev of the host architecture is needed only when you
cross compile u-boot-tools.

Signed-off-by: Vijai Kumar K <Vijaikumar_...@mentor.com>
---
meta/recipes-bsp/u-boot/u-boot-custom.inc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/meta/recipes-bsp/u-boot/u-boot-custom.inc b/meta/recipes-bsp/u-boot/u-boot-custom.inc
index f7a7dac..a18f3cb 100644
--- a/meta/recipes-bsp/u-boot/u-boot-custom.inc
+++ b/meta/recipes-bsp/u-boot/u-boot-custom.inc
@@ -42,7 +42,8 @@ python() {
}

DEBIAN_BUILD_DEPENDS ?= "bc, bison, flex, device-tree-compiler, git, libssl-dev:native"

vijai kumar

unread,
Nov 19, 2021, 12:09:35 PM11/19/21
to Vijai Kumar K, isar-users
On Wed, Nov 17, 2021 at 1:05 PM Vijai Kumar K
<Vijaikumar_...@mentor.com> wrote:
>
> Use DEB_BUILD_PROFILES to select packages to build.
>
> This patch drops the U_BOOT_TOOLS_PACKAGE and U_BOOT_CONFIG_PACKAGE
> variables and introduces U_BOOT_BUILD_PROFILES through which we can
> enable particular packages like u-boot-tools, u-boot-dev and
> u-boot-config.
>
> Also, provide backward compatibility with U_BOOT_*_PACKAGES
> variable and prompt a deprecation warning to user.


Will send a v4 with a reorder.
> --
> You received this message because you are subscribed to the Google Groups "isar-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/isar-users/20211117073515.773106-2-Vijaikumar_Kanagarajan%40mentor.com.

vijaikumar....@gmail.com

unread,
Nov 19, 2021, 12:26:06 PM11/19/21
to isar-users
On Friday, November 19, 2021 at 10:39:35 PM UTC+5:30 vijaikumar....@gmail.com wrote:
On Wed, Nov 17, 2021 at 1:05 PM Vijai Kumar K
<Vijaikumar_...@mentor.com> wrote:
>
> Use DEB_BUILD_PROFILES to select packages to build.
>
> This patch drops the U_BOOT_TOOLS_PACKAGE and U_BOOT_CONFIG_PACKAGE
> variables and introduces U_BOOT_BUILD_PROFILES through which we can
> enable particular packages like u-boot-tools, u-boot-dev and
> u-boot-config.
>
> Also, provide backward compatibility with U_BOOT_*_PACKAGES
> variable and prompt a deprecation warning to user.


Will send a v4 with a reorder.

Oops. Wrong thread. No v4 here.

vijaikumar....@gmail.com

unread,
Nov 20, 2021, 1:41:18 AM11/20/21
to isar-users
On Friday, November 19, 2021 at 10:56:06 PM UTC+5:30 vijaikumar....@gmail.com wrote:
On Friday, November 19, 2021 at 10:39:35 PM UTC+5:30 vijaikumar....@gmail.com wrote:
On Wed, Nov 17, 2021 at 1:05 PM Vijai Kumar K
<Vijaikumar_...@mentor.com> wrote:
>
> Use DEB_BUILD_PROFILES to select packages to build.
>
> This patch drops the U_BOOT_TOOLS_PACKAGE and U_BOOT_CONFIG_PACKAGE
> variables and introduces U_BOOT_BUILD_PROFILES through which we can
> enable particular packages like u-boot-tools, u-boot-dev and
> u-boot-config.
>
> Also, provide backward compatibility with U_BOOT_*_PACKAGES
> variable and prompt a deprecation warning to user.


Will send a v4 with a reorder.

Oops. Wrong thread. No v4 here.


A new series was indeed needed to decouple meta and meta-isar changes.


Thanks,
Vijai Kumar K
Reply all
Reply to author
Forward
0 new messages