diff options
author | Ulrich Müller <ulm@gentoo.org> | 2018-03-14 13:31:50 +0100 |
---|---|---|
committer | Ulrich Müller <ulm@gentoo.org> | 2018-03-14 13:31:50 +0100 |
commit | 34fb871502ff7941c54b6058727caf3ef563dc39 (patch) | |
tree | e9814c0da2b2ae0a176f78b6050519cac53bac8d /media-libs/fontconfig | |
parent | sys-kernel/rt-sources: remove old (diff) | |
download | gentoo-34fb871502ff7941c54b6058727caf3ef563dc39.tar.gz gentoo-34fb871502ff7941c54b6058727caf3ef563dc39.tar.bz2 gentoo-34fb871502ff7941c54b6058727caf3ef563dc39.zip |
media-libs/fontconfig: Fix handling of locale and of font weights.
Non-maintainer commit. Patches from upstream.
Closes: https://bugs.gentoo.org/650332
Closes: https://bugs.gentoo.org/650370
Package-Manager: Portage-2.3.24, Repoman-2.3.6
Diffstat (limited to 'media-libs/fontconfig')
3 files changed, 294 insertions, 0 deletions
diff --git a/media-libs/fontconfig/files/fontconfig-2.13.0-locale.patch b/media-libs/fontconfig/files/fontconfig-2.13.0-locale.patch new file mode 100644 index 000000000000..70868b1abc11 --- /dev/null +++ b/media-libs/fontconfig/files/fontconfig-2.13.0-locale.patch @@ -0,0 +1,37 @@ +https://bugs.gentoo.org/650332 + +From 923b5be626a6e03fbaeee0b5cd6d0246c2f8f36f Mon Sep 17 00:00:00 2001 +From: Akira TAGOH <akira@tagoh.org> +Date: Wed, 14 Mar 2018 12:35:05 +0900 +Subject: [PATCH] Do not override locale if already set by app + +https://bugs.freedesktop.org/show_bug.cgi?id=105492 +--- + src/fccfg.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/fccfg.c b/src/fccfg.c +index eb0b76d..e311f17 100644 +--- a/src/fccfg.c ++++ b/src/fccfg.c +@@ -45,11 +45,16 @@ retry_locale: + is_locale_initialized = (intptr_t) fc_atomic_ptr_get (&static_is_locale_initialized); + if (!is_locale_initialized) + { ++ char *loc; ++ + is_locale_initialized = FcTrue; + if (!fc_atomic_ptr_cmpexch (&static_is_locale_initialized, NULL, + (void *)(intptr_t) is_locale_initialized)) + goto retry_locale; +- setlocale (LC_ALL, ""); ++ ++ loc = setlocale (LC_ALL, NULL); ++ if (!loc || strcmp (loc, "C") == 0) ++ setlocale (LC_ALL, ""); + } + retry_config: + config = fc_atomic_ptr_get (&_fcConfig); +-- +2.16.2 + diff --git a/media-libs/fontconfig/files/fontconfig-2.13.0-names.patch b/media-libs/fontconfig/files/fontconfig-2.13.0-names.patch new file mode 100644 index 000000000000..dddc8bb95726 --- /dev/null +++ b/media-libs/fontconfig/files/fontconfig-2.13.0-names.patch @@ -0,0 +1,93 @@ +https://bugs.gentoo.org/650370 + +From 198358dd8ff858c9e36531a7406ccb2246ae77b7 Mon Sep 17 00:00:00 2001 +From: Akira TAGOH <akira@tagoh.org> +Date: Mon, 12 Mar 2018 11:49:58 +0900 +Subject: [PATCH 1/2] Allow the constant names in the range + +https://bugs.freedesktop.org/show_bug.cgi?id=105415 +--- + src/fcname.c | 34 +++++++++++++++++++++++++++++----- + 1 file changed, 29 insertions(+), 5 deletions(-) + +diff --git a/src/fcname.c b/src/fcname.c +index 79e413e..15fb659 100644 +--- a/src/fcname.c ++++ b/src/fcname.c +@@ -330,13 +330,37 @@ FcNameConvert (FcType type, FcChar8 *string) + case FcTypeRange: + if (sscanf ((char *) string, "[%lg %lg]", &b, &e) != 2) + { +- v.u.d = strtod ((char *) string, &p); +- if (p != NULL && p[0] != 0) ++ char *sc, *ec; ++ size_t len = strlen ((const char *) string); ++ int si, ei; ++ ++ sc = malloc (len); ++ ec = malloc (len); ++ if (sc && ec && sscanf ((char *) string, "[%s %[^]]]", sc, ec) == 2) + { +- v.type = FcTypeVoid; +- break; ++ if (FcNameConstant ((const FcChar8 *) sc, &si) && ++ FcNameConstant ((const FcChar8 *) ec, &ei)) ++ v.u.r = FcRangeCreateDouble (si, ei); ++ else ++ goto bail1; ++ } ++ else ++ { ++ bail1: ++ v.type = FcTypeDouble; ++ if (FcNameConstant (string, &si)) ++ { ++ v.u.d = (double) si; ++ } else { ++ v.u.d = strtod ((char *) string, &p); ++ if (p != NULL && p[0] != 0) ++ v.type = FcTypeVoid; ++ } + } +- v.type = FcTypeDouble; ++ if (sc) ++ free (sc); ++ if (ec) ++ free (ec); + } + else + v.u.r = FcRangeCreateDouble (b, e); +-- +2.16.2 + +From 4699406a68321179b14fae7412f828e2f37a7033 Mon Sep 17 00:00:00 2001 +From: Akira TAGOH <akira@tagoh.org> +Date: Wed, 14 Mar 2018 18:31:30 +0900 +Subject: [PATCH 2/2] Add the value of the constant name to the implicit object + in the pattern + +For objects which has been changed the object type to FcTypeRange. + +https://bugs.freedesktop.org/show_bug.cgi?id=105415 +--- + src/fcname.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/fcname.c b/src/fcname.c +index 15fb659..c9320ae 100644 +--- a/src/fcname.c ++++ b/src/fcname.c +@@ -490,6 +490,10 @@ FcNameParse (const FcChar8 *name) + if (!FcPatternAddBool (pat, c->object, c->value)) + goto bail2; + break; ++ case FcTypeRange: ++ if (!FcPatternAddInteger (pat, c->object, c->value)) ++ goto bail2; ++ break; + default: + break; + } +-- +2.16.2 + diff --git a/media-libs/fontconfig/fontconfig-2.13.0-r1.ebuild b/media-libs/fontconfig/fontconfig-2.13.0-r1.ebuild new file mode 100644 index 000000000000..12d1cab673b6 --- /dev/null +++ b/media-libs/fontconfig/fontconfig-2.13.0-r1.ebuild @@ -0,0 +1,164 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit autotools multilib-minimal readme.gentoo-r1 eapi7-ver + +DESCRIPTION="A library for configuring and customizing font access" +HOMEPAGE="http://fontconfig.org/" +SRC_URI="http://fontconfig.org/release/${P}.tar.bz2" + +LICENSE="MIT" +SLOT="1.0" +[[ $(ver_cut 3) -ge 90 ]] || \ +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-linux ~arm-linux ~x86-linux" +IUSE="doc static-libs" + +# Purposefully dropped the xml USE flag and libxml2 support. Expat is the +# default and used by every distro. See bug #283191. +RDEPEND=">=dev-libs/expat-2.1.0-r3[${MULTILIB_USEDEP}] + >=media-libs/freetype-2.8.1[${MULTILIB_USEDEP}] + sys-apps/util-linux[${MULTILIB_USEDEP}]" +DEPEND="${RDEPEND} + virtual/pkgconfig + doc? ( =app-text/docbook-sgml-dtd-3.1* + app-text/docbook-sgml-utils[jadetex] )" +PDEPEND="!x86-winnt? ( app-eselect/eselect-fontconfig ) + virtual/ttf-fonts" + +PATCHES=( + "${FILESDIR}"/${PN}-2.10.2-docbook.patch # 310157 + "${FILESDIR}"/${PN}-2.12.3-latin-update.patch # 130466 + make liberation default + "${FILESDIR}"/${P}-locale.patch #650332 + "${FILESDIR}"/${P}-names.patch #650370 +) + +MULTILIB_CHOST_TOOLS=( /usr/bin/fc-cache$(get_exeext) ) + +pkg_setup() { + DOC_CONTENTS="Please make fontconfig configuration changes using + \`eselect fontconfig\`. Any changes made to /etc/fonts/fonts.conf will be + overwritten. If you need to reset your configuration to upstream defaults, + delete the directory ${EROOT%/}/etc/fonts/conf.d/ and re-emerge fontconfig." +} + +src_prepare() { + default + export GPERF=$(type -P true) # avoid dependency on gperf, #631980 + sed -i -e 's/FC_GPERF_SIZE_T="unsigned int"/FC_GPERF_SIZE_T=size_t/' \ + configure.ac || die # rest of gperf dependency fix, #631920 + eautoreconf +} + +multilib_src_configure() { + local addfonts + # harvest some font locations, such that users can benefit from the + # host OS's installed fonts + case ${CHOST} in + *-darwin*) + addfonts=",/Library/Fonts,/System/Library/Fonts" + ;; + *-solaris*) + [[ -d /usr/X/lib/X11/fonts/TrueType ]] && \ + addfonts=",/usr/X/lib/X11/fonts/TrueType" + [[ -d /usr/X/lib/X11/fonts/Type1 ]] && \ + addfonts="${addfonts},/usr/X/lib/X11/fonts/Type1" + ;; + *-linux-gnu) + use prefix && [[ -d /usr/share/fonts ]] && \ + addfonts=",/usr/share/fonts" + ;; + esac + + local myeconfargs=( + $(use_enable doc docbook) + $(use_enable static-libs static) + --enable-docs + --localstatedir="${EPREFIX}"/var + --with-default-fonts="${EPREFIX}"/usr/share/fonts + --with-add-fonts="${EPREFIX}/usr/local/share/fonts${addfonts}" + --with-templatedir="${EPREFIX}"/etc/fonts/conf.avail + ) + + ECONF_SOURCE="${S}" \ + econf "${myeconfargs[@]}" +} + +multilib_src_install() { + default + + # avoid calling this multiple times, bug #459210 + if multilib_is_native_abi; then + # stuff installed from build-dir + emake -C doc DESTDIR="${D}" install-man + + insinto /etc/fonts + doins fonts.conf + fi +} + +multilib_src_install_all() { + einstalldocs + find "${ED}" -name "*.la" -delete || die + + # fc-lang directory contains language coverage datafiles + # which are needed to test the coverage of fonts. + insinto /usr/share/fc-lang + doins fc-lang/*.orth + + dodoc doc/fontconfig-user.{txt,pdf} + + if [[ -e ${ED}usr/share/doc/fontconfig/ ]]; then + mv "${ED}"usr/share/doc/fontconfig/* "${ED}"/usr/share/doc/${P} || die + rm -rf "${ED}"usr/share/doc/fontconfig + fi + + # Changes should be made to /etc/fonts/local.conf, and as we had + # too much problems with broken fonts.conf we force update it ... + echo 'CONFIG_PROTECT_MASK="/etc/fonts/fonts.conf"' > "${T}"/37fontconfig + doenvd "${T}"/37fontconfig + + # As of fontconfig 2.7, everything sticks their noses in here. + dodir /etc/sandbox.d + echo 'SANDBOX_PREDICT="/var/cache/fontconfig"' > "${ED}"/etc/sandbox.d/37fontconfig + + readme.gentoo_create_doc +} + +pkg_preinst() { + # Bug #193476 + # /etc/fonts/conf.d/ contains symlinks to ../conf.avail/ to include various + # config files. If we install as-is, we'll blow away user settings. + ebegin "Syncing fontconfig configuration to system" + if [[ -e ${EROOT}/etc/fonts/conf.d ]]; then + for file in "${EROOT}"/etc/fonts/conf.avail/*; do + f=${file##*/} + if [[ -L ${EROOT}/etc/fonts/conf.d/${f} ]]; then + [[ -f ${ED}etc/fonts/conf.avail/${f} ]] \ + && ln -sf ../conf.avail/"${f}" "${ED}"etc/fonts/conf.d/ &>/dev/null + else + [[ -f ${ED}etc/fonts/conf.avail/${f} ]] \ + && rm "${ED}"etc/fonts/conf.d/"${f}" &>/dev/null + fi + done + fi + eend $? +} + +pkg_postinst() { + einfo "Cleaning broken symlinks in ${EROOT%/}/etc/fonts/conf.d/" + find -L "${EROOT}"etc/fonts/conf.d/ -type l -delete + + readme.gentoo_print_elog + + if [[ ${ROOT} = / ]]; then + multilib_pkg_postinst() { + ebegin "Creating global font cache for ${ABI}" + "${EPREFIX}"/usr/bin/${CHOST}-fc-cache -srf + eend $? + } + + multilib_parallel_foreach_abi multilib_pkg_postinst + fi +} |