packages icon indicating copy to clipboard operation
packages copied to clipboard

libs/glib2: update to 2.80.0

Open yegorich opened this issue 1 year ago • 14 comments

Maintainer: @tripolar Compile tested: ARMv7, TI Sitara AM335x, OpenWrt v23.05.2 Run tested: ARMv7, TI Sitara AM335x, OpenWrt v23.05.2, tested with internal software

Description: update package to version 2.80.0

  • Explicitly disable gobject introspection option

  • Set runtime_dir to /var/run as current glib2 version sets this option to /run by default (see this commit)

  • Python packaging module is now mandatory (see this commit)

  • Refresh patches

yegorich avatar Apr 16 '24 22:04 yegorich

What else do I need to add to the host deps to convince meson to find the packaging module?

yegorich avatar Apr 17 '24 08:04 yegorich

It does not compile on my system (debian 11)

Applying /home/bbworker/bbworker/owrt_master_intel_x86_lgm/System6/build/feeds/packages/libs/glib2/patches/003-valgrind.h-mips16-fix.patch using plaintext: 
patching file glib/valgrind.h
Applying /home/bbworker/bbworker/owrt_master_intel_x86_lgm/System6/build/feeds/packages/libs/glib2/patches/006-c99.patch using plaintext: 
patching file meson.build
Applying /home/bbworker/bbworker/owrt_master_intel_x86_lgm/System6/build/feeds/packages/libs/glib2/patches/010-pcre.patch using plaintext: 
patching file glib/meson.build
Applying /home/bbworker/bbworker/owrt_master_intel_x86_lgm/System6/build/feeds/packages/libs/glib2/patches/020-locale.patch using plaintext: 
patching file gobject/glib-mkenums.in
The Meson build system
Version: 1.3.2
Source dir: /home/bbworker/bbworker/owrt_master_intel_x86_lgm/System6/build/openwrt/build_dir/target-x86_64_musl/glib-2.80.0
Build dir: /home/bbworker/bbworker/owrt_master_intel_x86_lgm/System6/build/openwrt/build_dir/target-x86_64_musl/glib-2.80.0/openwrt-build
Build type: cross build
Project name: glib
Project version: 2.80.0
C compiler for the host machine: x86_64-openwrt-linux-musl-gcc (gcc 13.2.0 "x86_64-openwrt-linux-musl-gcc (OpenWrt GCC 13.2.0 r25858+212-501ef81040) 13.2.0")
C linker for the host machine: x86_64-openwrt-linux-musl-gcc ld.bfd 2.40.0
C compiler for the build machine: /home/bbworker/bbworker/owrt_master_intel_x86_lgm/System6/build/openwrt/staging_dir/host/bin/gcc (gcc 10.2.1 "gcc (Debian 10.2.1-6) 10.2.1 20210110")
C linker for the build machine: /home/bbworker/bbworker/owrt_master_intel_x86_lgm/System6/build/openwrt/staging_dir/host/bin/gcc ld.bfd 2.35.2
Build machine cpu family: x86_64
Build machine cpu: x86_64
Host machine cpu family: x86_64
Host machine cpu: generic
Target machine cpu family: x86_64
Target machine cpu: generic
Compiler for C supports arguments -std=c90: YES 
Compiler for C supports arguments -std=c99: YES 
Compiler for C supports arguments -std=c11: YES 
Compiler for C supports arguments -std=c17: YES 
C++ compiler for the host machine: x86_64-openwrt-linux-musl-g++ (gcc 13.2.0 "x86_64-openwrt-linux-musl-g++ (OpenWrt GCC 13.2.0 r25858+212-501ef81040) 13.2.0")
C++ linker for the host machine: x86_64-openwrt-linux-musl-g++ ld.bfd 2.40.0
Compiler for C++ supports arguments -std=c++98: YES 
Compiler for C++ supports arguments -std=c++03: YES 
Compiler for C++ supports arguments -std=c++11: YES 
Compiler for C++ supports arguments -std=c++14: YES 
Compiler for C++ supports arguments -std=c++17: YES 
Compiler for C++ supports arguments -std=c++20: YES 
Compiler for C++ supports arguments -std=c++2b: YES 
Compiler for C++ supports arguments -std=c++latest: NO 
Checking if "building for musl libc" compiles: YES 
Program ./.gitlab-ci/thorough-test-wrapper.sh found: YES (/bin/bash /home/bbworker/bbworker/owrt_master_intel_x86_lgm/System6/build/openwrt/build_dir/target-x86_64_musl/glib-2.80.0/./.gitlab-ci/thorough-test-wrapper.sh)
Program valgrind found: NO
Compiler for C supports arguments -fno-strict-aliasing: YES 
Message: Disabling cast checks
Message: Disabling GLib asserts
Has header "alloca.h" : YES 
Has header "afunix.h" : NO 
Has header "crt_externs.h" : NO 
Has header "dirent.h" : YES 
Has header "float.h" : YES 
Has header "fstab.h" : NO 
Has header "grp.h" : YES 
Has header "inttypes.h" : YES 
Has header "libproc.h" : NO 
Has header "limits.h" : YES 
Has header "locale.h" : YES 
Has header "mach/mach_time.h" : NO 
Has header "memory.h" : YES 
Has header "mntent.h" : YES 
Has header "poll.h" : YES 
Has header "pwd.h" : YES 
Has header "sched.h" : YES 
Has header "spawn.h" : YES 
Has header "stdatomic.h" : YES 
Has header "stdint.h" : YES 
Has header "stdlib.h" : YES 
Has header "string.h" : YES 
Has header "strings.h" : YES 
Has header "sys/auxv.h" : YES 
Has header "sys/event.h" : NO 
Has header "sys/filio.h" : NO 
Has header "sys/inotify.h" : YES 
Has header "sys/mkdev.h" : NO 
Has header "sys/mntctl.h" : NO 
Has header "sys/mnttab.h" : NO 
Has header "sys/mount.h" : YES 
Has header "sys/param.h" : YES 
Has header "sys/prctl.h" : YES 
Has header "sys/resource.h" : YES 
Has header "sys/select.h" : YES 
Has header "sys/statfs.h" : YES 
Has header "sys/stat.h" : YES 
Has header "sys/statvfs.h" : YES 
Has header "sys/sysctl.h" : NO 
Has header "sys/time.h" : YES 
Has header "sys/times.h" : YES 
Has header "sys/types.h" : YES 
Has header "sys/uio.h" : YES 
Has header "sys/vfs.h" : YES 
Has header "sys/vfstab.h" : NO 
Has header "sys/vmount.h" : NO 
Has header "sys/wait.h" : YES 
Has header "syslog.h" : YES 
Has header "termios.h" : YES 
Has header "unistd.h" : YES 
Has header "values.h" : YES 
Has header "wchar.h" : YES 
Has header "xlocale.h" : NO 
Check usable header "malloc.h" : YES 
Check usable header "linux/netlink.h" : YES 
Checking if "statx() test" compiles: NO 
Header "locale.h" has symbol "LC_MESSAGES" : YES 
Checking if "type "struct stat" has member "st_mtimensec"" compiles: NO 
Checking if "type "struct stat" has member "st_mtim.tv_nsec"" compiles: YES 
Checking if "type "struct stat" has member "st_atimensec"" compiles: NO 
Checking if "type "struct stat" has member "st_atim.tv_nsec"" compiles: YES 
Checking if "type "struct stat" has member "st_ctimensec"" compiles: NO 
Checking if "type "struct stat" has member "st_ctim.tv_nsec"" compiles: YES 
Checking if "type "struct stat" has member "st_birthtime"" compiles: NO 
Checking if "type "struct stat" has member "st_birthtimensec"" compiles: NO 
Checking if "type "struct stat" has member "st_birthtim"" compiles: NO 
Checking if "type "struct stat" has member "st_birthtim.tv_nsec"" compiles: NO 
Checking if "type "struct stat" has member "st_blksize"" compiles: YES 
Checking if "type "struct stat" has member "st_blocks"" compiles: YES 
Checking if "type "struct statfs" has member "f_fstypename"" compiles: NO 
Checking if "type "struct statfs" has member "f_bavail"" compiles: YES 
Checking if "type "struct dirent" has member "d_type"" compiles: YES 
Checking if "type "struct statvfs" has member "f_basetype"" compiles: NO 
Checking if "type "struct statvfs" has member "f_fstypename"" compiles: NO 
Checking if "type "struct statvfs" has member "f_type"" compiles: NO 
Checking if "type "struct tm" has member "tm_gmtoff"" compiles: YES 
Checking if "type "struct tm" has member "__tm_gmtoff"" compiles: YES 
Compiler for C supports arguments -Wduplicated-branches: YES 
Compiler for C supports arguments -Wimplicit-fallthrough: YES 
Compiler for C supports arguments -Wmisleading-indentation: YES 
Compiler for C supports arguments -Wmissing-field-initializers: YES 
Compiler for C supports arguments -Wnonnull: YES 
Compiler for C supports arguments -Wunused: YES 
Compiler for C supports arguments -Wno-unused-parameter: YES 
Compiler for C supports arguments -Wno-cast-function-type: YES 
Compiler for C supports arguments -Wno-pedantic: YES 
Compiler for C supports arguments -Wno-format-zero-length: YES 
Compiler for C supports arguments -Wno-variadic-macros: YES 
Compiler for C supports arguments -Werror=format=2: YES 
Compiler for C supports arguments -Werror=init-self: YES 
Compiler for C supports arguments -Werror=missing-include-dirs: YES 
Compiler for C supports arguments -Werror=pointer-arith: YES 
Compiler for C supports arguments -Werror=unused-result: YES 
Compiler for C supports arguments -Wstrict-prototypes: YES 
Compiler for C supports arguments -Wno-bad-function-cast: YES 
Compiler for C supports arguments -Werror=implicit-function-declaration: YES 
Compiler for C supports arguments -Werror=missing-prototypes: YES 
Compiler for C supports arguments -Werror=pointer-sign: YES 
Compiler for C supports arguments -Wno-string-plus-int: NO 
Compiler for C++ supports arguments -Wduplicated-branches: YES 
Compiler for C++ supports arguments -Wimplicit-fallthrough: YES 
Compiler for C++ supports arguments -Wmisleading-indentation: YES 
Compiler for C++ supports arguments -Wmissing-field-initializers: YES 
Compiler for C++ supports arguments -Wnonnull: YES 
Compiler for C++ supports arguments -Wunused: YES 
Compiler for C++ supports arguments -Wno-unused-parameter: YES 
Compiler for C++ supports arguments -Wno-cast-function-type: YES 
Compiler for C++ supports arguments -Wno-pedantic: YES 
Compiler for C++ supports arguments -Wno-format-zero-length: YES 
Compiler for C++ supports arguments -Wno-variadic-macros: YES 
Compiler for C++ supports arguments -Werror=format=2: YES 
Compiler for C++ supports arguments -Werror=init-self: YES 
Compiler for C++ supports arguments -Werror=missing-include-dirs: YES 
Compiler for C++ supports arguments -Werror=pointer-arith: YES 
Compiler for C++ supports arguments -Werror=unused-result: YES 
Compiler for C supports link arguments -Wl,-z,nodelete: YES 
Compiler for C supports link arguments -Wl,-Bsymbolic-functions: YES 
Checking for function "accept4" : YES 
Checking for function "close_range" : NO 
Checking for function "copy_file_range" : YES 
Checking for function "endmntent" : YES 
Checking for function "endservent" : YES 
Checking for function "epoll_create" : YES 
Checking for function "fallocate" : YES 
Checking for function "fchmod" : YES 
Checking for function "fchown" : YES 
Checking for function "fdwalk" : NO 
Checking for function "free_aligned_sized" : NO 
Checking for function "free_sized" : NO 
Checking for function "fsync" : YES 
Checking for function "ftruncate64" : NO 
Checking for function "getauxval" : YES 
Checking for function "getc_unlocked" : YES 
Checking for function "getfsstat" : NO 
Checking for function "getgrgid_r" : YES 
Checking for function "getmntent_r" : YES 
Checking for function "getpwuid_r" : YES 
Checking for function "getresuid" : YES 
Checking for function "getvfsstat" : NO 
Checking for function "gmtime_r" : YES 
Checking for function "hasmntopt" : YES 
Checking for function "inotify_init1" : YES 
Checking for function "issetugid" : YES 
Checking for function "kevent" : NO 
Checking for function "kqueue" : NO 
Checking for function "lchmod" : YES 
Checking for function "lchown" : YES 
Checking for function "link" : YES 
Checking for function "localtime_r" : YES 
Checking for function "lstat" : YES 
Checking for function "mbrtowc" : YES 
Checking for function "memalign" : YES 
Checking for function "mmap" : YES 
Checking for function "newlocale" : YES 
Checking for function "pipe2" : YES 
Checking for function "poll" : YES 
Checking for function "prlimit" : YES 
Checking for function "readlink" : YES 
Checking for function "recvmmsg" : YES 
Checking for function "sendmmsg" : YES 
Checking for function "setenv" : YES 
Checking for function "setmntent" : YES 
Checking for function "strerror_r" : YES 
Checking for function "strnlen" : YES 
Checking for function "strsignal" : YES 
Checking for function "strtod_l" : YES 
Checking for function "strtoll_l" : NO 
Checking for function "strtoull_l" : NO 
Checking for function "symlink" : YES 
Checking for function "timegm" : YES 
Checking for function "unsetenv" : YES 
Checking for function "uselocale" : YES 
Checking for function "utimes" : YES 
Checking for function "utimensat" : YES 
Checking for function "valloc" : YES 
Checking for function "vasprintf" : YES 
Checking for function "vsnprintf" : YES 
Checking for function "wcrtomb" : YES 
Checking for function "wcslen" : YES 
Checking for function "wcsnlen" : YES 
Checking for function "sysctlbyname" : NO 
Checking for function "statvfs" : YES 
Checking for function "statfs" : YES 
Checking for function "prctl" : YES 
Checking for function "if_indextoname" : YES 
Checking for function "if_nametoindex" : YES 
Checking for function "splice" : YES 
Checking for function "stpcpy" : YES 
Checking for function "memalign" : YES 
Checking if "getservbyname_r()" compiles: YES 
Checking for function "_aligned_malloc" : NO 
Checking for function "aligned_alloc" : YES 
Checking for function "posix_memalign" : YES 
Checking for function "posix_spawn" : YES 
Checking if "strerror_r() returns char *" compiles: NO 
Checking for function "snprintf" : YES 
Checking for function "strcasecmp" : YES 
Checking for function "strncasecmp" : YES 
Header "sys/sysmacros.h" has symbol "major" : YES 
Header "dlfcn.h" has symbol "RTLD_LAZY" : YES 
Header "dlfcn.h" has symbol "RTLD_NOW" : YES 
Header "dlfcn.h" has symbol "RTLD_GLOBAL" : YES 
Header "dlfcn.h" has symbol "RTLD_NEXT" : YES 
Checking for type "loff_t" : NO 
Message: Checking whether to use statfs or statvfs .. statfs
Checking for function "mkostemp" : YES 
Checking if "futex(2) system call" compiles: YES 
Checking if "futex(2) system call" compiles: NO 
Checking if "eventfd(2) system call" : links: YES 
Checking if "pidfd_open(2) system call" : links: YES 
Checking if "__uint128_t available" compiles: YES 
Checking if "clock_gettime" : links: YES 
Checking if "dlopen() and dlsym() in system libraries" : links: YES 
Checking if "number of arguments to statfs() (n=2)" compiles: YES 
Checking if "open() option O_DIRECTORY" compiles: YES 
Checking if "fcntl() option F_FULLFSYNC" compiles: NO 
Checking if "nl_langinfo and CODESET" : links: YES 
Checking if "nl_langinfo (PM_STR)" : links: YES 
Checking if "nl_langinfo (ERA)" : links: NO 
Checking if "nl_langinfo (_NL_CTYPE_OUTDIGITn_MB)" : links: NO 
Checking if "nl_langinfo (ALTMON_n)" : links: NO 
Checking if "nl_langinfo (_NL_ABALTMON_n)" : links: NO 
Checking if "nl_langinfo and _NL_TIME_CODESET" : links: NO 
Checking if "signed" compiles: YES 
Header "stddef.h" has symbol "ptrdiff_t" : YES 
Checking if "sig_atomic_t" : links: YES 
Checking if "long long" compiles: YES 
Checking if "long double" compiles: YES 
Header "stddef.h" has symbol "wchar_t" : YES 
Header "wchar.h" has symbol "wint_t" : YES 
Checking if "uintmax_t in inttypes.h" compiles: YES 
Checking if "uintmax_t in stdint.h" compiles: YES 
Checking for size of "char" : 1 
Checking for size of "short" : 2 
Checking for size of "int" : 4 
Checking for size of "void*" : 8 
Checking for size of "long" : 8 
Checking for size of "long long" : 8 
Checking for size of "size_t" : 8 
Checking for size of "ssize_t" : 8 
Checking if "int64_t is long" compiles: YES 
Checking for alignment of "char" : 1 
Checking for alignment of "short" : 2 
Checking for alignment of "int" : 4 
Checking for alignment of "void*" : 8 
Checking for alignment of "long" : 8 
Checking for alignment of "long long" : 8 
Checking for alignment of "size_t" : 8 
Checking for size of "wchar_t" : 4 
Checking if "GCC size_t typedef is long" compiles: YES 
Checking if "GCC size_t typedef is long long" compiles: NO 
Checking if "ISO C99 varargs macros in C" compiles: YES 
Checking if "ISO C99 varargs macros in C++" compiles: YES 
Checking if "GNUC varargs macros" compiles: YES 
Has header "alloca.h" : YES (cached)
Has header "sys/poll.h" : YES 
Has header "sys/types.h" : YES (cached)
Has header "winsock2.h" : NO 
Computing int of "POLLIN" : 1
Computing int of "POLLOUT" : 4
Computing int of "POLLPRI" : 2
Computing int of "POLLERR" : 8
Computing int of "POLLHUP" : 16
Computing int of "POLLNVAL" : 32
Computing int of "AF_UNIX" : 1
Computing int of "AF_INET" : 2
Computing int of "AF_INET6" : 10
Computing int of "MSG_OOB" : 1
Computing int of "MSG_PEEK" : 2
Computing int of "MSG_DONTROUTE" : 4
Checking for type "struct in6_addr" : YES 
Checking if "atomic ops" : links: YES 
Checking if "atomic ops define" compiles: YES 
Checking if "sync swap" : links: NO 
../../../../openwrt/build_dir/target-x86_64_musl/glib-2.80.0/meson.build:2053: WARNING: DEPRECATION: Option 'force_posix_threads' is deprecated and will be removed after GLib 2.72; please file an issue with your use case if you still require it
Run-time dependency threads found: YES
Header "pthread.h" has symbol "pthread_attr_setstacksize" : YES 
Header "pthread.h" has symbol "pthread_attr_setinheritsched" : YES 
Header "pthread.h" has symbol "pthread_condattr_setclock" : YES 
Header "pthread.h" has symbol "pthread_cond_timedwait_relative_np" : NO 
Header "pthread.h" has symbol "pthread_getname_np" : YES 
Header "pthread.h" has symbol "pthread_getaffinity_np" : YES 
Checking if "pthread_setname_np(const char*)" with dependency threads: links: NO 
Checking if "pthread_setname_np(pthread_t, const char*)" with dependency threads: links: YES 
Run-time dependency iconv found: YES
Found pkg-config: YES (/home/bbworker/bbworker/owrt_master_intel_x86_lgm/System6/build/openwrt/staging_dir/host/bin/pkg-config) 2.1.1
Run-time dependency libpcre2-8 found: YES 10.42
Executing subproject gvdb 
gvdb| Project name: gvdb
gvdb| Project version: 0.0
gvdb| C compiler for the host machine: x86_64-openwrt-linux-musl-gcc (gcc 13.2.0 "x86_64-openwrt-linux-musl-gcc (OpenWrt GCC 13.2.0 r25858+212-501ef81040) 13.2.0")
gvdb| C linker for the host machine: x86_64-openwrt-linux-musl-gcc ld.bfd 2.40.0
gvdb| C compiler for the build machine: /home/bbworker/bbworker/owrt_master_intel_x86_lgm/System6/build/openwrt/staging_dir/host/bin/gcc (gcc 10.2.1 "gcc (Debian 10.2.1-6) 10.2.1 20210110")
gvdb| C linker for the build machine: /home/bbworker/bbworker/owrt_master_intel_x86_lgm/System6/build/openwrt/staging_dir/host/bin/gcc ld.bfd 2.35.2
gvdb| Build targets in project: 0
gvdb| Subproject gvdb finished.
Dependency gvdb found: YES 0.0 (overridden)
Library m found: YES
Run-time dependency libffi found: YES 3.4.6
Run-time dependency zlib found: YES 1.3.1
Run-time dependency intl found: YES
Checking for function "ngettext" with dependency intl: YES 
Checking for function "bind_textdomain_codeset" with dependency intl: YES 
Dependency mount skipped: feature libmount disabled
Dependency libselinux skipped: feature selinux disabled
Checking for function "getxattr" : YES 
Has header "sys/xattr.h" : YES 
Checking if "XATTR_NOFOLLOW" compiles: NO 
Checking for function "strlcpy" : YES 
Program python (packaging) found: NO

