[glade] Added new jhbuild based bundling system for 64bit linux bundles.



commit 902b8c6d422c06c01de9b9aa20ca3ad38641d04f
Author: Tristan Van Berkom <tristan upstairslabs com>
Date:   Fri Dec 13 21:42:15 2013 +0900

    Added new jhbuild based bundling system for 64bit linux bundles.

 build/linux64/AppRunScript.sh                      |   30 +-
 build/linux64/PrepareAppDir.sh                     |  104 ++++++
 build/linux64/README                               |  356 ++++----------------
 build/linux64/README.lfs                           |  352 +++++++++++++++++++
 build/linux64/jhbuildrc                            |   27 ++
 build/linux64/libcwrap.h                           |  215 ++++++++++++
 build/linux64/modulesets/bundle.modules            |  239 +++++++++++++
 .../modulesets/patches/cairo-avoid-longjmp.patch   |   16 +
 .../modulesets/patches/pango-old-fontconfig.patch  |   13 +
 .../patches/pango-relative-paths.patch}            |    0
 build/linux64/triggers/gdk-pixbuf.trigger          |   30 ++
 build/linux64/triggers/glib.trigger                |   22 ++
 build/linux64/triggers/gtk+.trigger                |   26 ++
 build/linux64/triggers/mime-database.trigger       |   22 ++
 build/linux64/triggers/pango.trigger               |   36 ++
 15 files changed, 1184 insertions(+), 304 deletions(-)
---
diff --git a/build/linux64/AppRunScript.sh b/build/linux64/AppRunScript.sh
index acf54a1..83b2581 100755
--- a/build/linux64/AppRunScript.sh
+++ b/build/linux64/AppRunScript.sh
@@ -1,9 +1,12 @@
 #!/bin/sh
 
+# This needs to be set to /home/username/AppImages/Install
+INSTALL_PREFIX=/home/tristan/AppImages/Install
+
 # Base environment variables
-LD_LIBRARY_PATH=${APP_IMAGE_ROOT}/usr/lib:${LD_LIBRARY_PATH}
-PATH=${APP_IMAGE_ROOT}/usr/bin:${PATH}
-XDG_DATA_DIRS=${APP_IMAGE_ROOT}/usr/share:${XDG_DATA_DIRS}
+LD_LIBRARY_PATH=${APP_IMAGE_ROOT}${INSTALL_PREFIX}/lib64:${LD_LIBRARY_PATH}
+PATH=${APP_IMAGE_ROOT}${INSTALL_PREFIX}/bin:${PATH}
+XDG_DATA_DIRS=${APP_IMAGE_ROOT}${INSTALL_PREFIX}/share:${XDG_DATA_DIRS}
 export LD_LIBRARY_PATH PATH XDG_DATA_DIRS
 
 # Pango environment variables
@@ -12,19 +15,24 @@ export PANGO_RC_FILE
 
 # GTK+/GIO/GdkPixbuf environment variables
 # http://askubuntu.com/questions/251712/how-can-i-install-a-gsettings-schema-without-root-privileges
-GSETTINGS_SCHEMA_DIR=${APP_IMAGE_ROOT}/usr/share/glib-2.0/schemas/:${GSETTINGS_SCHEMA_DIR}
-GDK_PIXBUF_MODULE_FILE=${APP_IMAGE_ROOT}/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
-GTK_PATH=${APP_IMAGE_ROOT}/usr/lib/gtk-3.0
-GTK_DATA_PREFIX=${APP_IMAGE_ROOT}/usr
+GSETTINGS_SCHEMA_DIR=${APP_IMAGE_ROOT}${INSTALL_PREFIX}/share/glib-2.0/schemas/:${GSETTINGS_SCHEMA_DIR}
+GDK_PIXBUF_MODULE_FILE=${APP_IMAGE_ROOT}${INSTALL_PREFIX}/lib64/gdk-pixbuf-2.0/2.10.0/loaders.cache
+GTK_PATH=${APP_IMAGE_ROOT}${INSTALL_PREFIX}/lib64/gtk-3.0
+GTK_DATA_PREFIX=${APP_IMAGE_ROOT}${INSTALL_PREFIX}
 GTK_THEME=Adwaita
 export GSETTINGS_SCHEMA_DIR GDK_PIXBUF_MODULE_FILE GTK_PATH GTK_DATA_PREFIX GTK_THEME
 
 # Glade environment variables
-GLADE_CATALOG_SEARCH_PATH=${APP_IMAGE_ROOT}/usr/share/glade/catalogs
-GLADE_MODULE_SEARCH_PATH=${APP_IMAGE_ROOT}/usr/lib/glade/modules
-GLADE_PIXMAP_DIR=${APP_IMAGE_ROOT}/usr/share/glade/pixmaps
+GLADE_CATALOG_SEARCH_PATH=${APP_IMAGE_ROOT}${INSTALL_PREFIX}/share/glade/catalogs
+GLADE_MODULE_SEARCH_PATH=${APP_IMAGE_ROOT}${INSTALL_PREFIX}/lib64/glade/modules
+GLADE_PIXMAP_DIR=${APP_IMAGE_ROOT}${INSTALL_PREFIX}/share/glade/pixmaps
 GLADE_BUNDLED=1
 export GLADE_CATALOG_SEARCH_PATH GLADE_MODULE_SEARCH_PATH GLADE_PIXMAP_DIR GLADE_BUNDLED
 
+if test -z ${APP_IMAGE_TEST}; then
 # Invoke Glade with the arguments passed
