push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,133 @@
{
stdenv,
lib,
fetchurl,
pkg-config,
python3,
freetype,
expat,
libxslt,
gperf,
dejavu_fonts,
autoreconfHook,
versionCheckHook,
testers,
gitUpdater,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "fontconfig";
version = "2.17.1";
outputs = [
"bin"
"dev"
"lib"
"out"
]; # $out contains all the config
# GitLab repositrory does not include pre-generated man pages.
# ref: https://github.com/NixOS/nixpkgs/pull/401037#discussion_r2055430206
src = fetchurl {
url = "https://gitlab.freedesktop.org/api/v4/projects/890/packages/generic/fontconfig/${finalAttrs.version}/fontconfig-${finalAttrs.version}.tar.xz";
hash = "sha256-n1yuk/T//B+8Ba6ZzfxwjNYN/WYS/8BRKCcCXAJvpUE=";
};
nativeBuildInputs = [
autoreconfHook
gperf
libxslt
pkg-config
python3
];
buildInputs = [
expat
];
propagatedBuildInputs = [
freetype
];
postPatch = ''
# Requires networking.
sed -i '/check_PROGRAMS += test-crbug1004254/d' test/Makefile.am
# Test causes error without patch shebangs.
patchShebangs doc/check-whitespace-in-args.py \
doc/check-missing-doc.py
'';
configureFlags = [
"--sysconfdir=/etc"
"--with-arch=${stdenv.hostPlatform.parsed.cpu.name}"
"--with-cache-dir=/var/cache/fontconfig" # otherwise the fallback is in $out/
# just <1MB; this is what you get when loading config fails for some reason
"--with-default-fonts=${dejavu_fonts.minimal}"
]
++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
"--with-arch=${stdenv.hostPlatform.parsed.cpu.name}"
];
enableParallelBuilding = true;
doCheck = true;
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 includes /etc/fonts/conf.d \
--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
# We don't keep section 3 of the manpages, as they are quite large and
# probably not so useful.
rm -r $bin/share/man/man3
'';
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
versionCheckProgram = "${placeholder "bin"}/bin/fc-list";
versionCheckProgramArg = "--version";
installCheckPhase = ''
runHook preInstallCheck
[ -d "$bin/share/man/man1" ]
[ -d "$bin/share/man/man5" ]
echo "man pages exist"
runHook postInstallCheck
'';
passthru = {
tests = {
pkg-config = testers.hasPkgConfigModules {
package = finalAttrs.finalPackage;
};
};
updateScript = gitUpdater {
url = "https://gitlab.freedesktop.org/fontconfig/fontconfig.git";
};
};
meta = with lib; {
description = "Library for font customization and configuration";
homepage = "http://fontconfig.org/";
license = licenses.bsd2; # custom but very bsd-like
platforms = platforms.all;
teams = [ teams.freedesktop ];
pkgConfigModules = [ "fontconfig" ];
};
})

View File

@@ -0,0 +1,48 @@
{
buildPackages,
fontconfig,
lib,
runCommand,
stdenv,
}:
let
fontconfig' = fontconfig;
in
{
fontconfig ? fontconfig',
fontDirectories,
}:
runCommand "fc-cache"
{
preferLocalBuild = true;
allowSubstitutes = false;
passAsFile = [ "fontDirs" ];
fontDirs = ''
<!-- Font directories -->
${lib.concatStringsSep "\n" (map (font: "<dir>${font}</dir>") fontDirectories)}
'';
}
''
export FONTCONFIG_FILE=$(pwd)/fonts.conf
cat > fonts.conf << EOF
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'urn:fontconfig:fonts.dtd'>
<fontconfig>
<include>${fontconfig.out}/etc/fonts/fonts.conf</include>
<cachedir>$out</cachedir>
EOF
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
${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.
rm -f "$out/CACHEDIR.TAG"
''

View File

@@ -0,0 +1,58 @@
{
runCommand,
stdenv,
lib,
libxslt,
fontconfig,
dejavu_fonts,
}:
let
fontconfig_ = fontconfig;
in
{
fontconfig ? fontconfig_,
# an array of fonts, e.g. `[ pkgs.dejavu_fonts.minimal ]`
fontDirectories,
impureFontDirectories ? [
# nix user profile
"~/.nix-profile/lib/X11/fonts"
"~/.nix-profile/share/fonts"
]
++ lib.optional stdenv.hostPlatform.isDarwin "~/Library/Fonts"
++ [
# FHS paths for non-NixOS platforms
"/usr/share/fonts"
"/usr/local/share/fonts"
]
# darwin paths
++ lib.optionals stdenv.hostPlatform.isDarwin [
"/Library/Fonts"
"/System/Library/Fonts"
]
# nix default profile
++ [
"/nix/var/nix/profiles/default/lib/X11/fonts"
"/nix/var/nix/profiles/default/share/fonts"
],
# to include custom config
includes ? [ "/etc/fonts/conf.d" ],
}:
runCommand "fonts.conf"
{
nativeBuildInputs = [ libxslt ];
buildInputs = [ fontconfig ];
inherit fontDirectories includes;
# Add a default font for non-nixos systems, <1MB and in nixos defaults.
impureFontDirectories = impureFontDirectories ++ [ dejavu_fonts.minimal ];
}
''
xsltproc --stringparam fontDirectories "$fontDirectories" \
--stringparam impureFontDirectories "$impureFontDirectories" \
--stringparam includes "$includes" \
--path ${fontconfig.out}/share/xml/fontconfig \
${./make-fonts-conf.xsl} ${fontconfig.out}/etc/fonts/fonts.conf \
> $out
''

View File

@@ -0,0 +1,63 @@
<?xml version="1.0"?>
<!--
This script copies the original fonts.conf from the fontconfig
distribution, but replaces all <dir> entries with the directories
specified in the $fontDirectories parameter.
-->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:str="http://exslt.org/strings"
extension-element-prefixes="str"
>
<xsl:output method='xml' encoding="UTF-8" doctype-system="urn:fontconfig:fonts.dtd" />
<xsl:param name="fontDirectories" />
<xsl:param name="impureFontDirectories" />
<xsl:param name="includes" />
<xsl:template match="/fontconfig">
<fontconfig>
<xsl:apply-templates select="child::node()[name() != 'dir' and name() != 'cachedir' and name() != 'include']" />
<!-- the first cachedir will be used to store the cache -->
<cachedir prefix="xdg">fontconfig</cachedir>
<xsl:text>&#0010;</xsl:text>
<!-- /var/cache/fontconfig is useful for non-nixos systems -->
<cachedir>/var/cache/fontconfig</cachedir>
<xsl:text>&#0010;</xsl:text>
<!-- system-wide config -->
<xsl:for-each select="str:tokenize($includes)">
<include ignore_missing="yes"><xsl:value-of select="." /></include>
<xsl:text>&#0010;</xsl:text>
</xsl:for-each>
<dir prefix="xdg">fonts</dir>
<xsl:text>&#0010;</xsl:text>
<xsl:for-each select="str:tokenize($fontDirectories)">
<dir><xsl:value-of select="." /></dir>
<xsl:text>&#0010;</xsl:text>
</xsl:for-each>
<xsl:for-each select="str:tokenize($impureFontDirectories)">
<dir><xsl:value-of select="." /></dir>
<xsl:text>&#0010;</xsl:text>
</xsl:for-each>
</fontconfig>
</xsl:template>
<!-- New fontconfig >=2.11 doesn't like xml:space added by xsl:copy-of -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*[name() != 'xml:space']"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>