diff mbox series

[V3] icu: set ac_cv_path_install to install under hosttools

Message ID 20250422130702.1337476-1-changqing.li@windriver.com
State New
Headers show
Series [V3] icu: set ac_cv_path_install to install under hosttools | expand

Commit Message

Changqing Li April 22, 2025, 1:07 p.m. UTC
From: Changqing Li <changqing.li@windriver.com>

icu will check program install path during do_configure, eg:
checking for a BSD-compatible install... /path/to/install -c

And this path will be writen into pkgdata.inc:
INSTALL_CMD=$(INSTALL-L)

Decided by if install is installed into recipe-sysroot-native during
do_configure stage, the INSTALL_CMD could be
/build/tmp/work/corei7-64-wrs-linux/icu/76-1/recipe-sysroot-native/usr/bin/install
or /build/tmp/hosttools/install.

set ac_cv_path_install to install under hosttools to make a determined
result of INSTALL_CMD, avoid vary caused by the execute sequence of
another task which DEPENDS on coreutils-native and independent with
do_configure

Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
 meta/recipes-support/icu/icu_76-1.bb | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Mathieu Dubois-Briand April 23, 2025, 4:57 a.m. UTC | #1
On Tue Apr 22, 2025 at 3:07 PM CEST, Changqing Li via lists.openembedded.org wrote:
> From: Changqing Li <changqing.li@windriver.com>
>
> icu will check program install path during do_configure, eg:
> checking for a BSD-compatible install... /path/to/install -c
>
> And this path will be writen into pkgdata.inc:
> INSTALL_CMD=$(INSTALL-L)
>
> Decided by if install is installed into recipe-sysroot-native during
> do_configure stage, the INSTALL_CMD could be
> /build/tmp/work/corei7-64-wrs-linux/icu/76-1/recipe-sysroot-native/usr/bin/install
> or /build/tmp/hosttools/install.
>
> set ac_cv_path_install to install under hosttools to make a determined
> result of INSTALL_CMD, avoid vary caused by the execute sequence of
> another task which DEPENDS on coreutils-native and independent with
> do_configure
>
> Signed-off-by: Changqing Li <changqing.li@windriver.com>
> ---

Hi,

Thanks for your patch.

It looks like we have some issue with is, as can be seen on the
autobuilder:

ERROR: icu-76-1-r0 do_package_qa: QA Issue: File /usr/lib/icu/76.1/pkgdata.inc in package icu-dev contains reference to TMPDIR [buildpaths]
ERROR: icu-76-1-r0 do_package_qa: Fatal QA errors were found, failing task.

https://autobuilder.yoctoproject.org/valkyrie/#/builders/2/builds/1435/steps/12/logs/stdio

Can you have a look at this failure please?
Changqing Li April 23, 2025, 10:23 a.m. UTC | #2
On 4/23/25 12:57, Mathieu Dubois-Briand wrote:
> CAUTION: This email comes from a non Wind River email account!
> Do not click links or open attachments unless you recognize the sender and know the content is safe.
>
> On Tue Apr 22, 2025 at 3:07 PM CEST, Changqing Li via lists.openembedded.org wrote:
>> From: Changqing Li<changqing.li@windriver.com>
>>
>> icu will check program install path during do_configure, eg:
>> checking for a BSD-compatible install... /path/to/install -c
>>
>> And this path will be writen into pkgdata.inc:
>> INSTALL_CMD=$(INSTALL-L)
>>
>> Decided by if install is installed into recipe-sysroot-native during
>> do_configure stage, the INSTALL_CMD could be
>> /build/tmp/work/corei7-64-wrs-linux/icu/76-1/recipe-sysroot-native/usr/bin/install
>> or /build/tmp/hosttools/install.
>>
>> set ac_cv_path_install to install under hosttools to make a determined
>> result of INSTALL_CMD, avoid vary caused by the execute sequence of
>> another task which DEPENDS on coreutils-native and independent with
>> do_configure
>>
>> Signed-off-by: Changqing Li<changqing.li@windriver.com>
>> ---
> Hi,
>
> Thanks for your patch.
>
> It looks like we have some issue with is, as can be seen on the
> autobuilder:
>
> ERROR: icu-76-1-r0 do_package_qa: QA Issue: File /usr/lib/icu/76.1/pkgdata.inc in package icu-dev contains reference to TMPDIR [buildpaths]
> ERROR: icu-76-1-r0 do_package_qa: Fatal QA errors were found, failing task.
>
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/2/builds/1435/steps/12/logs/stdio
>
> Can you have a look at this failure please?

