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 <mohammadpour.sob...@gmail.com>
+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
+}

Reply via email to