summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2020-12-01 20:18:01 +0000
committer Eric Hameleers <alien@slackware.com>2020-12-02 08:59:56 +0100
commitca24bdf2171b8756a322c99932f890bd69bcd86c (patch)
treec6c12f115015487c56365781e95395896227e44f
parent153bd14cd07b76eca2248eb2224a5038969c474d (diff)
downloadcurrent-ca24bdf2171b8756a322c99932f890bd69bcd86c.tar.gz
current-ca24bdf2171b8756a322c99932f890bd69bcd86c.tar.xz
Tue Dec 1 20:18:01 UTC 202020201201201801
a/hwdata-0.342-noarch-1.txz: Upgraded. a/pam-1.5.1-x86_64-1.txz: Upgraded. ap/sqlite-3.34.0-x86_64-1.txz: Upgraded. l/libarchive-3.5.0-x86_64-1.txz: Upgraded. x/fontconfig-2.13.92-x86_64-1.txz: Upgraded. I'm pretty sure there was a good reason to switch to 2.13.92 on the devel release path, but I'm not sure the same can be said about 2.13.93. We'll stick with this one for now until there's a stable release or another good reason to bump it. x/xorg-server-1.20.10-x86_64-1.txz: Upgraded. x/xorg-server-xephyr-1.20.10-x86_64-1.txz: Upgraded. x/xorg-server-xnest-1.20.10-x86_64-1.txz: Upgraded. x/xorg-server-xvfb-1.20.10-x86_64-1.txz: Upgraded. x/xorg-server-xwayland-1.20.10-x86_64-1.txz: Upgraded. xap/gnuplot-5.4.1-x86_64-1.txz: Upgraded.
-rw-r--r--ChangeLog.rss29
-rw-r--r--ChangeLog.txt17
-rw-r--r--FILELIST.TXT213
-rwxr-xr-xrecompress.sh14
-rw-r--r--source/a/pam/fedora-patches/pam-1.5.0-redhat-modules.patch74
-rw-r--r--source/a/pam/pam-redhat.url1
-rwxr-xr-xsource/a/pam/pam.SlackBuild7
-rwxr-xr-xsource/ap/sqlite/sqlite.SlackBuild2
-rwxr-xr-xsource/l/libarchive/libarchive.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-sysroot.patch285
-rwxr-xr-xsource/x/fontconfig/fontconfig.SlackBuild28
-rw-r--r--source/x/fontconfig/fontconfig.dejavu.diff19
-rw-r--r--source/x/fontconfig/fontconfig.font.dir.list.diff32
-rw-r--r--source/x/fontconfig/fontconfig.liberation.diff16
-rw-r--r--source/x/fontconfig/fontconfig.noto.diff35
-rw-r--r--source/x/x11/build/xorg-server2
27 files changed, 3197 insertions, 186 deletions
diff --git a/ChangeLog.rss b/ChangeLog.rss
index 08e84e78..d26f9dab 100644
--- a/ChangeLog.rss
+++ b/ChangeLog.rss
@@ -11,10 +11,35 @@
<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, 30 Nov 2020 20:03:36 GMT</pubDate>
- <lastBuildDate>Tue, 1 Dec 2020 07:59:44 GMT</lastBuildDate>
+ <pubDate>Tue, 1 Dec 2020 20:18:01 GMT</pubDate>
+ <lastBuildDate>Wed, 2 Dec 2020 07:59:48 GMT</lastBuildDate>
<generator>maintain_current_git.sh v 1.12</generator>
<item>
+ <title>Tue, 1 Dec 2020 20:18:01 GMT</title>
+ <pubDate>Tue, 1 Dec 2020 20:18:01 GMT</pubDate>
+ <link>https://git.slackware.nl/current/tag/?h=20201201201801</link>
+ <guid isPermaLink="false">20201201201801</guid>
+ <description>
+ <![CDATA[<pre>
+a/hwdata-0.342-noarch-1.txz: Upgraded.
+a/pam-1.5.1-x86_64-1.txz: Upgraded.
+ap/sqlite-3.34.0-x86_64-1.txz: Upgraded.
+l/libarchive-3.5.0-x86_64-1.txz: Upgraded.
+x/fontconfig-2.13.92-x86_64-1.txz: Upgraded.
+ I'm pretty sure there was a good reason to switch to 2.13.92 on the devel
+ release path, but I'm not sure the same can be said about 2.13.93. We'll
+ stick with this one for now until there's a stable release or another good
+ reason to bump it.
+x/xorg-server-1.20.10-x86_64-1.txz: Upgraded.
+x/xorg-server-xephyr-1.20.10-x86_64-1.txz: Upgraded.
+x/xorg-server-xnest-1.20.10-x86_64-1.txz: Upgraded.
+x/xorg-server-xvfb-1.20.10-x86_64-1.txz: Upgraded.
+x/xorg-server-xwayland-1.20.10-x86_64-1.txz: Upgraded.
+xap/gnuplot-5.4.1-x86_64-1.txz: Upgraded.
+ </pre>]]>
+ </description>
+ </item>
+ <item>
<title>Mon, 30 Nov 2020 20:03:36 GMT</title>
<pubDate>Mon, 30 Nov 2020 20:03:36 GMT</pubDate>
<link>https://git.slackware.nl/current/tag/?h=20201130200336</link>
diff --git a/ChangeLog.txt b/ChangeLog.txt
index 21225c6a..17459594 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -1,3 +1,20 @@
+Tue Dec 1 20:18:01 UTC 2020
+a/hwdata-0.342-noarch-1.txz: Upgraded.
+a/pam-1.5.1-x86_64-1.txz: Upgraded.
+ap/sqlite-3.34.0-x86_64-1.txz: Upgraded.
+l/libarchive-3.5.0-x86_64-1.txz: Upgraded.
+x/fontconfig-2.13.92-x86_64-1.txz: Upgraded.
+ I'm pretty sure there was a good reason to switch to 2.13.92 on the devel
+ release path, but I'm not sure the same can be said about 2.13.93. We'll
+ stick with this one for now until there's a stable release or another good
+ reason to bump it.
+x/xorg-server-1.20.10-x86_64-1.txz: Upgraded.
+x/xorg-server-xephyr-1.20.10-x86_64-1.txz: Upgraded.
+x/xorg-server-xnest-1.20.10-x86_64-1.txz: Upgraded.
+x/xorg-server-xvfb-1.20.10-x86_64-1.txz: Upgraded.
+x/xorg-server-xwayland-1.20.10-x86_64-1.txz: Upgraded.
+xap/gnuplot-5.4.1-x86_64-1.txz: Upgraded.
++--------------------------+
Mon Nov 30 20:03:36 UTC 2020
a/kernel-firmware-20201130_7455a36-noarch-1.txz: Upgraded.
ap/sudo-1.9.4-x86_64-1.txz: Upgraded.
diff --git a/FILELIST.TXT b/FILELIST.TXT
index 1c0cfd49..76d40272 100644
--- a/FILELIST.TXT
+++ b/FILELIST.TXT
@@ -1,20 +1,20 @@
-Mon Nov 30 20:06:37 UTC 2020
+Tue Dec 1 20:20:44 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-11-30 20:03 .
+drwxr-xr-x 12 root root 4096 2020-12-01 20:18 .
-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 1396100 2020-11-29 20:55 ./CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2020-11-29 20:55 ./CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 1396084 2020-11-30 20:06 ./CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2020-11-30 20:06 ./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 1092770 2020-11-30 20:03 ./ChangeLog.txt
+-rw-r--r-- 1 root root 1093591 2020-12-01 20:18 ./ChangeLog.txt
drwxr-xr-x 3 root root 4096 2013-03-20 22:17 ./EFI
drwxr-xr-x 2 root root 4096 2020-11-25 02:03 ./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-11-25 02:03 ./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 1792356 2020-11-29 20:55 ./FILELIST.TXT
+-rw-r--r-- 1 root root 1792339 2020-11-30 20:06 ./FILELIST.TXT
-rw-r--r-- 1 root root 1572 2012-08-29 18:27 ./GPG-KEY
--rw-r--r-- 1 root root 773107 2020-11-30 20:06 ./PACKAGES.TXT
+-rw-r--r-- 1 root root 773112 2020-12-01 20:20 ./PACKAGES.TXT
-rw-r--r-- 1 root root 8564 2016-06-28 21:33 ./README.TXT
-rw-r--r-- 1 root root 3629 2020-11-25 01:01 ./README.initrd
-rw-r--r-- 1 root root 34412 2017-12-01 17:44 ./README_CRYPT.TXT
@@ -791,13 +791,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-11-30 20:06 ./slackware64
--rw-r--r-- 1 root root 304302 2020-11-30 20:06 ./slackware64/CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2020-11-30 20:06 ./slackware64/CHECKSUMS.md5.asc
--rw-r--r-- 1 root root 378618 2020-11-30 20:05 ./slackware64/FILE_LIST
--rw-r--r-- 1 root root 3896712 2020-11-30 20:05 ./slackware64/MANIFEST.bz2
+drwxr-xr-x 18 root root 4096 2020-12-01 20:20 ./slackware64
+-rw-r--r-- 1 root root 304317 2020-12-01 20:20 ./slackware64/CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2020-12-01 20:20 ./slackware64/CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 378633 2020-12-01 20:19 ./slackware64/FILE_LIST
+-rw-r--r-- 1 root root 3900582 2020-12-01 20:19 ./slackware64/MANIFEST.bz2
lrwxrwxrwx 1 root root 15 2009-08-23 23:34 ./slackware64/PACKAGES.TXT -> ../PACKAGES.TXT
-drwxr-xr-x 2 root root 24576 2020-11-30 20:05 ./slackware64/a
+drwxr-xr-x 2 root root 24576 2020-12-01 20:19 ./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
@@ -933,9 +933,9 @@ drwxr-xr-x 2 root root 24576 2020-11-30 20:05 ./slackware64/a
-rw-r--r-- 1 root root 441 2019-11-07 22:20 ./slackware64/a/hostname-3.23-x86_64-1.txt
-rw-r--r-- 1 root root 9036 2019-11-07 22:20 ./slackware64/a/hostname-3.23-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-11-07 22:20 ./slackware64/a/hostname-3.23-x86_64-1.txz.asc
--rw-r--r-- 1 root root 316 2020-11-05 19:43 ./slackware64/a/hwdata-0.341-noarch-1.txt
--rw-r--r-- 1 root root 1423460 2020-11-05 19:43 ./slackware64/a/hwdata-0.341-noarch-1.txz
--rw-r--r-- 1 root root 163 2020-11-05 19:43 ./slackware64/a/hwdata-0.341-noarch-1.txz.asc
+-rw-r--r-- 1 root root 316 2020-12-01 19:23 ./slackware64/a/hwdata-0.342-noarch-1.txt
+-rw-r--r-- 1 root root 1427612 2020-12-01 19:23 ./slackware64/a/hwdata-0.342-noarch-1.txz
+-rw-r--r-- 1 root root 163 2020-12-01 19:23 ./slackware64/a/hwdata-0.342-noarch-1.txz.asc
-rw-r--r-- 1 root root 465 2019-03-01 19:41 ./slackware64/a/infozip-6.0-x86_64-5.txt
-rw-r--r-- 1 root root 410772 2019-03-01 19:41 ./slackware64/a/infozip-6.0-x86_64-5.txz
-rw-r--r-- 1 root root 163 2019-03-01 19:41 ./slackware64/a/infozip-6.0-x86_64-5.txz.asc
@@ -1051,9 +1051,9 @@ drwxr-xr-x 2 root root 24576 2020-11-30 20:05 ./slackware64/a
-rw-r--r-- 1 root root 417 2019-08-06 04:40 ./slackware64/a/os-prober-1.77-x86_64-3.txt
-rw-r--r-- 1 root root 16832 2019-08-06 04:40 ./slackware64/a/os-prober-1.77-x86_64-3.txz
-rw-r--r-- 1 root root 163 2019-08-06 04:40 ./slackware64/a/os-prober-1.77-x86_64-3.txz.asc
--rw-r--r-- 1 root root 422 2020-10-20 18:37 ./slackware64/a/pam-1.4.0-x86_64-2.txt
--rw-r--r-- 1 root root 482624 2020-10-20 18:37 ./slackware64/a/pam-1.4.0-x86_64-2.txz
--rw-r--r-- 1 root root 163 2020-10-20 18:37 ./slackware64/a/pam-1.4.0-x86_64-2.txz.asc
+-rw-r--r-- 1 root root 422 2020-12-01 19:59 ./slackware64/a/pam-1.5.1-x86_64-1.txt
+-rw-r--r-- 1 root root 478368 2020-12-01 19:59 ./slackware64/a/pam-1.5.1-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-12-01 19:59 ./slackware64/a/pam-1.5.1-x86_64-1.txz.asc
-rw-r--r-- 1 root root 563 2018-04-13 13:11 ./slackware64/a/patch-2.7.6-x86_64-3.txt
-rw-r--r-- 1 root root 117972 2018-04-13 13:11 ./slackware64/a/patch-2.7.6-x86_64-3.txz
-rw-r--r-- 1 root root 163 2018-04-13 13:11 ./slackware64/a/patch-2.7.6-x86_64-3.txz.asc
@@ -1172,7 +1172,7 @@ drwxr-xr-x 2 root root 24576 2020-11-30 20:05 ./slackware64/a
-rw-r--r-- 1 root root 540 2018-04-13 13:15 ./slackware64/a/zoo-2.10_22-x86_64-2.txt
-rw-r--r-- 1 root root 56156 2018-04-13 13:15 ./slackware64/a/zoo-2.10_22-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 13:15 ./slackware64/a/zoo-2.10_22-x86_64-2.txz.asc
-drwxr-xr-x 2 root root 20480 2020-11-30 20:05 ./slackware64/ap
+drwxr-xr-x 2 root root 20480 2020-12-01 20:19 ./slackware64/ap
-rw-r--r-- 1 root root 291 2018-04-13 13:17 ./slackware64/ap/a2ps-4.14-x86_64-7.txt
-rw-r--r-- 1 root root 694880 2018-04-13 13:17 ./slackware64/ap/a2ps-4.14-x86_64-7.txz
-rw-r--r-- 1 root root 163 2018-04-13 13:17 ./slackware64/ap/a2ps-4.14-x86_64-7.txz.asc
@@ -1387,9 +1387,9 @@ drwxr-xr-x 2 root root 20480 2020-11-30 20:05 ./slackware64/ap
-rw-r--r-- 1 root root 293 2018-06-27 00:12 ./slackware64/ap/sox-14.4.2-x86_64-6.txt
-rw-r--r-- 1 root root 386332 2018-06-27 00:12 ./slackware64/ap/sox-14.4.2-x86_64-6.txz
-rw-r--r-- 1 root root 163 2018-06-27 00:12 ./slackware64/ap/sox-14.4.2-x86_64-6.txz.asc
--rw-r--r-- 1 root root 483 2020-10-30 08:43 ./slackware64/ap/sqlite-3.33.0-x86_64-2.txt
--rw-r--r-- 1 root root 934104 2020-10-30 08:43 ./slackware64/ap/sqlite-3.33.0-x86_64-2.txz
--rw-r--r-- 1 root root 163 2020-10-30 08:43 ./slackware64/ap/sqlite-3.33.0-x86_64-2.txz.asc
+-rw-r--r-- 1 root root 483 2020-12-01 19:33 ./slackware64/ap/sqlite-3.34.0-x86_64-1.txt
+-rw-r--r-- 1 root root 939812 2020-12-01 19:33 ./slackware64/ap/sqlite-3.34.0-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-12-01 19:33 ./slackware64/ap/sqlite-3.34.0-x86_64-1.txz.asc
-rw-r--r-- 1 root root 584 2020-06-23 21:03 ./slackware64/ap/squashfs-tools-4.4-x86_64-2.txt
-rw-r--r-- 1 root root 136696 2020-06-23 21:03 ./slackware64/ap/squashfs-tools-4.4-x86_64-2.txz
-rw-r--r-- 1 root root 163 2020-06-23 21:03 ./slackware64/ap/squashfs-tools-4.4-x86_64-2.txz.asc
@@ -2519,7 +2519,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 73728 2020-11-30 20:05 ./slackware64/l
+drwxr-xr-x 2 root root 73728 2020-12-01 20:19 ./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
@@ -2930,9 +2930,9 @@ drwxr-xr-x 2 root root 73728 2020-11-30 20:05 ./slackware64/l
-rw-r--r-- 1 root root 426 2018-04-13 14:54 ./slackware64/l/libao-1.2.2-x86_64-2.txt
-rw-r--r-- 1 root root 57720 2018-04-13 14:54 ./slackware64/l/libao-1.2.2-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 14:54 ./slackware64/l/libao-1.2.2-x86_64-2.txz.asc
--rw-r--r-- 1 root root 402 2020-06-23 21:11 ./slackware64/l/libarchive-3.4.3-x86_64-2.txt
--rw-r--r-- 1 root root 500392 2020-06-23 21:11 ./slackware64/l/libarchive-3.4.3-x86_64-2.txz
--rw-r--r-- 1 root root 163 2020-06-23 21:11 ./slackware64/l/libarchive-3.4.3-x86_64-2.txz.asc
+-rw-r--r-- 1 root root 402 2020-12-01 19:24 ./slackware64/l/libarchive-3.5.0-x86_64-1.txt
+-rw-r--r-- 1 root root 502740 2020-12-01 19:24 ./slackware64/l/libarchive-3.5.0-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-12-01 19:24 ./slackware64/l/libarchive-3.5.0-x86_64-1.txz.asc
-rw-r--r-- 1 root root 369 2020-10-20 18:38 ./slackware64/l/libasyncns-0.8-x86_64-3.txt
-rw-r--r-- 1 root root 22304 2020-10-20 18:38 ./slackware64/l/libasyncns-0.8-x86_64-3.txz
-rw-r--r-- 1 root root 163 2020-10-20 18:38 ./slackware64/l/libasyncns-0.8-x86_64-3.txz.asc
@@ -4073,7 +4073,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 61440 2020-11-29 20:54 ./slackware64/x
+drwxr-xr-x 2 root root 61440 2020-12-01 20:19 ./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
@@ -4212,9 +4212,9 @@ drwxr-xr-x 2 root root 61440 2020-11-29 20:54 ./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 385 2020-11-29 20:46 ./slackware64/x/fontconfig-2.13.93-x86_64-1.txt
--rw-r--r-- 1 root root 320824 2020-11-29 20:46 ./slackware64/x/fontconfig-2.13.93-x86_64-1.txz
--rw-r--r-- 1 root root 163 2020-11-29 20:46 ./slackware64/x/fontconfig-2.13.93-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-10-21 21:39 ./slackware64/x/fonttosfnt-1.2.0-x86_64-1.txt
-rw-r--r-- 1 root root 33480 2020-10-21 21:39 ./slackware64/x/fonttosfnt-1.2.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2020-10-21 21:39 ./slackware64/x/fonttosfnt-1.2.0-x86_64-1.txz.asc
@@ -4880,21 +4880,21 @@ drwxr-xr-x 2 root root 61440 2020-11-29 20:54 ./slackware64/x
-rw-r--r-- 1 root root 345 2018-04-13 06:10 ./slackware64/x/xorg-docs-1.7.1-noarch-2.txt
-rw-r--r-- 1 root root 274568 2018-04-13 06:10 ./slackware64/x/xorg-docs-1.7.1-noarch-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 06:10 ./slackware64/x/xorg-docs-1.7.1-noarch-2.txz.asc
--rw-r--r-- 1 root root 671 2020-09-11 18:49 ./slackware64/x/xorg-server-1.20.9-x86_64-3.txt
--rw-r--r-- 1 root root 1755644 2020-09-11 18:49 ./slackware64/x/xorg-server-1.20.9-x86_64-3.txz
--rw-r--r-- 1 root root 163 2020-09-11 18:49 ./slackware64/x/xorg-server-1.20.9-x86_64-3.txz.asc
--rw-r--r-- 1 root root 370 2020-09-11 18:49 ./slackware64/x/xorg-server-xephyr-1.20.9-x86_64-3.txt
--rw-r--r-- 1 root root 859772 2020-09-11 18:49 ./slackware64/x/xorg-server-xephyr-1.20.9-x86_64-3.txz
--rw-r--r-- 1 root root 163 2020-09-11 18:49 ./slackware64/x/xorg-server-xephyr-1.20.9-x86_64-3.txz.asc
--rw-r--r-- 1 root root 592 2020-09-11 18:49 ./slackware64/x/xorg-server-xnest-1.20.9-x86_64-3.txt
--rw-r--r-- 1 root root 597708 2020-09-11 18:49 ./slackware64/x/xorg-server-xnest-1.20.9-x86_64-3.txz
--rw-r--r-- 1 root root 163 2020-09-11 18:49 ./slackware64/x/xorg-server-xnest-1.20.9-x86_64-3.txz.asc
--rw-r--r-- 1 root root 689 2020-09-11 18:49 ./slackware64/x/xorg-server-xvfb-1.20.9-x86_64-3.txt
--rw-r--r-- 1 root root 721980 2020-09-11 18:49 ./slackware64/x/xorg-server-xvfb-1.20.9-x86_64-3.txz
--rw-r--r-- 1 root root 163 2020-09-11 18:49 ./slackware64/x/xorg-server-xvfb-1.20.9-x86_64-3.txz.asc
--rw-r--r-- 1 root root 816 2020-09-11 18:49 ./slackware64/x/xorg-server-xwayland-1.20.9-x86_64-3.txt
--rw-r--r-- 1 root root 813708 2020-09-11 18:49 ./slackware64/x/xorg-server-xwayland-1.20.9-x86_64-3.txz
--rw-r--r-- 1 root root 163 2020-09-11 18:49 ./slackware64/x/xorg-server-xwayland-1.20.9-x86_64-3.txz.asc
+-rw-r--r-- 1 root root 671 2020-12-01 19:35 ./slackware64/x/xorg-server-1.20.10-x86_64-1.txt
+-rw-r--r-- 1 root root 1756180 2020-12-01 19:35 ./slackware64/x/xorg-server-1.20.10-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-12-01 19:35 ./slackware64/x/xorg-server-1.20.10-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 370 2020-12-01 19:35 ./slackware64/x/xorg-server-xephyr-1.20.10-x86_64-1.txt
+-rw-r--r-- 1 root root 859312 2020-12-01 19:35 ./slackware64/x/xorg-server-xephyr-1.20.10-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-12-01 19:35 ./slackware64/x/xorg-server-xephyr-1.20.10-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 592 2020-12-01 19:35 ./slackware64/x/xorg-server-xnest-1.20.10-x86_64-1.txt
+-rw-r--r-- 1 root root 597376 2020-12-01 19:35 ./slackware64/x/xorg-server-xnest-1.20.10-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-12-01 19:35 ./slackware64/x/xorg-server-xnest-1.20.10-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 689 2020-12-01 19:35 ./slackware64/x/xorg-server-xvfb-1.20.10-x86_64-1.txt
+-rw-r--r-- 1 root root 722240 2020-12-01 19:35 ./slackware64/x/xorg-server-xvfb-1.20.10-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-12-01 19:35 ./slackware64/x/xorg-server-xvfb-1.20.10-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 816 2020-12-01 19:35 ./slackware64/x/xorg-server-xwayland-1.20.10-x86_64-1.txt
+-rw-r--r-- 1 root root 813984 2020-12-01 19:35 ./slackware64/x/xorg-server-xwayland-1.20.10-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-12-01 19:35 ./slackware64/x/xorg-server-xwayland-1.20.10-x86_64-1.txz.asc
-rw-r--r-- 1 root root 669 2018-04-13 06:10 ./slackware64/x/xorg-sgml-doctools-1.11-x86_64-3.txt
-rw-r--r-- 1 root root 24032 2018-04-13 06:10 ./slackware64/x/xorg-sgml-doctools-1.11-x86_64-3.txz
-rw-r--r-- 1 root root 163 2018-04-13 06:10 ./slackware64/x/xorg-sgml-doctools-1.11-x86_64-3.txz.asc
@@ -4955,7 +4955,7 @@ drwxr-xr-x 2 root root 61440 2020-11-29 20:54 ./slackware64/x
-rw-r--r-- 1 root root 213 2018-04-13 06:10 ./slackware64/x/xwud-1.0.5-x86_64-2.txt
-rw-r--r-- 1 root root 25288 2018-04-13 06:10 ./slackware64/x/xwud-1.0.5-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 06:10 ./slackware64/x/xwud-1.0.5-x86_64-2.txz.asc
-drwxr-xr-x 2 root root 12288 2020-11-29 20:18 ./slackware64/xap
+drwxr-xr-x 2 root root 12288 2020-12-01 20:19 ./slackware64/xap
-rw-r--r-- 1 root root 625 2020-04-05 20:17 ./slackware64/xap/MPlayer-20200103-x86_64-2.txt
-rw-r--r-- 1 root root 2733304 2020-04-05 20:17 ./slackware64/xap/MPlayer-20200103-x86_64-2.txz
-rw-r--r-- 1 root root 163 2020-04-05 20:17 ./slackware64/xap/MPlayer-20200103-x86_64-2.txz.asc
@@ -5007,9 +5007,9 @@ drwxr-xr-x 2 root root 12288 2020-11-29 20:18 ./slackware64/xap
-rw-r--r-- 1 root root 336 2020-05-31 18:24 ./slackware64/xap/gnuchess-6.2.7-x86_64-1.txt
-rw-r--r-- 1 root root 1691024 2020-05-31 18:24 ./slackware64/xap/gnuchess-6.2.7-x86_64-1.txz
-rw-r--r-- 1 root root 163 2020-05-31 18:24 ./slackware64/xap/gnuchess-6.2.7-x86_64-1.txz.asc
--rw-r--r-- 1 root root 644 2020-07-17 18:24 ./slackware64/xap/gnuplot-5.4.0-x86_64-1.txt
--rw-r--r-- 1 root root 1539932 2020-07-17 18:24 ./slackware64/xap/gnuplot-5.4.0-x86_64-1.txz
--rw-r--r-- 1 root root 163 2020-07-17 18:24 ./slackware64/xap/gnuplot-5.4.0-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 644 2020-12-01 19:22 ./slackware64/xap/gnuplot-5.4.1-x86_64-1.txt
+-rw-r--r-- 1 root root 1541700 2020-12-01 19:22 ./slackware64/xap/gnuplot-5.4.1-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2020-12-01 19:22 ./slackware64/xap/gnuplot-5.4.1-x86_64-1.txz.asc
-rw-r--r-- 1 root root 377 2020-01-21 17:43 ./slackware64/xap/gparted-1.1.0-x86_64-1.txt
-rw-r--r-- 1 root root 862784 2020-01-21 17:43 ./slackware64/xap/gparted-1.1.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2020-01-21 17:43 ./slackware64/xap/gparted-1.1.0-x86_64-1.txz.asc
@@ -5201,13 +5201,13 @@ 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-11-30 20:06 ./source
--rw-r--r-- 1 root root 502351 2020-11-30 20:06 ./source/CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2020-11-30 20:06 ./source/CHECKSUMS.md5.asc
--rw-r--r-- 1 root root 708380 2020-11-30 20:06 ./source/FILE_LIST
--rw-r--r-- 1 root root 22249855 2020-11-30 20:06 ./source/MANIFEST.bz2
+drwxr-xr-x 19 root root 4096 2020-12-01 20:20 ./source
+-rw-r--r-- 1 root root 503615 2020-12-01 20:20 ./source/CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2020-12-01 20:20 ./source/CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 709806 2020-12-01 20:20 ./source/FILE_LIST
+-rw-r--r-- 1 root root 22238404 2020-12-01 20:20 ./source/MANIFEST.bz2
-rw-r--r-- 1 root root 1314 2006-10-02 04:40 ./source/README.TXT
-drwxr-xr-x 119 root root 4096 2020-11-27 19:24 ./source/a
+drwxr-xr-x 119 root root 4096 2020-12-01 19:58 ./source/a
-rw-r--r-- 1 root root 1034 2019-05-04 17:56 ./source/a/FTBFSlog
drwxr-xr-x 2 root root 4096 2018-06-24 18:43 ./source/a/aaa_base
-rw-r--r-- 1 root root 11115 2018-06-24 18:43 ./source/a/aaa_base/_aaa_base.tar.gz
@@ -5596,8 +5596,8 @@ drwxr-xr-x 2 root root 4096 2019-11-07 22:20 ./source/a/hostname
-rw-r--r-- 1 root root 50 2019-08-26 18:12 ./source/a/hostname/hostname.url
-rw-r--r-- 1 root root 13672 2019-11-07 11:46 ./source/a/hostname/hostname_3.23.tar.gz
-rw-r--r-- 1 root root 897 2018-02-27 06:13 ./source/a/hostname/slack-desc
-drwxr-xr-x 2 root root 4096 2020-11-05 18:46 ./source/a/hwdata
--rw-r--r-- 1 root root 1404172 2020-11-03 09:13 ./source/a/hwdata/hwdata-0.341.tar.lz
+drwxr-xr-x 2 root root 4096 2020-12-01 19:23 ./source/a/hwdata
+-rw-r--r-- 1 root root 1408205 2020-12-01 08:27 ./source/a/hwdata/hwdata-0.342.tar.lz
-rwxr-xr-x 1 root root 4007 2019-09-29 23:48 ./source/a/hwdata/hwdata.SlackBuild
-rw-r--r-- 1 root root 802 2018-02-27 06:13 ./source/a/hwdata/slack-desc
drwxr-xr-x 4 root root 4096 2019-03-01 19:25 ./source/a/infozip
@@ -5891,11 +5891,11 @@ drwxr-xr-x 2 root root 4096 2019-09-29 23:48 ./source/a/os-prober
-rw-r--r-- 1 root root 338 2013-08-30 20:22 ./source/a/os-prober/os-prober.reiserfs.diff.gz
-rw-r--r-- 1 root root 26660 2018-12-23 19:13 ./source/a/os-prober/os-prober_1.77.tar.xz
-rw-r--r-- 1 root root 874 2018-02-27 06:13 ./source/a/os-prober/slack-desc
-drwxr-xr-x 4 root root 4096 2020-10-20 18:31 ./source/a/pam
--rw-r--r-- 1 root root 988908 2020-06-08 10:49 ./source/a/pam/Linux-PAM-1.4.0.tar.xz
--rw-r--r-- 1 root root 801 2020-06-08 10:49 ./source/a/pam/Linux-PAM-1.4.0.tar.xz.asc
+drwxr-xr-x 4 root root 4096 2020-12-01 19:30 ./source/a/pam
+-rw-r--r-- 1 root root 972964 2020-11-25 18:28 ./source/a/pam/Linux-PAM-1.5.1.tar.xz
+-rw-r--r-- 1 root root 801 2020-11-25 18:28 ./source/a/pam/Linux-PAM-1.5.1.tar.xz.asc
-rw-r--r-- 1 root root 252 2014-07-26 06:55 ./source/a/pam/doinst.sh.gz
-drwxr-xr-x 2 root root 4096 2020-06-13 19:12 ./source/a/pam/fedora-patches
+drwxr-xr-x 2 root root 4096 2020-11-11 19:58 ./source/a/pam/fedora-patches
-rw-r--r-- 1 root root 487 2019-02-02 06:05 ./source/a/pam/fedora-patches/pam-1.1.3-nouserenv.patch.gz
-rw-r--r-- 1 root root 534 2019-02-02 06:05 ./source/a/pam/fedora-patches/pam-1.1.6-limits-user.patch.gz
-rw-r--r-- 1 root root 541 2019-02-02 06:05 ./source/a/pam/fedora-patches/pam-1.1.8-audit-user-mgmt.patch.gz
@@ -5915,10 +5915,12 @@ drwxr-xr-x 2 root root 4096 2020-06-13 19:12 ./source/a/pam/fedora-patche
-rw-r--r-- 1 root root 698 2019-02-02 06:05 ./source/a/pam/fedora-patches/pam-1.3.1-unix-remove-obsolete-_unix_read_password-prototype.patch.gz
-rw-r--r-- 1 root root 4944 2019-02-02 06:05 ./source/a/pam/fedora-patches/pam-1.3.1-unix-yescrypt.patch.gz
-rw-r--r-- 1 root root 390 2020-06-13 19:12 ./source/a/pam/fedora-patches/pam-1.4.0-redhat-modules.patch.gz
--rw-rw-r-- 1 root root 44588 2018-12-04 08:15 ./source/a/pam/pam-redhat-1.0.0.tar.lz
--rwxr-xr-x 1 root root 8511 2020-10-20 18:31 ./source/a/pam/pam.SlackBuild
+-rw-r--r-- 1 root root 857 2020-11-11 19:58 ./source/a/pam/fedora-patches/pam-1.5.0-redhat-modules.patch.gz
+-rw-r--r-- 1 root root 36626 2020-12-01 19:27 ./source/a/pam/pam-redhat-1.1.4.tar.lz
+-rw-r--r-- 1 root root 29 2020-12-01 19:30 ./source/a/pam/pam-redhat.url
+-rwxr-xr-x 1 root root 8604 2020-12-01 19:29 ./source/a/pam/pam.SlackBuild
-rw-r--r-- 1 root root 106 2019-07-16 18:05 ./source/a/pam/pam.url
-drwxr-xr-x 2 root root 4096 2020-06-13 19:16 ./source/a/pam/patches
+drwxr-xr-x 2 root root 4096 2020-12-01 19:29 ./source/a/pam/patches
-rw-r--r-- 1 root root 386 2020-01-02 20:41 ./source/a/pam/patches/pam.etc.environment.better.comments.diff.gz
-rw-r--r-- 1 root root 873 2019-07-16 20:25 ./source/a/pam/slack-desc
drwxr-xr-x 2 root root 4096 2019-09-29 23:48 ./source/a/patch
@@ -6771,11 +6773,11 @@ drwxr-xr-x 2 root root 4096 2019-09-29 23:48 ./source/ap/sox
-rw-r--r-- 1 root root 744 2018-06-26 22:00 ./source/ap/sox/slack-desc
-rw-r--r-- 1 root root 763840 2015-02-22 21:04 ./source/ap/sox/sox-14.4.2.tar.xz
-rwxr-xr-x 1 root root 4156 2019-09-29 23:48 ./source/ap/sox/sox.SlackBuild
-drwxr-xr-x 2 root root 4096 2020-10-30 08:35 ./source/ap/sqlite
+drwxr-xr-x 2 root root 4096 2020-12-01 19:33 ./source/ap/sqlite
-rw-r--r-- 1 root root 1684 2008-08-01 05:31 ./source/ap/sqlite/COPYRIGHT.gz
-rw-r--r-- 1 root root 937 2018-11-29 19:15 ./source/ap/sqlite/slack-desc
--rw-r--r-- 1 root root 6964581 2020-08-15 00:19 ./source/ap/sqlite/sqlite-src-3330000.tar.lz
--rwxr-xr-x 1 root root 6251 2020-10-30 08:35 ./source/ap/sqlite/sqlite.SlackBuild
+-rw-r--r-- 1 root root 6981043 2020-12-01 19:19 ./source/ap/sqlite/sqlite-src-3340000.tar.lz
+-rwxr-xr-x 1 root root 6251 2020-12-01 19:32 ./source/ap/sqlite/sqlite.SlackBuild
drwxr-xr-x 2 root root 4096 2020-07-09 18:37 ./source/ap/squashfs-tools
-rwxr-xr-x 1 root root 1939 2020-07-09 18:37 ./source/ap/squashfs-tools/get-squashfs-tools.sh
-rw-r--r-- 1 root root 1078 2018-09-13 21:00 ./source/ap/squashfs-tools/slack-desc
@@ -9286,10 +9288,10 @@ drwxr-xr-x 2 root root 4096 2019-09-29 23:48 ./source/l/libao
-rw-r--r-- 1 root root 79396 2017-07-01 22:55 ./source/l/libao/libao-1.2.2.tar.xz
-rwxr-xr-x 1 root root 3311 2019-09-29 23:48 ./source/l/libao/libao.SlackBuild
-rw-r--r-- 1 root root 879 2018-02-27 06:12 ./source/l/libao/slack-desc
-drwxr-xr-x 2 root root 4096 2020-05-22 17:35 ./source/l/libarchive
--rw-r--r-- 1 root root 4811508 2020-05-20 01:36 ./source/l/libarchive/libarchive-3.4.3.tar.xz
--rw-r--r-- 1 root root 833 2020-05-20 01:36 ./source/l/libarchive/libarchive-3.4.3.tar.xz.asc
--rwxr-xr-x 1 root root 3666 2020-06-23 21:11 ./source/l/libarchive/libarchive.SlackBuild
+drwxr-xr-x 2 root root 4096 2020-12-01 19:23 ./source/l/libarchive
+-rw-r--r-- 1 root root 4852596 2020-12-01 10:09 ./source/l/libarchive/libarchive-3.5.0.tar.xz
+-rw-r--r-- 1 root root 833 2020-12-01 10:09 ./source/l/libarchive/libarchive-3.5.0.tar.xz.asc
+-rwxr-xr-x 1 root root 3666 2020-12-01 19:23 ./source/l/libarchive/libarchive.SlackBuild
-rw-r--r-- 1 root root 41 2019-06-17 02:47 ./source/l/libarchive/libarchive.url
-rw-r--r-- 1 root root 856 2018-02-27 06:12 ./source/l/libarchive/slack-desc
drwxr-xr-x 2 root root 4096 2020-10-20 18:31 ./source/l/libasyncns
@@ -11653,16 +11655,27 @@ 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 3 root root 4096 2020-11-29 20:45 ./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
-drwxr-xr-x 2 root root 4096 2020-11-29 19:51 ./source/x/fontconfig/fedora-patches
+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 1418288 2020-11-28 04:04 ./source/x/fontconfig/fontconfig-2.13.93.tar.xz
--rwxr-xr-x 1 root root 6882 2020-11-29 20:52 ./source/x/fontconfig/fontconfig.SlackBuild
--rw-r--r-- 1 root root 338 2020-11-29 20:41 ./source/x/fontconfig/fontconfig.dejavu.diff.gz
--rw-r--r-- 1 root root 560 2020-11-29 19:44 ./source/x/fontconfig/fontconfig.font.dir.list.diff.gz
--rw-r--r-- 1 root root 342 2020-11-29 20:42 ./source/x/fontconfig/fontconfig.liberation.diff.gz
--rw-r--r-- 1 root root 341 2020-11-29 20:43 ./source/x/fontconfig/fontconfig.noto.diff.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 843 2020-05-19 02:09 ./source/x/fontconfig/slack-desc
@@ -12238,7 +12251,7 @@ drwxr-xr-x 2 root root 12288 2020-05-18 17:49 ./source/x/x11/build
-rw-r--r-- 1 root root 2 2019-03-04 22:09 ./source/x/x11/build/xmore
-rw-r--r-- 1 root root 2 2018-04-13 02:44 ./source/x/x11/build/xorg-cf-files
-rw-r--r-- 1 root root 2 2018-04-13 02:44 ./source/x/x11/build/xorg-docs
--rw-r--r-- 1 root root 2 2020-09-11 18:39 ./source/x/x11/build/xorg-server
+-rw-r--r-- 1 root root 2 2020-12-01 19:34 ./source/x/x11/build/xorg-server
-rw-r--r-- 1 root root 2 2018-04-13 02:44 ./source/x/x11/build/xorg-sgml-doctools
-rw-r--r-- 1 root root 2 2019-06-20 17:41 ./source/x/x11/build/xorgproto
-rw-r--r-- 1 root root 2 2018-04-13 02:44 ./source/x/x11/build/xpr
@@ -12417,21 +12430,21 @@ drwxr-xr-x 10 root root 4096 2019-10-28 19:02 ./source/x/x11/post-install
-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-bh-lucidatypewriter-75dpi.post-install
-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-bh-ttf.post-install
-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-bh-type1.post-install
--rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-bitstream-100dpi.post-install
--rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-bitstream-75dpi.post-install
--rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-bitstream-speedo.post-install
--rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-bitstream-type1.post-install
--rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-cronyx-cyrillic.post-install
--rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-cursor-misc.post-install
--rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-daewoo-misc.post-install
--rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-dec-misc.post-install
--rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-ibm-type1.post-install
--rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-isas-misc.post-install
--rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-jis-misc.post-install
--rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-micro-misc.post-install
--rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-misc-cyrillic.post-install
--rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-misc-ethiopic.post-install
--rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-misc-meltho.post-install
+-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-bitstream-100dpi.post-install
+-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-bitstream-75dpi.post-install
+-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-bitstream-speedo.post-install
+-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-bitstream-type1.post-install
+-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-cronyx-cyrillic.post-install
+-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-cursor-misc.post-install
+-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-daewoo-misc.post-install
+-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-dec-misc.post-install
+-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-ibm-type1.post-install
+-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-isas-misc.post-install
+-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-jis-misc.post-install
+-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-micro-misc.post-install
+-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-misc-cyrillic.post-install
+-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-misc-ethiopic.post-install
+-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-misc-meltho.post-install
-rw-r--r-- 1 root root 664 2008-02-01 03:22 ./source/x/x11/post-install/font-misc-misc.post-install
-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-mutt-misc.post-install
-rw-r--r-- 1 root root 275 2007-02-13 21:50 ./source/x/x11/post-install/font-schumacher-misc.post-install
@@ -13024,8 +13037,8 @@ drwxr-xr-x 2 root root 4096 2020-02-23 17:53 ./source/x/x11/src/xcb
-rw-r--r-- 1 root root 266716 2014-02-19 11:40 ./source/x/x11/src/xcb/xcb-util-wm-0.4.1.tar.xz
-rw-r--r-- 1 root root 232228 2012-03-23 22:46 ./source/x/x11/src/xcb/xpyb-1.3.1.tar.xz
-rw-r--r-- 1 root root 47 2018-03-23 18:19 ./source/x/x11/src/xf86-input-wacom.url
-drwxr-xr-x 2 root root 4096 2020-08-25 17:30 ./source/x/x11/src/xserver
--rw-r--r-- 1 root root 4970924 2020-08-25 15:45 ./source/x/x11/src/xserver/xorg-server-1.20.9.tar.xz
+drwxr-xr-x 2 root root 4096 2020-12-01 19:33 ./source/x/x11/src/xserver
+-rw-r--r-- 1 root root 4983864 2020-12-01 16:40 ./source/x/x11/src/xserver/xorg-server-1.20.10.tar.xz
-rwxr-xr-x 1 root root 15219 2020-02-19 20:37 ./source/x/x11/x11.SlackBuild
drwxr-xr-x 2 root root 4096 2019-09-29 23:48 ./source/x/xcm
-rw-r--r-- 1 root root 744 2018-11-11 20:29 ./source/x/xcm/slack-desc
@@ -13173,8 +13186,8 @@ drwxr-xr-x 2 root root 4096 2020-05-31 18:23 ./source/xap/gnuchess
-rw-r--r-- 1 root root 792 2018-02-27 06:13 ./source/xap/gnuchess/slack-desc
-rw-r--r-- 1 root root 2731760 2016-08-01 03:55 ./source/xap/gnuchess/xboard-4.9.1.tar.xz
-rw-r--r-- 1 root root 269 2015-03-20 18:35 ./source/xap/gnuchess/xboard.conf.diff.gz
-drwxr-xr-x 2 root root 4096 2020-07-17 18:21 ./source/xap/gnuplot
--rw-r--r-- 1 root root 4536670 2020-07-16 17:15 ./source/xap/gnuplot/gnuplot-5.4.0.tar.lz
+drwxr-xr-x 2 root root 4096 2020-12-01 19:21 ./source/xap/gnuplot
+-rw-r--r-- 1 root root 4538380 2020-12-01 00:27 ./source/xap/gnuplot/gnuplot-5.4.1.tar.lz
-rwxr-xr-x 1 root root 5047 2020-07-17 18:23 ./source/xap/gnuplot/gnuplot.SlackBuild
-rw-r--r-- 1 root root 24 2018-06-05 04:25 ./source/xap/gnuplot/gnuplot.url
-rw-r--r-- 1 root root 1099 2018-02-27 06:13 ./source/xap/gnuplot/slack-desc
diff --git a/recompress.sh b/recompress.sh
index bd23670f..b37dceed 100755
--- a/recompress.sh
+++ b/recompress.sh
@@ -191,6 +191,7 @@ gzip ./source/a/pam/fedora-patches/pam-1.3.1-unix-crypt_checksalt.patch
gzip ./source/a/pam/fedora-patches/pam-1.3.1-unix-fix_checksalt_syslog.patch
gzip ./source/a/pam/fedora-patches/pam-1.4.0-redhat-modules.patch
gzip ./source/a/pam/fedora-patches/pam-1.3.1-noflex.patch
+gzip ./source/a/pam/fedora-patches/pam-1.5.0-redhat-modules.patch
gzip ./source/a/pam/fedora-patches/pam-1.3.1-unix-bcrypt_b.patch
gzip ./source/a/pam/fedora-patches/pam-1.3.1-unix-yescrypt.patch
gzip ./source/a/pam/fedora-patches/pam-1.3.1-coverity.patch
@@ -1208,8 +1209,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/fontconfig.noto.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/pam/fedora-patches/pam-1.5.0-redhat-modules.patch b/source/a/pam/fedora-patches/pam-1.5.0-redhat-modules.patch
new file mode 100644
index 00000000..82010bba
--- /dev/null
+++ b/source/a/pam/fedora-patches/pam-1.5.0-redhat-modules.patch
@@ -0,0 +1,74 @@
+--- ./doc/sag/pam_faillock.xml.orig 2020-11-10 09:46:13.000000000 -0600
++++ ./doc/sag/pam_faillock.xml 2020-11-11 13:54:28.033031520 -0600
+@@ -36,3 +36,41 @@
+ href="../../modules/pam_faillock/pam_faillock.8.xml" xpointer='xpointer(//refsect1[@id = "pam_faillock-author"]/*)'/>
+ </section>
+ </section>
++<?xml version='1.0' encoding='UTF-8'?>
++<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
++ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
++<section id='sag-pam_faillock'>
++ <title>pam_faillock - temporarily locking access based on failed authentication attempts during an interval</title>
++ <cmdsynopsis>
++ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
++ href="../../modules/pam_faillock/pam_faillock.8.xml" xpointer='xpointer(//cmdsynopsis[@id = "pam_faillock-cmdsynopsisauth"]/*)'/>
++ </cmdsynopsis>
++ <cmdsynopsis>
++ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
++ href="../../modules/pam_faillock/pam_faillock.8.xml" xpointer='xpointer(//cmdsynopsis[@id = "pam_faillock-cmdsynopsisacct"]/*)'/>
++ </cmdsynopsis>
++ <section id='sag-pam_faillock-description'>
++ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
++ href="../../modules/pam_faillock/pam_faillock.8.xml" xpointer='xpointer(//refsect1[@id = "pam_faillock-description"]/*)'/>
++ </section>
++ <section id='sag-pam_faillock-options'>
++ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
++ href="../../modules/pam_faillock/pam_faillock.8.xml" xpointer='xpointer(//refsect1[@id = "pam_faillock-options"]/*)'/>
++ </section>
++ <section id='sag-pam_faillock-types'>
++ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
++ href="../../modules/pam_faillock/pam_faillock.8.xml" xpointer='xpointer(//refsect1[@id = "pam_faillock-types"]/*)'/>
++ </section>
++ <section id='sag-pam_faillock-return_values'>
++ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
++ href="../../modules/pam_faillock/pam_faillock.8.xml" xpointer='xpointer(//refsect1[@id = "pam_faillock-return_values"]/*)'/>
++ </section>
++ <section id='sag-pam_faillock-examples'>
++ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
++ href="../../modules/pam_faillock/pam_faillock.8.xml" xpointer='xpointer(//refsect1[@id = "pam_faillock-examples"]/*)'/>
++ </section>
++ <section id='sag-pam_faillock-author'>
++ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
++ href="../../modules/pam_faillock/pam_faillock.8.xml" xpointer='xpointer(//refsect1[@id = "pam_faillock-author"]/*)'/>
++ </section>
++</section>
+--- ./configure.ac.orig 2020-11-11 13:54:28.033031520 -0600
++++ ./configure.ac 2020-11-11 13:56:58.260034880 -0600
+@@ -639,6 +639,8 @@
+ po/Makefile.in \
+ Make.xml.rules \
+ modules/Makefile \
++ modules/pam_chroot/Makefile modules/pam_console/Makefile \
++ modules/pam_postgresok/Makefile \
+ modules/pam_access/Makefile \
+ modules/pam_debug/Makefile modules/pam_deny/Makefile \
+ modules/pam_echo/Makefile modules/pam_env/Makefile \
+--- ./modules/Makefile.am.orig 2020-11-11 13:54:28.033031520 -0600
++++ ./modules/Makefile.am 2020-11-11 13:58:24.059036799 -0600
+@@ -44,6 +44,8 @@
+
+ SUBDIRS := \
+ pam_access \
++ pam_chroot \
++ pam_console \
+ pam_debug \
+ pam_deny \
+ pam_echo \
+@@ -67,6 +69,7 @@
+ $(MAYBE_PAM_NAMESPACE) \
+ pam_nologin \
+ pam_permit \
++ pam_postgresok \
+ pam_pwhistory \
+ $(MAYBE_PAM_RHOSTS) \
+ pam_rootok \
diff --git a/source/a/pam/pam-redhat.url b/source/a/pam/pam-redhat.url
new file mode 100644
index 00000000..f83042c0
--- /dev/null
+++ b/source/a/pam/pam-redhat.url
@@ -0,0 +1 @@
+https://pagure.io/pam-redhat
diff --git a/source/a/pam/pam.SlackBuild b/source/a/pam/pam.SlackBuild
index 9577c304..a3499c1c 100755
--- a/source/a/pam/pam.SlackBuild
+++ b/source/a/pam/pam.SlackBuild
@@ -27,7 +27,7 @@ SRCNAM=Linux-PAM
PKGNAM=pam
PAMRHVER=${PAMRHVER:-$(echo pam-redhat-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
VERSION=${VERSION:-$(echo $SRCNAM-*.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
@@ -98,13 +98,14 @@ for file in pam-redhat-$PAMRHVER/* ; do
done
# NOTE: Linux-PAM-1.4.0 already ships with most of these applied:
#zcat $CWD/fedora-patches/pam-1.3.1-redhat-modules.patch.gz | patch -p1 --verbose || exit 1
-zcat $CWD/fedora-patches/pam-1.4.0-redhat-modules.patch.gz | patch -p1 --verbose || exit 1
+#zcat $CWD/fedora-patches/pam-1.4.0-redhat-modules.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/fedora-patches/pam-1.5.0-redhat-modules.patch.gz | patch -p1 --verbose || exit 1
#zcat $CWD/fedora-patches/pam-1.3.1-noflex.patch.gz | patch -p1 --verbose || exit 1
#zcat $CWD/fedora-patches/pam-1.1.3-nouserenv.patch.gz | patch -p1 --verbose || exit 1
zcat $CWD/fedora-patches/pam-1.1.6-limits-user.patch.gz | patch -p1 --verbose || exit 1
#zcat $CWD/fedora-patches/pam-1.1.8-full-relro.patch.gz | patch -p1 --verbose || exit 1
#zcat $CWD/fedora-patches/pam-1.3.0-pwhistory-helper.patch.gz | patch -p1 --verbose || exit 1
-zcat $CWD/fedora-patches/pam-1.1.8-audit-user-mgmt.patch.gz | patch -p1 --verbose || exit 1
+#zcat $CWD/fedora-patches/pam-1.1.8-audit-user-mgmt.patch.gz | patch -p1 --verbose || exit 1
zcat $CWD/fedora-patches/pam-1.3.0-unix-nomsg.patch.gz | patch -p1 --verbose || exit 1
#zcat $CWD/fedora-patches/pam-1.3.1-coverity.patch.gz | patch -p1 --verbose || exit 1
#zcat $CWD/fedora-patches/pam-1.3.1-unix-remove-obsolete-_unix_read_password-prototype.patch.gz | patch -p1 --verbose || exit 1
diff --git a/source/ap/sqlite/sqlite.SlackBuild b/source/ap/sqlite/sqlite.SlackBuild
index 781f7d40..6e4df6f0 100755
--- a/source/ap/sqlite/sqlite.SlackBuild
+++ b/source/ap/sqlite/sqlite.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=sqlite
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
# First, convert the .zip file if needed:
if ls *.zip 1> /dev/null 2> /dev/null ; then
diff --git a/source/l/libarchive/libarchive.SlackBuild b/source/l/libarchive/libarchive.SlackBuild
index 5efbc40a..3e11fa64 100755
--- a/source/l/libarchive/libarchive.SlackBuild
+++ b/source/l/libarchive/libarchive.SlackBuild
@@ -27,7 +27,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=libarchive
VERSION=${VERSION:-$(echo $PKGNAM-*.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/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-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 4948ed02..45382460 100755
--- a/source/x/fontconfig/fontconfig.SlackBuild
+++ b/source/x/fontconfig/fontconfig.SlackBuild
@@ -26,9 +26,6 @@ PKGNAM=fontconfig
VERSION=${VERSION:-$(echo fontconfig-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
-# Set this to liberation, dejavu, or noto:
-PREFERRED_FONT=${PREFERRED_FONT:-liberation}
-
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -80,14 +77,11 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \+
-# Set preferred system font:
-if [ ! -r $CWD/fontconfig.$PREFERRED_FONT.diff.gz ]; then
- echo "ERROR: $CWD/fontconfig.$PREFERRED_FONT.diff.gz patch not found."
- exit 1
-else
- echo "Using preferred font patch: $CWD/fontconfig.$PREFERRED_FONT.diff.gz"
- zcat $CWD/fontconfig.$PREFERRED_FONT.diff.gz | patch -p1 --verbose || exit 1
-fi
+# Prefer DejaVu fonts in 60-latin.conf:
+#zcat $CWD/fontconfig.dejavu.diff.gz | patch -p1 --verbose || exit 1
+
+# Prefer Liberation fonts in 60-latin.conf (these work better with hinting):
+zcat $CWD/fontconfig.liberation.diff.gz | patch -p1 --verbose || exit 1
# Hardcode the default font search path rather than having fontconfig figure
# it out (and possibly follow symlinks, or index ugly bitmapped fonts):
@@ -95,6 +89,18 @@ zcat $CWD/fontconfig.font.dir.list.diff.gz | patch -p1 --verbose --backup --suff
# 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
diff --git a/source/x/fontconfig/fontconfig.dejavu.diff b/source/x/fontconfig/fontconfig.dejavu.diff
index 10c16475..a5d4d7bd 100644
--- a/source/x/fontconfig/fontconfig.dejavu.diff
+++ b/source/x/fontconfig/fontconfig.dejavu.diff
@@ -1,31 +1,34 @@
---- ./conf.d/60-latin.conf.orig 2020-11-27 19:56:42.000000000 -0600
-+++ ./conf.d/60-latin.conf 2020-11-29 14:41:20.291033785 -0600
-@@ -6,6 +6,9 @@
+--- ./conf.d/60-latin.conf.orig 2016-07-10 21:41:05.000000000 -0500
++++ ./conf.d/60-latin.conf 2017-04-30 14:35:21.579089043 -0500
+@@ -4,8 +4,9 @@
+ <alias>
<family>serif</family>
<prefer>
+- <family>Bitstream Vera Serif</family>
<family>DejaVu Serif</family>
+ <family>Liberation Serif</family>
-+ <family>Noto Serif</family>
+ <family>Bitstream Vera Serif</family>
<family>Times New Roman</family>
<family>Thorndale AMT</family>
<family>Luxi Serif</family>
-@@ -18,6 +21,9 @@
+@@ -17,8 +18,9 @@
+ <alias>
<family>sans-serif</family>
<prefer>
+- <family>Bitstream Vera Sans</family>
<family>DejaVu Sans</family>
+ <family>Liberation Sans</family>
-+ <family>Noto Sans</family>
+ <family>Bitstream Vera Sans</family>
<family>Verdana</family>
<family>Arial</family>
<family>Albany AMT</family>
-@@ -34,6 +40,9 @@
+@@ -34,8 +36,9 @@
+ <alias>
<family>monospace</family>
<prefer>
+- <family>Bitstream Vera Sans Mono</family>
<family>DejaVu Sans Mono</family>
+ <family>Liberation Mono</family>
-+ <family>Noto Sans Mono</family>
+ <family>Bitstream Vera Sans Mono</family>
<family>Inconsolata</family>
<family>Andale Mono</family>
diff --git a/source/x/fontconfig/fontconfig.font.dir.list.diff b/source/x/fontconfig/fontconfig.font.dir.list.diff
index 143d2db5..63be22f5 100644
--- a/source/x/fontconfig/fontconfig.font.dir.list.diff
+++ b/source/x/fontconfig/fontconfig.font.dir.list.diff
@@ -1,11 +1,11 @@
---- ./fonts.conf.in.orig 2020-11-29 13:41:05.824118087 -0600
-+++ ./fonts.conf.in 2020-11-29 13:44:20.417122440 -0600
-@@ -23,12 +23,27 @@
+--- ./fonts.conf.in.orig 2012-07-23 21:01:32.000000000 -0500
++++ ./fonts.conf.in 2013-02-28 22:32:44.758585955 -0600
+@@ -22,13 +22,29 @@
-->
<!-- Font directory list -->
-
-- @FC_DEFAULT_FONTS@
+- <dir>@FC_DEFAULT_FONTS@</dir>
- @FC_FONTPATH@
+ <dir>/usr/share/fonts/OTF</dir>
+ <dir>/usr/share/fonts/TTF</dir>
@@ -16,18 +16,20 @@
<dir prefix="xdg">fonts</dir>
<!-- the following element will be removed in the future -->
<dir>~/.fonts</dir>
+
+<!-- Commented out font directories:
-+ These are not indexed by default, as fontconfig then seems
-+ to prefer bitmapped fonts in some cases...
-+ <dir>/usr/share/fonts/100dpi</dir>
-+ <dir>/usr/share/fonts/75dpi</dir>
-+ The top-level font directory should also not be indexed, as that
-+ will include the directories of bitmapped fonts:
-+ <dir>@FC_DEFAULT_FONTS@</dir>
-+ The empty line below is produced by the FC_FONTPATH macro.
-+ Moving it here so it doesn't become a problem in the future:
-+ @FC_FONTPATH@
++ These are not indexed by default, as fontconfig then seems
++ to prefer bitmapped fonts in some cases...
++ <dir>/usr/share/fonts/100dpi</dir>
++ <dir>/usr/share/fonts/75dpi</dir>
++ The top-level font directory should also not be indexed, as that
++ will include the directories of bitmapped fonts:
++ <dir>@FC_DEFAULT_FONTS@</dir>
++ The empty line below is produced by the FC_FONTPATH macro.
++ Moving it here so it doesn't become a problem in the future:
++ @FC_FONTPATH@
+-->
-
++
<!--
Accept deprecated 'mono' alias, replacing it with 'monospace'
+ -->
diff --git a/source/x/fontconfig/fontconfig.liberation.diff b/source/x/fontconfig/fontconfig.liberation.diff
index ecb70718..b9c9daeb 100644
--- a/source/x/fontconfig/fontconfig.liberation.diff
+++ b/source/x/fontconfig/fontconfig.liberation.diff
@@ -1,34 +1,34 @@
---- ./conf.d/60-latin.conf.orig 2020-11-27 19:56:42.000000000 -0600
-+++ ./conf.d/60-latin.conf 2020-11-29 14:42:35.363035464 -0600
-@@ -5,7 +5,10 @@
+--- ./conf.d/60-latin.conf.orig 2016-07-10 21:41:05.000000000 -0500
++++ ./conf.d/60-latin.conf 2017-04-30 14:18:52.426996569 -0500
+@@ -4,8 +4,9 @@
<alias>
<family>serif</family>
<prefer>
+- <family>Bitstream Vera Serif</family>
+ <family>Liberation Serif</family>
<family>DejaVu Serif</family>
-+ <family>Noto Serif</family>
+ <family>Bitstream Vera Serif</family>
<family>Times New Roman</family>
<family>Thorndale AMT</family>
<family>Luxi Serif</family>
-@@ -17,7 +20,10 @@
+@@ -17,8 +18,9 @@
<alias>
<family>sans-serif</family>
<prefer>
+- <family>Bitstream Vera Sans</family>
+ <family>Liberation Sans</family>
<family>DejaVu Sans</family>
-+ <family>Noto Sans</family>
+ <family>Bitstream Vera Sans</family>
<family>Verdana</family>
<family>Arial</family>
<family>Albany AMT</family>
-@@ -33,7 +39,10 @@
+@@ -34,8 +36,9 @@
<alias>
<family>monospace</family>
<prefer>
+- <family>Bitstream Vera Sans Mono</family>
+ <family>Liberation Mono</family>
<family>DejaVu Sans Mono</family>
-+ <family>Noto Sans Mono</family>
+ <family>Bitstream Vera Sans Mono</family>
<family>Inconsolata</family>
<family>Andale Mono</family>
diff --git a/source/x/fontconfig/fontconfig.noto.diff b/source/x/fontconfig/fontconfig.noto.diff
deleted file mode 100644
index ea8bf8ba..00000000
--- a/source/x/fontconfig/fontconfig.noto.diff
+++ /dev/null
@@ -1,35 +0,0 @@
---- ./conf.d/60-latin.conf.orig 2020-11-27 19:56:42.000000000 -0600
-+++ ./conf.d/60-latin.conf 2020-11-29 14:43:33.291036760 -0600
-@@ -5,7 +5,10 @@
- <alias>
- <family>serif</family>
- <prefer>
-+ <family>Noto Serif</family>
-+ <family>Liberation Serif</family>
- <family>DejaVu Serif</family>
-+ <family>Bitstream Vera Serif</family>
- <family>Times New Roman</family>
- <family>Thorndale AMT</family>
- <family>Luxi Serif</family>
-@@ -17,7 +20,10 @@
- <alias>
- <family>sans-serif</family>
- <prefer>
-+ <family>Noto Sans</family>
-+ <family>Liberation Sans</family>
- <family>DejaVu Sans</family>
-+ <family>Bitstream Vera Sans</family>
- <family>Verdana</family>
- <family>Arial</family>
- <family>Albany AMT</family>
-@@ -33,7 +39,10 @@
- <alias>
- <family>monospace</family>
- <prefer>
-+ <family>Noto Sans Mono</family>
-+ <family>Liberation Mono</family>
- <family>DejaVu Sans Mono</family>
-+ <family>Bitstream Vera Sans Mono</family>
- <family>Inconsolata</family>
- <family>Andale Mono</family>
- <family>Courier New</family>
diff --git a/source/x/x11/build/xorg-server b/source/x/x11/build/xorg-server
index 00750edc..d00491fd 100644
--- a/source/x/x11/build/xorg-server
+++ b/source/x/x11/build/xorg-server
@@ -1 +1 @@
-3
+1