Hi,

I cannot reproduce this locally,  in my local env,  buildpaths is 
removed by function remove_build_host_references.

Could you help to check the content of /usr/lib/icu/76.1/pkgdata.inc, 
what is this buildpaths reference?

Besides, I see that poky-contrib mathieu/master-next has the V2 patch, 
but I also cannot reproduce with V2 patch.

Thanks

Changqing

>
> --
> Mathieu Dubois-Briand, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
>
Richard Purdie April 24, 2025, 10:33 a.m. UTC | #3
On Tue, 2025-04-22 at 21:07 +0800, Changqing Li via lists.openembedded.org wrote:
> From: Changqing Li <changqing.li@windriver.com>
> 
> icu will check program install path during do_configure, eg:
> checking for a BSD-compatible install... /path/to/install -c
> 
> And this path will be writen into pkgdata.inc:
> INSTALL_CMD=$(INSTALL-L)
> 
> Decided by if install is installed into recipe-sysroot-native during
> do_configure stage, the INSTALL_CMD could be
> /build/tmp/work/corei7-64-wrs-linux/icu/76-1/recipe-sysroot-native/usr/bin/install
> or /build/tmp/hosttools/install.
> 
> set ac_cv_path_install to install under hosttools to make a determined
> result of INSTALL_CMD, avoid vary caused by the execute sequence of
> another task which DEPENDS on coreutils-native and independent with
> do_configure
> 
> Signed-off-by: Changqing Li <changqing.li@windriver.com>
> ---
>  meta/recipes-support/icu/icu_76-1.bb | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/meta/recipes-support/icu/icu_76-1.bb b/meta/recipes-support/icu/icu_76-1.bb
> index f0890fc890..a33f48cf8e 100644
> --- a/meta/recipes-support/icu/icu_76-1.bb
> +++ b/meta/recipes-support/icu/icu_76-1.bb
> @@ -20,9 +20,9 @@ inherit autotools pkgconfig github-releases
>  # ICU needs the native build directory as an argument to its --with-cross-build option when
>  # cross-compiling. Taken the situation that different builds may share a common sstate-cache
>  # into consideration, the native build directory needs to be staged.
> -EXTRA_OECONF = "--with-cross-build=${STAGING_ICU_DIR_NATIVE} --disable-icu-config"
> -EXTRA_OECONF:class-native = "--disable-icu-config"
> -EXTRA_OECONF:class-nativesdk = "--with-cross-build=${STAGING_ICU_DIR_NATIVE} --disable-icu-config"
> +EXTRA_OECONF = "--with-cross-build=${STAGING_ICU_DIR_NATIVE} --disable-icu-config ac_cv_path_install='${HOSTTOOLS_DIR}/install -c'"
> +EXTRA_OECONF:class-native = "--disable-icu-config ac_cv_path_install='${HOSTTOOLS_DIR}/install -c'"
> +EXTRA_OECONF:class-nativesdk = "--with-cross-build=${STAGING_ICU_DIR_NATIVE} --disable-icu-config ac_cv_path_install='${HOSTTOOLS_DIR}/install -c'"
>  
>  EXTRA_OECONF:append:class-target = "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', ' --with-data-packaging=archive', '', d)}"
>  TARGET_CXXFLAGS:append = "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', ' -DICU_DATA_DIR=\\""${datadir}/${BPN}/${@icu_install_folder(d)}\\""', '', d)}"

Does this work if you just use:

