##
## gtk2.spec -- OpenPKG RPM Package Specification
## Copyright (c) 2000-2005 OpenPKG Foundation e.V.
## Copyright (c) 2000-2005 Ralf S. Engelschall
##
## Permission to use, copy, modify, and distribute this software for
## any purpose with or without fee is hereby granted, provided that
## the above copyright notice and this permission notice appear in all
## copies.
##
## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
## SUCH DAMAGE.
##
# package version
%define V_gtk 2.8.6
%define V_gtk_major 2.8
%define V_glib_major 2.8
%define V_pango_major 1.10
%define V_atk_major 1.10
# package information
Name: gtk2
Summary: The Gtk Toolkit Library (%{V_gtk_major})
URL: http://www.gtk.org/
Vendor: The Gtk Project
Packager: OpenPKG
Distribution: OpenPKG
Class: PLUS
Group: XWindow
License: GPL
Version: %{V_gtk}
Release: 20051006
# list of sources
Source0: ftp://ftp.gtk.org/pub/gtk/v%{V_gtk_major}/gtk+-%{V_gtk}.tar.gz
Patch0: gtk2.patch
# build information
Prefix: %{l_prefix}
BuildRoot: %{l_buildroot}
BuildPreReq: OpenPKG, openpkg >= 20040130, make, pkgconfig
PreReq: OpenPKG, openpkg >= 20040130
BuildPreReq: X11, png, jpeg, tiff, gettext
PreReq: X11, png, jpeg, tiff, gettext
BuildPreReq: glib2 >= %{V_glib_major}, pango >= %{V_pango_major}, atk >= %{V_atk_major}
PreReq: glib2 >= %{V_glib_major}, pango >= %{V_pango_major}, atk >= %{V_atk_major}
AutoReq: no
AutoReqProv: no
%description
Gtk+ is a multi-platform toolkit for creating graphical user
interfaces. Offering a complete set of widgets, Gtk+ is suitable for
projects ranging from small one-off projects to complete application
suites.
%track
prog gtk2 = {
version = %{version}
url = ftp://ftp.gtk.org/pub/gtk/
regex = (v2\.[2468])
url = ftp://ftp.gtk.org/pub/gtk/__NEWVER__/
regex = gtk\+-(__VER__)\.tar\.(gz|bz2)
}
%prep
%setup -q -n gtk+-%{version}
%patch -p0
# avoid including static libraries into convenience libraries
%{l_shtool} subst \
-e 's;^LIBS =.*;LIBS =;' \
gdk-pixbuf/Makefile.in \
gdk-pixbuf/pixops/Makefile.in \
gtk/xdgmime/Makefile.in \
gdk/x11/Makefile.in
# avoid searching for shared libraries
%{l_shtool} subst \
-e 's;echo eval echo \\\$export_dynamic_flag_spec;;g' \
-e 's;^\(LIBS="-lintl\)\ *\($LIBS"\);\1 -liconv \2;g' \
configure
# build binaries from static libraries
%{l_shtool} subst \
-e 's;\(gtk_demo_LDFLAGS *=\);\1 -static;' \
demos/gtk-demo/Makefile.in
%{l_shtool} subst \
-e 's;\(gtk_query_immodules_2_0_LDFLAGS *=\);\1 -static;' \
-e 's;^\(gtk_query_immodules_2_0_LDADD *=.*\);\1 -lpangoft2;' \
gtk/Makefile.in
%{l_shtool} subst \
-e 's;\(gdk_pixbuf_csource_LDFLAGS *=\);\1 -static;' \
-e 's;\(gdk_pixbuf_csource_LDADD .*\);\1 -lintl;' \
-e 's;\(gdk_pixbuf_query_loaders_LDFLAGS *=\);\1 -static;' \
-e 's;\(gdk_pixbuf_query_loaders_LDADD .*\);\1 -lintl;' \
gdk-pixbuf/Makefile.in
# remove version from paths
%{l_shtool} subst \
-e 's;/gtk-2\.0;/gtk2;g' \
-e 's;lib\(g[-_a-z]*\)-2\.0;lib\12;g' \
-e 's;/@PACKAGE@;;g' \
-e 's;-\$(GTK_API_VERSION);2;g' \
-e 's;/\$(GTK_BINARY_VERSION);;g' \
`find . -name Makefile.in -print`
%{l_shtool} subst \
-e 's;/gtk-2\.0;/gtk2;g' \
-e 's;-l\(g[-_a-z]*\)-@GTK_API_VERSION@;-l\12;g' \
-e 's;-l\(g[-_a-z]*\)-\${target}-@GTK_API_VERSION@;-l\12;g' \
-e 's;\(@GDK_EXTRA_LIBS@\);@X_LIBS@ \1;' \
-e 's;\(@GDK_EXTRA_CFLAGS@\);@X_CFLAGS@ \1;' \
*-2.0.pc.in
%{l_shtool} subst \
-e 's;gtk-2.0;gtk2;g' \
gtk/gtkrc.c
# adjust path to locale and doc files
%{l_shtool} subst \
-e 's;\${libdir}/locale;\${datadir}/locale;' \
-e 's;/gtk-doc/html;/gtk2/html;g' \
configure
%{l_shtool} subst \
-e 's;\$(libdir)/locale;\$(datadir)/locale;' \
po/Makefile.in.in
%build
# set x11 paths
xinc=`%{l_rc} --query x11_incdir`
xlib=`%{l_rc} --query x11_libdir`
# configure package
CC="%{l_cc}" \
CFLAGS="%{l_cflags -O}" \
CPPFLAGS="%{l_cppflags tiff} -I$xinc" \
LDFLAGS="%{l_ldflags}" \
./configure \
--prefix=%{l_prefix} \
--with-x \
--x-includes=$xinc \
--x-libraries=$xlib \
--with-glib-prefix=%{l_prefix} \
--with-libpng=%{l_prefix} \
--with-libjpeg=%{l_prefix} \
--with-libtiff=%{l_prefix} \
--disable-modules \
--with-included-loaders=yes \
--enable-nls \
--with-native-locale=no \
--enable-shm \
--disable-debug \
--disable-rebuilds \
--enable-shared \
--enable-static
# create a libtool for building without shared libs
cp -fp libtool libtool_noshared
%{l_shtool} subst \
-e 's;\(build_libtool_libs\)=yes;\1=no;g' \
libtool_noshared
# build libgtk-x11-2.0, libgdk_pixbuf2, and libgdk-x11-2.0 only statically
%{l_shtool} subst \
-e 's;^LIBTOOL = \(.*\)libtool;LIBTOOL = \1libtool_noshared;' \
gdk-pixbuf/Makefile.in \
gdk-pixbuf/Makefile \
gdk/Makefile.in \
gdk/Makefile \
gtk/Makefile.in \
gtk/Makefile
# build package
%{l_make} %{l_mflags}
%install
# install package
rm -rf $RPM_BUILD_ROOT
%{l_shtool} mkdir -f -p -m 755 \
$RPM_BUILD_ROOT%{l_prefix}/etc/gtk2
%{l_make} %{l_mflags} install AM_MAKEFLAGS="DESTDIR=$RPM_BUILD_ROOT"
# provide config file
%{l_shtool} install -c -m 644 \
/dev/null \
$RPM_BUILD_ROOT%{l_prefix}/etc/gtk2/gtk.immodules
# use generic library name
mv $RPM_BUILD_ROOT%{l_prefix}/lib/libgtk-x11-2.0.a \
$RPM_BUILD_ROOT%{l_prefix}/lib/libgtk2.a
mv $RPM_BUILD_ROOT%{l_prefix}/lib/libgdk-x11-2.0.a \
$RPM_BUILD_ROOT%{l_prefix}/lib/libgdk2.a
# clean up installation area
rm -f $RPM_BUILD_ROOT%{l_prefix}/info/dir
rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/themes
rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/gtk2
rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/locale
rm -rf $RPM_BUILD_ROOT%{l_prefix}/lib/locale
rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/*.s[ol]
rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/*.s[ol].*
rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/*.la
rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/gtk2/engines/*.a
rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/gtk2/engines/*.la
rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/gtk2/immodules/*.a
rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/gtk2/immodules/*.la
rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-[0-9][0-9.]*
strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1
# determine installation files
%{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
%{l_files_std} \
'%not %dir %{l_prefix}/share/aclocal' \
'%not %dir %{l_prefix}/lib/pkgconfig'
%files -f files
%clean
rm -rf $RPM_BUILD_ROOT