summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2020-05-19 19:47:49 +0000
committer Eric Hameleers <alien@slackware.com>2020-05-20 09:00:04 +0200
commit26cd2dd0d1823fa8a3bd95d273dc4f1ec5bdb048 (patch)
tree6c966f78a2f38c7141fda47144ac28da8b798137
parentbb7dc1ffb7eb47db06eded668ce6c9e8eaa9cec0 (diff)
downloadcurrent-26cd2dd0d1823fa8a3bd95d273dc4f1ec5bdb048.tar.gz
current-26cd2dd0d1823fa8a3bd95d273dc4f1ec5bdb048.tar.xz
Tue May 19 19:47:49 UTC 202020200519194749
a/shadow-4.8.1-x86_64-8.txz: Rebuilt. It seems that /etc/suauth is not supported when PAM is in use, even if configure.ac is hacked to enable it. I've removed the man pages for it, and would suggest using sudo as a replacement. l/libexif-0.6.22-x86_64-1.txz: Upgraded. This update fixes bugs and security issues: CVE-2018-20030: Fix for recursion DoS CVE-2020-13114: Time consumption DoS when parsing canon array markers CVE-2020-13113: Potential use of uninitialized memory CVE-2020-13112: Various buffer overread fixes due to integer overflows in maker notes CVE-2020-0093: read overflow CVE-2019-9278: replaced integer overflow checks the compiler could optimize away by safer constructs CVE-2020-12767: fixed division by zero CVE-2016-6328: fixed integer overflow when parsing maker notes CVE-2017-7544: fixed buffer overread For more information, see: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20030 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-13114 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-13113 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-13112 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-0093 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9278 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-12767 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6328 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7544 (* Security fix *) l/oniguruma-6.9.5_rev1-x86_64-2.txz: Rebuilt. Rebuilt with --enable-posix-api. Thanks to MisterL. l/python-packaging-20.4-x86_64-1.txz: Upgraded. n/bind-9.16.3-x86_64-1.txz: Upgraded. This update fixes a security issue: A malicious actor who intentionally exploits the lack of effective limitation on the number of fetches performed when processing referrals can, through the use of specially crafted referrals, cause a recursing server to issue a very large number of fetches in an attempt to process the referral. This has at least two potential effects: The performance of the recursing server can potentially be degraded by the additional work required to perform these fetches, and the attacker can exploit this behavior to use the recursing server as a reflector in a reflection attack with a high amplification factor. For more information, see: https://kb.isc.org/docs/cve-2020-8616 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-8616 (* Security fix *) x/fontconfig-2.13.92-x86_64-1.txz: Upgraded. x/xf86-input-libinput-0.30.0-x86_64-1.txz: Upgraded.
-rw-r--r--ChangeLog.rss62
-rw-r--r--ChangeLog.txt50
-rw-r--r--FILELIST.TXT202
-rwxr-xr-xrecompress.sh13
-rwxr-xr-xsource/a/shadow/shadow.SlackBuild8
-rwxr-xr-xsource/l/libexif/libexif.SlackBuild2
-rw-r--r--source/l/libexif/libexif.url1
-rw-r--r--source/l/libexif/slack-desc2
-rwxr-xr-xsource/l/oniguruma/oniguruma.SlackBuild3
-rwxr-xr-xsource/l/python-packaging/python-packaging.SlackBuild2
-rw-r--r--source/x/fontconfig/fedora-patches/fontconfig-0-timestamp-dir-on-sb.patch55
-rw-r--r--source/x/fontconfig/fedora-patches/fontconfig-drop-lang-from-pkgkit-format.patch12
-rw-r--r--source/x/fontconfig/fedora-patches/fontconfig-fix-1744377.patch122
-rw-r--r--source/x/fontconfig/fedora-patches/fontconfig-fix-assertion.patch144
-rw-r--r--source/x/fontconfig/fedora-patches/fontconfig-fix-dtd-id.patch490
-rw-r--r--source/x/fontconfig/fedora-patches/fontconfig-fix-dtd.patch26
-rw-r--r--source/x/fontconfig/fedora-patches/fontconfig-fix-test.patch41
-rw-r--r--source/x/fontconfig/fedora-patches/fontconfig-mt.patch1439
-rw-r--r--source/x/fontconfig/fedora-patches/fontconfig-read-latest-cache.patch228
-rw-r--r--source/x/fontconfig/fedora-patches/fontconfig-required-freetype-version.patch14
-rw-r--r--source/x/fontconfig/fedora-patches/fontconfig-score-hint-on-match.patch36
-rw-r--r--source/x/fontconfig/fedora-patches/fontconfig-sleep-less.patch12
-rw-r--r--source/x/fontconfig/fedora-patches/fontconfig-sysroot.patch285
-rwxr-xr-xsource/x/fontconfig/fontconfig.SlackBuild20
-rw-r--r--source/x/fontconfig/fontconfig.url1
-rw-r--r--source/x/fontconfig/slack-desc2
26 files changed, 3170 insertions, 102 deletions
diff --git a/ChangeLog.rss b/ChangeLog.rss
index 1687963d..29a6e5bb 100644
--- a/ChangeLog.rss
+++ b/ChangeLog.rss
@@ -11,10 +11,68 @@
<description>Tracking Slackware development in git.</description>
<language>en-us</language>
<id xmlns="http://www.w3.org/2005/Atom">urn:uuid:c964f45e-6732-11e8-bbe5-107b4450212f</id>
- <pubDate>Mon, 18 May 2020 23:30:26 GMT</pubDate>
- <lastBuildDate>Tue, 19 May 2020 06:59:47 GMT</lastBuildDate>
+ <pubDate>Tue, 19 May 2020 19:47:49 GMT</pubDate>
+ <lastBuildDate>Wed, 20 May 2020 06:59:58 GMT</lastBuildDate>
<generator>maintain_current_git.sh v 1.11</generator>
<item>
+ <title>Tue, 19 May 2020 19:47:49 GMT</title>
+ <pubDate>Tue, 19 May 2020 19:47:49 GMT</pubDate>
+ <link>https://git.slackware.nl/current/tag/?h=20200519194749</link>
+ <guid isPermaLink="false">20200519194749</guid>
+ <description>
+ <![CDATA[<pre>
+a/shadow-4.8.1-x86_64-8.txz: Rebuilt.
+ It seems that /etc/suauth is not supported when PAM is in use, even if
+ configure.ac is hacked to enable it. I've removed the man pages for it,
+ and would suggest using sudo as a replacement.
+l/libexif-0.6.22-x86_64-1.txz: Upgraded.
+ This update fixes bugs and security issues:
+ CVE-2018-20030: Fix for recursion DoS
+ CVE-2020-13114: Time consumption DoS when parsing canon array markers
+ CVE-2020-13113: Potential use of uninitialized memory
+ CVE-2020-13112: Various buffer overread fixes due to integer overflows
+ in maker notes
+ CVE-2020-0093: read overflow
+ CVE-2019-9278: replaced integer overflow checks the compiler could
+ optimize away by safer constructs
+ CVE-2020-12767: fixed division by zero
+ CVE-2016-6328: fixed integer overflow when parsing maker notes
+ CVE-2017-7544: fixed buffer overread
+ For more information, see:
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20030
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-13114
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-13113
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-13112
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-0093
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9278
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-12767
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6328
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7544
+ (* Security fix *)
+l/oniguruma-6.9.5_rev1-x86_64-2.txz: Rebuilt.
+ Rebuilt with --enable-posix-api. Thanks to MisterL.
+l/python-packaging-20.4-x86_64-1.txz: Upgraded.
+n/bind-9.16.3-x86_64-1.txz: Upgraded.
+ This update fixes a security issue:
+ A malicious actor who intentionally exploits the lack of effective
+ limitation on the number of fetches performed when processing referrals
+ can, through the use of specially crafted referrals, cause a recursing
+ server to issue a very large number of fetches in an attempt to process
+ the referral. This has at least two potential effects: The performance of
+ the recursing server can potentially be degraded by the additional work
+ required to perform these fetches, and the attacker can exploit this
+ behavior to use the recursing server as a reflector in a reflection attack
+ with a high amplification factor.
+ For more information, see:
+ https://kb.isc.org/docs/cve-2020-8616
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-8616
+ (* Security fix *)
+x/fontconfig-2.13.92-x86_64-1.txz: Upgraded.
+x/xf86-input-libinput-0.30.0-x86_64-1.txz: Upgraded.
+ </pre>]]>
+ </description>
+ </item>
+ <item>
<title>Mon, 18 May 2020 23:30:26 GMT</title>
<pubDate>Mon, 18 May 2020 23:30:26 GMT</pubDate>
<link>https://git.slackware.nl/current/tag/?h=20200518233026</link>
diff --git a/ChangeLog.txt b/ChangeLog.txt
index 8094b4b6..7ecc4830 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -1,3 +1,53 @@
+Tue May 19 19:47:49 UTC 2020
+a/shadow-4.8.1-x86_64-8.txz: Rebuilt.
+ It seems that /etc/suauth is not supported when PAM is in use, even if
+ configure.ac is hacked to enable it. I've removed the man pages for it,
+ and would suggest using sudo as a replacement.
+l/libexif-0.6.22-x86_64-1.txz: Upgraded.
+ This update fixes bugs and security issues:
+ CVE-2018-20030: Fix for recursion DoS
+ CVE-2020-13114: Time consumption DoS when parsing canon array markers
+ CVE-2020-13113: Potential use of uninitialized memory
+ CVE-2020-13112: Various buffer overread fixes due to integer overflows
+ in maker notes
+ CVE-2020-0093: read overflow
+ CVE-2019-9278: replaced integer overflow checks the compiler could
+ optimize away by safer constructs
+ CVE-2020-12767: fixed division by zero
+ CVE-2016-6328: fixed integer overflow when parsing maker notes
+ CVE-2017-7544: fixed buffer overread
+ For more information, see:
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20030
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-13114
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-13113
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-13112
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-0093
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9278
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-12767
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6328
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7544
+ (* Security fix *)
+l/oniguruma-6.9.5_rev1-x86_64-2.txz: Rebuilt.
+ Rebuilt with --enable-posix-api. Thanks to MisterL.
+l/python-packaging-20.4-x86_64-1.txz: Upgraded.
+n/bind-9.16.3-x86_64-1.txz: Upgraded.
+ This update fixes a security issue:
+ A malicious actor who intentionally exploits the lack of effective
+ limitation on the number of fetches performed when processing referrals
+ can, through the use of specially crafted referrals, cause a recursing
+ server to issue a very large number of fetches in an attempt to process
+ the referral. This has at least two potential effects: The performance of
+ the recursing server can potentially be degraded by the additional work
+ required to perform these fetches, and the attacker can exploit this
+ behavior to use the recursing server as a reflector in a reflection attack
+ with a high amplification factor.
+ For more information, see:
+ https://kb.isc.org/docs/cve-2020-8616
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-8616
+ (* Security fix *)
+x/fontconfig-2.13.92-x86_64-1.txz: Upgraded.
+x/xf86-input-libinput-0.30.0-x86_64-1.txz: Upgraded.
++--------------------------+
Mon May 18 23:30:26 UTC 2020
d/Cython-0.29.18-x86_64-1.txz: Upgraded.
kde/kde-workspace-4.11.22-x86_64-8.txz: Rebuilt.
diff --git a/FILELIST.TXT b/FILELIST.TXT
index d57c04b4..c06ab124 100644
--- a/FILELIST.TXT
+++ b/FILELIST.TXT
@@ -1,20 +1,20 @@
-Mon May 18 23:42:01 UTC 2020
+Tue May 19 20:10:57 UTC 2020
Here is the file list for this directory. If you are using a
mirror site and find missing or extra files in the disk
subdirectories, please have the archive administrator refresh
the mirror.
-drwxr-xr-x 12 root root 4096 2020-05-18 23:30 .
+drwxr-xr-x 12 root root 4096 2020-05-19 19:47 .
-rw-r--r-- 1 root root 10064 2016-06-30 18:39 ./ANNOUNCE.14_2
-rw-r--r-- 1 root root 14975 2020-02-08 21:06 ./CHANGES_AND_HINTS.TXT
--rw-r--r-- 1 root root 963511 2020-05-18 19:46 ./CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2020-05-18 19:46 ./CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 963604 2020-05-18 23:42 ./CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2020-05-18 23:42 ./CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 17976 1994-06-10 02:28 ./COPYING
-rw-r--r-- 1 root root 35147 2007-06-30 04:21 ./COPYING3
-rw-r--r-- 1 root root 19573 2016-06-23 20:08 ./COPYRIGHT.TXT
-rw-r--r-- 1 root root 616 2006-10-02 04:37 ./CRYPTO_NOTICE.TXT
--rw-r--r-- 1 root root 885395 2020-05-18 23:30 ./ChangeLog.txt
+-rw-r--r-- 1 root root 888099 2020-05-19 19:47 ./ChangeLog.txt
drwxr-xr-x 3 root root 4096 2013-03-20 22:17 ./EFI
drwxr-xr-x 2 root root 4096 2020-05-17 22:58 ./EFI/BOOT
-rw-r--r-- 1 root root 1417216 2019-07-05 18:54 ./EFI/BOOT/bootx64.efi
@@ -25,9 +25,9 @@ drwxr-xr-x 2 root root 4096 2020-05-17 22:58 ./EFI/BOOT
-rwxr-xr-x 1 root root 2504 2019-07-05 18:54 ./EFI/BOOT/make-grub.sh
-rw-r--r-- 1 root root 10722 2013-09-21 19:02 ./EFI/BOOT/osdetect.cfg
-rw-r--r-- 1 root root 1273 2013-08-12 21:08 ./EFI/BOOT/tools.cfg
--rw-r--r-- 1 root root 1266386 2020-05-18 19:45 ./FILELIST.TXT
+-rw-r--r-- 1 root root 1266496 2020-05-18 23:42 ./FILELIST.TXT
-rw-r--r-- 1 root root 1572 2012-08-29 18:27 ./GPG-KEY
--rw-r--r-- 1 root root 752105 2020-05-18 23:39 ./PACKAGES.TXT
+-rw-r--r-- 1 root root 752221 2020-05-19 20:09 ./PACKAGES.TXT
-rw-r--r-- 1 root root 8564 2016-06-28 21:33 ./README.TXT
-rw-r--r-- 1 root root 3629 2020-05-15 07:03 ./README.initrd
-rw-r--r-- 1 root root 34412 2017-12-01 17:44 ./README_CRYPT.TXT
@@ -828,13 +828,13 @@ drwxr-xr-x 2 root root 4096 2012-09-20 18:06 ./patches
-rw-r--r-- 1 root root 575 2012-09-20 18:06 ./patches/FILE_LIST
-rw-r--r-- 1 root root 14 2012-09-20 18:06 ./patches/MANIFEST.bz2
-rw-r--r-- 1 root root 224 2012-09-20 18:06 ./patches/PACKAGES.TXT
-drwxr-xr-x 18 root root 4096 2020-05-18 23:40 ./slackware64
--rw-r--r-- 1 root root 297246 2020-05-18 23:40 ./slackware64/CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2020-05-18 23:40 ./slackware64/CHECKSUMS.md5.asc
--rw-r--r-- 1 root root 370093 2020-05-18 23:37 ./slackware64/FILE_LIST
--rw-r--r-- 1 root root 3817906 2020-05-18 23:38 ./slackware64/MANIFEST.bz2
+drwxr-xr-x 18 root root 4096 2020-05-19 20:09 ./slackware64
+-rw-r--r-- 1 root root 297249 2020-05-19 20:09 ./slackware64/CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2020-05-19 20:09 ./slackware64/CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 370096 2020-05-19 20:06 ./slackware64/FILE_LIST
+-rw-r--r-- 1 root root 3818241 2020-05-19 20:07 ./slackware64/MANIFEST.bz2
lrwxrwxrwx 1 root root 15 2009-08-23 23:34 ./slackware64/PACKAGES.TXT -> ../PACKAGES.TXT
-drwxr-xr-x 2 root root 28672 2020-05-18 19:40 ./slackware64/a
+drwxr-xr-x 2 root root 28672 2020-05-19 20:06 ./slackware64/a
-rw-r--r-- 1 root root 327 2018-06-24 18:44 ./slackware64/a/aaa_base-14.2-x86_64-5.txt
-rw-r--r-- 1 root root 10820 2018-06-24 18:44 ./slackware64/a/aaa_base-14.2-x86_64-5.txz
-rw-r--r-- 1 root root 163 2018-06-24 18:44 ./slackware64/a/aaa_base-14.2-x86_64-5.txz.asc
@@ -1115,9 +1115,9 @@ drwxr-xr-x 2 root root 28672 2020-05-18 19:40 ./slackware64/a
-rw-r--r-- 1 root root 406 2020-01-15 17:44 ./slackware64/a/sed-4.8-x86_64-1.txt
-rw-r--r-- 1 root root 249488 2020-01-15 17:44 ./slackware64/a/sed-4.8-x86_64-1.txz
-rw-r--r-- 1 root root 163 2020-01-15 17:44 ./slackware64/a/sed-4.8-x86_64-1.txz.asc
--rw-r--r-- 1 root root 422 2020-05-16 19:48 ./slackware64/a/shadow-4.8.1-x86_64-7.txt
--rw-r--r-- 1 root root 1392896 2020-05-16 19:48 ./slackware64/a/shadow-4.8.1-x86_64-7.txz
--rw-r--r-- 1 root root 163 2020-05-16 19:48 ./slackware64/a/shadow-4.8.1-x86_64-7.txz.asc
+-rw-r--r-- 1 root root 422 2020-05-19 18:57 ./slackware64/a/shadow-4.8.1-x86_64-8.txt
+-rw-r--r-- 1 root root 1376432 2020-05-19 18:57 ./slackware64/a/shadow-4.8.1-x86_64-8.txz
+-rw-r--r-- 1 root root 163 2020-05-19 18:57 ./slackware64/a/shadow-4.8.1-x86_64-8.txz.asc
-rw-r--r-- 1 root root 623 2018-04-13 13:12 ./slackware64/a/sharutils-4.15.2-x86_64-2.txt
-rw-r--r-- 1 root root 264912 2018-04-13 13:12 ./slackware64/a/sharutils-4.15.2-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 13:12 ./slackware64/a/sharutils-4.15.2-x86_64-2.txz.asc
@@ -2520,7 +2520,7 @@ drwxr-xr-x 2 root root 20480 2016-03-10 03:11 ./slackware64/kdei
-rw-r--r-- 1 root root 7544 2018-03-01 07:54 ./slackware64/kdei/maketag
-rw-r--r-- 1 root root 7544 2018-03-01 07:54 ./slackware64/kdei/maketag.ez
-rw-r--r-- 1 root root 1500 2018-03-01 07:54 ./slackware64/kdei/tagfile
-drwxr-xr-x 2 root root 69632 2020-05-18 23:37 ./slackware64/l
+drwxr-xr-x 2 root root 69632 2020-05-19 20:06 ./slackware64/l
-rw-r--r-- 1 root root 338 2020-05-16 19:55 ./slackware64/l/ConsoleKit2-1.2.1-x86_64-4.txt
-rw-r--r-- 1 root root 193724 2020-05-16 19:55 ./slackware64/l/ConsoleKit2-1.2.1-x86_64-4.txz
-rw-r--r-- 1 root root 163 2020-05-16 19:55 ./slackware64/l/ConsoleKit2-1.2.1-x86_64-4.txz.asc
@@ -2973,9 +2973,9 @@ drwxr-xr-x 2 root root 69632 2020-05-18 23:37 ./slackware64/l
-rw-r--r-- 1 root root 543 2019-08-02 18:22 ./slackware64/l/libevent-2.1.11-x86_64-1.txt
-rw-r--r-- 1 root root 276000 2019-08-02 18:22 ./slackware64/l/libevent-2.1.11-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-08-02 18:22 ./slackware64/l/libevent-2.1.11-x86_64-1.txz.asc
--rw-r--r-- 1 root root 396 2018-04-13 14:57 ./slackware64/l/libexif-0.6.21-x86_64-2.txt
--rw-r--r-- 1 root root 321184 2018-04-13 14:57 ./slackware64/l/libexif-0.6.21-x86_64-2.txz
--rw-r--r-- 1 root root 163 2018-04-13 14:57 ./slackware64/l/libexif-0.6.21-x86_64-2.txz.asc
+-rw-r--r-- 1 root root 432 2020-05-19 17:30 ./slackware64/l/libexif-0.6.22-x86_64-1.txt
+-rw-r--r-- 1 root root 389192 2020-05-19 17:30 ./slackware64/l/libexif-0.6.22-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-05-19 17:30 ./slackware64/l/libexif-0.6.22-x86_64-1.txz.asc
-rw-r--r-- 1 root root 292 2018-04-13 14:58 ./slackware64/l/libfakekey-0.3-x86_64-2.txt
-rw-r--r-- 1 root root 16608 2018-04-13 14:58 ./slackware64/l/libfakekey-0.3-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 14:58 ./slackware64/l/libfakekey-0.3-x86_64-2.txz.asc
@@ -3251,9 +3251,9 @@ drwxr-xr-x 2 root root 69632 2020-05-18 23:37 ./slackware64/l
-rw-r--r-- 1 root root 411 2018-04-13 15:09 ./slackware64/l/ocl-icd-2.2.12-x86_64-2.txt
-rw-r--r-- 1 root root 30916 2018-04-13 15:09 ./slackware64/l/ocl-icd-2.2.12-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 15:09 ./slackware64/l/ocl-icd-2.2.12-x86_64-2.txz.asc
--rw-r--r-- 1 root root 459 2020-04-30 17:39 ./slackware64/l/oniguruma-6.9.5_rev1-x86_64-1.txt
--rw-r--r-- 1 root root 218500 2020-04-30 17:39 ./slackware64/l/oniguruma-6.9.5_rev1-x86_64-1.txz
--rw-r--r-- 1 root root 163 2020-04-30 17:39 ./slackware64/l/oniguruma-6.9.5_rev1-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 459 2020-05-19 17:59 ./slackware64/l/oniguruma-6.9.5_rev1-x86_64-2.txt
+-rw-r--r-- 1 root root 219836 2020-05-19 17:59 ./slackware64/l/oniguruma-6.9.5_rev1-x86_64-2.txz
+-rw-r--r-- 1 root root 163 2020-05-19 17:59 ./slackware64/l/oniguruma-6.9.5_rev1-x86_64-2.txz.asc
-rw-r--r-- 1 root root 463 2020-02-16 05:22 ./slackware64/l/openal-soft-1.20.1-x86_64-1.txt
-rw-r--r-- 1 root root 748300 2020-02-16 05:22 ./slackware64/l/openal-soft-1.20.1-x86_64-1.txz
-rw-r--r-- 1 root root 163 2020-02-16 05:22 ./slackware64/l/openal-soft-1.20.1-x86_64-1.txz.asc
@@ -3362,9 +3362,9 @@ drwxr-xr-x 2 root root 69632 2020-05-18 23:37 ./slackware64/l
-rw-r--r-- 1 root root 502 2020-05-01 03:59 ./slackware64/l/python-notify2-0.3.1-x86_64-5.txt
-rw-r--r-- 1 root root 9172 2020-05-01 03:59 ./slackware64/l/python-notify2-0.3.1-x86_64-5.txz
-rw-r--r-- 1 root root 163 2020-05-01 03:59 ./slackware64/l/python-notify2-0.3.1-x86_64-5.txz.asc
--rw-r--r-- 1 root root 333 2020-05-01 04:01 ./slackware64/l/python-packaging-20.3-x86_64-2.txt
--rw-r--r-- 1 root root 48548 2020-05-01 04:01 ./slackware64/l/python-packaging-20.3-x86_64-2.txz
--rw-r--r-- 1 root root 163 2020-05-01 04:01 ./slackware64/l/python-packaging-20.3-x86_64-2.txz.asc
+-rw-r--r-- 1 root root 333 2020-05-19 17:37 ./slackware64/l/python-packaging-20.4-x86_64-1.txt
+-rw-r--r-- 1 root root 49216 2020-05-19 17:37 ./slackware64/l/python-packaging-20.4-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-05-19 17:37 ./slackware64/l/python-packaging-20.4-x86_64-1.txz.asc
-rw-r--r-- 1 root root 526 2020-05-03 01:50 ./slackware64/l/python-pillow-7.1.2-x86_64-1.txt
-rw-r--r-- 1 root root 633852 2020-05-03 01:50 ./slackware64/l/python-pillow-7.1.2-x86_64-1.txz
-rw-r--r-- 1 root root 163 2020-05-03 01:50 ./slackware64/l/python-pillow-7.1.2-x86_64-1.txz.asc
@@ -3531,7 +3531,7 @@ drwxr-xr-x 2 root root 69632 2020-05-18 23:37 ./slackware64/l
-rw-r--r-- 1 root root 463 2019-12-29 18:55 ./slackware64/l/zstd-1.4.4-x86_64-2.txt
-rw-r--r-- 1 root root 405812 2019-12-29 18:55 ./slackware64/l/zstd-1.4.4-x86_64-2.txz
-rw-r--r-- 1 root root 163 2019-12-29 18:55 ./slackware64/l/zstd-1.4.4-x86_64-2.txz.asc
-drwxr-xr-x 2 root root 36864 2020-05-18 19:40 ./slackware64/n
+drwxr-xr-x 2 root root 36864 2020-05-19 20:06 ./slackware64/n
-rw-r--r-- 1 root root 357 2020-05-10 18:00 ./slackware64/n/ModemManager-1.12.10-x86_64-1.txt
-rw-r--r-- 1 root root 1806496 2020-05-10 18:00 ./slackware64/n/ModemManager-1.12.10-x86_64-1.txz
-rw-r--r-- 1 root root 163 2020-05-10 18:00 ./slackware64/n/ModemManager-1.12.10-x86_64-1.txz.asc
@@ -3547,9 +3547,9 @@ drwxr-xr-x 2 root root 36864 2020-05-18 19:40 ./slackware64/n
-rw-r--r-- 1 root root 683 2018-04-13 15:29 ./slackware64/n/biff+comsat-0.17-x86_64-2.txt
-rw-r--r-- 1 root root 11216 2018-04-13 15:29 ./slackware64/n/biff+comsat-0.17-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 15:29 ./slackware64/n/biff+comsat-0.17-x86_64-2.txz.asc
--rw-r--r-- 1 root root 334 2020-04-15 18:45 ./slackware64/n/bind-9.16.2-x86_64-1.txt
--rw-r--r-- 1 root root 2272212 2020-04-15 18:45 ./slackware64/n/bind-9.16.2-x86_64-1.txz
--rw-r--r-- 1 root root 163 2020-04-15 18:45 ./slackware64/n/bind-9.16.2-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 334 2020-05-19 17:29 ./slackware64/n/bind-9.16.3-x86_64-1.txt
+-rw-r--r-- 1 root root 2276168 2020-05-19 17:29 ./slackware64/n/bind-9.16.3-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-05-19 17:29 ./slackware64/n/bind-9.16.3-x86_64-1.txz.asc
-rw-r--r-- 1 root root 333 2020-03-15 18:37 ./slackware64/n/bluez-5.54-x86_64-1.txt
-rw-r--r-- 1 root root 1113904 2020-03-15 18:37 ./slackware64/n/bluez-5.54-x86_64-1.txz
-rw-r--r-- 1 root root 163 2020-03-15 18:37 ./slackware64/n/bluez-5.54-x86_64-1.txz.asc
@@ -4023,7 +4023,7 @@ drwxr-xr-x 2 root root 4096 2020-04-05 21:10 ./slackware64/tcl
-rw-r--r-- 1 root root 227 2019-11-22 21:51 ./slackware64/tcl/tk-8.6.10-x86_64-1.txt
-rw-r--r-- 1 root root 1780348 2019-11-22 21:51 ./slackware64/tcl/tk-8.6.10-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-11-22 21:51 ./slackware64/tcl/tk-8.6.10-x86_64-1.txz.asc
-drwxr-xr-x 2 root root 65536 2020-05-18 19:40 ./slackware64/x
+drwxr-xr-x 2 root root 65536 2020-05-19 20:06 ./slackware64/x
-rw-r--r-- 1 root root 257 2018-04-13 16:03 ./slackware64/x/anthy-9100h-x86_64-2.txt
-rw-r--r-- 1 root root 5074404 2018-04-13 16:03 ./slackware64/x/anthy-9100h-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 16:03 ./slackware64/x/anthy-9100h-x86_64-2.txz.asc
@@ -4162,9 +4162,9 @@ drwxr-xr-x 2 root root 65536 2020-05-18 19:40 ./slackware64/x
-rw-r--r-- 1 root root 451 2018-06-06 02:14 ./slackware64/x/font-xfree86-type1-1.0.4-noarch-3.txt
-rw-r--r-- 1 root root 36508 2018-06-06 02:14 ./slackware64/x/font-xfree86-type1-1.0.4-noarch-3.txz
-rw-r--r-- 1 root root 163 2018-06-06 02:14 ./slackware64/x/font-xfree86-type1-1.0.4-noarch-3.txz.asc
--rw-r--r-- 1 root root 348 2018-09-12 19:29 ./slackware64/x/fontconfig-2.13.1-x86_64-1.txt
--rw-r--r-- 1 root root 303464 2018-09-12 19:29 ./slackware64/x/fontconfig-2.13.1-x86_64-1.txz
--rw-r--r-- 1 root root 163 2018-09-12 19:29 ./slackware64/x/fontconfig-2.13.1-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 385 2020-05-19 18:39 ./slackware64/x/fontconfig-2.13.92-x86_64-1.txt
+-rw-r--r-- 1 root root 315392 2020-05-19 18:39 ./slackware64/x/fontconfig-2.13.92-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-05-19 18:39 ./slackware64/x/fontconfig-2.13.92-x86_64-1.txz.asc
-rw-r--r-- 1 root root 372 2020-01-06 18:34 ./slackware64/x/fonttosfnt-1.1.0-x86_64-1.txt
-rw-r--r-- 1 root root 31540 2020-01-06 18:34 ./slackware64/x/fonttosfnt-1.1.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2020-01-06 18:34 ./slackware64/x/fonttosfnt-1.1.0-x86_64-1.txz.asc
@@ -4605,9 +4605,9 @@ drwxr-xr-x 2 root root 65536 2020-05-18 19:40 ./slackware64/x
-rw-r--r-- 1 root root 475 2018-05-11 23:28 ./slackware64/x/xf86-input-keyboard-1.9.0-x86_64-3.txt
-rw-r--r-- 1 root root 26076 2018-05-11 23:28 ./slackware64/x/xf86-input-keyboard-1.9.0-x86_64-3.txz
-rw-r--r-- 1 root root 163 2018-05-11 23:28 ./slackware64/x/xf86-input-keyboard-1.9.0-x86_64-3.txz.asc
--rw-r--r-- 1 root root 468 2019-08-12 20:56 ./slackware64/x/xf86-input-libinput-0.29.0-x86_64-1.txt
--rw-r--r-- 1 root root 50152 2019-08-12 20:56 ./slackware64/x/xf86-input-libinput-0.29.0-x86_64-1.txz
--rw-r--r-- 1 root root 163 2019-08-12 20:56 ./slackware64/x/xf86-input-libinput-0.29.0-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 468 2020-05-19 19:21 ./slackware64/x/xf86-input-libinput-0.30.0-x86_64-1.txt
+-rw-r--r-- 1 root root 50508 2020-05-19 19:21 ./slackware64/x/xf86-input-libinput-0.30.0-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-05-19 19:21 ./slackware64/x/xf86-input-libinput-0.30.0-x86_64-1.txz.asc
-rw-r--r-- 1 root root 428 2018-06-19 18:00 ./slackware64/x/xf86-input-mouse-1.9.3-x86_64-1.txt
-rw-r--r-- 1 root root 49684 2018-06-19 18:00 ./slackware64/x/xf86-input-mouse-1.9.3-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-06-19 18:00 ./slackware64/x/xf86-input-mouse-1.9.3-x86_64-1.txz.asc
@@ -5139,11 +5139,11 @@ drwxr-xr-x 2 root root 4096 2019-02-17 23:51 ./slackware64/y
-rw-r--r-- 1 root root 1147 2018-03-01 07:55 ./slackware64/y/maketag
-rw-r--r-- 1 root root 1147 2018-03-01 07:55 ./slackware64/y/maketag.ez
-rw-r--r-- 1 root root 14 2018-03-01 07:55 ./slackware64/y/tagfile
-drwxr-xr-x 19 root root 4096 2020-05-18 23:42 ./source
--rw-r--r-- 1 root root 495649 2020-05-18 23:42 ./source/CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2020-05-18 23:42 ./source/CHECKSUMS.md5.asc
--rw-r--r-- 1 root root 697791 2020-05-18 23:41 ./source/FILE_LIST
--rw-r--r-- 1 root root 20786602 2020-05-18 23:41 ./source/MANIFEST.bz2
+drwxr-xr-x 19 root root 4096 2020-05-19 20:10 ./source
+-rw-r--r-- 1 root root 497055 2020-05-19 20:10 ./source/CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2020-05-19 20:10 ./source/CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 699457 2020-05-19 20:10 ./source/FILE_LIST
+-rw-r--r-- 1 root root 20797725 2020-05-19 20:10 ./source/MANIFEST.bz2
-rw-r--r-- 1 root root 1314 2006-10-02 04:40 ./source/README.TXT
drwxr-xr-x 115 root root 4096 2020-05-17 23:32 ./source/a
-rw-r--r-- 1 root root 1034 2019-05-04 17:56 ./source/a/FTBFSlog
@@ -5968,7 +5968,7 @@ drwxr-xr-x 2 root root 4096 2020-05-08 19:34 ./source/a/shadow/pam.d-su
-rw-r--r-- 1 root root 1611196 2020-01-24 21:43 ./source/a/shadow/shadow-4.8.1.tar.xz
-rw-r--r-- 1 root root 488 2020-01-24 21:45 ./source/a/shadow/shadow-4.8.1.tar.xz.asc
-rw-r--r-- 1 root root 734 2013-12-14 21:05 ./source/a/shadow/shadow.CVE-2005-4890.relax.diff.gz
--rwxr-xr-x 1 root root 8256 2020-05-16 19:32 ./source/a/shadow/shadow.SlackBuild
+-rwxr-xr-x 1 root root 8499 2020-05-19 18:54 ./source/a/shadow/shadow.SlackBuild
-rw-r--r-- 1 root root 522 2020-02-06 23:30 ./source/a/shadow/shadow.login.display.short.hostname.diff.gz
-rw-r--r-- 1 root root 39 2019-06-17 02:57 ./source/a/shadow/shadow.url
-rw-r--r-- 1 root root 876 2018-11-09 20:31 ./source/a/shadow/slack-desc
@@ -9208,11 +9208,12 @@ drwxr-xr-x 2 root root 4096 2019-09-29 23:48 ./source/l/libevent
-rw-r--r-- 1 root root 746646 2019-08-01 21:44 ./source/l/libevent/libevent-2.1.11-stable.tar.lz
-rwxr-xr-x 1 root root 4571 2019-09-29 23:48 ./source/l/libevent/libevent.SlackBuild
-rw-r--r-- 1 root root 999 2018-02-27 06:12 ./source/l/libevent/slack-desc
-drwxr-xr-x 2 root root 4096 2019-09-29 23:48 ./source/l/libexif
--rw-r--r-- 1 root root 899556 2012-07-12 20:35 ./source/l/libexif/libexif-0.6.21.tar.xz
--rwxr-xr-x 1 root root 3771 2019-09-29 23:48 ./source/l/libexif/libexif.SlackBuild
+drwxr-xr-x 2 root root 4096 2020-05-19 17:29 ./source/l/libexif
+-rw-r--r-- 1 root root 1347040 2020-05-18 19:57 ./source/l/libexif/libexif-0.6.22.tar.xz
+-rwxr-xr-x 1 root root 3771 2020-05-19 17:29 ./source/l/libexif/libexif.SlackBuild
-rw-r--r-- 1 root root 197 2011-02-09 07:02 ./source/l/libexif/libexif.pc.diff.gz
--rw-r--r-- 1 root root 851 2018-02-27 06:12 ./source/l/libexif/slack-desc
+-rw-r--r-- 1 root root 36 2020-05-19 17:28 ./source/l/libexif/libexif.url
+-rw-r--r-- 1 root root 887 2020-05-19 17:27 ./source/l/libexif/slack-desc
drwxr-xr-x 2 root root 4096 2019-09-29 23:48 ./source/l/libfakekey
-rw-r--r-- 1 root root 9288 2017-11-24 22:31 ./source/l/libfakekey/libfakekey-0.3.tar.xz
-rwxr-xr-x 1 root root 3740 2019-09-29 23:48 ./source/l/libfakekey/libfakekey.SlackBuild
@@ -9713,7 +9714,7 @@ drwxr-xr-x 2 root root 4096 2019-09-29 23:48 ./source/l/ocl-icd
-rw-r--r-- 1 root root 898 2018-02-27 06:12 ./source/l/ocl-icd/slack-desc
drwxr-xr-x 2 root root 4096 2020-04-30 17:38 ./source/l/oniguruma
-rw-r--r-- 1 root root 372788 2020-04-26 07:20 ./source/l/oniguruma/oniguruma-6.9.5_rev1.tar.lz
--rwxr-xr-x 1 root root 4159 2020-04-20 19:41 ./source/l/oniguruma/oniguruma.SlackBuild
+-rwxr-xr-x 1 root root 4182 2020-05-19 17:59 ./source/l/oniguruma/oniguruma.SlackBuild
-rw-r--r-- 1 root root 916 2019-12-01 18:11 ./source/l/oniguruma/slack-desc
drwxr-xr-x 2 root root 4096 2020-02-16 05:22 ./source/l/openal-soft
-rw-r--r-- 1 root root 275 2020-02-12 22:38 ./source/l/openal-soft/doinst.sh.gz
@@ -9899,10 +9900,10 @@ drwxr-xr-x 2 root root 4096 2019-12-29 19:15 ./source/l/python-notify2
-rwxr-xr-x 1 root root 2573 2020-05-01 03:59 ./source/l/python-notify2/python-notify2.SlackBuild
-rw-r--r-- 1 root root 37 2018-02-23 21:12 ./source/l/python-notify2/python-notify2.url
-rw-r--r-- 1 root root 996 2018-02-27 06:12 ./source/l/python-notify2/slack-desc
-drwxr-xr-x 2 root root 4096 2020-03-06 01:41 ./source/l/python-packaging
--rw-r--r-- 1 root root 56432 2020-03-05 07:48 ./source/l/python-packaging/packaging-20.3.tar.lz
+drwxr-xr-x 2 root root 4096 2020-05-19 17:36 ./source/l/python-packaging
+-rw-r--r-- 1 root root 57322 2020-05-19 06:30 ./source/l/python-packaging/packaging-20.4.tar.lz
-rw-r--r-- 1 root root 36 2020-01-25 18:33 ./source/l/python-packaging/packaging.url
--rwxr-xr-x 1 root root 2904 2020-05-01 04:00 ./source/l/python-packaging/python-packaging.SlackBuild
+-rwxr-xr-x 1 root root 2904 2020-05-19 17:36 ./source/l/python-packaging/python-packaging.SlackBuild
-rw-r--r-- 1 root root 829 2018-08-27 18:22 ./source/l/python-packaging/slack-desc
drwxr-xr-x 2 root root 4096 2020-05-03 01:49 ./source/l/python-pillow
-rw-r--r-- 1 root root 572136 2020-05-03 01:48 ./source/l/python-pillow/Pillow-7.1.2.tar.lz
@@ -10345,13 +10346,13 @@ drwxr-xr-x 2 root root 4096 2019-09-29 23:48 ./source/n/biff+comsat
-rw-r--r-- 1 root root 729 2004-06-21 20:51 ./source/n/biff+comsat/biff+comsat.badutmp.diff.gz
-rw-r--r-- 1 root root 1222 2001-06-03 08:32 ./source/n/biff+comsat/biff+comsat.offset.diff.gz
-rw-r--r-- 1 root root 1142 2018-02-27 06:13 ./source/n/biff+comsat/slack-desc
-drwxr-xr-x 3 root root 4096 2020-04-15 18:41 ./source/n/bind
+drwxr-xr-x 3 root root 4096 2020-05-19 17:26 ./source/n/bind
-rw-r--r-- 1 root root 5120 2007-06-08 04:48 ./source/n/bind/3link.sh
--rw-r--r-- 1 root root 4559216 2020-04-15 16:39 ./source/n/bind/bind-9.16.2.tar.xz
--rw-r--r-- 1 root root 874 2020-04-15 16:39 ./source/n/bind/bind-9.16.2.tar.xz.asc
--rw-r--r-- 1 root root 874 2020-04-15 16:39 ./source/n/bind/bind-9.16.2.tar.xz.sha1.asc
--rw-r--r-- 1 root root 874 2020-04-15 16:39 ./source/n/bind/bind-9.16.2.tar.xz.sha256.asc
--rw-r--r-- 1 root root 874 2020-04-15 16:39 ./source/n/bind/bind-9.16.2.tar.xz.sha512.asc
+-rw-r--r-- 1 root root 4573044 2020-05-19 07:49 ./source/n/bind/bind-9.16.3.tar.xz
+-rw-r--r-- 1 root root 833 2020-05-19 07:49 ./source/n/bind/bind-9.16.3.tar.xz.asc
+-rw-r--r-- 1 root root 833 2020-05-19 07:49 ./source/n/bind/bind-9.16.3.tar.xz.sha1.asc
+-rw-r--r-- 1 root root 833 2020-05-19 07:49 ./source/n/bind/bind-9.16.3.tar.xz.sha256.asc
+-rw-r--r-- 1 root root 833 2020-05-19 07:49 ./source/n/bind/bind-9.16.3.tar.xz.sha512.asc
-rwxr-xr-x 1 root root 5385 2020-03-18 17:56 ./source/n/bind/bind.SlackBuild
drwxr-xr-x 2 root root 4096 2019-08-19 18:12 ./source/n/bind/caching-example
-rw-r--r-- 1 root root 195 2001-05-18 02:03 ./source/n/bind/caching-example/localhost.zone
@@ -11460,7 +11461,7 @@ drwxr-xr-x 2 root root 4096 2019-11-22 21:49 ./source/tcl/tk
-rw-r--r-- 1 root root 677 2018-11-16 18:36 ./source/tcl/tk/slack-desc
-rwxr-xr-x 1 root root 4428 2019-11-22 21:51 ./source/tcl/tk/tk.SlackBuild
-rw-r--r-- 1 root root 2944580 2019-11-21 19:49 ./source/tcl/tk/tk8.6.10-src.tar.lz
-drwxr-xr-x 53 root root 4096 2020-03-25 18:14 ./source/x
+drwxr-xr-x 53 root root 4096 2020-05-19 18:38 ./source/x
-rw-r--r-- 1 root root 958 2019-10-12 17:05 ./source/x/FTBFSlog
drwxr-xr-x 2 root root 4096 2019-09-29 23:48 ./source/x/anthy
-rw-r--r-- 1 root root 3198760 2009-02-07 16:33 ./source/x/anthy/anthy-9100h.tar.xz
@@ -11475,15 +11476,30 @@ drwxr-xr-x 2 root root 4096 2019-09-29 23:48 ./source/x/dejavu-fonts-ttf
-rwxr-xr-x 1 root root 2983 2019-09-29 23:48 ./source/x/dejavu-fonts-ttf/dejavu-fonts-ttf.SlackBuild
-rw-r--r-- 1 root root 169 2018-06-05 22:36 ./source/x/dejavu-fonts-ttf/doinst.sh.gz
-rw-r--r-- 1 root root 904 2018-02-27 06:13 ./source/x/dejavu-fonts-ttf/slack-desc
-drwxr-xr-x 2 root root 4096 2019-09-29 23:48 ./source/x/fontconfig
+drwxr-xr-x 3 root root 4096 2020-05-19 18:10 ./source/x/fontconfig
-rw-r--r-- 1 root root 139 2013-02-28 21:07 ./source/x/fontconfig/doinst.sh.gz
--rw-r--r-- 1 root root 1362948 2018-08-30 08:27 ./source/x/fontconfig/fontconfig-2.13.1.tar.lz
--rwxr-xr-x 1 root root 6545 2019-09-29 23:48 ./source/x/fontconfig/fontconfig.SlackBuild
+drwxr-xr-x 2 root root 4096 2020-05-19 17:42 ./source/x/fontconfig/fedora-patches
+-rw-r--r-- 1 root root 675 2020-04-23 09:20 ./source/x/fontconfig/fedora-patches/fontconfig-0-timestamp-dir-on-sb.patch.gz
+-rw-r--r-- 1 root root 438 2020-04-23 09:20 ./source/x/fontconfig/fedora-patches/fontconfig-drop-lang-from-pkgkit-format.patch.gz
+-rw-r--r-- 1 root root 1969 2020-04-23 09:20 ./source/x/fontconfig/fedora-patches/fontconfig-fix-1744377.patch.gz
+-rw-r--r-- 1 root root 1629 2020-04-23 09:20 ./source/x/fontconfig/fedora-patches/fontconfig-fix-assertion.patch.gz
+-rw-r--r-- 1 root root 2275 2020-04-23 09:20 ./source/x/fontconfig/fedora-patches/fontconfig-fix-dtd-id.patch.gz
+-rw-r--r-- 1 root root 452 2020-04-23 09:20 ./source/x/fontconfig/fedora-patches/fontconfig-fix-dtd.patch.gz
+-rw-r--r-- 1 root root 814 2020-04-23 09:20 ./source/x/fontconfig/fedora-patches/fontconfig-fix-test.patch.gz
+-rw-r--r-- 1 root root 9115 2020-04-23 09:20 ./source/x/fontconfig/fedora-patches/fontconfig-mt.patch.gz
+-rw-r--r-- 1 root root 2578 2020-04-23 09:20 ./source/x/fontconfig/fedora-patches/fontconfig-read-latest-cache.patch.gz
+-rw-r--r-- 1 root root 419 2020-04-23 09:20 ./source/x/fontconfig/fedora-patches/fontconfig-required-freetype-version.patch.gz
+-rw-r--r-- 1 root root 622 2020-04-23 09:20 ./source/x/fontconfig/fedora-patches/fontconfig-score-hint-on-match.patch.gz
+-rw-r--r-- 1 root root 326 2020-04-23 09:20 ./source/x/fontconfig/fedora-patches/fontconfig-sleep-less.patch.gz
+-rw-r--r-- 1 root root 2714 2020-04-23 09:20 ./source/x/fontconfig/fedora-patches/fontconfig-sysroot.patch.gz
+-rw-r--r-- 1 root root 1413128 2019-08-09 11:17 ./source/x/fontconfig/fontconfig-2.13.92.tar.xz
+-rwxr-xr-x 1 root root 7824 2020-05-19 18:38 ./source/x/fontconfig/fontconfig.SlackBuild
-rw-r--r-- 1 root root 340 2017-04-30 19:35 ./source/x/fontconfig/fontconfig.dejavu.diff.gz
-rw-r--r-- 1 root root 574 2013-03-01 04:32 ./source/x/fontconfig/fontconfig.font.dir.list.diff.gz
-rw-r--r-- 1 root root 346 2017-04-30 19:19 ./source/x/fontconfig/fontconfig.liberation.diff.gz
+-rw-r--r-- 1 root root 30 2020-05-19 02:12 ./source/x/fontconfig/fontconfig.url
-rw-r--r-- 1 root root 657 2007-01-25 05:00 ./source/x/fontconfig/setup.05.fontconfig
--rw-r--r-- 1 root root 806 2018-02-27 06:13 ./source/x/fontconfig/slack-desc
+-rw-r--r-- 1 root root 843 2020-05-19 02:09 ./source/x/fontconfig/slack-desc
drwxr-xr-x 2 root root 4096 2019-09-30 16:57 ./source/x/freeglut
-rw-r--r-- 1 root root 444 2012-02-13 00:02 ./source/x/freeglut/RATIONALE
-rw-r--r-- 1 root root 313505 2019-09-29 19:13 ./source/x/freeglut/freeglut-3.2.1.tar.lz
@@ -12364,35 +12380,35 @@ drwxr-xr-x 2 root root 12288 2020-05-18 17:50 ./source/x/x11/slack-desc
-rw-r--r-- 1 root root 874 2012-04-08 03:18 ./source/x/x11/slack-desc/libXfontcache
-rw-r--r-- 1 root root 748 2012-04-08 03:18 ./source/x/x11/slack-desc/libXft
-rw-r--r-- 1 root root 749 2012-04-08 03:18 ./source/x/x11/slack-desc/libXi
--rw-r--r-- 1 root root 846 2012-04-08 03:19 ./source/x/x11/slack-desc/libXinerama
--rw-r--r-- 1 root root 806 2018-02-26 22:56 ./source/x/x11/slack-desc/libXmu
--rw-r--r-- 1 root root 738 2012-04-08 03:23 ./source/x/x11/slack-desc/libXp
--rw-r--r-- 1 root root 770 2012-04-08 03:24 ./source/x/x11/slack-desc/libXpm
--rw-r--r-- 1 root root 853 2015-04-21 01:58 ./source/x/x11/slack-desc/libXpresent
--rw-r--r-- 1 root root 821 2012-04-08 03:24 ./source/x/x11/slack-desc/libXrandr
--rw-r--r-- 1 root root 838 2012-04-08 03:24 ./source/x/x11/slack-desc/libXrender
--rw-r--r-- 1 root root 779 2012-04-08 03:25 ./source/x/x11/slack-desc/libXres
--rw-r--r-- 1 root root 744 2012-04-08 03:26 ./source/x/x11/slack-desc/libXt
--rw-r--r-- 1 root root 792 2012-04-08 03:26 ./source/x/x11/slack-desc/libXtst
--rw-r--r-- 1 root root 777 2012-04-08 03:26 ./source/x/x11/slack-desc/libXv
--rw-r--r-- 1 root root 777 2012-04-08 02:52 ./source/x/x11/slack-desc/libXvMC
--rw-r--r-- 1 root root 844 2012-04-08 03:27 ./source/x/x11/slack-desc/libXxf86dga
--rw-r--r-- 1 root root 864 2012-04-08 03:27 ./source/x/x11/slack-desc/libXxf86misc
--rw-r--r-- 1 root root 829 2012-04-08 03:27 ./source/x/x11/slack-desc/libXxf86vm
--rw-r--r-- 1 root root 777 2012-04-08 03:28 ./source/x/x11/slack-desc/libdmx
--rw-r--r-- 1 root root 807 2012-04-08 03:28 ./source/x/x11/slack-desc/libfontenc
--rw-r--r-- 1 root root 840 2012-04-08 03:29 ./source/x/x11/slack-desc/libpciaccess
--rw-r--r-- 1 root root 1003 2012-04-08 03:30 ./source/x/x11/slack-desc/libpthread-stubs
--rw-r--r-- 1 root root 900 2018-02-26 22:57 ./source/x/x11/slack-desc/libxcb
--rw-r--r-- 1 root root 824 2012-04-08 02:45 ./source/x/x11/slack-desc/libxkbfile
--rw-r--r-- 1 root root 847 2014-05-13 05:34 ./source/x/x11/slack-desc/libxshmfence
--rw-r--r-- 1 root root 707 2012-04-08 03:30 ./source/x/x11/slack-desc/listres
--rw-r--r-- 1 root root 778 2012-04-08 03:31 ./source/x/x11/slack-desc/lndir
--rw-r--r-- 1 root root 826 2018-02-26 22:57 ./source/x/x11/slack-desc/luit
--rw-r--r-- 1 root root 818 2012-04-08 03:31 ./source/x/x11/slack-desc/makedepend
--rw-r--r-- 1 root root 890 2012-04-08 03:31 ./source/x/x11/slack-desc/mkcomposecache
--rw-r--r-- 1 root root 837 2019-10-28 19:03 ./source/x/x11/slack-desc/mkfontscale
--rw-r--r-- 1 root root 679 2012-04-08 03:32 ./source/x/x11/slack-desc/oclock
+-rw-r--r-- 1 root root 846 2012-04-08 03:19 ./source/x/x11/slack-desc/libXinerama
+-rw-r--r-- 1 root root 806 2018-02-26 22:56 ./source/x/x11/slack-desc/libXmu
+-rw-r--r-- 1 root root 738 2012-04-08 03:23 ./source/x/x11/slack-desc/libXp
+-rw-r--r-- 1 root root 770 2012-04-08 03:24 ./source/x/x11/slack-desc/libXpm
+-rw-r--r-- 1 root root 853 2015-04-21 01:58 ./source/x/x11/slack-desc/libXpresent
+-rw-r--r-- 1 root root 821 2012-04-08 03:24 ./source/x/x11/slack-desc/libXrandr
+-rw-r--r-- 1 root root 838 2012-04-08 03:24 ./source/x/x11/slack-desc/libXrender
+-rw-r--r-- 1 root root 779 2012-04-08 03:25 ./source/x/x11/slack-desc/libXres
+-rw-r--r-- 1 root root 744 2012-04-08 03:26 ./source/x/x11/slack-desc/libXt
+-rw-r--r-- 1 root root 792 2012-04-08 03:26 ./source/x/x11/slack-desc/libXtst
+-rw-r--r-- 1 root root 777 2012-04-08 03:26 ./source/x/x11/slack-desc/libXv
+-rw-r--r-- 1 root root 777 2012-04-08 02:52 ./source/x/x11/slack-desc/libXvMC
+-rw-r--r-- 1 root root 844 2012-04-08 03:27 ./source/x/x11/slack-desc/libXxf86dga
+-rw-r--r-- 1 root root 864 2012-04-08 03:27 ./source/x/x11/slack-desc/libXxf86misc
+-rw-r--r-- 1 root root 829 2012-04-08 03:27 ./source/x/x11/slack-desc/libXxf86vm
+-rw-r--r-- 1 root root 777 2012-04-08 03:28 ./source/x/x11/slack-desc/libdmx
+-rw-r--r-- 1 root root 807 2012-04-08 03:28 ./source/x/x11/slack-desc/libfontenc
+-rw-r--r-- 1 root root 840 2012-04-08 03:29 ./source/x/x11/slack-desc/libpciaccess
+-rw-r--r-- 1 root root 1003 2012-04-08 03:30 ./source/x/x11/slack-desc/libpthread-stubs
+-rw-r--r-- 1 root root 900 2018-02-26 22:57 ./source/x/x11/slack-desc/libxcb
+-rw-r--r-- 1 root root 824 2012-04-08 02:45 ./source/x/x11/slack-desc/libxkbfile
+-rw-r--r-- 1 root root 847 2014-05-13 05:34 ./source/x/x11/slack-desc/libxshmfence
+-rw-r--r-- 1 root root 707 2012-04-08 03:30 ./source/x/x11/slack-desc/listres
+-rw-r--r-- 1 root root 778 2012-04-08 03:31 ./source/x/x11/slack-desc/lndir
+-rw-r--r-- 1 root root 826 2018-02-26 22:57 ./source/x/x11/slack-desc/luit
+-rw-r--r-- 1 root root 818 2012-04-08 03:31 ./source/x/x11/slack-desc/makedepend
+-rw-r--r-- 1 root root 890 2012-04-08 03:31 ./source/x/x11/slack-desc/mkcomposecache
+-rw-r--r-- 1 root root 837 2019-10-28 19:03 ./source/x/x11/slack-desc/mkfontscale
+-rw-r--r-- 1 root root 679 2012-04-08 03:32 ./source/x/x11/slack-desc/oclock
-rw-r--r-- 1 root root 823 2012-04-08 02:44 ./source/x/x11/slack-desc/pixman
-rw-r--r-- 1 root root 732 2018-02-26 22:57 ./source/x/x11/slack-desc/presentproto
-rw-r--r-- 1 root root 731 2012-04-08 03:32 ./source/x/x11/slack-desc/printproto
@@ -12653,12 +12669,12 @@ drwxr-xr-x 2 root root 4096 2020-02-01 19:14 ./source/x/x11/src/data
drwxr-xr-x 2 root root 4096 2015-05-04 05:55 ./source/x/x11/src/doc
-rw-r--r-- 1 root root 333452 2015-05-01 06:18 ./source/x/x11/src/doc/xorg-docs-1.7.1.tar.xz
-rw-r--r-- 1 root root 110976 2012-06-06 02:42 ./source/x/x11/src/doc/xorg-sgml-doctools-1.11.tar.xz
-drwxr-xr-x 2 root root 4096 2020-01-19 19:11 ./source/x/x11/src/driver
+drwxr-xr-x 2 root root 4096 2020-05-19 19:20 ./source/x/x11/src/driver
-rw-r--r-- 1 root root 236544 2011-05-04 23:02 ./source/x/x11/src/driver/xf86-input-acecad-1.5.0.tar.xz
-rw-r--r-- 1 root root 345048 2018-05-29 02:33 ./source/x/x11/src/driver/xf86-input-evdev-2.10.6.tar.xz
-rw-r--r-- 1 root root 291860 2016-11-17 23:02 ./source/x/x11/src/driver/xf86-input-joystick-1.6.3.tar.xz
-rw-r--r-- 1 root root 290104 2016-11-17 04:29 ./source/x/x11/src/driver/xf86-input-keyboard-1.9.0.tar.xz
--rw-r--r-- 1 root root 308644 2019-08-12 02:38 ./source/x/x11/src/driver/xf86-input-libinput-0.29.0.tar.xz
+-rw-r--r-- 1 root root 309420 2020-05-19 06:23 ./source/x/x11/src/driver/xf86-input-libinput-0.30.0.tar.xz
-rw-r--r-- 1 root root 318204 2018-06-19 04:36 ./source/x/x11/src/driver/xf86-input-mouse-1.9.3.tar.xz
-rw-r--r-- 1 root root 229120 2011-06-28 00:52 ./source/x/x11/src/driver/xf86-input-penmount-1.5.0.tar.xz
-rw-r--r-- 1 root root 427964 2018-05-29 03:19 ./source/x/x11/src/driver/xf86-input-synaptics-1.9.1.tar.xz
diff --git a/recompress.sh b/recompress.sh
index 8e9df55e..8f83de0d 100755
--- a/recompress.sh
+++ b/recompress.sh
@@ -1271,6 +1271,19 @@ gzip ./source/x/libvdpau/doinst.sh
gzip ./source/x/ttf-tlwg/doinst.sh
gzip ./source/x/xterm/doinst.sh
gzip ./source/x/fontconfig/fontconfig.font.dir.list.diff
+gzip ./source/x/fontconfig/fedora-patches/fontconfig-drop-lang-from-pkgkit-format.patch
+gzip ./source/x/fontconfig/fedora-patches/fontconfig-sleep-less.patch
+gzip ./source/x/fontconfig/fedora-patches/fontconfig-fix-assertion.patch
+gzip ./source/x/fontconfig/fedora-patches/fontconfig-score-hint-on-match.patch
+gzip ./source/x/fontconfig/fedora-patches/fontconfig-0-timestamp-dir-on-sb.patch
+gzip ./source/x/fontconfig/fedora-patches/fontconfig-fix-dtd-id.patch
+gzip ./source/x/fontconfig/fedora-patches/fontconfig-required-freetype-version.patch
+gzip ./source/x/fontconfig/fedora-patches/fontconfig-read-latest-cache.patch
+gzip ./source/x/fontconfig/fedora-patches/fontconfig-sysroot.patch
+gzip ./source/x/fontconfig/fedora-patches/fontconfig-fix-1744377.patch
+gzip ./source/x/fontconfig/fedora-patches/fontconfig-fix-dtd.patch
+gzip ./source/x/fontconfig/fedora-patches/fontconfig-fix-test.patch
+gzip ./source/x/fontconfig/fedora-patches/fontconfig-mt.patch
gzip ./source/x/fontconfig/doinst.sh
gzip ./source/x/fontconfig/fontconfig.liberation.diff
gzip ./source/x/fontconfig/fontconfig.dejavu.diff
diff --git a/source/a/shadow/shadow.SlackBuild b/source/a/shadow/shadow.SlackBuild
index 21d4d875..40326878 100755
--- a/source/a/shadow/shadow.SlackBuild
+++ b/source/a/shadow/shadow.SlackBuild
@@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=shadow
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-7}
+BUILD=${BUILD:-8}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@@ -192,6 +192,12 @@ if [ "$SHIP_SU" = "NO" ]; then
find $PKG/usr/man -name suauth.5 | xargs rm
fi
+# /etc/suauth doesn't work with PAM, even if configure.ac is hacked to try
+# to turn the feature on, so remove the man pages if we're using PAM:
+if [ -L /lib${LIBDIRSUFFIX}/libpam.so.? ]; then
+ find $PKG/usr/man -name suauth.5 | xargs rm
+fi
+
# /bin/groups is provided by coreutils.
rm -f $PKG/bin/groups
find $PKG -name groups.1 -exec rm {} \+
diff --git a/source/l/libexif/libexif.SlackBuild b/source/l/libexif/libexif.SlackBuild
index 3a0f3319..384e8f18 100755
--- a/source/l/libexif/libexif.SlackBuild
+++ b/source/l/libexif/libexif.SlackBuild
@@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=libexif
VERSION=${VERSION:-$(echo libexif-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
diff --git a/source/l/libexif/libexif.url b/source/l/libexif/libexif.url
new file mode 100644
index 00000000..a89894e4
--- /dev/null
+++ b/source/l/libexif/libexif.url
@@ -0,0 +1 @@
+https://github.com/libexif/libexif/
diff --git a/source/l/libexif/slack-desc b/source/l/libexif/slack-desc
index ee12ae10..378cab10 100644
--- a/source/l/libexif/slack-desc
+++ b/source/l/libexif/slack-desc
@@ -13,7 +13,7 @@ libexif: to store extra information in images such as the JPEG files produced
libexif: by digital cameras. The libexif library allows programs such as
libexif: gthumb to parse, edit, and save EXIF data.
libexif:
-libexif:
+libexif: Homepage: https://libexif.github.io
libexif:
libexif:
libexif:
diff --git a/source/l/oniguruma/oniguruma.SlackBuild b/source/l/oniguruma/oniguruma.SlackBuild
index 68573881..cde0b264 100755
--- a/source/l/oniguruma/oniguruma.SlackBuild
+++ b/source/l/oniguruma/oniguruma.SlackBuild
@@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=oniguruma
SRCNAM=oniguruma
VERSION=${VERSION:-$(echo $SRCNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@@ -100,6 +100,7 @@ CXXFLAGS="$SLKCFLAGS" \
--localstatedir=/var \
--docdir=/usr/doc/$PKGNAM-$VERSION \
--mandir=/usr/man \
+ --enable-posix-api \
--disable-static \
--build=$ARCH-slackware-linux || exit 1
make $NUMJOBS || make || exit 1
diff --git a/source/l/python-packaging/python-packaging.SlackBuild b/source/l/python-packaging/python-packaging.SlackBuild
index 26d8f4c2..8d3430d7 100755
--- a/source/l/python-packaging/python-packaging.SlackBuild
+++ b/source/l/python-packaging/python-packaging.SlackBuild
@@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=python-packaging
VERSION=${VERSION:-$(echo packaging-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
SRCNAM=packaging
diff --git a/source/x/fontconfig/fedora-patches/fontconfig-0-timestamp-dir-on-sb.patch b/source/x/fontconfig/fedora-patches/fontconfig-0-timestamp-dir-on-sb.patch
new file mode 100644
index 00000000..cfbc206f
--- /dev/null
+++ b/source/x/fontconfig/fedora-patches/fontconfig-0-timestamp-dir-on-sb.patch
@@ -0,0 +1,55 @@
+diff --git a/src/fccache.c b/src/fccache.c
+index 2d398c73..7139b082 100644
+--- a/src/fccache.c
++++ b/src/fccache.c
+@@ -845,7 +845,7 @@ FcCacheTimeValid (FcConfig *config, FcCache *cache, struct stat *dir_stat)
+ FcCacheDir (cache), cache->checksum, (int) dir_stat->st_mtime);
+ #endif
+
+- return cache->checksum == (int) dir_stat->st_mtime && fnano;
++ return dir_stat->st_mtime == 0 || (cache->checksum == (int) dir_stat->st_mtime && fnano);
+ }
+
+ static FcBool
+@@ -1041,17 +1041,39 @@ static FcBool
+ FcDirCacheMapHelper (FcConfig *config, int fd, struct stat *fd_stat, struct stat *dir_stat, struct timeval *latest_cache_mtime, void *closure)
+ {
+ FcCache *cache = FcDirCacheMapFd (config, fd, fd_stat, dir_stat);
+- struct timeval cache_mtime;
++ struct timeval cache_mtime, zero_mtime = { 0, 0}, dir_mtime;
+
+ if (!cache)
+ return FcFalse;
+ cache_mtime.tv_sec = fd_stat->st_mtime;
++ dir_mtime.tv_sec = dir_stat->st_mtime;
+ #ifdef HAVE_STRUCT_STAT_ST_MTIM
+ cache_mtime.tv_usec = fd_stat->st_mtim.tv_nsec / 1000;
++ dir_mtime.tv_usec = dir_stat->st_mtim.tv_nsec / 1000;
+ #else
+ cache_mtime.tv_usec = 0;
++ dir_mtime.tv_usec = 0;
+ #endif
+- if (timercmp (latest_cache_mtime, &cache_mtime, <))
++ /* special take care of OSTree */
++ if (!timercmp (&zero_mtime, &dir_mtime, !=))
++ {
++ if (!timercmp (&zero_mtime, &cache_mtime, !=))
++ {
++ if (*((FcCache **) closure))
++ FcDirCacheUnload (*((FcCache **) closure));
++ }
++ else if (*((FcCache **) closure) && !timercmp (&zero_mtime, latest_cache_mtime, !=))
++ {
++ FcDirCacheUnload (cache);
++ return FcFalse;
++ }
++ else if (timercmp (latest_cache_mtime, &cache_mtime, <))
++ {
++ if (*((FcCache **) closure))
++ FcDirCacheUnload (*((FcCache **) closure));
++ }
++ }
++ else if (timercmp (latest_cache_mtime, &cache_mtime, <))
+ {
+ if (*((FcCache **) closure))
+ FcDirCacheUnload (*((FcCache **) closure));
diff --git a/source/x/fontconfig/fedora-patches/fontconfig-drop-lang-from-pkgkit-format.patch b/source/x/fontconfig/fedora-patches/fontconfig-drop-lang-from-pkgkit-format.patch
new file mode 100644
index 00000000..8b773081
--- /dev/null
+++ b/source/x/fontconfig/fedora-patches/fontconfig-drop-lang-from-pkgkit-format.patch
@@ -0,0 +1,12 @@
+diff -pruN fontconfig-2.13.92.orig/src/fcformat.c fontconfig-2.13.92/src/fcformat.c
+--- fontconfig-2.13.92.orig/src/fcformat.c 2018-07-19 12:14:39.000000000 +0900
++++ fontconfig-2.13.92/src/fcformat.c 2020-01-20 13:05:33.626227767 +0900
+@@ -78,7 +78,7 @@
+ #define FCCAT_FORMAT "\"%{file|basename|cescape}\" %{index} \"%{-file{%{=unparse|cescape}}}\""
+ #define FCMATCH_FORMAT "%{file:-<unknown filename>|basename}: \"%{family[0]:-<unknown family>}\" \"%{style[0]:-<unknown style>}\""
+ #define FCLIST_FORMAT "%{?file{%{file}: }}%{-file{%{=unparse}}}"
+-#define PKGKIT_FORMAT "%{[]family{font(%{family|downcase|delete( )})\n}}%{[]lang{font(:lang=%{lang|downcase|translate(_,-)})\n}}"
++#define PKGKIT_FORMAT "%{[]family{font(%{family|downcase|delete( )})\n}}"
+
+
+ static void
diff --git a/source/x/fontconfig/fedora-patches/fontconfig-fix-1744377.patch b/source/x/fontconfig/fedora-patches/fontconfig-fix-1744377.patch
new file mode 100644
index 00000000..fda5c2d6
--- /dev/null
+++ b/source/x/fontconfig/fedora-patches/fontconfig-fix-1744377.patch
@@ -0,0 +1,122 @@
+From fcada522913e5e07efa6367eff87ace9f06d24c8 Mon Sep 17 00:00:00 2001
+From: Akira TAGOH <akira@tagoh.org>
+Date: Wed, 28 Aug 2019 17:46:03 +0900
+Subject: [PATCH] Do not return FcFalse from FcConfigParseAndLoad*() if
+ complain is set to false
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1744377
+---
+ src/fcxml.c | 8 ++++---
+ test/Makefile.am | 4 ++++
+ test/test-bz1744377.c | 51 +++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 60 insertions(+), 3 deletions(-)
+ create mode 100644 test/test-bz1744377.c
+
+diff --git a/src/fcxml.c b/src/fcxml.c
+index 2e26e77a..076fa301 100644
+--- a/src/fcxml.c
++++ b/src/fcxml.c
+@@ -3526,7 +3526,7 @@ _FcConfigParse (FcConfig *config,
+ int len;
+ FcStrBuf sbuf;
+ char buf[BUFSIZ];
+- FcBool ret = FcFalse;
++ FcBool ret = FcFalse, complain_again = complain;
+
+ #ifdef _WIN32
+ if (!pGetSystemWindowsDirectory)
+@@ -3605,7 +3605,7 @@ _FcConfigParse (FcConfig *config,
+ close (fd);
+
+ ret = FcConfigParseAndLoadFromMemoryInternal (config, filename, FcStrBufDoneStatic (&sbuf), complain, load);
+- complain = FcFalse; /* no need to reclaim here */
++ complain_again = FcFalse; /* no need to reclaim here */
+ bail1:
+ FcStrBufDestroy (&sbuf);
+ bail0:
+@@ -3613,7 +3613,9 @@ bail0:
+ FcStrFree (filename);
+ if (realfilename)
+ FcStrFree (realfilename);
+- if (!ret && complain)
++ if (!complain)
++ return FcTrue;
++ if (!ret && complain_again)
+ {
+ if (name)
+ FcConfigMessage (0, FcSevereError, "Cannot %s config file \"%s\"", load ? "load" : "scan", name);
+diff --git a/test/Makefile.am b/test/Makefile.am
+index f9c21581..a9fa089a 100644
+--- a/test/Makefile.am
++++ b/test/Makefile.am
+@@ -131,6 +131,10 @@ TESTS += test-d1f48f11
+ endif
+ endif
+
++check_PROGRAMS += test-bz1744377
++test_bz1744377_LDADD = $(top_builddir)/src/libfontconfig.la
++TESTS += test-bz1744377
++
+ EXTRA_DIST=run-test.sh run-test-conf.sh $(LOG_COMPILER) $(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-bz1744377.c b/test/test-bz1744377.c
+new file mode 100644
+index 00000000..d7f10535
+--- /dev/null
++++ b/test/test-bz1744377.c
+@@ -0,0 +1,51 @@
++/*
++ * fontconfig/test/test-bz1744377.c
++ *
++ * Copyright © 2000 Keith Packard
++ *
++ * 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.
++ */
++#include <fontconfig/fontconfig.h>
++
++int
++main (void)
++{
++ const FcChar8 *doc = ""
++ "<fontconfig>\n"
++ " <include ignore_missing=\"yes\">blahblahblah</include>\n"
++ "</fontconfig>\n"
++ "";
++ const FcChar8 *doc2 = ""
++ "<fontconfig>\n"
++ " <include ignore_missing=\"no\">blahblahblah</include>\n"
++ "</fontconfig>\n"
++ "";
++ FcConfig *cfg = FcConfigCreate ();
++
++ if (!FcConfigParseAndLoadFromMemory (cfg, doc, FcTrue))
++ return 1;
++ if (FcConfigParseAndLoadFromMemory (cfg, doc2, FcTrue))
++ return 1;
++ if (!FcConfigParseAndLoadFromMemory (cfg, doc2, FcFalse))
++ return 1;
++
++ FcConfigDestroy (cfg);
++
++ return 0;
++}
+--
+2.23.0
+
diff --git a/source/x/fontconfig/fedora-patches/fontconfig-fix-assertion.patch b/source/x/fontconfig/fedora-patches/fontconfig-fix-assertion.patch
new file mode 100644
index 00000000..2e337364
--- /dev/null
+++ b/source/x/fontconfig/fedora-patches/fontconfig-fix-assertion.patch
@@ -0,0 +1,144 @@
+From fbc05949ef52c8a8d69233eed77f6636dffec280 Mon Sep 17 00:00:00 2001
+From: Akira TAGOH <akira@tagoh.org>
+Date: Wed, 26 Feb 2020 15:42:21 +0900
+Subject: [PATCH] Fix assertion in FcFini()
+
+Due to the unproper initialization of `latest_mtime', the duplicate caches
+was still in fcCacheChains with no references. which means no one frees
+them. thus, the memory leak was happened.
+
+Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/227
+---
+ src/fccache.c | 9 +++++----
+ src/fcinit.c | 4 ++--
+ 2 files changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/src/fccache.c b/src/fccache.c
+index 4744a84..035458e 100644
+--- a/src/fccache.c
++++ b/src/fccache.c
+@@ -365,7 +365,6 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir,
+ struct stat file_stat, dir_stat;
+ FcBool ret = FcFalse;
+ const FcChar8 *sysroot = FcConfigGetSysRoot (config);
+- struct timeval latest_mtime = (struct timeval){ 0 };
+
+ if (sysroot)
+ d = FcStrBuildFilename (sysroot, dir, NULL);
+@@ -390,6 +389,8 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir,
+ #ifndef _WIN32
+ FcBool retried = FcFalse;
+ #endif
++ struct timeval latest_mtime = (struct timeval){ 0 };
++
+ if (sysroot)
+ cache_hashed = FcStrBuildFilename (sysroot, cache_dir, cache_base, NULL);
+ else
+@@ -1081,12 +1082,12 @@ FcDirCacheLoadFile (const FcChar8 *cache_file, struct stat *file_stat)
+
+ if (!file_stat)
+ file_stat = &my_file_stat;
+- fd = FcDirCacheOpenFile (cache_file, file_stat);
+- if (fd < 0)
+- return NULL;
+ config = FcConfigReference (NULL);
+ if (!config)
+ return NULL;
++ fd = FcDirCacheOpenFile (cache_file, file_stat);
++ if (fd < 0)
++ return NULL;
+ cache = FcDirCacheMapFd (config, fd, file_stat, NULL);
+ FcConfigDestroy (config);
+ close (fd);
+diff --git a/src/fcinit.c b/src/fcinit.c
+index 6f82ebd..0e1421e 100644
+--- a/src/fcinit.c
++++ b/src/fcinit.c
+@@ -199,10 +199,10 @@ void
+ FcFini (void)
+ {
+ FcConfigFini ();
+- FcCacheFini ();
++ FcConfigPathFini ();
+ FcDefaultFini ();
+ FcObjectFini ();
+- FcConfigPathFini ();
++ FcCacheFini ();
+ }
+
+ /*
+--
+2.24.1
+
+From 6f6b39780215714386606ca1c5457a7106639ff4 Mon Sep 17 00:00:00 2001
+From: Akira TAGOH <akira@tagoh.org>
+Date: Mon, 23 Mar 2020 14:03:47 +0900
+Subject: [PATCH] Fix assertion in FcCacheFini() again
+
+The previous fix in fbc05949ef52c8a8d69233eed77f6636dffec280 was wrong. reverting.
+
+When reading older caches, FcDirCacheMapHelper() returns FcFalse and
+it became the return value from FcDirCacheProcess() too, which is wrong.
+Actually one of calls for FcDirCacheMapHelper() should be successfully
+finished and closure should have a valid pointer for cache.
+
+Due to this, the proper finalization process wasn't running against
+cache in closure.
+
+Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/227
+---
+ src/fccache.c | 17 +++++++++++++++--
+ 1 file changed, 15 insertions(+), 2 deletions(-)
+
+diff --git a/src/fccache.c b/src/fccache.c
+index 035458e..2d398c7 100644
+--- a/src/fccache.c
++++ b/src/fccache.c
+@@ -365,6 +365,7 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir,
+ struct stat file_stat, dir_stat;
+ FcBool ret = FcFalse;
+ const FcChar8 *sysroot = FcConfigGetSysRoot (config);
++ struct timeval latest_mtime = (struct timeval){ 0 };
+
+ if (sysroot)
+ d = FcStrBuildFilename (sysroot, dir, NULL);
+@@ -389,7 +390,6 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir,
+ #ifndef _WIN32
+ FcBool retried = FcFalse;
+ #endif
+- struct timeval latest_mtime = (struct timeval){ 0 };
+
+ if (sysroot)
+ cache_hashed = FcStrBuildFilename (sysroot, cache_dir, cache_base, NULL);
+@@ -445,6 +445,8 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir,
+ }
+ FcStrListDone (list);
+
++ if (closure)
++ return !!(*((FcCache **)closure) != NULL);
+ return ret;
+ }
+
+@@ -792,7 +794,18 @@ FcCacheFini (void)
+ int i;
+
+ for (i = 0; i < FC_CACHE_MAX_LEVEL; i++)
+- assert (fcCacheChains[i] == NULL);
++ {
++ if (FcDebug() & FC_DBG_CACHE)
++ {
++ if (fcCacheChains[i] != NULL)
++ {
++ FcCacheSkip *s = fcCacheChains[i];
++ printf("Fontconfig error: not freed %p (dir: %s, refcount %d)\n", s->cache, FcCacheDir(s->cache), s->ref.count);
++ }
++ }
++ else
++ assert (fcCacheChains[i] == NULL);
++ }
+ assert (fcCacheMaxLevel == 0);
+
+ free_lock ();
+--
+2.24.1
+
diff --git a/source/x/fontconfig/fedora-patches/fontconfig-fix-dtd-id.patch b/source/x/fontconfig/fedora-patches/fontconfig-fix-dtd-id.patch
new file mode 100644
index 00000000..9045fc05
--- /dev/null
+++ b/source/x/fontconfig/fedora-patches/fontconfig-fix-dtd-id.patch
@@ -0,0 +1,490 @@
+diff -uNr fontconfig-2.13.92.orig/conf.d/05-reset-dirs-sample.conf fontconfig-2.13.92/conf.d/05-reset-dirs-sample.conf
+--- fontconfig-2.13.92.orig/conf.d/05-reset-dirs-sample.conf 2019-05-08 10:22:25.000000000 +0200
++++ fontconfig-2.13.92/conf.d/05-reset-dirs-sample.conf 2020-03-28 15:53:41.792757065 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <description>Re-define fonts dirs sample</description>
+
+diff -uNr fontconfig-2.13.92.orig/conf.d/09-autohint-if-no-hinting.conf fontconfig-2.13.92/conf.d/09-autohint-if-no-hinting.conf
+--- fontconfig-2.13.92.orig/conf.d/09-autohint-if-no-hinting.conf 2019-07-30 13:03:27.000000000 +0200
++++ fontconfig-2.13.92/conf.d/09-autohint-if-no-hinting.conf 2020-03-28 15:53:41.764757635 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/10-autohint.conf fontconfig-2.13.92/conf.d/10-autohint.conf
+--- fontconfig-2.13.92.orig/conf.d/10-autohint.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/10-autohint.conf 2020-03-28 15:53:41.829756312 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/10-hinting-full.conf fontconfig-2.13.92/conf.d/10-hinting-full.conf
+--- fontconfig-2.13.92.orig/conf.d/10-hinting-full.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/10-hinting-full.conf 2020-03-28 15:53:41.714758653 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/10-hinting-medium.conf fontconfig-2.13.92/conf.d/10-hinting-medium.conf
+--- fontconfig-2.13.92.orig/conf.d/10-hinting-medium.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/10-hinting-medium.conf 2020-03-28 15:53:41.809756719 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/10-hinting-none.conf fontconfig-2.13.92/conf.d/10-hinting-none.conf
+--- fontconfig-2.13.92.orig/conf.d/10-hinting-none.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/10-hinting-none.conf 2020-03-28 15:53:41.796756984 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/10-hinting-slight.conf fontconfig-2.13.92/conf.d/10-hinting-slight.conf
+--- fontconfig-2.13.92.orig/conf.d/10-hinting-slight.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/10-hinting-slight.conf 2020-03-28 15:53:41.760757717 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/10-no-sub-pixel.conf fontconfig-2.13.92/conf.d/10-no-sub-pixel.conf
+--- fontconfig-2.13.92.orig/conf.d/10-no-sub-pixel.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/10-no-sub-pixel.conf 2020-03-28 15:53:41.743758063 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/10-scale-bitmap-fonts.conf fontconfig-2.13.92/conf.d/10-scale-bitmap-fonts.conf
+--- fontconfig-2.13.92.orig/conf.d/10-scale-bitmap-fonts.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/10-scale-bitmap-fonts.conf 2020-03-28 15:53:41.727758389 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/10-sub-pixel-bgr.conf fontconfig-2.13.92/conf.d/10-sub-pixel-bgr.conf
+--- fontconfig-2.13.92.orig/conf.d/10-sub-pixel-bgr.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/10-sub-pixel-bgr.conf 2020-03-28 15:53:41.841756068 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/10-sub-pixel-rgb.conf fontconfig-2.13.92/conf.d/10-sub-pixel-rgb.conf
+--- fontconfig-2.13.92.orig/conf.d/10-sub-pixel-rgb.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/10-sub-pixel-rgb.conf 2020-03-28 15:53:41.723758470 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/10-sub-pixel-vbgr.conf fontconfig-2.13.92/conf.d/10-sub-pixel-vbgr.conf
+--- fontconfig-2.13.92.orig/conf.d/10-sub-pixel-vbgr.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/10-sub-pixel-vbgr.conf 2020-03-28 15:53:41.772757472 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/10-sub-pixel-vrgb.conf fontconfig-2.13.92/conf.d/10-sub-pixel-vrgb.conf
+--- fontconfig-2.13.92.orig/conf.d/10-sub-pixel-vrgb.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/10-sub-pixel-vrgb.conf 2020-03-28 15:53:41.706758816 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/10-unhinted.conf fontconfig-2.13.92/conf.d/10-unhinted.conf
+--- fontconfig-2.13.92.orig/conf.d/10-unhinted.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/10-unhinted.conf 2020-03-28 15:53:41.739758145 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/11-lcdfilter-default.conf fontconfig-2.13.92/conf.d/11-lcdfilter-default.conf
+--- fontconfig-2.13.92.orig/conf.d/11-lcdfilter-default.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/11-lcdfilter-default.conf 2020-03-28 15:53:41.731758307 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/11-lcdfilter-legacy.conf fontconfig-2.13.92/conf.d/11-lcdfilter-legacy.conf
+--- fontconfig-2.13.92.orig/conf.d/11-lcdfilter-legacy.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/11-lcdfilter-legacy.conf 2020-03-28 15:53:41.837756149 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/11-lcdfilter-light.conf fontconfig-2.13.92/conf.d/11-lcdfilter-light.conf
+--- fontconfig-2.13.92.orig/conf.d/11-lcdfilter-light.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/11-lcdfilter-light.conf 2020-03-28 15:53:41.768757554 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/20-unhint-small-vera.conf fontconfig-2.13.92/conf.d/20-unhint-small-vera.conf
+--- fontconfig-2.13.92.orig/conf.d/20-unhint-small-vera.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/20-unhint-small-vera.conf 2020-03-28 15:53:41.784757228 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/25-unhint-nonlatin.conf fontconfig-2.13.92/conf.d/25-unhint-nonlatin.conf
+--- fontconfig-2.13.92.orig/conf.d/25-unhint-nonlatin.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/25-unhint-nonlatin.conf 2020-03-28 15:53:41.817756556 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/30-metric-aliases.conf fontconfig-2.13.92/conf.d/30-metric-aliases.conf
+--- fontconfig-2.13.92.orig/conf.d/30-metric-aliases.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/30-metric-aliases.conf 2020-03-28 15:53:41.718758572 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/40-nonlatin.conf fontconfig-2.13.92/conf.d/40-nonlatin.conf
+--- fontconfig-2.13.92.orig/conf.d/40-nonlatin.conf 2019-05-08 10:22:25.000000000 +0200
++++ fontconfig-2.13.92/conf.d/40-nonlatin.conf 2020-03-28 15:53:41.735758226 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/45-generic.conf fontconfig-2.13.92/conf.d/45-generic.conf
+--- fontconfig-2.13.92.orig/conf.d/45-generic.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/45-generic.conf 2020-03-28 15:53:41.833756231 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/45-latin.conf fontconfig-2.13.92/conf.d/45-latin.conf
+--- fontconfig-2.13.92.orig/conf.d/45-latin.conf 2019-05-08 10:22:25.000000000 +0200
++++ fontconfig-2.13.92/conf.d/45-latin.conf 2020-03-28 15:53:41.756757798 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/49-sansserif.conf fontconfig-2.13.92/conf.d/49-sansserif.conf
+--- fontconfig-2.13.92.orig/conf.d/49-sansserif.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/49-sansserif.conf 2020-03-28 15:53:41.845755987 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/50-user.conf fontconfig-2.13.92/conf.d/50-user.conf
+--- fontconfig-2.13.92.orig/conf.d/50-user.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/50-user.conf 2020-03-28 15:53:41.710758735 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/51-local.conf fontconfig-2.13.92/conf.d/51-local.conf
+--- fontconfig-2.13.92.orig/conf.d/51-local.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/51-local.conf 2020-03-28 15:53:41.805756801 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/60-generic.conf fontconfig-2.13.92/conf.d/60-generic.conf
+--- fontconfig-2.13.92.orig/conf.d/60-generic.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/60-generic.conf 2020-03-28 15:53:41.702758898 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/60-latin.conf fontconfig-2.13.92/conf.d/60-latin.conf
+--- fontconfig-2.13.92.orig/conf.d/60-latin.conf 2019-05-08 10:22:25.000000000 +0200
++++ fontconfig-2.13.92/conf.d/60-latin.conf 2020-03-28 15:53:41.752757880 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/65-fonts-persian.conf fontconfig-2.13.92/conf.d/65-fonts-persian.conf
+--- fontconfig-2.13.92.orig/conf.d/65-fonts-persian.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/65-fonts-persian.conf 2020-03-28 15:53:41.748757961 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <!--
+ fonts-persian.conf
+ To configure Persian fonts from The FarsiWeb Project.
+diff -uNr fontconfig-2.13.92.orig/conf.d/65-khmer.conf fontconfig-2.13.92/conf.d/65-khmer.conf
+--- fontconfig-2.13.92.orig/conf.d/65-khmer.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/65-khmer.conf 2020-03-28 15:53:41.813756638 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/65-nonlatin.conf fontconfig-2.13.92/conf.d/65-nonlatin.conf
+--- fontconfig-2.13.92.orig/conf.d/65-nonlatin.conf 2019-05-08 10:22:25.000000000 +0200
++++ fontconfig-2.13.92/conf.d/65-nonlatin.conf 2020-03-28 15:53:41.825756394 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/69-unifont.conf fontconfig-2.13.92/conf.d/69-unifont.conf
+--- fontconfig-2.13.92.orig/conf.d/69-unifont.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/69-unifont.conf 2020-03-28 15:53:41.821756475 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/70-no-bitmaps.conf fontconfig-2.13.92/conf.d/70-no-bitmaps.conf
+--- fontconfig-2.13.92.orig/conf.d/70-no-bitmaps.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/70-no-bitmaps.conf 2020-03-28 15:53:41.788757147 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/70-yes-bitmaps.conf fontconfig-2.13.92/conf.d/70-yes-bitmaps.conf
+--- fontconfig-2.13.92.orig/conf.d/70-yes-bitmaps.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/70-yes-bitmaps.conf 2020-03-28 15:53:41.780757310 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/80-delicious.conf fontconfig-2.13.92/conf.d/80-delicious.conf
+--- fontconfig-2.13.92.orig/conf.d/80-delicious.conf 2018-06-05 12:36:38.000000000 +0200
++++ fontconfig-2.13.92/conf.d/80-delicious.conf 2020-03-28 15:53:41.800756903 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/conf.d/90-synthetic.conf fontconfig-2.13.92/conf.d/90-synthetic.conf
+--- fontconfig-2.13.92.orig/conf.d/90-synthetic.conf 2018-07-19 05:14:39.000000000 +0200
++++ fontconfig-2.13.92/conf.d/90-synthetic.conf 2020-03-28 15:53:41.776757391 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+diff -uNr fontconfig-2.13.92.orig/doc/fontconfig-user.html fontconfig-2.13.92/doc/fontconfig-user.html
+--- fontconfig-2.13.92.orig/doc/fontconfig-user.html 2019-08-09 13:12:38.000000000 +0200
++++ fontconfig-2.13.92/doc/fontconfig-user.html 2020-03-28 15:53:41.694759061 +0100
+@@ -422,7 +422,7 @@
+ ><PRE
+ CLASS="PROGRAMLISTING"
+ > &#60;?xml version="1.0"?&#62;
+- &#60;!DOCTYPE fontconfig SYSTEM "fonts.dtd"&#62;
++ &#60;!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd"&#62;
+ &#60;fontconfig&#62;
+ ...
+ &#60;/fontconfig&#62;
+@@ -1240,7 +1240,7 @@
+ ><PRE
+ CLASS="PROGRAMLISTING"
+ >&#60;?xml version="1.0"?&#62;
+-&#60;!DOCTYPE fontconfig SYSTEM "fonts.dtd"&#62;
++&#60;!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd"&#62;
+ &#60;!-- /etc/fonts/fonts.conf file to configure system font access --&#62;
+ &#60;fontconfig&#62;
+ &#60;!--
+@@ -1367,7 +1367,7 @@
+ ><PRE
+ CLASS="PROGRAMLISTING"
+ >&#60;?xml version="1.0"?&#62;
+-&#60;!DOCTYPE fontconfig SYSTEM "fonts.dtd"&#62;
++&#60;!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd"&#62;
+ &#60;!-- $XDG_CONFIG_HOME/fontconfig/fonts.conf for per-user font configuration --&#62;
+ &#60;fontconfig&#62;
+
+diff -uNr fontconfig-2.13.92.orig/doc/fontconfig-user.sgml fontconfig-2.13.92/doc/fontconfig-user.sgml
+--- fontconfig-2.13.92.orig/doc/fontconfig-user.sgml 2018-11-15 13:20:50.000000000 +0100
++++ fontconfig-2.13.92/doc/fontconfig-user.sgml 2020-03-28 15:53:41.680759345 +0100
+@@ -300,7 +300,7 @@
+ following structure:
+ <programlisting>
+ &lt;?xml version="1.0"?&gt;
+- &lt;!DOCTYPE fontconfig SYSTEM "fonts.dtd"&gt;
++ &lt;!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd"&gt;
+ &lt;fontconfig&gt;
+ ...
+ &lt;/fontconfig&gt;
+@@ -573,7 +573,7 @@
+ </para>
+ <programlisting>
+ &lt;?xml version="1.0"?&gt;
+-&lt;!DOCTYPE fontconfig SYSTEM "fonts.dtd"&gt;
++&lt;!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd"&gt;
+ &lt;!-- &confdir;/fonts.conf file to configure system font access --&gt;
+ &lt;fontconfig&gt;
+ &lt;!--
+@@ -684,7 +684,7 @@
+ </para>
+ <programlisting>
+ &lt;?xml version="1.0"?&gt;
+-&lt;!DOCTYPE fontconfig SYSTEM "fonts.dtd"&gt;
++&lt;!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd"&gt;
+ &lt;!-- $XDG_CONFIG_HOME/fontconfig/fonts.conf for per-user font configuration --&gt;
+ &lt;fontconfig&gt;
+
+diff -uNr fontconfig-2.13.92.orig/doc/fontconfig-user.txt fontconfig-2.13.92/doc/fontconfig-user.txt
+--- fontconfig-2.13.92.orig/doc/fontconfig-user.txt 2019-08-09 13:12:20.000000000 +0200
++++ fontconfig-2.13.92/doc/fontconfig-user.txt 2020-03-28 15:53:41.689759162 +0100
+@@ -261,7 +261,7 @@
+ following structure:
+
+ <?xml version="1.0"?>
+- <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++ <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ ...
+ </fontconfig>
+@@ -573,7 +573,7 @@
+ This is an example of a system-wide configuration file
+
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <!-- /etc/fonts/fonts.conf file to configure system font access -->
+ <fontconfig>
+ <!--
+@@ -683,7 +683,7 @@
+ $XDG_CONFIG_HOME/fontconfig/fonts.conf
+
+ <?xml version="1.0"?>
+- <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++ <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <!-- $XDG_CONFIG_HOME/fontconfig/fonts.conf for per-user font configuration -->
+ <fontconfig>
+
+diff -uNr fontconfig-2.13.92.orig/doc/fonts-conf.5 fontconfig-2.13.92/doc/fonts-conf.5
+--- fontconfig-2.13.92.orig/doc/fonts-conf.5 2019-08-09 13:12:20.000000000 +0200
++++ fontconfig-2.13.92/doc/fonts-conf.5 2020-03-28 15:53:41.685759244 +0100
+@@ -264,7 +264,7 @@
+ .sp
+ .nf
+ <?xml version="1.0"?>
+- <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++ <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <fontconfig>
+ \&...
+ </fontconfig>
+@@ -554,7 +554,7 @@
+ .sp
+ .nf
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <!-- /etc/fonts/fonts.conf file to configure system font access -->
+ <fontconfig>
+ <!--
+@@ -666,7 +666,7 @@
+ .sp
+ .nf
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <!-- $XDG_CONFIG_HOME/fontconfig/fonts.conf for per-user font configuration -->
+ <fontconfig>
+
+diff -uNr fontconfig-2.13.92.orig/fonts.conf.in fontconfig-2.13.92/fonts.conf.in
+--- fontconfig-2.13.92.orig/fonts.conf.in 2019-05-08 10:22:25.000000000 +0200
++++ fontconfig-2.13.92/fonts.conf.in 2020-03-28 15:53:41.698758979 +0100
+@@ -1,5 +1,5 @@
+ <?xml version="1.0"?>
+-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
+ <!-- /etc/fonts/fonts.conf file to configure system font access -->
+ <fontconfig>
+ <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
diff --git a/source/x/fontconfig/fedora-patches/fontconfig-fix-dtd.patch b/source/x/fontconfig/fedora-patches/fontconfig-fix-dtd.patch
new file mode 100644
index 00000000..51655890
--- /dev/null
+++ b/source/x/fontconfig/fedora-patches/fontconfig-fix-dtd.patch
@@ -0,0 +1,26 @@
+From a4aa66a858f1ecd375c5efe5916398281f73f794 Mon Sep 17 00:00:00 2001
+From: Jan Tojnar <jtojnar@gmail.com>
+Date: Wed, 20 Nov 2019 02:13:58 +0000
+Subject: [PATCH] Correct reset-dirs in DTD
+
+Empty elements need to be declared as such in well-formed DTDs.
+---
+ fonts.dtd | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/fonts.dtd b/fonts.dtd
+index f8c9f2c..40ecb4e 100644
+--- a/fonts.dtd
++++ b/fonts.dtd
+@@ -124,7 +124,7 @@
+ <!--
+ Reset the list of fonts directories
+ -->
+-<!ELEMENT reset-dirs >
++<!ELEMENT reset-dirs EMPTY>
+
+ <!--
+ Periodically rescan the font configuration and
+--
+2.24.1
+
diff --git a/source/x/fontconfig/fedora-patches/fontconfig-fix-test.patch b/source/x/fontconfig/fedora-patches/fontconfig-fix-test.patch
new file mode 100644
index 00000000..5ccaabaf
--- /dev/null
+++ b/source/x/fontconfig/fedora-patches/fontconfig-fix-test.patch
@@ -0,0 +1,41 @@
+diff -pruN fontconfig-2.13.92.orig/test/run-test.sh fontconfig-2.13.92/test/run-test.sh
+--- fontconfig-2.13.92.orig/test/run-test.sh 2020-01-30 20:19:55.148680493 +0900
++++ fontconfig-2.13.92/test/run-test.sh 2020-01-30 20:25:48.604550017 +0900
+@@ -409,7 +409,7 @@ rm -rf $MYCACHEBASEDIR $MYCONFIG my-font
+
+ fi # if [ "x$EXEEXT" = "x" ]
+
+-if [ -x $BUILDTESTDIR/test-crbug1004254 ]; then
++if [ -x $BUILDTESTDIR/test-crbug1004254 ] && [ 0 -eq 1 ]; then
+ dotest "MT-safe global config"
+ prep
+ curl -s -o $FONTDIR/noto.zip https://noto-website-2.storage.googleapis.com/pkgs/NotoSans-hinted.zip
+From 8bddcb113779178e5b5ed711db08d9bfbff924cc Mon Sep 17 00:00:00 2001
+From: Akira TAGOH <akira@tagoh.org>
+Date: Thu, 5 Dec 2019 19:55:06 +0900
+Subject: [PATCH] Fix a test fail when no bwrap was available
+
+Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/201
+---
+ test/run-test.sh | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/test/run-test.sh b/test/run-test.sh
+index e1ee6d0..9b2e54b 100644
+--- a/test/run-test.sh
++++ b/test/run-test.sh
+@@ -40,9 +40,8 @@ ECHO=true
+ FCLIST="$LOG_COMPILER ../fc-list/fc-list$EXEEXT"
+ FCCACHE="$LOG_COMPILER ../fc-cache/fc-cache$EXEEXT"
+
+-which bwrap > /dev/null 2>&1
+-if [ $? -eq 0 ]; then
+- BWRAP=`which bwrap`
++if [ -x "$(command -v bwrap)" ]; then
++ BWRAP="$(command -v bwrap)"
+ fi
+
+ FONT1=$TESTDIR/4x6.pcf
+--
+2.24.1
+
diff --git a/source/x/fontconfig/fedora-patches/fontconfig-mt.patch b/source/x/fontconfig/fedora-patches/fontconfig-mt.patch
new file mode 100644
index 00000000..31a3748c
--- /dev/null
+++ b/source/x/fontconfig/fedora-patches/fontconfig-mt.patch
@@ -0,0 +1,1439 @@
+From b5bcf61fe789e66df2de609ec246cb7e4d326180 Mon Sep 17 00:00:00 2001
+From: Akira TAGOH <akira@tagoh.org>
+Date: Fri, 1 Nov 2019 14:43:42 +0900
+Subject: [PATCH 3/9] Use FcConfigReference/Destroy appropriately instead of
+ FcConfigGetCurrent
+
+This may improves to be MT-safe.
+
+Reported at https://bugs.chromium.org/p/chromium/issues/detail?id=1004254
+---
+ doc/fcconfig.fncs | 20 ++++
+ fontconfig/fontconfig.h | 4 +-
+ src/fccache.c | 73 +++++++++---
+ src/fccfg.c | 237 ++++++++++++++++++++++++---------------
+ src/fcdir.c | 31 ++++-
+ src/fcinit.c | 15 ++-
+ src/fclist.c | 25 +++--
+ src/fcmatch.c | 48 ++++----
+ test/Makefile.am | 5 +
+ test/run-test.sh | 15 +++
+ test/test-crbug1004254.c | 116 +++++++++++++++++++
+ 11 files changed, 436 insertions(+), 153 deletions(-)
+ create mode 100644 test/test-crbug1004254.c
+
+diff --git a/doc/fcconfig.fncs b/doc/fcconfig.fncs
+index 82769d5..e709b54 100644
+--- a/doc/fcconfig.fncs
++++ b/doc/fcconfig.fncs
+@@ -174,6 +174,10 @@ Returns one of the two sets of fonts from the configuration as specified
+ by <parameter>set</parameter>. This font set is owned by the library and must
+ not be modified or freed.
+ If <parameter>config</parameter> is NULL, the current configuration is used.
++ </para><para>
++This function isn't MT-safe. <function>FcConfigReference</function> must be called
++before using this and then <function>FcConfigDestroy</function> when
++the return value is no longer referenced.
+ @@
+
+ @RET@ FcBlanks *
+@@ -407,6 +411,10 @@ parse error, semantic error or allocation failure. Otherwise returns FcTrue.
+ Obtains the system root directory in 'config' if available. All files
+ (including file properties in patterns) obtained from this 'config' are
+ relative to this system root directory.
++ </para><para>
++This function isn't MT-safe. <function>FcConfigReference</function> must be called
++before using this and then <function>FcConfigDestroy</function> when
++the return value is no longer referenced.
+ @SINCE@ 2.10.92
+ @@
+
+@@ -433,6 +441,10 @@ When setting this on the current config this causes changing current config
+ @PURPOSE@ Initialize the iterator
+ @DESC@
+ Initialize 'iter' with the first iterator in the config file information list.
++ </para><para>
++This function isn't MT-safe. <function>FcConfigReference</function> must be called
++before using this and then <function>FcConfigDestroy</function> when the relevant
++values are no longer referenced.
+ @SINCE@ 2.12.91
+ @@
+
+@@ -444,6 +456,10 @@ Initialize 'iter' with the first iterator in the config file information list.
+ @DESC@
+ Set 'iter' to point to the next node in the config file information list.
+ If there is no next node, FcFalse is returned.
++ </para><para>
++This function isn't MT-safe. <function>FcConfigReference</function> must be called
++before using <function>FcConfigFileInfoIterInit</function> and then
++<function>FcConfigDestroy</function> when the relevant values are no longer referenced.
+ @SINCE@ 2.12.91
+ @@
+
+@@ -459,5 +475,9 @@ If there is no next node, FcFalse is returned.
+ Obtain the filename, the description and the flag whether it is enabled or not
+ for 'iter' where points to current configuration file information.
+ If the iterator is invalid, FcFalse is returned.
++ </para><para>
++This function isn't MT-safe. <function>FcConfigReference</function> must be called
++before using <function>FcConfigFileInfoIterInit</function> and then
++<function>FcConfigDestroy</function> when the relevant values are no longer referenced.
+ @SINCE@ 2.12.91
+ @@
+diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h
+index 2f0e8cf..c795245 100644
+--- a/fontconfig/fontconfig.h
++++ b/fontconfig/fontconfig.h
+@@ -375,7 +375,7 @@ FcPublic FcBool
+ FcDirCacheClean (const FcChar8 *cache_dir, FcBool verbose);
+
+ FcPublic void
+-FcCacheCreateTagFile (const FcConfig *config);
++FcCacheCreateTagFile (FcConfig *config);
+
+ FcPublic FcBool
+ FcDirCacheCreateUUID (FcChar8 *dir,
+@@ -437,7 +437,7 @@ FcPublic FcBlanks *
+ FcConfigGetBlanks (FcConfig *config);
+
+ FcPublic FcStrList *
+-FcConfigGetCacheDirs (const FcConfig *config);
++FcConfigGetCacheDirs (FcConfig *config);
+
+ FcPublic int
+ FcConfigGetRescanInterval (FcConfig *config);
+diff --git a/src/fccache.c b/src/fccache.c
+index c565560..d8f1dab 100644
+--- a/src/fccache.c
++++ b/src/fccache.c
+@@ -58,11 +58,15 @@ FcDirCacheDeleteUUID (const FcChar8 *dir,
+ {
+ FcBool ret = FcTrue;
+ #ifndef _WIN32
+- const FcChar8 *sysroot = FcConfigGetSysRoot (config);
++ const FcChar8 *sysroot;
+ FcChar8 *target, *d;
+ struct stat statb;
+ struct timeval times[2];
+
++ config = FcConfigReference (config);
++ if (!config)
++ return FcFalse;
++ sysroot = FcConfigGetSysRoot (config);
+ if (sysroot)
+ d = FcStrBuildFilename (sysroot, dir, NULL);
+ else
+@@ -94,6 +98,7 @@ FcDirCacheDeleteUUID (const FcChar8 *dir,
+ bail:
+ FcStrFree (d);
+ #endif
++ FcConfigDestroy (config);
+
+ return ret;
+ }
+@@ -265,7 +270,13 @@ FcDirCacheUnlink (const FcChar8 *dir, FcConfig *config)
+ #endif
+ FcStrList *list;
+ FcChar8 *cache_dir;
+- const FcChar8 *sysroot = FcConfigGetSysRoot (config);
++ const FcChar8 *sysroot;
++ FcBool ret = FcTrue;
++
++ config = FcConfigReference (config);
++ if (!config)
++ return FcFalse;
++ sysroot = FcConfigGetSysRoot (config);
+
+ FcDirCacheBasenameMD5 (config, dir, cache_base);
+ #ifndef _WIN32
+@@ -274,7 +285,10 @@ FcDirCacheUnlink (const FcChar8 *dir, FcConfig *config)
+
+ list = FcStrListCreate (config->cacheDirs);
+ if (!list)
+- return FcFalse;
++ {
++ ret = FcFalse;
++ goto bail;
++ }
+
+ while ((cache_dir = FcStrListNext (list)))
+ {
+@@ -304,8 +318,11 @@ FcDirCacheUnlink (const FcChar8 *dir, FcConfig *config)
+ FcDirCacheDeleteUUID (dir, config);
+ /* return FcFalse if something went wrong */
+ if (cache_dir)
+- return FcFalse;
+- return FcTrue;
++ ret = FcFalse;
++bail:
++ FcConfigDestroy (config);
++
++ return ret;
+ }
+
+ static int
+@@ -1041,10 +1058,15 @@ FcDirCacheLoad (const FcChar8 *dir, FcConfig *config, FcChar8 **cache_file)
+ {
+ FcCache *cache = NULL;
+
++ config = FcConfigReference (config);
++ if (!config)
++ return NULL;
+ if (!FcDirCacheProcess (config, dir,
+ FcDirCacheMapHelper,
+ &cache, cache_file))
+- return NULL;
++ cache = NULL;
++
++ FcConfigDestroy (config);
+
+ return cache;
+ }
+@@ -1055,13 +1077,16 @@ FcDirCacheLoadFile (const FcChar8 *cache_file, struct stat *file_stat)
+ int fd;
+ FcCache *cache;
+ struct stat my_file_stat;
++ FcConfig *config;
+
+ if (!file_stat)
+ file_stat = &my_file_stat;
+ fd = FcDirCacheOpenFile (cache_file, file_stat);
+ if (fd < 0)
+ return NULL;
+- cache = FcDirCacheMapFd (FcConfigGetCurrent (), fd, file_stat, NULL);
++ config = FcConfigReference (NULL);
++ cache = FcDirCacheMapFd (config, fd, file_stat, NULL);
++ FcConfigDestroy (config);
+ close (fd);
+ return cache;
+ }
+@@ -1155,12 +1180,16 @@ FcBool
+ FcDirCacheValid (const FcChar8 *dir)
+ {
+ FcConfig *config;
++ FcBool ret;
+
+- config = FcConfigGetCurrent ();
++ config = FcConfigReference (NULL);
+ if (!config)
+ return FcFalse;
+
+- return FcDirCacheValidConfig (dir, config);
++ ret = FcDirCacheValidConfig (dir, config);
++ FcConfigDestroy (config);
++
++ return ret;
+ }
+
+ /*
+@@ -1438,9 +1467,13 @@ FcDirCacheClean (const FcChar8 *cache_dir, FcBool verbose)
+ FcCache *cache;
+ struct stat target_stat;
+ const FcChar8 *sysroot;
++ FcConfig *config;
+
++ config = FcConfigReference (NULL);
++ if (!config)
++ return FcFalse;
+ /* FIXME: this API needs to support non-current FcConfig */
+- sysroot = FcConfigGetSysRoot (NULL);
++ sysroot = FcConfigGetSysRoot (config);
+ if (sysroot)
+ dir = FcStrBuildFilename (sysroot, cache_dir, NULL);
+ else
+@@ -1448,7 +1481,8 @@ FcDirCacheClean (const FcChar8 *cache_dir, FcBool verbose)
+ if (!dir)
+ {
+ fprintf (stderr, "Fontconfig error: %s: out of memory\n", cache_dir);
+- return FcFalse;
++ ret = FcFalse;
++ goto bail;
+ }
+ if (access ((char *) dir, W_OK) != 0)
+ {
+@@ -1525,8 +1559,10 @@ FcDirCacheClean (const FcChar8 *cache_dir, FcBool verbose)
+ }
+
+ closedir (d);
+- bail0:
++bail0:
+ FcStrFree (dir);
++bail:
++ FcConfigDestroy (config);
+
+ return ret;
+ }
+@@ -1968,15 +2004,20 @@ FcDirCacheCreateTagFile (const FcChar8 *cache_dir)
+ }
+
+ void
+-FcCacheCreateTagFile (const FcConfig *config)
++FcCacheCreateTagFile (FcConfig *config)
+ {
+ FcChar8 *cache_dir = NULL, *d = NULL;
+ FcStrList *list;
+- const FcChar8 *sysroot = FcConfigGetSysRoot (config);
++ const FcChar8 *sysroot;
++
++ config = FcConfigReference (config);
++ if (!config)
++ return;
++ sysroot = FcConfigGetSysRoot (config);
+
+ list = FcConfigGetCacheDirs (config);
+ if (!list)
+- return;
++ goto bail;
+
+ while ((cache_dir = FcStrListNext (list)))
+ {
+@@ -1992,6 +2033,8 @@ FcCacheCreateTagFile (const FcConfig *config)
+ if (d)
+ FcStrFree (d);
+ FcStrListDone (list);
++bail:
++ FcConfigDestroy (config);
+ }
+
+ #define __fccache__
+diff --git a/src/fccfg.c b/src/fccfg.c
+index 21ccd25..11dc876 100644
+--- a/src/fccfg.c
++++ b/src/fccfg.c
+@@ -237,12 +237,12 @@ FcConfigUptoDate (FcConfig *config)
+ {
+ FcFileTime config_time, config_dir_time, font_time;
+ time_t now = time(0);
++ FcBool ret = FcTrue;
++
++ config = FcConfigReference (config);
+ if (!config)
+- {
+- config = FcConfigGetCurrent ();
+- if (!config)
+- return FcFalse;
+- }
++ return FcFalse;
++
+ config_time = FcConfigNewestFile (config->configFiles);
+ config_dir_time = FcConfigNewestFile (config->configDirs);
+ font_time = FcConfigNewestFile (config->fontDirs);
+@@ -258,13 +258,19 @@ FcConfigUptoDate (FcConfig *config)
+ fprintf (stderr,
+ "Fontconfig warning: Directory/file mtime in the future. New fonts may not be detected.\n");
+ config->rescanTime = now;
+- return FcTrue;
++ goto bail;
+ }
+ else
+- return FcFalse;
++ {
++ ret = FcFalse;
++ goto bail;
++ }
+ }
+ config->rescanTime = now;
+- return FcTrue;
++bail:
++ FcConfigDestroy (config);
++
++ return ret;
+ }
+
+ FcExpr *
+@@ -291,11 +297,26 @@ FcConfigReference (FcConfig *config)
+ {
+ if (!config)
+ {
+- config = FcConfigGetCurrent ();
++ /* Do not use FcConfigGetCurrent () for the purpose of obtaining current FcConfig here.
++ * because the reference counter must be increased before setting it to _fcConfig.
++ */
++ retry:
++ config = fc_atomic_ptr_get (&_fcConfig);
+ if (!config)
+- return 0;
+- }
++ {
++ config = FcConfigCreate ();
++ FcRefInc (&config->ref);
+
++ config = FcInitLoadOwnConfigAndFonts (config);
++ if (!fc_atomic_ptr_cmpexch (&_fcConfig, NULL, config))
++ {
++ FcConfigDestroy (config); /* To decrease the refcount for the above one. */
++ FcConfigDestroy (config); /* To destroy it actualy */
++ goto retry;
++ }
++ return config;
++ }
++ }
+ FcRefInc (&config->ref);
+
+ return config;
+@@ -475,25 +496,32 @@ FcBool
+ FcConfigBuildFonts (FcConfig *config)
+ {
+ FcFontSet *fonts;
++ FcBool ret = FcTrue;
+
++ config = FcConfigReference (config);
+ if (!config)
+- {
+- config = FcConfigGetCurrent ();
+- if (!config)
+- return FcFalse;
+- }
++ return FcFalse;
+
+ fonts = FcFontSetCreate ();
+ if (!fonts)
+- return FcFalse;
++ {
++ ret = FcFalse;
++ goto bail;
++ }
+
+ FcConfigSetFonts (config, fonts, FcSetSystem);
+
+ if (!FcConfigAddDirList (config, FcSetSystem, config->fontDirs))
+- return FcFalse;
++ {
++ ret = FcFalse;
++ goto bail;
++ }
+ if (FcDebug () & FC_DBG_FONTSET)
+ FcFontSetPrint (fonts);
+- return FcTrue;
++bail:
++ FcConfigDestroy (config);
++
++ return ret;
+ }
+
+ FcBool
+@@ -537,13 +565,15 @@ FcConfigAddConfigDir (FcConfig *config,
+ FcStrList *
+ FcConfigGetConfigDirs (FcConfig *config)
+ {
++ FcStrList *ret;
++
++ config = FcConfigReference (config);
+ if (!config)
+- {
+- config = FcConfigGetCurrent ();
+- if (!config)
+- return 0;
+- }
+- return FcStrListCreate (config->configDirs);
++ return NULL;
++ ret = FcStrListCreate (config->configDirs);
++ FcConfigDestroy (config);
++
++ return ret;
+ }
+
+ FcBool
+@@ -579,13 +609,15 @@ FcConfigResetFontDirs (FcConfig *config)
+ FcStrList *
+ FcConfigGetFontDirs (FcConfig *config)
+ {
++ FcStrList *ret;
++
++ config = FcConfigReference (config);
+ if (!config)
+- {
+- config = FcConfigGetCurrent ();
+- if (!config)
+- return 0;
+- }
+- return FcStrListCreate (config->fontDirs);
++ return NULL;
++ ret = FcStrListCreate (config->fontDirs);
++ FcConfigDestroy (config);
++
++ return ret;
+ }
+
+ static FcBool
+@@ -670,15 +702,17 @@ FcConfigAddCacheDir (FcConfig *config,
+ }
+
+ FcStrList *
+-FcConfigGetCacheDirs (const FcConfig *config)
++FcConfigGetCacheDirs (FcConfig *config)
+ {
++ FcStrList *ret;
++
++ config = FcConfigReference (config);
+ if (!config)
+- {
+- config = FcConfigGetCurrent ();
+- if (!config)
+- return 0;
+- }
+- return FcStrListCreate (config->cacheDirs);
++ return NULL;
++ ret = FcStrListCreate (config->cacheDirs);
++ FcConfigDestroy (config);
++
++ return ret;
+ }
+
+ FcBool
+@@ -699,13 +733,15 @@ FcConfigAddConfigFile (FcConfig *config,
+ FcStrList *
+ FcConfigGetConfigFiles (FcConfig *config)
+ {
++ FcStrList *ret;
++
++ config = FcConfigReference (config);
+ if (!config)
+- {
+- config = FcConfigGetCurrent ();
+- if (!config)
+- return 0;
+- }
+- return FcStrListCreate (config->configFiles);
++ return NULL;
++ ret = FcStrListCreate (config->configFiles);
++ FcConfigDestroy (config);
++
++ return ret;
+ }
+
+ FcChar8 *
+@@ -784,25 +820,26 @@ FcConfigAddBlank (FcConfig *config FC_UNUSED,
+ int
+ FcConfigGetRescanInterval (FcConfig *config)
+ {
++ int ret;
++
++ config = FcConfigReference (config);
+ if (!config)
+- {
+- config = FcConfigGetCurrent ();
+- if (!config)
+- return 0;
+- }
+- return config->rescanInterval;
++ return 0;
++ ret = config->rescanInterval;
++ FcConfigDestroy (config);
++
++ return ret;
+ }
+
+ FcBool
+ FcConfigSetRescanInterval (FcConfig *config, int rescanInterval)
+ {
++ config = FcConfigReference (config);
+ if (!config)
+- {
+- config = FcConfigGetCurrent ();
+- if (!config)
+- return FcFalse;
+- }
++ return FcFalse;
+ config->rescanInterval = rescanInterval;
++ FcConfigDestroy (config);
++
+ return FcTrue;
+ }
+
+@@ -1670,15 +1707,13 @@ FcConfigSubstituteWithPat (FcConfig *config,
+ FcBool retval = FcTrue;
+ FcTest **tst = NULL;
+
+- if (!config)
+- {
+- config = FcConfigGetCurrent ();
+- if (!config)
+- return FcFalse;
+- }
+-
+ if (kind < FcMatchKindBegin || kind >= FcMatchKindEnd)
+ return FcFalse;
++
++ config = FcConfigReference (config);
++ if (!config)
++ return FcFalse;
++
+ s = config->subst[kind];
+ if (kind == FcMatchPattern)
+ {
+@@ -1973,6 +2008,7 @@ bail1:
+ free (value);
+ if (tst)
+ free (tst);
++ FcConfigDestroy (config);
+
+ return retval;
+ }
+@@ -2290,12 +2326,9 @@ FcConfigGetFilename (FcConfig *config,
+ FcChar8 *file, *dir, **path, **p;
+ const FcChar8 *sysroot;
+
++ config = FcConfigReference (config);
+ if (!config)
+- {
+- config = FcConfigGetCurrent ();
+- if (!config)
+- return NULL;
+- }
++ return NULL;
+ sysroot = FcConfigGetSysRoot (config);
+ if (!url || !*url)
+ {
+@@ -2306,7 +2339,10 @@ FcConfigGetFilename (FcConfig *config,
+ file = 0;
+
+ if (FcStrIsAbsoluteFilename(url))
+- return FcConfigFileExists (sysroot, url);
++ {
++ file = FcConfigFileExists (sysroot, url);
++ goto bail;
++ }
+
+ if (*url == '~')
+ {
+@@ -2330,7 +2366,10 @@ FcConfigGetFilename (FcConfig *config,
+ {
+ path = FcConfigGetPath ();
+ if (!path)
+- return NULL;
++ {
++ file = NULL;
++ goto bail;
++ }
+ for (p = path; *p; p++)
+ {
+ FcChar8 *s;
+@@ -2347,6 +2386,9 @@ FcConfigGetFilename (FcConfig *config,
+ }
+ FcConfigFreePath (path);
+ }
++bail:
++ FcConfigDestroy (config);
++
+ return file;
+ }
+
+@@ -2409,17 +2451,18 @@ FcConfigAppFontAddFile (FcConfig *config,
+ FcStrSet *subdirs;
+ FcStrList *sublist;
+ FcChar8 *subdir;
++ FcBool ret = FcTrue;
+
++ config = FcConfigReference (config);
+ if (!config)
+- {
+- config = FcConfigGetCurrent ();
+- if (!config)
+- return FcFalse;
+- }
++ return FcFalse;
+
+ subdirs = FcStrSetCreateEx (FCSS_GROW_BY_64);
+ if (!subdirs)
+- return FcFalse;
++ {
++ ret = FcFalse;
++ goto bail;
++ }
+
+ set = FcConfigGetFonts (config, FcSetApplication);
+ if (!set)
+@@ -2428,7 +2471,8 @@ FcConfigAppFontAddFile (FcConfig *config,
+ if (!set)
+ {
+ FcStrSetDestroy (subdirs);
+- return FcFalse;
++ ret = FcFalse;
++ goto bail;
+ }
+ FcConfigSetFonts (config, set, FcSetApplication);
+ }
+@@ -2436,7 +2480,8 @@ FcConfigAppFontAddFile (FcConfig *config,
+ if (!FcFileScanConfig (set, subdirs, file, config))
+ {
+ FcStrSetDestroy (subdirs);
+- return FcFalse;
++ ret = FcFalse;
++ goto bail;
+ }
+ if ((sublist = FcStrListCreate (subdirs)))
+ {
+@@ -2447,7 +2492,10 @@ FcConfigAppFontAddFile (FcConfig *config,
+ FcStrListDone (sublist);
+ }
+ FcStrSetDestroy (subdirs);
+- return FcTrue;
++bail:
++ FcConfigDestroy (config);
++
++ return ret;
+ }
+
+ FcBool
+@@ -2456,17 +2504,18 @@ FcConfigAppFontAddDir (FcConfig *config,
+ {
+ FcFontSet *set;
+ FcStrSet *dirs;
++ FcBool ret = FcTrue;
+
++ config = FcConfigReference (config);
+ if (!config)
+- {
+- config = FcConfigGetCurrent ();
+- if (!config)
+- return FcFalse;
+- }
++ return FcFalse;
+
+ dirs = FcStrSetCreateEx (FCSS_GROW_BY_64);
+ if (!dirs)
+- return FcFalse;
++ {
++ ret = FcFalse;
++ goto bail;
++ }
+
+ set = FcConfigGetFonts (config, FcSetApplication);
+ if (!set)
+@@ -2475,7 +2524,8 @@ FcConfigAppFontAddDir (FcConfig *config,
+ if (!set)
+ {
+ FcStrSetDestroy (dirs);
+- return FcFalse;
++ ret = FcFalse;
++ goto bail;
+ }
+ FcConfigSetFonts (config, set, FcSetApplication);
+ }
+@@ -2485,23 +2535,26 @@ FcConfigAppFontAddDir (FcConfig *config,
+ if (!FcConfigAddDirList (config, FcSetApplication, dirs))
+ {
+ FcStrSetDestroy (dirs);
+- return FcFalse;
++ ret = FcFalse;
++ goto bail;
+ }
+ FcStrSetDestroy (dirs);
+- return FcTrue;
++bail:
++ FcConfigDestroy (config);
++
++ return ret;
+ }
+
+ void
+ FcConfigAppFontClear (FcConfig *config)
+ {
++ config = FcConfigReference (config);
+ if (!config)
+- {
+- config = FcConfigGetCurrent ();
+- if (!config)
+- return;
+- }
++ return;
+
+ FcConfigSetFonts (config, 0, FcSetApplication);
++
++ FcConfigDestroy (config);
+ }
+
+ /*
+diff --git a/src/fcdir.c b/src/fcdir.c
+index 7d7b23c..693c845 100644
+--- a/src/fcdir.c
++++ b/src/fcdir.c
+@@ -167,7 +167,16 @@ FcFileScan (FcFontSet *set,
+ const FcChar8 *file,
+ FcBool force FC_UNUSED)
+ {
+- return FcFileScanConfig (set, dirs, file, FcConfigGetCurrent ());
++ FcConfig *config;
++ FcBool ret;
++
++ config = FcConfigReference (NULL);
++ if (!config)
++ return FcFalse;
++ ret = FcFileScanConfig (set, dirs, file, config);
++ FcConfigDestroy (config);
++
++ return ret;
+ }
+
+ /*
+@@ -271,10 +280,19 @@ FcDirScan (FcFontSet *set,
+ const FcChar8 *dir,
+ FcBool force FC_UNUSED)
+ {
++ FcConfig *config;
++ FcBool ret;
++
+ if (cache || !force)
+ return FcFalse;
+
+- return FcDirScanConfig (set, dirs, dir, force, FcConfigGetCurrent ());
++ config = FcConfigReference (NULL);
++ if (!config)
++ return FcFalse;
++ ret = FcDirScanConfig (set, dirs, dir, force, config);
++ FcConfigDestroy (config);
++
++ return ret;
+ }
+
+ /*
+@@ -353,12 +371,16 @@ FcDirCacheRescan (const FcChar8 *dir, FcConfig *config)
+ FcCache *new = NULL;
+ struct stat dir_stat;
+ FcStrSet *dirs;
+- const FcChar8 *sysroot = FcConfigGetSysRoot (config);
++ const FcChar8 *sysroot;
+ FcChar8 *d = NULL;
+ #ifndef _WIN32
+ int fd = -1;
+ #endif
+
++ config = FcConfigReference (config);
++ if (!config)
++ return NULL;
++ sysroot = FcConfigGetSysRoot (config);
+ cache = FcDirCacheLoad (dir, config, NULL);
+ if (!cache)
+ goto bail;
+@@ -401,6 +423,7 @@ bail1:
+ bail:
+ if (d)
+ FcStrFree (d);
++ FcConfigDestroy (config);
+
+ return new;
+ }
+@@ -413,6 +436,7 @@ FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config)
+ {
+ FcCache *cache = NULL;
+
++ config = FcConfigReference (config);
+ /* Try to use existing cache file */
+ if (!force)
+ cache = FcDirCacheLoad (dir, config, NULL);
+@@ -420,6 +444,7 @@ FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config)
+ /* Not using existing cache file, construct new cache */
+ if (!cache)
+ cache = FcDirCacheScan (dir, config);
++ FcConfigDestroy (config);
+
+ return cache;
+ }
+diff --git a/src/fcinit.c b/src/fcinit.c
+index 5831a19..6f82ebd 100644
+--- a/src/fcinit.c
++++ b/src/fcinit.c
+@@ -229,7 +229,8 @@ FcInitReinitialize (void)
+ FcBool
+ FcInitBringUptoDate (void)
+ {
+- FcConfig *config = FcConfigGetCurrent ();
++ FcConfig *config = FcConfigReference (NULL);
++ FcBool ret = FcTrue;
+ time_t now;
+
+ if (!config)
+@@ -238,19 +239,23 @@ FcInitBringUptoDate (void)
+ * rescanInterval == 0 disables automatic up to date
+ */
+ if (config->rescanInterval == 0)
+- return FcTrue;
++ goto bail;
+ /*
+ * Check no more often than rescanInterval seconds
+ */
+ now = time (0);
+ if (config->rescanTime + config->rescanInterval - now > 0)
+- return FcTrue;
++ goto bail;
+ /*
+ * If up to date, don't reload configuration
+ */
+ if (FcConfigUptoDate (0))
+- return FcTrue;
+- return FcInitReinitialize ();
++ goto bail;
++ ret = FcInitReinitialize ();
++bail:
++ FcConfigDestroy (config);
++
++ return ret;
+ }
+
+ #define __fcinit__
+diff --git a/src/fclist.c b/src/fclist.c
+index 494bdea..053803b 100644
+--- a/src/fclist.c
++++ b/src/fclist.c
+@@ -491,11 +491,10 @@ FcFontSetList (FcConfig *config,
+ {
+ if (!FcInitBringUptoDate ())
+ goto bail0;
+-
+- config = FcConfigGetCurrent ();
+- if (!config)
+- goto bail0;
+ }
++ config = FcConfigReference (config);
++ if (!config)
++ goto bail0;
+ FcListHashTableInit (&table);
+
+ if (!os)
+@@ -558,7 +557,7 @@ FcFontSetList (FcConfig *config,
+ */
+ ret = FcFontSetCreate ();
+ if (!ret)
+- goto bail0;
++ goto bail1;
+ for (i = 0; i < FC_LIST_HASH_SIZE; i++)
+ while ((bucket = table.buckets[i]))
+ {
+@@ -570,6 +569,7 @@ FcFontSetList (FcConfig *config,
+
+ if (destroy_os)
+ FcObjectSetDestroy (os);
++ FcConfigDestroy (config);
+
+ return ret;
+
+@@ -577,6 +577,7 @@ bail2:
+ FcFontSetDestroy (ret);
+ bail1:
+ FcListHashTableCleanup (&table);
++ FcConfigDestroy (config);
+ bail0:
+ if (destroy_os)
+ FcObjectSetDestroy (os);
+@@ -588,24 +589,26 @@ FcFontList (FcConfig *config,
+ FcPattern *p,
+ FcObjectSet *os)
+ {
+- FcFontSet *sets[2];
++ FcFontSet *sets[2], *ret;
+ int nsets;
+
+ if (!config)
+ {
+ if (!FcInitBringUptoDate ())
+ return 0;
+-
+- config = FcConfigGetCurrent ();
+- if (!config)
+- return 0;
+ }
++ config = FcConfigReference (config);
++ if (!config)
++ return NULL;
+ nsets = 0;
+ if (config->fonts[FcSetSystem])
+ sets[nsets++] = config->fonts[FcSetSystem];
+ if (config->fonts[FcSetApplication])
+ sets[nsets++] = config->fonts[FcSetApplication];
+- return FcFontSetList (config, sets, nsets, p, os);
++ ret = FcFontSetList (config, sets, nsets, p, os);
++ FcConfigDestroy (config);
++
++ return ret;
+ }
+ #define __fclist__
+ #include "fcaliastail.h"
+diff --git a/src/fcmatch.c b/src/fcmatch.c
+index 78bcf7b..3bc352b 100644
+--- a/src/fcmatch.c
++++ b/src/fcmatch.c
+@@ -845,7 +845,7 @@ FcFontSetMatch (FcConfig *config,
+ FcPattern *p,
+ FcResult *result)
+ {
+- FcPattern *best;
++ FcPattern *best, *ret = NULL;
+
+ assert (sets != NULL);
+ assert (p != NULL);
+@@ -853,17 +853,16 @@ FcFontSetMatch (FcConfig *config,
+
+ *result = FcResultNoMatch;
+
++ config = FcConfigReference (config);
+ if (!config)
+- {
+- config = FcConfigGetCurrent ();
+- if (!config)
+- return 0;
+- }
++ return NULL;
+ best = FcFontSetMatchInternal (sets, nsets, p, result);
+ if (best)
+- return FcFontRenderPrepare (config, p, best);
+- else
+- return NULL;
++ ret = FcFontRenderPrepare (config, p, best);
++
++ FcConfigDestroy (config);
++
++ return ret;
+ }
+
+ FcPattern *
+@@ -873,19 +872,16 @@ FcFontMatch (FcConfig *config,
+ {
+ FcFontSet *sets[2];
+ int nsets;
+- FcPattern *best;
++ FcPattern *best, *ret = NULL;
+
+ assert (p != NULL);
+ assert (result != NULL);
+
+ *result = FcResultNoMatch;
+
++ config = FcConfigReference (config);
+ if (!config)
+- {
+- config = FcConfigGetCurrent ();
+- if (!config)
+- return 0;
+- }
++ return NULL;
+ nsets = 0;
+ if (config->fonts[FcSetSystem])
+ sets[nsets++] = config->fonts[FcSetSystem];
+@@ -894,9 +890,11 @@ FcFontMatch (FcConfig *config,
+
+ best = FcFontSetMatchInternal (sets, nsets, p, result);
+ if (best)
+- return FcFontRenderPrepare (config, p, best);
+- else
+- return NULL;
++ ret = FcFontRenderPrepare (config, p, best);
++
++ FcConfigDestroy (config);
++
++ return ret;
+ }
+
+ typedef struct _FcSortNode {
+@@ -1183,7 +1181,7 @@ FcFontSort (FcConfig *config,
+ FcCharSet **csp,
+ FcResult *result)
+ {
+- FcFontSet *sets[2];
++ FcFontSet *sets[2], *ret;
+ int nsets;
+
+ assert (p != NULL);
+@@ -1191,18 +1189,18 @@ FcFontSort (FcConfig *config,
+
+ *result = FcResultNoMatch;
+
++ config = FcConfigReference (config);
+ if (!config)
+- {
+- config = FcConfigGetCurrent ();
+- if (!config)
+- return 0;
+- }
++ return NULL;
+ nsets = 0;
+ if (config->fonts[FcSetSystem])
+ sets[nsets++] = config->fonts[FcSetSystem];
+ if (config->fonts[FcSetApplication])
+ sets[nsets++] = config->fonts[FcSetApplication];
+- return FcFontSetSort (config, sets, nsets, p, trim, csp, result);
++ ret = FcFontSetSort (config, sets, nsets, p, trim, csp, result);
++ FcConfigDestroy (config);
++
++ return ret;
+ }
+ #define __fcmatch__
+ #include "fcaliastail.h"
+diff --git a/test/Makefile.am b/test/Makefile.am
+index e44aa0b..aae45cb 100644
+--- a/test/Makefile.am
++++ b/test/Makefile.am
+@@ -42,6 +42,11 @@ test_pthread_LDADD = $(top_builddir)/src/libfontconfig.la
+ # We don't enable this test by default because it will require config and fonts
+ # to meaningfully test anything, and we are not installed yet.
+ #TESTS += test-pthread
++
++check_PROGRAMS += test-crbug1004254
++test_crbug1004254_LDADD = $(top_builddir)/src/libfontconfig.la
++# Disabling this for the same reason as above but trying to run in run-test.sh.
++#TESTS += test-crbug1004254
+ endif
+ check_PROGRAMS += test-bz89617
+ test_bz89617_CFLAGS = \
+diff --git a/test/run-test.sh b/test/run-test.sh
+index 8ad09e3..e1ee6d0 100644
+--- a/test/run-test.sh
++++ b/test/run-test.sh
+@@ -20,6 +20,8 @@
+ # 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.
++set -e
++
+ case "$OSTYPE" in
+ msys ) MyPWD=`pwd -W` ;; # On Msys/MinGW, returns a MS Windows style path.
+ * ) MyPWD=`pwd` ;; # On any other platforms, returns a Unix style path.
+@@ -408,4 +410,17 @@ rm -rf $MYCACHEBASEDIR $MYCONFIG my-fonts.conf my-out my-out.expected
+
+ fi # if [ "x$EXEEXT" = "x" ]
+
++if [ -x $BUILDTESTDIR/test-crbug1004254 ]; then
++ dotest "MT-safe global config"
++ prep
++ curl -s -o $FONTDIR/noto.zip https://noto-website-2.storage.googleapis.com/pkgs/NotoSans-hinted.zip
++ (cd $FONTDIR; unzip noto.zip)
++ if [ -n ${SOURCE_DATE_EPOCH:-} ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then
++ touch -m -t "`date -d \"@${SOURCE_DATE_EPOCH}\" +%y%m%d%H%M.%S`" $FONTDIR
++ fi
++ $BUILDTESTDIR/test-crbug1004254
++else
++ echo "No test-crbug1004254: skipped"
++fi
++
+ rm -rf $FONTDIR $CACHEFILE $CACHEDIR $BASEDIR $FONTCONFIG_FILE out
+diff --git a/test/test-crbug1004254.c b/test/test-crbug1004254.c
+new file mode 100644
+index 0000000..1cc6fc7
+--- /dev/null
++++ b/test/test-crbug1004254.c
+@@ -0,0 +1,116 @@
++/*
++ * fontconfig/test/test-pthread.c
++ *
++ * Copyright © 2000 Keith Packard
++ * Copyright © 2013 Raimund Steger
++ *
++ * 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.
++ */
++#include <stdio.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <pthread.h>
++#include <fontconfig/fontconfig.h>
++
++struct thr_arg_s
++{
++ int thr_num;
++};
++
++static void
++run_query (void)
++{
++ FcPattern *pat = FcPatternCreate (), *match;
++ FcResult result;
++
++ FcPatternAddString (pat, FC_FAMILY, "sans-serif");
++ FcPatternAddBool (pat, FC_SCALABLE, FcTrue);
++ FcConfigSubstitute (NULL, pat, FcMatchPattern);
++ FcDefaultSubstitute (pat);
++ match = FcFontMatch (NULL, pat, &result);
++ if (result != FcResultMatch || !match)
++ {
++ fprintf (stderr, "ERROR: No matches found\n");
++ }
++ if (match)
++ FcPatternDestroy (match);
++ FcPatternDestroy (pat);
++}
++
++static void
++run_reinit (void)
++{
++ if (!FcInitReinitialize ())
++ {
++ fprintf (stderr, "ERROR: Reinitializing failed\n");
++ }
++}
++
++#define NTEST 3000
++
++static void *
++run_test_in_thread (void *arg)
++{
++ struct thr_arg_s *thr_arg = (struct thr_arg_s *) arg;
++ int thread_num = thr_arg->thr_num;
++
++ fprintf (stderr, "Worker %d: started (round %d)\n", thread_num % 2, thread_num / 2);
++ if ((thread_num % 2) == 0)
++ {
++ run_query ();
++ }
++ else
++ {
++ run_reinit ();
++ }
++ fprintf (stderr, "Worker %d: done (round %d)\n", thread_num % 2, thread_num / 2);
++
++ return NULL;
++}
++
++int
++main (int argc, char **argv)
++{
++ pthread_t threads[NTEST];
++ struct thr_arg_s thr_arg[NTEST];
++ int i, j;
++
++ for (i = 0; i < NTEST; i++)
++ {
++ int result;
++
++ fprintf (stderr, "Thread %d (worker %d round %d): creating\n", i, i % 2, i / 2);
++ thr_arg[i].thr_num = i;
++ result = pthread_create (&threads[i], NULL, run_test_in_thread,
++ (void *) &thr_arg[i]);
++ if (result != 0)
++ {
++ fprintf (stderr, "Cannot create thread %d\n", i);
++ break;
++ }
++ }
++ for (j = 0; j < i; j++)
++ {
++ pthread_join(threads[j], NULL);
++ fprintf (stderr, "Joined thread %d\n", j);
++ }
++ FcFini ();
++
++ return 0;
++}
+--
+2.24.1
+
+From aa8c8cfa9fb2563482336249e3f56459099fcf6e Mon Sep 17 00:00:00 2001
+From: Akira TAGOH <akira@tagoh.org>
+Date: Sat, 2 Nov 2019 00:14:48 +0900
+Subject: [PATCH 4/9] Fix potential race condition in FcConfigSetCurrent and
+ FcConfigReference
+
+---
+ src/fccache.c | 2 +
+ src/fccfg.c | 105 ++++++++++++++++++++++++++++++++++++++++++--------
+ 2 files changed, 90 insertions(+), 17 deletions(-)
+
+diff --git a/src/fccache.c b/src/fccache.c
+index d8f1dab..4744a84 100644
+--- a/src/fccache.c
++++ b/src/fccache.c
+@@ -1085,6 +1085,8 @@ FcDirCacheLoadFile (const FcChar8 *cache_file, struct stat *file_stat)
+ if (fd < 0)
+ return NULL;
+ config = FcConfigReference (NULL);
++ if (!config)
++ return NULL;
+ cache = FcDirCacheMapFd (config, fd, file_stat, NULL);
+ FcConfigDestroy (config);
+ close (fd);
+diff --git a/src/fccfg.c b/src/fccfg.c
+index 11dc876..30f37af 100644
+--- a/src/fccfg.c
++++ b/src/fccfg.c
+@@ -33,6 +33,49 @@
+ #endif
+
+ static FcConfig *_fcConfig; /* MT-safe */
++static FcMutex *_lock;
++
++static void
++lock_config (void)
++{
++ FcMutex *lock;
++retry:
++ lock = fc_atomic_ptr_get (&_lock);
++ if (!lock)
++ {
++ lock = (FcMutex *) malloc (sizeof (FcMutex));
++ FcMutexInit (lock);
++ if (!fc_atomic_ptr_cmpexch (&_lock, NULL, lock))
++ {
++ FcMutexFinish (lock);
++ goto retry;
++ }
++ FcMutexLock (lock);
++ /* Initialize random state */
++ FcRandom ();
++ return;
++ }
++ FcMutexLock (lock);
++}
++
++static void
++unlock_config (void)
++{
++ FcMutexUnlock (_lock);
++}
++
++static void
++free_lock (void)
++{
++ FcMutex *lock;
++
++ lock = fc_atomic_ptr_get (&_lock);
++ if (lock && fc_atomic_ptr_cmpexch (&_lock, lock, NULL))
++ {
++ FcMutexFinish (lock);
++ free (lock);
++ }
++}
+
+ static FcConfig *
+ FcConfigEnsure (void)
+@@ -44,8 +87,9 @@ retry:
+ {
+ config = FcInitLoadConfigAndFonts ();
+
+- if (!fc_atomic_ptr_cmpexch (&_fcConfig, NULL, config)) {
+- FcConfigDestroy (config);
++ if (!config || !fc_atomic_ptr_cmpexch (&_fcConfig, NULL, config)) {
++ if (config)
++ FcConfigDestroy (config);
+ goto retry;
+ }
+ }
+@@ -76,6 +120,7 @@ FcConfigFini (void)
+ FcConfig *cfg = fc_atomic_ptr_get (&_fcConfig);
+ if (cfg && fc_atomic_ptr_cmpexch (&_fcConfig, cfg, NULL))
+ FcConfigDestroy (cfg);
++ free_lock ();
+ }
+
+ static FcChar8 *
+@@ -297,27 +342,31 @@ FcConfigReference (FcConfig *config)
+ {
+ if (!config)
+ {
+- /* Do not use FcConfigGetCurrent () for the purpose of obtaining current FcConfig here.
+- * because the reference counter must be increased before setting it to _fcConfig.
++ /* lock during obtaining the value from _fcConfig and count up refcount there,
++ * there are the race between them.
+ */
++ lock_config ();
+ retry:
+ config = fc_atomic_ptr_get (&_fcConfig);
+ if (!config)
+ {
+- config = FcConfigCreate ();
+- FcRefInc (&config->ref);
++ unlock_config ();
+
+- config = FcInitLoadOwnConfigAndFonts (config);
++ config = FcInitLoadConfigAndFonts ();
++ if (!config)
++ goto retry;
++ lock_config ();
+ if (!fc_atomic_ptr_cmpexch (&_fcConfig, NULL, config))
+ {
+- FcConfigDestroy (config); /* To decrease the refcount for the above one. */
+- FcConfigDestroy (config); /* To destroy it actualy */
++ FcConfigDestroy (config);
+ goto retry;
+ }
+- return config;
+ }
++ FcRefInc (&config->ref);
++ unlock_config ();
+ }
+- FcRefInc (&config->ref);
++ else
++ FcRefInc (&config->ref);
+
+ return config;
+ }
+@@ -529,20 +578,29 @@ FcConfigSetCurrent (FcConfig *config)
+ {
+ FcConfig *cfg;
+
++ if (config)
++ {
++ if (!config->fonts[FcSetSystem])
++ if (!FcConfigBuildFonts (config))
++ return FcFalse;
++ FcRefInc (&config->ref);
++ }
++
++ lock_config ();
+ retry:
+ cfg = fc_atomic_ptr_get (&_fcConfig);
+
+ if (config == cfg)
++ {
++ unlock_config ();
++ if (config)
++ FcConfigDestroy (config);
+ return FcTrue;
+-
+- if (config && !config->fonts[FcSetSystem])
+- if (!FcConfigBuildFonts (config))
+- return FcFalse;
++ }
+
+ if (!fc_atomic_ptr_cmpexch (&_fcConfig, cfg, config))
+ goto retry;
+-
+- FcConfigReference (config);
++ unlock_config ();
+ if (cfg)
+ FcConfigDestroy (cfg);
+
+@@ -2649,7 +2707,9 @@ FcConfigSetSysRoot (FcConfig *config,
+ {
+ FcChar8 *s = NULL;
+ FcBool init = FcFalse;
++ int nretry = 3;
+
++retry:
+ if (!config)
+ {
+ /* We can't use FcConfigGetCurrent() here to ensure
+@@ -2681,6 +2741,17 @@ FcConfigSetSysRoot (FcConfig *config,
+ if (init)
+ {
+ config = FcInitLoadOwnConfigAndFonts (config);
++ if (!config)
++ {
++ /* Something failed. this is usually unlikely. so retrying */
++ init = FcFalse;
++ if (--nretry == 0)
++ {
++ fprintf (stderr, "Fontconfig warning: Unable to initialize config and retry limit exceeded. sysroot functionality may not work as expected.\n");
++ return;
++ }
++ goto retry;
++ }
+ FcConfigSetCurrent (config);
+ /* FcConfigSetCurrent() increases the refcount.
+ * decrease it here to avoid the memory leak.
+--
+2.24.1
+
diff --git a/source/x/fontconfig/fedora-patches/fontconfig-read-latest-cache.patch b/source/x/fontconfig/fedora-patches/fontconfig-read-latest-cache.patch
new file mode 100644
index 00000000..8b70dc0a
--- /dev/null
+++ b/source/x/fontconfig/fedora-patches/fontconfig-read-latest-cache.patch
@@ -0,0 +1,228 @@
+From c9862b6ea7c3234b29f6500c7d07359847e55ed7 Mon Sep 17 00:00:00 2001
+From: Akira TAGOH <akira@tagoh.org>
+Date: Mon, 28 Oct 2019 17:11:38 +0900
+Subject: [PATCH 1/9] Read latest cache in paths
+
+Right now fontconfig uses a cache found first in a path and
+cachedirs are the order of the system-wide path and then the user path.
+this is due to avoid writing caches into the user path when running as root.
+
+However, changing caches by certain config only, e.g. using <match target="scan">
+may not take effect by this behavior, because it may be stored into the user path.
+
+Thus, needing to find the latest cache out from paths.
+
+Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/182
+---
+ src/fccache.c | 36 +++++++++++++++++++++-----
+ test/run-test.sh | 66 ++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 96 insertions(+), 6 deletions(-)
+
+diff --git a/src/fccache.c b/src/fccache.c
+index 0976201..4acde22 100644
+--- a/src/fccache.c
++++ b/src/fccache.c
+@@ -338,7 +338,7 @@ FcDirCacheOpenFile (const FcChar8 *cache_file, struct stat *file_stat)
+ static FcBool
+ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir,
+ FcBool (*callback) (FcConfig *config, int fd, struct stat *fd_stat,
+- struct stat *dir_stat, void *closure),
++ struct stat *dir_stat, struct timeval *cache_mtime, void *closure),
+ void *closure, FcChar8 **cache_file_ret)
+ {
+ int fd = -1;
+@@ -348,6 +348,7 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir,
+ struct stat file_stat, dir_stat;
+ FcBool ret = FcFalse;
+ const FcChar8 *sysroot = FcConfigGetSysRoot (config);
++ struct timeval latest_mtime = (struct timeval){ 0 };
+
+ if (sysroot)
+ d = FcStrBuildFilename (sysroot, dir, NULL);
+@@ -383,15 +384,18 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir,
+ #endif
+ fd = FcDirCacheOpenFile (cache_hashed, &file_stat);
+ if (fd >= 0) {
+- ret = (*callback) (config, fd, &file_stat, &dir_stat, closure);
++ ret = (*callback) (config, fd, &file_stat, &dir_stat, &latest_mtime, closure);
+ close (fd);
+ if (ret)
+ {
+ if (cache_file_ret)
++ {
++ if (*cache_file_ret)
++ FcStrFree (*cache_file_ret);
+ *cache_file_ret = cache_hashed;
++ }
+ else
+ FcStrFree (cache_hashed);
+- break;
+ }
+ }
+ #ifndef _WIN32
+@@ -414,7 +418,8 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir,
+ }
+ }
+ #endif
+- FcStrFree (cache_hashed);
++ else
++ FcStrFree (cache_hashed);
+ }
+ FcStrListDone (list);
+
+@@ -998,12 +1003,31 @@ FcDirCacheUnload (FcCache *cache)
+ }
+
+ static FcBool
+-FcDirCacheMapHelper (FcConfig *config, int fd, struct stat *fd_stat, struct stat *dir_stat, void *closure)
++FcDirCacheMapHelper (FcConfig *config, int fd, struct stat *fd_stat, struct stat *dir_stat, struct timeval *latest_cache_mtime, void *closure)
+ {
+ FcCache *cache = FcDirCacheMapFd (config, fd, fd_stat, dir_stat);
++ struct timeval cache_mtime;
+
+ if (!cache)
+ return FcFalse;
++ cache_mtime.tv_sec = fd_stat->st_mtime;
++#ifdef HAVE_STRUCT_STAT_ST_MTIM
++ cache_mtime.tv_usec = fd_stat->st_mtim.tv_nsec / 1000;
++#else
++ cache_mtime.tv_usec = 0;
++#endif
++ if (timercmp (latest_cache_mtime, &cache_mtime, <))
++ {
++ if (*((FcCache **) closure))
++ FcDirCacheUnload (*((FcCache **) closure));
++ }
++ else
++ {
++ FcDirCacheUnload (cache);
++ return FcFalse;
++ }
++ latest_cache_mtime->tv_sec = cache_mtime.tv_sec;
++ latest_cache_mtime->tv_usec = cache_mtime.tv_usec;
+ *((FcCache **) closure) = cache;
+ return FcTrue;
+ }
+@@ -1093,7 +1117,7 @@ FcDirChecksumNano (struct stat *statb)
+ * the magic number and the size field
+ */
+ static FcBool
+-FcDirCacheValidateHelper (FcConfig *config, int fd, struct stat *fd_stat, struct stat *dir_stat, void *closure FC_UNUSED)
++FcDirCacheValidateHelper (FcConfig *config, int fd, struct stat *fd_stat, struct stat *dir_stat, struct timeval *latest_cache_mtime, void *closure FC_UNUSED)
+ {
+ FcBool ret = FcTrue;
+ FcCache c;
+diff --git a/test/run-test.sh b/test/run-test.sh
+index 4e5968b..8ad09e3 100644
+--- a/test/run-test.sh
++++ b/test/run-test.sh
+@@ -340,6 +340,72 @@ fi
+
+ rm -rf $MyPWD/sysroot
+
++dotest "read newer caches when multiple places are allowed to store"
++prep
++cp $FONT1 $FONT2 $FONTDIR
++if [ -n ${SOURCE_DATE_EPOCH:-} ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then
++ touch -m -t "`date -d \"@${SOURCE_DATE_EPOCH}\" +%y%m%d%H%M.%S`" $FONTDIR
++fi
++MYCACHEBASEDIR=`mktemp -d /tmp/fontconfig.XXXXXXXX`
++MYCACHEDIR=$MYCACHEBASEDIR/cache.dir
++MYOWNCACHEDIR=$MYCACHEBASEDIR/owncache.dir
++MYCONFIG=`mktemp /tmp/fontconfig.XXXXXXXX`
++
++mkdir -p $MYCACHEDIR
++mkdir -p $MYOWNCACHEDIR
++
++sed "s!@FONTDIR@!$FONTDIR!
++s!@REMAPDIR@!!
++s!@CACHEDIR@!$MYCACHEDIR!" < $TESTDIR/fonts.conf.in > my-fonts.conf
++
++FONTCONFIG_FILE=$MyPWD/my-fonts.conf $FCCACHE $FONTDIR
++
++sleep 1
++cat<<EOF>$MYCONFIG
++<fontconfig>
++ <match target="scan">
++ <test name="file"><string>$FONTDIR/4x6.pcf</string></test>
++ <edit name="pixelsize"><int>8</int></edit>
++ </match>
++</fontconfig>
++EOF
++sed "s!@FONTDIR@!$FONTDIR!
++s!@REMAPDIR@!<include ignore_missing=\"yes\">$MYCONFIG</include>!
++s!@CACHEDIR@!$MYOWNCACHEDIR!" < $TESTDIR/fonts.conf.in > my-fonts.conf
++
++if [ -n ${SOURCE_DATE_EPOCH:-} ]; then
++ old_epoch=${SOURCE_DATE_EPOCH}
++ SOURCE_DATE_EPOCH=`expr $SOURCE_DATE_EPOCH + 1`
++fi
++FONTCONFIG_FILE=$MyPWD/my-fonts.conf $FCCACHE -f $FONTDIR
++if [ -n ${SOURCE_DATE_EPOCH:-} ]; then
++ SOURCE_DATE_EPOCH=${old_epoch}
++fi
++
++sed "s!@FONTDIR@!$FONTDIR!
++s!@REMAPDIR@!<include ignore_missing=\"yes\">$MYCONFIG</include>!
++s!@CACHEDIR@!$MYCACHEDIR</cachedir><cachedir>$MYOWNCACHEDIR!" < $TESTDIR/fonts.conf.in > my-fonts.conf
++
++FONTCONFIG_FILE=$MyPWD/my-fonts.conf $FCLIST - family pixelsize | sort > my-out
++echo "=" >> my-out
++FONTCONFIG_FILE=$MyPWD/my-fonts.conf $FCLIST - family pixelsize | sort >> my-out
++echo "=" >> my-out
++FONTCONFIG_FILE=$MyPWD/my-fonts.conf $FCLIST - family pixelsize | sort >> my-out
++tr -d '\015' <my-out >my-out.tmp; mv my-out.tmp my-out
++sed -e 's/pixelsize=6/pixelsize=8/g' $BUILDTESTDIR/$EXPECTED > my-out.expected
++
++if cmp my-out my-out.expected > /dev/null ; then : ; else
++ echo "*** Test failed: $TEST"
++ echo "*** output is in 'my-out', expected output in 'my-out.expected'"
++ echo "Actual Result"
++ cat my-out
++ echo "Expected Result"
++ cat my-out.expected
++ exit 1
++fi
++
++rm -rf $MYCACHEBASEDIR $MYCONFIG my-fonts.conf my-out my-out.expected
++
+ fi # if [ "x$EXEEXT" = "x" ]
+
+ rm -rf $FONTDIR $CACHEFILE $CACHEDIR $BASEDIR $FONTCONFIG_FILE out
+--
+2.24.1
+
+From a45fc8a33256d9d3ea0ea7947f33c8e5e3cc7238 Mon Sep 17 00:00:00 2001
+From: Akira TAGOH <akira@tagoh.org>
+Date: Thu, 31 Oct 2019 16:15:25 +0900
+Subject: [PATCH 2/9] Fix a memory leak caused by the previous commit
+
+---
+ src/fccache.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/fccache.c b/src/fccache.c
+index 4acde22..c565560 100644
+--- a/src/fccache.c
++++ b/src/fccache.c
+@@ -397,6 +397,8 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir,
+ else
+ FcStrFree (cache_hashed);
+ }
++ else
++ FcStrFree (cache_hashed);
+ }
+ #ifndef _WIN32
+ else if (!retried)
+@@ -416,6 +418,8 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir,
+ break;
+ goto retry;
+ }
++ else
++ FcStrFree (cache_hashed);
+ }
+ #endif
+ else
+--
+2.24.1
+
diff --git a/source/x/fontconfig/fedora-patches/fontconfig-required-freetype-version.patch b/source/x/fontconfig/fedora-patches/fontconfig-required-freetype-version.patch
new file mode 100644
index 00000000..6f7aae3e
--- /dev/null
+++ b/source/x/fontconfig/fedora-patches/fontconfig-required-freetype-version.patch
@@ -0,0 +1,14 @@
+diff -pruN fontconfig-2.12.93.orig/configure.ac fontconfig-2.12.93/configure.ac
+--- fontconfig-2.12.93.orig/configure.ac 2018-02-15 22:01:54.000000000 +0900
++++ fontconfig-2.12.93/configure.ac 2018-02-15 22:33:42.353941393 +0900
+@@ -308,8 +308,8 @@ AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,
+ # Checks for FreeType
+ #
+ dnl See http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/VERSIONS.TXT for versioning in freetype
+-PKG_CHECK_MODULES(FREETYPE, freetype2 >= 21.0.15)
+-PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES freetype2 >= 21.0.15"
++PKG_CHECK_MODULES(FREETYPE, freetype2 >= 20.0.14)
++PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES freetype2 >= 20.0.14"
+
+ AC_SUBST(FREETYPE_LIBS)
+ AC_SUBST(FREETYPE_CFLAGS)
diff --git a/source/x/fontconfig/fedora-patches/fontconfig-score-hint-on-match.patch b/source/x/fontconfig/fedora-patches/fontconfig-score-hint-on-match.patch
new file mode 100644
index 00000000..404d7be8
--- /dev/null
+++ b/source/x/fontconfig/fedora-patches/fontconfig-score-hint-on-match.patch
@@ -0,0 +1,36 @@
+From cb1036a7c7f1cb79fa799b1db368c86b018ec368 Mon Sep 17 00:00:00 2001
+From: Akira TAGOH <akira@tagoh.org>
+Date: Fri, 9 Aug 2019 12:22:08 +0000
+Subject: [PATCH] Affect FC_FONT_HAS_HINT property to score on matcher
+
+---
+ src/fcmatch.c | 1 +
+ src/fcobjs.h | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/fcmatch.c b/src/fcmatch.c
+index c3d2b8ad..78bcf7b4 100644
+--- a/src/fcmatch.c
++++ b/src/fcmatch.c
+@@ -342,6 +342,7 @@ typedef enum _FcMatcherPriority {
+ PRI1(SLANT),
+ PRI1(WEIGHT),
+ PRI1(WIDTH),
++ PRI1(FONT_HAS_HINT),
+ PRI1(DECORATIVE),
+ PRI1(ANTIALIAS),
+ PRI1(RASTERIZER),
+diff --git a/src/fcobjs.h b/src/fcobjs.h
+index 7bb97d09..dd4a6ec3 100644
+--- a/src/fcobjs.h
++++ b/src/fcobjs.h
+@@ -72,5 +72,5 @@ FC_OBJECT (COLOR, FcTypeBool, FcCompareBool)
+ FC_OBJECT (SYMBOL, FcTypeBool, FcCompareBool)
+ FC_OBJECT (FONT_VARIATIONS, FcTypeString, NULL)
+ FC_OBJECT (VARIABLE, FcTypeBool, FcCompareBool)
+-FC_OBJECT (FONT_HAS_HINT, FcTypeBool, NULL)
++FC_OBJECT (FONT_HAS_HINT, FcTypeBool, FcCompareBool)
+ /* ^-------------- Add new objects here. */
+--
+2.22.0
+
diff --git a/source/x/fontconfig/fedora-patches/fontconfig-sleep-less.patch b/source/x/fontconfig/fedora-patches/fontconfig-sleep-less.patch
new file mode 100644
index 00000000..bd9c58c0
--- /dev/null
+++ b/source/x/fontconfig/fedora-patches/fontconfig-sleep-less.patch
@@ -0,0 +1,12 @@
+diff -pruN fontconfig-2.12.91.orig/fc-cache/fc-cache.c fontconfig-2.12.91/fc-cache/fc-cache.c
+--- fontconfig-2.12.91.orig/fc-cache/fc-cache.c 2017-11-20 21:02:20.000000000 +0900
++++ fontconfig-2.12.91/fc-cache/fc-cache.c 2017-12-14 16:59:19.002003145 +0900
+@@ -413,7 +413,7 @@ main (int argc, char **argv)
+ */
+ /* the resolution of mtime on FAT is 2 seconds */
+ if (changed)
+- sleep (2);
++ sleep (1);
+ if (verbose)
+ printf ("%s: %s\n", argv[0], ret ? _("failed") : _("succeeded"));
+ return ret;
diff --git a/source/x/fontconfig/fedora-patches/fontconfig-sysroot.patch b/source/x/fontconfig/fedora-patches/fontconfig-sysroot.patch
new file mode 100644
index 00000000..9505f972
--- /dev/null
+++ b/source/x/fontconfig/fedora-patches/fontconfig-sysroot.patch
@@ -0,0 +1,285 @@
+From cd51cb241aad7b362b793200ca7d42595c14f52b Mon Sep 17 00:00:00 2001
+From: Akira TAGOH <akira@tagoh.org>
+Date: Mon, 21 Oct 2019 16:17:42 +0900
+Subject: [PATCH] Take effect sysroot functionality to the default config file
+
+When loading the default config file with FONTCONFIG_SYSROOT,
+it fails if no /etc/fonts/fonts.conf is available, even if it is
+there where is based on sysroot.
+
+To address this, FcConfig is required to determine the sysroot.
+therefore, this change makes FcConfigFilename() deprecated,
+use FcConfigGetFilename() instead.
+
+Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/181
+---
+ doc/fcconfig.fncs | 11 +++++++
+ fontconfig/fontconfig.h | 4 +++
+ src/fccfg.c | 67 ++++++++++++++++++++++++++++-------------
+ src/fcxml.c | 24 ++++++++++++---
+ 4 files changed, 81 insertions(+), 25 deletions(-)
+
+diff --git a/doc/fcconfig.fncs b/doc/fcconfig.fncs
+index 5f1ef43..82769d5 100644
+--- a/doc/fcconfig.fncs
++++ b/doc/fcconfig.fncs
+@@ -344,6 +344,15 @@ to be up to date, and used.
+ @TYPE1@ const FcChar8 * @ARG1@ name
+ @PURPOSE@ Find a config file
+ @DESC@
++This function is deprecated and is replaced by <function>FcConfigGetFilename</function>.
++@@
++
++@RET@ FcChar8 *
++@FUNC@ FcConfigGetFilename
++@TYPE1@ FcConfig * @ARG1@ config
++@TYPE2@ const FcChar8 * @ARG2@ name
++@PURPOSE@ Find a config file
++@DESC@
+ Given the specified external entity name, return the associated filename.
+ This provides applications a way to convert various configuration file
+ references into filename form.
+@@ -355,6 +364,8 @@ refers to a file in the current users home directory. Otherwise if the name
+ doesn't start with '/', it refers to a file in the default configuration
+ directory; the built-in default directory can be overridden with the
+ FONTCONFIG_PATH environment variable.
++ </para><para>
++The result of this function is affected by the FONTCONFIG_SYSROOT environment variable or equivalent functionality.
+ @@
+
+ @RET@ FcBool
+diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h
+index 9586616..2f0e8cf 100644
+--- a/fontconfig/fontconfig.h
++++ b/fontconfig/fontconfig.h
+@@ -393,6 +393,10 @@ FcConfigHome (void);
+ FcPublic FcBool
+ FcConfigEnableHome (FcBool enable);
+
++FcPublic FcChar8 *
++FcConfigGetFilename (FcConfig *config,
++ const FcChar8 *url);
++
+ FcPublic FcChar8 *
+ FcConfigFilename (const FcChar8 *url);
+
+diff --git a/src/fccfg.c b/src/fccfg.c
+index e81eeba..21ccd25 100644
+--- a/src/fccfg.c
++++ b/src/fccfg.c
+@@ -686,7 +686,7 @@ FcConfigAddConfigFile (FcConfig *config,
+ const FcChar8 *f)
+ {
+ FcBool ret;
+- FcChar8 *file = FcConfigFilename (f);
++ FcChar8 *file = FcConfigGetFilename (config, f);
+
+ if (!file)
+ return FcFalse;
+@@ -2284,10 +2284,19 @@ FcConfigEnableHome (FcBool enable)
+ }
+
+ FcChar8 *
+-FcConfigFilename (const FcChar8 *url)
++FcConfigGetFilename (FcConfig *config,
++ const FcChar8 *url)
+ {
+ FcChar8 *file, *dir, **path, **p;
++ const FcChar8 *sysroot;
+
++ if (!config)
++ {
++ config = FcConfigGetCurrent ();
++ if (!config)
++ return NULL;
++ }
++ sysroot = FcConfigGetSysRoot (config);
+ if (!url || !*url)
+ {
+ url = (FcChar8 *) getenv ("FONTCONFIG_FILE");
+@@ -2297,13 +2306,23 @@ FcConfigFilename (const FcChar8 *url)
+ file = 0;
+
+ if (FcStrIsAbsoluteFilename(url))
+- return FcConfigFileExists (0, url);
++ return FcConfigFileExists (sysroot, url);
+
+ if (*url == '~')
+ {
+ dir = FcConfigHome ();
+ if (dir)
+- file = FcConfigFileExists (dir, url + 1);
++ {
++ FcChar8 *s;
++
++ if (sysroot)
++ s = FcStrBuildFilename (sysroot, dir, NULL);
++ else
++ s = dir;
++ file = FcConfigFileExists (s, url + 1);
++ if (sysroot)
++ FcStrFree (s);
++ }
+ else
+ file = 0;
+ }
+@@ -2314,7 +2333,15 @@ FcConfigFilename (const FcChar8 *url)
+ return NULL;
+ for (p = path; *p; p++)
+ {
+- file = FcConfigFileExists (*p, url);
++ FcChar8 *s;
++
++ if (sysroot)
++ s = FcStrBuildFilename (sysroot, *p, NULL);
++ else
++ s = *p;
++ file = FcConfigFileExists (s, url);
++ if (sysroot)
++ FcStrFree (s);
+ if (file)
+ break;
+ }
+@@ -2323,33 +2350,31 @@ FcConfigFilename (const FcChar8 *url)
+ return file;
+ }
+
++FcChar8 *
++FcConfigFilename (const FcChar8 *url)
++{
++ return FcConfigGetFilename (NULL, url);
++}
++
+ FcChar8 *
+ FcConfigRealFilename (FcConfig *config,
+ const FcChar8 *url)
+ {
+- const FcChar8 *sysroot = FcConfigGetSysRoot (config);
+- FcChar8 *n = FcConfigFilename (url);
+- FcChar8 *nn = NULL;
++ FcChar8 *n = FcConfigGetFilename (config, url);
+
+ if (n)
+ {
+ FcChar8 buf[FC_PATH_MAX];
+ ssize_t len;
+
+- if (sysroot)
+- nn = FcStrBuildFilename (sysroot, n, NULL);
+- else
+- nn = FcStrdup (n);
+- FcStrFree (n);
+-
+- if ((len = FcReadLink (nn, buf, sizeof (buf) - 1)) != -1)
++ if ((len = FcReadLink (n, buf, sizeof (buf) - 1)) != -1)
+ {
+ buf[len] = 0;
+
+ if (!FcStrIsAbsoluteFilename (buf))
+ {
+- FcChar8 *dirname = FcStrDirname (nn);
+- FcStrFree (nn);
++ FcChar8 *dirname = FcStrDirname (n);
++ FcStrFree (n);
+ if (!dirname)
+ return NULL;
+
+@@ -2358,18 +2383,18 @@ FcConfigRealFilename (FcConfig *config,
+ if (!path)
+ return NULL;
+
+- nn = FcStrCanonFilename (path);
++ n = FcStrCanonFilename (path);
+ FcStrFree (path);
+ }
+ else
+ {
+- FcStrFree (nn);
+- nn = FcStrdup (buf);
++ FcStrFree (n);
++ n = FcStrdup (buf);
+ }
+ }
+ }
+
+- return nn;
++ return n;
+ }
+
+ /*
+diff --git a/src/fcxml.c b/src/fcxml.c
+index d9a67f6..a366644 100644
+--- a/src/fcxml.c
++++ b/src/fcxml.c
+@@ -2541,7 +2541,7 @@ FcParseInclude (FcConfigParse *parse)
+ FcChar8 *filename;
+ static FcBool warn_conf = FcFalse, warn_confd = FcFalse;
+
+- filename = FcConfigFilename(s);
++ filename = FcConfigGetFilename(parse->config, s);
+ if (deprecated == FcTrue &&
+ filename != NULL &&
+ userdir != NULL &&
+@@ -3532,7 +3532,9 @@ _FcConfigParse (FcConfig *config,
+ FcStrBuf sbuf;
+ char buf[BUFSIZ];
+ FcBool ret = FcFalse, complain_again = complain;
++ FcStrBuf reason;
+
++ FcStrBufInit (&reason, NULL, 0);
+ #ifdef _WIN32
+ if (!pGetSystemWindowsDirectory)
+ {
+@@ -3549,12 +3551,20 @@ _FcConfigParse (FcConfig *config,
+ }
+ #endif
+
+- filename = FcConfigFilename (name);
++ filename = FcConfigGetFilename (config, name);
+ if (!filename)
++ {
++ FcStrBufString (&reason, (FcChar8 *)"No such file: ");
++ FcStrBufString (&reason, name ? name : (FcChar8 *)"(null)");
+ goto bail0;
++ }
+ realfilename = FcConfigRealFilename (config, name);
+ if (!realfilename)
++ {
++ FcStrBufString (&reason, (FcChar8 *)"No such realfile: ");
++ FcStrBufString (&reason, name ? name : (FcChar8 *)"(null)");
+ goto bail0;
++ }
+ if (FcStrSetMember (config->availConfigFiles, realfilename))
+ {
+ FcStrFree (filename);
+@@ -3582,7 +3592,11 @@ _FcConfigParse (FcConfig *config,
+
+ fd = FcOpen ((char *) realfilename, O_RDONLY);
+ if (fd == -1)
++ {
++ FcStrBufString (&reason, (FcChar8 *)"Unable to open ");
++ FcStrBufString (&reason, realfilename);
+ goto bail1;
++ }
+
+ do {
+ len = read (fd, buf, BUFSIZ);
+@@ -3623,11 +3637,13 @@ bail0:
+ if (!ret && complain_again)
+ {
+ if (name)
+- FcConfigMessage (0, FcSevereError, "Cannot %s config file \"%s\"", load ? "load" : "scan", name);
++ FcConfigMessage (0, FcSevereError, "Cannot %s config file \"%s\": %s", load ? "load" : "scan", name, FcStrBufDoneStatic (&reason));
+ else
+- FcConfigMessage (0, FcSevereError, "Cannot %s default config file", load ? "load" : "scan");
++ FcConfigMessage (0, FcSevereError, "Cannot %s default config file: %s", load ? "load" : "scan", FcStrBufDoneStatic (&reason));
++ FcStrBufDestroy (&reason);
+ return FcFalse;
+ }
++ FcStrBufDestroy (&reason);
+ return ret;
+ }
+
+--
+2.24.1
+
diff --git a/source/x/fontconfig/fontconfig.SlackBuild b/source/x/fontconfig/fontconfig.SlackBuild
index 408dc9f9..45382460 100755
--- a/source/x/fontconfig/fontconfig.SlackBuild
+++ b/source/x/fontconfig/fontconfig.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright 2008, 2009, 2010, 2013, 2017, 2018 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2008, 2009, 2010, 2013, 2017, 2018, 2020 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -87,6 +87,23 @@ zcat $CWD/fontconfig.liberation.diff.gz | patch -p1 --verbose || exit 1
# it out (and possibly follow symlinks, or index ugly bitmapped fonts):
zcat $CWD/fontconfig.font.dir.list.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+# Add some patches from the Fedora SRPM:
+zcat $CWD/fedora-patches/fontconfig-sleep-less.patch.gz | patch -p1 --verbose || exit 1
+#zcat $CWD/fedora-patches/fontconfig-required-freetype-version.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/fedora-patches/fontconfig-score-hint-on-match.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/fedora-patches/fontconfig-fix-1744377.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/fedora-patches/fontconfig-drop-lang-from-pkgkit-format.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/fedora-patches/fontconfig-sysroot.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/fedora-patches/fontconfig-read-latest-cache.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/fedora-patches/fontconfig-mt.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/fedora-patches/fontconfig-fix-test.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/fedora-patches/fontconfig-fix-assertion.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/fedora-patches/fontconfig-fix-dtd.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/fedora-patches/fontconfig-fix-dtd-id.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/fedora-patches/fontconfig-0-timestamp-dir-on-sb.patch.gz | patch -p1 --verbose || exit 1
+
+autoreconf -vif
+
CFLAGS=$SLKCFLAGS \
./configure \
--prefix=/usr \
@@ -99,6 +116,7 @@ CFLAGS=$SLKCFLAGS \
--with-xmldir=/etc/fonts \
--localstatedir=/var \
--enable-static=no \
+ --enable-libxml2 \
--build=$ARCH-slackware-linux || exit 1
make $NUMJOBS || make || exit 1
diff --git a/source/x/fontconfig/fontconfig.url b/source/x/fontconfig/fontconfig.url
new file mode 100644
index 00000000..b5a0de36
--- /dev/null
+++ b/source/x/fontconfig/fontconfig.url
@@ -0,0 +1 @@
+http://fontconfig.org/release
diff --git a/source/x/fontconfig/slack-desc b/source/x/fontconfig/slack-desc
index 26a83258..0d222047 100644
--- a/source/x/fontconfig/slack-desc
+++ b/source/x/fontconfig/slack-desc
@@ -13,7 +13,7 @@ fontconfig: font configuration, customization, and application access.
fontconfig:
fontconfig: Fontconfig is written and maintained by Keith Packard.
fontconfig:
-fontconfig:
+fontconfig: Homepage: https://www.fontconfig.org
fontconfig:
fontconfig:
fontconfig: