Skip to content

Commit

Permalink
fontconfig: get rid of rest of versioned configs
Browse files Browse the repository at this point in the history
The incompatibility does not seem to exist any more: programs linked against fc 2.12
on fc 2.14 system seem to at least display text, even while printing tons of errors
(as long as you generate fc cache manually), and same thing the other way around.
Hopefully it will not be an issue in the future.
  • Loading branch information
jtojnar committed Aug 29, 2020
1 parent 89401d9 commit b49a769
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 62 deletions.
9 changes: 5 additions & 4 deletions nixos/modules/config/fonts/fontconfig.nix
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*
Configuration files are linked to /etc/fonts/${pkgs.fontconfig.configVersion}/conf.d/
Configuration files are linked to /etc/fonts/conf.d/
This module generates a package containing configuration files and link it in /etc/fonts.
Expand Down Expand Up @@ -176,15 +176,16 @@ let
confPkg = pkgs.runCommand "fontconfig-conf" {
preferLocalBuild = true;
} ''
dst=$out/etc/fonts/${pkg.configVersion}/conf.d
dst=$out/etc/fonts/conf.d
mkdir -p $dst
# fonts.conf
ln -s ${pkg.out}/etc/fonts/fonts.conf \
$dst/../fonts.conf
# TODO: remove this legacy symlink once people stop using packages built before #95358 was merged
ln -s /etc/fonts/${pkg.configVersion}/fonts.conf \
$out/etc/fonts/fonts.conf
mkdir -p $out/etc/fonts/2.11
ln -s /etc/fonts/fonts.conf \
$out/etc/fonts/2.11/fonts.conf
# fontconfig default config files
ln -s ${pkg.out}/etc/fonts/conf.d/*.conf \
Expand Down
28 changes: 0 additions & 28 deletions pkgs/development/libraries/fontconfig/config-compat.patch

This file was deleted.

40 changes: 14 additions & 26 deletions pkgs/development/libraries/fontconfig/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,6 @@
, autoreconfHook
}:

/** 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
in
stdenv.mkDerivation rec {
pname = "fontconfig";
version = "2.13.92";
Expand All @@ -35,11 +21,6 @@ stdenv.mkDerivation rec {
};

patches = [
(substituteAll {
src = ./config-compat.patch;
inherit configVersion;
})

# Fix fonts not being loaded when missing included configs that have ignore_missing="yes".
# https://bugzilla.redhat.com/show_bug.cgi?id=1744377
(fetchpatch {
Expand Down Expand Up @@ -72,6 +53,13 @@ stdenv.mkDerivation rec {
url = "https://gitlab.freedesktop.org/fontconfig/fontconfig/commit/37c7c748740bf6f2468d59e67951902710240b34.patch";
sha256 = "1rz5zrfwhpn9g49wrzzrmdglj78pbvpnw8ksgsw6bxq8l5d84jfr";
})

# Show warning instead of error when encountering unknown attribute in config.
# https://gitlab.freedesktop.org/fontconfig/fontconfig/merge_requests/111
(fetchpatch {
url = "https://gitlab.freedesktop.org/fontconfig/fontconfig/commit/409b37c62780728755c908991c912a6b16f2389c.patch";
sha256 = "zJFh37QErSAINPGFkFVJyhYRP27BuIN7PIgoDl/PIwI=";
})
];

outputs = [ "bin" "dev" "lib" "out" ]; # $out contains all the config
Expand All @@ -92,6 +80,7 @@ stdenv.mkDerivation rec {
];

configureFlags = [
"--sysconfdir=/etc"
"--with-arch=${stdenv.hostPlatform.parsed.cpu.name}"
"--with-cache-dir=/var/cache/fontconfig" # otherwise the fallback is in $out/
"--disable-docs"
Expand All @@ -105,23 +94,22 @@ stdenv.mkDerivation rec {

doCheck = true;

# Don't try to write to /var/cache/fontconfig at install time.
installFlags = [ "fc_cachedir=$(TMPDIR)/dummy" "RUN_FC_CACHE_TEST=false" ];
installFlags = [
# Don't try to write to /var/cache/fontconfig at install time.
"fc_cachedir=$(TMPDIR)/dummy"
"RUN_FC_CACHE_TEST=false"
"sysconfdir=${placeholder "out"}/etc"
];

postInstall = ''
cd "$out/etc/fonts"
xsltproc --stringparam fontDirectories "${dejavu_fonts.minimal}" \
--stringparam fontconfigConfigVersion "${configVersion}" \
--path $out/share/xml/fontconfig \
${./make-fonts-conf.xsl} $out/etc/fonts/fonts.conf \
> fonts.conf.tmp
mv fonts.conf.tmp $out/etc/fonts/fonts.conf
'';

passthru = {
inherit configVersion;
};

meta = with stdenv.lib; {
description = "A library for font customization and configuration";
homepage = "http://fontconfig.org/";
Expand Down
1 change: 0 additions & 1 deletion pkgs/development/libraries/fontconfig/make-fonts-conf.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ runCommand "fonts.conf"
''
xsltproc --stringparam fontDirectories "$fontDirectories" \
--stringparam fontconfig "${fontconfig.out}" \
--stringparam fontconfigConfigVersion "${fontconfig.configVersion}" \
--path ${fontconfig.out}/share/xml/fontconfig \
${./make-fonts-conf.xsl} ${fontconfig.out}/etc/fonts/fonts.conf \
> $out
Expand Down
5 changes: 2 additions & 3 deletions pkgs/development/libraries/fontconfig/make-fonts-conf.xsl
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

<xsl:param name="fontDirectories" />
<xsl:param name="fontconfig" />
<xsl:param name="fontconfigConfigVersion" />

<xsl:template match="/fontconfig">

Expand All @@ -28,8 +27,8 @@
<!-- /var/cache/fontconfig is useful for non-nixos systems -->
<cachedir>/var/cache/fontconfig</cachedir>

<!-- versioned system-wide config -->
<include ignore_missing="yes">/etc/fonts/<xsl:value-of select="$fontconfigConfigVersion" />/conf.d</include>
<!-- system-wide config -->
<include ignore_missing="yes">/etc/fonts/conf.d</include>

<dir prefix="xdg">fonts</dir>
<xsl:for-each select="str:tokenize($fontDirectories)">
Expand Down

0 comments on commit b49a769

Please sign in to comment.