Created attachment 189716 [details] Proposed patch for x11-fonts/fontconfig (since 431796 revision) Patch to update x11-fonts/fontconfig port from 2.12.1 to 2.12.6 version. Look following link for changes: https://cgit.freedesktop.org/fontconfig/tree/README?id=2.12.6 ABI: https://abi-laboratory.pro/tracker/timeline/fontconfig/ - Adapt files/patch-src_fclang.c - Adapt pkg-plist The build was tested on FreeBSD 10.3 amd64.
Created attachment 189717 [details] Proposed patch for x11-fonts/fontconfig-reference (since 420579 revision) Changes for x11-fonts/fontconfig-reference port: - Adapt pkg-plist
Created attachment 189718 [details] The testcase for FcLangNormalize function Attached some testcase for FcLangNormalize function, which may be used to test a patch in files/patch-src_fclang.c file. % cc `pkg-config --cflags --libs fontconfig` -o testcase testcase.c % ./testcase sk_SK.UTF-8 sr_Cyrl_RS.UTF-8 For patched fontconfig: Result of FcLangNormalize for 'sk_SK.UTF-8' is 'sk' Result of FcLangNormalize for 'sr_Cyrl_RS.UTF-8' is 'sr' For unpatched fontconfig: Result of FcLangNormalize for 'sk_SK.UTF-8' is 'sk' Fontconfig warning: ignoring sr_Cyrl_RS.UTF-8: not a valid region tag No result of FcLangNormalize for 'sr_Cyrl_RS.UTF-8' For available locales on FreeBSD 10.3 amd64: % locale -a | xargs ./testcase Result of FcLangNormalize for 'C' is 'en' Result of FcLangNormalize for 'POSIX' is 'en' Result of FcLangNormalize for 'af_ZA.ISO8859-1' is 'af' Result of FcLangNormalize for 'af_ZA.ISO8859-15' is 'af' Result of FcLangNormalize for 'af_ZA.UTF-8' is 'af' Result of FcLangNormalize for 'am_ET.UTF-8' is 'am' Result of FcLangNormalize for 'be_BY.CP1131' is 'be' Result of FcLangNormalize for 'be_BY.CP1251' is 'be' Result of FcLangNormalize for 'be_BY.ISO8859-5' is 'be' Result of FcLangNormalize for 'be_BY.UTF-8' is 'be' Result of FcLangNormalize for 'bg_BG.CP1251' is 'bg' Result of FcLangNormalize for 'bg_BG.UTF-8' is 'bg' Result of FcLangNormalize for 'ca_AD.ISO8859-1' is 'ca' Result of FcLangNormalize for 'ca_AD.ISO8859-15' is 'ca' Result of FcLangNormalize for 'ca_AD.UTF-8' is 'ca' Result of FcLangNormalize for 'ca_ES.ISO8859-1' is 'ca' Result of FcLangNormalize for 'ca_ES.ISO8859-15' is 'ca' Result of FcLangNormalize for 'ca_ES.UTF-8' is 'ca' Result of FcLangNormalize for 'ca_FR.ISO8859-1' is 'ca' Result of FcLangNormalize for 'ca_FR.ISO8859-15' is 'ca' Result of FcLangNormalize for 'ca_FR.UTF-8' is 'ca' Result of FcLangNormalize for 'ca_IT.ISO8859-1' is 'ca' Result of FcLangNormalize for 'ca_IT.ISO8859-15' is 'ca' Result of FcLangNormalize for 'ca_IT.UTF-8' is 'ca' Result of FcLangNormalize for 'cs_CZ.ISO8859-2' is 'cs' Result of FcLangNormalize for 'cs_CZ.UTF-8' is 'cs' Result of FcLangNormalize for 'da_DK.ISO8859-1' is 'da' Result of FcLangNormalize for 'da_DK.ISO8859-15' is 'da' Result of FcLangNormalize for 'da_DK.UTF-8' is 'da' Result of FcLangNormalize for 'de_AT.ISO8859-1' is 'de' Result of FcLangNormalize for 'de_AT.ISO8859-15' is 'de' Result of FcLangNormalize for 'de_AT.UTF-8' is 'de' Result of FcLangNormalize for 'de_CH.ISO8859-1' is 'de' Result of FcLangNormalize for 'de_CH.ISO8859-15' is 'de' Result of FcLangNormalize for 'de_CH.UTF-8' is 'de' Result of FcLangNormalize for 'de_DE.ISO8859-1' is 'de' Result of FcLangNormalize for 'de_DE.ISO8859-15' is 'de' Result of FcLangNormalize for 'de_DE.UTF-8' is 'de' Result of FcLangNormalize for 'el_GR.ISO8859-7' is 'el' Result of FcLangNormalize for 'el_GR.UTF-8' is 'el' Result of FcLangNormalize for 'en_AU.ISO8859-1' is 'en' Result of FcLangNormalize for 'en_AU.ISO8859-15' is 'en' Result of FcLangNormalize for 'en_AU.US-ASCII' is 'en' Result of FcLangNormalize for 'en_AU.UTF-8' is 'en' Result of FcLangNormalize for 'en_CA.ISO8859-1' is 'en' Result of FcLangNormalize for 'en_CA.ISO8859-15' is 'en' Result of FcLangNormalize for 'en_CA.US-ASCII' is 'en' Result of FcLangNormalize for 'en_CA.UTF-8' is 'en' Result of FcLangNormalize for 'en_GB.ISO8859-1' is 'en' Result of FcLangNormalize for 'en_GB.ISO8859-15' is 'en' Result of FcLangNormalize for 'en_GB.US-ASCII' is 'en' Result of FcLangNormalize for 'en_GB.UTF-8' is 'en' Result of FcLangNormalize for 'en_IE.UTF-8' is 'en' Result of FcLangNormalize for 'en_NZ.ISO8859-1' is 'en' Result of FcLangNormalize for 'en_NZ.ISO8859-15' is 'en' Result of FcLangNormalize for 'en_NZ.US-ASCII' is 'en' Result of FcLangNormalize for 'en_NZ.UTF-8' is 'en' Result of FcLangNormalize for 'en_US.ISO8859-1' is 'en' Result of FcLangNormalize for 'en_US.ISO8859-15' is 'en' Result of FcLangNormalize for 'en_US.US-ASCII' is 'en' Result of FcLangNormalize for 'en_US.UTF-8' is 'en' Result of FcLangNormalize for 'es_ES.ISO8859-1' is 'es' Result of FcLangNormalize for 'es_ES.ISO8859-15' is 'es' Result of FcLangNormalize for 'es_ES.UTF-8' is 'es' Result of FcLangNormalize for 'et_EE.ISO8859-15' is 'et' Result of FcLangNormalize for 'et_EE.UTF-8' is 'et' Result of FcLangNormalize for 'eu_ES.ISO8859-1' is 'eu' Result of FcLangNormalize for 'eu_ES.ISO8859-15' is 'eu' Result of FcLangNormalize for 'eu_ES.UTF-8' is 'eu' Result of FcLangNormalize for 'fi_FI.ISO8859-1' is 'fi' Result of FcLangNormalize for 'fi_FI.ISO8859-15' is 'fi' Result of FcLangNormalize for 'fi_FI.UTF-8' is 'fi' Result of FcLangNormalize for 'fr_BE.ISO8859-1' is 'fr' Result of FcLangNormalize for 'fr_BE.ISO8859-15' is 'fr' Result of FcLangNormalize for 'fr_BE.UTF-8' is 'fr' Result of FcLangNormalize for 'fr_CA.ISO8859-1' is 'fr' Result of FcLangNormalize for 'fr_CA.ISO8859-15' is 'fr' Result of FcLangNormalize for 'fr_CA.UTF-8' is 'fr' Result of FcLangNormalize for 'fr_CH.ISO8859-1' is 'fr' Result of FcLangNormalize for 'fr_CH.ISO8859-15' is 'fr' Result of FcLangNormalize for 'fr_CH.UTF-8' is 'fr' Result of FcLangNormalize for 'fr_FR.ISO8859-1' is 'fr' Result of FcLangNormalize for 'fr_FR.ISO8859-15' is 'fr' Result of FcLangNormalize for 'fr_FR.UTF-8' is 'fr' Result of FcLangNormalize for 'he_IL.UTF-8' is 'he' Result of FcLangNormalize for 'hi_IN.ISCII-DEV' is 'hi' Result of FcLangNormalize for 'hr_HR.ISO8859-2' is 'hr' Result of FcLangNormalize for 'hr_HR.UTF-8' is 'hr' Result of FcLangNormalize for 'hu_HU.ISO8859-2' is 'hu' Result of FcLangNormalize for 'hu_HU.UTF-8' is 'hu' Result of FcLangNormalize for 'hy_AM.ARMSCII-8' is 'hy' Result of FcLangNormalize for 'hy_AM.UTF-8' is 'hy' Result of FcLangNormalize for 'is_IS.ISO8859-1' is 'is' Result of FcLangNormalize for 'is_IS.ISO8859-15' is 'is' Result of FcLangNormalize for 'is_IS.UTF-8' is 'is' Result of FcLangNormalize for 'it_CH.ISO8859-1' is 'it' Result of FcLangNormalize for 'it_CH.ISO8859-15' is 'it' Result of FcLangNormalize for 'it_CH.UTF-8' is 'it' Result of FcLangNormalize for 'it_IT.ISO8859-1' is 'it' Result of FcLangNormalize for 'it_IT.ISO8859-15' is 'it' Result of FcLangNormalize for 'it_IT.UTF-8' is 'it' Result of FcLangNormalize for 'ja_JP.SJIS' is 'ja' Result of FcLangNormalize for 'ja_JP.UTF-8' is 'ja' Result of FcLangNormalize for 'ja_JP.eucJP' is 'ja' Result of FcLangNormalize for 'kk_KZ.PT154' is 'kk' Result of FcLangNormalize for 'kk_KZ.UTF-8' is 'kk' Result of FcLangNormalize for 'ko_KR.CP949' is 'ko' Result of FcLangNormalize for 'ko_KR.UTF-8' is 'ko' Result of FcLangNormalize for 'ko_KR.eucKR' is 'ko' Result of FcLangNormalize for 'la_LN.ISO8859-1' is 'la' Result of FcLangNormalize for 'la_LN.ISO8859-13' is 'la' Result of FcLangNormalize for 'la_LN.ISO8859-15' is 'la' Result of FcLangNormalize for 'la_LN.ISO8859-2' is 'la' Result of FcLangNormalize for 'la_LN.ISO8859-4' is 'la' Result of FcLangNormalize for 'la_LN.US-ASCII' is 'la' Result of FcLangNormalize for 'lt_LT.ISO8859-13' is 'lt' Result of FcLangNormalize for 'lt_LT.ISO8859-4' is 'lt' Result of FcLangNormalize for 'lt_LT.UTF-8' is 'lt' Result of FcLangNormalize for 'lv_LV.ISO8859-13' is 'lv' Result of FcLangNormalize for 'lv_LV.UTF-8' is 'lv' Result of FcLangNormalize for 'mn_MN.UTF-8' is 'mn-MN' Result of FcLangNormalize for 'nb_NO.ISO8859-1' is 'nb' Result of FcLangNormalize for 'nb_NO.ISO8859-15' is 'nb' Result of FcLangNormalize for 'nb_NO.UTF-8' is 'nb' Result of FcLangNormalize for 'nl_BE.ISO8859-1' is 'nl' Result of FcLangNormalize for 'nl_BE.ISO8859-15' is 'nl' Result of FcLangNormalize for 'nl_BE.UTF-8' is 'nl' Result of FcLangNormalize for 'nl_NL.ISO8859-1' is 'nl' Result of FcLangNormalize for 'nl_NL.ISO8859-15' is 'nl' Result of FcLangNormalize for 'nl_NL.UTF-8' is 'nl' Result of FcLangNormalize for 'nn_NO.ISO8859-1' is 'nn' Result of FcLangNormalize for 'nn_NO.ISO8859-15' is 'nn' Result of FcLangNormalize for 'nn_NO.UTF-8' is 'nn' Result of FcLangNormalize for 'no_NO.ISO8859-1' is 'no' Result of FcLangNormalize for 'no_NO.ISO8859-15' is 'no' Result of FcLangNormalize for 'no_NO.UTF-8' is 'no' Result of FcLangNormalize for 'pl_PL.ISO8859-2' is 'pl' Result of FcLangNormalize for 'pl_PL.UTF-8' is 'pl' Result of FcLangNormalize for 'pt_BR.ISO8859-1' is 'pt' Result of FcLangNormalize for 'pt_BR.UTF-8' is 'pt' Result of FcLangNormalize for 'pt_PT.ISO8859-1' is 'pt' Result of FcLangNormalize for 'pt_PT.ISO8859-15' is 'pt' Result of FcLangNormalize for 'pt_PT.UTF-8' is 'pt' Result of FcLangNormalize for 'ro_RO.ISO8859-2' is 'ro' Result of FcLangNormalize for 'ro_RO.UTF-8' is 'ro' Result of FcLangNormalize for 'ru_RU.CP1251' is 'ru' Result of FcLangNormalize for 'ru_RU.CP866' is 'ru' Result of FcLangNormalize for 'ru_RU.ISO8859-5' is 'ru' Result of FcLangNormalize for 'ru_RU.KOI8-R' is 'ru' Result of FcLangNormalize for 'ru_RU.UTF-8' is 'ru' Result of FcLangNormalize for 'sk_SK.ISO8859-2' is 'sk' Result of FcLangNormalize for 'sk_SK.UTF-8' is 'sk' Result of FcLangNormalize for 'sl_SI.ISO8859-2' is 'sl' Result of FcLangNormalize for 'sl_SI.UTF-8' is 'sl' Result of FcLangNormalize for 'sr_YU.ISO8859-2' is 'sr' Result of FcLangNormalize for 'sr_YU.ISO8859-5' is 'sr' Result of FcLangNormalize for 'sr_YU.UTF-8' is 'sr' Result of FcLangNormalize for 'sv_SE.ISO8859-1' is 'sv' Result of FcLangNormalize for 'sv_SE.ISO8859-15' is 'sv' Result of FcLangNormalize for 'sv_SE.UTF-8' is 'sv' Result of FcLangNormalize for 'tr_TR.ISO8859-9' is 'tr' Result of FcLangNormalize for 'tr_TR.UTF-8' is 'tr' Result of FcLangNormalize for 'uk_UA.CP1251' is 'uk' Result of FcLangNormalize for 'uk_UA.ISO8859-5' is 'uk' Result of FcLangNormalize for 'uk_UA.KOI8-U' is 'uk' Result of FcLangNormalize for 'uk_UA.UTF-8' is 'uk' Result of FcLangNormalize for 'zh_CN.GB18030' is 'zh-CN' Result of FcLangNormalize for 'zh_CN.GB2312' is 'zh-CN' Result of FcLangNormalize for 'zh_CN.GBK' is 'zh-CN' Result of FcLangNormalize for 'zh_CN.UTF-8' is 'zh-CN' Result of FcLangNormalize for 'zh_CN.eucCN' is 'zh-CN' Result of FcLangNormalize for 'zh_HK.Big5HKSCS' is 'zh-HK' Result of FcLangNormalize for 'zh_HK.UTF-8' is 'zh-HK' Result of FcLangNormalize for 'zh_TW.Big5' is 'zh-TW' Result of FcLangNormalize for 'zh_TW.UTF-8' is 'zh-TW' The same results are for patched or unpatched fontconfig on FreeBSD 10.3 amd64. As I understood, the files/patch-src_fclang.c file was committed in ports r400653: https://github.com/freebsd/freebsd-ports/commit/a0209812e88e8487b697a70dae61927536e8e69c But there were some changes for FreeBSD in base r302329 for "Posixify the locales name for variants": https://github.com/freebsd/freebsd/commit/9889527f5a2ab902035c679c612e4e5687466fea Nevertheless, possible that files/patch-src_fclang.c may be usable for DragonFly BSD, where such locale(s) as "sr_Cyrl_RS.UTF-8" available (but I didn't test), if check current changes in Git repository: https://github.com/DragonFlyBSD/DragonFlyBSD/search?q=sr_Cyrl_RS https://github.com/DragonFlyBSD/DragonFlyBSD/blob/934db1c1fcfa35981634b8fe3b0b50bef84d5a96/etc/mtree/BSD.usr.dist#L393 https://github.com/DragonFlyBSD/DragonFlyBSD/blob/934db1c1fcfa35981634b8fe3b0b50bef84d5a96/etc/mtree/BSD.usr.dist#L668 https://github.com/freebsd/freebsd/search?q=sr_Cyrl_RS https://github.com/freebsd/freebsd/blob/6920a5b1f1b5e251f2346302dad17f19226e2b10/etc/mtree/BSD.usr.dist#L423 https://github.com/freebsd/freebsd/blob/6920a5b1f1b5e251f2346302dad17f19226e2b10/etc/mtree/BSD.usr.dist#L760 The "sr_Cyrl_RS" was used as example from comment in files/patch-src_fclang.c file.
Created attachment 191354 [details] Proposed patch for x11-fonts/fontconfig (since 463966 revision) Updated patch for x11-fonts/fontconfig after ports r463941 and ports r463966 changes. - Add NO_BITMAPS option - Add OPTIONS_SUB=yes - Convert files/patch-conf.d_Makefile.in to sed patch Some included changes was also proposed in bug 225744 comment #4.
Created attachment 191368 [details] Proposed patch for x11-fonts/fontconfig (since 464042 revision) Updated patch for x11-fonts/fontconfig after ports r464041 and ports r464042 changes.
New ports r464048 (disabled NO_BITMAPS).
Created attachment 191372 [details] Proposed patch for x11-fonts/fontconfig (since 464048 revision) (In reply to comment #5) > New ports r464048 (disabled NO_BITMAPS). Ok, updated patch for x11-fonts/fontconfig after ports r464048 changes (i.e. changed PORTREVISION for patch, in this case).
(In reply to lightside from comment #6) I did the same patch several days ago in order to compile GIMP from git master because the version requirement was raised to 2.12.4 recently. My patch is identical to yours and I don't see any problem after the update.
Created attachment 193081 [details] Add USES=gperf to fix fontconfig 2.12.6 build in poudriere This fixes the following build error in poudriere: /bin/sh /wrkdirs/usr/ports/x11-fonts/fontconfig/work/fontconfig-2.12.6/missing gperf --pic -m 100 fcobjshash.gperf > fcobjshash.h.tmp && \ mv -f fcobjshash.h.tmp fcobjshash.h || ( rm -f fcobjshash.h.tmp && false ) /wrkdirs/usr/ports/x11-fonts/fontconfig/work/fontconfig-2.12.6/missing: gperf: not found WARNING: 'gperf' is missing on your system. You might have modified some files without having the proper tools for further handling them. Check the 'README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package contains this missing 'gperf' program. gmake[3]: *** [Makefile:916: fcobjshash.h] Error 1
Created attachment 193091 [details] The poudriere testport log for x11-fonts/fontconfig (FreeBSD 10.4 amd64) (In reply to Ting-Wei Lan from comment #8) > This fixes the following build error in poudriere: > <..> > WARNING: 'gperf' is missing on your system. Does this mean that your system doesn't have /usr/bin/gperf in FreeBSD base? For example, the FreeBSD 10.4 amd64 has gperf in FreeBSD base: -8<-- % which gperf /usr/bin/gperf % gperf --version | head -1 GNU gperf 3.0.3 -->8- Attached archived poudriere testport log for FreeBSD 10.4 amd64, based on patch in attachment #191372 [details]. Very possible, that current x11/fontconfig v2.12.1 (from ports r464048) also doesn't build on your (tested) FreeBSD version, because it has the same checks between 2.12.1 and 2.12.6 versions: https://cgit.freedesktop.org/fontconfig/tree/configure.ac?h=2.12.1#n55 https://cgit.freedesktop.org/fontconfig/tree/configure.ac?h=2.12.6#n55 except added "Check the argument type of the gperf hash/lookup function": https://cgit.freedesktop.org/fontconfig/tree/configure.ac?h=2.12.6#n196 but you didn't mention about this error in comment #8, because of missing gperf on your tested system. I guess, committer(s) may check the need of USES+=gperf on other FreeBSD version(s) and add it, when needed. Don't know why they didn't add this for previous version(s) also, since 2.10.91 (2.10.93 in ports r324037) version: https://cgit.freedesktop.org/fontconfig/tree/configure.ac?h=da0946721af3ab2dff3cd903065336b93592d067#n73 and probably earlier, if check related commit log: https://cgit.freedesktop.org/fontconfig/commit/?id=da0946721af3ab2dff3cd903065336b93592d067 Nevertheless, probably fix paths in your attachment #193081 [details], because it has full path to poudriere ports directory. Or committer may use appropriate --strip argument of svn patch (or other) command.
(In reply to comment #9) > since 2.10.91 (2.10.93 in ports r324037) since 2.10.92.
(In reply to lightside from comment #9) There is no /usr/bin/gperf on my FreeBSD 11.1 amd64 desktop, but I have gperf installed from ports for compiling VTE from a git checkout. I don't know why 2.12.1 didn't need it, but I did see build failure when I tested 2.12.6 in poudriere today.
/usr/bin/gperf is not installed since 11: https://svnweb.freebsd.org/changeset/base/272849 Without gperf, the poudriere testport log of 11.1-amd64 is available at: https://gist.github.com/0f19b1f7893cd867b60346521236f690 Adding USES+=gperf is the right fix because it pulls devel/gperf depending on the existence of /usr/bin/gperf .
Created attachment 193093 [details] Add USES=gperf to fix fontconfig 2.12.6 build in poudriere (without full path) Update patch to remove full path to poudriere.
(In reply to comment #9) The Mk/Uses/gperf.mk was added in ports r370280 (in 7 October 2014 year), so, probably, such FreeBSD systems exists. There are some ports which already uses it as a build dependency: https://www.freshports.org/search.php?stype=depends_build&method=match&query=devel%2Fgperf&orderby=category&orderbyupdown=asc&search=Search&format=plaintext&branch=head (In reply to Ting-Wei Lan from comment #8) Thanks you for noticing this.
Comment on attachment 191372 [details] Proposed patch for x11-fonts/fontconfig (since 464048 revision) (In reply to Ting-Wei Lan from comment #13) > Update patch to remove full path to poudriere. Ok, the attachment #191372 [details] was obsoleted.
(In reply to Li-Wen Hsu from comment #12) > Adding USES+=gperf is the right fix because it pulls devel/gperf depending on > the existence of /usr/bin/gperf Ok.
(In reply to comment #9) > Don't know why they didn't add this for previous version(s) also Probably, because (possibly) related commit of "Force regenerate fcobjshash.h when updating Makefile": https://cgit.freedesktop.org/fontconfig/commit/?id=5c49354a782870d632884174f10c7fb10351c667 was related to 2.12.4 release version: https://cgit.freedesktop.org/fontconfig/commit/?id=01085e07857cddf382db736a9e061f92f50397d6 so, previously (e.g. v2.12.1) the gperf program wasn't used to regenerate fcobjshash.h, when Makefile (timestamp) changes. And it turns out, I didn't notice this, because /usr/bin/gperf was available in FreeBSD 10.3 (10.4) base.
(In reply to comment #17) > when Makefile (timestamp) changes when src/Makefile (timestamp) changes
A commit references this bug: Author: lwhsu Date: Wed May 9 03:50:47 UTC 2018 New revision: 469428 URL: https://svnweb.freebsd.org/changeset/ports/469428 Log: - Update to 2.12.6 PR: 225164 Submitted by: lightside <lightside@gmx.com> Test and tweaked by: Ting-Wei Lan <lantw44@gmail.com> Approved by: kwm (gnome@, maintainer) Changes: head/x11-fonts/fontconfig/Makefile head/x11-fonts/fontconfig/distinfo head/x11-fonts/fontconfig/files/patch-src_fclang.c head/x11-fonts/fontconfig/pkg-plist head/x11-fonts/fontconfig-reference/pkg-plist