feckert avatar Apr 17 '24 17:04 feckert

@feckert could you provide your meson-log.txt?

yegorich avatar Apr 17 '24 18:04 yegorich

@feckert hahaha that problem is partly my fault.

https://github.com/openwrt/openwrt/blob/main/include/meson.mk#L68

the issue is that it's using the host python which does not have the packaging module. Installing it on the OS side will fix this.

neheb avatar Apr 18 '24 01:04 neheb

@neheb how can we force $(STAGING_DIR_HOST)/bin/python3 to look in ./staging_dir/hostpkg/lib/python3.11/site-packages/ for the packages?

I'm on Ubuntu 22.04.1 and I have no problems building glib2. Even if I create a venv that doesn't provide the packaging module. This is something I don't understand.

yegorich avatar Apr 18 '24 05:04 yegorich

Buildroot also sets up PYTHONNOUSERSITE environment variable (see pkg-meson.mk) to avoid searching for the packages in $HOME/.local/lib/python3.x/site-packages.

yegorich avatar Apr 18 '24 12:04 yegorich

@neheb I managed to reproduce the issue via creating a Docker instance. As a workaround, I set PYTHONPATH to ./staging_dir/hostpkg/lib/python3.11/site-packages/. This did the trick.

How to solve this in the correct way? meson setup command provides the following options:

  • --python.platlibdir PYTHON.PLATLIBDIR
  • --python.purelibdir PYTHON.PURELIBDIR

