evcc: 0.131.4 -> 0.131.5
[NixPkgs.git] / pkgs / by-name / gn / gnucobol / package.nix
blob75341f91bbb96129b6eb63641e631557312d3912
2   lib,
3   stdenv,
4   fetchurl,
5   autoconf269,
6   automake,
7   libtool,
8   pkg-config,
9   # libs
10   cjson,
11   db,
12   gmp,
13   libxml2,
14   ncurses,
15   # docs
16   help2man,
17   texinfo,
18   texliveBasic,
19   # test
20   perl,
22 let
23   nistTestSuite = fetchurl {
24     # Used to check GnuCOBOL with the NIST test suite
25     url = "mirror://sourceforge/gnucobol/newcob.val.tar.gz";
26     hash = "sha256-5FE/JqmziRH3v4gv49MzmoC0XKvCyvheswVbD1zofuA=";
27   };
29 stdenv.mkDerivation (finalAttrs: {
30   pname = "gnucobol";
31   version = "3.2";
33   src = fetchurl {
34     url = "mirror://gnu/gnucobol/gnucobol-${finalAttrs.version}.tar.xz";
35     hash = "sha256-O7SK9GztR3n6z0H9wu5g5My4bqqZ0BCzZoUxXfOcLuI=";
36   };
38   nativeBuildInputs = [
39     pkg-config
40     autoconf269
41     automake
42     help2man
43     libtool
44     perl
45     texinfo
46     texliveBasic
47   ];
49   buildInputs = [
50     cjson
51     db
52     gmp
53     libxml2
54     ncurses
55   ];
57   outputs = [
58     "bin"
59     "dev"
60     "lib"
61     "out"
62   ];
63   # XXX: Without this, we get a cycle between bin and dev
64   propagatedBuildOutputs = [ ];
66   # Skips a broken test
67   postPatch = ''
68     sed -i '/^AT_CHECK.*crud\.cob/i AT_SKIP_IF([true])' tests/testsuite.src/listings.at
69     # upstream reports the following tests as known failures
70     # test 843 (runtime check: write to internal storage (1))
71     sed -i "/^843;/d" tests/testsuite
72     # test 875 (INDEXED sample)
73     sed -i "/^875;/d" tests/testsuite
74   '';
76   preConfigure =
77     ''
78       autoconf
79       aclocal
80       automake
81     ''
82     + lib.optionalString stdenv.hostPlatform.isDarwin ''
83       # when building with nix on darwin, configure will use GNU strip,
84       # which fails due to using --strip-unneeded, which is not supported
85       substituteInPlace configure --replace-fail '"GNU strip"' 'FAKE GNU strip'
86     '';
88   # error: call to undeclared function 'xmlCleanupParser'
89   # ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
90   env.CFLAGS = lib.optionalString stdenv.hostPlatform.isDarwin "-Wno-error=implicit-function-declaration";
92   enableParallelBuilding = true;
94   installFlags = [
95     "install-pdf"
96     "install-html"
97     "localedir=$out/share/locale"
98   ];
100   # Tests must run after install.
101   doCheck = false;
103   doInstallCheck = true;
104   installCheckPhase = ''
105     runHook preInstallCheck
107     # Run tests
108     TESTSUITEFLAGS="--jobs=$NIX_BUILD_CORES" make check
110     # Run NIST tests
111     cp -v ${nistTestSuite} ./tests/cobol85/newcob.val.tar.gz
112     TESTSUITEFLAGS="--jobs=$NIX_BUILD_CORES" make test
114     # Sanity check
115     message="Hello, COBOL!"
116     # XXX: Don't for a second think you can just get rid of these spaces, they
117     # are load bearing.
118     tee hello.cbl <<EOF
119            IDENTIFICATION DIVISION.
120            PROGRAM-ID. HELLO.
122            PROCEDURE DIVISION.
123            DISPLAY "$message".
124            STOP RUN.
125     EOF
126     $bin/bin/cobc -x -o hello-cobol "hello.cbl"
127     hello="$(./hello-cobol | tee >(cat >&2))"
128     [[ "$hello" == "$message" ]] || exit 1
130     runHook postInstallCheck
131   '';
133   meta = with lib; {
134     description = "Free/libre COBOL compiler";
135     homepage = "https://gnu.org/software/gnucobol/";
136     license = with licenses; [
137       gpl3Only
138       lgpl3Only
139     ];
140     maintainers = with maintainers; [
141       ericsagnes
142       lovesegfault
143       techknowlogick
144       kiike
145     ];
146     platforms = platforms.all;
147   };