Re: [PATCH 2/2] curl: enable nghttp2 for support HTTP2


Changqing Li
 

On 1/20/23 09:48, Changqing Li wrote:

On 1/16/23 05:30, Alexandre Belloni 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 13/01/2023 16:04:42+0800, Changqing Li wrote:
On 1/5/23 22:09, Alexandre Belloni 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.

This fails on the AB:

https://autobuilder.yoctoproject.org/typhoon/#/builders/80/builds/4580/steps/14/logs/stdio
Hi, Alexandre

I need some help to debug this issue.

I cannot reproduce this issue on my host. First,  the gcc command used to
build the binary conftest will

have as-needed enabled by default,  so actually,  these libs will not be
linked, and runtime check will passed.

Refer the command:

gcc -o conftest -isystem/mnt/lincd/build/tmp-glibc/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/include
-pipe -Werror-implicit-function-declaration -g -O2 -std=gnu89 -pedantic
-Wall -W -Wpointer-arith -Wwrite-strings -Wunused -Wshadow -Winline
-Wnested-externs -Wmissing-declarations -Wmissing-prototypes -Wno-long-long
-Wbad-function-cast -Wfloat-equal -Wno-multichar -Wsign-compare -Wundef
-Wno-format-nonliteral -Wendif-labels -Wstrict-prototypes
-Wdeclaration-after-statement -Wold-style-definition -Wstrict-aliasing=3
-Wcast-align -Wtype-limits -Wold-style-declaration -Wmissing-parameter-type
-Wempty-body -Wclobbered -Wignored-qualifiers -Wconversion
-Wno-sign-conversion -Wvla -ftree-vrp -Wdouble-promotion -Wformat=2
-Warray-bounds=2 -Wshift-negative-value -Wshift-overflow=2
-Wnull-dereference -fdelete-null-pointer-checks -Wduplicated-cond
-Wunused-const-variable -Wduplicated-branches -Wrestrict -Walloc-zero
-Wformat-overflow=2 -Wformat-truncation=2 -Wimplicit-fallthrough=4
-Wno-system-headers -isystem/mnt/lincd/build/tmp-glibc/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/include -I/mnt/lincd/build/tmp-glibc/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib/..//include -I/mnt/lincd/build/tmp-glibc/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib/pkgconfig/../../../usr/include
-DOPENSSL_SUPPRESS_DEPRECATED -I/mnt/lincd/build/tmp-glibc/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib/pkgconfig/../../../usr/include -L/mnt/lincd/build/tmp-glibc/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib -L/mnt/lincd/build/tmp-glibc/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/lib
-Wl,--enable-new-dtags -Wl,-rpath-link,/mnt/lincd/build/tmp-glibc/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib -Wl,-rpath-link,/mnt/lincd/build/tmp-glibc/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/lib -Wl,-rpath,/mnt/lincd/build/tmp-glibc/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib -Wl,-rpath,/mnt/lincd/build/tmp-glibc/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/lib
-Wl,-O1 -Wl,--allow-shlib-undefined -Wl,--dynamic-linker=/mnt/lincd/build/tmp-glibc/sysroots-uninative/x86_64-linux/lib/ld-linux-x86-64.so.2 -L/mnt/lincd/build/tmp-glibc/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib/..//lib -L/mnt/lincd/build/tmp-glibc/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib/pkgconfig/../../../usr/lib -L/mnt/lincd/build/tmp-glibc/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib/pkgconfig/../../../usr/lib
conftest.c   -lnghttp2 -lssl -lcrypto -lssl -lcrypto -lz


I also tried to add "-Wl,--no-as-needed" in above comand, and manually run
it,  then conftest will link those libraries. These libraries can also be
found at runtime

since these libraries will be in recipe-sysroot-native.

$/mnt/yocto/test/tmp/work/x86_64-linux/curl-native/7.87.0-r0/build# ldd
conftest
     linux-vdso.so.1 (0x00007ffd447c1000)
     libnghttp2.so.14 => /mnt/lincd/build/tmp-glibc/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib/libnghttp2.so.14
(0x00007f6bd36af000)
     libssl.so.3 => /mnt/lincd/build/tmp-glibc/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib/libssl.so.3
(0x00007f6bd3606000)
     libcrypto.so.3 => /mnt/lincd/build/tmp-glibc/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib/libcrypto.so.3
(0x00007f6bd31cf000)
     libz.so.1 => /mnt/lincd/build/tmp-glibc/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib/libz.so.1
(0x00007f6bd31b5000)
     libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6bd2fb9000)
     libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
(0x00007f6bd2f96000)
     libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f6bd2f90000)
/mnt/lincd/build/tmp-glibc/sysroots-uninative/x86_64-linux/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f6bd36e6000)
$/mnt/yocto/test/tmp/work/x86_64-linux/curl-native/7.87.0-r0/build#
./conftest


This should be an host related issue,  Does the worker "debian11-ty-3" means
that this build is built on debian11 docker or debian11 host? Thanks.
This is a debian 11 host.
Hi, Alex

