gnu: fontconfig: Update to 2.12.3.
* gnu/packages/fontutils.scm (fontconfig): Update to 2.12.3. [source]: Remove obsolete patches. [native-inputs]: Add GPERF. [arguments]<#:phases>: Remove obsolete 'fix-tests-for-freetype-2.7.1' phase. Add 'regenerate-fcobjshash'. * gnu/packages/patches/fontconfig-charwidth-symbol-conflict.patch, gnu/packages/patches/fontconfig-path-max.patch: Delete files. * gnu/local.mk (dist_patch_DATA): Remove them.
This commit is contained in:
		
							parent
							
								
									2ac6998063
								
							
						
					
					
						commit
						70564e71bd
					
				
					 4 changed files with 10 additions and 216 deletions
				
			
		|  | @ -587,8 +587,6 @@ dist_patch_DATA =						\ | ||||||
|   %D%/packages/patches/flint-ldconfig.patch			\
 |   %D%/packages/patches/flint-ldconfig.patch			\
 | ||||||
|   %D%/packages/patches/fltk-shared-lib-defines.patch		\
 |   %D%/packages/patches/fltk-shared-lib-defines.patch		\
 | ||||||
|   %D%/packages/patches/fltk-xfont-on-demand.patch		\
 |   %D%/packages/patches/fltk-xfont-on-demand.patch		\
 | ||||||
|   %D%/packages/patches/fontconfig-charwidth-symbol-conflict.patch	\
 |  | ||||||
|   %D%/packages/patches/fontconfig-path-max.patch		\
 |  | ||||||
|   %D%/packages/patches/fontforge-svg-modtime.patch		\
 |   %D%/packages/patches/fontforge-svg-modtime.patch		\
 | ||||||
|   %D%/packages/patches/freeimage-CVE-2015-0852.patch		\
 |   %D%/packages/patches/freeimage-CVE-2015-0852.patch		\
 | ||||||
|   %D%/packages/patches/freeimage-CVE-2016-5684.patch		\
 |   %D%/packages/patches/freeimage-CVE-2016-5684.patch		\
 | ||||||
