fix(dev-libs/glib): delete dev-libs/glib

remove dev-libs/glib and move into coreos-overlay. We need to delete the
mime-info requirement as it pulls in a lot of X stuff and is only needed
for GIO which we don't use.

Change-Id: I35421d792aea8681d12dad68781388fc107d5e78
This commit is contained in:
Brandon Philips 2013-02-15 16:39:22 -08:00
parent 8814ec8d8f
commit 9e67a65376
6 changed files with 0 additions and 633 deletions

View File

@ -1,3 +0,0 @@
DIST glib-2.32.4-AS_IF-patches.tar.xz 8584 SHA256 c61a87bbed8b09148f70f2651696430ab262d8ee905ebe2e0e963bb9038c5545 SHA512 cea825c379ea9014014f8a6f3a9fcf228e6b4245c649df4d86f6d86d1d655fd927ef1115fd66521cc48b2929d8cd504a284c7a8fb5ff38dc2b83ac4140655049 WHIRLPOOL e778094ad8ebe6fdc236942c21ee8ce2266712a08672b521f931159dd81d3452fcb8b6556c98c82b60548b1d9703a3ff332d02970a01565b6f5c4bcd02e74b46
DIST glib-2.32.4.tar.xz 6178556 SHA256 a5d742a4fda22fb6975a8c0cfcd2499dd1c809b8afd4ef709bda4d11b167fae2 SHA512 bc8b2d6afae7635f940065eca3e854ee171812c7b582d55313db11d28875495dbf41fc0a260347b30f7490daa65ccc377d8a2d60bb3a26d07997606d8e3d989f WHIRLPOOL 35aec94088acff460685c0b1bb2e6fcffadb0f9f0044b93f3fa042ed82dd52efb5e56022575c0ebcfda4230d38edc26a916623f0bfcbfc8e1c6b76a3133d43bc
DIST pkg-config-0.26.tar.gz 396399 SHA256 94c1936a797c930fb3e4e5a154165b6268caba22b32d24083dd4c492a533c8af SHA512 9390d5918dd4ac520b914d2330aa7cae2587ca7b21b03bc88372fd5dbbd78e33eeb3fca39fcdb6dd10113658f03118a1c8829149c7029eb0dd80348d100170a4 WHIRLPOOL f535946a02192a9bffc7be0fae454e25aa86af8bac7f47622d52ed13f77f1ba05ff9b5693b2a501981e3991e4e1595eced22dee4ab748b310baa7d57267a62a7

View File