Perhaps, they could be used to provide the correct module path?

@feckert could you try my workaround with exporting PYTHONPATH to test MM with the new glib2?

yegorich avatar Apr 19 '24 11:04 yegorich

@neheb I got the package compiled. The package recipe requires

include ../../lang/python/python3-host.mk

that provides HOST_PYTHON3PATH pointing to the required site-packages folder.

The question now is, how to force meson to use the compiled python from the hotpkg folder and not the native host variant /usr/bin/python3.

I made the following quirk but I don't know how to do it correctly. The only way I see so far, is to let the meson package depend on python and hence always use this python version.

diff --git a/include/meson.mk b/include/meson.mk
index 2a20c2bd6b..b832562403 100644
--- a/include/meson.mk
+++ b/include/meson.mk
@@ -56,7 +56,7 @@ MESON_CPU:="$(CPU_TYPE)$(if $(CPU_SUBTYPE),+$(CPU_SUBTYPE))"
 endif

 define Meson
-       $(2) $(STAGING_DIR_HOST)/bin/$(PYTHON) $(STAGING_DIR_HOST)/bin/meson.py $(1)
+       $(2) $(STAGING_DIR_HOSTPKG)/bin/$(PYTHON) $(STAGING_DIR_HOST)/bin/meson.py $(1)
 endef

 define Meson/CreateNativeFile