I cannot reproduce this with debian 11 docker image.

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

configure:33927: checking run-time libs availability
configure:33983: gcc  -o conftest -isystem/mnt/yocto/build/tmp/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/include -pipe -Werror-implicit-function-declaration -O2 -Wno-system-headers -isystem/mnt/yocto/build/tmp/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/include -I/mnt/yocto/build/tmp/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib/..//include -I/mnt/yocto/build/tmp/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib/pkgconfig/../../../usr/include -DOPENSSL_SUPPRESS_DEPRECATED -I/mnt/yocto/build/tmp/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib/pkgconfig/../../../usr/include -L/mnt/yocto/build/tmp/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib -L/mnt/yocto/build/tmp/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/lib -Wl,--enable-new-dtags -Wl,-rpath-link,/mnt/yocto/build/tmp/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib -Wl,-rpath-link,/mnt/yocto/build/tmp/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/lib -Wl,-rpath,/mnt/yocto/build/tmp/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib -Wl,-rpath,/mnt/yocto/build/tmp/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/lib -Wl,-O1 -Wl,--allow-shlib-undefined -Wl,--dynamic-linker=/mnt/yocto/build/tmp/sysroots-uninative/x86_64-linux/lib/ld-linux-x86-64.so.2 -L/mnt/yocto/build/tmp/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib/..//lib -L/mnt/yocto/build/tmp/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib/pkgconfig/../../../usr/lib -L/mnt/yocto/build/tmp/work/x86_64-linux/curl-native/7.87.0-r0/recipe-sysroot-native/usr/lib/pkgconfig/../../../usr/lib conftest.c -lnghttp2 -lssl -lcrypto -lssl -lcrypto -lz  >&5
configure:33983: $? = 0
configure:33983: ./conftest
configure:33983: $? = 0
configure:33985: result: fine


Is it possible to login the autobuilder host to check this?
Hi, Alex, Richard

Could you help to give some suggestions to debug this issue?

Thanks

Changqing



Regards

Changqing



Regards

Changqing

| checking run-time libs availability... failed
| configure: error: one or more libs available at link-time are not available run-time. Libs used at link-time: -lnghttp2 -lssl -lcrypto -lssl -lcrypto -lz
| NOTE: The following config.log files may provide further information.
| NOTE: /home/pokybuild/yocto-worker/oe-selftest-debian/build/build-st-109066/tmp/work/x86_64-linux/curl-native/7.87.0-r0/build/config.log
| ERROR: configure failed
| WARNING: exit code 1 from a shell command.
NOTE: recipe curl-native-7.87.0-r0: task do_configure: Failed
ERROR: Task (virtual:native:/home/pokybuild/yocto-worker/oe-selftest-debian/build/meta/recipes-support/curl/curl_7.87.0.bb:do_configure) failed with exit code '1'

On 29/12/2022 10:34:42+0800, Changqing Li wrote:
From: Changqing Li <changqing.li@...>

After commit `ostree: replace libsoup-2.4 by curl`, ostree depends on
libcurl, but it needs http2 support, otherwise it will fail with
error:
OSTree:ERROR:../git/src/libostree/ostree-fetcher-curl.c:886:initiate_next_curl_request: assertion failed (rc == CURLM_OK): (1 == 0)
| Bail out! OSTree:ERROR:../git/src/libostree/ostree-fetcher-curl.c:886:initiate_next_curl_request: assertion failed (rc == CURLM_OK): (1 == 0)

Enable nghttp2 to fix above error.

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

diff --git a/meta/recipes-support/curl/curl_7.86.0.bb b/meta/recipes-support/curl/curl_7.86.0.bb
index f5e3e7235d..6cee548f35 100644
--- a/meta/recipes-support/curl/curl_7.86.0.bb
+++ b/meta/recipes-support/curl/curl_7.86.0.bb
@@ -24,9 +24,9 @@ inherit autotools pkgconfig binconfig multilib_header ptest
   # Entropy source for random PACKAGECONFIG option
   RANDOM ?= "/dev/urandom"

-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} libidn openssl proxy random threaded-resolver verbose zlib"
-PACKAGECONFIG:class-native = "ipv6 openssl proxy random threaded-resolver verbose zlib"
-PACKAGECONFIG:class-nativesdk = "ipv6 openssl proxy random threaded-resolver verbose zlib"
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} libidn openssl proxy random threaded-resolver verbose zlib nghttp2"
+PACKAGECONFIG:class-native = "ipv6 openssl proxy random threaded-resolver verbose zlib nghttp2"
+PACKAGECONFIG:class-nativesdk = "ipv6 openssl proxy random threaded-resolver verbose zlib nghttp2"

   # 'ares' and 'threaded-resolver' are mutually exclusive
   PACKAGECONFIG[ares] = "--enable-ares,--disable-ares,c-ares,,,threaded-resolver"
--
2.25.1


--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

Join {openembedded-core@lists.openembedded.org to automatically receive all group messages.