Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / development / compilers / gnu-cobol / default.nix
blobe3233b059dd2a715540223c69eea446f480547e7
1 { lib
2 , stdenv
3 , fetchurl
4 , autoconf269
5 , automake
6 , libtool
7 # libs
8 , cjson
9 , db
10 , gmp
11 , libxml2
12 , ncurses
13 # docs
14 , help2man
15 , texinfo
16 , texliveBasic
17 # test
18 , writeText
21 stdenv.mkDerivation rec {
22   pname = "gnu-cobol";
23   version = "3.1.2";
25   src = fetchurl {
26     url = "mirror://sourceforge/gnucobol/${lib.versions.majorMinor version}/gnucobol-${version}.tar.xz";
27     sha256 = "0x15ybfm63g7c9340fc6712h9v59spnbyaz4rf85pmnp3zbhaw2r";
28   };
30   nativeBuildInputs = [
31     autoconf269
32     automake
33     libtool
34     help2man
35     texinfo
36     texliveBasic
37   ];
39   buildInputs = [
40     cjson
41     db
42     gmp
43     libxml2
44     ncurses
45   ];
47   outputs = [ "bin" "dev" "lib" "out" ];
48   # XXX: Without this, we get a cycle between bin and dev
49   propagatedBuildOutputs = [];
51   # Skips a broken test
52   postPatch = ''
53     sed -i '/^AT_CHECK.*crud\.cob/i AT_SKIP_IF([true])' tests/testsuite.src/listings.at
54   '';
56   preConfigure = ''
57     autoconf
58     aclocal
59     automake
60   '';
62   enableParallelBuilding = true;
64   installFlags = [ "install-pdf" "install-html" "localedir=$out/share/locale" ];
66   # Tests must run after install.
67   doCheck = false;
69   doInstallCheck = true;
70   installCheckPhase = ''
71     runHook preInstallCheck
73     # Run tests
74     make -j$NIX_BUILD_CORES check
76     # Sanity check
77     message="Hello, COBOL!"
78     # XXX: Don't for a second think you can just get rid of these spaces, they
79     # are load bearing.
80     tee hello.cbl <<EOF
81            IDENTIFICATION DIVISION.
82            PROGRAM-ID. HELLO.
84            PROCEDURE DIVISION.
85            DISPLAY "$message".
86            STOP RUN.
87     EOF
88     $bin/bin/cobc -x -o hello-cobol "hello.cbl"
89     hello="$(./hello-cobol | tee >(cat >&2))"
90     [[ "$hello" == "$message" ]] || exit 1
92     runHook postInstallCheck
93   '';
95   meta = with lib; {
96     description = "An open-source COBOL compiler";
97     homepage = "https://sourceforge.net/projects/gnucobol/";
98     license = with licenses; [ gpl3Only lgpl3Only ];
99     maintainers = with maintainers; [ ericsagnes lovesegfault ];
100     platforms = platforms.all;
101   };