jetbrains: useFetchCargoVendor (#377020)
[NixPkgs.git] / pkgs / by-name / op / open-english-wordnet / package.nix
blob47522d7b7829c2b1fb24a8485e21903019429a81
2   lib,
3   fetchFromGitHub,
4   fetchpatch,
5   gzip,
6   python3,
7   stdenvNoCC,
8 }:
10 stdenvNoCC.mkDerivation (self: {
11   pname = "open-english-wordnet";
12   version = "2022";
14   src = fetchFromGitHub {
15     owner = "globalwordnet";
16     repo = "english-wordnet";
17     rev = "${self.version}-edition";
18     hash = "sha256-a1fWIp39uuJZL1aFX/r+ttLB1+kwh/XPHwphgENTQ5M=";
19   };
21   patches =
22     lib.mapAttrsToList
23       (
24         rev: hash:
25         fetchpatch {
26           url = "https://github.com/globalwordnet/english-wordnet/commit/${rev}.patch";
27           inherit hash;
28         }
29       )
30       {
31         # Upstream commit bumping the version number, accidentally ommited from the tagged release
32         "bc07902f8995b62c70f01a282b23f40f30630540" = "sha256-1e4MG/k86g3OFUhiShCCbNXnvDKrYFr1KlGVsGl++KI=";
33         # PR #982, “merge.py: Make result independent of filesystem order”
34         "6da46a48dd76a48ad9ff563e6c807b8271fc83cd" = "sha256-QkkJH7NVGy/IbeSWkotU80IGF4esz0b8mIL9soHdQtQ=";
35       };
37   # TODO(nicoo): make compression optional?
38   nativeBuildInputs = [
39     gzip
40     (python3.withPackages (p: with p; [ pyyaml ]))
41   ];
43   # TODO(nicoo): generate LMF and WNDB versions with separate outputs
44   buildPhase = ''
45     runHook preBuild
47     echo Generating wn.xml
48     python scripts/from-yaml.py
49     python scripts/merge.py
51     echo Compressing
52     gzip --best --no-name --stdout ./wn.xml > 'oewn:${self.version}.xml.gz'
54     runHook postBuild
55   '';
57   installPhase = ''
58     runHook preInstall
59     install -Dt $out/share/wordnet 'oewn:${self.version}.xml.gz'
60     runHook postInstall
61   '';
63   meta = with lib; {
64     description = "Lexical network of the English language";
65     longDescription = ''
66       Open English WordNet is a lexical network of the English language grouping
67       words into synsets and linking them according to relationships such as
68       hypernymy, antonymy and meronymy. It is intended to be used in natural
69       language processing applications and provides deep lexical information
70       about the English language as a graph.
72       Open English WordNet is a fork of the Princeton Wordnet developed under an
73       open source methodology.
74     '';
75     homepage = "https://en-word.net/";
76     license = licenses.cc-by-40;
77     maintainers = with maintainers; [ nicoo ];
78     platforms = platforms.all;
79   };