@ -1,21 +0,0 @@
diff --exclude-from=/home/dang/.scripts/diffrc -up -ruN glib-2.12.12.orig/gmodule/gmodule-dl.c glib-2.12.12/gmodule/gmodule-dl.c
--- glib-2.12.12.orig/gmodule/gmodule-dl.c 2007-05-01 19:12:40.000000000 -0400
+++ glib-2.12.12/gmodule/gmodule-dl.c 2007-07-05 20:10:51.000000000 -0400
@@ -106,6 +106,7 @@ _g_module_open (const gchar *file_name,
static gpointer
_g_module_self (void)
{
+#ifndef __FreeBSD__
gpointer handle;
/* to query symbols from the program itself, special link options
@@ -117,6 +118,9 @@ _g_module_self (void)
g_module_set_error (fetch_dlerror (TRUE));
return handle;
+#else
+ return RTLD_DEFAULT;
+#endif
}
static void

View File

@ -1,99 +0,0 @@
From 732f04b55f59b8107a7fbe317317edb5f184ea8f Mon Sep 17 00:00:00 2001
From: Priit Laes <plaes@plaes.org>
Date: Fri, 3 Feb 2012 09:08:28 +0200
Subject: [PATCH] Split out gdbus codegen
---
configure.ac | 4 +---
docs/reference/gio/Makefile.am | 3 +--
gio/Makefile.am | 2 +-
gio/tests/Makefile.am | 6 ++----
gio/tests/gdbus-object-manager-example/Makefile.am | 6 ++----
5 files changed, 7 insertions(+), 14 deletions(-)
diff --git a/configure.ac b/configure.ac
index 4cf04a1..0bb18c8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -356,7 +356,7 @@ fi
AC_SUBST(PERL_PATH)
# Need suitable python path for greport
-AM_PATH_PYTHON(2.5,,PYTHON="/usr/bin/env python2.5")
+# AM_PATH_PYTHON(2.5,,PYTHON="/usr/bin/env python2.5")
dnl ***********************
@@ -3525,8 +3525,6 @@ gobject/glib-mkenums
gobject/tests/Makefile
gthread/Makefile
gio/Makefile
-gio/gdbus-2.0/codegen/Makefile
-gio/gdbus-2.0/codegen/config.py
gio/xdgmime/Makefile
gio/inotify/Makefile
gio/fen/Makefile
diff --git a/docs/reference/gio/Makefile.am b/docs/reference/gio/Makefile.am
index 535aa26..5027dd5 100644
--- a/docs/reference/gio/Makefile.am
+++ b/docs/reference/gio/Makefile.am
@@ -144,8 +144,7 @@ man_MANS = \
glib-compile-resources.1 \
gsettings.1 \
gresource.1 \
- gdbus.1 \
- gdbus-codegen.1
+ gdbus.1
if ENABLE_MAN
diff --git a/gio/Makefile.am b/gio/Makefile.am
index 67eeae6..277931b 100644
--- a/gio/Makefile.am
+++ b/gio/Makefile.am
@@ -2,7 +2,7 @@ include $(top_srcdir)/Makefile.decl
NULL =
-SUBDIRS = gdbus-2.0/codegen
+SUBDIRS =
if OS_UNIX
SUBDIRS += xdgmime
diff --git a/gio/tests/Makefile.am b/gio/tests/Makefile.am
index e987fd1..66af8cf 100644
--- a/gio/tests/Makefile.am
+++ b/gio/tests/Makefile.am
@@ -275,10 +275,8 @@ gdbus_close_pending_SOURCES = gdbus-close-pending.c gdbus-sessionbus.c gdbus-ses
gdbus_close_pending_LDADD = $(progs_ldadd)
if OS_UNIX
-gdbus-test-codegen-generated.h gdbus-test-codegen-generated.c : test-codegen.xml Makefile $(top_builddir)/gio/gdbus-2.0/codegen/gdbus-codegen
- $(AM_V_GEN) UNINSTALLED_GLIB_SRCDIR=$(top_srcdir) \
- UNINSTALLED_GLIB_BUILDDIR=$(top_builddir) \
- $(PYTHON) $(top_builddir)/gio/gdbus-2.0/codegen/gdbus-codegen \
+gdbus-test-codegen-generated.h gdbus-test-codegen-generated.c : test-codegen.xml Makefile
+ $(AM_V_GEN) gdbus-codegen \
--interface-prefix org.project. \
--generate-c-code gdbus-test-codegen-generated \
--c-generate-object-manager \
diff --git a/gio/tests/gdbus-object-manager-example/Makefile.am b/gio/tests/gdbus-object-manager-example/Makefile.am
index 9861d0e..9ca6eb9 100644
--- a/gio/tests/gdbus-object-manager-example/Makefile.am
+++ b/gio/tests/gdbus-object-manager-example/Makefile.am
@@ -21,10 +21,8 @@ GDBUS_GENERATED = \
gdbus-example-objectmanager-generated-org.gtk.GDBus.Example.ObjectManager.Cat.xml \
$(NULL)
-$(GDBUS_GENERATED) : gdbus-example-objectmanager.xml Makefile $(top_builddir)/gio/gdbus-2.0/codegen/gdbus-codegen
- $(AM_V_GEN) UNINSTALLED_GLIB_SRCDIR=$(top_srcdir) \
- UNINSTALLED_GLIB_BUILDDIR=$(top_builddir) \
- $(PYTHON) $(top_builddir)/gio/gdbus-2.0/codegen/gdbus-codegen \
+$(GDBUS_GENERATED) : gdbus-example-objectmanager.xml Makefile
+ $(AM_V_GEN) gdbus-codegen \
--interface-prefix org.gtk.GDBus.Example.ObjectManager. \
--c-namespace Example \
--c-generate-object-manager \
--
1.7.8.4

View File

@ -1,247 +0,0 @@
From 4c2928a54482913cf236bff0e66650a8f47e17ea Mon Sep 17 00:00:00 2001
From: Colin Walters <walters@verbum.org>
Date: Wed, 22 Aug 2012 18:26:11 +0000
Subject: CVE-2012-3524: Hardening for being run in a setuid environment
Some programs attempt to use libglib (or even libgio) when setuid.
For a long time, GTK+ simply aborted if launched in this
configuration, but we never had a real policy for GLib.
I'm not sure whether we should advertise such support. However, given
that there are real-world programs that do this currently, we can make
them safer with not too much effort.
Better to fix a problem caused by an interaction between two
components in *both* places if possible.
This patch adds a private function g_check_setuid() which is used to
first ensure we don't run an external dbus-launch binary if
DBUS_SESSION_BUS_ADDRESS isn't set.
Second, we also ensure the local VFS is used in this case. The
gdaemonvfs extension point will end up talking to the session bus
which is typically undesirable in a setuid context.
Implementing g_check_setuid() is interesting - whether or not we're
running in a privilege-escalated path is operating system specific.
Note that GTK+'s code to check euid versus uid worked historically on
Unix, more modern systems have filesystem capabilities and SELinux
domain transitions, neither of which are captured by the uid
comparison.
On Linux/glibc, the way this works is that the kernel sets an
AT_SECURE flag in the ELF auxiliary vector, and glibc looks for it on
startup. If found, then glibc sets a public-but-undocumented
__libc_enable_secure variable which we can use. Unfortunately, while
it *previously* worked to check this variable, a combination of newer
binutils and RPM break it:
http://www.openwall.com/lists/owl-dev/2012/08/14/1
So for now on Linux/glibc, we fall back to the historical Unix version
until we get glibc fixed.
On some BSD variants, there is a issetugid() function. On other Unix
variants, we fall back to what GTK+ has been doing.
Reported-By: Sebastian Krahmer <krahmer@suse.de>
Signed-off-by: Colin Walters <walters@verbum.org>
---
diff --git a/configure.ac b/configure.ac
index 584df1d..67ea1a9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -583,9 +583,20 @@ AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
# Checks for library functions.
AC_FUNC_VPRINTF
AC_FUNC_ALLOCA
-AC_CHECK_FUNCS(mmap posix_memalign memalign valloc fsync pipe2)
+AC_CHECK_FUNCS(mmap posix_memalign memalign valloc fsync pipe2 issetugid)
AC_CHECK_FUNCS(atexit on_exit timegm gmtime_r)
+AC_CACHE_CHECK([for __libc_enable_secure], glib_cv_have_libc_enable_secure,
+ [AC_TRY_LINK([#include <unistd.h>
+ extern int __libc_enable_secure;],
+ [return __libc_enable_secure;],
+ glib_cv_have_libc_enable_secure=yes,
+ glib_cv_have_libc_enable_secure=no)])
+AS_IF([test x$glib_cv_have_libc_enable_secure = xyes], [
+ AC_DEFINE(HAVE_LIBC_ENABLE_SECURE, 1,
+ [Define if you have the __libc_enable_secure variable (GNU libc, eglibc)])
+])
+
AC_CHECK_SIZEOF(char)
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(long)
@@ -984,7 +995,7 @@ AC_MSG_RESULT(unsigned $glib_size_type)
# Check for some functions
AC_CHECK_FUNCS(lstat strerror strsignal memmove vsnprintf stpcpy strcasecmp strncasecmp poll getcwd vasprintf setenv unsetenv getc_unlocked readlink symlink fdwalk memmem)
-AC_CHECK_FUNCS(chown lchmod lchown fchmod fchown link utimes getgrgid getpwuid)
+AC_CHECK_FUNCS(chown lchmod lchown fchmod fchown link utimes getgrgid getpwuid getresuid)
AC_CHECK_FUNCS(getmntent_r setmntent endmntent hasmntopt getfsstat getvfsstat)
# Check for high-resolution sleep functions
AC_CHECK_FUNCS(splice)
diff --git a/gio/gdbusaddress.c b/gio/gdbusaddress.c
index 4aa13b9..96b6343 100644
--- a/gio/gdbusaddress.c
+++ b/gio/gdbusaddress.c
@@ -37,6 +37,7 @@
#include "giostream.h"
#include "gasyncresult.h"
#include "gsimpleasyncresult.h"
+#include "glib-private.h"
#include "gdbusprivate.h"
#include "giomodule-priv.h"
#include "gdbusdaemon.h"
@@ -1023,6 +1024,14 @@ get_session_address_dbus_launch (GError **error)
restore_dbus_verbose = FALSE;
old_dbus_verbose = NULL;
+ /* Don't run binaries as root if we're setuid. */
+ if (GLIB_PRIVATE_CALL (g_check_setuid) ())
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ _("Cannot spawn a message bus when setuid"));
+ goto out;
+ }
+
machine_id = _g_dbus_get_machine_id (error);
if (machine_id == NULL)
{
diff --git a/gio/gvfs.c b/gio/gvfs.c
index dda8afb..9afbcec 100644
--- a/gio/gvfs.c
+++ b/gio/gvfs.c
@@ -23,6 +23,7 @@
#include "config.h"
#include <string.h>
#include "gvfs.h"
+#include "glib-private.h"
#include "glocalvfs.h"
#include "gresourcefile.h"
#include "giomodule-priv.h"
@@ -191,6 +192,8 @@ g_vfs_parse_name (GVfs *vfs,
GVfs *
g_vfs_get_default (void)
{
+ if (GLIB_PRIVATE_CALL (g_check_setuid) ())
+ return g_vfs_get_local ();
return _g_io_module_get_default (G_VFS_EXTENSION_POINT_NAME,
"GIO_USE_VFS",
(GIOModuleVerifyFunc)g_vfs_is_active);
diff --git a/glib/genviron.c b/glib/genviron.c
index 59a8bbe..9525cf0 100644
--- a/glib/genviron.c
+++ b/glib/genviron.c
@@ -40,6 +40,7 @@
#include <windows.h>
#endif
+#include "glib-private.h"
#include "gmem.h"
#include "gmessages.h"
#include "gstrfuncs.h"
diff --git a/glib/glib-private.c b/glib/glib-private.c
index 3946e77..3506782 100644
--- a/glib/glib-private.c
+++ b/glib/glib-private.c
@@ -38,7 +38,9 @@ glib__private__ (void)
g_wakeup_signal,
g_wakeup_acknowledge,
- g_get_worker_context
+ g_get_worker_context,
+
+ g_check_setuid
};
return &table;
diff --git a/glib/glib-private.h b/glib/glib-private.h
index fde0be8..87da6f3 100644
--- a/glib/glib-private.h
+++ b/glib/glib-private.h
@@ -25,6 +25,8 @@
G_GNUC_INTERNAL
GMainContext * g_get_worker_context (void);
+G_GNUC_INTERNAL
+gboolean g_check_setuid (void);
#define GLIB_PRIVATE_CALL(symbol) (glib__private__()->symbol)
@@ -40,6 +42,8 @@ typedef struct {
/* See gmain.c */
GMainContext * (* g_get_worker_context) (void);
/* Add other private functions here, initialize them in glib-private.c */
+
+ gboolean (* g_check_setuid) (void);
} GLibPrivateVTable;
GLibPrivateVTable *glib__private__ (void);
diff --git a/glib/gutils.c b/glib/gutils.c
index 38b5e44..f8a38d1 100644
--- a/glib/gutils.c
+++ b/glib/gutils.c
@@ -2409,3 +2409,60 @@ g_get_tmp_dir (void)
}
#endif
+
+/* Private API:
+ *
+ * Returns %TRUE if the current process was executed as setuid (or an
+ * equivalent __libc_enable_secure is available). See:
+ * http://osdir.com/ml/linux.lfs.hardened/2007-04/msg00032.html
+ */
+gboolean
+g_check_setuid (void)
+{
+ /* TODO: get __libc_enable_secure exported from glibc.
+ * See http://www.openwall.com/lists/owl-dev/2012/08/14/1
+ */
+#if 0 && defined(HAVE_LIBC_ENABLE_SECURE)
+ {
+ /* See glibc/include/unistd.h */
+ extern int __libc_enable_secure;
+ return __libc_enable_secure;
+ }
+#elif defined(HAVE_ISSETUGID)
+ /* BSD: http://www.freebsd.org/cgi/man.cgi?query=issetugid&sektion=2 */
+ return issetugid ();
+#elif defined(G_OS_UNIX)
+ uid_t ruid, euid, suid; /* Real, effective and saved user ID's */
+ gid_t rgid, egid, sgid; /* Real, effective and saved group ID's */
+
+ static gsize check_setuid_initialised;
+ static gboolean is_setuid;
+
+ if (g_once_init_enter (&check_setuid_initialised))
+ {
+#ifdef HAVE_GETRESUID
+ /* These aren't in the header files, so we prototype them here.
+ */
+ int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid);
+ int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid);
+
+ if (getresuid (&ruid, &euid, &suid) != 0 ||
+ getresgid (&rgid, &egid, &sgid) != 0)
+#endif /* HAVE_GETRESUID */
+ {
+ suid = ruid = getuid ();
+ sgid = rgid = getgid ();
+ euid = geteuid ();
+ egid = getegid ();
+ }
+
+ is_setuid = (ruid != euid || ruid != suid ||
+ rgid != egid || rgid != sgid);
+
+ g_once_init_leave (&check_setuid_initialised, 1);
+ }
+ return is_setuid;
+#else
+ return FALSE;
+#endif
+}
--
cgit v0.9.0.2

