diff options
-rw-r--r-- | cerbero/bootstrap/linux.py | 7 | ||||
-rw-r--r-- | cerbero/commands/gensdkshell.py | 3 | ||||
-rw-r--r-- | packages/base-system-1.0.package | 2 | ||||
-rw-r--r-- | recipes/at-spi2-atk.recipe | 21 | ||||
-rw-r--r-- | recipes/at-spi2-core.recipe | 29 | ||||
-rw-r--r-- | recipes/atk.recipe | 6 | ||||
-rw-r--r-- | recipes/gnome-themes-standard.recipe | 21 | ||||
-rw-r--r-- | recipes/gtk+3.recipe | 139 | ||||
-rw-r--r-- | recipes/gtk+3/0001-gtksettings-Allow-setting-the-GTK-theme-with-an-envv.patch | 97 | ||||
-rw-r--r-- | recipes/harfbuzz.recipe | 21 | ||||
-rw-r--r-- | recipes/librsvg.recipe | 8 | ||||
-rw-r--r-- | recipes/pango.recipe | 8 |
12 files changed, 350 insertions, 12 deletions
diff --git a/cerbero/bootstrap/linux.py b/cerbero/bootstrap/linux.py index 8b146428..98d26cdb 100644 --- a/cerbero/bootstrap/linux.py +++ b/cerbero/bootstrap/linux.py @@ -50,7 +50,7 @@ class DebianBootstrapper (UnixBootstrapper): 'libxml-simple-perl', 'dpkg-dev', 'debhelper', 'build-essential', 'devscripts', 'fakeroot', 'transfig', 'gperf', 'libdbus-glib-1-dev', 'wget', 'glib-networking', - 'chrpath', 'libfuse-dev'] + 'libxtst-dev', 'libxrandr-dev', 'libbonobo2-dev', 'chrpath', 'libfuse-dev'] distro_packages = { DistroVersion.DEBIAN_SQUEEZE: ['libgtk2.0-dev'], DistroVersion.UBUNTU_MAVERICK: ['libgtk2.0-dev'], @@ -86,8 +86,9 @@ class RedHatBootstrapper (UnixBootstrapper): 'libXv-devel', 'mesa-libGL-devel', 'libXcomposite-devel', 'alsa-lib-devel', 'perl-ExtUtils-MakeMaker', 'libXi-devel', 'perl-XML-Simple', 'gperf', 'gdk-pixbuf2-devel', 'wget', - 'docbook-utils-pdf', 'glib-networking', 'help2man','glib2-devel', - 'chrpath', 'fuse-devel'] + 'docbook-utils-pdf', 'glib-networking', 'help2man', + 'dbus-devel', 'glib2-devel', 'libXrandr-devel', + 'libXtst-devel', 'libbonobo-devel', 'chrpath', 'fuse-devel'] def __init__(self, config): UnixBootstrapper.__init__(self, config) diff --git a/cerbero/commands/gensdkshell.py b/cerbero/commands/gensdkshell.py index 894ebc19..bdb68c78 100644 --- a/cerbero/commands/gensdkshell.py +++ b/cerbero/commands/gensdkshell.py @@ -98,6 +98,9 @@ class GenSdkShell(Command): self._putvar('LDFLAGS', '-L%s ${LDFLAGS}' % libdir, " ") self._putvar('GIO_EXTRA_MODULES', '%s/gio/modules' % libdir) self._putvar('GI_TYPELIB_PATH', '%s/girepository-1.0' % libdir) + if config.variants.gtk: + self._putvar('GTK_PATH', '%s/gtk-3.0' % libdir, None) + self._putvar('GTK_DATA_PREFIX', prefix_env, None) envstr = 'export %s="%s"\n' % (prefix_env_name, prefix) for e, v in env.iteritems(): diff --git a/packages/base-system-1.0.package b/packages/base-system-1.0.package index c119812f..0cca0df5 100644 --- a/packages/base-system-1.0.package +++ b/packages/base-system-1.0.package @@ -20,7 +20,7 @@ class Package(package.Package): 'glib:libs:lang:bins:schemas', 'orc:libs', 'pango:libs:modules', 'libpng:libs', 'tiff:libs', 'jpeg:libs', 'libxml2:libs', 'pixman:libs', - 'zlib:libs', 'bzip2:libs', ] + 'zlib:libs', 'bzip2:libs', 'harfbuzz:libs'] platform_files = { Platform.WINDOWS: ['gettext:libs:lang', 'libiconv:libs:lang', diff --git a/recipes/at-spi2-atk.recipe b/recipes/at-spi2-atk.recipe new file mode 100644 index 00000000..7a4b157a --- /dev/null +++ b/recipes/at-spi2-atk.recipe @@ -0,0 +1,21 @@ +# -*- Mode: Python -*- vi:si:et:sw=4:sts=4:ts=4:syntax=python + + +class Recipe(recipe.Recipe): + name = 'at-spi2-atk' + version = '2.10.2' + licenses = [License.LGPLv2Plus] + deps = ['atk', 'at-spi2-core'] + use_system_libs = True + + stype = SourceType.TARBALL + url = 'http://ftp.gnome.org/pub/GNOME/sources/at-spi2-atk/2.10/at-spi2-atk-2.10.2.tar.xz' + + files_libs = ['libatk-bridge-2.0'] + files_misc = ['lib/gnome-settings-daemon-3.0/gtk-modules/at-spi2-atk.desktop'] + files_devel = ['include/at-spi2-atk/', 'lib/pkgconfig/atk-bridge-2.0.pc'] + + def prepare(self): + if self.config.target_platform != Platform.LINUX: + self.configure_options = ' --disable-gtk-doc' + diff --git a/recipes/at-spi2-core.recipe b/recipes/at-spi2-core.recipe new file mode 100644 index 00000000..34e81a44 --- /dev/null +++ b/recipes/at-spi2-core.recipe @@ -0,0 +1,29 @@ +# -*- Mode: Python -*- vi:si:et:sw=4:sts=4:ts=4:syntax=python + + +class Recipe(recipe.Recipe): + name = 'at-spi2-core' + version = '2.10.2' + licenses = [License.LGPLv2Plus] + deps = [] + + stype = SourceType.TARBALL + url = 'http://ftp.gnome.org/pub/GNOME/sources/at-spi2-core/2.10/at-spi2-core-2.10.2.tar.xz' + use_system_libs = True + + files_libs = ['libatspi'] + files_misc = ['etc/at-spi2/accessibility.conf', + 'etc/xdg/autostart/at-spi-dbus-bus.desktop' + 'libexec/at-spi-bus-launcher', + 'libexec/at-spi2-registryd' + 'share/dbus-1/services/org.a11y.Bus.service', + 'share/dbus-1/services/org.a11y.atspi.Registry.service' + 'etc/at-spi2', + 'etc/xdg/autostart/at-spi-dbus-bus.desktop', + 'libexec/at-spi-bus-launcher', + 'libexec/at-spi2-registryd', + 'share/dbus-1/services/org.a11y.Bus.service', + 'share/dbus-1/services/org.a11y.atspi.Registry.service'] + files_lang = ['at-spi2-core'] + files_gi = ['lib/girepository-1.0/Atspi-2.0.typelib', + 'lib/girepository-1.0/Atspi-2.0.typelib'] diff --git a/recipes/atk.recipe b/recipes/atk.recipe index db49fda4..6e91b63d 100644 --- a/recipes/atk.recipe +++ b/recipes/atk.recipe @@ -3,10 +3,12 @@ class Recipe(recipe.Recipe): name = 'atk' - version = '2.4.0' + version = '2.10.0' licenses = [License.LGPLv2Plus] deps = ['glib'] - autoreconf = True + + stype = SourceType.TARBALL + url = 'http://ftp.acc.umu.se/pub/GNOME/sources/atk/2.10/atk-2.10.0.tar.xz' files_libs = ['libatk-1.0'] files_devel = ['lib/pkgconfig/atk.pc', 'include/atk-1.0'] diff --git a/recipes/gnome-themes-standard.recipe b/recipes/gnome-themes-standard.recipe new file mode 100644 index 00000000..66ba6b41 --- /dev/null +++ b/recipes/gnome-themes-standard.recipe @@ -0,0 +1,21 @@ +# -*- Mode: Python -*- vi:si:et:sw=4:sts=4:ts=4:syntax=python + +class Recipe(recipe.Recipe): + name = 'gnome-themes-standard' + version = '3.10.0' + licenses = [License.LGPLv2_1] + + use_system_libs = True # Needs acces to X11 for gdk3 + stype = SourceType.TARBALL + url = 'http://ftp.gnome.org/pub/GNOME/sources/gnome-themes-standard/3.10/gnome-themes-standard-3.10.0.tar.xz' + deps = ['gtk+3', 'librsvg'] + configure_options = '--disable-gtk2-engine' + + files_misc = ['lib/gtk-3.0/3.0.0/theming-engines/libadwaita%(pext)s', + 'share/gnome-background-properties/adwaita.xml', + 'share/icons/Adwaita', + 'share/icons/HighContrast', + 'share/themes/Adwaita', + 'share/themes/HighContrast', + ] + diff --git a/recipes/gtk+3.recipe b/recipes/gtk+3.recipe new file mode 100644 index 00000000..e0484c0f --- /dev/null +++ b/recipes/gtk+3.recipe @@ -0,0 +1,139 @@ +# -*- Mode: Python -*- vi:si:et:sw=4:sts=4:ts=4:syntax=python + + +class Recipe(recipe.Recipe): + name = 'gtk+3' + version = '3.10.7' + # TODO: check license - some source files are LGPLv2, others LGPLv2+, + # others LGPLv2.1+, COPYING is LGPLv2 and the webpage states LGPLv2.1 + licenses = [License.LGPLv2_1Plus] + configure_options = '--with-included-immodules ' + deps = ['glib', 'atk', 'pango', 'gdk-pixbuf', 'cairo'] + platform_deps = { + Platform.LINUX: ['at-spi2-atk'], + } + use_system_libs = True + + stype = SourceType.TARBALL + patches = ['gtk+3/0001-gtksettings-Allow-setting-the-GTK-theme-with-an-envv.patch'] + url = 'http://ftp.gnome.org/pub/GNOME/sources/gtk+/3.10/gtk+-%(version)s.tar.xz' + tarball_dirname = 'gtk+-%(version)s' + + files_libs = ['libgailutil-3', 'libgdk-3', 'libgtk-3'] + + files_bins = ['gtk3-widget-factory', + 'gtk-launch', + 'gtk-query-immodules-3.0', + 'gtk-update-icon-cache'] + + files_devel = [ + 'bin/gtk3-demo', + 'bin/gtk3-demo-application', + 'lib/pkgconfig/gtk+-3.0.pc', + 'lib/pkgconfig/gdk-3.0.pc', + 'lib/pkgconfig/gail-3.0.pc', + 'include/gtk-3.0', + 'include/gail-3.0', + ] + + files_misc = ['etc/gtk-3.0/'] + + platform_files_libs = { + Platform.WINDOWS: ['libgtk-win32-3.0', 'libgdk-win32-3.0'], + Platform.DARWIN: ['libgtk-quartz-3.0', 'libgdk-quartz-3.0'], + Platform.LINUX: ['libgtk-x11-3.0', 'libgdk-x11-3.0'], + } + + platform_files_devel = { + Platform.WINDOWS: [ + 'lib/pkgconfig/gtk+-win32-3.0.pc', 'lib/pkgconfig/gdk-win32-3.0.pc'], + Platform.DARWIN: [ + 'lib/pkgconfig/gtk+-quartz-3.0.pc', 'lib/pkgconfig/gdk-quartz-3.0.pc'], + Platform.LINUX: [ + 'lib/pkgconfig/gtk+-x11-3.0.pc', 'lib/pkgconfig/gdk-x11-3.0.pc'], + } + platform_files_themes = { + Platform.LINUX: [ + 'share/themes/Default/gtk-3.0/gtk-keys.css', + 'share/themes/Emacs/gtk-3.0/gtk-keys.css' + ], + Platform.WINDOWS: [ + 'share/themes/MS-Windows/gtk-3.0/gtkrc', + 'lib/gtk-3.0/2.10.0/engines/libwimp.dll',] + } + files_lang = ['gtk30', 'gtk30-properties'] + files_typelibs = ['Gdk-3.0', 'Gtk-3.0'] + + platform_files_gi = { + Platform.LINUX: ['lib/girepository-1.0/GdkX11-3.0.typelib', + 'share/gir-1.0/GdkX11-3.0.gir' + ] + } + + def _set_flags(self, module_path1=None, module_path2=None, theme_path=None): + self.append_env['CFLAGS'] = self._gtk_flags(module_path1, module_path2, theme_path) + + def _gtk_flags(self, module_path1=None, module_path2=None, theme_path=None): + flags = '' + def escape(path): + return '\\"%s\\"' % path + if module_path1 is not None: + flags += ' -DGST_SDK_GTK_DISTRO_GTK_MODULE_PATH=%s' % escape(module_path1) + if module_path2 is not None: + flags += ' -DGST_SDK_GTK_DISTRO_GTK_MODULE_PATH2=%s' % escape(module_path2) + if theme_path is not None: + flags += ' -DGST_SDK_GTK_DISTRO_GTK_THEME_PATH=%s' % escape(theme_path) + return flags + + def prepare(self): + if self.config.target_platform != Platform.LINUX: + self.configure_options += '--disable-gtk-doc ' + if self.config.target_platform == Platform.WINDOWS: + self.configure_options += '--disable-papi --disable-cups ' + elif self.config.target_platform == Platform.DARWIN: + self.configure_options += '--enable-quartz-backend ' + elif self.config.target_platform == Platform.LINUX: + # Can't change CFLAGS and use configure cache + self.can_use_configure_cache = False + mod_path1 = '/usr/lib/gtk-3.0' + mod_path2 = None + themes_path = '/usr/share/themes' + # Old Debian/Ubuntu + if self.config.target_distro_version in [DistroVersion.DEBIAN_SQUEEZE, + DistroVersion.UBUNTU_LUCID, + DistroVersion.UBUNTU_MAVERICK]: + pass + # Ubuntu + elif self.config.target_distro_version in [DistroVersion.UBUNTU_NATTY, + DistroVersion.UBUNTU_ONEIRIC, + DistroVersion.UBUNTU_PRECISE, + DistroVersion.UBUNTU_QUANTAL, + DistroVersion.UBUNTU_RARING, + DistroVersion.UBUNTU_SAUCY]: + if self.config.target_arch == Architecture.X86: + mod_path2 = '/usr/lib/i386-linux-gnu/gtk-3.0' + elif self.config.target_arch == Architecture.X86_64: + mod_path2 = '/usr/lib/x86_64-linux-gnu/gtk-3.0' + # Debian + elif self.config.target_distro_version in [DistroVersion.DEBIAN_WHEEZY, + DistroVersion.DEBIAN_JESSIE]: + if self.config.target_arch == Architecture.X86: + mod_path1 = '/usr/lib/i386-linux-gnu/gtk-3.0' + elif self.config.target_arch == Architecture.X86_64: + mod_path1 = '/usr/lib/x86_64-linux-gnu/gtk-3.0' + # RedHat + elif self.config.target_distro_version in [DistroVersion.FEDORA_16, + DistroVersion.FEDORA_17, + DistroVersion.FEDORA_18, + DistroVersion.FEDORA_19, + DistroVersion.FEDORA_20, + DistroVersion.REDHAT_6, + ]: + if self.config.target_arch == Architecture.X86_64: + mod_path1 = '/usr/lib64/gtk-3.0' + elif self.config.target_distro == Distro.SUSE: + if self.config.target_arch == Architecture.X86_64: + mod_path1 = '/usr/lib64/gtk-3.0' + else: + raise FatalError(_("Add specific for other Linux distributions here")) + self._set_flags(mod_path1, mod_path2, themes_path) diff --git a/recipes/gtk+3/0001-gtksettings-Allow-setting-the-GTK-theme-with-an-envv.patch b/recipes/gtk+3/0001-gtksettings-Allow-setting-the-GTK-theme-with-an-envv.patch new file mode 100644 index 00000000..2c37324b --- /dev/null +++ b/recipes/gtk+3/0001-gtksettings-Allow-setting-the-GTK-theme-with-an-envv.patch @@ -0,0 +1,97 @@ +From 1e70ad1cd126942b38e83c2d01712e8dc7ca675e Mon Sep 17 00:00:00 2001 +From: "Jasper St. Pierre" <jstpierre@mecheye.net> +Date: Fri, 1 Nov 2013 16:03:56 -0400 +Subject: [PATCH] gtksettings: Allow setting the GTK+ theme with an envvar + +To test with Raleigh much easier. +--- + gtk/gtksettings.c | 56 +++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 34 insertions(+), 22 deletions(-) + +diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c +index 140d15b..e61a4b7 100644 +--- a/gtk/gtksettings.c ++++ b/gtk/gtksettings.c +@@ -2881,45 +2881,57 @@ settings_update_provider (GdkScreen *screen, + } + } + ++static char * ++get_theme_name (GtkSettings *settings) ++{ ++ char *theme_name = NULL; ++ ++ if (g_getenv ("GTK_THEME")) ++ theme_name = g_strdup (g_getenv ("GTK_THEME")); ++ ++ if (theme_name && *theme_name) ++ return theme_name; ++ ++ g_free (theme_name); ++ g_object_get (settings, ++ "gtk-theme-name", &theme_name, ++ NULL); ++ ++ if (theme_name && *theme_name) ++ return theme_name; ++ ++ g_free (theme_name); ++ return g_strdup ("Raleigh"); ++} ++ + static void + settings_update_theme (GtkSettings *settings) + { + GtkSettingsPrivate *priv = settings->priv; + gboolean prefer_dark_theme; + gchar *theme_name; ++ gchar *theme_dir; ++ gchar *path; + + g_object_get (settings, +- "gtk-theme-name", &theme_name, + "gtk-application-prefer-dark-theme", &prefer_dark_theme, + NULL); + +- if (!theme_name || !*theme_name) +- { +- g_free (theme_name); +- theme_name = g_strdup ("Raleigh"); +- } +- ++ theme_name = get_theme_name (settings); ++ + _gtk_css_provider_load_named (priv->theme_provider, + theme_name, + prefer_dark_theme ? "dark" : NULL); + +- if (theme_name && *theme_name) +- { +- gchar *theme_dir; +- gchar *path; +- +- /* reload per-theme settings */ +- theme_dir = _gtk_css_provider_get_theme_dir (); +- path = g_build_filename (theme_dir, theme_name, "gtk-3.0", "settings.ini", NULL); +- +- if (g_file_test (path, G_FILE_TEST_EXISTS)) +- gtk_settings_load_from_key_file (settings, path, GTK_SETTINGS_SOURCE_THEME); ++ /* reload per-theme settings */ ++ theme_dir = _gtk_css_provider_get_theme_dir (); ++ path = g_build_filename (theme_dir, theme_name, "gtk-3.0", "settings.ini", NULL); + +- g_free (theme_dir); +- g_free (path); +- } ++ if (g_file_test (path, G_FILE_TEST_EXISTS)) ++ gtk_settings_load_from_key_file (settings, path, GTK_SETTINGS_SOURCE_THEME); + +- g_free (theme_name); ++ g_free (theme_dir); ++ g_free (path); + } + + static void +-- +1.8.5.3 + diff --git a/recipes/harfbuzz.recipe b/recipes/harfbuzz.recipe new file mode 100644 index 00000000..64864a4d --- /dev/null +++ b/recipes/harfbuzz.recipe @@ -0,0 +1,21 @@ +# -*- Mode: Python -*- vi:si:et:sw=4:sts=4:ts=4:syntax=python + + +class Recipe(recipe.Recipe): + name = 'harfbuzz' + version = '0.9.24' + stype = SourceType.TARBALL + url = 'http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-0.9.24.tar.bz2' + licenses = [License.LGPLv2Plus] + deps = ['fontconfig', 'cairo', 'glib'] + + files_bins = ['hb-ot-shape-closure', 'hb-view', 'hb-shape'] + files_libs = ['libharfbuzz'] + files_devel = ['include/harfbuzz/*.h', 'lib/pkgconfig/harfbuzz.pc'] + + def prepare(self): + if self.config.target_platform != Platform.LINUX: + self.configure_options += '--with-icu=no ' + else: + self.files_devel.append('lib/pkgconfig/harfbuzz-icu.pc') + self.files_libs.append('libharfbuzz-icu') diff --git a/recipes/librsvg.recipe b/recipes/librsvg.recipe index d573719a..786701dd 100644 --- a/recipes/librsvg.recipe +++ b/recipes/librsvg.recipe @@ -3,10 +3,12 @@ class Recipe(recipe.Recipe): name = 'librsvg' - version = '2.36.1' + version = '2.40.1' licenses = [License.LGPLv2] - deps = ['libcroco'] - configure_options = '--enable-introspection=no' + deps = ['gdk-pixbuf', 'libcroco', 'gtk+3'] + + stype = SourceType.TARBALL + url = 'http://ftp.acc.umu.se/pub/GNOME/sources/librsvg/2.40/librsvg-2.40.1.tar.xz' files_libs = ['librsvg-2'] files_bins = ['rsvg-convert'] diff --git a/recipes/pango.recipe b/recipes/pango.recipe index 95fdf80f..8127f3db 100644 --- a/recipes/pango.recipe +++ b/recipes/pango.recipe @@ -3,14 +3,14 @@ class Recipe(recipe.Recipe): name = 'pango' - version = '1.30.1' + version = '1.36.1' stype = SourceType.TARBALL - url = 'http://ftp.gnome.org/pub/GNOME/sources/pango/1.30/pango-1.30.1.tar.xz' + url = 'http://ftp.acc.umu.se/pub/GNOME/sources/pango/1.36/pango-1.36.1.tar.xz' autoreconf = True autoreconf_sh = 'ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS" autoreconf -ivf ' licenses = [License.LGPLv2Plus] configure_options = '--with-included-modules --enable-static --disable-gtk-doc' - deps = ['cairo', 'fontconfig', 'freetype', 'gtk-doc-lite'] + deps = ['cairo', 'fontconfig', 'freetype', 'gtk-doc-lite', 'harfbuzz'] files_libs = ['libpangocairo-1.0', 'libpango-1.0', 'libpangoft2-1.0'] files_bins = ['pango-querymodules', 'pango-view'] @@ -19,9 +19,11 @@ class Recipe(recipe.Recipe): 'lib/pkgconfig/pangocairo.pc'] platform_files_libs = { Platform.WINDOWS: ['libpangowin32-1.0'], + Platform.LINUX: ['libpango-1.0'], } platform_files_devel = { Platform.WINDOWS: ['lib/pkgconfig/pangowin32.pc'], + Platform.LINUX: ['lib/pkgconfig/pango.pc'], } files_typelibs = [ 'Pango-1.0', |