public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
From: Robert Yang <liezhi.yang@windriver.com>
To: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>,
	openembedded-core@lists.openembedded.org
Cc: alex.kanavin@gmail.com, richard.purdie@linuxfoundation.org,
	mark.hatle@kernel.crashing.org
Subject: Re: [OE-core] [PATCH v3 2/2] rpm: 4.20.1 -> 6.0.1
Date: Sun, 8 Feb 2026 22:48:19 +0800	[thread overview]
Message-ID: <c06afc61-5580-4c91-9360-c011b5db102f@windriver.com> (raw)
In-Reply-To: <495ad555-f9e8-496a-99ea-4b04702ac23d@windriver.com>

I had blocked by another issue in the past week, the rpm 4.20.1 couldn't find
any requires/provides on pkg-config files (.pc), but for rpm 6.0.1,
qemuarm64 and qemux86 can find them, but qemux-64 can't, so there
are do_rootfs errors for qemuarm64 and qemux86 when install the
dev pkgs, such as:

      Problem 1: package python3-ptest-3.14.2-r0.cortexa15t2hf_neon from oe-repo 
requires python3-dev, but none of the providers can be instal
led
       - conflicting requests
       - nothing provides /usr/bin/pkg-config needed by 
python3-dev-3.14.2-r0.cortexa15t2hf_neon from oe-repo
      Problem 2: package libglib-2.0-ptest-1:2.86.3-r0.cortexa15t2hf_neon from 
oe-repo requires glib-2.0-dev, but none of the providers can be
  installed
       - conflicting requests
       - nothing provides /usr/bin/pkg-config needed by 
libglib-2.0-dev-1:2.86.3-r0.cortexa15t2hf_neon from oe-repo
     (try to add '--skip-broken' to skip uninstallable packages or 
'--setopt=optional_metadata_types=filelists' to load additional filelists m
etadata)

I finally found the root cause and fixed that, this is because the macros
(_lib and _libdir) for rpmbuild is built from rpm-native, they may not work
for target recipes, the fix is passing the correct macros to rpmbuild
when do_package_write_rpm:

