# Copyright 1999-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/x11-libs/gtk+/gtk+-2.24.10-r1.ebuild,v 1.5 2012/04/19 20:45:30 ranger Exp $ EAPI="4" inherit eutils flag-o-matic gnome.org libtool virtualx autotools DESCRIPTION="Gimp ToolKit +" HOMEPAGE="http://www.gtk.org/" SRC_URI="${SRC_URI} mirror://gentoo/introspection.m4.bz2" LICENSE="LGPL-2" SLOT="2" KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ppc64 ~sh ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" IUSE="aqua cups debug doc examples +introspection test vim-syntax xinerama" # NOTE: cairo[svg] dep is due to bug 291283 (not patched to avoid eautoreconf) COMMON_DEPEND="!aqua? ( x11-libs/libXrender x11-libs/libX11 x11-libs/libXi x11-libs/libXt x11-libs/libXext >=x11-libs/libXrandr-1.3 x11-libs/libXcursor x11-libs/libXfixes x11-libs/libXcomposite x11-libs/libXdamage >=x11-libs/cairo-1.6[X,svg] x11-libs/gdk-pixbuf:2[X,introspection?] ) aqua? ( >=x11-libs/cairo-1.6[aqua,svg] x11-libs/gdk-pixbuf:2[introspection?] ) xinerama? ( x11-libs/libXinerama ) >=dev-libs/glib-2.27.3:2 >=x11-libs/pango-1.20[introspection?] >=dev-libs/atk-1.29.2[introspection?] media-libs/fontconfig x11-misc/shared-mime-info cups? ( net-print/cups ) introspection? ( >=dev-libs/gobject-introspection-0.9.3 ) !=vte-0.28.2-r201:0 is stable RDEPEND="${COMMON_DEPEND} ! ${gtk_conf}" mkdir -p "${gtk_conf_dir}" local tmp_file=$(mktemp -t tmp.XXXXXXXXXXgtk_query_immodules) if [ -z "${tmp_file}" ]; then ewarn "gtk_query_immodules: cannot create temporary file" return 1 fi if gtk-query-immodules-2.0 > "${tmp_file}"; then cat "${tmp_file}" > "${gtk_conf}" || \ ewarn "Failed to write to ${gtk_conf}" else ewarn "Cannot update gtk.immodules, file generation failed" fi rm "${tmp_file}" } src_prepare() { # use an arch-specific config directory so that 32bit and 64bit versions # dont clash on multilib systems epatch "${FILESDIR}/${PN}-2.21.3-multilib.patch" # Don't break inclusion of gtkclist.h, upstream bug 536767 epatch "${FILESDIR}/${PN}-2.14.3-limit-gtksignal-includes.patch" # fix building with gir #372953, upstream bug #642085 epatch "${FILESDIR}"/${PN}-2.24.7-darwin-quartz-introspection.patch # marshalers code was pre-generated with glib-2.31, upstream bug #671763 rm -v gdk/gdkmarshalers.c gtk/gtkmarshal.c gtk/gtkmarshalers.c \ perf/marshalers.c || die # Stop trying to build unmaintained docs, bug #349754 strip_builddir SUBDIRS tutorial docs/Makefile.am docs/Makefile.in strip_builddir SUBDIRS faq docs/Makefile.am docs/Makefile.in # -O3 and company cause random crashes in applications. Bug #133469 replace-flags -O3 -O2 strip-flags use ppc64 && append-flags -mminimal-toc if ! use test; then # don't waste time building tests strip_builddir SRC_SUBDIRS tests Makefile.{am,in} strip_builddir SUBDIRS tests gdk/Makefile.{am,in} gtk/Makefile.{am,in} else # Non-working test in gentoo's env sed 's:\(g_test_add_func ("/ui-tests/keys-events.*\):/*\1*/:g' \ -i gtk/tests/testing.c || die "sed 1 failed" # Cannot work because glib is too clever to find real user's home # gentoo bug #285687, upstream bug #639832 # XXX: /!\ Pay extra attention to second sed when bumping /!\ sed '/TEST_PROGS.*recentmanager/d' -i gtk/tests/Makefile.am \ || die "failed to disable recentmanager test (1)" sed '/^TEST_PROGS =/,+3 s/recentmanager//' -i gtk/tests/Makefile.in \ || die "failed to disable recentmanager test (2)" sed 's:\({ "GtkFileChooserButton".*},\):/*\1*/:g' -i gtk/tests/object.c \ || die "failed to disable recentmanager test (3)" # Skip tests known to fail # https://bugzilla.gnome.org/show_bug.cgi?id=646609 sed -e '/g_test_add_func.*test_text_access/s:^://:' \ -i "${S}/gtk/tests/testing.c" || die # https://bugzilla.gnome.org/show_bug.cgi?id=617473 sed -i -e 's:pltcheck.sh:$(NULL):g' \ gtk/Makefile.am || die fi if ! use examples; then # don't waste time building demos strip_builddir SRC_SUBDIRS demos Makefile.am Makefile.in fi # http://bugs.gentoo.org/show_bug.cgi?id=371907 mkdir -p "${S}/m4" || die mv "${WORKDIR}/introspection.m4" "${S}/m4macros" || die AT_M4DIR=m4macros eautoreconf # Use elibtoolize in place of eautoreconf when it will be dropped #elibtoolize } src_configure() { local myconf="$(use_enable doc gtk-doc) $(use_enable xinerama) $(use_enable cups cups auto) $(use_enable introspection) --disable-papi" if use aqua; then myconf="${myconf} --with-gdktarget=quartz" else myconf="${myconf} --with-gdktarget=x11 --with-xinput" fi # Passing --disable-debug is not recommended for production use use debug && myconf="${myconf} --enable-debug=yes" econf ${myconf} } src_test() { unset DBUS_SESSION_BUS_ADDRESS # Exporting HOME fixes tests using XDG directories spec since all defaults # are based on $HOME. It is also backward compatible with functions not # yet ported to this spec. XDG_DATA_HOME="${T}" HOME="${T}" Xemake check || die "tests failed" } src_install() { emake DESTDIR="${D}" install set_gtk2_confdir dodir ${GTK2_CONFDIR} keepdir ${GTK2_CONFDIR} # see bug #133241 echo 'gtk-fallback-icon-theme = "gnome"' > "${T}/gtkrc" insinto /etc/gtk-2.0 doins "${T}"/gtkrc # Enable xft in environment as suggested by echo "GDK_USE_XFT=1" > "${T}"/50gtk2 doenvd "${T}"/50gtk2 dodoc AUTHORS ChangeLog* HACKING NEWS* README* # add -framework Carbon to the .pc files use aqua && for i in gtk+-2.0.pc gtk+-quartz-2.0.pc gtk+-unix-print-2.0.pc; do sed -i -e "s:Libs\: :Libs\: -framework Carbon :" "${ED%/}"/usr/lib/pkgconfig/$i || die "sed failed" done # dev-util/gtk-builder-convert split off into a separate package, #402905 rm "${ED}"usr/bin/gtk-builder-convert find "${D}" -name '*.la' -exec rm -f {} + } pkg_postinst() { set_gtk2_confdir # gtk.immodules should be in their CHOST directories respectively. gtk_query_immodules_2 "${EROOT%/}${GTK2_CONFDIR}/gtk.immodules" if [ -e "${EROOT%/}/etc/gtk-2.0/gtk.immodules" ]; then elog "File /etc/gtk-2.0/gtk.immodules has been moved to \$CHOST" elog "aware location. Removing deprecated file." rm -f ${EROOT%/}/etc/gtk-2.0/gtk.immodules fi # pixbufs are now handled by x11-libs/gdk-pixbuf if [ -e "${EROOT%/}${GTK2_CONFDIR}/gdk-pixbuf.loaders" ]; then elog "File ${EROOT%/}${GTK2_CONFDIR}/gdk-pixbuf.loaders is now handled by x11-libs/gdk-pixbuf" elog "Removing deprecated file." rm -f ${EROOT%/}${GTK2_CONFDIR}/gdk-pixbuf.loaders fi # two checks needed since we dropped multilib conditional if [ -e "${EROOT%/}/etc/gtk-2.0/gdk-pixbuf.loaders" ]; then elog "File ${EROOT%/}/etc/gtk-2.0/gdk-pixbuf.loaders is now handled by x11-libs/gdk-pixbuf" elog "Removing deprecated file." rm -f ${EROOT%/}/etc/gtk-2.0/gdk-pixbuf.loaders fi if [ -e "${EROOT%/}"/usr/lib/gtk-2.0/2.[^1]* ]; then elog "You need to rebuild ebuilds that installed into" "${EROOT%/}"/usr/lib/gtk-2.0/2.[^1]* elog "to do that you can use qfile from portage-utils:" elog "emerge -va1 \$(qfile -qC ${EPREFIX}/usr/lib/gtk-2.0/2.[^1]*)" fi if ! has_version "app-text/evince"; then elog "Please install app-text/evince for print preview functionality." elog "Alternatively, check \"gtk-print-preview-command\" documentation and" elog "add it to your gtkrc." fi }