mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-06 13:03:34 +00:00
33afbf39f6
checkInputs used to be added to nativeBuildInputs. Now we have nativeCheckInputs to do that instead. Doing this treewide change allows to keep hashes identical to before the introduction of nativeCheckInputs.
99 lines
3.3 KiB
Nix
99 lines
3.3 KiB
Nix
{ version, sha256, patches ? [] }:
|
|
|
|
{ lib, stdenv, buildPackages, fetchurl, perl, xz, libintl, bash
|
|
|
|
# we are a dependency of gcc, this simplifies bootstraping
|
|
, interactive ? false, ncurses, procps
|
|
}:
|
|
|
|
# Note: this package is used for bootstrapping fetchurl, and thus
|
|
# cannot use fetchpatch! All mutable patches (generated by GitHub or
|
|
# cgit) that are needed here should be included directly in Nixpkgs as
|
|
# files.
|
|
|
|
let
|
|
crossBuildTools = stdenv.hostPlatform != stdenv.buildPlatform;
|
|
in
|
|
|
|
with lib;
|
|
|
|
stdenv.mkDerivation {
|
|
pname = "texinfo${optionalString interactive "-interactive"}";
|
|
inherit version;
|
|
|
|
src = fetchurl {
|
|
url = "mirror://gnu/texinfo/texinfo-${version}.tar.xz";
|
|
inherit sha256;
|
|
};
|
|
|
|
patches = patches ++ optional crossBuildTools ./cross-tools-flags.patch;
|
|
|
|
# ncurses is required to build `makedoc'
|
|
# this feature is introduced by the ./cross-tools-flags.patch
|
|
NATIVE_TOOLS_CFLAGS = if crossBuildTools then "-I${getDev buildPackages.ncurses}/include" else null;
|
|
NATIVE_TOOLS_LDFLAGS = if crossBuildTools then "-L${getLib buildPackages.ncurses}/lib" else null;
|
|
|
|
strictDeps = true;
|
|
enableParallelBuilding = true;
|
|
|
|
# A native compiler is needed to build tools needed at build time
|
|
depsBuildBuild = [ buildPackages.stdenv.cc perl ];
|
|
|
|
buildInputs = [ xz.bin bash libintl ]
|
|
++ optionals stdenv.isSunOS [ libiconv gawk ]
|
|
++ optional interactive ncurses;
|
|
|
|
configureFlags = [ "PERL=${buildPackages.perl}/bin/perl" ]
|
|
# Perl XS modules are difficult to cross-compile and texinfo has pure Perl
|
|
# fallbacks.
|
|
++ optional crossBuildTools "--enable-perl-xs=no"
|
|
++ lib.optional stdenv.isSunOS "AWK=${gawk}/bin/awk";
|
|
|
|
installFlags = [ "TEXMF=$(out)/texmf-dist" ];
|
|
installTargets = [ "install" "install-tex" ];
|
|
|
|
nativeCheckInputs = [ procps ];
|
|
|
|
doCheck = interactive
|
|
&& !stdenv.isDarwin
|
|
&& !stdenv.isSunOS; # flaky
|
|
|
|
checkFlags = lib.optionals (!stdenv.hostPlatform.isMusl) [
|
|
# Test is known to fail on various locales on texinfo-6.8:
|
|
# https://lists.gnu.org/r/bug-texinfo/2021-07/msg00012.html
|
|
"XFAIL_TESTS=test_scripts/layout_formatting_fr_icons.sh"
|
|
];
|
|
|
|
postFixup = optionalString crossBuildTools ''
|
|
for f in "$out"/bin/{pod2texi,texi2any}; do
|
|
substituteInPlace "$f" \
|
|
--replace ${buildPackages.perl}/bin/perl ${perl}/bin/perl
|
|
done
|
|
'';
|
|
|
|
meta = {
|
|
homepage = "https://www.gnu.org/software/texinfo/";
|
|
description = "The GNU documentation system";
|
|
license = licenses.gpl3Plus;
|
|
platforms = platforms.all;
|
|
maintainers = with maintainers; [ vrthra oxij ];
|
|
|
|
longDescription = ''
|
|
Texinfo is the official documentation format of the GNU project.
|
|
It was invented by Richard Stallman and Bob Chassell many years
|
|
ago, loosely based on Brian Reid's Scribe and other formatting
|
|
languages of the time. It is used by many non-GNU projects as
|
|
well.
|
|
|
|
Texinfo uses a single source file to produce output in a number
|
|
of formats, both online and printed (dvi, html, info, pdf, xml,
|
|
etc.). This means that instead of writing different documents
|
|
for online information and another for a printed manual, you
|
|
need write only one document. And when the work is revised, you
|
|
need revise only that one document. The Texinfo system is
|
|
well-integrated with GNU Emacs.
|
|
'';
|
|
branch = version;
|
|
};
|
|
}
|