Openembedded Core Discussions
 help / color / mirror / Atom feed
From: "Antonin Godard" <antonin.godard@bootlin.com>
To: <gudni.m.g@gmail.com>, <openembedded-core@lists.openembedded.org>
Subject: Re: [OE-core] [PATCH v2] sqlite3: upgrade 3.48.0 -> 3.50.1
Date: Wed, 02 Jul 2025 08:26:51 +0200	[thread overview]
Message-ID: <DB1CTEVUVWZP.13OQTLFJG9G9S@bootlin.com> (raw)
In-Reply-To: <20250627181217.3481-1-gudni.m.g@gmail.com>

On Fri Jun 27, 2025 at 8:12 PM CEST, Guðni Már Gilbert via lists.openembedded.org wrote:
> This update includes major change in how it is built.
> Instead of autotools, autosetup is used.
>
> Autosetup (https://msteveb.github.io/autosetup/) claims to be
> * Replacement for autoconf in many situations
> However it also claims NOT to
> * Intended to replace all possible uses of autoconf
> This means that some autoconf features are not available.
>
> Recipe changes:
> * stop inheriting autotools and define B, do_configure and do_install
> * depend on zlib unconditionally, autoconf cannot be preconfigured in
>   similar way as autotools
> * update packageconfig options to match new syntax
> * libedit is detected with ncurses linking options (as seen in
>   do_configure log)
> * backport rpaths fix
> * define soname to avoid file-rdeps QA error due to wrong library name
> * add hack to force cross-compilation in native case to link against
>   zlib in sysroot and thus avoid crashes when sstate-cache from different
>   distro is used
> * clean B for do_configure as the new Makefiles do not seem to properly
>   retrigger build if configuration changes
>
> Kudos to Peter Marko for the initial work on upgrading SQLite
>
> Signed-off-by: Guðni Már Gilbert <gudni.m.g@gmail.com>
> ---
>  meta/recipes-support/sqlite/sqlite3.inc       | 43 ++++++++++---
>  ...rpath-configure-script-flag-to-addre.patch | 60 +++++++++++++++++++
>  .../{sqlite3_3.48.0.bb => sqlite3_3.50.1.bb}  |  4 +-
>  3 files changed, 98 insertions(+), 9 deletions(-)
>  create mode 100644 meta/recipes-support/sqlite/sqlite3/0001-Add-the-disable-rpath-configure-script-flag-to-addre.patch
>  rename meta/recipes-support/sqlite/{sqlite3_3.48.0.bb => sqlite3_3.50.1.bb} (53%)
>
> diff --git a/meta/recipes-support/sqlite/sqlite3.inc b/meta/recipes-support/sqlite/sqlite3.inc
> index 28a33282ae..3251d310fb 100644
> --- a/meta/recipes-support/sqlite/sqlite3.inc
> +++ b/meta/recipes-support/sqlite/sqlite3.inc
> @@ -14,34 +14,37 @@ def sqlite_download_version(d):
>  SQLITE_PV = "${@sqlite_download_version(d)}"
>  
>  S = "${UNPACKDIR}/sqlite-autoconf-${SQLITE_PV}"
> +B = "${WORKDIR}/build"
>  
> -UPSTREAM_CHECK_URI = "http://www.sqlite.org/"
> +UPSTREAM_CHECK_URI = "https://www.sqlite.org/"
>  UPSTREAM_CHECK_REGEX = "releaselog/(?P<pver>(\d+[\.\-_]*)+)\.html"
>  
>  CVE_PRODUCT = "sqlite"
>  
> -inherit autotools pkgconfig siteinfo
> +inherit pkgconfig siteinfo
> +
> +# zlib is autodetected and gets to sysroots as transitive dependency, make this deterministic
> +DEPENDS = "zlib"
>  
>  # enable those which are enabled by default in configure
>  PACKAGECONFIG ?= "fts4 fts5 rtree dyn_ext"
>  PACKAGECONFIG:class-native ?= "fts4 fts5 rtree dyn_ext"
>  
> -PACKAGECONFIG[editline] = "--enable-editline,--disable-editline,libedit"
> -PACKAGECONFIG[readline] = "--enable-readline,--disable-readline,readline ncurses"
> +PACKAGECONFIG[editline] = "--enable-editline --with-readline-header=${includedir}/editline/readline.h,--disable-editline,libedit ncurses"
> +PACKAGECONFIG[readline] = "--enable-readline --with-readline-header=${includedir}/readline/readline.h,--disable-readline,readline ncurses"
>  PACKAGECONFIG[fts3] = "--enable-fts3,--disable-fts3"
>  PACKAGECONFIG[fts4] = "--enable-fts4,--disable-fts4"
>  PACKAGECONFIG[fts5] = "--enable-fts5,--disable-fts5"
>  PACKAGECONFIG[rtree] = "--enable-rtree,--disable-rtree"
>  PACKAGECONFIG[session] = "--enable-session,--disable-session"
> -PACKAGECONFIG[dyn_ext] = "--enable-dynamic-extensions,--disable-dynamic-extensions"
> -PACKAGECONFIG[zlib] = ",,zlib"
> -
> -CACHED_CONFIGUREVARS += "${@bb.utils.contains('PACKAGECONFIG', 'zlib', '', 'ac_cv_search_deflate=no',d)}"
> +PACKAGECONFIG[dyn_ext] = "--enable-load-extension,--disable-load-extension"
>  
>  EXTRA_OECONF = " \
>      --enable-shared \
>      --enable-threadsafe \
> +    --disable-rpath \
>      --disable-static-shell \
> +    --soname=${PV} \
>  "
>  
>  # pread() is in POSIX.1-2001 so any reasonable system must surely support it
> @@ -65,4 +68,28 @@ FILES:lib${BPN}-staticdev = "${libdir}/lib*.a"
>  
>  AUTO_LIBNAME_PKGS = "${MLPREFIX}lib${BPN}"
>  
> +do_configure() {
> +    ${S}/configure \
> +        --build=${BUILD_SYS} \
> +        --host=${TARGET_SYS} \
> +        --prefix=${prefix} \
> +        --bindir=${bindir} \
> +        --libdir=${libdir} \
> +        --includedir=${includedir} \
> +        --mandir=${mandir} \
> +        ${EXTRA_OECONF} \
> +        ${PACKAGECONFIG_CONFARGS}
> +}
> +do_configure[cleandirs] = "${B}"
> +
> +do_install() {
> +    oe_runmake DESTDIR=${D} install
> +
> +    # binaries are stripped during installation when not cross-compiling, take the unstripped ones instead
> +    if [ "${BUILD_SYS}" = "${TARGET_SYS}" ]; then
> +        install -m 0644 ${B}/sqlite3 ${D}${bindir}
> +        install -m 0644 ${B}/libsqlite3.so ${D}${libdir}/libsqlite3.so.${PV}
> +    fi
> +}
> +
>  BBCLASSEXTEND = "native nativesdk"
> diff --git a/meta/recipes-support/sqlite/sqlite3/0001-Add-the-disable-rpath-configure-script-flag-to-addre.patch b/meta/recipes-support/sqlite/sqlite3/0001-Add-the-disable-rpath-configure-script-flag-to-addre.patch
> new file mode 100644
> index 0000000000..9625b3045d
> --- /dev/null
> +++ b/meta/recipes-support/sqlite/sqlite3/0001-Add-the-disable-rpath-configure-script-flag-to-addre.patch
> @@ -0,0 +1,60 @@
> +From 509f5574267c8353a10ff81e96d8393248810b80 Mon Sep 17 00:00:00 2001
> +From: stephan <stephan@noemail.net>
> +Date: Sun, 22 Jun 2025 22:48:11 +0000
> +Subject: [PATCH] Add the --disable-rpath configure script flag to address
> + [forum:13cac3b56516f849 | forum post 13cac3b56516f849].
> +
> +FossilOrigin-Name: a59d9bb25e518f5d79f654615b92f6c50cfb704b5abee0f820912644b89366c5
> +
> +Upstream-Status: Backport [https://github.com/sqlite/sqlite/commit/87c807c6dd4df67328919fa28e89a06839e634fe]
> +Signed-off-by: Guðni Már Gilbert <gudni.m.g@gmail.com>
> +---
> + autosetup/sqlite-config.tcl | 18 +++++++++---------
> + 1 file changed, 9 insertions(+), 9 deletions(-)
> +
> +diff --git a/autosetup/sqlite-config.tcl b/autosetup/sqlite-config.tcl
> +index 85fe414382..8409dbdd81 100644
> +--- a/autosetup/sqlite-config.tcl
> ++++ b/autosetup/sqlite-config.tcl
> +@@ -334,8 +334,8 @@ proc sqlite-configure {buildMode configScript} {
> +           => {Link the sqlite3 shell app against the DLL instead of embedding sqlite3.c}
> +       }
> +       {canonical autoconf} {
> +-        # A potential TODO without a current use case:
> +-        #rpath=1 => {Disable use of the rpath linker flag}
> ++        rpath=1 => {Disable use of the rpath linker flag}
> ++
> +         # soname: https://sqlite.org/src/forumpost/5a3b44f510df8ded
> +         soname:=legacy
> +           => {SONAME for libsqlite3.so. "none", or not using this flag, sets no
> +@@ -2119,7 +2119,6 @@ proc sqlite-handle-tcl {} {
> + ########################################################################
> + # Handle the --enable/disable-rpath flag.
> + proc sqlite-handle-rpath {} {
> +-  proj-check-rpath
> +   # autosetup/cc-shared.tcl sets the rpath flag definition in
> +   # [get-define SH_LINKRPATH], but it does so on a per-platform basis
> +   # rather than as a compiler check. Though we should do a proper
> +@@ -2128,12 +2127,13 @@ proc sqlite-handle-rpath {} {
> +   # for which sqlite-env-is-unix-on-windows returns a non-empty
> +   # string.
> + 
> +-#  if {[proj-opt-truthy rpath]} {
> +-#    proj-check-rpath
> +-#  } else {
> +-#    msg-result "Disabling use of rpath."
> +-#    define LDFLAGS_RPATH ""
> +-#  }
> ++  # https://sqlite.org/forum/forumpost/13cac3b56516f849
> ++  if {[proj-opt-truthy rpath]} {
> ++    proj-check-rpath
> ++  } else {
> ++    msg-result "Disabling use of rpath."
> ++    define LDFLAGS_RPATH ""
> ++  }
> + }
> + 
> + ########################################################################
> +-- 
> +2.43.0
> +
> diff --git a/meta/recipes-support/sqlite/sqlite3_3.48.0.bb b/meta/recipes-support/sqlite/sqlite3_3.50.1.bb
> similarity index 53%
> rename from meta/recipes-support/sqlite/sqlite3_3.48.0.bb
> rename to meta/recipes-support/sqlite/sqlite3_3.50.1.bb
> index bd2ac6614d..bf2e883082 100644
> --- a/meta/recipes-support/sqlite/sqlite3_3.48.0.bb
> +++ b/meta/recipes-support/sqlite/sqlite3_3.50.1.bb
> @@ -4,5 +4,7 @@ LICENSE = "PD"
>  LIC_FILES_CHKSUM = "file://sqlite3.h;endline=11;md5=786d3dc581eff03f4fd9e4a77ed00c66"
>  
>  SRC_URI = "http://www.sqlite.org/2025/sqlite-autoconf-${SQLITE_PV}.tar.gz"
> -SRC_URI[sha256sum] = "ac992f7fca3989de7ed1fe99c16363f848794c8c32a158dafd4eb927a2e02fd5"
> +SRC_URI[sha256sum] = "00a65114d697cfaa8fe0630281d76fd1b77afcd95cd5e40ec6a02cbbadbfea71"
> +
> +SRC_URI += "file://0001-Add-the-disable-rpath-configure-script-flag-to-addre.patch"
>  

Hi,

This patch introduces errors such as the following on the Autobuilder:

Traceback (most recent call last):
  File "/srv/pokybuild/yocto-worker/beaglebone/build/bitbake/lib/bb/server/process.py", line 450, in idle_thread_internal
    retval = function(self, data, False)
  File "/srv/pokybuild/yocto-worker/beaglebone/build/bitbake/lib/bb/cooker.py", line 1493, in buildTargetsIdle
    retval = rq.execute_runqueue()
  File "/srv/pokybuild/yocto-worker/beaglebone/build/bitbake/lib/bb/runqueue.py", line 1659, in execute_runqueue
    return self._execute_runqueue()
  File "/srv/pokybuild/yocto-worker/beaglebone/build/bitbake/lib/bb/runqueue.py", line 1625, in _execute_runqueue
    retval = self.rqexe.execute()
  File "/srv/pokybuild/yocto-worker/beaglebone/build/bitbake/lib/bb/runqueue.py", line 2315, in execute
    self.rq.start_fakeworker(self, mc)
  File "/srv/pokybuild/yocto-worker/beaglebone/build/bitbake/lib/bb/runqueue.py", line 1435, in start_fakeworker
    self.fakeworker[mc] = self._start_worker(mc, True, rqexec)
  File "/srv/pokybuild/yocto-worker/beaglebone/build/bitbake/lib/bb/runqueue.py", line 1404, in _start_worker
    RunQueue.send_pickled_data(worker, workerdata, "workerdata")
  File "/srv/pokybuild/yocto-worker/beaglebone/build/bitbake/lib/bb/runqueue.py", line 1363, in send_pickled_data
    worker.stdin.write(msg)
BrokenPipeError: [Errno 32] Broken pipe

I didn't have the time to reproduce the issue locally, but bisecting shows that
this patch triggers such errors pretty on almost all builders. See this build
for example:
https://autobuilder.yoctoproject.org/valkyrie/#/builders/2/builds/1957

Antonin

-- 
Antonin Godard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com



  reply	other threads:[~2025-07-02  6:27 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-27 18:12 [PATCH v2] sqlite3: upgrade 3.48.0 -> 3.50.1 Guðni Már Gilbert
2025-07-02  6:26 ` Antonin Godard [this message]
2025-07-02  8:46   ` Guðni Már Gilbert
2025-07-02  8:49     ` Guðni Már Gilbert
2025-07-02  9:50       ` [OE-core] " Richard Purdie

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=DB1CTEVUVWZP.13OQTLFJG9G9S@bootlin.com \
    --to=antonin.godard@bootlin.com \
    --cc=gudni.m.g@gmail.com \
    --cc=openembedded-core@lists.openembedded.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