ac_cv_path_install='install -c'

?

Cheers,

Richard
Mathieu Dubois-Briand April 24, 2025, 12:07 p.m. UTC | #4
On Wed Apr 23, 2025 at 12:23 PM CEST, Changqing Li wrote:
>
> Hi,
>
> I cannot reproduce this locally,  in my local env,  buildpaths is 
> removed by function remove_build_host_references.
>

It can be reproduced using
https://web.git.yoctoproject.org/poky-ci-archive/tag/?h=autobuilder.yoctoproject.org/valkyrie/a-full-1436,
using default config and trying to build icu.

But the issue is actually on my side: as the patch name changed, I did
not make the link with the v2, so this branch contains both v2 and v3.
If I drop v2, it works correctly with the simple reproduce process
described above.

I will try to integrate the v3 correctly in one of my next builds, to
confirm everything is fine.
Changqing Li April 25, 2025, 1:25 a.m. UTC | #5
On 4/24/25 18:33, Richard Purdie wrote:
> CAUTION: This email comes from a non Wind River email account!
> Do not click links or open attachments unless you recognize the sender and know the content is safe.
>
> On Tue, 2025-04-22 at 21:07 +0800, Changqing Li via lists.openembedded.org wrote:
>> From: Changqing Li<changqing.li@windriver.com>
>>
>> icu will check program install path during do_configure, eg:
>> checking for a BSD-compatible install... /path/to/install -c
>>
>> And this path will be writen into pkgdata.inc:
>> INSTALL_CMD=$(INSTALL-L)
>>
>> Decided by if install is installed into recipe-sysroot-native during
>> do_configure stage, the INSTALL_CMD could be
>> /build/tmp/work/corei7-64-wrs-linux/icu/76-1/recipe-sysroot-native/usr/bin/install
>> or /build/tmp/hosttools/install.
>>
>> set ac_cv_path_install to install under hosttools to make a determined
>> result of INSTALL_CMD, avoid vary caused by the execute sequence of
>> another task which DEPENDS on coreutils-native and independent with
>> do_configure
>>
>> Signed-off-by: Changqing Li<changqing.li@windriver.com>
>> ---
>>   meta/recipes-support/icu/icu_76-1.bb | 6 +++---
>>   1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/meta/recipes-support/icu/icu_76-1.bb b/meta/recipes-support/icu/icu_76-1.bb
>> index f0890fc890..a33f48cf8e 100644
>> --- a/meta/recipes-support/icu/icu_76-1.bb
>> +++ b/meta/recipes-support/icu/icu_76-1.bb
>> @@ -20,9 +20,9 @@ inherit autotools pkgconfig github-releases
>>   # ICU needs the native build directory as an argument to its --with-cross-build option when
>>   # cross-compiling. Taken the situation that different builds may share a common sstate-cache
>>   # into consideration, the native build directory needs to be staged.
>> -EXTRA_OECONF = "--with-cross-build=${STAGING_ICU_DIR_NATIVE} --disable-icu-config"
>> -EXTRA_OECONF:class-native = "--disable-icu-config"
>> -EXTRA_OECONF:class-nativesdk = "--with-cross-build=${STAGING_ICU_DIR_NATIVE} --disable-icu-config"
>> +EXTRA_OECONF = "--with-cross-build=${STAGING_ICU_DIR_NATIVE} --disable-icu-config ac_cv_path_install='${HOSTTOOLS_DIR}/install -c'"
>> +EXTRA_OECONF:class-native = "--disable-icu-config ac_cv_path_install='${HOSTTOOLS_DIR}/install -c'"
>> +EXTRA_OECONF:class-nativesdk = "--with-cross-build=${STAGING_ICU_DIR_NATIVE} --disable-icu-config ac_cv_path_install='${HOSTTOOLS_DIR}/install -c'"
>>
>>   EXTRA_OECONF:append:class-target ="${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', ' 
>> --with-data-packaging=archive', '', d)}"
>>   TARGET_CXXFLAGS:append ="${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', ' 
>> -DICU_DATA_DIR=\\""${datadir}/${BPN}/${@icu_install_folder(d)}\\""', '', d)}"
> Does this work if you just use:
>
> ac_cv_path_install='install -c'
>
> ?

