commit: 14aadaaa2a8eaf806d3cdaf4708855fca846ab04
Author: Sobhan Mohammadpour <sobhan <AT> gentoo <DOT> org>
AuthorDate: Mon Dec 18 13:50:10 2017 +0000
Commit: Sobhan Mohammadpour <sobhan <AT> gentoo <DOT> org>
CommitDate: Mon Dec 18 13:50:10 2017 +0000
URL: https://gitweb.gentoo.org/proj/gnome.git/commit/?id=14aadaaa
dev-libs/glib: Bump to 2.54.2
Bump to 2.54.2. this ebuild uses meson, fam, xattr, selinux,
systemtap need checking.
Package-Manager: Portage-2.3.18, Repoman-2.3.6
Manifest-Sign-Key: 0x7DF238CF0AA182E1
dev-libs/glib/files/gengiotypefuncs.py | 45 +++
.../glib/files/glib-2.54.2-external-codegen.patch | 101 +++++++
dev-libs/glib/glib-2.54.2.ebuild | 304 +++++++++++++++++++++
3 files changed, 450 insertions(+)
diff --git a/dev-libs/glib/files/gengiotypefuncs.py
b/dev-libs/glib/files/gengiotypefuncs.py
new file mode 100755
index 00000000..9732d789
--- /dev/null
+++ b/dev-libs/glib/files/gengiotypefuncs.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+import sys
+import re
+import os
+
+debug = os.getenv('GIO_GENTYPEFUNCS_DEBUG') is not None
+
+out_file = sys.argv[1]
+in_files = sys.argv[2:]
+
+funcs = []
+
+
+if debug: print ('Output file: ', out_file)
+
+if debug: print (len(in_files), 'input files')
+
+for filename in in_files:
+ if debug: print ('Input file: ', filename)
+ with open(filename, "r") as f:
+ for line in f:
+ line = line.rstrip('\n').rstrip('\r')
+ # print line
+ match = re.search(r'\bg_[a-zA-Z0-9_]*_get_type\b', line)
+ if match:
+ func = match.group(0)
+ if not func in funcs:
+ funcs.append(func)
+ if debug: print ('Found ', func)
+
+file_output = 'G_GNUC_BEGIN_IGNORE_DEPRECATIONS\n'
+
+funcs = sorted(funcs)
+
+for f in funcs:
+ if f not in ['g_io_extension_get_type', 'g_settings_backend_get_type']:
+ file_output += '*tp++ = {0} ();\n'.format(f)
+
+if debug: print (len(funcs), 'functions')
+
+ofile = open(out_file, "w")
+ofile.write(file_output)
+ofile.close()
diff --git a/dev-libs/glib/files/glib-2.54.2-external-codegen.patch
b/dev-libs/glib/files/glib-2.54.2-external-codegen.patch
new file mode 100644
index 00000000..3c654216
--- /dev/null
+++ b/dev-libs/glib/files/glib-2.54.2-external-codegen.patch
@@ -0,0 +1,101 @@
+From d4a7cb8d053daab95b8d250af6b21c81bc860777 Mon Sep 17 00:00:00 2001
+From: Sobhan Mohammadpour <[email protected]>
+Date: Sat, 16 Dec 2017 21:30:22 +0330
+Subject: [PATCH] glib-2.54.2 external codegen
+
+---
+ docs/reference/gio/meson.build | 4 +---
+ gio/meson.build | 6 +++---
+ gio/tests/gdbus-object-manager-example/meson.build | 2 +-
+ gio/tests/meson.build | 2 +-
+ 4 files changed, 6 insertions(+), 8 deletions(-)
+
+diff --git a/docs/reference/gio/meson.build b/docs/reference/gio/meson.build
+index 7f04677..71b5e0c 100644
+--- a/docs/reference/gio/meson.build
++++ b/docs/reference/gio/meson.build
+@@ -121,7 +121,6 @@ if get_option('with-docs') != 'no'
+ 'gsettings.xml',
+ 'gresource.xml',
+ 'gdbus.xml',
+- 'gdbus-codegen.xml',
+ ],
+ expand_content_files : [
+ 'overview.xml',
+@@ -129,7 +128,6 @@ if get_option('with-docs') != 'no'
+ 'migrating-gnome-vfs.xml',
+ 'migrating-gconf.xml',
+ 'migrating-gdbus.xml',
+- 'gdbus-codegen.xml',
+ ],
+ html_assets : [
+ 'gvfs-overview.png',
+@@ -149,7 +147,7 @@ endif
+ if get_option('with-man') != 'no' and xsltproc.found()
+ manpages = ['gapplication', 'gio-querymodules', 'glib-compile-schemas',
+ 'glib-compile-resources', 'gsettings', 'gresource', 'gdbus',
+- 'gio', 'gdbus-codegen']
++ 'gio']
+ foreach page : manpages
+ custom_target(page + '-man',
+ input: page + '.xml',
+diff --git a/gio/meson.build b/gio/meson.build
+index 3252636..3c566ed 100644
+--- a/gio/meson.build
++++ b/gio/meson.build
+@@ -165,7 +165,7 @@ gdbus_sources = [
+ ]
+
+ # Generate gdbus-codegen
+-subdir('gdbus-2.0/codegen')
++#subdir('gdbus-2.0/codegen')
+
+ # Generate xdp-dbus.{c,h}
+ xdp_dbus_generated = custom_target('xdp-dbus',
+@@ -174,7 +174,7 @@ xdp_dbus_generated = custom_target('xdp-dbus',
+ 'org.freedesktop.portal.NetworkMonitor.xml',
+ 'org.freedesktop.portal.ProxyResolver.xml'],
+ output : ['xdp-dbus.h', 'xdp-dbus.c'],
+- command : [python, gdbus_codegen,
++ command : [find_program('gdbus-codegen'),
+ '--interface-prefix', 'org.freedesktop.portal.',
+ '--output-directory', '@OUTDIR@',
+ '--generate-c-code', 'xdp-dbus',
+@@ -193,7 +193,7 @@ xdp_dbus_generated = custom_target('xdp-dbus',
+ gdbus_daemon_generated = custom_target('gdbus-daemon-generated',
+ input : ['dbus-daemon.xml'],
+ output : ['gdbus-daemon-generated.h', 'gdbus-daemon-generated.c'],
+- command : [python, gdbus_codegen,
++ command : [find_program('gdbus-codegen'),
+ '--interface-prefix', 'org.',
+ '--output-directory', '@OUTDIR@',
+ '--generate-c-code', 'gdbus-daemon-generated',
+diff --git a/gio/tests/gdbus-object-manager-example/meson.build
b/gio/tests/gdbus-object-manager-example/meson.build
+index 6303573..499bb9a 100644
+--- a/gio/tests/gdbus-object-manager-example/meson.build
++++ b/gio/tests/gdbus-object-manager-example/meson.build
+@@ -5,7 +5,7 @@ gdbus_example_objectmanager_generated =
custom_target('gdbus-example-objectmanag
+ 'gdbus-example-objectmanager-generated.c',
+
'gdbus-example-objectmanager-generated-org.gtk.GDBus.Example.ObjectManager.Animal.xml',
+
'gdbus-example-objectmanager-generated-org.gtk.GDBus.Example.ObjectManager.Cat.xml'],
+- command : [python, gdbus_codegen,
++ command : [find_program('gdbus-codegen'),
+ '--interface-prefix', 'org.gtk.GDBus.Example.ObjectManager.',
+ '--c-namespace', 'Example',
+ '--c-generate-object-manager',
+diff --git a/gio/tests/meson.build b/gio/tests/meson.build
+index e149a4b..69a161e 100644
+--- a/gio/tests/meson.build
++++ b/gio/tests/meson.build
+@@ -145,7 +145,7 @@ if host_machine.system() != 'windows'
+ input : ['test-codegen.xml'],
+ output : ['gdbus-test-codegen-generated.h',
+ 'gdbus-test-codegen-generated.c'],
+- command : [python, gdbus_codegen,
++ command : [find_program('gdbus-codegen'),
+ '--interface-prefix', 'org.project.',
+ '--output-directory', '@OUTDIR@',
+ '--generate-c-code', 'gdbus-test-codegen-generated',
+--
+2.15.1
+
diff --git a/dev-libs/glib/glib-2.54.2.ebuild b/dev-libs/glib/glib-2.54.2.ebuild
new file mode 100644
index 00000000..45b1f9de
--- /dev/null
+++ b/dev-libs/glib/glib-2.54.2.ebuild
@@ -0,0 +1,304 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# Until bug #537330 glib is a reverse dependency of pkgconfig and, then
+# adding new dependencies end up making stage3 to grow. Every addition needs
+# then to be think very closely.
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 )
+# Completely useless with or without USE static-libs, people need to use
+# pkg-config
+GNOME2_LA_PUNT="yes"
+
+inherit bash-completion-r1 epunt-cxx flag-o-matic gnome-meson libtool
linux-info \
+ multilib multilib-minimal pax-utils python-r1 toolchain-funcs
versionator virtualx
+
+DESCRIPTION="The GLib library of C routines"
+HOMEPAGE="https://www.gtk.org/"
+SRC_URI="${SRC_URI}
+ https://pkgconfig.freedesktop.org/releases/pkg-config-0.28.tar.gz" #
pkg.m4 for eautoreconf
+
+LICENSE="LGPL-2.1+"
+SLOT="2"
+IUSE="dbus debug fam kernel_linux +mime selinux static-libs systemtap test
utils xattr"
+REQUIRED_USE="
+ utils? ( ${PYTHON_REQUIRED_USE} )
+ test? ( ${PYTHON_REQUIRED_USE} )
+"
+
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh
~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~amd64-linux ~arm-linux
~x86-linux"
+
+# Added util-linux multilib dependency to have libmount support (which
+# is always turned on on linux systems, unless explicitly disabled, but
+# this ebuild does not do that anyway) (bug #599586)
+
+RDEPEND="
+ !<dev-util/gdbus-codegen-${PV}
+ >=dev-libs/libpcre-8.13:3[${MULTILIB_USEDEP},static-libs?]
+ >=virtual/libiconv-0-r1[${MULTILIB_USEDEP}]
+ >=virtual/libffi-3.0.13-r1[${MULTILIB_USEDEP}]
+ >=virtual/libintl-0-r2[${MULTILIB_USEDEP}]
+ >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}]
+ kernel_linux? ( sys-apps/util-linux[${MULTILIB_USEDEP}] )
+ selinux? ( >=sys-libs/libselinux-2.2.2-r5[${MULTILIB_USEDEP}] )
+ xattr? ( >=sys-apps/attr-2.4.47-r1[${MULTILIB_USEDEP}] )
+ fam? ( >=virtual/fam-0-r1[${MULTILIB_USEDEP}] )
+ utils? (
+ ${PYTHON_DEPS}
+ >=dev-util/gdbus-codegen-${PV}[${PYTHON_USEDEP}]
+ virtual/libelf:0=
+ )
+"
+DEPEND="${RDEPEND}
+ app-text/docbook-xml-dtd:4.1.2
+ >=dev-libs/libxslt-1.0
+ >=sys-devel/gettext-0.11
+ >=dev-util/gtk-doc-am-1.20
+ systemtap? ( >=dev-util/systemtap-1.3 )
+ test? (
+ sys-devel/gdb
+ ${PYTHON_DEPS}
+ >=dev-util/gdbus-codegen-${PV}[${PYTHON_USEDEP}]
+ >=sys-apps/dbus-1.2.14 )
+ !<dev-util/gtk-doc-1.15-r2
+"
+PDEPEND="!<gnome-base/gvfs-1.6.4-r990
+ dbus? ( gnome-base/dconf )
+ mime? ( x11-misc/shared-mime-info )
+"
+# shared-mime-info needed for gio/xdgmime, bug #409481
+# dconf is needed to be able to save settings, bug #498436
+# Earlier versions of gvfs do not work with glib
+
+MULTILIB_CHOST_TOOLS=(
+ /usr/bin/gio-querymodules$(get_exeext)
+)
+
+pkg_setup() {
+ if use kernel_linux ; then
+ CONFIG_CHECK="~INOTIFY_USER"
+ if use test ; then
+ CONFIG_CHECK="~IPV6"
+ WARNING_IPV6="Your kernel needs IPV6 support for
running some tests, skipping them."
+ fi
+ linux-info_pkg_setup
+ fi
+}
+
+src_prepare() {
+ # Prevent build failure in stage3 where pkgconfig is not available, bug
#481056
+ mv -f "${WORKDIR}"/pkg-config-*/pkg.m4 "${S}"/m4macros/ || die
+ # Copy missing gengiotypefuncs.py
+ cp "${FILESDIR}"/gengiotypefuncs.py "${S}"/gio/tests/ || die
+
+ # We need gengiotypefuncs
+ if use test; then
+ # Disable tests requiring dev-util/desktop-file-utils when not
installed, bug #286629, upstream bug #629163
+ if ! has_version dev-util/desktop-file-utils ; then
+ ewarn "Some tests will be skipped due
dev-util/desktop-file-utils not being present on your system,"
+ ewarn "think on installing it to get these tests run."
+ sed -i -e "/appinfo\/associations/d"
gio/tests/appinfo.c || die
+ sed -i -e "/g_test_add_func/d"
gio/tests/desktop-app-info.c || die
+ fi
+
+ # gdesktopappinfo requires existing terminal (gnome-terminal or
any
+ # other), falling back to xterm if one doesn't exist
+ if ! has_version x11-terms/xterm && ! has_version
x11-terms/gnome-terminal ; then
+ ewarn "Some tests will be skipped due to missing
terminal program"
+ sed -i -e "/appinfo\/launch/d" gio/tests/appinfo.c ||
die
+ fi
+
+ # https://bugzilla.gnome.org/show_bug.cgi?id=722604
+ sed -i -e "/timer\/stop/d" glib/tests/timer.c || die
+ sed -i -e "/timer\/basic/d" glib/tests/timer.c || die
+
+ ewarn "Tests for search-utils have been skipped"
+ sed -i -e "/search-utils/d" glib/tests/Makefile.am || die
+ else
+ # Don't build tests, also prevents extra deps, bug #512022
+ sed -i -e 's/ tests//' {.,gio,glib}/Makefile.am || die
+ fi
+
+ # gdbus-codegen is a separate package
+ eapply "${FILESDIR}"/${PN}-2.54.2-external-codegen.patch
+
+ # Leave python shebang alone - handled by python_replicate_script
+ # We could call python_setup and give configure a valid --with-python
+ # arg, but that would mean a build dep on python when USE=utils.
+ sed -e '/${PYTHON}/d' \
+ -i glib/Makefile.{am,in} || die
+
+ gnome-meson_src_prepare
+
+ epunt_cxx
+}
+
+multilib_src_configure() {
+ # TODO is this still relevent?
+ # Avoid circular depend with dev-util/pkgconfig and
+ # native builds (cross-compiles won't need pkg-config
+ # in the target ROOT to work here)
+ if ! tc-is-cross-compiler && ! $(tc-getPKG_CONFIG) --version >&
/dev/null; then
+ if has_version sys-apps/dbus; then
+ export DBUS1_CFLAGS="-I/usr/include/dbus-1.0
-I/usr/$(get_libdir)/dbus-1.0/include"
+ export DBUS1_LIBS="-ldbus-1"
+ fi
+ export LIBFFI_CFLAGS="-I$(echo
/usr/$(get_libdir)/libffi-*/include)"
+ export LIBFFI_LIBS="-lffi"
+ export PCRE_CFLAGS=" " # test -n "$PCRE_CFLAGS" needs to pass
+ export PCRE_LIBS="-lpcre"
+ fi
+
+ # These configure tests don't work when cross-compiling.
+ if tc-is-cross-compiler ; then
+ # https://bugzilla.gnome.org/show_bug.cgi?id=756473
+ case ${CHOST} in
+ hppa*|metag*) export glib_cv_stack_grows=yes ;;
+ *) export glib_cv_stack_grows=no ;;
+ esac
+ # https://bugzilla.gnome.org/show_bug.cgi?id=756474
+ export glib_cv_uscore=no
+ # https://bugzilla.gnome.org/show_bug.cgi?id=756475
+ export ac_cv_func_posix_get{pwuid,grgid}_r=yes
+ fi
+
+ local myconf
+
+ # FIXME multilib automagic for libelf
+ # FIXME set systemtap/tapse/static-lib install dir and test it.
+ # FIXME no selinux, fam, xattr for now.
+ # FIXME is this still valid.
+ # libelf used only by the gresource bin ??
+ # FIXME enable docs if possible.
+
+ use static-libs && myconf="-Ddefault_library='static'"
+ use debug && myconf="$myconf -Dbuildtype='debug'"
+
+ gnome-meson_src_configure \
+ ${myconf} \
+ -Denable-libmount=$(usex kernel_linux yes no) \
+ $(gnome-meson_use systemtap dtrace) \
+ $(gnome-meson_use systemtap) \
+ -Dwith-pcre=system \
+ -Dwith-docs=no \
+ -Dwith-man=yes
+
+ if multilib_is_native_abi; then
+ local d
+ for d in glib gio gobject; do
+ ln -s "${S}"/docs/reference/${d}/html
docs/reference/${d}/html || die
+ done
+ fi
+}
+
+multilib_src_compile() {
+ gnome-meson_src_compile
+}
+# FIXME
+multilib_src_test() {
+ export XDG_CONFIG_DIRS=/etc/xdg
+ export XDG_DATA_DIRS=/usr/local/share:/usr/share
+ export G_DBUS_COOKIE_SHA1_KEYRING_DIR="${T}/temp"
+ export LC_TIME=C # bug #411967
+ unset GSETTINGS_BACKEND # bug #596380
+ python_setup
+
+ # Related test is a bit nitpicking
+ mkdir "$G_DBUS_COOKIE_SHA1_KEYRING_DIR"
+ chmod 0700 "$G_DBUS_COOKIE_SHA1_KEYRING_DIR"
+
+ # Hardened: gdb needs this, bug #338891
+ if host-is-pax ; then
+ pax-mark -mr "${BUILD_DIR}"/tests/.libs/assert-msg-test \
+ || die "Hardened adjustment failed"
+ fi
+
+ # Need X for dbus-launch session X11 initialization
+ virtx meson_src_test
+}
+
+# FIXME completentiondir
+multilib_src_install() {
+ gnome-meson_src_install completiondir="$(get_bashcompdir)"
+ keepdir /usr/$(get_libdir)/gio/modules
+}
+
+multilib_src_install_all() {
+ einstalldocs
+
+ if use utils ; then
+ python_replicate_script "${ED}"/usr/bin/gtester-report
+ else
+ rm "${ED}usr/bin/gtester-report"
+ rm "${ED}usr/share/man/man1/gtester-report.1"
+ fi
+
+ # Do not install charset.alias even if generated, leave it to libiconv
+ rm -f "${ED}/usr/lib/charset.alias"
+
+ # Don't install gdb python macros, bug 291328
+ rm -rf "${ED}/usr/share/gdb/" "${ED}/usr/share/glib-2.0/gdb/"
+}
+
+pkg_preinst() {
+ gnome-meson_pkg_preinst
+
+ # Make gschemas.compiled belong to glib alone
+ local cache="usr/share/glib-2.0/schemas/gschemas.compiled"
+
+ if [[ -e ${EROOT}${cache} ]]; then
+ cp "${EROOT}"${cache} "${ED}"/${cache} || die
+ else
+ touch "${ED}"/${cache} || die
+ fi
+
+ multilib_pkg_preinst() {
+ # Make giomodule.cache belong to glib alone
+ local cache="usr/$(get_libdir)/gio/modules/giomodule.cache"
+
+ if [[ -e ${EROOT}${cache} ]]; then
+ cp "${EROOT}"${cache} "${ED}"/${cache} || die
+ else
+ touch "${ED}"/${cache} || die
+ fi
+ }
+
+ # Don't run the cache ownership when cross-compiling, as it would end
up with an empty cache
+ # file due to inability to create it and GIO might not look at any of
the modules there
+ if ! tc-is-cross-compiler ; then
+ multilib_foreach_abi multilib_pkg_preinst
+ fi
+}
+
+pkg_postinst() {
+ # force (re)generation of gschemas.compiled
+ gnome-meson_ECLASS_GLIB_SCHEMAS="force"
+
+ gnome-meson_pkg_postinst
+
+ multilib_pkg_postinst() {
+ gnome2_giomodule_cache_update \
+ || die "Update GIO modules cache failed (for ${ABI})"
+ }
+ if ! tc-is-cross-compiler ; then
+ multilib_foreach_abi multilib_pkg_postinst
+ else
+ ewarn "Updating of GIO modules cache skipped due to
cross-compilation."
+ ewarn "You might want to run gio-querymodules manually on the
target for"
+ ewarn "your final image for performance reasons and re-run it
when packages"
+ ewarn "installing GIO modules get upgraded or added to the
image."
+ fi
+}
+
+pkg_postrm() {
+ gnome-meson_pkg_postrm
+
+ if [[ -z ${REPLACED_BY_VERSION} ]]; then
+ multilib_pkg_postrm() {
+ rm -f
"${EROOT}"usr/$(get_libdir)/gio/modules/giomodule.cache
+ }
+ multilib_foreach_abi multilib_pkg_postrm
+ rm -f "${EROOT}"usr/share/glib-2.0/schemas/gschemas.compiled
+ fi
+}