blob: fac8875d844018ccbadc9790d43c8d2e3a67acac [file] [log] [blame]
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001SUMMARY = "A general-purpose utility library"
2DESCRIPTION = "GLib is a general-purpose utility library, which provides many useful data types, macros, type conversions, string utilities, file utilities, a main loop abstraction, and so on."
3HOMEPAGE = "https://developer.gnome.org/glib/"
4
5# pcre is under BSD;
Brad Bishop316dfdd2018-06-25 12:45:53 -04006# docs/reference/COPYING is with a 'public domain'-like license!
Andrew Geissler7e0e3c02022-02-25 20:34:39 +00007LICENSE = "LGPL-2.1-or-later & BSD-3-Clause & PD"
Patrick Williams7784c422022-11-17 07:29:11 -06008LIC_FILES_CHKSUM = "file://COPYING;md5=41890f71f740302b785c27661123bff5 \
9 file://glib/glib.h;beginline=4;endline=17;md5=72f7cc2847407f65d8981ef112e4e630 \
10 file://LICENSES/LGPL-2.1-or-later.txt;md5=41890f71f740302b785c27661123bff5 \
11 file://gmodule/gmodule.h;beginline=4;endline=17;md5=72f7cc2847407f65d8981ef112e4e630 \
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012 file://docs/reference/COPYING;md5=f51a5100c17af6bae00735cd791e1fcc"
13BUGTRACKER = "http://bugzilla.gnome.org"
14SECTION = "libs"
15
Brad Bishop6e60e8b2018-02-01 10:27:11 -050016CVE_PRODUCT = "glib"
17
Patrick Williamsc124f4f2015-09-15 14:41:29 -050018BBCLASSEXTEND = "native nativesdk"
19
Brad Bishop316dfdd2018-06-25 12:45:53 -040020DEPENDS = "glib-2.0-native \
21 virtual/libintl \
22 virtual/libiconv \
23 libffi \
Patrick Williams7784c422022-11-17 07:29:11 -060024 libpcre2 \
Brad Bishop19323692019-04-05 15:28:33 -040025 zlib"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050026
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050027PACKAGES += "${PN}-codegen ${PN}-utils"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050028
29LEAD_SONAME = "libglib-2.0.*"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050030
Patrick Williams56b44a92024-01-19 08:49:29 -060031inherit meson gettext gtk-doc pkgconfig ptest-gnome upstream-version-is-even bash-completion gio-module-cache manpages gobject-introspection-data
Brad Bishop19323692019-04-05 15:28:33 -040032
Brad Bishopc342db32019-05-15 21:57:59 -040033GTKDOC_MESON_OPTION = "gtk_doc"
Brad Bishop19323692019-04-05 15:28:33 -040034
Patrick Williamsc124f4f2015-09-15 14:41:29 -050035S = "${WORKDIR}/glib-${PV}"
36
Andrew Geisslereff27472021-10-29 15:35:00 -050037PACKAGECONFIG ??= "libmount \
Brad Bishop19323692019-04-05 15:28:33 -040038 ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
Andrew Geissler4b740dc2020-05-05 08:54:39 -050039PACKAGECONFIG[libmount] = "-Dlibmount=enabled,-Dlibmount=disabled,util-linux"
Brad Bishop19323692019-04-05 15:28:33 -040040PACKAGECONFIG[manpages] = "-Dman=true, -Dman=false, libxslt-native xmlto-native"
Andrew Geissler5082cc72023-09-11 08:41:39 -040041PACKAGECONFIG[libelf] = "-Dlibelf=enabled,-Dlibelf=disabled,elfutils"
Andrew Geissler9aee5002022-03-30 16:27:02 +000042PACKAGECONFIG[tests] = "-Dinstalled_tests=true,-Dinstalled_tests=false,"
Patrick Williams0ca19cc2021-08-16 14:03:13 -050043PACKAGECONFIG[selinux] = "-Dselinux=enabled,-Dselinux=disabled,libselinux"
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050044
Patrick Williams7784c422022-11-17 07:29:11 -060045EXTRA_OEMESON = "-Ddtrace=false -Dsystemtap=false"
Brad Bishop6e60e8b2018-02-01 10:27:11 -050046
Patrick Williams213cb262021-08-07 19:21:33 -050047do_configure:prepend() {
Patrick Williamsc0f7c042017-02-23 20:41:17 -060048 sed -i -e '1s,#!.*,#!${USRBINPATH}/env python3,' ${S}/gio/gdbus-2.0/codegen/gdbus-codegen.in
Patrick Williamsc124f4f2015-09-15 14:41:29 -050049}
50
Patrick Williams213cb262021-08-07 19:21:33 -050051FILES:${PN} = "${libdir}/lib*${SOLIBS} \
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050052 ${libdir}/gio \
53 ${libexecdir}/*gio-querymodules \
Patrick Williams7784c422022-11-17 07:29:11 -060054 ${libexecdir}/*gio-launch-desktop \
Andrew Geissler220dafd2023-10-04 10:18:08 -050055 ${datadir}/glib-2.0/dtds \
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050056 ${datadir}/glib-2.0/schemas"
Andrew Geissler82c905d2020-04-13 13:39:40 -050057
Patrick Williams213cb262021-08-07 19:21:33 -050058FILES:${PN}-dev += "${libdir}/glib-2.0/include \
Patrick Williamsc124f4f2015-09-15 14:41:29 -050059 ${libdir}/gio/modules/lib*${SOLIBSDEV} \
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050060 ${libdir}/gio/modules/*.la \
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050061 ${datadir}/glib-2.0/gettext/po/Makefile.in.in \
Patrick Williamsc0f7c042017-02-23 20:41:17 -060062 ${datadir}/glib-2.0/schemas/gschema.dtd \
Brad Bishopd7bf8c12018-02-25 22:55:05 -050063 ${datadir}/glib-2.0/valgrind/glib.supp \
Patrick Williamsc0f7c042017-02-23 20:41:17 -060064 ${datadir}/gettext/its"
Patrick Williams213cb262021-08-07 19:21:33 -050065FILES:${PN}-dbg += "${datadir}/glib-2.0/gdb ${datadir}/gdb"
66FILES:${PN}-codegen = "${datadir}/glib-2.0/codegen/*.py \
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050067 ${bindir}/gdbus-codegen"
Patrick Williams213cb262021-08-07 19:21:33 -050068FILES:${PN}-utils = "${bindir}/*"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050069
Brad Bishop19323692019-04-05 15:28:33 -040070SHAREDMIMEDEP = "shared-mime-info"
Patrick Williams213cb262021-08-07 19:21:33 -050071SHAREDMIMEDEP:class-native = ""
Brad Bishopd7bf8c12018-02-25 22:55:05 -050072# When cross compiling for Windows we don't want to include this
Patrick Williams213cb262021-08-07 19:21:33 -050073SHAREDMIMEDEP:mingw32 = ""
Brad Bishop19323692019-04-05 15:28:33 -040074
Patrick Williams213cb262021-08-07 19:21:33 -050075RRECOMMENDS:${PN} += "${SHAREDMIMEDEP}"
Brad Bishopd7bf8c12018-02-25 22:55:05 -050076
Patrick Williams213cb262021-08-07 19:21:33 -050077ARM_INSTRUCTION_SET:armv4 = "arm"
78ARM_INSTRUCTION_SET:armv5 = "arm"
Patrick Williamsc0f7c042017-02-23 20:41:17 -060079# Valgrind runtime detection works using hand-written assembly, which
80# doesn't support mips16e
Patrick Williams213cb262021-08-07 19:21:33 -050081CPPFLAGS:append:class-target:mips16e = " -DNVALGRIND=1"
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050082
Brad Bishop316dfdd2018-06-25 12:45:53 -040083# GLib generally requires gettext to be present so for USE_NLS to yes. For
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080084# native builds as i18n is disabled globally we have to add a gettext-native dependency.
Patrick Williams213cb262021-08-07 19:21:33 -050085USE_NLS:class-target = "yes"
86USE_NLS:class-nativesdk = "yes"
87DEPENDS:append:class-native = " gettext-native"
Brad Bishop316dfdd2018-06-25 12:45:53 -040088
89EXEEXT = ""
Patrick Williams213cb262021-08-07 19:21:33 -050090EXEEXT:mingw32 = ".exe"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050091
Patrick Williams213cb262021-08-07 19:21:33 -050092do_install:append () {
Patrick Williamsc124f4f2015-09-15 14:41:29 -050093 if [ -f ${D}${bindir}/gtester-report ]; then
Patrick Williamsc0f7c042017-02-23 20:41:17 -060094 sed ${D}${bindir}/gtester-report -i -e '1s|^#!.*|#!/usr/bin/env python3|'
Patrick Williamsc124f4f2015-09-15 14:41:29 -050095 fi
96
97 # Remove some unpackaged files
Patrick Williamsc0f7c042017-02-23 20:41:17 -060098 rm -rf ${D}${datadir}/glib-2.0/codegen/__pycache__
Patrick Williamsc124f4f2015-09-15 14:41:29 -050099 rm -f ${D}${datadir}/glib-2.0/codegen/*.pyc
100 rm -f ${D}${datadir}/glib-2.0/codegen/*.pyo
101
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500102 if [ -e ${D}${libdir}/charset.alias ]; then
103 rm -f ${D}${libdir}/charset.alias
104 fi
Brad Bishop316dfdd2018-06-25 12:45:53 -0400105
106 # Make sure gio-querymodules is unique among multilibs
107 if test "x${MLPREFIX}" != "x"; then
108 mv ${D}${libexecdir}/gio-querymodules${EXEEXT} ${D}${libexecdir}/${MLPREFIX}gio-querymodules${EXEEXT}
109 fi
Brad Bishop19323692019-04-05 15:28:33 -0400110 # Autotools does this, meson does not
111 mkdir -p ${D}${libdir}/gio/modules
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500112}
113
Patrick Williamsda295312023-12-05 16:48:56 -0600114do_install:append:class-native () {
115 # Link gio-querymodules into ${bindir} as otherwise tools like meson won't find it
116 ln -rs ${D}${libexecdir}/gio-querymodules ${D}${bindir}
117}
118
Patrick Williams213cb262021-08-07 19:21:33 -0500119do_install:append:class-target () {
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500120 # Tests are only installed on targets, not native builds. Separating this out
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800121 # keeps glib-2.0-native from depending on DISTRO_FEATURES
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500122 if [ -f ${D}${datadir}/installed-tests/glib/gdbus-serialization.test ]; then
123 if ${@bb.utils.contains("DISTRO_FEATURES", "x11", "false", "true", d)}; then
124 rm ${D}${datadir}/installed-tests/glib/gdbus-serialization.test
125 fi
126 fi
Andrew Geissler82c905d2020-04-13 13:39:40 -0500127 if [ -f ${D}${datadir}/installed-tests/glib/static-link.test ]; then
128 if test "x${MLPREFIX}" != "x"; then
129 mv ${D}${datadir}/installed-tests/glib/static-link.test ${D}${datadir}/installed-tests/glib/${MLPREFIX}static-link.test
130 fi
131 fi
Patrick Williams7784c422022-11-17 07:29:11 -0600132 # https://gitlab.gnome.org/GNOME/glib/-/issues/2810
133 rm -f ${D}${datadir}/installed-tests/glib/thread-pool-slow.test
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500134}
Andrew Geissler220dafd2023-10-04 10:18:08 -0500135do_install:append:class-target:libc-musl () {
136 # Remove failing tests on musl libc systems, this helps set baseline for musl testing
137 # they remain to be rootcaused and fixed but marked known failures here.
138 for t in convert.test collate.test gdatetime.test date.test converter-stream.test option-context.test; do
139 rm -rf ${D}${datadir}/installed-tests/glib/$t
140 done
141}
Brad Bishop19323692019-04-05 15:28:33 -0400142# As we do not build python3 for windows, makes no sense to ship the script that's using it
Patrick Williams213cb262021-08-07 19:21:33 -0500143do_install:append:mingw32() {
Brad Bishop19323692019-04-05 15:28:33 -0400144 rm -f ${D}${bindir}/gtester-report
145}
146
Patrick Williams39653562024-03-01 08:54:02 -0600147CODEGEN_PYTHON_RDEPENDS = "python3 python3-packaging python3-xml"
Patrick Williams213cb262021-08-07 19:21:33 -0500148CODEGEN_PYTHON_RDEPENDS:mingw32 = ""
Brad Bishop316dfdd2018-06-25 12:45:53 -0400149
Patrick Williams213cb262021-08-07 19:21:33 -0500150RDEPENDS:${PN}-codegen += "${CODEGEN_PYTHON_RDEPENDS}"
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500151
Patrick Williams213cb262021-08-07 19:21:33 -0500152RDEPENDS:${PN}-ptest += "${PN}-utils"
Andrew Geissler82c905d2020-04-13 13:39:40 -0500153
Patrick Williams213cb262021-08-07 19:21:33 -0500154RDEPENDS:${PN}-ptest += "\
Brad Bishop15ae2502019-06-18 21:44:24 -0400155 coreutils \
Brad Bishop393846f2019-05-20 12:24:11 -0400156 libgcc \
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500157 dbus \
Patrick Williams7784c422022-11-17 07:29:11 -0600158 desktop-file-utils \
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500159 gnome-desktop-testing \
160 tzdata \
161 tzdata-americas \
162 tzdata-asia \
163 tzdata-europe \
164 tzdata-posix \
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500165 shared-mime-info \
Brad Bishopc342db32019-05-15 21:57:59 -0400166 ${PN}-locale-ja \
167 ${PN}-locale-fr \
168 ${PN}-locale-el \
169 ${PN}-locale-hr \
170 ${PN}-locale-lt \
171 ${PN}-locale-pl \
172 ${PN}-locale-ru \
173 ${PN}-locale-th \
Brad Bishopf3f93bb2019-10-16 14:33:32 -0400174 python3-core \
175 python3-modules \
Andrew Geissler6ce62a22020-11-30 19:58:47 -0600176 ${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'python3-dbusmock', '', d)} \
Andrew Geissler4b740dc2020-05-05 08:54:39 -0500177 ${PN}-codegen \
Andrew Geissler220dafd2023-10-04 10:18:08 -0500178 locale-base-de-de \
179 locale-base-es-es \
180 locale-base-en-gb \
181 locale-base-en-us \
182 locale-base-fr-fr \
183 locale-base-ru-ru \
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500184 "
185
Patrick Williams213cb262021-08-07 19:21:33 -0500186RDEPENDS:${PN}-ptest:append:libc-glibc = "\
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500187 glibc-gconv-utf-16 \
188 glibc-charmap-utf-8 \
189 glibc-gconv-cp1255 \
190 glibc-charmap-cp1255 \
191 glibc-gconv-utf-32 \
192 glibc-gconv-utf-7 \
193 glibc-gconv-euc-jp \
194 glibc-gconv-iso8859-1 \
195 glibc-gconv-iso8859-15 \
196 glibc-charmap-invariant \
197 glibc-localedata-translit-cjk-variants \
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800198 locale-base-lt-lt \
199 locale-base-ja-jp.euc-jp \
200 locale-base-fa-ir \
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800201 locale-base-hr-hr \
202 locale-base-el-gr \
Brad Bishop19323692019-04-05 15:28:33 -0400203 locale-base-pl-pl \
Brad Bishopc342db32019-05-15 21:57:59 -0400204 locale-base-pl-pl.iso-8859-2 \
Andrew Geissler220dafd2023-10-04 10:18:08 -0500205 locale-base-tr-tr \
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500206 "