Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Khem Raj <raj.khem@gmail.com>
To: openembedded-core@lists.openembedded.org
Cc: Khem Raj <khem.raj@oss.qualcomm.com>
Subject: [PATCH v2 2/4] libpsl: convert to meson build system
Date: Wed, 22 Jul 2026 14:57:33 -0700	[thread overview]
Message-ID: <20260722215737.1940382-2-khem.raj@oss.qualcomm.com> (raw)
In-Reply-To: <20260722215737.1940382-1-khem.raj@oss.qualcomm.com>

Switch the recipe from autotools to meson:

- inherit meson instead of autotools; drop gettext (the meson build has
  no i18n)
- Map the PACKAGECONFIG knobs to meson options: --enable-runtime=X
  becomes -Druntime=X, and builtin PSL data stays enabled via meson's
  default (-Dbuiltin=true), matching the previous --enable-builtin.
- Disable the bundled tests and fuzzers with -Dtests=false.
- The gtk-doc class drives -Ddocs on its own via GTKDOC_MESON_OPTION.

Unlike the autotools tarball, meson regenerates psl.1 at build time and
stamps it with `date +%B %Y`, which is not reproducible. Backport the
proposed upstream fix to honour SOURCE_DATE_EPOCH.

Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
---
v2: Inherit manpages

 .../0001-Support-reproducible-builds.patch    | 50 +++++++++++++++++++
 meta/recipes-support/libpsl/libpsl_0.23.0.bb  | 11 ++--
 2 files changed, 57 insertions(+), 4 deletions(-)
 create mode 100644 meta/recipes-support/libpsl/libpsl/0001-Support-reproducible-builds.patch

