diff options
author | Tristan Van Berkom <tristan@upstairslabs.com> | 2013-12-13 21:42:15 +0900 |
---|---|---|
committer | Tristan Van Berkom <tristan@upstairslabs.com> | 2013-12-13 21:44:10 +0900 |
commit | 902b8c6d422c06c01de9b9aa20ca3ad38641d04f (patch) | |
tree | b76763163e243fd83d9d9c92ca3a0b494230f38d /build | |
parent | 9bfd0ce028f988ef477c3e466a301ebe2f32fe8e (diff) | |
download | glade-902b8c6d422c06c01de9b9aa20ca3ad38641d04f.tar.gz |
Added new jhbuild based bundling system for 64bit linux bundles.
Diffstat (limited to 'build')
-rwxr-xr-x | build/linux64/AppRunScript.sh | 30 | ||||
-rwxr-xr-x | build/linux64/PrepareAppDir.sh | 104 | ||||
-rw-r--r-- | build/linux64/README | 356 | ||||
-rw-r--r-- | build/linux64/README.lfs | 352 | ||||
-rw-r--r-- | build/linux64/jhbuildrc | 27 | ||||
-rw-r--r-- | build/linux64/libcwrap.h | 215 | ||||
-rw-r--r-- | build/linux64/modulesets/bundle.modules | 239 | ||||
-rw-r--r-- | build/linux64/modulesets/patches/cairo-avoid-longjmp.patch | 16 | ||||
-rw-r--r-- | build/linux64/modulesets/patches/pango-old-fontconfig.patch | 13 | ||||
-rw-r--r-- | build/linux64/modulesets/patches/pango-relative-paths.patch (renamed from build/linux64/patches/pango.patch) | 0 | ||||
-rw-r--r-- | build/linux64/triggers/gdk-pixbuf.trigger | 30 | ||||
-rw-r--r-- | build/linux64/triggers/glib.trigger | 22 | ||||
-rw-r--r-- | build/linux64/triggers/gtk+.trigger | 26 | ||||
-rw-r--r-- | build/linux64/triggers/mime-database.trigger | 22 | ||||
-rw-r--r-- | 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 acf54a19..83b25819 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 00000000..67eff91e --- /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 1d89a829..4c1bc7a4 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 00000000..3d68b112 --- /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 00000000..3d01f07d --- /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 00000000..b425f39c --- /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 00000000..beaed79d --- /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 00000000..571beef8 --- /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 00000000..d3e9051d --- /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 index 09ac19d0..09ac19d0 100644 --- a/build/linux64/patches/pango.patch +++ b/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 00000000..ef105f41 --- /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 00000000..f9f08e72 --- /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 00000000..2e598fbe --- /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 00000000..e680795e --- /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 00000000..d3662a74 --- /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 |