@@ -65,7 +65,7 @@ define Meson/CreateNativeFile
                -e "s|@CXX@|$(foreach BIN,$(HOSTCXX),'$(BIN)',)|" \
                -e "s|@PKGCONFIG@|$(PKG_CONFIG)|" \
                -e "s|@CMAKE@|$(STAGING_DIR_HOST)/bin/cmake|" \
-               -e "s|@PYTHON@|$(STAGING_DIR_HOST)/bin/python3|" \
+               -e "s|@PYTHON@|$(STAGING_DIR_HOSTPKG)/bin/python3|" \
                -e "s|@CFLAGS@|$(foreach FLAG,$(HOST_CFLAGS) $(HOST_CPPFLAGS),'$(FLAG)',)|" \
                -e "s|@CXXFLAGS@|$(foreach FLAG,$(HOST_CXXFLAGS) $(HOST_CPPFLAGS),'$(FLAG)',)|" \
                -e "s|@LDFLAGS@|$(foreach FLAG,$(HOST_LDFLAGS),'$(FLAG)',)|" \
@@ -84,7 +84,7 @@ define Meson/CreateCrossFile
                -e "s|@NM@|$(TARGET_NM)|" \
                -e "s|@PKGCONFIG@|$(PKG_CONFIG)|" \
                -e "s|@CMAKE@|$(STAGING_DIR_HOST)/bin/cmake|" \
