view gub/specs/pango.py @ 6397:754346b9dc1d

Upgrade pango to 1.28.3 Fix issue 2656: some LilyPond builds don't produce font ligatures Pango 1.28.4 requires glib 2.24.0. However, GUB's glib is 2.21.5, now. Therefore, in order to upgrade to newer pango, it is necessary to also upgrade glib.
author Masamichi Hosoda <trueroad@users.noreply.github.com>
date Tue, 24 Mar 2015 22:59:38 +0900
parents 4af0bd462b71
children a3a0085299f5
line wrap: on
line source

import re
#
from gub import gnome
from gub import misc
from gub import loggedos
from gub import target

pango_module_version_regexes = [
    (r'^1\.14', '1.5.0'),
    (r'^1\.20', '1.6.0'),
    (r'^1\.22', '1.6.0'),
    (r'^1\.24', '1.6.0'),
    (r'^1\.26', '1.6.0'),
    (r'^1\.27', '1.6.0'),
    (r'^1\.28', '1.6.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']
    dependencies = [
            'tools::glib', 
            'freetype-devel',
            'fontconfig-devel',
            'glib-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):
        result = None
        version = self.version()
        for regex, candidate in pango_module_version_regexes:
            if re.match(regex, version):
                result = candidate
                break
        assert result
        return result
    def install (self):
        target.AutoBuild.install (self)
        self.create_config_files ()
        self.fix_config_files ()
    def create_config_files (self, prefix='/usr'):
        pango_module_version = self.module_version ()
        etc = self.expand ('%(install_root)s/%(prefix)s/etc/pango', locals ())
        self.dump ('''[Pango]
ModuleFiles = $PANGO_PREFIX/etc/pango/pango.modules
ModulesPath = $PANGO_PREFIX/lib/pango/%(pango_module_version)s/modules
''' % locals (), etc + '/pangorc')
        self.dump ('''
setfile PANGO_RC_FILE=$INSTALLER_PREFIX/etc/pango/pangorc
setdir PANGO_PREFIX=$INSTALLER_PREFIX/
set PANGO_MODULE_VERSION=%(pango_module_version)s
''', '%(install_prefix)s/etc/relocate/pango.reloc', env=locals ())
        self.copy ('%(sourcefiledir)s/pango.modules', etc)
    def fix_config_files (self, prefix='/usr'):
        etc = self.expand ('%(install_root)s/%(prefix)s/etc/pango', locals ())
        self.system ('mkdir -p %(etc)s' , locals ())
        def fix_prefix (logger, file_name):
            loggedos.file_sub (logger, [('/' + prefix + '/', '$PANGO_PREFIX/')],
                               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__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)