[PATCH] linux-custom: Sync provides value with build profiles

1 view
Skip to first unread message

Anton Mikanovich

unread,
6:06 AM (8 hours ago) 6:06 AM
to isar-...@googlegroups.com, Anton Mikanovich
Packages linux-libc-dev and linux-libc-dev-${DISTRO_ARCH}-cross were
added to PROVIDES variable unconditionally, while those packages are
not really built until KERNEL_LIBC_DEV_DEPLOY enabled (which is set to
"0" by default).

Add libc-dev packages to PROVIDES only if there are no 'nolibcdev'
Debian build profile used so PROVIDES will be always in sync with real
set of packages being built.

Signed-off-by: Anton Mikanovich <ami...@ilbers.de>
---
meta/recipes-kernel/linux/linux-custom.inc | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/meta/recipes-kernel/linux/linux-custom.inc b/meta/recipes-kernel/linux/linux-custom.inc
index f2892921..cc12725b 100644
--- a/meta/recipes-kernel/linux/linux-custom.inc
+++ b/meta/recipes-kernel/linux/linux-custom.inc
@@ -144,13 +144,24 @@ RECIPE_PROVIDES:class-kbuildtarget = " \
DEPENDS:class-kbuildtarget = "${BPN}"
ISAR_CROSS_COMPILE:class-kbuildtarget = "0"

+# Provide linux-libc-dev packages unless nolibcdev profile used
+def get_libc_dev_provides(d):
+ additional_profiles = get_additional_build_profiles(d)
+ if 'nolibcdev' not in additional_profiles:
+ return d.getVar("RECIPE_PROVIDES_LIBC_DEV")
+ return ""
+
+RECIPE_PROVIDES_LIBC_DEV = " \
+ linux-libc-dev \
+ linux-libc-dev-${DISTRO_ARCH}-cross \
+"
+
# Make bitbake know we will be producing linux-image and linux-headers packages
# Also make it know about other packages from control
RECIPE_PROVIDES = " \
linux-image-${KERNEL_NAME_PROVIDED} \
linux-headers-${KERNEL_NAME_PROVIDED} \
- linux-libc-dev \
- linux-libc-dev-${DISTRO_ARCH}-cross \
+ ${@get_libc_dev_provides(d)} \
linux-image-${KERNEL_NAME_PROVIDED}-dbg \
linux-kbuild-${KERNEL_NAME_PROVIDED} \
${BPN}-pseudo-native \
--
2.34.1

Isaac True

unread,
6:20 AM (8 hours ago) 6:20 AM
to Anton Mikanovich, isar-...@googlegroups.com
Hi,

This could be simplified down to something like this which would avoid
creating new functions and be consistent with other places in
linux-custom.inc:

RECIPE_PROVIDES:append = " ${@ bb.utils.contains('DEB_BUILD_PROFILES',
'nolibcdev', '', 'linux-libc-dev linux-libc-dev-${DISTRO_ARCH}-cross',
d) }"

What do you think?

Cheers,
Isaac
Isaac True
emlix GmbH, https://www.emlix.com
Fon +49 228 94 77 96 94
Bachstraße 6, 53115 Bonn, Germany
Sitz der Gesellschaft: Göttingen, Amtsgericht Göttingen HR B 3160
Geschäftsfuehrung: Heike Jordan, Dr. Uwe Kracke
Ust-IdNr.: DE 205 198 055

emlix - smart embedded open source

Anton Mikanovich

unread,
6:39 AM (7 hours ago) 6:39 AM
to Isaac True, isar-...@googlegroups.com
10/11/2025 13:20, Isaac True wrote:
> Hi,
>
> This could be simplified down to something like this which would avoid
> creating new functions and be consistent with other places in
> linux-custom.inc:
>
> RECIPE_PROVIDES:append = " ${@ bb.utils.contains('DEB_BUILD_PROFILES',
> 'nolibcdev', '', 'linux-libc-dev linux-libc-dev-${DISTRO_ARCH}-cross',
> d) }"
>
> What do you think?
>
> Cheers,
> Isaac
Hello Isaac,

The motivation was to keep the same format of deps declare as previously
(multi-line list), so it will be easier to maintain in the future.
So maybe something hybrid should be better, like:

RECIPE_PROVIDES:append = " ${@ bb.utils.contains('DEB_BUILD_PROFILES',
'nolibcdev', '', d.getVar('RECIPE_PROVIDES_LIBC_DEV'), d) }"

I'm also not happy with RECIPE_PROVIDES_LIBC_DEV naming, but didn't came up
with better one.

Jan Kiszka

unread,
6:55 AM (7 hours ago) 6:55 AM
to Anton Mikanovich, isar-users, Isaac True
OVERRIDES:append = "${@bb.utils.contains('DEB_BUILD_PROFILES', 'nolibcdev', '', ''libcdev')}"

RECIPE_PROVIDES:append:libcdev = " \
linux-libc-dev \
linux-libc-dev-${DISTRO_ARCH}-cross"

That would be truly aligned with the other bits in the file.

Jan

--
Siemens AG, Foundational Technologies
Linux Expert Center

Anton Mikanovich

unread,
9:53 AM (4 hours ago) 9:53 AM
to isar-...@googlegroups.com, Anton Mikanovich
Packages linux-libc-dev and linux-libc-dev-${DISTRO_ARCH}-cross were
added to PROVIDES variable unconditionally, while those packages are
not really built until KERNEL_LIBC_DEV_DEPLOY enabled (which is set to
"0" by default).

Add libc-dev packages to PROVIDES only if there are no 'nolibcdev'
Debian build profile used so PROVIDES will be always in sync with real
set of packages being built.

Signed-off-by: Anton Mikanovich <ami...@ilbers.de>
---
Changes in v2:
- Rebase on collision fixes in next.
- Migrate implementation to overrides.

meta/recipes-kernel/linux/linux-custom.inc | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/meta/recipes-kernel/linux/linux-custom.inc b/meta/recipes-kernel/linux/linux-custom.inc
index 9dd9abb5..5071367d 100644
--- a/meta/recipes-kernel/linux/linux-custom.inc
+++ b/meta/recipes-kernel/linux/linux-custom.inc
@@ -156,12 +156,19 @@ ISAR_CROSS_COMPILE:class-kbuildtarget = "0"
RECIPE_PROVIDES = " \
linux-image-${KERNEL_NAME_PROVIDED} \
linux-headers-${KERNEL_NAME_PROVIDED} \
- linux-libc-dev \
- linux-libc-dev-${DISTRO_ARCH}-cross \
linux-image-${KERNEL_NAME_PROVIDED}-dbg \
linux-kbuild-${KERNEL_NAME_PROVIDED} \
${BPN}-pseudo-native \
"
+
+# Provide linux-libc-dev packages unless nolibcdev profile used
+OVERRIDES:append = ":${@ bb.utils.contains('DEB_BUILD_PROFILES', 'pkg.{}.nolibcdev'.format(d.getVar('BPN')), 'nolibcdev', 'libcdev', d)}"
+
+RECIPE_PROVIDES:append:libcdev = " \
+ linux-libc-dev \
+ linux-libc-dev-${DISTRO_ARCH}-cross \
+"
+
# When cross-profile is active:
# kbuild package is provided by -native or -kbuildtarget variant. Also headers
# provisioning moves over to ensure those variants are pulled, although the
--
2.34.1

Reply all
Reply to author
Forward
0 new messages