diff --git a/meta-networking/recipes-connectivity/networkmanager/networkmanager/0002-meson-fix-cross-compilation-issues.patch b/meta-networking/recipes-connectivity/networkmanager/networkmanager/0002-meson-fix-cross-compilation-issues.patch new file mode 100644 index 0000000000..617c614958 --- /dev/null +++ b/meta-networking/recipes-connectivity/networkmanager/networkmanager/0002-meson-fix-cross-compilation-issues.patch @@ -0,0 +1,69 @@ +From 49cc7ebaf3ed86b693ac80c76a28ba0db7406374 Mon Sep 17 00:00:00 2001 +From: Andrej Kozemcak +Date: Mon, 9 Mar 2026 15:50:26 +0100 +Subject: [PATCH] meson: fix cross-compilation issues + +Strip newline from GI_TYPELIB_PATH and LD_LIBRARY_PATH +run_command().stdout() returns the raw shell output including a trailing +newline. When the value is used to build a colon-separated path, the newline +gets embedded at the end of the last path component, making the directory +invalid and causing GObject Introspection to fail with: + + ImportError: Typelib file for namespace 'Gio', version '2.0' not found + +Use .strip() to remove leading/trailing whitespace from both env variable +reads. + +Fix jansson SONAME detection for cross-compilation +When cross-compiling, jansson's pkg-config 'libdir' variable returns a +path relative to the sysroot (e.g., /usr/lib) without the actual sysroot +prefix. The host readelf binary cannot find the library at that path. + +Fix this by using meson.get_external_property('sys_root', '') to obtain +the sysroot path set by the cross-compilation environment and prepend it +to the library path before calling readelf. + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2380] +Signed-off-by: Andrej Kozemcak +--- + meson.build | 3 ++- + src/libnm-client-impl/meson.build | 4 ++-- + 2 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/meson.build b/meson.build +index 8b0334240d..75f6871dd2 100644 +--- a/meson.build ++++ b/meson.build +@@ -296,7 +296,8 @@ config_h.set10('WITH_JANSSON', jansson_dep.found()) + jansson_msg = 'no' + if jansson_dep.found() + jansson_libdir = jansson_dep.get_variable(pkgconfig: 'libdir') +- res = run_command(find_program('eu-readelf', 'readelf'), '-d', join_paths(jansson_libdir, 'libjansson.so'), check: false) ++ jansson_sysroot = meson.is_cross_build() ? meson.get_external_property('sys_root', '') : '' ++ res = run_command(find_program('eu-readelf', 'readelf'), '-d', jansson_sysroot + join_paths(jansson_libdir, 'libjansson.so'), check: false) + jansson_soname = '' + foreach line: res.stdout().split('\n') + if line.strip().contains('SONAME') +diff --git a/src/libnm-client-impl/meson.build b/src/libnm-client-impl/meson.build +index 3352ebfee0..329078ab46 100644 +--- a/src/libnm-client-impl/meson.build ++++ b/src/libnm-client-impl/meson.build +@@ -167,13 +167,13 @@ if enable_introspection + install: true, + ) + +- gi_typelib_path = run_command('printenv', 'GI_TYPELIB_PATH', check: false).stdout() ++ gi_typelib_path = run_command('printenv', 'GI_TYPELIB_PATH', check: false).stdout().strip() + if gi_typelib_path != '' + gi_typelib_path = ':' + gi_typelib_path + endif + gi_typelib_path = meson.current_build_dir() + gi_typelib_path + +- ld_library_path = run_command('printenv', 'LD_LIBRARY_PATH', check: false).stdout() ++ ld_library_path = run_command('printenv', 'LD_LIBRARY_PATH', check: false).stdout().strip() + if ld_library_path != '' + ld_library_path = ':' + ld_library_path + endif +-- +2.47.3 + diff --git a/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.52.2.bb b/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.56.0.bb similarity index 97% rename from meta-networking/recipes-connectivity/networkmanager/networkmanager_1.52.2.bb rename to meta-networking/recipes-connectivity/networkmanager/networkmanager_1.56.0.bb index cafc6ce3f2..de163fe00e 100644 --- a/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.52.2.bb +++ b/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.56.0.bb @@ -38,14 +38,15 @@ DEPENDS:append:class-target = " bash-completion" inherit meson gettext update-rc.d systemd gobject-introspection update-alternatives upstream-version-is-even pkgconfig SRC_URI = " \ - git://github.com/NetworkManager/NetworkManager.git;protocol=https;branch=nm-1-52;tag=${PV} \ + git://github.com/NetworkManager/NetworkManager.git;protocol=https;branch=nm-1-56;tag=${PV} \ file://${BPN}.initd \ file://enable-dhcpcd.conf \ file://enable-iwd.conf \ + file://0002-meson-fix-cross-compilation-issues.patch \ " SRC_URI:append:libc-musl = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' file://0001-linker-scripts-Do-not-export-_IO_stdin_used.patch', '', d)}" -SRCREV = "57a409441bef013f636ac8e72836c19ecb27c1b9" +SRCREV = "56b51b98fbb8627c4c09a483702e18fd8aee7ce1" # ['auto', 'symlink', 'file', 'netconfig', 'resolvconf'] @@ -68,6 +69,7 @@ EXTRA_OEMESON = "\ -Dconfig_dhcp_default=${NETWORKMANAGER_DHCP_DEFAULT} \ -Diptables=${sbindir}/iptables \ -Dnft=${sbindir}/nft \ + -Dman=false \ " # stolen from https://github.com/void-linux/void-packages/blob/master/srcpkgs/NetworkManager/template @@ -80,7 +82,7 @@ CFLAGS:append:libc-musl = " \ # networkmanager-1.52.0/src/nmcli/agent.c:88:29: error: incompatible function pointer types assigning to 'rl_hook_func_t *' (aka 'int (*)(void)') from 'int (const char *, int)' [-Wincompatible-function-pointer-types] # 88 | rl_startup_hook = set_deftext; # | ^ ~~~~~~~~~~~ - + CFLAGS:append:toolchain-clang = " -Wno-error=incompatible-function-pointer-types" PACKAGECONFIG ??= "readline nss ifupdown dnsmasq nmcli \ @@ -111,13 +113,13 @@ PACKAGECONFIG[crypto-null] = "-Dcrypto=null" PACKAGECONFIG[wifi] = "-Dwext=true -Dwifi=true,-Dwext=false -Dwifi=false" PACKAGECONFIG[iwd] = "-Diwd=true,-Diwd=false" PACKAGECONFIG[ifupdown] = "-Difupdown=true,-Difupdown=false" -PACKAGECONFIG[cloud-setup] = "-Dnm_cloud_setup=true,-Dnm_cloud_setup=false" +PACKAGECONFIG[cloud-setup] = "-Dnm_cloud_setup=true,-Dnm_cloud_setup=false,jansson" PACKAGECONFIG[nmcli] = "-Dnmcli=true,-Dnmcli=false" PACKAGECONFIG[nmtui] = "-Dnmtui=true,-Dnmtui=false,libnewt" PACKAGECONFIG[readline] = "-Dreadline=libreadline,,readline" PACKAGECONFIG[libedit] = "-Dreadline=libedit,,libedit" PACKAGECONFIG[ovs] = "-Dovs=true,-Dovs=false,jansson" -PACKAGECONFIG[audit] = "-Dlibaudit=yes,-Dlibaudit=no" +PACKAGECONFIG[audit] = "-Dlibaudit=yes,-Dlibaudit=no,audit" PACKAGECONFIG[selinux] = "-Dselinux=true,-Dselinux=false,libselinux" PACKAGECONFIG[vala] = "-Dvapi=true,-Dvapi=false" PACKAGECONFIG[dhcpcd] = "-Ddhcpcd=${base_sbindir}/dhcpcd,-Ddhcpcd=no,,dhcpcd" @@ -127,6 +129,7 @@ PACKAGECONFIG[adsl] = ",," PACKAGECONFIG[wwan] = ",," # The following PACKAGECONFIG is used to determine whether NM is managing /etc/resolv.conf itself or not PACKAGECONFIG[man-resolv-conf] = ",," +PACKAGECONFIG[nbft] = "-Dnbft=true,-Dnbft=false" PACKAGES =+ " \