-${APP_IMAGE_ROOT}/usr/bin/glade $*
+    ${APP_IMAGE_ROOT}${INSTALL_PREFIX}/bin/glade $*
+else
+# Run a shell in test mode
+    bash;
+fi
diff --git a/build/linux64/PrepareAppDir.sh b/build/linux64/PrepareAppDir.sh
new file mode 100755
index 0000000..67eff91
--- /dev/null
+++ b/build/linux64/PrepareAppDir.sh
@@ -0,0 +1,104 @@
+#!/bin/sh
+
+# Used to prepare the AppDir bundle directory. -*- mode: sh -*-
+#
+# Written by Tristan Van Berkom <tristan upstairslabs com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+# Usage:
+#
+# ./PrepareAppDir.sh /path/to/AppImage/Install /path/to/glade
+#
+
+APP_DIR_ROOT=$1
+GLADE_DIR=$2
+
+echo -n "Removing static archives and libtool cruft... "
+rm -f `find ${APP_DIR_ROOT} -name "*.a"`
+rm -f `find ${APP_DIR_ROOT} -name "*.la"`
+echo "Done."
+
+echo -n "Removing includes... "
+rm -rf ${APP_DIR_ROOT}/include
+echo "Done."
+
+echo -n "Removing uwanted shared data... "
+rm -rf ${APP_DIR_ROOT}/share/man
+rm -rf ${APP_DIR_ROOT}/share/info
+rm -rf ${APP_DIR_ROOT}/share/help
+rm -rf ${APP_DIR_ROOT}/share/doc
+rm -rf ${APP_DIR_ROOT}/share/gtk-doc
+rm -rf ${APP_DIR_ROOT}/share/gdb
+rm -rf ${APP_DIR_ROOT}/share/gdm
+rm -rf ${APP_DIR_ROOT}/share/vala
+rm -rf ${APP_DIR_ROOT}/share/pkgconfig
+rm -rf ${APP_DIR_ROOT}/share/gnome
+rm -rf ${APP_DIR_ROOT}/share/xml
+rm -rf ${APP_DIR_ROOT}/share/bash-completion
+rm -rf ${APP_DIR_ROOT}/share/appdata
+rm -rf ${APP_DIR_ROOT}/share/dbus-1
+rm -rf ${APP_DIR_ROOT}/share/glib-2.0/codegen
+rm -rf ${APP_DIR_ROOT}/share/glib-2.0/gdb
+rm -rf ${APP_DIR_ROOT}/share/glib-2.0/gettext
+echo "Done."
+
+echo -n "Removing unwanted binaries... "
+mv ${APP_DIR_ROOT}/bin/glade ${APP_DIR_ROOT}/glade
+mv ${APP_DIR_ROOT}/bin/glade-previewer ${APP_DIR_ROOT}/glade-previewer
+rm -f ${APP_DIR_ROOT}/bin/*
+mv ${APP_DIR_ROOT}/glade ${APP_DIR_ROOT}/bin
+mv ${APP_DIR_ROOT}/glade-previewer ${APP_DIR_ROOT}/bin
+rm -f ${APP_DIR_ROOT}/libexec/*
+echo "Done."
+
+echo -n "Removing encoded rpath from all binaries... "
+chrpath -d ${APP_DIR_ROOT}/bin/glade
+chrpath -d ${APP_DIR_ROOT}/bin/glade-previewer
+chrpath -d `find ${APP_DIR_ROOT} -name "*.so"`
+echo "Done."
+
+echo -n "Setting up symlinks for new environment... "
+WORK_DIR=`pwd`
+
+# Create a /usr link in the install prefix, this is for AppImageKit to find the desktop icon properly
+cd ${APP_DIR_ROOT}
+ln -s . usr
+
+# Create a symlink at ${APP_DIR_ROOT}${APP_DIR_ROOT} which
+# links back to the root of the bundle.
+#
+# All our paths are relative to the jhbuild prefix, so we need
+# this symlink to pretend that the build prefix is the root.
+mkdir -p ${APP_DIR_ROOT}/${APP_DIR_ROOT%Install}
+cd ${APP_DIR_ROOT}/${APP_DIR_ROOT%Install}
+ln -s ../../.. Install
+
+# Restore working directory
+cd $WORK_DIR
+echo "Done."
+
+echo -n "Installing desktop file and runner script... "
+cp ${APP_DIR_ROOT}/share/applications/glade.desktop ${APP_DIR_ROOT}
+cp ${GLADE_DIR}/build/linux64/AppRunScript.sh ${APP_DIR_ROOT}
+echo "Done."
+
+echo -n "Fixing pixbuf loaders to have bundle relative paths... "
+# Post process the loaders.cache file to use relative paths, we use a for loop here
+# just because we're not sure the exact location, it could be in lib or lib64
+for cache in `find ${APP_DIR_ROOT} -path "*gdk-pixbuf-2.0/2.10.0/loaders.cache"`; do
+    cat $cache | sed -e "s|${APP_DIR_ROOT}|\.${APP_DIR_ROOT}|g" > $cache.1 && mv $cache.1 $cache;
+done
+echo "Done."
diff --git a/build/linux64/README b/build/linux64/README
index 1d89a82..4c1bc7a 100644
--- a/build/linux64/README
+++ b/build/linux64/README
@@ -1,5 +1,6 @@
 Instructions on how to build a bundle for 64bit linux systems.
 
+
 System requirements
 ~~~~~~~~~~~~~~~~~~~
 
@@ -18,8 +19,8 @@ System requirements
 
   o jhbuild
 
-    You will need to build Glade and it's dependencies in a relocated environment, jhbuild is usually
-    a decent choice for this.
+    The bundler mechanism for Glade comes in the form of a jhbuild scripted environment, you will
+    need a relatively new checkout of jhbuild.
 
   o chrpath
 
@@ -27,326 +28,95 @@ System requirements
     libtool loves to embed into binaries.
 
 
-Build & Bundle Instructions
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-What follows here is a step by step guide to preparing your bundle, the following steps
-should be completed in the order given.
-
-
-  Build AppImageKit
-  ~~~~~~~~~~~~~~~~~
-
-  Build AppImageKit in the normal way, you don't need to install it anywhere,
-  and make sure that you build it against your system libraries.
-
-     DO NOT build this from inside your jhbuild shell or relocated
-     build environment
-
-  To build you will run:
-
-     cmake .
-     make
-
-  Probably you will find yourself cursing a lot, forcing 'cmake .' to pass,
-  but this is just the nature of CMake.
-
-
-  Build relocated Glade
-  ~~~~~~~~~~~~~~~~~~~~~
-  Use jhbuild or your own build scripts to build a properly relocated
-  sandbox of GTK+/Glade and it's requirements.
-
-  This can be a long process, but if you already build Glade and GTK+
-  from master, chances are that you've already done this.
-
-  In any case of build setup you choose, the principals are the same:
-
-    o Relocated environment, PKG_CONFIG_PATH, PATH, LD_LIBRARY_PATH
-      and ACLOCAL_FLAGS should all be set into your build environment to
-      prioritize your relocated install prefix
-
-    o Dependencies should be built in strict order, the last dependency
-      must be installed into your relocated prefix before trying to
-      build the next dependency.
-
-    o You don't want anything built into your relocated prefix to link
-      to your system libraries, however if you're not so conservative
-      (as I was not), you can omit the X11 libraries as well as fontconfig
-      and freetype libraries (and of course your C runtime libraries are fine).
-
-      Remember that anything which links to your system libraries is
-      something which will try to link to the user's system libraries in
-      your bundle's runtime (so we can pretty much rely on X11 libs).
-
-
-  Apply patches from the patches/ subdirectory
-  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  There is currently one patch to force pango into not insisting
-  to prepend absolute paths to the relative paths we need to use
-  for the loading of pango modules.
-
-  There may be more added to this subdirectory in the future.
-
-  After applying patches, make sure that the modules in question
-  are built with the patches applied.
-
-
-  Make sure you've covered all of GTK+/Glade's dependencies
-  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  If you've used jhbuild, there is a big possibility that you are
-  missing dependencies.
-
-  jhbuild tends to be lazy and relies on system libraries instead
-  of building them.
-
-  Here is a full list of packages you will need (in order of dependency):
-
-    dbus
-    zlib
-    libffi
-    glib
-    harfbuzz
-    pixman
-    cairo
-    pango
-    libpng
-    gdk-pixbuf
-    librsvg
-    atk
-    at-spi2-core
-    at-spi2-atk
-    gtk+
-    gnome-themes-standard
-    hicolor-icon-theme
-    shared-mime-info
-    libcanberra
-    expat
-    libxml2
-    glade
-
-  Some of these are not required for GTK+ to function properly, but
-  are require for the theme. HOWEVER, these are all required to be be
-  built into your bundle. If you miss some of the modules that GTK+ loads
-  then GTK+ might decide to load one from the target system where the
-  bundle runs, which can only end in tears.
-
-  Some dependencies might be missing in the above list, for normal operation
-  of Glade we only really need the png and svg gdk-pixbuf loaders, so we've
-  only built libpng and librsvg (but it might be prudent to include jpeg
-  libraries and other dependencies of gdk-pixbuf loaders).
-
-
-  Some build time exceptions to take care of
-  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  When building glib, you must ensure to pass '--disable-selinux' to glib's
-  configure script, otherwise you end up with an unneeded dependency on
-  the targe host for libselinux.so
-
-
-  Building into the bundle root
-  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  Now we assume you have a functional Glade installed on your system
-  which links to the minimum system libraries as possible (only X11,
-  fontconfig and freetype). Now you must rebuild everything again.
-
-  First create a directory which will serve as your bundle's root,
-  we'll refer to it from here on after as ${BUNDLE_ROOT}, we'll refer
-  to each dependency build directry as ${dependency}.
-
-  It's important that you perform this step inside your relocated
-  build environment (for jhbuild, that means inside 'jhbuild shell').
-
-  For every dependency above you'll need to run these commands:
+Build Instructions
+~~~~~~~~~~~~~~~~~~
+Make sure you have Glade sources *first*.
 
-    cd ${dependency}
-    make clean
-    ./configure --prefix=/usr
-    make
-    make DESTDIR=${BUNDLE_ROOT} install
+We will refer to your Glade checkout or tarball directory as ${GLADE_CHECKOUT}, we expect
+this to be a "/full/path/to/the/checkout/of/glade"
 
-  Alternatively, for modules downloaded directly from git repositories:
 
-    cd ${dependency}
-    git clean -xdf
-    ./autogen.sh --prefix=/usr
-    make
-    make DESTDIR=${BUNDLE_ROOT} install
+Building AppImageKit
+~~~~~~~~~~~~~~~~~~~~
+Fetch AppImageKit form https://github.com/tristanvb/AppImageKit/
 
-  Note that for now, the libraries are built with a standard
-  system '/usr' prefix but we are compiling and linking against
-  the dependencies already installed into your relocated install
-  prefix.
+To build follow these steps:
 
-  The important parts of this step are:
+  cd AppImageKit
+  export CC='gcc -U_FORTIFY_SOURCE -include ${GLADE_CHECKOUT}/build/linux64/libcwrap.h'
+  cmake .
+  make
+  unset CC
 
-    o We clean out the existing package directories which we
-      already built into your relocated build environment.
+This trick with overriding CC should build your AppImageKit in such a way that
+it depends only on the glibc 2.7 ABI.
 
-      We don't want any residue here remaining from the previous build.
 
-    o We do compile and link against the existing libraries installed
-      from your previous build.
-
-    o We install using the '/usr' system prefix BUT we use the
-      DESTDIR standard to make the installation in ${BUNDLE_ROOT}
-
-  During this phase, the same exceptions as above apply, i.e. libglib
-  must be configured with --disable-selinux (and any other customizations
-  you may have made there, you should make here).
-
-
-  Additional preparations for ${BUNDLE_ROOT}
-  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  Now we're getting close, but we need to do a couple more
-  preparations for the ${BUNDLE_ROOT} to work properly (and to run at all).
-
-   o Add the AppRun program to the root.
-
-     In the AppImageKit package you built at the beginning, you will find
-     an executable called 'AppRun'. Copy this file to the toplevel of
-     your ${BUNDLE_ROOT}
-
-   o Add the AppRunScript.sh found in this directory to ${BUNDLE_ROOT}
-
-     This script will setup the environment to run Glade based on the
-     ${APP_IMAGE_ROOT} which will be set in the environment when the
-     script is called. This script calls Glade with the arguments provided.
-
-   o Add the glade.desktop file found in glade/data/glade.desktop to ${BUNDLE_ROOT}
-
-     The AppImageKit uses this at bundling time to prepare it's bundle and
-     chose an appropriate icon to display for the executable.
-
-   o Add the pangorc found in this directory to ${BUNDLE_ROOT}
-
-     This will tell pango to look in the right place for it's modules
-     file in ${BUNDLE_ROOT}/usr/etc/pango/pango.modules
-
-   o Generate and modify ${BUNDLE_ROOT}/usr/etc/pango/pango.modules
-
-     Inside your relocated build environment, run the following command:
-
-       pango-querymodules > ${BUNDLE_ROOT}/usr/etc/pango/pango.modules
-
-     This will generate the pango.modules with the correct modules
-     found in your relocated build, however they will not have the
-     correct paths.
-
-     Assuming that you've used '/opt/devel' (for example) as your install
-     prefix for your relocated build environment (possibly jhbuild), then
-     you'll need to replace '/opt/devel' with './usr' in the generated
-     pango.modules file.
-
-   o Generate and modify ${BUNDLE_ROOT}/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
-
-     Much like the above pango excercise, we need to generate and modify the module
-     cache for gdk-pixbuf (you can't build gdk-pixbuf without module support, as
-     you really need librsvg).
-
-     So again, using your relocated build environment, generate the cache with
-     this command:
-
-       gdk-pixbuf-query-loaders > ${BUNDLE_ROOT}/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
-
-     And again, assuming you've used '/opt/devel' (for example), then
-     you'll need to replace '/opt/devel' with './usr' in the generated
-     loaders.cache file.
-
-   o Create the icon theme cache
-
-     Assuming you've followed the instructions to the letter, the installation
-     of 'hicolor-icon-theme' will have created an index.theme file at:
-
-        ${BUNDLE_ROOT}/usr/share/icons/hicolor/index.theme
-
-     It's imperative that this file exist.
-
-     Now create the cache using this command:
-
-        gtk-update-icon-cache ${BUNDLE_ROOT}/usr/share/icons/hicolor/
-
-     This should create a file named:
-
-        ${BUNDLE_ROOT}/usr/share/icons/hicolor/icon-theme.cache
-
-   o Generate the mime database
-
-     The mime database should be created so that GTK+ knows how to handle image file
-     extensions and whatnot, and can find the correct pixbuf loader for them.
+Building the AppDir
+~~~~~~~~~~~~~~~~~~~
+The AppDir is what AppImageKit refers to as the root filesystem inside the
+bundle.
 
-     Do this in your relocated environment with the following:
+The provided jhbuild scripts will create a directory in your ${HOME} named
+'AppImages', if you already have a jhbuild environment there is no need to worry,
+our scripts do not interfere with your existing jhbuild environment.
 
-        update-mime-database ${BUNDLE_ROOT}/usr/share/mime
+To build the whole stack up to Glade, including Glade, issue this command:
 
-     And just ignore the error about XDG_DATA_DIRS, this is taken care of
-     by the AppRunScript.sh
+    GLADE_DIR=${GLADE_CHECKOUT} jhbuild -f ${GLADE_CHECKOUT}/build/linux64/jhbuildrc build glade
 
-   o Strip the -rpath from any binaries
+Some post processing is needed on the AppDir, we intentionally keep this separate from
+the jhbuild setup. To perform the needed post processing, issue this command:
 
-     Libtool loves to encode hard coded paths into the binaries it creates,
-     since we will be running the bundle with LD_LIBRARY_PATH set in the
-     bundle's runtime environment (and these paths actually take precedence
-     over the LD_LIBRARY_PATH), we need to strip those out, this is where
-     chrpath comes in.
+    ${GLADE_CHECKOUT}/build/linux64/PrepareAppDir.sh ${HOME}/AppImages/Install ${GLADE_CHECKOUT}
 
-     Run chrpath as follows to ensure you don't have any prioritized paths
-     still pointing to your relocated install prefix:
+The script takes the path to the AppDir, which is hard coded to be in your ${HOME},
+as well as the path to your glade checkout.
 
-       chrpath -d ${BUNDLE_ROOT}/usr/lib/*.so
-       chrpath -d ${BUNDLE_ROOT}/usr/bin/glade
-       chrpath -d ${BUNDLE_ROOT}/usr/bin/glade-previewer
+Finally, you need to add the AppRun program to your AppDir:
 
-   o Clean up the bundle of unwanted stuff
+    cp /path/to/AppImageKit/AppRun ${HOME}/AppImages/Install
 
-     This is optional but helps to reduce the binary size of the
-     generated bundle. Some good removals include:
+This should give you a fully functional image in ${HOME}/AppImages/Install
 
-       rm -rf ${BUNDLE_ROOT}/usr/include
-       rm -f `find ${BUNDLE_ROOT} -name "*.la"`
-       rm -f `find ${BUNDLE_ROOT} -name "*.a"`
 
-     You can safely remove everything in ${BUNDLE_ROOT}/usr/bin except
-     for 'glade' and 'glade-previewer'
+Bundling the AppDir
+~~~~~~~~~~~~~~~~~~~
+Build the bundle with one simple command:
 
-     There are also some directories in ${BUNDLE_ROOT}/usr/share that
-     can be discarded (notably the 'gtk-doc' directory).
+    /path/to/AppImageKit/AppImageAssistant ${HOME}/AppImages/Install glade
 
-     The ${BUNDLE_ROOT}/usr/share/locale directory can be removed and
-     with it, all translations, I don't recommend this for a Glade
-     bundle however it will also dramatically reduce the bundle size.
+This will create a huge binary named 'glade'
 
-  Creating the bundle
-  ~~~~~~~~~~~~~~~~~~~
-  Now that we're all done creating a proper ${BUNDLE_ROOT}, we can
-  go ahead and bundle it.
 
-  Run the 'AppImageAssistant' binary (found in the AppImageKit directory
-  which we built at the beginning), you can run it from anywhere, I usually
-  run it like this:
+Running and Debugging the bundle
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+You can run the created bundle by simply executing it, hopefully
+this will work on a large variety of 64-bit linux systems.
 
-    ./AppImageAssistant ${BUNDLE_ROOT} ~/glade
+If things turn out badly, you can debug it by typing:
 
-  This will create the 'glade' executable, which is probably around 50MB
-  large at this point (depending entirely on how much you successfully
-  trimmed out of ${BUNDLE_ROOT}).
+    APP_IMAGE_TEST=1 ./glade
 
-  Congradulations, now you have a bundle :)
+Instead of running glade, this will give you a shell inside
+the mounted bundle environment.
 
+Some checks you may want to perform include:
 
-Debugging considerations
-~~~~~~~~~~~~~~~~~~~~~~~~
-If your bundle is not working, you will have to get your hands (even more)
-dirty and look into the AppRunScript.sh which launches Glade.
+    ldd bin/glade
 
-I recommend inserting 'bash' after running Glade and regenerating the
-bundle, this will give you a shell inside the bundled environment
-where you can try to run ./usr/bin/glade under strace and inspect
-all of the files which Glade and it's dependencies try to open.
+This should show you which libraries are linked to the system
+and which are properly pulled from the bundle. We've intentionally
+left out X11 libraries, fontconfig and freetype, so these should
+be pulled from somewhere in your system directories.
 
-Hint: If Glade successfully opens anything starting with /usr,
-this is usually a sign of trouble.
+    LD_DEBUG=bindings ./bin/glade > ${HOME}/bindings.log 2>&1
 
-Another sanity check is to run ldd on ./usr/bin/glade, it should
-only resolve to system libraries for C runtime libraries, X11
-libraries, fontconfig and freetype.
+This will create a log of all the symbol bindings, you may want
+to check here if anything symbol originating in the bundle is bound
+to GLIBC > 2.7, the intention with this configuration is to aim
+for a low glibc dependency, if libraries inside your bundle require
+a higher libc version than 2.7 then the libcwrap.h file probably
+needs to be regenerated (the committed version should work for
+glibc ABI versions up to 2.15).
 
diff --git a/build/linux64/README.lfs b/build/linux64/README.lfs
new file mode 100644
index 0000000..3d68b11
--- /dev/null
+++ b/build/linux64/README.lfs
@@ -0,0 +1,352 @@
+Instructions on how to build a bundle for 64bit linux systems.
+
+System requirements
+~~~~~~~~~~~~~~~~~~~
+
+  o A 64bit linux system
+
+  o AppImageKit (https://github.com/tristanvb/AppImageKit/)
+
+    To build AppImageKit, you will require:
+      - A functional cross compiler to generate 32bit binaries as well as 64bit binaries
+      - libfuse (if AppImageKit doesnt find it, make sure there is a symbolic link to libfuse.so
+        from it's actual library, this is because AppImageKit uses CMake, which is just dumb).
+      - An old glib version installed on your system, the older the glib version the better
+        (this system glib version will be required on target hosts which want to run the bundle).
+      - Some other things like python, which you will just have to deal with the CMakeLists.txt
+        to figure out.
+
+  o jhbuild
+
+    You will need to build Glade and it's dependencies in a relocated environment, jhbuild is usually
+    a decent choice for this.
+
+  o chrpath
+
+    This will be required after your build root is complete, we use it to strip out the -rpaths which
+    libtool loves to embed into binaries.
+
+
+Build & Bundle Instructions
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+What follows here is a step by step guide to preparing your bundle, the following steps
+should be completed in the order given.
+
+
+  Build AppImageKit
+  ~~~~~~~~~~~~~~~~~
+
+  Build AppImageKit in the normal way, you don't need to install it anywhere,
+  and make sure that you build it against your system libraries.
+
+     DO NOT build this from inside your jhbuild shell or relocated
+     build environment
+
+  To build you will run:
+
+     cmake .
+     make
+
+  Probably you will find yourself cursing a lot, forcing 'cmake .' to pass,
+  but this is just the nature of CMake.
+
+
+  Build relocated Glade
+  ~~~~~~~~~~~~~~~~~~~~~
+  Use jhbuild or your own build scripts to build a properly relocated
+  sandbox of GTK+/Glade and it's requirements.
+
+  This can be a long process, but if you already build Glade and GTK+
+  from master, chances are that you've already done this.
+
+  In any case of build setup you choose, the principals are the same:
+
+    o Relocated environment, PKG_CONFIG_PATH, PATH, LD_LIBRARY_PATH
+      and ACLOCAL_FLAGS should all be set into your build environment to
+      prioritize your relocated install prefix
+
+    o Dependencies should be built in strict order, the last dependency
+      must be installed into your relocated prefix before trying to
+      build the next dependency.
+
+    o You don't want anything built into your relocated prefix to link
+      to your system libraries, however if you're not so conservative
+      (as I was not), you can omit the X11 libraries as well as fontconfig
+      and freetype libraries (and of course your C runtime libraries are fine).
+
+      Remember that anything which links to your system libraries is
+      something which will try to link to the user's system libraries in
+      your bundle's runtime (so we can pretty much rely on X11 libs).
+
+
+  Apply patches from the patches/ subdirectory
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  There is currently one patch to force pango into not insisting
+  to prepend absolute paths to the relative paths we need to use
+  for the loading of pango modules.
+
+  There may be more added to this subdirectory in the future.
+
+  After applying patches, make sure that the modules in question
+  are built with the patches applied.
+
+
+  Make sure you've covered all of GTK+/Glade's dependencies
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  If you've used jhbuild, there is a big possibility that you are
+  missing dependencies.
+
+  jhbuild tends to be lazy and relies on system libraries instead
+  of building them.
+
+  Here is a full list of packages you will need (in order of dependency):
+
+    zlib
+    libffi
+    glib
+    dbus
+    harfbuzz
+    pixman
+    cairo
+    pango
+    libpng
+    gdk-pixbuf
+    librsvg
+    atk
+    at-spi2-core
+    at-spi2-atk
+    gtk+
+    gnome-themes-standard
+    hicolor-icon-theme
+    shared-mime-info
+    libcanberra
+    expat
+    libxml2
+    glade
+
+  Some of these are not required for GTK+ to function properly, but
+  are require for the theme. HOWEVER, these are all required to be be
+  built into your bundle. If you miss some of the modules that GTK+ loads
+  then GTK+ might decide to load one from the target system where the
+  bundle runs, which can only end in tears.
+
+  Some dependencies might be missing in the above list, for normal operation
+  of Glade we only really need the png and svg gdk-pixbuf loaders, so we've
+  only built libpng and librsvg (but it might be prudent to include jpeg
+  libraries and other dependencies of gdk-pixbuf loaders).
+
+
+  Some build time exceptions to take care of
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  When building glib, you must ensure to pass '--disable-selinux' to glib's
+  configure script, otherwise you end up with an unneeded dependency on
+  the targe host for libselinux.so
+
+
+  Building into the bundle root
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  Now we assume you have a functional Glade installed on your system
+  which links to the minimum system libraries as possible (only X11,
+  fontconfig and freetype). Now you must rebuild everything again.
+
+  First create a directory which will serve as your bundle's root,
+  we'll refer to it from here on after as ${BUNDLE_ROOT}, we'll refer
+  to each dependency build directry as ${dependency}.
+
+  It's important that you perform this step inside your relocated
+  build environment (for jhbuild, that means inside 'jhbuild shell').
+
+  For every dependency above you'll need to run these commands:
+
+    cd ${dependency}
+    make clean
+    ./configure --prefix=/usr
+    make
+    make DESTDIR=${BUNDLE_ROOT} install
+
+  Alternatively, for modules downloaded directly from git repositories:
+
+    cd ${dependency}
+    git clean -xdf
+    ./autogen.sh --prefix=/usr
+    make
+    make DESTDIR=${BUNDLE_ROOT} install
+
+  Note that for now, the libraries are built with a standard
+  system '/usr' prefix but we are compiling and linking against
+  the dependencies already installed into your relocated install
+  prefix.
+
+  The important parts of this step are:
+
+    o We clean out the existing package directories which we
+      already built into your relocated build environment.
+
+      We don't want any residue here remaining from the previous build.
+
+    o We do compile and link against the existing libraries installed
+      from your previous build.
+
+    o We install using the '/usr' system prefix BUT we use the
+      DESTDIR standard to make the installation in ${BUNDLE_ROOT}
+
+  During this phase, the same exceptions as above apply, i.e. libglib
+  must be configured with --disable-selinux (and any other customizations
+  you may have made there, you should make here).
+
+
+  Additional preparations for ${BUNDLE_ROOT}
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  Now we're getting close, but we need to do a couple more
+  preparations for the ${BUNDLE_ROOT} to work properly (and to run at all).
+
+   o Add the AppRun program to the root.
+
+     In the AppImageKit package you built at the beginning, you will find
+     an executable called 'AppRun'. Copy this file to the toplevel of
+     your ${BUNDLE_ROOT}
+
+   o Add the AppRunScript.sh found in this directory to ${BUNDLE_ROOT}
+
+     This script will setup the environment to run Glade based on the
+     ${APP_IMAGE_ROOT} which will be set in the environment when the
+     script is called. This script calls Glade with the arguments provided.
+
+   o Add the glade.desktop file found in glade/data/glade.desktop to ${BUNDLE_ROOT}
+
+     The AppImageKit uses this at bundling time to prepare it's bundle and
+     chose an appropriate icon to display for the executable.
+
+   o Add the pangorc found in this directory to ${BUNDLE_ROOT}
+
+     This will tell pango to look in the right place for it's modules
+     file in ${BUNDLE_ROOT}/usr/etc/pango/pango.modules
+
+   o Generate and modify ${BUNDLE_ROOT}/usr/etc/pango/pango.modules
+
+     Inside your relocated build environment, run the following command:
+
+       pango-querymodules > ${BUNDLE_ROOT}/usr/etc/pango/pango.modules
+
+     This will generate the pango.modules with the correct modules
+     found in your relocated build, however they will not have the
+     correct paths.
+
+     Assuming that you've used '/opt/devel' (for example) as your install
+     prefix for your relocated build environment (possibly jhbuild), then
+     you'll need to replace '/opt/devel' with './usr' in the generated
+     pango.modules file.
+
+   o Generate and modify ${BUNDLE_ROOT}/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
+
+     Much like the above pango excercise, we need to generate and modify the module
+     cache for gdk-pixbuf (you can't build gdk-pixbuf without module support, as
+     you really need librsvg).
+
+     So again, using your relocated build environment, generate the cache with
+     this command:
+
+       gdk-pixbuf-query-loaders > ${BUNDLE_ROOT}/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
+
+     And again, assuming you've used '/opt/devel' (for example), then
+     you'll need to replace '/opt/devel' with './usr' in the generated
+     loaders.cache file.
+
+   o Create the icon theme cache
+
+     Assuming you've followed the instructions to the letter, the installation
+     of 'hicolor-icon-theme' will have created an index.theme file at:
+
+        ${BUNDLE_ROOT}/usr/share/icons/hicolor/index.theme
+
+     It's imperative that this file exist.
+
+     Now create the cache using this command:
+
+        gtk-update-icon-cache ${BUNDLE_ROOT}/usr/share/icons/hicolor/
+
+     This should create a file named:
+
+        ${BUNDLE_ROOT}/usr/share/icons/hicolor/icon-theme.cache
+
+   o Generate the mime database
+
+     The mime database should be created so that GTK+ knows how to handle image file
+     extensions and whatnot, and can find the correct pixbuf loader for them.
+
+     Do this in your relocated environment with the following:
+
+        update-mime-database ${BUNDLE_ROOT}/usr/share/mime
+
+     And just ignore the error about XDG_DATA_DIRS, this is taken care of
+     by the AppRunScript.sh
+
+   o Strip the -rpath from any binaries
+
+     Libtool loves to encode hard coded paths into the binaries it creates,
+     since we will be running the bundle with LD_LIBRARY_PATH set in the
+     bundle's runtime environment (and these paths actually take precedence
+     over the LD_LIBRARY_PATH), we need to strip those out, this is where
+     chrpath comes in.
+
+     Run chrpath as follows to ensure you don't have any prioritized paths
+     still pointing to your relocated install prefix:
+
+       chrpath -d ${BUNDLE_ROOT}/usr/lib/*.so
+       chrpath -d ${BUNDLE_ROOT}/usr/bin/glade
+       chrpath -d ${BUNDLE_ROOT}/usr/bin/glade-previewer
+
+   o Clean up the bundle of unwanted stuff
+
+     This is optional but helps to reduce the binary size of the
+     generated bundle. Some good removals include:
+
+       rm -rf ${BUNDLE_ROOT}/usr/include
+       rm -f `find ${BUNDLE_ROOT} -name "*.la"`
+       rm -f `find ${BUNDLE_ROOT} -name "*.a"`
+
+     You can safely remove everything in ${BUNDLE_ROOT}/usr/bin except
+     for 'glade' and 'glade-previewer'
+
+     There are also some directories in ${BUNDLE_ROOT}/usr/share that
+     can be discarded (notably the 'gtk-doc' directory).
+
+     The ${BUNDLE_ROOT}/usr/share/locale directory can be removed and
+     with it, all translations, I don't recommend this for a Glade
+     bundle however it will also dramatically reduce the bundle size.
+
+  Creating the bundle
+  ~~~~~~~~~~~~~~~~~~~
+  Now that we're all done creating a proper ${BUNDLE_ROOT}, we can
+  go ahead and bundle it.
+
+  Run the 'AppImageAssistant' binary (found in the AppImageKit directory
+  which we built at the beginning), you can run it from anywhere, I usually
+  run it like this:
+
+    ./AppImageAssistant ${BUNDLE_ROOT} ~/glade
+
+  This will create the 'glade' executable, which is probably around 50MB
+  large at this point (depending entirely on how much you successfully
+  trimmed out of ${BUNDLE_ROOT}).
+
+  Congradulations, now you have a bundle :)
+
+
+Debugging considerations
+~~~~~~~~~~~~~~~~~~~~~~~~
+If your bundle is not working, you will have to get your hands (even more)
+dirty and look into the AppRunScript.sh which launches Glade.
+
+I recommend inserting 'bash' after running Glade and regenerating the
+bundle, this will give you a shell inside the bundled environment
+where you can try to run ./usr/bin/glade under strace and inspect
+all of the files which Glade and it's dependencies try to open.
+
+Hint: If Glade successfully opens anything starting with /usr,
+this is usually a sign of trouble.
+
+Another sanity check is to run ldd on ./usr/bin/glade, it should
+only resolve to system libraries for C runtime libraries, X11
+libraries, fontconfig and freetype.
+
diff --git a/build/linux64/jhbuildrc b/build/linux64/jhbuildrc
new file mode 100644
index 0000000..3d01f07
--- /dev/null
+++ b/build/linux64/jhbuildrc
@@ -0,0 +1,27 @@
+# -*- mode: python -*-
+# -*- coding: utf-8 -*-
+
+use_local_modulesets = True
+modulesets_dir = os.getenv('GLADE_DIR') + '/build/linux64/modulesets'
+moduleset = 'bundle.modules'
+
+# Unset autogenargs (screws with some modules like freetype)
+autogenargs = ''
+
+# Make sure we require a low libc dependency
+os.environ['CC'] = 'gcc -U_FORTIFY_SOURCE -DCAIRO_NO_MUTEX=1 -include ' + os.getenv('GLADE_DIR') + 
'/build/linux64/libcwrap.h'
+
+# Enable our custom triggers
+os.environ['JHBUILD_TRIGGERS'] = os.getenv('GLADE_DIR') + '/build/linux64/triggers'
+
+# A list of the modules to build.
+modules = [ 'glade' ]
+
+# Where to put the tarballs
+tarballdir = "~/AppImages/Tarballs"
+
+# Where to unpack sources
+checkoutroot = '~/AppImages/Sources'
+
+# the prefix to configure/install modules to (must have write access)
+prefix = '~/AppImages/Install'
diff --git a/build/linux64/libcwrap.h b/build/linux64/libcwrap.h
new file mode 100644
index 0000000..b425f39
--- /dev/null
+++ b/build/linux64/libcwrap.h
@@ -0,0 +1,215 @@
+/* Make sure we only do it once */
+#if !defined (__LIBC_CUSTOM_BINDINGS_H__)
+
+/* This needs to be fixed, should rather be #if defined (__C__) or
+ * whatever the right automatic macro is (just need to find it).
+ */
+#if !defined(__OBJC__) && !defined(__cplusplus) && !defined(__ASSEMBLER__)
+
+/* This list was generated against libc 2.15 ABI
+ *
+ * What we do here is only allow linkage to symbols from the glibc 2.7 ABI
+ * or lower, which should work for any libc up to the 2.15 ABI.
+ */
+__asm__(".symver scandir,scandir GLIBC_2 2 5");
+__asm__(".symver scandir64,scandir64 GLIBC_2 2 5");
+__asm__(".symver memcpy,memcpy GLIBC_2 2 5");
+__asm__(".symver __memcpy_chk,__memcpy_chk GLIBC_2 3 4");
+__asm__(".symver posix_fallocate,posix_fallocate GLIBC_2 2 5");
+__asm__(".symver posix_fallocate64,posix_fallocate64 GLIBC_2 2 5");
+__asm__(".symver posix_spawn,posix_spawn GLIBC_2 2 5");
+__asm__(".symver posix_spawnattr_destroy,posix_spawnattr_destroy GLIBC_2 2 5");
+__asm__(".symver posix_spawnattr_getflags,posix_spawnattr_getflags GLIBC_2 2 5");
+__asm__(".symver posix_spawnattr_getpgroup,posix_spawnattr_getpgroup GLIBC_2 2 5");
+__asm__(".symver posix_spawnattr_getschedparam,posix_spawnattr_getschedparam GLIBC_2 2 5");
+__asm__(".symver posix_spawnattr_getschedpolicy,posix_spawnattr_getschedpolicy GLIBC_2 2 5");
+__asm__(".symver posix_spawnattr_getsigdefault,posix_spawnattr_getsigdefault GLIBC_2 2 5");
+__asm__(".symver posix_spawnattr_getsigmask,posix_spawnattr_getsigmask GLIBC_2 2 5");
+__asm__(".symver posix_spawnattr_init,posix_spawnattr_init GLIBC_2 2 5");
+__asm__(".symver posix_spawnattr_setflags,posix_spawnattr_setflags GLIBC_2 2 5");
+__asm__(".symver posix_spawnattr_setpgroup,posix_spawnattr_setpgroup GLIBC_2 2 5");
+__asm__(".symver posix_spawnattr_setschedparam,posix_spawnattr_setschedparam GLIBC_2 2 5");
+__asm__(".symver posix_spawnattr_setschedpolicy,posix_spawnattr_setschedpolicy GLIBC_2 2 5");
+__asm__(".symver posix_spawnattr_setsigdefault,posix_spawnattr_setsigdefault GLIBC_2 2 5");
+__asm__(".symver posix_spawnattr_setsigmask,posix_spawnattr_setsigmask GLIBC_2 2 5");
+__asm__(".symver posix_spawn_file_actions_addclose,posix_spawn_file_actions_addclose GLIBC_2 2 5");
+__asm__(".symver posix_spawn_file_actions_adddup2,posix_spawn_file_actions_adddup2 GLIBC_2 2 5");
+__asm__(".symver posix_spawn_file_actions_addopen,posix_spawn_file_actions_addopen GLIBC_2 2 5");
+__asm__(".symver posix_spawn_file_actions_destroy,posix_spawn_file_actions_destroy GLIBC_2 2 5");
+__asm__(".symver posix_spawn_file_actions_init,posix_spawn_file_actions_init GLIBC_2 2 5");
+__asm__(".symver posix_spawnp,posix_spawnp GLIBC_2 2 5");
+__asm__(".symver _sys_errlist,_sys_errlist GLIBC_2 3");
+__asm__(".symver sys_errlist,sys_errlist GLIBC_2 3");
+__asm__(".symver _sys_nerr,_sys_nerr GLIBC_2 3");
+__asm__(".symver sys_nerr,sys_nerr GLIBC_2 3");
+__asm__(".symver wmemcpy,wmemcpy GLIBC_2 2 5");
+__asm__(".symver fgetsgent_r,fgetsgent_r GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver timerfd_gettime,timerfd_gettime GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver clock_adjtime,clock_adjtime GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __cxa_at_quick_exit,__cxa_at_quick_exit GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver inotify_init1,inotify_init1 GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver psiginfo,psiginfo GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver execvpe,execvpe GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver timerfd_create,timerfd_create GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __longjmp_chk,__longjmp_chk GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver register_printf_modifier,register_printf_modifier GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __fdelt_warn,__fdelt_warn GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver recvmmsg,recvmmsg GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __fdelt_chk,__fdelt_chk GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver process_vm_writev,process_vm_writev GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver prlimit,prlimit GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __obstack_vprintf_chk,__obstack_vprintf_chk GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver name_to_handle_at,name_to_handle_at GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver scandirat,scandirat GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver malloc_info,malloc_info GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver setsgent,setsgent GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver fanotify_init,fanotify_init GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver putsgent,putsgent GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __fentry__,__fentry__ GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver register_printf_specifier,register_printf_specifier GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver sgetsgent_r,sgetsgent_r GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver dup3,dup3 GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __posix_getopt,__posix_getopt GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver setns,setns GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver open_by_handle_at,open_by_handle_at GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver preadv64,preadv64 GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __dprintf_chk,__dprintf_chk GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver sendmmsg,sendmmsg GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver accept4,accept4 GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver prlimit64,prlimit64 GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver syncfs,syncfs GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver timerfd_settime,timerfd_settime GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver endsgent,endsgent GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ntp_gettimex,ntp_gettimex GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver mkostemps64,mkostemps64 GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver getsgnam,getsgnam GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver pwritev,pwritev GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver qsort_r,qsort_r GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __obstack_printf_chk,__obstack_printf_chk GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver fanotify_mark,fanotify_mark GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver mkstemps64,mkstemps64 GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver getsgnam_r,getsgnam_r GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver epoll_create1,epoll_create1 GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver process_vm_readv,process_vm_readv GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver pwritev64,pwritev64 GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __vdprintf_chk,__vdprintf_chk GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __vasprintf_chk,__vasprintf_chk GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver register_printf_type,register_printf_type GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver scandirat64,scandirat64 GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver pipe2,pipe2 GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __asprintf_chk,__asprintf_chk GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __log2f_finite,__log2f_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __yn_finite,__yn_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __sqrt_finite,__sqrt_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __sinh_finite,__sinh_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __j0_finite,__j0_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __powl_finite,__powl_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __ynf_finite,__ynf_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __log2l_finite,__log2l_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __j1l_finite,__j1l_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __coshf_finite,__coshf_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __logl_finite,__logl_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __acos_finite,__acos_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __exp2_finite,__exp2_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __hypot_finite,__hypot_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __exp2f_finite,__exp2f_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __atanhl_finite,__atanhl_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __sqrtf_finite,__sqrtf_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __scalbf_finite,__scalbf_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __log10_finite,__log10_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __cosh_finite,__cosh_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __coshl_finite,__coshl_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __atan2_finite,__atan2_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __gammaf_r_finite,__gammaf_r_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __expf_finite,__expf_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __lgammal_r_finite,__lgammal_r_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __acosh_finite,__acosh_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __acoshl_finite,__acoshl_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __j1_finite,__j1_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __y1f_finite,__y1f_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __scalbl_finite,__scalbl_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __log10f_finite,__log10f_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __sinhl_finite,__sinhl_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __expl_finite,__expl_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __fmodl_finite,__fmodl_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __log_finite,__log_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __hypotf_finite,__hypotf_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __exp_finite,__exp_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __scalb_finite,__scalb_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __y0f_finite,__y0f_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __jnf_finite,__jnf_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __atan2f_finite,__atan2f_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __remainder_finite,__remainder_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __hypotl_finite,__hypotl_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __pow_finite,__pow_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __ynl_finite,__ynl_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __jn_finite,__jn_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __exp10f_finite,__exp10f_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __y0_finite,__y0_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __y0l_finite,__y0l_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __jnl_finite,__jnl_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __atan2l_finite,__atan2l_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __asin_finite,__asin_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __asinf_finite,__asinf_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __exp2l_finite,__exp2l_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __exp10l_finite,__exp10l_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __log2_finite,__log2_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __sqrtl_finite,__sqrtl_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __powf_finite,__powf_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __j1f_finite,__j1f_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __gammal_r_finite,__gammal_r_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __asinl_finite,__asinl_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __logf_finite,__logf_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __lgamma_r_finite,__lgamma_r_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __gamma_r_finite,__gamma_r_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __remainderf_finite,__remainderf_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __y1l_finite,__y1l_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __exp10_finite,__exp10_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __log10l_finite,__log10l_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __y1_finite,__y1_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __atanhf_finite,__atanhf_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __acosf_finite,__acosf_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __atanh_finite,__atanh_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __lgammaf_r_finite,__lgammaf_r_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __j0f_finite,__j0f_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __remainderl_finite,__remainderl_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __acoshf_finite,__acoshf_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __acosl_finite,__acosl_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __fmod_finite,__fmod_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __sinhf_finite,__sinhf_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __j0l_finite,__j0l_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver __fmodf_finite,__fmodf_finite GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver pthread_setname_np,pthread_setname_np GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver pthread_mutexattr_setrobust,pthread_mutexattr_setrobust GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver pthread_getname_np,pthread_getname_np GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver pthread_mutex_consistent,pthread_mutex_consistent GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver pthread_sigqueue,pthread_sigqueue GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver pthread_mutexattr_getrobust,pthread_mutexattr_getrobust GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_put16,ns_put16 GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_initparse,ns_initparse GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_msg_getflag,ns_msg_getflag GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_name_pack,ns_name_pack GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_skiprr,ns_skiprr GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_get32,ns_get32 GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_makecanon,ns_makecanon GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_parse_ttl,ns_parse_ttl GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_datetosecs,ns_datetosecs GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_put32,ns_put32 GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_format_ttl,ns_format_ttl GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_name_rollback,ns_name_rollback GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_subdomain,ns_subdomain GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_samedomain,ns_samedomain GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_name_pton,ns_name_pton GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_parserr,ns_parserr GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_name_uncompress,ns_name_uncompress GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_name_unpack,ns_name_unpack GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_name_skip,ns_name_skip GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_sprintrrf,ns_sprintrrf GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_name_compress,ns_name_compress GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_name_ntol,ns_name_ntol GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_name_ntop,ns_name_ntop GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_samename,ns_samename GLIBC_DONT_USE_THIS_SYMBOL");
+__asm__(".symver ns_get16,ns_get16 GLIBC_DONT_USE_THIS_SYMBOL");
+
+#  endif
+#endif
diff --git a/build/linux64/modulesets/bundle.modules b/build/linux64/modulesets/bundle.modules
new file mode 100644
index 0000000..beaed79
--- /dev/null
+++ b/build/linux64/modulesets/bundle.modules
@@ -0,0 +1,239 @@
+<?xml version="1.0"?><!--*- mode: nxml; indent-tabs-mode: nil -*-->
+<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+  <!-- No funny business, just tarballs -->
+  <repository type="tarball" name="ftp.gnome.org" default="yes" 
href="http://ftp.gnome.org/pub/GNOME/sources/"/>
+  <repository type="tarball" name="sourceforge" href="http://downloads.sourceforge.net/sourceforge/"/>
+  <repository type="tarball" name="sourceforge-libpng" href="http://sourceforge.net/projects/libpng/files/"/>
+  <repository type="tarball" name="cairographics" href="http://cairographics.org/releases/"/>
+  <repository type="tarball" name="ftp.gnu.org" href="http://ftp.gnu.org/gnu/"/>
+  <repository type="tarball" name="sourceware.org" href="ftp://sourceware.org/pub/"/>
+  <repository type="tarball" name="jpeg" href="http://www.ijg.org/files/"/>
+  <repository type="tarball" name="libtiff" href="http://download.osgeo.org/"/>
+  <repository type="tarball" name="freedesktop" href="http://www.freedesktop.org/software/"/>
+  <repository type="tarball" name="icon-theme" href="http://icon-theme.freedesktop.org/releases/"/>
+  <repository type="tarball" name="xmlsoft.org" href="ftp://xmlsoft.org/libxml2/"/>
+  <repository type="tarball" name="hadess" href="http://freedesktop.org/~hadess/"/>
+  <repository type="tarball" name="lennart" href="http://0pointer.de/lennart/projects/"/>
+  <repository type="tarball" name="dbus.freedesktop.org" href="http://dbus.freedesktop.org/releases/"/>
+  <repository type="tarball" name="zlib" href="http://zlib.net/"/>
+
+  <!-- Just for glib/GTK+ -->
+  <repository type="git" name="git.gnome.org" href="git://git.gnome.org/"/>
+
+  <autotools id="libpng" autogenargs="--enable-shared" autogen-sh="configure">
+    <branch version="1.2.51" module="libpng12/1.2.51beta02/libpng-1.2.51beta02.tar.xz"
+            repo="sourceforge-libpng"/>
+    <dependencies>
+      <dep package="zlib"/>
+    </dependencies>
+  </autotools>
+
+  <autotools id="libjpeg" autogen-sh="configure">
+    <branch module="jpegsrc.v8d.tar.gz" version="8c" repo="jpeg" checkoutdir="jpeg-8d">
+    </branch>
+  </autotools>
+
+  <autotools id="zlib" autogen-sh="configure">
+    <branch repo="zlib" module="zlib-1.2.8.tar.gz" version="1.2.8"/>
+  </autotools>
+
+  <autotools id="libtiff" autogen-sh="configure">
+    <branch version="3.9.5" module="libtiff/tiff-3.9.5.tar.gz" repo="libtiff"/>
+    <dependencies>
+      <dep package="libjpeg"/>
+    </dependencies>
+  </autotools>
+
+  <autotools id="libxml2" autogen-sh="configure">
+    <branch version="2.9.0" module="libxml2-2.9.0.tar.gz" repo="xmlsoft.org"/>
+  </autotools>
+
+  <autotools id="expat" autogen-sh="configure">
+    <branch version="2.1.0" module="expat/expat-2.1.0.tar.gz" repo="sourceforge"/>
+  </autotools>
+
+  <autotools id="harfbuzz" autogen-sh="configure">
+    <branch repo="freedesktop" module="harfbuzz/release/harfbuzz-0.9.10.tar.bz2" version="0.9.10"/>
+    <dependencies>
+      <dep package="glib"/>
+    </dependencies>
+  </autotools>
+
+  <autotools id="freetype" autogen-sh="configure" skip-autogen="never" autogenargs="--without-bzip2">
+    <branch module="freetype/freetype-2.4.12.tar.gz" version="2.4.12" repo="sourceforge">
+    </branch>
+    <dependencies>
+      <dep package="zlib"/>
+    </dependencies>
+  </autotools>
+
+  <autotools id="fontconfig" autogen-sh="configure" autogenargs="--disable-docs">
+    <branch repo="freedesktop" version="2.10.95" module="fontconfig/release/fontconfig-2.10.95.tar.bz2"/>
+    <dependencies>
+      <dep package="expat"/>
+      <dep package="freetype"/>
+    </dependencies>
+  </autotools>
+
+  <!-- Another one that won't build in a separate directory -->
+  <autotools id="hicolor-icon-theme" autogen-sh="configure" supports-non-srcdir-builds="no">
+    <branch module="hicolor-icon-theme-0.11.tar.gz" repo="icon-theme"
+           version="0.11" />
+  </autotools>
+
+  <autotools id="shared-mime-info"  autogen-sh="configure"
+             supports-non-srcdir-builds="no" >
+    <branch module="shared-mime-info-1.0.tar.xz" version="1.2"
+            repo="hadess">
+    </branch>
+    <dependencies>
+      <dep package="glib"/>
+    </dependencies>
+  </autotools>
+
+  <autotools id="gettext-runtime" autogen-sh="configure"
+            autogenargs="--without-emacs --disable-java --disable-native-java --disable-libasprintf 
--disable-csharp">
+    <branch repo="ftp.gnu.org" source-subdir="gettext-runtime"
+           module="gettext/gettext-0.18.1.1.tar.gz" version="0.18.1.1"
+            size="15139737" md5sum="3dd55b952826d2b32f51308f2f91aa89">
+    </branch>
+  </autotools>
+
+  <autotools id="dbus" autogen-sh='configure' autogenargs="--disable-selinux">
+    <branch module="dbus/dbus-1.6.18.tar.gz" version="1.6.18"
+           repo="dbus.freedesktop.org">
+    </branch>
+  </autotools>
+
+  <autotools id="libffi" autogen-sh="configure">
+    <branch module="libffi/libffi-3.0.13.tar.gz" repo="sourceware.org" version="3.0.13"/>
+  </autotools>
+
+  <autotools id="canberra"  autogen-sh="configure">
+    <branch version="0.30" module="libcanberra/libcanberra-0.30.tar.xz" repo="lennart"/>
+  </autotools>
+
+  <autotools id="atk" autogen-sh="configure">
+    <branch module="atk/2.10/atk-2.10.0.tar.xz" version="2.10.0"
+            hash="sha256:636917a5036bc851d8491194645d284798ec118919a828be5e713b6ecc5b50b0"/>
+    <after>
+      <dep package="glib"/>
+    </after>
+  </autotools>
+
+ <autotools id="at-spi2-core" autogen-sh="configure">
+   <branch module="at-spi2-core/2.10/at-spi2-core-2.10.2.tar.xz" version="2.10.2"/>
+ </autotools>
+
+ <autotools id="at-spi2-atk" autogen-sh="configure">
+   <branch module="at-spi2-atk/2.10/at-spi2-atk-2.10.2.tar.xz" version="2.10.2"/>
+    <dependencies>
+      <dep package="atk"/>
+      <dep package="at-spi2-core"/>
+      <dep package="dbus"/>
+    </dependencies>
+ </autotools>
+
+  <autotools id="pixman" autogenargs="--disable-gtk" autogen-sh="configure">
+    <branch version="0.30.2" module="pixman-0.30.2.tar.gz"
+            repo="cairographics"
+            hash="sha1:59cc9cd91a2394b7c0aa90ffc7c141f06d75f066"/>
+  </autotools>
+
+  <autotools id="cairo"  autogen-sh="autogen.sh">
+    <branch module="cairo-1.12.16.tar.xz"  version="1.12.16"
+            repo="cairographics"
+            hash="sha1:4f6e337d5d3edd7ea79d1426f575331552b003ec">
+      <patch file="cairo-avoid-longjmp.patch" strip="1" />
+    </branch>
+    <dependencies>
+      <dep package="pixman"/>
+      <dep package="libpng"/>
+    </dependencies>
+  </autotools>
+
+  <!--
+      *************************************************************
+      *                GTK+ and high level deps                   *
+      *************************************************************
+  -->
+  <autotools id="glib" autogen-sh="autogen.sh" autogenargs="--disable-selinux">
+    <branch module="glib" repo="git.gnome.org"/>
+    <dependencies>
+      <dep package="libffi"/>
+      <dep package="gettext-runtime"/>
+    </dependencies>
+  </autotools>
+
+  <autotools id="pango"  autogen-sh="autogen.sh">
+    <branch module="pango/1.36/pango-1.36.1.tar.xz" version="1.36">
+      <patch file="pango-relative-paths.patch" strip="1" />
+      <patch file="pango-old-fontconfig.patch" strip="1" />
+    </branch>
+    <dependencies>
+      <dep package="glib"/>
+      <dep package="cairo"/>
+      <dep package="harfbuzz"/>
+    </dependencies>
+  </autotools>
+
+  <autotools id="gdk-pixbuf" autogen-sh="autogen.sh">
+    <branch module="gdk-pixbuf" repo="git.gnome.org"/>
+    <dependencies>
+      <dep package="libpng"/>
+      <dep package="libjpeg"/>
+      <dep package="libtiff"/>
+    </dependencies>
+  </autotools>
+
+  <autotools id="rsvg" autogen-sh="autogen.sh" autogenargs="--disable-introspection">
+    <branch module="librsvg" repo="git.gnome.org"/>
+    <dependencies>
+      <dep package="gdk-pixbuf"/>
+    </dependencies>
+  </autotools>
+
+  <autotools id="gtk+-3.0" autogen-sh="autogen.sh">
+    <branch module="gtk+" repo="git.gnome.org"/>
+    <dependencies>
+      <dep package="glib"/>
+      <dep package="pango"/>
+      <dep package="atk"/>
+      <dep package="at-spi2-core"/>
+      <dep package="at-spi2-atk"/>
+      <dep package="gdk-pixbuf"/>
+      <dep package="rsvg"/>
+      </dependencies>
+  </autotools>
+
+  <autotools id="gnome-themes-standard" autogen-sh="autogen.sh" autogenargs="--disable-gtk2-engine">
+    <branch module="gnome-themes-standard" repo="git.gnome.org"/>
+  </autotools>
+
+  <metamodule id="meta-platform">
+    <dependencies>
+      <dep package="gtk+-3.0"/>
+      <dep package="hicolor-icon-theme"/>
+      <dep package="gnome-themes-standard"/>
+      <dep package="shared-mime-info"/>
+      <dep package="canberra"/>
+    </dependencies>
+  </metamodule>
+
+  <!--
+      *************************************************************
+      *                    Glade and it's deps                    *
+      *************************************************************
+  -->
+
+  <autotools id="glade"  autogen-sh="autogen.sh">
+    <branch module="glade" repo="git.gnome.org"/>
+    <dependencies>
+      <dep package="meta-platform"/>
+      <dep package="libxml2"/>
+    </dependencies>
+  </autotools>
+
+</moduleset>
diff --git a/build/linux64/modulesets/patches/cairo-avoid-longjmp.patch 
b/build/linux64/modulesets/patches/cairo-avoid-longjmp.patch
new file mode 100644
index 0000000..571beef
--- /dev/null
+++ b/build/linux64/modulesets/patches/cairo-avoid-longjmp.patch
@@ -0,0 +1,16 @@
+--- cairo-1.12.16-original/Makefile.am 2013-08-27 01:11:51.000000000 +0900
++++ cairo-1.12.16/Makefile.am  2013-12-13 19:34:18.206462845 +0900
+@@ -16,11 +16,11 @@ EXTRA_DIST += \
+ 
+ ACLOCAL_AMFLAGS = -I build ${ACLOCAL_FLAGS}
+ 
+-DIST_SUBDIRS = src doc util boilerplate test perf
++DIST_SUBDIRS = src doc util boilerplate perf
+ SUBDIRS = src doc util
+ # libpng is required for our test programs
+ if CAIRO_HAS_PNG_FUNCTIONS
+-SUBDIRS += boilerplate test perf
++SUBDIRS += boilerplate perf
+ endif
+ 
+ configure: cairo-version.h
diff --git a/build/linux64/modulesets/patches/pango-old-fontconfig.patch 
b/build/linux64/modulesets/patches/pango-old-fontconfig.patch
new file mode 100644
index 0000000..d3e9051
--- /dev/null
+++ b/build/linux64/modulesets/patches/pango-old-fontconfig.patch
@@ -0,0 +1,13 @@
+diff --git a/configure.ac b/configure.ac
+index 8e85a0f..1b4a574 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -233,7 +233,7 @@ AM_CONDITIONAL(HAVE_HARFBUZZ, $have_harfbuzz)
+ #
+ have_fontconfig=false
+ if $have_harfbuzz ; then
+-  PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.10.91, have_fontconfig=true, AC_MSG_RESULT([no]))
++  PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.5.0, have_fontconfig=true, AC_MSG_RESULT([no]))
+ fi
+ 
+ #
diff --git a/build/linux64/patches/pango.patch b/build/linux64/modulesets/patches/pango-relative-paths.patch
similarity index 100%
rename from build/linux64/patches/pango.patch
rename to build/linux64/modulesets/patches/pango-relative-paths.patch
diff --git a/build/linux64/triggers/gdk-pixbuf.trigger b/build/linux64/triggers/gdk-pixbuf.trigger
new file mode 100644
index 0000000..ef105f4
--- /dev/null
+++ b/build/linux64/triggers/gdk-pixbuf.trigger
@@ -0,0 +1,30 @@
+# Post-installation hook for gdk-pixbuf.  -*- mode: sh -*-
+# Corresponds to gdk-pixbuf/gdk-pixbuf/Makefile.am:install-data-hook
+#
+# Written by Colin Walters <walters verbum org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+# IfExecutable: gdk-pixbuf-query-loaders
+# LiteralMatch: /gdk-pixbuf-2.0/2.10.0/loaders/
+
+# Make sure the cache is removed before creating it, otherwise we keep prepending a '.'
+# each time the trigger is run
+for cache in `find ${JHBUILD_PREFIX} -path "*gdk-pixbuf-2.0/2.10.0/loaders.cache"`; do
+    rm -f $cache;
+done
+
+gdk-pixbuf-query-loaders --update-cache
diff --git a/build/linux64/triggers/glib.trigger b/build/linux64/triggers/glib.trigger
new file mode 100644
index 0000000..f9f08e7
--- /dev/null
+++ b/build/linux64/triggers/glib.trigger
@@ -0,0 +1,22 @@
+# Post-installation hook for glib/gschema.  -*- mode: sh -*-
+#
+# Written by Colin Walters <walters verbum org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+# IfExecutable: glib-compile-schemas
+# LiteralMatch: /share/glib-2.0/schemas/
+
+glib-compile-schemas $JHBUILD_PREFIX/share/glib-2.0/schemas
diff --git a/build/linux64/triggers/gtk+.trigger b/build/linux64/triggers/gtk+.trigger
new file mode 100644
index 0000000..2e598fb
--- /dev/null
+++ b/build/linux64/triggers/gtk+.trigger
@@ -0,0 +1,26 @@
+# Post-installation hook for gtk icon cache.  -*- mode: sh -*-
+#
+# Written by Colin Walters <walters verbum org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+# IfExecutable: gtk-update-icon-cache
+# LiteralMatch: /share/icons/
+
+for dir in $JHBUILD_PREFIX/share/icons/*; do
+  if test -f $dir/index.theme; then
+    gtk-update-icon-cache --quiet $dir
+  fi
+done
diff --git a/build/linux64/triggers/mime-database.trigger b/build/linux64/triggers/mime-database.trigger
new file mode 100644
index 0000000..e680795
--- /dev/null
+++ b/build/linux64/triggers/mime-database.trigger
@@ -0,0 +1,22 @@
+# Post-installation hook for shared-mime-info.  -*- mode: sh -*-
+#
+# Written by Matthias Clasen <mclasen redhat com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+# IfExecutable: update-mime-database
+# REMatch: /mime/packages/.*\.xml
+
+update-mime-database $JHBUILD_PREFIX/share/mime
diff --git a/build/linux64/triggers/pango.trigger b/build/linux64/triggers/pango.trigger
new file mode 100644
index 0000000..d3662a7
--- /dev/null
+++ b/build/linux64/triggers/pango.trigger
@@ -0,0 +1,36 @@
+# Post-installation hook for pango.  -*- mode: sh -*-
+# Corresponds to gdk-pixbuf/gdk-pixbuf/Makefile.am:install-data-hook
+#
+# Written by Colin Walters <walters verbum org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+# IfExecutable: pango-querymodules
+# REMatch: .*/lib.*/pango/.*/modules/.*\.so
+pango-querymodules --update-cache
+
+modules_cache=
+
+# Post process the pango.modules file to use relative paths, we use a for loop here
+# just because we're not sure the exact location, it used to be in ${prefix}/etc,
+# now it goes in a versioned lib directory 
+for cache in `find ${JHBUILD_PREFIX} -path "*/pango/*/modules.cache"`; do
+    cat $cache | sed -e "s|${JHBUILD_PREFIX}|\.${JHBUILD_PREFIX}|g" > $cache.1 && mv $cache.1 $cache;
+    modules_cache=$cache;
+done
+
+# Setup our main pangorc in the root directory
+echo "[Pango]" > ${JHBUILD_PREFIX}/pangorc
+echo "ModuleFiles = .${modules_cache}" >> ${JHBUILD_PREFIX}/pangorc


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]