|  |  | ||||||
|  | @ -34,6 +34,7 @@ | ||||||
|   #:use-module (gnu packages bison) |   #:use-module (gnu packages bison) | ||||||
|   #:use-module (gnu packages flex) |   #:use-module (gnu packages flex) | ||||||
|   #:use-module (gnu packages glib) |   #:use-module (gnu packages glib) | ||||||
|  |   #:use-module (gnu packages gperf) | ||||||
|   #:use-module (gnu packages xorg) |   #:use-module (gnu packages xorg) | ||||||
|   #:use-module (gnu packages gtk) |   #:use-module (gnu packages gtk) | ||||||
|   #:use-module (gnu packages xml) |   #:use-module (gnu packages xml) | ||||||
|  | @ -225,22 +226,21 @@ fonts to/from the WOFF2 format.") | ||||||
| (define-public fontconfig | (define-public fontconfig | ||||||
|   (package |   (package | ||||||
|    (name "fontconfig") |    (name "fontconfig") | ||||||
|    (version "2.12.1") |    (version "2.12.3") | ||||||
|    (source (origin |    (source (origin | ||||||
|             (method url-fetch) |             (method url-fetch) | ||||||
|             (uri (string-append |             (uri (string-append | ||||||
|                    "https://www.freedesktop.org/software/fontconfig/release/fontconfig-" |                    "https://www.freedesktop.org/software/fontconfig/release/fontconfig-" | ||||||
|                    version ".tar.bz2")) |                    version ".tar.bz2")) | ||||||
|             (patches (search-patches "fontconfig-charwidth-symbol-conflict.patch" |  | ||||||
|                                      "fontconfig-path-max.patch")) |  | ||||||
|             (sha256 (base32 |             (sha256 (base32 | ||||||
|                      "1wy7svvp7df6bjpg1m5vizb3ngd7rhb20vpclv3x3qa71khs6jdl")))) |                      "1ggq6jmz3mlzk4xjs615aqw9h3hq33chjn82bhli26kk09kby95x")))) | ||||||
|    (build-system gnu-build-system) |    (build-system gnu-build-system) | ||||||
|    (propagated-inputs `(("expat" ,expat) |    (propagated-inputs `(("expat" ,expat) | ||||||
|                         ("freetype" ,freetype))) |                         ("freetype" ,freetype))) | ||||||
|    (inputs `(("gs-fonts" ,gs-fonts))) |    (inputs `(("gs-fonts" ,gs-fonts))) | ||||||
|    (native-inputs |    (native-inputs | ||||||
|       `(("pkg-config" ,pkg-config))) |     `(("gperf" ,gperf) ; Try dropping this for > 2.12.3. | ||||||
|  |       ("pkg-config" ,pkg-config))) | ||||||
|    (arguments |    (arguments | ||||||
|     `(#:configure-flags |     `(#:configure-flags | ||||||
|       (list "--with-cache-dir=/var/cache/fontconfig" |       (list "--with-cache-dir=/var/cache/fontconfig" | ||||||
|  | @ -258,10 +258,12 @@ fonts to/from the WOFF2 format.") | ||||||
|             "PYTHON=false") |             "PYTHON=false") | ||||||
|       #:phases |       #:phases | ||||||
|       (modify-phases %standard-phases |       (modify-phases %standard-phases | ||||||
|         (add-after 'unpack 'fix-tests-for-freetype-2.7.1 |         (add-before 'configure 'regenerate-fcobjshash | ||||||
|  |           ;; XXX The pre-generated gperf files are broken. | ||||||
|  |           ;; See <https://bugs.freedesktop.org/show_bug.cgi?id=101280>. | ||||||
|           (lambda _ |           (lambda _ | ||||||
|             (substitute* "test/run-test.sh" |             (delete-file "src/fcobjshash.h") | ||||||
|               (("\\\| sort") "| cut -d' ' -f2 | sort")) |             (delete-file "src/fcobjshash.gperf") | ||||||
|             #t)) |             #t)) | ||||||
|         (replace 'install |         (replace 'install | ||||||
|                  (lambda _ |                  (lambda _ | ||||||
|  |  | ||||||
|  | @ -1,82 +0,0 @@ | ||||||
| The first patch is copied from the upstream source repository: |  | ||||||
| 
 |  | ||||||
| https://cgit.freedesktop.org/fontconfig/commit/?id=1ab5258f7c2abfafcd63a760ca08bf93591912da |  | ||||||
| 
 |  | ||||||
| The second patch is adapted from a message to from the OpenEmbedded mailing list: |  | ||||||
| 
 |  | ||||||
| http://lists.openembedded.org/pipermail/openembedded-core/2016-December/130213.html |  | ||||||
| 
 |  | ||||||
| From 1ab5258f7c2abfafcd63a760ca08bf93591912da Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Khem Raj <raj.khem@gmail.com> |  | ||||||
| Date: Wed, 14 Dec 2016 16:11:05 -0800 |  | ||||||
| Subject: Avoid conflicts with integer width macros from TS 18661-1:2014 |  | ||||||
| 
 |  | ||||||
| glibc 2.25+ has now defined these macros in <limits.h> |  | ||||||
| https://sourceware.org/git/?p=glibc.git;a=commit;h=5b17fd0da62bf923cb61d1bb7b08cf2e1f1f9c1a |  | ||||||
| 
 |  | ||||||
| Create an alias for FC_CHAR_WIDTH for ABI compatibility |  | ||||||
| 
 |  | ||||||
| Signed-off-by: Khem Raj <raj.khem@gmail.com> |  | ||||||
| 
 |  | ||||||
| diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h
 |  | ||||||
| index 5c72b22..070a557 100644
 |  | ||||||
| --- a/fontconfig/fontconfig.h
 |  | ||||||
| +++ b/fontconfig/fontconfig.h
 |  | ||||||
| @@ -128,7 +128,8 @@ typedef int		FcBool;
 |  | ||||||
|  #define FC_USER_CACHE_FILE	    ".fonts.cache-" FC_CACHE_VERSION |  | ||||||
|   |  | ||||||
|  /* Adjust outline rasterizer */ |  | ||||||
| -#define FC_CHAR_WIDTH	    "charwidth"	/* Int */
 |  | ||||||
| +#define FC_CHARWIDTH	    "charwidth"	/* Int */
 |  | ||||||
| +#define FC_CHAR_WIDTH	    FC_CHARWIDTH
 |  | ||||||
|  #define FC_CHAR_HEIGHT	    "charheight"/* Int */ |  | ||||||
|  #define FC_MATRIX	    "matrix"    /* FcMatrix */ |  | ||||||
|   |  | ||||||
| diff --git a/src/fcobjs.h b/src/fcobjs.h
 |  | ||||||
| index 1fc4f65..d27864b 100644
 |  | ||||||
| --- a/src/fcobjs.h
 |  | ||||||
| +++ b/src/fcobjs.h
 |  | ||||||
| @@ -51,7 +51,7 @@ FC_OBJECT (DPI,			FcTypeDouble,	NULL)
 |  | ||||||
|  FC_OBJECT (RGBA,		FcTypeInteger,	NULL) |  | ||||||
|  FC_OBJECT (SCALE,		FcTypeDouble,	NULL) |  | ||||||
|  FC_OBJECT (MINSPACE,		FcTypeBool,	NULL) |  | ||||||
| -FC_OBJECT (CHAR_WIDTH,		FcTypeInteger,	NULL)
 |  | ||||||
| +FC_OBJECT (CHARWIDTH,		FcTypeInteger,	NULL)
 |  | ||||||
|  FC_OBJECT (CHAR_HEIGHT,		FcTypeInteger,	NULL) |  | ||||||
|  FC_OBJECT (MATRIX,		FcTypeMatrix,	NULL) |  | ||||||
|  FC_OBJECT (CHARSET,		FcTypeCharSet,	FcCompareCharSet) |  | ||||||
| -- 
 |  | ||||||
| cgit v0.10.2 |  | ||||||
| 
 |  | ||||||
| From 20cddc824c6501c2082cac41b162c34cd5fcc530 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Khem Raj <raj.khem at gmail.com> |  | ||||||
| Date: Sun, 11 Dec 2016 14:32:00 -0800 |  | ||||||
| Subject: [PATCH] Avoid conflicts with integer width macros from TS |  | ||||||
|  18661-1:2014 |  | ||||||
| 
 |  | ||||||
| glibc 2.25+ has now defined these macros in <limits.h> |  | ||||||
| https://sourceware.org/git/?p=glibc.git;a=commit;h=5b17fd0da62bf923cb61d1bb7b08cf2e1f1f9c1a |  | ||||||
| 
 |  | ||||||
| Signed-off-by: Khem Raj <raj.khem at gmail.com> |  | ||||||
| ---
 |  | ||||||
| Upstream-Status: Submitted |  | ||||||
| 
 |  | ||||||
|  fontconfig/fontconfig.h | 2 +- |  | ||||||
|  src/fcobjs.h            | 2 +- |  | ||||||
|  src/fcobjshash.gperf    | 2 +- |  | ||||||
|  src/fcobjshash.h        | 2 +- |  | ||||||
|  4 files changed, 4 insertions(+), 4 deletions(-) |  | ||||||
| 
 |  | ||||||
| Index: fontconfig-2.12.1/src/fcobjshash.h
 |  | ||||||
| ===================================================================
 |  | ||||||
| --- fontconfig-2.12.1.orig/src/fcobjshash.h
 |  | ||||||
| +++ fontconfig-2.12.1/src/fcobjshash.h
 |  | ||||||
| @@ -284,7 +284,7 @@ FcObjectTypeLookup (register const char
 |  | ||||||
|        {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str43,FC_CHARSET_OBJECT}, |  | ||||||
|        {-1}, |  | ||||||
|  #line 47 "fcobjshash.gperf" |  | ||||||
| -      {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str45,FC_CHAR_WIDTH_OBJECT},
 |  | ||||||
| +      {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str45,FC_CHARWIDTH_OBJECT},
 |  | ||||||
|  #line 48 "fcobjshash.gperf" |  | ||||||
|        {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str46,FC_CHAR_HEIGHT_OBJECT}, |  | ||||||
|  #line 55 "fcobjshash.gperf" |  | ||||||
|  | @ -1,124 +0,0 @@ | ||||||
| This patch fix the build on GNU/Hurd, due to PATH_MAX isn't defined. |  | ||||||
| 
 |  | ||||||
| The patch was adapted from upstream source repository: |  | ||||||
| '<https://cgit.freedesktop.org/fontconfig/commit/?id=abdb6d658e1a16410dd1c964e365a3ebd5039e7c>' |  | ||||||
| Commit: abdb6d658e1a16410dd1c964e365a3ebd5039e7c |  | ||||||
| 
 |  | ||||||
| ---
 |  | ||||||
|  src/fcdefault.c | 34 +++++++++++++++++++++++++++------- |  | ||||||
|  src/fcint.h     |  6 ++++++ |  | ||||||
|  src/fcstat.c    | 12 +++++++++++- |  | ||||||
|  3 files changed, 44 insertions(+), 8 deletions(-) |  | ||||||
| 
 |  | ||||||
| diff --git a/src/fcdefault.c b/src/fcdefault.c
 |  | ||||||
| index 6647a8f..5afd7ec 100644
 |  | ||||||
| --- a/src/fcdefault.c
 |  | ||||||
| +++ b/src/fcdefault.c
 |  | ||||||
| @@ -148,17 +148,34 @@ retry:
 |  | ||||||
|  	    prgname = FcStrdup (""); |  | ||||||
|  #else |  | ||||||
|  # if defined (HAVE_GETEXECNAME) |  | ||||||
| -	const char *p = getexecname ();
 |  | ||||||
| +	char *p = FcStrdup(getexecname ());
 |  | ||||||
|  # elif defined (HAVE_READLINK) |  | ||||||
| -	char buf[PATH_MAX + 1];
 |  | ||||||
| -	int len;
 |  | ||||||
| +	size_t size = FC_PATH_MAX;
 |  | ||||||
|  	char *p = NULL; |  | ||||||
|   |  | ||||||
| -	len = readlink ("/proc/self/exe", buf, sizeof (buf) - 1);
 |  | ||||||
| -	if (len != -1)
 |  | ||||||
| +	while (1)
 |  | ||||||
|  	{ |  | ||||||
| -	    buf[len] = '\0';
 |  | ||||||
| -	    p = buf;
 |  | ||||||
| +	    char *buf = malloc (size);
 |  | ||||||
| +	    ssize_t len;
 |  | ||||||
| +
 |  | ||||||
| +	    if (!buf)
 |  | ||||||
| +		break;
 |  | ||||||
| +
 |  | ||||||
| +	    len = readlink ("/proc/self/exe", buf, size - 1);
 |  | ||||||
| +	    if (len < 0)
 |  | ||||||
| +	    {
 |  | ||||||
| +		free (buf);
 |  | ||||||
| +		break;
 |  | ||||||
| +	    }
 |  | ||||||
| +	    if (len < size - 1)
 |  | ||||||
| +	    {
 |  | ||||||
| +		buf[len] = 0;
 |  | ||||||
| +		p = buf;
 |  | ||||||
| +		break;
 |  | ||||||
| +	    }
 |  | ||||||
| +
 |  | ||||||
| +	    free (buf);
 |  | ||||||
| +	    size *= 2;
 |  | ||||||
|  	} |  | ||||||
|  # else |  | ||||||
|  	char *p = NULL; |  | ||||||
| @@ -176,6 +193,9 @@ retry:
 |  | ||||||
|   |  | ||||||
|  	if (!prgname) |  | ||||||
|  	    prgname = FcStrdup (""); |  | ||||||
| +
 |  | ||||||
| +	if (p)
 |  | ||||||
| +	    free (p);
 |  | ||||||
|  #endif |  | ||||||
|   |  | ||||||
|  	if (!fc_atomic_ptr_cmpexch (&default_prgname, NULL, prgname)) { |  | ||||||
| diff --git a/src/fcint.h b/src/fcint.h
 |  | ||||||
| index ac911ad..dad34c5 100644
 |  | ||||||
| --- a/src/fcint.h
 |  | ||||||
| +++ b/src/fcint.h
 |  | ||||||
| @@ -70,6 +70,12 @@ extern pfnSHGetFolderPathA pSHGetFolderPathA;
 |  | ||||||
|  #  define FC_DIR_SEPARATOR_S       "/" |  | ||||||
|  #endif |  | ||||||
|   |  | ||||||
| +#ifdef PATH_MAX
 |  | ||||||
| +#define FC_PATH_MAX	PATH_MAX
 |  | ||||||
| +#else
 |  | ||||||
| +#define FC_PATH_MAX	128
 |  | ||||||
| +#endif
 |  | ||||||
| +
 |  | ||||||
|  #if __GNUC__ >= 4 |  | ||||||
|  #define FC_UNUSED	__attribute__((unused)) |  | ||||||
|  #else |  | ||||||
| diff --git a/src/fcstat.c b/src/fcstat.c
 |  | ||||||
| index 1734fa4..f6e1aaa 100644
 |  | ||||||
| --- a/src/fcstat.c
 |  | ||||||
| +++ b/src/fcstat.c
 |  | ||||||
| @@ -278,8 +278,13 @@ FcDirChecksum (const FcChar8 *dir, time_t *checksum)
 |  | ||||||
|  	{ |  | ||||||
|  #endif |  | ||||||
|  	struct stat statb; |  | ||||||
| -	char f[PATH_MAX + 1];
 |  | ||||||
| +	char *f = malloc (len + 1 + dlen + 1);
 |  | ||||||
|   |  | ||||||
| +	if (!f)
 |  | ||||||
| +	{
 |  | ||||||
| +	    ret = -1;
 |  | ||||||
| +	    goto bail;
 |  | ||||||
| +	}
 |  | ||||||
|  	memcpy (f, dir, len); |  | ||||||
|  	f[len] = FC_DIR_SEPARATOR; |  | ||||||
|  	memcpy (&f[len + 1], files[n]->d_name, dlen); |  | ||||||
| @@ -287,11 +292,16 @@ FcDirChecksum (const FcChar8 *dir, time_t *checksum)
 |  | ||||||
|  	if (lstat (f, &statb) < 0) |  | ||||||
|  	{ |  | ||||||
|  	    ret = -1; |  | ||||||
| +	    free (f);
 |  | ||||||
|  	    goto bail; |  | ||||||
|  	} |  | ||||||
|  	if (S_ISDIR (statb.st_mode)) |  | ||||||
| +	{
 |  | ||||||
| +	    free (f);
 |  | ||||||
|  	    goto bail; |  | ||||||
| +	}
 |  | ||||||
|   |  | ||||||
| +	free (f);
 |  | ||||||
|  	dtype = statb.st_mode; |  | ||||||
|  #ifdef HAVE_STRUCT_DIRENT_D_TYPE |  | ||||||
|  	} |  | ||||||
| -- 
 |  | ||||||
| 2.11.0 |  | ||||||
| 
 |  | ||||||
		Reference in a new issue