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