From c0e2aceef46033e43ab8b4f6aa0b36b25ba35f3d Mon Sep 17 00:00:00 2001 From: Vladimír Čunát Date: Tue, 4 Nov 2014 13:49:22 +0100 Subject: fontconfig: patch and document --- .../libraries/fontconfig/config-compat.patch | 28 +++++++++++++++++ pkgs/development/libraries/fontconfig/default.nix | 36 ++++++++++++++++------ 2 files changed, 55 insertions(+), 9 deletions(-) create mode 100644 pkgs/development/libraries/fontconfig/config-compat.patch (limited to 'pkgs/development') diff --git a/pkgs/development/libraries/fontconfig/config-compat.patch b/pkgs/development/libraries/fontconfig/config-compat.patch new file mode 100644 index 000000000000..e86f08fb553c --- /dev/null +++ b/pkgs/development/libraries/fontconfig/config-compat.patch @@ -0,0 +1,28 @@ +commit 05c6adf8104b4321d3a3716a7b9feb6bf223ed0c (HEAD, nixpkgs) +Author: Vladimír Čunát +Date: Tue Nov 4 12:24:25 2014 +0100 + + add check for /etc/fonts/@configVersion@/fonts.conf + + It's checked between FONTCONFIG_FILE and the usual /etc/fonts/fonts.conf. + Also, hardcode /etc/fonts/fonts.conf to prevent accidental override. + +diff --git a/src/fccfg.c b/src/fccfg.c +index 6377fd7..e9eb10a 100644 +--- a/src/fccfg.c ++++ b/src/fccfg.c +@@ -2070,8 +2070,13 @@ FcConfigFilename (const FcChar8 *url) + if (!url || !*url) + { + url = (FcChar8 *) getenv ("FONTCONFIG_FILE"); ++ if (!url) { ++ static const FcChar8 *cfPath = "/etc/fonts/@configVersion@/fonts.conf"; ++ if (access (cfPath, R_OK) == 0) ++ url = cfPath; ++ } + if (!url) +- url = (FcChar8 *) FONTCONFIG_FILE; ++ url = (FcChar8 *) "/etc/fonts/fonts.conf"; + } + file = 0; + diff --git a/pkgs/development/libraries/fontconfig/default.nix b/pkgs/development/libraries/fontconfig/default.nix index d98402e22354..72906232eff9 100644 --- a/pkgs/development/libraries/fontconfig/default.nix +++ b/pkgs/development/libraries/fontconfig/default.nix @@ -1,4 +1,16 @@ -{ stdenv, fetchurl, fetchpatch, pkgconfig, freetype, expat, libxslt, fontbhttf }: +{ stdenv, fetchurl, fetchpatch, pkgconfig, freetype, expat, libxslt, fontbhttf +, substituteAll }: + +/** Font configuration scheme + - ./config-compat.patch makes fontconfig try the following root configs, in order: + $FONTCONFIG_FILE, /etc/fonts/${configVersion}/fonts.conf, /etc/fonts/fonts.conf + This is done not to override config of pre-2.11 versions (which just blow up) + and still use *global* font configuration at both NixOS or non-NixOS. + - NixOS creates /etc/fonts/${configVersion}/fonts.conf link to $out/etc/fonts/fonts.conf, + and other modifications should go to /etc/fonts/${configVersion}/conf.d + - See ./make-fonts-conf.xsl for config details. + +*/ let configVersion = "2.11"; # bump whenever fontconfig breaks compatibility with older configurations @@ -19,17 +31,24 @@ stdenv.mkDerivation rec { } ; - patches = [(fetchpatch { - url = "http://cgit.freedesktop.org/fontconfig/patch/?id=f44157c809d280e2a0ce87fb078fc4b278d24a67"; - sha256 = "19s5irclg4irj2yxd7xw9yikbazs9263px8qbv4r21asw06nfalv"; - })]; + patches = [ + (fetchpatch { + url = "http://cgit.freedesktop.org/fontconfig/patch/?id=f44157c809d280e2a0ce87fb078fc4b278d24a67"; + sha256 = "19s5irclg4irj2yxd7xw9yikbazs9263px8qbv4r21asw06nfalv"; + }) + (substituteAll { + src = ./config-compat.patch; + inherit configVersion; + }) + ]; propagatedBuildInputs = [ freetype ]; - buildInputs = [ pkgconfig libxslt expat ]; + buildInputs = [ pkgconfig expat ]; configureFlags = [ - "--with-cache-dir=/var/cache/fontconfig" + "--with-cache-dir=/var/cache/fontconfig" # otherwise the fallback is in $out/ "--disable-docs" + # just ~1MB; this is what you get when loading config fails for some reason "--with-default-fonts=${fontbhttf}" ]; @@ -49,11 +68,10 @@ stdenv.mkDerivation rec { # Don't try to write to /var/cache/fontconfig at install time. installFlags = "fc_cachedir=$(TMPDIR)/dummy RUN_FC_CACHE_TEST=false"; - # Add a default font for non-nixos systems. fontbhttf is only about 1mb. postInstall = '' cd "$out/etc/fonts" && tar xvf ${infinality_patch} rm conf.d/{50-user,51-local}.conf - xsltproc --stringparam fontDirectories "${fontbhttf}" \ + "${libxslt}/bin/xsltproc" --stringparam fontDirectories "${fontbhttf}" \ --stringparam fontconfig "$out" \ --stringparam fontconfigConfigVersion "${configVersion}" \ --path $out/share/xml/fontconfig \ -- cgit 1.4.1