-               -e "s|@PYTHON@|$(STAGING_DIR_HOST)/bin/python3|" \
+               -e "s|@PYTHON@|$(STAGING_DIR_HOSTPKG)/bin/python3|" \
                -e "s|@CFLAGS@|$(foreach FLAG,$(TARGET_CFLAGS) $(EXTRA_CFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS),'$(FLAG)',)|" \
                -e "s|@CXXFLAGS@|$(foreach FLAG,$(TARGET_CXXFLAGS) $(EXTRA_CXXFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS),'$(FLAG)',)|" \
                -e "s|@LDFLAGS@|$(foreach FLAG,$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS),'$(FLAG)',)|" \

yegorich avatar Apr 23 '24 09:04 yegorich

There is no need to provide HOST_PYTHON3PATH in the package's recipe. Invoking the right Python version seems to be sufficient.

yegorich avatar Apr 23 '24 10:04 yegorich

@yegorich CI is failing. Should I test this in my build env or do have to push changes to this branch. This is not clear in your last message?

feckert avatar Apr 24 '24 06:04 feckert

@feckert CI will fail untill we fix meson.mk. There are two ways to test my PR:

  • install python3-packaging in your Debian 11 instance
  • patch include/meson.mk as mentioned above

The last variant could be unstable as tools/meson doesn't depend on python3/host and I'm not sure glib2 is the first package to rely on meson.