View File

@ -1,27 +0,0 @@
From 6d032421b4871105e1f37bb75a5ec7b012f19f61 Mon Sep 17 00:00:00 2001
From: Alexandre Rostovtsev <tetromino@gentoo.org>
Date: Sun, 15 Jul 2012 22:30:07 -0400
Subject: [PATCH] gio: use /usr/share/bash-completion for bashcomp
In Gentoo, we use /usr/share/bash-completion, not
/usr/share/bash-completion/completions.
---
gio/Makefile.am | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/gio/Makefile.am b/gio/Makefile.am
index 704367c..bee9dc6 100644
--- a/gio/Makefile.am
+++ b/gio/Makefile.am
@@ -715,7 +715,7 @@ gdbus_LDADD = libgio-2.0.la \
$(top_builddir)/glib/libglib-2.0.la \
$(top_builddir)/gobject/libgobject-2.0.la
-completiondir = $(datadir)/bash-completion/completions
+completiondir = $(datadir)/bash-completion
completion_DATA = \
completion/gdbus \
completion/gsettings \
--
1.7.8.6

View File

@ -1,236 +0,0 @@
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-libs/glib/glib-2.32.4-r1.ebuild,v 1.6 2012/10/06 21:17:44 blueness Exp $
EAPI="4"
PYTHON_DEPEND="utils? 2"
# Avoid runtime dependency on python when USE=test
inherit autotools gnome.org libtool eutils flag-o-matic gnome2-utils multilib pax-utils python toolchain-funcs virtualx linux-info
DESCRIPTION="The GLib library of C routines"
HOMEPAGE="http://www.gtk.org/"
SRC_URI="${SRC_URI}
http://dev.gentoo.org/~tetromino/distfiles/glib/${P}-AS_IF-patches.tar.xz
http://pkgconfig.freedesktop.org/releases/pkg-config-0.26.tar.gz" # pkg.m4 for eautoreconf
LICENSE="LGPL-2+"
SLOT="2"
IUSE="debug doc fam kernel_linux selinux static-libs systemtap test utils xattr"
KEYWORDS="~alpha amd64 arm hppa ~ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh ~sparc x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~amd64-linux ~x86-linux"
RDEPEND="virtual/libiconv
virtual/libffi
sys-libs/zlib
|| (
>=dev-libs/elfutils-0.142
>=dev-libs/libelf-0.8.12 )
xattr? ( sys-apps/attr )
fam? ( virtual/fam )
utils? ( >=dev-util/gdbus-codegen-${PV} )"
DEPEND="${RDEPEND}
>=sys-devel/gettext-0.11
>=dev-util/gtk-doc-am-1.15
doc? (
>=dev-libs/libxslt-1.0
>=dev-util/gdbus-codegen-${PV}
>=dev-util/gtk-doc-1.15
~app-text/docbook-xml-dtd-4.1.2 )
systemtap? ( >=dev-util/systemtap-1.3 )
test? (
sys-devel/gdb
=dev-lang/python-2*
>=dev-util/gdbus-codegen-${PV}
>=sys-apps/dbus-1.2.14 )
!<dev-util/gtk-doc-1.15-r2"
PDEPEND="x11-misc/shared-mime-info
!<gnome-base/gvfs-1.6.4-r990"
# shared-mime-info needed for gio/xdgmime, bug #409481
# Earlier versions of gvfs do not work with glib
pkg_setup() {
# Needed for gio/tests/gdbus-testserver.py
if use test ; then
python_set_active_version 2
python_pkg_setup
fi
if use kernel_linux ; then
CONFIG_CHECK="~INOTIFY_USER"
linux-info_pkg_setup
fi
}
src_prepare() {
epatch "${FILESDIR}"/${P}-CVE-2012-3524.patch
mv -f "${WORKDIR}"/pkg-config-*/pkg.m4 "${WORKDIR}"/ || die
# Fix gmodule issues on fbsd; bug #184301
epatch "${FILESDIR}"/${PN}-2.12.12-fbsd.patch
# need to build tests if USE=doc for bug #387385
if ! use test && ! use doc; then
# don't waste time building tests
sed 's/^\(.*\SUBDIRS .*\=.*\)tests\(.*\)$/\1\2/' -i $(find . -name Makefile.am -o -name Makefile.in) || die
else
# Do not try to remove files on live filesystem, upstream bug #619274
sed 's:^\(.*"/desktop-app-info/delete".*\):/*\1*/:' \
-i "${S}"/gio/tests/desktop-app-info.c || die "sed failed"
# Disable tests requiring dev-util/desktop-file-utils when not installed, bug #286629
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 "/desktop-app-info\/default/d" gio/tests/desktop-app-info.c || die
sed -i -e "/desktop-app-info\/fallback/d" gio/tests/desktop-app-info.c || die
sed -i -e "/desktop-app-info\/lastused/d" gio/tests/desktop-app-info.c || die
fi
# Disable tests requiring dbus-python and pygobject; bugs #349236, #377549, #384853
if ! has_version dev-python/dbus-python || ! has_version 'dev-python/pygobject:2' ; then
ewarn "Some tests will be skipped due to dev-python/dbus-python or dev-python/pygobject:2"
ewarn "not being present on your system, think on installing them to get these tests run."
sed -i -e "/connection\/filter/d" gio/tests/gdbus-connection.c || die
sed -i -e "/connection\/large_message/d" gio/tests/gdbus-connection-slow.c || die
sed -i -e "/gdbus\/proxy/d" gio/tests/gdbus-proxy.c || die
sed -i -e "/gdbus\/proxy-well-known-name/d" gio/tests/gdbus-proxy-well-known-name.c || die
sed -i -e "/gdbus\/introspection-parser/d" gio/tests/gdbus-introspection.c || die
sed -i -e "/g_test_add_func/d" gio/tests/gdbus-threading.c || die
sed -i -e "/gdbus\/method-calls-in-thread/d" gio/tests/gdbus-threading.c || die
# needed to prevent gdbus-threading from asserting
ln -sfn $(type -P true) gio/tests/gdbus-testserver.py
fi
fi
# gdbus-codegen is a separate package
epatch "${FILESDIR}/${PN}-2.31.x-external-gdbus-codegen.patch"
# bashcomp goes in /usr/share/bash-completion
epatch "${FILESDIR}/${PN}-2.32.4-bashcomp.patch"
# AS_IF fixes from 2.33.x, needed for cross-compiling, bug #434770
epatch ../AS_IF-patches/*.patch
# disable pyc compiling
use test && python_clean_py-compile_files
# Needed for the punt-python-check patch, disabling timeout test
# Also needed to prevent croscompile failures, see bug #267603
# Also needed for the no-gdbus-codegen patch
AT_M4DIR="${WORKDIR}" eautoreconf
[[ ${CHOST} == *-freebsd* ]] && elibtoolize
epunt_cxx
}
src_configure() {
# 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"
fi
local myconf
# Building with --disable-debug highly unrecommended. It will build glib in
# an unusable form as it disables some commonly used API. Please do not
# convert this to the use_enable form, as it results in a broken build.
# -- compnerd (3/27/06)
use debug && myconf="--enable-debug"
# Always use internal libpcre, bug #254659
econf ${myconf} \
$(use_enable xattr) \
$(use_enable doc man) \
$(use_enable doc gtk-doc) \
$(use_enable fam) \
$(use_enable selinux) \
$(use_enable static-libs static) \
$(use_enable systemtap dtrace) \
$(use_enable systemtap systemtap) \
--with-pcre=internal \
--with-threads=posix
}
src_install() {
local f
# install-exec-hook substitutes ${PYTHON} in glib/gtester-report
emake DESTDIR="${D}" PYTHON="${EPREFIX}/usr/bin/python2" install
if ! use utils; then
rm "${ED}usr/bin/gtester-report"
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/"
dodoc AUTHORS ChangeLog* NEWS* README
# Completely useless with or without USE static-libs, people need to use
# pkg-config
find "${D}" -name '*.la' -exec rm -f {} +
}
src_test() {
gnome2_environment_reset
unset DBUS_SESSION_BUS_ADDRESS
export XDG_CONFIG_DIRS=/etc/xdg
export XDG_DATA_DIRS=/usr/local/share:/usr/share
export G_DBUS_COOKIE_SHA1_KEYRING_DIR="${T}/temp"
unset GSETTINGS_BACKEND # bug 352451
export LC_TIME=C # bug #411967
# 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 "${S}"/tests/.libs/assert-msg-test \
|| die "Hardened adjustment failed"
fi
# Need X for dbus-launch session X11 initialization
Xemake check
}
pkg_preinst() {
# Only give the introspection message if:
# * The user has gobject-introspection
# * Has glib already installed
# * Previous version was different from new version
if has_version "dev-libs/gobject-introspection" && ! has_version "=${CATEGORY}/${PF}"; then
ewarn "You must rebuild gobject-introspection so that the installed"
ewarn "typelibs and girs are regenerated for the new APIs in glib"
fi
}
pkg_postinst() {
# Inform users about possible breakage when updating glib and not dbus-glib, bug #297483
if has_version dev-libs/dbus-glib; then
ewarn "If you experience a breakage after updating dev-libs/glib try"
ewarn "rebuilding dev-libs/dbus-glib"
fi
if has_version '<x11-libs/gtk+-3.0.12:3'; then
# To have a clear upgrade path for gtk+-3.0.x users, have to resort to
# a warning instead of a blocker
ewarn
ewarn "Using <gtk+-3.0.12:3 with ${P} results in frequent crashes."
ewarn "You should upgrade to a newer version of gtk+:3 immediately."
fi
}