# HG changeset patch # User Masamichi Hosoda # Date 1440830647 -32400 # Node ID a3a0085299f5d6967e0af9d547136aaa9a09f95b # Parent 56f798696a60604d554ea0deb259239ed423ae61 Update pango to 1.36.8 diff -r 56f798696a60 -r a3a0085299f5 gub/specs/pango.py --- a/gub/specs/pango.py Sun Aug 30 19:50:35 2015 +0900 +++ b/gub/specs/pango.py Sat Aug 29 15:44:07 2015 +0900 @@ -1,6 +1,5 @@ import re # -from gub import gnome from gub import misc from gub import loggedos from gub import target @@ -13,23 +12,34 @@ (r'^1\.26', '1.6.0'), (r'^1\.27', '1.6.0'), (r'^1\.28', '1.6.0'), + (r'^1\.29', '1.6.0'), + (r'^1\.30', '1.6.0'), + (r'^1\.31', '1.8.0'), + (r'^1\.32', '1.8.0'), + (r'^1\.33', '1.8.0'), + (r'^1\.34', '1.8.0'), + (r'^1\.35', '1.8.0'), + (r'^1\.36', '1.8.0'), ] class Pango (target.AutoBuild): - source = 'http://ftp.gnome.org/pub/GNOME/sources/pango/1.28/pango-1.28.3.tar.gz' - patches = ['pango-1.20-substitute-env.patch'] + source = 'http://ftp.gnome.org/pub/GNOME/sources/pango/1.36/pango-1.36.8.tar.xz' + patches = [ + 'pango-1.36.8-substitute-env.patch', + 'pango-1.36.8-test-without-cairo.patch', + ] dependencies = [ 'tools::glib', 'freetype-devel', 'fontconfig-devel', 'glib-devel', + 'harfbuzz-devel', 'libtool' ] def get_conflict_dict (self): return {'': ['pangocairo', 'pangocairo-devel', 'pangocairo-doc'], 'devel': ['pangocairo', 'pangocairo-devel', 'pangocairo-doc'], 'doc': ['pangocairo', 'pangocairo-devel', 'pangocairo-doc'], 'runtime': ['pangocairo', 'pangocairo-devel', 'pangocairo-doc']} configure_flags = (target.AutoBuild.configure_flags + misc.join_lines (''' ---without-x --without-cairo ''')) def module_version (self): @@ -66,36 +76,13 @@ file_name) self.map_locate (fix_prefix, etc, '*') -class Pango__linux (Pango): - def untar (self): - Pango.untar (self) - # FIXME: --without-cairo switch is removed in 1.10.1, - # pango only compiles without cairo if cairo is not - # installed linkably on the build system. UGH. - self.file_sub ([('(have_cairo[_a-z0-9]*)=true', '\\1=false'), - ('(cairo[_a-z0-9]*)=yes', '\\1=no')], - '%(srcdir)s/configure') - -class Pango__freebsd (Pango__linux): - dependencies = Pango__linux.dependencies + ['libiconv-devel'] +class Pango__freebsd (Pango): + dependencies = Pango.dependencies + ['libiconv-devel'] class Pango__darwin (Pango): - def configure (self): - Pango.configure (self) - self.file_sub ([('nmedit', '%(target_architecture)s-nmedit')], - '%(builddir)s/libtool') def install (self): Pango.install (self) # FIXME: PANGO needs .so, NOT .dylib? self.dump (''' set PANGO_SO_EXTENSION=.so ''', '%(install_prefix)s/etc/relocate/pango.reloc', env=locals (), mode='a') - -class Pango__mingw (Pango): - def create_config_files (self, prefix='/usr'): - Pango.create_config_files (self, prefix) - etc = self.expand ('%(install_root)s/%(prefix)s/etc/pango', locals ()) - self.dump (''' -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSIOn}/modules/pango-basic-win32${PANGO_SO_EXTENSION} BasicScriptEngineWin32 PangoEngineShape PangoRenderWin32 common: -''', '%(etc)s/pango.modules', env=locals (), mode='a') - Pango.fix_config_files (self, prefix) diff -r 56f798696a60 -r a3a0085299f5 patches/pango-1.20-substitute-env.patch --- a/patches/pango-1.20-substitute-env.patch Sun Aug 30 19:50:35 2015 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ -From abeddd7a12b1493f2db7ea4b60f0a198991d18a4 Mon Sep 17 00:00:00 2001 -From: Han-Wen Nienhuys -Date: Sat, 22 Mar 2008 17:27:52 -0300 -Subject: [PATCH] Pango 1.20 patch for subst env. - ---- - pango/pango-utils.c | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 102 insertions(+), 0 deletions(-) - -diff --git a/pango/pango-utils.c b/pango/pango-utils.c -index d2e4992..c2c49d5 100644 ---- a/pango/pango-utils.c -+++ b/pango/pango-utils.c -@@ -25,6 +25,7 @@ - #include - #include - #include -+#include - - #include "pango-font.h" - #include "pango-features.h" -@@ -171,6 +172,89 @@ pango_trim_string (const char *str) - return g_strndup (str, len); - } - -+ -+/** -+ g_string_substitute_environment() -+ @orig: a string -+ -+ Replaces environment variables of the form ${FOO} or $FOO. -+ -+ Return value: A newly-allocated string, that must be freed with -+ g_string_free() -+ */ -+GString * -+g_string_substitute_environment (GString *orig) -+{ -+ GString * out = g_string_new (""); -+ char *ptr = NULL; -+ -+ ptr = orig->str; -+ while (ptr < orig->str + orig->len) -+ { -+ char *dollar = strchr (ptr, '$'); -+ -+ if (dollar != NULL) -+ { -+ char *start_var = dollar + 1; -+ char *end_var = start_var; -+ char *start_next = end_var; -+ -+ g_string_append_len (out, ptr, dollar - ptr); -+ ptr = dollar; -+ -+ if (*start_var == '{') -+ { -+ start_var ++; -+ -+ end_var = strchr (start_var, '}'); -+ -+ if (end_var == NULL) -+ { -+ end_var = orig->str + orig->len; -+ start_next = end_var; -+ } -+ else -+ { -+ start_next = end_var + 1; -+ } -+ } -+ else -+ { -+ /* -+ Hmm. what to do for $1 , $~ etc.? -+ */ -+ do -+ { -+ end_var ++; -+ } -+ while (isalnum (*end_var) || *end_var == '_'); -+ start_next = end_var; -+ } -+ -+ if (start_var < end_var) -+ { -+ GString *var_name = g_string_new_len (start_var, end_var - start_var); -+ const char *value = g_getenv (var_name->str); -+ if (value != NULL) -+ g_string_append (out, value); -+ g_string_free (var_name, TRUE); -+ -+ -+ ptr = start_next; -+ } -+ } -+ else -+ break; -+ -+ } -+ -+ g_string_append (out, ptr); -+ -+ return out; -+} -+ -+ -+ - /** - * pango_split_file_list: - * @str: a %G_SEARCHPATH_SEPARATOR separated list of filenames -@@ -225,6 +309,16 @@ pango_split_file_list (const char *str) - file = g_strdup (g_get_home_dir()); - } - #endif -+ -+ { -+ GString *file_as_gs = g_string_new (file); -+ GString *substituted = g_string_substitute_environment (file_as_gs); -+ g_free (file); -+ file = substituted->str; -+ g_string_free (substituted, FALSE); -+ g_string_free (file_as_gs, TRUE); -+ } -+ - g_free (files[i]); - files[i] = file; - -@@ -407,6 +501,7 @@ pango_scan_word (const char **pos, GString *out) - return TRUE; - } - -+ - /** - * pango_scan_string: - * @pos: in/out string position -@@ -492,6 +587,13 @@ pango_scan_string (const char **pos, GString *out) - } - } - -+ -+ { -+ GString *subbed = g_string_substitute_environment (out); -+ g_string_assign (out, subbed->str); -+ g_string_free (subbed, TRUE); -+ } -+ - *pos = p; - - return TRUE; --- -1.5.4.1 - diff -r 56f798696a60 -r a3a0085299f5 patches/pango-1.36.8-substitute-env.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/pango-1.36.8-substitute-env.patch Sat Aug 29 15:44:07 2015 +0900 @@ -0,0 +1,139 @@ +--- pango-1.36.8/pango/pango-utils.c.orig 2014-08-31 02:02:57.000000000 +0900 ++++ pango-1.36.8/pango/pango-utils.c 2015-08-30 21:31:27.361804200 +0900 +@@ -43,6 +43,7 @@ + #include + #include + #include ++#include + + #include "pango-font.h" + #include "pango-features.h" +@@ -177,6 +178,89 @@ + return g_strndup (str, len); + } + ++ ++/** ++ g_string_substitute_environment() ++ @orig: a string ++ ++ Replaces environment variables of the form ${FOO} or $FOO. ++ ++ Return value: A newly-allocated string, that must be freed with ++ g_string_free() ++ */ ++GString * ++g_string_substitute_environment (GString *orig) ++{ ++ GString * out = g_string_new (""); ++ char *ptr = NULL; ++ ++ ptr = orig->str; ++ while (ptr < orig->str + orig->len) ++ { ++ char *dollar = strchr (ptr, '$'); ++ ++ if (dollar != NULL) ++ { ++ char *start_var = dollar + 1; ++ char *end_var = start_var; ++ char *start_next = end_var; ++ ++ g_string_append_len (out, ptr, dollar - ptr); ++ ptr = dollar; ++ ++ if (*start_var == '{') ++ { ++ start_var ++; ++ ++ end_var = strchr (start_var, '}'); ++ ++ if (end_var == NULL) ++ { ++ end_var = orig->str + orig->len; ++ start_next = end_var; ++ } ++ else ++ { ++ start_next = end_var + 1; ++ } ++ } ++ else ++ { ++ /* ++ Hmm. what to do for $1 , $~ etc.? ++ */ ++ do ++ { ++ end_var ++; ++ } ++ while (isalnum (*end_var) || *end_var == '_'); ++ start_next = end_var; ++ } ++ ++ if (start_var < end_var) ++ { ++ GString *var_name = g_string_new_len (start_var, end_var - start_var); ++ const char *value = g_getenv (var_name->str); ++ if (value != NULL) ++ g_string_append (out, value); ++ g_string_free (var_name, TRUE); ++ ++ ++ ptr = start_next; ++ } ++ } ++ else ++ break; ++ ++ } ++ ++ g_string_append (out, ptr); ++ ++ return out; ++} ++ ++ ++ + /** + * pango_split_file_list: + * @str: a %G_SEARCHPATH_SEPARATOR separated list of filenames +@@ -232,6 +316,16 @@ + file = g_strdup (g_get_home_dir()); + } + #endif ++ ++ { ++ GString *file_as_gs = g_string_new (file); ++ GString *substituted = g_string_substitute_environment (file_as_gs); ++ g_free (file); ++ file = substituted->str; ++ g_string_free (substituted, FALSE); ++ g_string_free (file_as_gs, TRUE); ++ } ++ + g_free (files[i]); + files[i] = file; + +@@ -414,6 +508,7 @@ + return TRUE; + } + ++ + /** + * pango_scan_string: + * @pos: (inout): in/out string position +@@ -499,6 +594,13 @@ + } + } + ++ ++ { ++ GString *subbed = g_string_substitute_environment (out); ++ g_string_assign (out, subbed->str); ++ g_string_free (subbed, TRUE); ++ } ++ + *pos = p; + + return TRUE; diff -r 56f798696a60 -r a3a0085299f5 patches/pango-1.36.8-test-without-cairo.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/pango-1.36.8-test-without-cairo.patch Sat Aug 29 15:44:07 2015 +0900 @@ -0,0 +1,13 @@ +--- pango-1.36.8/tests/Makefile.in.org 2014-09-23 03:30:19.000000000 +0900 ++++ pango-1.36.8/tests/Makefile.in 2015-08-30 13:36:48.925365600 +0900 +@@ -84,8 +84,8 @@ + @HAVE_WIN32_TRUE@am__append_3 = -DHAVE_WIN32 + @CROSS_COMPILING_FALSE@TESTS = $(check_PROGRAMS) + check_PROGRAMS = testboundaries$(EXEEXT) testboundaries_ucd$(EXEEXT) \ +- testcolor$(EXEEXT) testscript$(EXEEXT) markup-parse$(EXEEXT) \ +- test-layout$(EXEEXT) test-font$(EXEEXT) $(am__EXEEXT_1) \ ++ testcolor$(EXEEXT) testscript$(EXEEXT) \ ++ $(am__EXEEXT_1) \ + $(am__EXEEXT_2) $(am__EXEEXT_3) + @HAVE_CAIRO_TRUE@am__append_4 = testiter test-pangocairo-threads + @HAVE_FREETYPE_TRUE@am__append_5 = test-ot-tags diff -r 56f798696a60 -r a3a0085299f5 sourcefiles/pango.modules --- a/sourcefiles/pango.modules Sun Aug 30 19:50:35 2015 +0900 +++ b/sourcefiles/pango.modules Sat Aug 29 15:44:07 2015 +0900 @@ -3,21 +3,16 @@ # # ModulesPath = ${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules # -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-arabic-fc${PANGO_SO_EXTENSION} ArabicScriptEngineFc PangoEngineShape PangoRenderFc arabic:* -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-basic-fc${PANGO_SO_EXTENSION} BasicScriptEngineFc PangoEngineShape PangoRenderFc armenian:* bopomofo:* cherokee:* coptic:* cyrillic:* deseret:* ethiopic:* georgian:* gothic:* greek:* han:* hiragana:* katakana:* latin:* ogham:* old-italic:* runic:* canadian-aboriginal:* yi:* braille:* cypriot:* limbu:* osmanya:* shavian:* linear-b:* ugaritic:* common: -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-hangul-fc${PANGO_SO_EXTENSION} HangulScriptEngineFc PangoEngineShape PangoRenderFc hangul:* -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-hebrew-fc${PANGO_SO_EXTENSION} HebrewScriptEngineFc PangoEngineShape PangoRenderFc hebrew:* -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-fc${PANGO_SO_EXTENSION} devaScriptEngineFc PangoEngineShape PangoRenderFc devanagari:* -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-fc${PANGO_SO_EXTENSION} bengScriptEngineFc PangoEngineShape PangoRenderFc bengali:* -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-fc${PANGO_SO_EXTENSION} guruScriptEngineFc PangoEngineShape PangoRenderFc gurmukhi:* -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-fc${PANGO_SO_EXTENSION} gujrScriptEngineFc PangoEngineShape PangoRenderFc gujarati:* -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-fc${PANGO_SO_EXTENSION} oryaScriptEngineFc PangoEngineShape PangoRenderFc oriya:* -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-fc${PANGO_SO_EXTENSION} tamlScriptEngineFc PangoEngineShape PangoRenderFc tamil:* -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-fc${PANGO_SO_EXTENSION} teluScriptEngineFc PangoEngineShape PangoRenderFc telugu:* -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-fc${PANGO_SO_EXTENSION} kndaScriptEngineFc PangoEngineShape PangoRenderFc kannada:* -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-fc${PANGO_SO_EXTENSION} mlymScriptEngineFc PangoEngineShape PangoRenderFc malayalam:* -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-fc${PANGO_SO_EXTENSION} sinhScriptEngineFc PangoEngineShape PangoRenderFc sinhala:* -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-khmer-fc${PANGO_SO_EXTENSION} KhmerScriptEngineFc PangoEngineShape PangoRenderFc khmer:* -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-syriac-fc${PANGO_SO_EXTENSION} SyriacScriptEngineFc PangoEngineShape PangoRenderFc syriac:* -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-thai-fc${PANGO_SO_EXTENSION} ThaiScriptEngineFc PangoEngineShape PangoRenderFc thai:* lao:* -${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-tibetan-fc${PANGO_SO_EXTENSION} TibetanScriptEngineFc PangoEngineShape PangoRenderFc tibetan:* +${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-arabic-lang${PANGO_SO_EXTENSION} ArabicScriptEngineLang PangoEngineLang PangoRenderNone arabic:* +${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-basic-fc${PANGO_SO_EXTENSION} BasicScriptEngineFc PangoEngineShape PangoRenderFc common: +${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-lang${PANGO_SO_EXTENSION} devaIndicScriptEngineLang PangoEngineLang PangoRenderNone devanagari:* +${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-lang${PANGO_SO_EXTENSION} bengIndicScriptEngineLang PangoEngineLang PangoRenderNone bengali:* +${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-lang${PANGO_SO_EXTENSION} guruIndicScriptEngineLang PangoEngineLang PangoRenderNone gurmukhi:* +${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-lang${PANGO_SO_EXTENSION} gujrIndicScriptEngineLang PangoEngineLang PangoRenderNone gujarati:* +${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-lang${PANGO_SO_EXTENSION} oryaIndicScriptEngineLang PangoEngineLang PangoRenderNone oriya:* +${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-lang${PANGO_SO_EXTENSION} tamlIndicScriptEngineLang PangoEngineLang PangoRenderNone tamil:* +${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-lang${PANGO_SO_EXTENSION} teluIndicScriptEngineLang PangoEngineLang PangoRenderNone telugu:* +${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-lang${PANGO_SO_EXTENSION} kndaIndicScriptEngineLang PangoEngineLang PangoRenderNone kannada:* +${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-lang${PANGO_SO_EXTENSION} mlymIndicScriptEngineLang PangoEngineLang PangoRenderNone malayalam:* +${PANGO_PREFIX}/lib/pango/${PANGO_MODULE_VERSION}/modules/pango-indic-lang${PANGO_SO_EXTENSION} sinhIndicScriptEngineLang PangoEngineLang PangoRenderNone sinhala:* +