From 265dbe5dbc14c199299496c6db8fce3f76647015 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Fri, 21 Sep 2018 18:00:10 +0100 Subject: gentoo resync : 21.09.2018 --- .../files/fontconfig-2.13.1-proper_homedir.patch | 323 +++++++++++++++++++++ ...1-revert_delete_.uuid_for_empty_directory.patch | 43 +++ .../files/fontconfig-2.13.1-static_build.patch | 101 +++++++ 3 files changed, 467 insertions(+) create mode 100644 media-libs/fontconfig/files/fontconfig-2.13.1-proper_homedir.patch create mode 100644 media-libs/fontconfig/files/fontconfig-2.13.1-revert_delete_.uuid_for_empty_directory.patch create mode 100644 media-libs/fontconfig/files/fontconfig-2.13.1-static_build.patch (limited to 'media-libs/fontconfig/files') 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 +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 ++#include ++#include ++#include ++#include ++#include ++#ifndef HAVE_STRUCT_DIRENT_D_TYPE ++#include ++#include ++#endif ++#include ++ ++#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-revert_delete_.uuid_for_empty_directory.patch b/media-libs/fontconfig/files/fontconfig-2.13.1-revert_delete_.uuid_for_empty_directory.patch new file mode 100644 index 000000000000..cd66082eedd8 --- /dev/null +++ b/media-libs/fontconfig/files/fontconfig-2.13.1-revert_delete_.uuid_for_empty_directory.patch @@ -0,0 +1,43 @@ +https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/107 + +Reversion of part of: +https://gitlab.freedesktop.org/fontconfig/fontconfig/commit/f5dd8512bdf9fd8e01c30ae36f593758b29385cf + +--- /src/fcdir.c ++++ /src/fcdir.c +@@ -421,13 +421,6 @@ + /* Not using existing cache file, construct new cache */ + if (!cache) + cache = FcDirCacheScan (dir, config); +- if (cache) +- { +- FcFontSet *fs = FcCacheSet (cache); +- +- if (cache->dirs_count == 0 && (!fs || fs->nfont == 0)) +- FcDirCacheDeleteUUID (dir, config); +- } + + return cache; + } +--- /test/run-test.sh ++++ /test/run-test.sh +@@ -239,19 +239,4 @@ + + rm -rf $MyPWD/sysroot + +-dotest "deleting .uuid file on empty dir" +-prep +-cp $FONT1 $FONT2 $FONTDIR +-$FCCACHE $FONTDIR +-sleep 1 +-rm -f $FONTDIR/*pcf +-$FCCACHE $FONTDIR +-rmdir $FONTDIR > /dev/null 2>&1 +-if [ $? != 0 ]; then +- echo "*** Test failed: $TEST" +- echo "$FONTDIR isn't empty" +- ls -al $FONTDIR +- exit 1 +-fi +- + rm -rf $FONTDIR $CACHEFILE $CACHEDIR $FONTCONFIG_FILE out 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 +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 + #include ++#include + #include ++#include ++#include + #ifndef HAVE_STRUCT_DIRENT_D_TYPE + #include + #include +-#include + #endif +-#include "fcstr.c" +-#undef FcConfigBuildFonts +-#undef FcConfigCreate +-#undef FcConfigGetCurrent +-#undef FcConfigParseAndLoadFromMemory +-#undef FcConfigUptoDate +-#undef FcFontList +-#undef FcInitReinitialize +-#undef FcPatternCreate +-#undef FcPatternDestroy + #include + ++#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 + -- cgit v1.2.3