yegorich avatar Apr 24 '24 06:04 yegorich

@neheb how do I add a python3/host dependency to tools/meson?

Adding HOST_BUILD_DEPENDS or PKG_BUILD_DEPENDS doesn't work.

diff --git a/tools/meson/Makefile b/tools/meson/Makefile
index 96974faafe..92b594f9b0 100644
--- a/tools/meson/Makefile
+++ b/tools/meson/Makefile
@@ -11,6 +11,9 @@ PKG_MAINTAINER:=Andre Heider <[email protected]>
 PKG_LICENSE:=Apache-2.0
 PKG_LICENSE_FILES:=COPYING

+HOST_BUILD_DEPENDS:=python3/host
+PKG_BUILD_DEPENDS:=python3/host
+
 include $(INCLUDE_DIR)/host-build.mk

 define Host/Configure

yegorich avatar Apr 24 '24 06:04 yegorich

@yegorich From my point of view. The buildsystem should have as few dependencies against the build host as possible. As we have seen, the problem would not have occurred if we had used the tools from the build system in the first place. So I would prefer the second solution.

feckert avatar Apr 24 '24 06:04 feckert

@neheb is this PR https://github.com/openwrt/openwrt/pull/10800 related?

yegorich avatar Apr 25 '24 08:04 yegorich

