summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.com>2020-12-28 16:41:01 +0000
committerTim-Philipp Müller <tim@centricular.com>2021-01-17 15:11:59 +0000
commit96d52e17a0837b800f6c6031ea638c46a3259a27 (patch)
tree9437f43cdd801aeaad15aafe601d2e9f9659c866
parent9300c3be3dd4ee9ad77908adf20dfe79a5e6a711 (diff)
fontconfig: update to 2.13.93 and build with meson
Removed xcode8 sdk workaround for mkostemp, probably needs fixing in meson.build if detection is incorrect with older min-*-version targets (e.g. by passing the right header file prefix to cc.has_function). Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/675>
-rw-r--r--recipes/fontconfig.recipe37
-rw-r--r--recipes/fontconfig/0001-Fix-cross-compilation-by-passing-CPPFLAGS-to-CPP.patch39
-rw-r--r--recipes/fontconfig/0001-handle-absolute-sysconfdir-when-installing-symlinks.patch37
-rw-r--r--recipes/fontconfig/0001-meson-error-out-in-script-if-gperf-preprocessing-fai.patch25
-rw-r--r--recipes/fontconfig/0001-meson-fix-cross-compilation-issues-with-gperf-header.patch75
-rw-r--r--recipes/fontconfig/0002-fcatomic-Fix-EXC_BAD_ACCESS-on-iOS-ARM64.patch46
-rw-r--r--recipes/fontconfig/0003-Completely-disable-building-of-tests.patch42
-rw-r--r--recipes/fontconfig/0003-configure-Allow-static-build.patch25
8 files changed, 155 insertions, 171 deletions
diff --git a/recipes/fontconfig.recipe b/recipes/fontconfig.recipe
index b7697339..a37d95a8 100644
--- a/recipes/fontconfig.recipe
+++ b/recipes/fontconfig.recipe
@@ -1,21 +1,25 @@
# -*- Mode: Python -*- vi:si:et:sw=4:sts=4:ts=4:syntax=python
import os
-from cerbero.utils import needs_xcode8_sdk_workaround
+from cerbero.tools.libtool import LibtoolLibrary
+from cerbero.tools.libtool import get_libtool_versions
class Recipe(recipe.Recipe):
name = 'fontconfig'
- version = '2.12.6'
+ version = '2.13.93'
stype = SourceType.TARBALL
url = 'https://www.freedesktop.org/software/fontconfig/release/fontconfig-%(version)s.tar.gz'
- tarball_checksum = '064b9ebf060c9e77011733ac9dc0e2ce92870b574cca2405e11f5353a683c334'
+ tarball_checksum = '0f302a18ee52dde0793fe38b266bf269dfe6e0c0ae140e30d72c6cca5dc08db5'
licenses = [{License.MIT: ['COPYING']}]
- configure_options = '--disable-docs'
+ btype = BuildType.MESON
+ meson_options = {'doc': 'disabled', 'tests': 'disabled', 'tools': 'disabled'}
deps = ['expat', 'freetype', 'zlib', 'bzip2']
patches = [
- 'fontconfig/0001-Fix-cross-compilation-by-passing-CPPFLAGS-to-CPP.patch',
- # https://gitlab.freedesktop.org/fontconfig/fontconfig/-/merge_requests/88
- 'fontconfig/0002-fcatomic-Fix-EXC_BAD_ACCESS-on-iOS-ARM64.patch',
- 'fontconfig/0003-Completely-disable-building-of-tests.patch',
+ # From git master post-2.13.93
+ 'fontconfig/0001-meson-error-out-in-script-if-gperf-preprocessing-fai.patch',
+ # https://gitlab.freedesktop.org/fontconfig/fontconfig/-/merge_requests/138/
+ 'fontconfig/0001-handle-absolute-sysconfdir-when-installing-symlinks.patch',
+ # https://gitlab.freedesktop.org/fontconfig/fontconfig/-/merge_requests/165
+ 'fontconfig/0001-meson-fix-cross-compilation-issues-with-gperf-header.patch'
]
files_libs = ['libfontconfig']
@@ -30,19 +34,14 @@ class Recipe(recipe.Recipe):
def prepare(self):
if self.config.target_platform in (Platform.WINDOWS, Platform.ANDROID):
self.deps.append('libiconv')
- if needs_xcode8_sdk_workaround(self.config):
- self.set_env('ac_cv_func_mkostemp', 'no')
-
- if self.config.target_platform == Platform.WINDOWS:
- if self.config.target_arch == Architecture.X86_64:
- self.configure_options += ' --with-arch=x86_64 '
- else:
- self.configure_options += ' --with-arch=i686 '
- else:
- self.autoreconf = True
- self.patches += ['fontconfig/0003-configure-Allow-static-build.patch']
def post_install(self):
+ # Meson does not generate la files
+ major, minor, micro = get_libtool_versions(self.version)
+ libtool_la = LibtoolLibrary('fontconfig', major, minor, micro,
+ self.config.libdir, self.config.target_platform,
+ deps=['expat', 'freetype', 'bz2', 'z'])
+ libtool_la.save()
# Create relative symlinks to prevent breakage during packaging
if self.config.platform != Platform.WINDOWS:
confddir = os.path.join(self.config.prefix, 'etc', 'fonts', 'conf.d')
diff --git a/recipes/fontconfig/0001-Fix-cross-compilation-by-passing-CPPFLAGS-to-CPP.patch b/recipes/fontconfig/0001-Fix-cross-compilation-by-passing-CPPFLAGS-to-CPP.patch
deleted file mode 100644
index 05d3cbd6..00000000
--- a/recipes/fontconfig/0001-Fix-cross-compilation-by-passing-CPPFLAGS-to-CPP.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 3b3f1d502d5abdac5d96a9c5e70408891357572b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= <olivier.crete@collabora.com>
-Date: Thu, 1 Feb 2018 10:52:40 +0000
-Subject: [PATCH 1/3] Fix cross-compilation by passing CPPFLAGS to CPP
-
----
- src/Makefile.am | 2 +-
- src/Makefile.in | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 726c435..f8c8bd8 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -109,7 +109,7 @@ fcobjshash.gperf: Makefile stamp-fcobjshash.gperf
- @$(MAKE) stamp-fcobjshash.gperf
- @touch -r stamp-fcobjshash.gperf $@
- stamp-fcobjshash.gperf: fcobjshash.gperf.h fcobjs.h
-- $(AM_V_GEN) $(CPP) -I$(top_srcdir) $< | \
-+ $(AM_V_GEN) $(CPP) -I$(top_srcdir) $(CPPFLAGS) $< | \
- $(SED) 's/^ *//;s/ *, */,/' | \
- $(GREP) '^[^#]' | \
- awk ' \
-diff --git a/src/Makefile.in b/src/Makefile.in
-index 0dd5c74..90d3a7a 100644
---- a/src/Makefile.in
-+++ b/src/Makefile.in
-@@ -902,7 +902,7 @@ fcobjshash.gperf: Makefile stamp-fcobjshash.gperf
- @$(MAKE) stamp-fcobjshash.gperf
- @touch -r stamp-fcobjshash.gperf $@
- stamp-fcobjshash.gperf: fcobjshash.gperf.h fcobjs.h
-- $(AM_V_GEN) $(CPP) -I$(top_srcdir) $< | \
-+ $(AM_V_GEN) $(CPP) -I$(top_srcdir) $(CPPFLAGS) $< | \
- $(SED) 's/^ *//;s/ *, */,/' | \
- $(GREP) '^[^#]' | \
- awk ' \
---
-2.27.0.windows.1
-
diff --git a/recipes/fontconfig/0001-handle-absolute-sysconfdir-when-installing-symlinks.patch b/recipes/fontconfig/0001-handle-absolute-sysconfdir-when-installing-symlinks.patch
new file mode 100644
index 00000000..e3ac53a1
--- /dev/null
+++ b/recipes/fontconfig/0001-handle-absolute-sysconfdir-when-installing-symlinks.patch
@@ -0,0 +1,37 @@
+From 4912e1b58e2297c13857ec08fccf77221f106cd6 Mon Sep 17 00:00:00 2001
+From: Heiko Becker <heirecka@exherbo.org>
+Date: Thu, 3 Dec 2020 21:04:26 +0100
+Subject: [PATCH] Handle absolute sysconfdir when installing symlinks
+
+sysconfdir defaults to /etc when the prefix is set to /usr. But joining
+MESON_INSTALL_DESTDIR_PREFIX and sysconfdir when the latter is an
+absoulte path, results in sysconfdir only. Which might lead to an error
+during install because /etc/fonts/conf.d/ might already exist from an
+pre-existing fontconfig installation.
+---
+ conf.d/link_confs.py | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/conf.d/link_confs.py b/conf.d/link_confs.py
+index 0c42efb5..bafaf3a8 100644
+--- a/conf.d/link_confs.py
++++ b/conf.d/link_confs.py
+@@ -11,7 +11,14 @@ if __name__=='__main__':
+ parser.add_argument('links', nargs='+')
+ args = parser.parse_args()
+
+- confpath = os.path.join(os.environ['MESON_INSTALL_DESTDIR_PREFIX'], args.confpath)
++ if os.path.isabs(args.confpath):
++ destdir = os.environ.get('DESTDIR')
++ if destdir:
++ confpath = os.path.join(destdir, args.confpath[1:])
++ else:
++ confpath = args.confpath
++ else:
++ confpath = os.path.join(os.environ['MESON_INSTALL_DESTDIR_PREFIX'], args.confpath)
+
+ if not os.path.exists(confpath):
+ os.makedirs(confpath)
+--
+GitLab
+
diff --git a/recipes/fontconfig/0001-meson-error-out-in-script-if-gperf-preprocessing-fai.patch b/recipes/fontconfig/0001-meson-error-out-in-script-if-gperf-preprocessing-fai.patch
new file mode 100644
index 00000000..99e7d8a4
--- /dev/null
+++ b/recipes/fontconfig/0001-meson-error-out-in-script-if-gperf-preprocessing-fai.patch
@@ -0,0 +1,25 @@
+From 5bfb9bcbea916ca6bd62fa459978a33e47d8ad3d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= <tim@centricular.com>
+Date: Thu, 31 Dec 2020 15:04:10 +0000
+Subject: [PATCH] meson: error out in script if gperf preprocessing failed
+
+---
+ src/cutout.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/cutout.py b/src/cutout.py
+index 6fa55a3..96cafd2 100644
+--- a/src/cutout.py
++++ b/src/cutout.py
+@@ -12,7 +12,7 @@ if __name__== '__main__':
+ print (args[0].output)
+
+ cpp = args[1]
+- ret = subprocess.run(cpp + [args[0].input], stdout=subprocess.PIPE)
++ ret = subprocess.run(cpp + [args[0].input], stdout=subprocess.PIPE, check=True)
+
+ stdout = ret.stdout.decode('utf8')
+
+--
+2.29.2
+
diff --git a/recipes/fontconfig/0001-meson-fix-cross-compilation-issues-with-gperf-header.patch b/recipes/fontconfig/0001-meson-fix-cross-compilation-issues-with-gperf-header.patch
new file mode 100644
index 00000000..ef854695
--- /dev/null
+++ b/recipes/fontconfig/0001-meson-fix-cross-compilation-issues-with-gperf-header.patch
@@ -0,0 +1,75 @@
+From 15dd8e71cd9b702ab3def1d2fe885fa0a8e6815d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= <tim@centricular.com>
+Date: Sun, 17 Jan 2021 12:51:59 +0000
+Subject: [PATCH] meson: fix cross-compilation issues with gperf header file
+ preprocessing
+
+Pass c_args to the compiler when preprocessing the gperf header file,
+they might contain important bits without which compilation/preprocessing
+might fail (e.g. with clang on Android). cc.cmd_array() does not include
+the c_args and we can't easily look them up from the meson.build file, so
+we have retrieve them ourselves from the introspection info.
+---
+ src/cutout.py | 16 ++++++++++++++--
+ src/meson.build | 5 ++++-
+ 2 files changed, 18 insertions(+), 3 deletions(-)
+
+diff --git a/src/cutout.py b/src/cutout.py
+index 96cafd2..323eec8 100644
+--- a/src/cutout.py
++++ b/src/cutout.py
+@@ -1,5 +1,6 @@
+ import argparse
+ import subprocess
++import json
+ import os
+ import re
+
+@@ -7,12 +8,23 @@ if __name__== '__main__':
+ parser = argparse.ArgumentParser()
+ parser.add_argument('input')
+ parser.add_argument('output')
++ parser.add_argument('buildroot')
+
+ args = parser.parse_known_args()
+- print (args[0].output)
++
++ # c_args might contain things that are essential for crosscompilation, but
++ # are not included in cc.cmd_array(), so we have to look them up ourselves
++ host_cargs = []
++ buildroot = args[0].buildroot
++ with open(os.path.join(buildroot, 'meson-info', 'intro-buildoptions.json')) as json_file:
++ bopts = json.load(json_file)
++ for opt in bopts:
++ if opt['name'] == 'c_args' and opt['section'] == 'compiler' and opt['machine'] == 'host':
++ host_cargs = opt['value']
++ break
+
+ cpp = args[1]
+- ret = subprocess.run(cpp + [args[0].input], stdout=subprocess.PIPE, check=True)
++ ret = subprocess.run(cpp + host_cargs + [args[0].input], stdout=subprocess.PIPE, check=True)
+
+ stdout = ret.stdout.decode('utf8')
+
+diff --git a/src/meson.build b/src/meson.build
+index f2a4861..7f9bf31 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -44,10 +44,13 @@ endif
+
+ cpp += ['-I', join_paths(meson.current_source_dir(), '..')]
+
++# Can use meson.project_build_dir() once we require Meson 0.56
++project_build_dir = meson.current_build_dir() / '..'
++
+ fcobjshash_gperf = custom_target('fcobjshash.gperf',
+ input: 'fcobjshash.gperf.h',
+ output: 'fcobjshash.gperf',
+- command: [python3, files('cutout.py')[0], '@INPUT@', '@OUTPUT@', cpp],
++ command: [python3, files('cutout.py')[0], '@INPUT@', '@OUTPUT@', project_build_dir, cpp],
+ build_by_default: true,
+ )
+
+--
+2.29.2
+
diff --git a/recipes/fontconfig/0002-fcatomic-Fix-EXC_BAD_ACCESS-on-iOS-ARM64.patch b/recipes/fontconfig/0002-fcatomic-Fix-EXC_BAD_ACCESS-on-iOS-ARM64.patch
deleted file mode 100644
index 9ebbec52..00000000
--- a/recipes/fontconfig/0002-fcatomic-Fix-EXC_BAD_ACCESS-on-iOS-ARM64.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 5786bcc6be8441d579d26f830ebb35bda40deef6 Mon Sep 17 00:00:00 2001
-From: Nirbheek Chauhan <nirbheek@centricular.com>
-Date: Sat, 22 Feb 2020 03:57:50 +0530
-Subject: [PATCH 2/3] fcatomic: Fix EXC_BAD_ACCESS on iOS ARM64
-
-iPhone 2.1 was released a long time ago, and the macro for checking
-the target iOS SDK version has changed. We can simplify everything and
-do a very basic check.
----
- src/fcatomic.h | 12 ++----------
- 1 file changed, 2 insertions(+), 10 deletions(-)
-
-diff --git a/src/fcatomic.h b/src/fcatomic.h
-index cc28a88..657a5f5 100644
---- a/src/fcatomic.h
-+++ b/src/fcatomic.h
-@@ -70,24 +70,16 @@ typedef LONG fc_atomic_int_t;
- #elif !defined(FC_NO_MT) && defined(__APPLE__)
-
- #include <libkern/OSAtomic.h>
--#ifdef __MAC_OS_X_MIN_REQUIRED
- #include <AvailabilityMacros.h>
--#elif defined(__IPHONE_OS_MIN_REQUIRED)
--#include <Availability.h>
--#endif
-
- typedef int fc_atomic_int_t;
- #define fc_atomic_int_add(AI, V) (OSAtomicAdd32Barrier ((V), &(AI)) - (V))
-
- #define fc_atomic_ptr_get(P) (OSMemoryBarrier (), (void *) *(P))
--#if (MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_4 || __IPHONE_VERSION_MIN_REQUIRED >= 20100)
-+#if (MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_4 || __IPHONE_OS_VERSION_MIN_REQUIRED >= 20100)
- #define fc_atomic_ptr_cmpexch(P,O,N) OSAtomicCompareAndSwapPtrBarrier ((void *) (O), (void *) (N), (void **) (P))
- #else
--#if __ppc64__ || __x86_64__
--#define fc_atomic_ptr_cmpexch(P,O,N) OSAtomicCompareAndSwap64Barrier ((int64_t) (O), (int64_t) (N), (int64_t*) (P))
--#else
--#define fc_atomic_ptr_cmpexch(P,O,N) OSAtomicCompareAndSwap32Barrier ((int32_t) (O), (int32_t) (N), (int32_t*) (P))
--#endif
-+#error "Your macOS / iOS targets are too old"
- #endif
-
- #elif !defined(FC_NO_MT) && defined(HAVE_INTEL_ATOMIC_PRIMITIVES)
---
-2.27.0.windows.1
-
diff --git a/recipes/fontconfig/0003-Completely-disable-building-of-tests.patch b/recipes/fontconfig/0003-Completely-disable-building-of-tests.patch
deleted file mode 100644
index 5fdd2516..00000000
--- a/recipes/fontconfig/0003-Completely-disable-building-of-tests.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 8946f58450e04fa8ebc32b62e7479ed8f122408b Mon Sep 17 00:00:00 2001
-From: Nirbheek Chauhan <nirbheek@centricular.com>
-Date: Wed, 30 Sep 2020 13:07:43 +0530
-Subject: [PATCH 3/3] Completely disable building of tests
-
-This was originally for disabling on Windows, but to avoid autoreconf,
-we disable it everywhere.
----
- Makefile.am | 3 ++-
- Makefile.in | 2 +-
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index 2b4a5b8..3cdd66e 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -23,7 +23,8 @@
-
- SUBDIRS=fontconfig fc-blanks fc-case fc-lang fc-glyphname src \
- fc-cache fc-cat fc-list fc-match fc-pattern fc-query fc-scan \
-- fc-validate conf.d test
-+ fc-validate conf.d
-+
- if ENABLE_DOCS
- SUBDIRS += doc
- endif
-diff --git a/Makefile.in b/Makefile.in
-index 3e3001b..67e46ef 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -436,7 +436,7 @@ top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- SUBDIRS = fontconfig fc-blanks fc-case fc-lang fc-glyphname src \
- fc-cache fc-cat fc-list fc-match fc-pattern fc-query fc-scan \
-- fc-validate conf.d test $(am__append_1)
-+ fc-validate conf.d $(am__append_1)
- ACLOCAL_AMFLAGS = -I m4
- EXTRA_DIST = fontconfig.pc.in fonts.conf.in fonts.dtd \
- fontconfig.spec.in fontconfig.spec fontconfig-zip.in \
---
-2.27.0.windows.1
-
diff --git a/recipes/fontconfig/0003-configure-Allow-static-build.patch b/recipes/fontconfig/0003-configure-Allow-static-build.patch
deleted file mode 100644
index 5e4ad0a5..00000000
--- a/recipes/fontconfig/0003-configure-Allow-static-build.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 4fe8cbc9b86f5d7c2d12e0c3f84e97c42e9026b9 Mon Sep 17 00:00:00 2001
-From: Edward Hervey <bilboed@bilboed.com>
-Date: Sun, 25 May 2014 11:20:34 +0200
-Subject: [PATCH 3/3] configure: Allow static build
-
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 1086a9a..135e95a 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -65,7 +65,7 @@ fi
-
- dnl Initialize libtool
- LT_PREREQ([2.2])
--LT_INIT([disable-static win32-dll])
-+LT_INIT([win32-dll])
-
- dnl libtool versioning
-
---
-1.9.0
-