It works well,  bitbake icu can build successfully.  And it can also fix 
the original do_package_qa issue:

in function remove_build_host_references, only hosttool path is 
removed('s:${HOSTTOOLS_DIR}/::g'),

so when install under STAGING_BINDIR_NATIVE is used,  qa error happened.


But if use ac_cv_path_install='install -c', the actually used install 
maybe under STAGING_BINDIR_NATIVE or HOSTTOOLS_DIR,

decide if install is under STAGING_BINDIR_NATIVE when do_install is runned.


So I use '${HOSTTOOLS_DIR}/install -c' to make install under hosttools 
is always used.

Regards

Changqing

>
> Cheers,
>
> Richard
Richard Purdie April 25, 2025, 6:42 a.m. UTC | #6
On Fri, 2025-04-25 at 09:25 +0800, Changqing Li wrote:
>  
> On 4/24/25 18:33, Richard Purdie wrote:
>  
> > Does this work if you just use:
> > 
> > ac_cv_path_install='install -c'
> > 
> > ?
> 
> It works well,  bitbake icu can build successfully.  And it can also fix the original do_package_qa issue:
>  
> 
> 
> 
> in function remove_build_host_references, only hosttool path is removed('s:${HOSTTOOLS_DIR}/::g'),
>  
> 
> 
> 
> so when install under STAGING_BINDIR_NATIVE is used,  qa error happened.
>   
> But if use ac_cv_path_install='install -c',  the actually used install maybe under STAGING_BINDIR_NATIVE or HOSTTOOLS_DIR,
>  decide if install is under STAGING_BINDIR_NATIVE when do_install is runned.  
>   
> So I use '${HOSTTOOLS_DIR}/install -c' to make install under hosttools is always used.
>  

We use the tool from PATH everywhere else in the project so it should
be fine to do that here as well. I would be concerned if that tool
behaved differently between the two and we'd have bigger problems if it
did. This therefore should be fine.

Cheers,

Richard
diff mbox series

Patch

diff --git a/meta/recipes-support/icu/icu_76-1.bb b/meta/recipes-support/icu/icu_76-1.bb
index f0890fc890..a33f48cf8e 100644
--- a/meta/recipes-support/icu/icu_76-1.bb
+++ b/meta/recipes-support/icu/icu_76-1.bb
@@ -20,9 +20,9 @@  inherit autotools pkgconfig github-releases
 # ICU needs the native build directory as an argument to its --with-cross-build option when
 # cross-compiling. Taken the situation that different builds may share a common sstate-cache
 # into consideration, the native build directory needs to be staged.
-EXTRA_OECONF = "--with-cross-build=${STAGING_ICU_DIR_NATIVE} --disable-icu-config"
-EXTRA_OECONF:class-native = "--disable-icu-config"
-EXTRA_OECONF:class-nativesdk = "--with-cross-build=${STAGING_ICU_DIR_NATIVE} --disable-icu-config"
+EXTRA_OECONF = "--with-cross-build=${STAGING_ICU_DIR_NATIVE} --disable-icu-config ac_cv_path_install='${HOSTTOOLS_DIR}/install -c'"
+EXTRA_OECONF:class-native = "--disable-icu-config ac_cv_path_install='${HOSTTOOLS_DIR}/install -c'"
+EXTRA_OECONF:class-nativesdk = "--with-cross-build=${STAGING_ICU_DIR_NATIVE} --disable-icu-config ac_cv_path_install='${HOSTTOOLS_DIR}/install -c'"
 
 EXTRA_OECONF:append:class-target = "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', ' --with-data-packaging=archive', '', d)}"
 TARGET_CXXFLAGS:append = "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', ' -DICU_DATA_DIR=\\""${datadir}/${BPN}/${@icu_install_folder(d)}\\""', '', d)}"