It is not.

I think the proper way to fix is to remove the python entry from the cross file. That way hostpkg python is preferred to host python.

neheb avatar Apr 30 '24 20:04 neheb

@neheb do you mean something like this:

diff --git a/tools/meson/files/openwrt-cross.txt.in b/tools/meson/files/openwrt-cross.txt.in
index 836a0e51e4..262db3c251 100644
--- a/tools/meson/files/openwrt-cross.txt.in
+++ b/tools/meson/files/openwrt-cross.txt.in
@@ -8,7 +8,6 @@ strip = '@STRIP@'
 nm = '@NM@'
 pkg-config = '@PKGCONFIG@'
 cmake = '@CMAKE@'
-python = '@PYTHON@'

 [built-in options]
 c_args = [@CFLAGS@]

It didn't work :-(

yegorich avatar May 06 '24 12:05 yegorich

Release notes were somewhat misleading:

Change how Python is found at configure time and in script shebangs (#3301, #3331, work by multiple people)

Especially this issue with a suggestion to implement packaging functionality in glib2 itself.

yegorich avatar Jun 28 '24 14:06 yegorich

@feckert CI is now happy. Could you, please, give it a try with ModemManager? Thanks.

@neheb the packaging issue seems to be fixed.

yegorich avatar Jul 01 '24 06:07 yegorich

I'm somewhat uneasy of putting beta versions on here.

neheb avatar Jul 01 '24 21:07 neheb

I'm somewhat uneasy of putting beta versions on here.

No problem, I'll downgrade the patch to 2.80.x.

yegorich avatar Jul 01 '24 21:07 yegorich

@neheb downgrade ready.

yegorich avatar Jul 02 '24 09:07 yegorich