summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Müller <ulm@gentoo.org>2018-03-14 13:31:50 +0100
committerUlrich Müller <ulm@gentoo.org>2018-03-14 13:31:50 +0100
commit34fb871502ff7941c54b6058727caf3ef563dc39 (patch)
treee9814c0da2b2ae0a176f78b6050519cac53bac8d /media-libs/fontconfig
parentsys-kernel/rt-sources: remove old (diff)
downloadgentoo-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')
-rw-r--r--media-libs/fontconfig/files/fontconfig-2.13.0-locale.patch37
-rw-r--r--media-libs/fontconfig/files/fontconfig-2.13.0-names.patch93
-rw-r--r--media-libs/fontconfig/fontconfig-2.13.0-r1.ebuild164
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
+}