summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wendler <polynomial-c@gentoo.org>2018-09-17 14:18:55 +0200
committerLars Wendler <polynomial-c@gentoo.org>2018-09-17 14:29:23 +0200
commit35cf888ba9bb8529bb6624327e1edcaca6487d34 (patch)
tree1c01d939ad06eaedbf2fa46d806270d6b20709ee /media-libs/fontconfig/files
parentapp-admin/logstalgia: version bump, drop old (diff)
downloadgentoo-35cf888ba9bb8529bb6624327e1edcaca6487d34.tar.gz
gentoo-35cf888ba9bb8529bb6624327e1edcaca6487d34.tar.bz2
gentoo-35cf888ba9bb8529bb6624327e1edcaca6487d34.zip
media-libs/fontconfig: Bump to version 2.13.1
Package-Manager: Portage-2.3.49, Repoman-2.3.10
Diffstat (limited to 'media-libs/fontconfig/files')
-rw-r--r--media-libs/fontconfig/files/fontconfig-2.13.1-proper_homedir.patch323
-rw-r--r--media-libs/fontconfig/files/fontconfig-2.13.1-static_build.patch101
2 files changed, 424 insertions, 0 deletions
diff --git a/media-libs/fontconfig/files/fontconfig-2.13.1-proper_homedir.patch b/media-libs/fontconfig/files/fontconfig-2.13.1-proper_homedir.patch
new file mode 100644
index 000000000000..19aee94ba988
--- /dev/null
+++ b/media-libs/fontconfig/files/fontconfig-2.13.1-proper_homedir.patch
@@ -0,0 +1,323 @@
+From 806fd4c2c5164d66d978b0a4c579c157e5cbe766 Mon Sep 17 00:00:00 2001
+From: Akira TAGOH <akira@tagoh.org>
+Date: Tue, 4 Sep 2018 09:08:37 +0000
+Subject: [PATCH] Fix the issue that '~' wasn't extracted to the proper homedir
+
+'~' in the filename was extracted to the home directory name in FcConfigFilename() though,
+this behavior was broken by d1f48f11. this change fixes it back to the correct behavior.
+
+https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/110
+diff --git a/src/fccfg.c b/src/fccfg.c
+index d7c48e8..4a53581 100644
+--- a/src/fccfg.c
++++ b/src/fccfg.c
+@@ -2207,17 +2207,19 @@ FcConfigFilename (const FcChar8 *url)
+ else
+ file = 0;
+ }
+-
+- path = FcConfigGetPath ();
+- if (!path)
+- return NULL;
+- for (p = path; *p; p++)
++ else
+ {
+- file = FcConfigFileExists (*p, url);
+- if (file)
+- break;
++ path = FcConfigGetPath ();
++ if (!path)
++ return NULL;
++ for (p = path; *p; p++)
++ {
++ file = FcConfigFileExists (*p, url);
++ if (file)
++ break;
++ }
++ FcConfigFreePath (path);
+ }
+- FcConfigFreePath (path);
+ return file;
+ }
+
+diff --git a/test/Makefile.am b/test/Makefile.am
+index 79bcede..9f4d48a 100644
+--- a/test/Makefile.am
++++ b/test/Makefile.am
+@@ -91,6 +91,22 @@ test_bz106632_CFLAGS = \
+ test_bz106632_LDADD = $(top_builddir)/src/libfontconfig.la
+ TESTS += test-bz106632
+
++if !ENABLE_SHARED
++check_PROGRAMS += test-issue110
++test_issue110_CFLAGS = \
++ -I$(top_builddir) \
++ -I$(top_builddir)/src \
++ -I$(top_srcdir) \
++ -I$(top_srcdir)/src \
++ -DHAVE_CONFIG_H \
++ -DFONTCONFIG_PATH='"$(BASECONFIGDIR)"' \
++ $(NULL)
++test_issue110_LDADD = \
++ $(top_builddir)/src/libfontconfig.la \
++ $(NULL)
++TESTS += test-issue110
++endif
++
+ EXTRA_DIST=run-test.sh run-test-conf.sh $(TESTDATA) out.expected-long-family-names out.expected-no-long-family-names
+
+ CLEANFILES=out out1 out2 fonts.conf out.expected
+diff --git a/test/test-issue110.c b/test/test-issue110.c
+new file mode 100644
+index 0000000..28a3bd2
+--- /dev/null
++++ b/test/test-issue110.c
+@@ -0,0 +1,245 @@
++/*
++ * fontconfig/test/test-issue110.c
++ *
++ * Copyright © 2000 Keith Packard
++ * Copyright © 2018 Akira TAGOH
++ *
++ * Permission to use, copy, modify, distribute, and sell this software and its
++ * documentation for any purpose is hereby granted without fee, provided that
++ * the above copyright notice appear in all copies and that both that
++ * copyright notice and this permission notice appear in supporting
++ * documentation, and that the name of the author(s) not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. The authors make no
++ * representations about the suitability of this software for any purpose. It
++ * is provided "as is" without express or implied warranty.
++ *
++ * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
++ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
++ * PERFORMANCE OF THIS SOFTWARE.
++ */
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <dirent.h>
++#include <unistd.h>
++#include <errno.h>
++#ifndef HAVE_STRUCT_DIRENT_D_TYPE
++#include <sys/types.h>
++#include <sys/stat.h>
++#endif
++#include <fontconfig/fontconfig.h>
++
++#ifdef _WIN32
++# define FC_DIR_SEPARATOR '\\'
++# define FC_DIR_SEPARATOR_S "\\"
++#else
++# define FC_DIR_SEPARATOR '/'
++# define FC_DIR_SEPARATOR_S "/"
++#endif
++
++extern FcChar8 *FcConfigRealFilename (FcConfig *, FcChar8 *);
++
++#ifdef HAVE_MKDTEMP
++#define fc_mkdtemp mkdtemp
++#else
++char *
++fc_mkdtemp (char *template)
++{
++ if (!mktemp (template) || mkdir (template, 0700))
++ return NULL;
++
++ return template;
++}
++#endif
++
++FcBool
++mkdir_p (const char *dir)
++{
++ char *parent;
++ FcBool ret;
++
++ if (strlen (dir) == 0)
++ return FcFalse;
++ parent = (char *) FcStrDirname ((const FcChar8 *) dir);
++ if (!parent)
++ return FcFalse;
++ if (access (parent, F_OK) == 0)
++ ret = mkdir (dir, 0755) == 0 && chmod (dir, 0755) == 0;
++ else if (access (parent, F_OK) == -1)
++ ret = mkdir_p (parent) && (mkdir (dir, 0755) == 0) && chmod (dir, 0755) == 0;
++ else
++ ret = FcFalse;
++ free (parent);
++
++ return ret;
++}
++
++FcBool
++unlink_dirs (const char *dir)
++{
++ DIR *d = opendir (dir);
++ struct dirent *e;
++ size_t len = strlen (dir);
++ char *n = NULL;
++ FcBool ret = FcTrue;
++#ifndef HAVE_STRUCT_DIRENT_D_TYPE
++ struct stat statb;
++#endif
++
++ if (!d)
++ return FcFalse;
++ while ((e = readdir (d)) != NULL)
++ {
++ size_t l;
++
++ if (strcmp (e->d_name, ".") == 0 ||
++ strcmp (e->d_name, "..") == 0)
++ continue;
++ l = strlen (e->d_name) + 1;
++ if (n)
++ free (n);
++ n = malloc (l + len + 1);
++ if (!n)
++ {
++ ret = FcFalse;
++ break;
++ }
++ strcpy (n, dir);
++ n[len] = FC_DIR_SEPARATOR;
++ strcpy (&n[len + 1], e->d_name);
++#ifdef HAVE_STRUCT_DIRENT_D_TYPE
++ if (e->d_type == DT_DIR)
++#else
++ if (stat (n, &statb) == -1)
++ {
++ fprintf (stderr, "E: %s\n", n);
++ ret = FcFalse;
++ break;
++ }
++ if (S_ISDIR (statb.st_mode))
++#endif
++ {
++ if (!unlink_dirs (n))
++ {
++ fprintf (stderr, "E: %s\n", n);
++ ret = FcFalse;
++ break;
++ }
++ }
++ else
++ {
++ if (unlink (n) == -1)
++ {
++ fprintf (stderr, "E: %s\n", n);
++ ret = FcFalse;
++ break;
++ }
++ }
++ }
++ if (n)
++ free (n);
++ closedir (d);
++
++ if (rmdir (dir) == -1)
++ {
++ fprintf (stderr, "E: %s\n", dir);
++ return FcFalse;
++ }
++
++ return ret;
++}
++
++int
++main(void)
++{
++ FcConfig *cfg = FcConfigCreate ();
++ char *basedir, template[512] = "/tmp/fc110-XXXXXX";
++ char *sysroot, systempl[512] = "/tmp/fc110-XXXXXX";
++ FcChar8 *d = NULL;
++ FcChar8 *ret = NULL;
++ FcChar8 *s = NULL;
++ FILE *fp;
++ int retval = 0;
++
++ retval++;
++ basedir = fc_mkdtemp (template);
++ if (!basedir)
++ {
++ fprintf (stderr, "%s: %s\n", template, strerror (errno));
++ goto bail;
++ }
++ retval++;
++ sysroot = fc_mkdtemp (systempl);
++ if (!sysroot)
++ {
++ fprintf (stderr, "%s: %s\n", systempl, strerror (errno));
++ goto bail;
++ }
++ fprintf (stderr, "D: Creating %s\n", basedir);
++ mkdir_p (basedir);
++ setenv ("HOME", basedir, 1);
++ retval++;
++ s = FcStrBuildFilename (basedir, ".fonts.conf", NULL);
++ if (!s)
++ goto bail;
++ retval++;
++ fprintf (stderr, "D: Creating %s\n", s);
++ if ((fp = fopen (s, "wb")) == NULL)
++ goto bail;
++ fprintf (fp, "%s", s);
++ fclose (fp);
++ retval++;
++ fprintf (stderr, "D: Checking file path\n");
++ ret = FcConfigRealFilename (cfg, "~/.fonts.conf");
++ if (!ret)
++ goto bail;
++ retval++;
++ if (strcmp ((const char *) s, (const char *) ret) != 0)
++ goto bail;
++ free (ret);
++ free (s);
++ setenv ("FONTCONFIG_SYSROOT", sysroot, 1);
++ fprintf (stderr, "D: Creating %s\n", sysroot);
++ mkdir_p (sysroot);
++ retval++;
++ d = FcStrBuildFilename (sysroot, basedir, NULL);
++ fprintf (stderr, "D: Creating %s\n", d);
++ mkdir_p (d);
++ free (d);
++ s = FcStrBuildFilename (sysroot, basedir, ".fonts.conf", NULL);
++ if (!s)
++ goto bail;
++ retval++;
++ fprintf (stderr, "D: Creating %s\n", s);
++ if ((fp = fopen (s, "wb")) == NULL)
++ goto bail;
++ fprintf (fp, "%s", s);
++ fclose (fp);
++ retval++;
++ fprintf (stderr, "D: Checking file path\n");
++ ret = FcConfigRealFilename (cfg, "~/.fonts.conf");
++ if (!ret)
++ goto bail;
++ retval++;
++ if (strcmp ((const char *) s, (const char *) ret) != 0)
++ goto bail;
++ retval = 0;
++bail:
++ fprintf (stderr, "Cleaning up\n");
++ unlink_dirs (basedir);
++ if (ret)
++ free (ret);
++ if (s)
++ free (s);
++
++ return retval;
++}
++
+--
+2.18.0
+
diff --git a/media-libs/fontconfig/files/fontconfig-2.13.1-static_build.patch b/media-libs/fontconfig/files/fontconfig-2.13.1-static_build.patch
new file mode 100644
index 000000000000..7a0edfd849ab
--- /dev/null
+++ b/media-libs/fontconfig/files/fontconfig-2.13.1-static_build.patch
@@ -0,0 +1,101 @@
+From 8208f99fa1676c42bfd8d74de3e9dac5366c150c Mon Sep 17 00:00:00 2001
+From: Akira TAGOH <akira@tagoh.org>
+Date: Mon, 3 Sep 2018 04:56:16 +0000
+Subject: [PATCH] Fix the build issue with --enable-static
+
+Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/109
+---
+diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h
+index bac1dda..af870d0 100644
+--- a/fontconfig/fontconfig.h
++++ b/fontconfig/fontconfig.h
+@@ -1076,6 +1076,10 @@ FcUtf16Len (const FcChar8 *string,
+ int *nchar,
+ int *wchar);
+
++FcPublic FcChar8 *
++FcStrBuildFilename (const FcChar8 *path,
++ ...);
++
+ FcPublic FcChar8 *
+ FcStrDirname (const FcChar8 *file);
+
+diff --git a/src/fcint.h b/src/fcint.h
+index de78cd8..a9d075a 100644
+--- a/src/fcint.h
++++ b/src/fcint.h
+@@ -1282,10 +1282,6 @@ FcStrUsesHome (const FcChar8 *s);
+ FcPrivate FcBool
+ FcStrIsAbsoluteFilename (const FcChar8 *s);
+
+-FcPrivate FcChar8 *
+-FcStrBuildFilename (const FcChar8 *path,
+- ...);
+-
+ FcPrivate FcChar8 *
+ FcStrLastSlash (const FcChar8 *path);
+
+diff --git a/test/test-bz106632.c b/test/test-bz106632.c
+index daa0c1e..2d67c2e 100644
+--- a/test/test-bz106632.c
++++ b/test/test-bz106632.c
+@@ -25,25 +25,26 @@
+ #ifdef HAVE_CONFIG_H
+ #include "config.h"
+ #endif
++#include <stdio.h>
+ #include <stdlib.h>
++#include <string.h>
+ #include <dirent.h>
++#include <unistd.h>
++#include <errno.h>
+ #ifndef HAVE_STRUCT_DIRENT_D_TYPE
+ #include <sys/types.h>
+ #include <sys/stat.h>
+-#include <unistd.h>
+ #endif
+-#include "fcstr.c"
+-#undef FcConfigBuildFonts
+-#undef FcConfigCreate
+-#undef FcConfigGetCurrent
+-#undef FcConfigParseAndLoadFromMemory
+-#undef FcConfigUptoDate
+-#undef FcFontList
+-#undef FcInitReinitialize
+-#undef FcPatternCreate
+-#undef FcPatternDestroy
+ #include <fontconfig/fontconfig.h>
+
++#ifdef _WIN32
++# define FC_DIR_SEPARATOR '\\'
++# define FC_DIR_SEPARATOR_S "\\"
++#else
++# define FC_DIR_SEPARATOR '/'
++# define FC_DIR_SEPARATOR_S "/"
++#endif
++
+ #ifdef HAVE_MKDTEMP
+ #define fc_mkdtemp mkdtemp
+ #else
+@@ -154,18 +155,6 @@ unlink_dirs (const char *dir)
+ return ret;
+ }
+
+-FcChar8 *
+-FcLangNormalize (const FcChar8 *lang)
+-{
+- return NULL;
+-}
+-
+-FcChar8 *
+-FcConfigHome (void)
+-{
+- return NULL;
+-}
+-
+ int
+ main (void)
+ {
+--
+2.18.0
+