123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- #!/bin/bash
- # Use "build-gtk.sh" or "build-gtk.sh 64" to build a 64-bits tarball for tooltool.
- # Use "build-gtk.sh 32" to build a 32-bits tarball for tooltool.
- # Mock environments used:
- # - 64-bits:
- # https://s3.amazonaws.com/mozilla-releng-mock-archive/67b65e51eb091fba7941a04d249343924a3ee653
- # + libxml2-devel.x86_64 gettext.x86_64 libjpeg-devel.x86_64
- # - 32-bits:
- # https://s3.amazonaws.com/mozilla-releng-mock-archive/58d76c6acca148a1aedcbec7fc1b8212e12807b4
- # + libxml2-devel.i686 gettext.i686 libjpeg-devel.i686
- set -e
- pkg_config_version=0.28
- fontconfig_version=2.8.0
- libffi_version=3.0.13
- glib_version=2.34.3
- gdk_pixbuf_version=2.26.5
- pixman_version=0.20.2
- cairo_version=1.10.2
- pango_version=1.30.1
- atk_version=2.2.0
- gtk__version=3.4.4
- pkg_config_url=http://pkgconfig.freedesktop.org/releases/pkg-config-${pkg_config_version}.tar.gz
- fontconfig_url=http://www.freedesktop.org/software/fontconfig/release/fontconfig-${fontconfig_version}.tar.gz
- libffi_url=ftp://sourceware.org/pub/libffi/libffi-${libffi_version}.tar.gz
- glib_url=http://ftp.gnome.org/pub/gnome/sources/glib/${glib_version%.*}/glib-${glib_version}.tar.xz
- gdk_pixbuf_url=http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/${gdk_pixbuf_version%.*}/gdk-pixbuf-${gdk_pixbuf_version}.tar.xz
- pixman_url=http://cairographics.org/releases/pixman-${pixman_version}.tar.gz
- cairo_url=http://cairographics.org/releases/cairo-${cairo_version}.tar.gz
- pango_url=http://ftp.gnome.org/pub/GNOME/sources/pango/${pango_version%.*}/pango-${pango_version}.tar.xz
- atk_url=http://ftp.gnome.org/pub/GNOME/sources/atk/${atk_version%.*}/atk-${atk_version}.tar.xz
- gtk__url=http://ftp.gnome.org/pub/gnome/sources/gtk+/${gtk__version%.*}/gtk+-${gtk__version}.tar.xz
- cwd=$(pwd)
- root_dir=$(mktemp -d)
- cd $root_dir
- if test -z $TMPDIR; then
- TMPDIR=/tmp/
- fi
- make_flags=-j12
- build() {
- name=$1
- shift
- pkg=$(echo $name | tr '+-' '__')
- version=$(eval echo \$${pkg}_version)
- url=$(eval echo \$${pkg}_url)
- wget -c -P $TMPDIR $url
- tar -axf $TMPDIR/$name-$version.tar.*
- mkdir -p build/$name
- cd build/$name
- eval ../../$name-$version/configure --disable-static $* $configure_args
- make $make_flags
- make install DESTDIR=$root_dir/gtk3
- find $root_dir/gtk3 -name \*.la -delete
- cd ../..
- }
- case "$1" in
- 32)
- configure_args='--host=i686-pc-linux --build=i686-pc-linux CC="gcc -m32" CXX="g++ -m32"'
- lib=lib
- ;;
- *)
- configure_args=
- lib=lib64
- ;;
- esac
- export PKG_CONFIG_LIBDIR=/usr/$lib/pkgconfig:/usr/share/pkgconfig
- # The pkg-config version in the mock images is buggy is how it handles
- # PKG_CONFIG_SYSROOT_DIR. So we need our own.
- build pkg-config
- ln -sf /usr/include $root_dir/gtk3/usr/
- ln -sf /usr/$lib $root_dir/gtk3/usr/
- if [ "$lib" = lib64 ]; then
- ln -s lib $root_dir/gtk3/usr/local/lib64
- fi
- export PKG_CONFIG_PATH=$root_dir/gtk3/usr/local/lib/pkgconfig
- export PKG_CONFIG_SYSROOT_DIR=$root_dir/gtk3
- export LD_LIBRARY_PATH=$root_dir/gtk3/usr/local/lib
- export PATH=$root_dir/gtk3/usr/local/bin:${PATH}
- build fontconfig
- build libffi
- build glib
- build gdk-pixbuf --without-libtiff
- build pixman --disable-gtk
- build cairo --enable-tee
- build pango
- build atk
- make_flags="$make_flags GLIB_COMPILE_SCHEMAS=glib-compile-schemas"
- build gtk+
- rm -rf $root_dir/gtk3/usr/local/share/gtk-doc
- rm -rf $root_dir/gtk3/usr/local/share/locale
- # mock build environment doesn't have fonts in /usr/share/fonts, but
- # has some in /usr/share/X11/fonts. Add this directory to the
- # fontconfig configuration without changing the gtk3 tooltool package.
- cat << EOF > $root_dir/gtk3/usr/local/etc/fonts/local.conf
- <?xml version="1.0"?>
- <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
- <fontconfig>
- <dir>/usr/share/X11/fonts</dir>
- </fontconfig>
- EOF
- cat <<EOF > $root_dir/gtk3/setup.sh
- #!/bin/sh
- cd \$(dirname \$0)
- HERE=\$(pwd)
- # pango expects absolute paths in pango.modules, and TOOLTOOL_DIR may vary...
- LD_LIBRARY_PATH=\$HERE/usr/local/lib \
- PANGO_SYSCONFDIR=\$HERE/usr/local/etc \
- PANGO_LIBDIR=\$HERE/usr/local/lib \
- \$HERE/usr/local/bin/pango-querymodules > \$HERE/usr/local/etc/pango/pango.modules
- # same with gdb-pixbuf and loaders.cache
- LD_LIBRARY_PATH=\$HERE/usr/local/lib \
- GDK_PIXBUF_MODULE_FILE=\$HERE/usr/local/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache \
- GDK_PIXBUF_MODULEDIR=\$HERE/usr/local/lib/gdk-pixbuf-2.0/2.10.0/loaders \
- \$HERE/usr/local/bin/gdk-pixbuf-query-loaders > \
- \$HERE/usr/local/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
- # The fontconfig version in the tooltool package has known uses of
- # uninitialized memory when creating its cache, and while most users
- # will already have an existing cache, running Firefox on automation
- # will create it. Combined with valgrind, this generates irrelevant
- # errors.
- # So create the fontconfig cache beforehand.
- FONTCONFIG_PATH=\$HERE/usr/local/etc/fonts \
- LD_LIBRARY_PATH=\$HERE/usr/local/lib \
- \$HERE/usr/local/bin/fc-cache
- EOF
- chmod +x $root_dir/gtk3/setup.sh
- cd $cwd
- tar -C $root_dir -Jcf gtk3.tar.xz gtk3
|