diff options
9 files changed, 339 insertions, 0 deletions
diff --git a/dev-libs/glib/Manifest b/dev-libs/glib/Manifest new file mode 100644 index 00000000..6f52a42c --- /dev/null +++ b/dev-libs/glib/Manifest @@ -0,0 +1,9 @@ +AUX glib-2.10.3-ia64-atomic-ops.patch 1058 RMD160 066e63a99739dc412fbed7f773118323f53ea774 SHA1 13c22e2f75a77e9e0546e495fd28015ddcb8bade SHA256 ad9cad6793626b4e36a59aa6cb839607847aa57ebc37592fd1e273ccd23a53c8 +AUX glib-2.12.12-fbsd.patch 668 RMD160 d8bf399b7e0b417c4622b278282086418c1d3363 SHA1 b7a0f4d67083f2c9b4bbecd84a6d597dd0f0f9ed SHA256 23b0dc406d3d45fe125268b731af67147e83f6e38a63c7892828bdbfe1c31e8d +AUX glib-2.18.1-workaround-gio-test-failure-without-userpriv.patch 616 RMD160 dd06abe9298d6e3e4d3eda0d5d155f1545dfd1aa SHA1 92164aa1b29f49cf62fc366231f2046b8b3def52 SHA256 e64ad4fbd67f142f5a19b29eab323bf18856309ed064e7a9f838b6c1c38a8adb +AUX glib-2.18.4-BJA-strfuncs-std99-Makefile.am.diff 324 RMD160 e39d33bc8cd325ae93361a2056ef7c1722837930 SHA1 af9a64829d3bdc909cb4b742bdd089454d08b1f7 SHA256 a009f5a5784dbd9baf568c2412304db02ddf2747a2de1a881a9d390ec205c877 +AUX glib-2.18.4-BJA-strfuncs-std99-Makefile.in.diff 4101 RMD160 413920a8bfd61ec6f1a2e15315a1466331142e42 SHA1 c3ae67fbc2aab0026febf6502261419f575261b9 SHA256 360e5fa05eabb6c74b2f671f3a079a41d25dfc3e158252ae57c3356bef8ab504 +AUX glib-2.6.3-testglib-ssp.patch 344 RMD160 6709acf85c52e39553e2e5ee93637f7e9cc7eca6 SHA1 403b249a460a9700669e754a562fb6974f3d6898 SHA256 c2ece3d7b4533e3bfbe8100df5d0824176d9dfa0b18697a8919162956c8ebfa8 +AUX glib2-CVE-2008-4316.patch 2692 RMD160 3143c4df4f1063f8177a545d8cb5678a68c2980f SHA1 f89222a8f09e4e841480bbfbd4defd1e3d402e91 SHA256 c249ef6513c2490e9efe836e9d41a4a5f1056979748e2535b8ec7d13a71b1bf0 +DIST glib-2.18.4.tar.bz2 4809051 RMD160 c47a71708fd13ade70d72d3443799d3e74a0459d SHA1 3e21395c6980e3970d5260b46ecb6b87f2482c61 SHA256 6aeb2c845e9fdc388943acdaba2f6357e3007c5ffaa8d666904679cfb40de100 +EBUILD glib-2.18.4-r1.ebuild 2616 RMD160 0899cdc54d8d7b3301762032a3ea0982cae44acb SHA1 033541786c43ec95aaf4984507c34afbfee761d0 SHA256 d273f0d02f14f5cab443d23465a746d96c0df79a32599a60483a1534aeacb14e diff --git a/dev-libs/glib/files/glib-2.10.3-ia64-atomic-ops.patch b/dev-libs/glib/files/glib-2.10.3-ia64-atomic-ops.patch new file mode 100644 index 00000000..0859e331 --- /dev/null +++ b/dev-libs/glib/files/glib-2.10.3-ia64-atomic-ops.patch @@ -0,0 +1,39 @@ +From Debian, this one is needed for gcc < 4.1... + +--- glib-2.10.0/glib/gatomic.c 2006-02-24 14:02:51.000000000 +0000 ++++ glib-2.10.0/glib/gatomic.c 2006-03-06 18:12:06.000000000 +0000 +@@ -414,14 +414,14 @@ + g_atomic_int_exchange_and_add (volatile gint *atomic, + gint val) + { +- return __sync_fetch_and_add (atomic, val); ++ return __sync_fetch_and_add_si (atomic, val); + } + + void + g_atomic_int_add (volatile gint *atomic, + gint val) + { +- __sync_fetch_and_add (atomic, val); ++ __sync_fetch_and_add_si (atomic, val); + } + + gboolean +@@ -429,7 +429,7 @@ + gint oldval, + gint newval) + { +- return __sync_bool_compare_and_swap (atomic, oldval, newval); ++ return __sync_bool_compare_and_swap_si (atomic, oldval, newval); + } + + gboolean +@@ -437,7 +437,7 @@ + gpointer oldval, + gpointer newval) + { +- return __sync_bool_compare_and_swap ((long *)atomic, ++ return __sync_bool_compare_and_swap_di ((long *)atomic, + (long)oldval, (long)newval); + } + diff --git a/dev-libs/glib/files/glib-2.12.12-fbsd.patch b/dev-libs/glib/files/glib-2.12.12-fbsd.patch new file mode 100644 index 00000000..bba63296 --- /dev/null +++ b/dev-libs/glib/files/glib-2.12.12-fbsd.patch @@ -0,0 +1,21 @@ +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 diff --git a/dev-libs/glib/files/glib-2.18.1-workaround-gio-test-failure-without-userpriv.patch b/dev-libs/glib/files/glib-2.18.1-workaround-gio-test-failure-without-userpriv.patch new file mode 100644 index 00000000..cabe56f5 --- /dev/null +++ b/dev-libs/glib/files/glib-2.18.1-workaround-gio-test-failure-without-userpriv.patch @@ -0,0 +1,20 @@ +Temporary workaround for gio tests failure when ran without FEATURES=userpriv +until upstream bug #552912 is fixed + +--- gio/tests/live-g-file.c.orig 2008-09-25 05:44:12.848556034 +0300 ++++ gio/tests/live-g-file.c 2008-09-25 06:12:34.248726237 +0300 +@@ -769,11 +769,14 @@ + if (posix_compat) + { + /* target directory is not accessible (no execute flag) */ ++#if 0 ++/* Fails when ran as root */ + do_copy_move (root, item, TEST_DIR_NO_ACCESS, + TEST_NO_ACCESS); + /* target directory is readonly */ + do_copy_move (root, item, TEST_DIR_NO_WRITE, + TEST_NO_ACCESS); ++#endif + } + } + } diff --git a/dev-libs/glib/files/glib-2.18.4-BJA-strfuncs-std99-Makefile.am.diff b/dev-libs/glib/files/glib-2.18.4-BJA-strfuncs-std99-Makefile.am.diff new file mode 100644 index 00000000..d16798dd --- /dev/null +++ b/dev-libs/glib/files/glib-2.18.4-BJA-strfuncs-std99-Makefile.am.diff @@ -0,0 +1,10 @@ +--- glib/tests/Makefile.am.ori 2009-05-04 16:33:35.000000000 +0200 ++++ glib/tests/Makefile.am 2009-05-04 17:23:20.000000000 +0200 +@@ -32,6 +32,7 @@ + + TEST_PROGS += strfuncs + strfuncs_SOURCES = strfuncs.c ++strfuncs_CPPFLAGS = -D_ISOC99_SOURCE + strfuncs_LDADD = $(progs_ldadd) -lm + + TEST_PROGS += string diff --git a/dev-libs/glib/files/glib-2.18.4-BJA-strfuncs-std99-Makefile.in.diff b/dev-libs/glib/files/glib-2.18.4-BJA-strfuncs-std99-Makefile.in.diff new file mode 100644 index 00000000..5ec741af --- /dev/null +++ b/dev-libs/glib/files/glib-2.18.4-BJA-strfuncs-std99-Makefile.in.diff @@ -0,0 +1,75 @@ +--- glib/tests/Makefile.in.ori 2009-05-04 17:30:55.000000000 +0200 ++++ glib/tests/Makefile.in 2009-05-04 17:34:23.000000000 +0200 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.10.1 from Makefile.am. ++# Makefile.in generated by automake 1.10.2 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -76,7 +76,7 @@ + am_rand_OBJECTS = rand.$(OBJEXT) + rand_OBJECTS = $(am_rand_OBJECTS) + rand_DEPENDENCIES = $(progs_ldadd) +-am_strfuncs_OBJECTS = strfuncs.$(OBJEXT) ++am_strfuncs_OBJECTS = strfuncs-strfuncs.$(OBJEXT) + strfuncs_OBJECTS = $(am_strfuncs_OBJECTS) + strfuncs_DEPENDENCIES = $(progs_ldadd) + am_string_OBJECTS = string.$(OBJEXT) +@@ -336,6 +336,7 @@ + rand_SOURCES = rand.c + rand_LDADD = $(progs_ldadd) -lm + strfuncs_SOURCES = strfuncs.c ++strfuncs_CPPFLAGS = -D_ISOC99_SOURCE + strfuncs_LDADD = $(progs_ldadd) -lm + string_SOURCES = string.c + string_LDADD = $(progs_ldadd) -lm +@@ -355,8 +356,8 @@ + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +- && exit 0; \ ++ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ ++ && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ +@@ -431,7 +432,7 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/option-context.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printf.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rand.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strfuncs.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strfuncs-strfuncs.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/string.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testing.Po@am__quote@ + +@@ -456,6 +457,20 @@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + ++strfuncs-strfuncs.o: strfuncs.c ++@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strfuncs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT strfuncs-strfuncs.o -MD -MP -MF $(DEPDIR)/strfuncs-strfuncs.Tpo -c -o strfuncs-strfuncs.o `test -f 'strfuncs.c' || echo '$(srcdir)/'`strfuncs.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/strfuncs-strfuncs.Tpo $(DEPDIR)/strfuncs-strfuncs.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='strfuncs.c' object='strfuncs-strfuncs.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strfuncs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strfuncs-strfuncs.o `test -f 'strfuncs.c' || echo '$(srcdir)/'`strfuncs.c ++ ++strfuncs-strfuncs.obj: strfuncs.c ++@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strfuncs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT strfuncs-strfuncs.obj -MD -MP -MF $(DEPDIR)/strfuncs-strfuncs.Tpo -c -o strfuncs-strfuncs.obj `if test -f 'strfuncs.c'; then $(CYGPATH_W) 'strfuncs.c'; else $(CYGPATH_W) '$(srcdir)/strfuncs.c'; fi` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/strfuncs-strfuncs.Tpo $(DEPDIR)/strfuncs-strfuncs.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='strfuncs.c' object='strfuncs-strfuncs.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strfuncs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strfuncs-strfuncs.obj `if test -f 'strfuncs.c'; then $(CYGPATH_W) 'strfuncs.c'; else $(CYGPATH_W) '$(srcdir)/strfuncs.c'; fi` ++ + mostlyclean-libtool: + -rm -f *.lo + +@@ -467,7 +482,7 @@ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ +- $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique + tags: TAGS diff --git a/dev-libs/glib/files/glib-2.6.3-testglib-ssp.patch b/dev-libs/glib/files/glib-2.6.3-testglib-ssp.patch new file mode 100644 index 00000000..9b104dd5 --- /dev/null +++ b/dev-libs/glib/files/glib-2.6.3-testglib-ssp.patch @@ -0,0 +1,11 @@ +--- tests/Makefile.in.orig 2005-04-07 01:05:39.000000000 +0000 ++++ tests/Makefile.in 2005-04-07 01:09:02.000000000 +0000 +@@ -50,7 +50,7 @@ + CATOBJEXT = @CATOBJEXT@ + CC = @CC@ + CCDEPMODE = @CCDEPMODE@ +-CFLAGS = @CFLAGS@ ++CFLAGS = @CFLAGS@ -fno-stack-protector + CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ + CROSS_COMPILING_FALSE = @CROSS_COMPILING_FALSE@ diff --git a/dev-libs/glib/files/glib2-CVE-2008-4316.patch b/dev-libs/glib/files/glib2-CVE-2008-4316.patch new file mode 100644 index 00000000..758a01b2 --- /dev/null +++ b/dev-libs/glib/files/glib2-CVE-2008-4316.patch @@ -0,0 +1,62 @@ +--- glib/gbase64.c.orig 2008-12-04 12:07:21.000000000 +0100 ++++ glib/gbase64.c 2009-01-12 14:08:31.000000000 +0100 +@@ -54,8 +54,9 @@ static const char base64_alphabet[] = + * + * The output buffer must be large enough to fit all the data that will + * be written to it. Due to the way base64 encodes you will need +- * at least: @len * 4 / 3 + 6 bytes. If you enable line-breaking you will +- * need at least: @len * 4 / 3 + @len * 4 / (3 * 72) + 7 bytes. ++ * at least: (@len / 3 + 1) * 4 + 4 bytes (+ 4 may be needed in case of ++ * non-zero state). If you enable line-breaking you will need at least: ++ * ((@len / 3 + 1) * 4 + 4) / 72 + 1 bytes of extra space. + * + * @break_lines is typically used when putting base64-encoded data in emails. + * It breaks the lines at 72 columns instead of putting all of the text on +@@ -233,8 +234,14 @@ g_base64_encode (const guchar *data, + g_return_val_if_fail (data != NULL, NULL); + g_return_val_if_fail (len > 0, NULL); + +- /* We can use a smaller limit here, since we know the saved state is 0 */ +- out = g_malloc (len * 4 / 3 + 4); ++ /* We can use a smaller limit here, since we know the saved state is 0, ++ +1 is needed for trailing \0, also check for unlikely integer overflow */ ++ if (len >= ((G_MAXSIZE - 1) / 4 - 1) * 3) ++ g_error("%s: input too large for Base64 encoding (%"G_GSIZE_FORMAT" chars)", ++ G_STRLOC, len); ++ ++ out = g_malloc ((len / 3 + 1) * 4 + 1); ++ + outlen = g_base64_encode_step (data, len, FALSE, out, &state, &save); + outlen += g_base64_encode_close (FALSE, out + outlen, &state, &save); + out[outlen] = '\0'; +@@ -275,7 +282,8 @@ static const unsigned char mime_base64_r + * + * The output buffer must be large enough to fit all the data that will + * be written to it. Since base64 encodes 3 bytes in 4 chars you need +- * at least: @len * 3 / 4 bytes. ++ * at least: (@len / 4) * 3 + 3 bytes (+ 3 may be needed in case of non-zero ++ * state). + * + * Return value: The number of bytes of output that was written + * +@@ -358,7 +366,8 @@ g_base64_decode (const gchar *text, + gsize *out_len) + { + guchar *ret; +- gint input_length, state = 0; ++ gsize input_length; ++ gint state = 0; + guint save = 0; + + g_return_val_if_fail (text != NULL, NULL); +@@ -368,7 +377,9 @@ g_base64_decode (const gchar *text, + + g_return_val_if_fail (input_length > 1, NULL); + +- ret = g_malloc0 (input_length * 3 / 4); ++ /* We can use a smaller limit here, since we know the saved state is 0, ++ +1 used to avoid calling g_malloc0(0), and hence retruning NULL */ ++ ret = g_malloc0 ((input_length / 4) * 3 + 1); + + *out_len = g_base64_decode_step (text, input_length, ret, &state, &save); + diff --git a/dev-libs/glib/glib-2.18.4-r1.ebuild b/dev-libs/glib/glib-2.18.4-r1.ebuild new file mode 100644 index 00000000..51a10654 --- /dev/null +++ b/dev-libs/glib/glib-2.18.4-r1.ebuild @@ -0,0 +1,92 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-libs/glib/glib-2.18.4-r1.ebuild,v 1.9 2009/04/27 13:07:11 jer Exp $ + +inherit gnome.org libtool eutils flag-o-matic + +DESCRIPTION="The GLib library of C routines" +HOMEPAGE="http://www.gtk.org/" + +LICENSE="LGPL-2" +SLOT="2" +KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc ~sparc-fbsd x86 ~x86-fbsd" +IUSE="debug doc fam hardened selinux xattr" + +RDEPEND="virtual/libc + virtual/libiconv + xattr? ( sys-apps/attr ) + fam? ( virtual/fam )" +DEPEND="${RDEPEND} + >=dev-util/pkgconfig-0.16 + >=sys-devel/gettext-0.11 + doc? ( + >=dev-libs/libxslt-1.0 + >=dev-util/gtk-doc-1.8 + ~app-text/docbook-xml-dtd-4.1.2 + )" + +src_unpack() { + unpack ${A} + cd "${S}" + + if use ppc64 && use hardened ; then + replace-flags -O[2-3] -O1 + epatch "${FILESDIR}/glib-2.6.3-testglib-ssp.patch" + fi + + if use ia64 ; then + # Only apply for < 4.1 + local major=$(gcc-major-version) + local minor=$(gcc-minor-version) + if (( major < 4 || ( major == 4 && minor == 0 ) )); then + epatch "${FILESDIR}/glib-2.10.3-ia64-atomic-ops.patch" + fi + fi + + # Don't fail gio tests when ran without userpriv, upstream bug 552912 + # This is only a temporary workaround, remove as soon as possible + epatch "${FILESDIR}/${PN}-2.18.1-workaround-gio-test-failure-without-userpriv.patch" + + # Fix gmodule issues on fbsd; bug #184301 + epatch "${FILESDIR}"/${PN}-2.12.12-fbsd.patch + + # Fix g_base64 overruns. bug #249214 + epatch "${FILESDIR}"/glib2-CVE-2008-4316.patch + + epatch "${FILESDIR}"/${P}-BJA-strfuncs-std99-Makefile.in.diff + + [[ ${CHOST} == *-freebsd* ]] && elibtoolize +} + +src_compile() { + local myconf + + epunt_cxx + + # 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 build static libs, see #153807 + econf ${myconf} \ + $(use_enable xattr) \ + $(use_enable doc man) \ + $(use_enable doc gtk-doc) \ + $(use_enable fam) \ + $(use_enable selinux) \ + --enable-static \ + --with-threads=posix || die "configure failed" + + emake || die "make failed" +} + +src_install() { + emake DESTDIR="${D}" install || die "Installation failed" + + # Do not install charset.alias even if generated, leave it to libiconv + rm -f "${D}/usr/lib/charset.alias" + + dodoc AUTHORS ChangeLog* NEWS* README +} |