diff --git a/meta/recipes-support/libpsl/libpsl/0001-Support-reproducible-builds.patch b/meta/recipes-support/libpsl/libpsl/0001-Support-reproducible-builds.patch
new file mode 100644
index 0000000000..16a3ed37db
--- /dev/null
+++ b/meta/recipes-support/libpsl/libpsl/0001-Support-reproducible-builds.patch
@@ -0,0 +1,50 @@
+From deaa74f9dea55d4dbf1ef98879049c02d23749e8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tim=20R=C3=BChsen?= <tim.ruehsen@gmx.de>
+Date: Thu, 16 Jul 2026 13:20:21 +0200
+Subject: [PATCH] Support reproducible builds
+
+Co-authored-by: Chris Lamb <lamby@debian.org>
+Upstream-Status: Backport [https://github.com/rockdaboot/libpsl/commit/1d28619bde704d5b5037e0680e72c1c326663234]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.ac |  4 ++--
+ meson.build  | 11 ++++++++++-
+ 2 files changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 8b7ccc8..3f8158d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -42,8 +42,8 @@ AC_SUBST([LIBPSL_VERSION_MAJOR], [$(echo $VERSION | cut -d'.' -f1)])
+ AC_SUBST([LIBPSL_VERSION_MINOR], [$(echo $VERSION | cut -d'.' -f2)])
+ AC_SUBST([LIBPSL_VERSION_PATCH], [$(echo $VERSION | cut -d'.' -f3)])
+ AC_SUBST([LIBPSL_VERSION_NUMBER], [$(printf '0x%02x%02x%02x' $LIBPSL_VERSION_MAJOR $LIBPSL_VERSION_MINOR $LIBPSL_VERSION_PATCH)])
+-AC_SUBST([COPYRIGHT_MONTH], [$(date +%B)])
+-AC_SUBST([COPYRIGHT_YEAR], [$(date +%Y)])
++AC_SUBST([COPYRIGHT_MONTH], [m4_esyscmd([LC_ALL=C date -u -d "@$SOURCE_DATE_EPOCH" +%B 2>/dev/null || LC_ALL=C date -u -r "$SOURCE_DATE_EPOCH" +%B 2>/dev/null || LC_ALL=C date -u +%B])])
++AC_SUBST([COPYRIGHT_YEAR], [m4_esyscmd([LC_ALL=Cdate -u -d "@$SOURCE_DATE_EPOCH" +%Y 2>/dev/null || LC_ALL=C date -u -r "$SOURCE_DATE_EPOCH" +%Y 2>/dev/null || LC_ALL=C date -u +%Y])])
+ AC_CONFIG_FILES([include/libpsl.h tools/psl.1])
+
+ dnl
+diff --git a/meson.build b/meson.build
+index 1e46d06..06c36c6 100644
+--- a/meson.build
++++ b/meson.build
+@@ -157,7 +157,16 @@ endif
+ # Shared configuration data for copyright date and version
+ _cdata = configuration_data()
+ _cdata.set('PACKAGE_VERSION', meson.project_version())
+-copyright_date = run_command(['date', '+%B %Y'], check: true).stdout().strip()
++date_exe = find_program('date')
++epoch_cmd = run_command('sh', '-c', 'LC_ALL=C echo "${SOURCE_DATE_EPOCH:-$(date +%s)}"', check: true)
++source_date_epoch = epoch_cmd.stdout().strip()
++copyright_cmd = run_command('sh', '-c',
++  'date -u -d "@' + source_date_epoch + '" "+%B %Y" 2>/dev/null || ' +
++  'date -u -r "' + source_date_epoch + '" "+%B %Y" 2>/dev/null || ' +
++  'date -u "+%B %Y"',
++  check: true
++)
++copyright_date = copyright_cmd.stdout().strip()
+ _cdata.set('COPYRIGHT_MONTH', copyright_date.split()[0])
+ _cdata.set('COPYRIGHT_YEAR', copyright_date.split()[1])
+
diff --git a/meta/recipes-support/libpsl/libpsl_0.23.0.bb b/meta/recipes-support/libpsl/libpsl_0.23.0.bb
index 793fe0d73b..f915fae621 100644
--- a/meta/recipes-support/libpsl/libpsl_0.23.0.bb
+++ b/meta/recipes-support/libpsl/libpsl_0.23.0.bb
@@ -12,15 +12,18 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=49296c1806ef92c28297fb264163d81e \
                     "

 SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/${BP}.tar.gz \
+           file://0001-Support-reproducible-builds.patch \
            "
 SRC_URI[sha256sum] = "f39b9631b3d369a21259ea4654f8875c0ec6995ce9551c0eb5d423e4c011f911"

 GITHUB_BASE_URI = "https://github.com/rockdaboot/libpsl/releases"

-inherit autotools gettext gtk-doc manpages pkgconfig lib_package github-releases
+inherit meson gtk-doc pkgconfig lib_package github-releases manpages
+
+# Do not build the bundled tests and fuzzers.
+EXTRA_OEMESON = "-Dtests=false"

 PACKAGECONFIG ?= "idn2"
-PACKAGECONFIG[manpages] = "--enable-man,--disable-man,libxslt-native"
-PACKAGECONFIG[icu] = "--enable-runtime=libicu --enable-builtin=libicu,,icu"
-PACKAGECONFIG[idn2] = "--enable-runtime=libidn2 --enable-builtin=libidn2,,libidn2 libunistring"
+PACKAGECONFIG[icu] = "-Druntime=libicu,,icu"
+PACKAGECONFIG[idn2] = "-Druntime=libidn2,,libidn2 libunistring"
 BBCLASSEXTEND = "native nativesdk"


  reply	other threads:[~2026-07-22 21:57 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-22 21:57 [PATCH v2 1/4] libpsl: upgrade 0.22.0 -> 0.23.0 Khem Raj
2026-07-22 21:57 ` Khem Raj [this message]
2026-07-22 21:57 ` [PATCH v2 3/4] libpsl: Do not embed the build path in suffixes_dafsa.h Khem Raj
2026-07-22 21:57 ` [PATCH v2 4/4] libpsl: Fix meson configure failure when docs are enabled Khem Raj

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=20260722215737.1940382-2-khem.raj@oss.qualcomm.com \
    --to=raj.khem@gmail.com \
    --cc=khem.raj@oss.qualcomm.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