nixos/fonts: ship fontconfig caches even for cross-compiled hosts (#391305)

K900 b64ec194 0402be64

Changed files
+16 -9
nixos
modules
config
pkgs
development
libraries
top-level
+1 -1
nixos/modules/config/fonts/fontconfig.nix
···
<fontconfig>
<!-- Font directories -->
${lib.concatStringsSep "\n" (map (font: "<dir>${font}</dir>") config.fonts.packages)}
-
${lib.optionalString (pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform) ''
+
${lib.optionalString (pkgs.stdenv.hostPlatform.emulatorAvailable pkgs.buildPackages) ''
<!-- Pre-generated font caches -->
<cachedir>${cache}</cachedir>
${lib.optionalString (pkgs.stdenv.hostPlatform.isx86_64 && cfg.cache32Bit) ''
+14 -4
pkgs/development/libraries/fontconfig/make-fonts-cache.nix
···
{
+
buildPackages,
+
fontconfig,
+
lib,
runCommand,
-
lib,
-
fontconfig,
+
stdenv,
+
}:
+
let
+
fontconfig' = fontconfig;
+
in
+
{
+
fontconfig ? fontconfig',
fontDirectories,
}:
runCommand "fc-cache"
{
-
nativeBuildInputs = [ fontconfig.bin ];
preferLocalBuild = true;
allowSubstitutes = false;
passAsFile = [ "fontDirs" ];
···
cat "$fontDirsPath" >> fonts.conf
echo "</fontconfig>" >> fonts.conf
+
# N.B.: fc-cache keys its cache entries by architecture.
+
# We must invoke the host `fc-cache` (not the build fontconfig) if we want
+
# the cache to be usable by the host.
mkdir -p $out
-
fc-cache -sv
+
${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe' fontconfig "fc-cache"} -sv
# This is not a cache dir in the normal sense -- it won't be automatically
# recreated.
+1 -4
pkgs/top-level/all-packages.nix
···
makeFontsConf = callPackage ../development/libraries/fontconfig/make-fonts-conf.nix { };
-
makeFontsCache = let fontconfig_ = fontconfig; in {fontconfig ? fontconfig_, fontDirectories}:
-
callPackage ../development/libraries/fontconfig/make-fonts-cache.nix {
-
inherit fontconfig fontDirectories;
-
};
+
makeFontsCache = callPackage ../development/libraries/fontconfig/make-fonts-cache.nix { };
freenect = callPackage ../development/libraries/freenect {
inherit (darwin.apple_sdk.frameworks) Cocoa GLUT;