diff --git a/meta/classes-global/package_rpm.bbclass 
b/meta/classes-global/package_rpm.bbclass
index 30696aa45f..526ac57982 100644
--- a/meta/classes-global/package_rpm.bbclass
+++ b/meta/classes-global/package_rpm.bbclass
@@ -622,6 +622,8 @@ python do_package_rpm () {
      cmd = rpmbuild
      cmd = cmd + " --noclean --nodeps --short-circuit --target " + pkgarch + " 
--buildroot " + pkgd
      cmd = cmd + " --define '_topdir " + workdir + "' --define '_rpmdir " + 
pkgwritedir + "'"
+    cmd = cmd + " --define '_lib ${BASELIB}'"
+    cmd = cmd + " --define '_libdir ${libdir}'"
      cmd = cmd + " --define '_builddir " + d.getVar('B') + "'"
      cmd = cmd + " --define '_build_name_fmt 
%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm'"
      cmd = cmd + " --define '_binaries_in_noarch_packages_terminate_build 0'"

I will send the patches after more testing.

// Robert

On 2/2/26 21:01, Robert Yang wrote:
> Hi Mathieu,
> 
> On 1/27/26 20:27, Mathieu Dubois-Briand wrote:
>> On Fri Jan 23, 2026 at 7:13 AM CET, Robert Yang via lists.openembedded.org wrote:
>>> From: Robert Yang <liezhi.yang@windriver.com>
>>>
>>> * Add a tag to SRC_URI so that there will be errors when only change the
>>>    filename during upgrade it, as suggested by Alexander.
>>>
>>> * Rebase the following patch:
>>>    - 0001-Add-a-color-setting-for-mips64_n32-binaries.patch
>>>    - 0001-Do-not-add-an-unsatisfiable-dependency-when-building.patch
>>>    - 0001-Do-not-read-config-files-from-HOME.patch
>>>    - 0001-Do-not-reset-the-PATH-environment-variable-before-ru.patch
>>>    - 0001-When-cross-installing-execute-package-scriptlets-wit.patch
>>>    - 0001-build-pack.c-do-not-insert-payloadflags-into-.rpm-me.patch
>>>    - 0001-lib-transaction.c-fix-file-conflicts-for-MIPS64-N32.patch
>>>    - 0002-Add-support-for-prefixing-etc-from-RPM_ETCCONFIGDIR-.patch
>>>    - 0002-rpmio-rpmglob.c-avoid-using-GLOB_BRACE-if-undefined-.patch
>>>    - 0016-rpmscript.c-change-logging-level-around-scriptlets-t.patch
>>>
>>> * Remove backported patch 0001-CMakeLists.txt-Fix-checking-for-CFLAGS.patch
>>>
>>> * Add the following 2 patches:
>>>    - 0001-tools-elfdeps.cc-Remove-format-module.patch
>>>      There is no format until gcc 13.1, so remove the format module to make it
>>>      work on hosts such as Ubuntu 22.04.
>>>
>>>    - 0001-macros.in-Set-_pkgverify_level-to-digest-as-RCPM-4.2.patch
>>>      Fixed:
>>>      GPG check FAILED
>>>
>>> * Add scdoc-native to DEPENDS to fix do_configure error for both native and
>>>    target:
>>>    Could not find SCDOC using the following names: scdoc
>>>
>>>    Note, both target and native need scdoc-native, it is used for generating the
>>>    manual, the man pages in *man/* are scdoc sources
>>>
>>> * Add /etc/rpm to nativesdk-rpm to fix:
>>>    ERROR: nativesdk-rpm-1_6.0.1-r0 do_package: QA Issue: nativesdk-rpm:
>>>    Files/directories were installed but not shipped in any package:
>>>    /etc
>>>    /etc/rpm
>>>
>>> * Test info:
>>>    PACKAGE_CLASSES = "package_rpm"
>>>    $ bitbake core-image-sato world
>>>    $ bitbake core-image-sato -cpopulate_sdk
>>>
>>> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
>>> ---
>>
>> Hi Robert,
>>
>> Thanks for your patch.
>>
>> Some tests are failing after this upgrade, you can see them with
>> "bitbake core-image-full-cmdline:do_testimage":
>>
>> AssertionError: 1 != 0 : dnf --repofrompath=oe-testimage-repo- 
>> qemux86_64,http://192.168.7.1:41395/qemux86_64 --repofrompath=oe-testimage- 
>> repo-noarch,http://192.168.7.1:41395/noarch --repofrompath=oe-testimage-repo- 
>> x86_64_x32,http://192.168.7.1:41395/x86_64_x32 --nogpgcheck install -- 
>> installroot=/home/root/chroot/test -v -y --rpmverbosity=debug busybox
>> ...
>> %post(busybox-1.37.0-r0.x86_64_x32): execv(/bin/sh) pid 624
>> error: failed to exec scriptlet interpreter /bin/sh: No such file or directory
>> %post(busybox-1.37.0-r0.x86_64_x32): waitpid(624) rc 624 status 7f00
>> warning: %post(busybox-1.37.0-r0.x86_64_x32) scriptlet failed, exit status 127
>>
>> Error in POSTIN scriptlet in rpm package busybox
>>    Installing       : libc6-2.42+git0+453e6b8dba-r1.x86_64_x32               3/4
> 
> I found the root cause, it is because busybox and libc6 depends on each other,
> busybox' elf files depends on libc6, and libc6's postin depends on busybox'
> /bin/sh, the do_rootfs works well is because dnf-native has set
> RPM_NO_CHROOT_FOR_SCRIPTS=1, but it would be failed for a fresh rootfs.
> 
> In rpm 4.20.1, it let the installed files' Requires win, so it installed busybox
> firstly, but in rpm 6.0.1, it let the postin's Requires win since postin would
> run immediately after the files are installed, this does make sense, so it
> installed busybox (which provides /bin/sh required by libc6' postin) firstly,
> then we got the errors. I couldn't find which commit made this change because
> a lot of files and functions are refactored during 4.20.1 and 6.0.0 (not .1),
> I also tried bisect, but failed because a lot of do_patch or
> do_configure/do_compile failures for each build.
> 
> For libc6's the postin is:
> 
> #!/bin/sh
> if [ x"$D" = "x" ]; then
>      if [ -x /sbin/ldconfig ]; then /sbin/ldconfig ; fi
> fi
> 
> This doesn't make sense for lib6 since there is no /bin/sh or ldconfig when
> libc6 is not ready, so we can just remove libc6's postin to fix the problem.
> 
> I will send a V4 for it if no objections.
> 
> // Robert
> 
>>
>> https://autobuilder.yoctoproject.org/valkyrie/#/builders/11/builds/3059
>> https://autobuilder.yoctoproject.org/valkyrie/#/builders/4/builds/3107
>> https://autobuilder.yoctoproject.org/valkyrie/#/builders/16/builds/3127
>> https://autobuilder.yoctoproject.org/valkyrie/#/builders/19/builds/3100
>>
>> Can you have a look at these tests?
>>
>> Thanks,
>> Mathieu
>>
> 



      reply	other threads:[~2026-02-08 14:48 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-23  6:13 [PATCH v3 0/2] rpm: 4.20.1 -> 6.0.1 liezhi.yang
2026-01-23  6:13 ` [PATCH v3 1/2] package_rpm.bbclass: Drop external dependency generator to support rpm 6 liezhi.yang
2026-01-23  6:13 ` [PATCH v3 2/2] rpm: 4.20.1 -> 6.0.1 liezhi.yang
2026-01-27 12:27   ` [OE-core] " Mathieu Dubois-Briand
2026-02-02 13:01     ` Robert Yang
2026-02-08 14:48       ` Robert Yang [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c06afc61-5580-4c91-9360-c011b5db102f@windriver.com \
    --to=liezhi.yang@windriver.com \
    --cc=alex.kanavin@gmail.com \
    --cc=mark.hatle@kernel.crashing.org \
    --cc=mathieu.dubois-briand@bootlin.com \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=richard.purdie@linuxfoundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox