bandwhich: 0.23.0 -> 0.23.1; move to by-name; nixfmt; useFetchCargoVendor (#356934)
[NixPkgs.git] / pkgs / by-name / po / poke / package.nix
blob51b8b4e9479840c1a4e2bea78ddcb9650b9ab7fc
2   lib,
3   stdenv,
4   fetchurl,
5   help2man,
6   pkg-config,
7   texinfo,
8   boehmgc,
9   readline,
10   nbdSupport ? !stdenv.hostPlatform.isDarwin,
11   libnbd,
12   textStylingSupport ? true,
13   gettext,
14   dejagnu,
16   # update script only
17   writeScript,
20 let
21   isCross = stdenv.hostPlatform != stdenv.buildPlatform;
23 stdenv.mkDerivation (finalAttrs: {
24   pname = "poke";
25   version = "4.2";
27   src = fetchurl {
28     url = "mirror://gnu/poke/poke-${finalAttrs.version}.tar.gz";
29     hash = "sha256-iq825h42elMUDqQOJVnp7FEud5xCvuNOesJLNLoRm94=";
30   };
32   outputs =
33     [
34       "out"
35       "dev"
36       "info"
37       "lib"
38     ]
39     # help2man can't cross compile because it runs `poke --help` to
40     # generate the man page
41     ++ lib.optional (!isCross) "man";
43   postPatch = ''
44     patchShebangs .
45   '';
47   strictDeps = true;
49   nativeBuildInputs =
50     [
51       pkg-config
52       texinfo
53     ]
54     ++ lib.optionals (!isCross) [
55       help2man
56     ];
58   buildInputs =
59     [
60       boehmgc
61       readline
62     ]
63     ++ lib.optional nbdSupport libnbd
64     ++ lib.optional textStylingSupport gettext
65     ++ lib.optional finalAttrs.finalPackage.doCheck dejagnu;
67   configureFlags = [
68     # libpoke depends on $datadir/poke, so we specify the datadir in
69     # $lib, and later move anything else it doesn't depend on to $out
70     "--datadir=${placeholder "lib"}/share"
71   ];
73   enableParallelBuilding = true;
75   doCheck = true;
76   nativeCheckInputs = [ dejagnu ];
78   postInstall = ''
79     moveToOutput share/emacs "$out"
80     moveToOutput share/vim "$out"
81   '';
83   passthru = {
84     updateScript = writeScript "update-poke" ''
85       #!/usr/bin/env nix-shell
86       #!nix-shell -i bash -p curl pcre common-updater-scripts
88       set -eu -o pipefail
90       # Expect the text in format of '<a href="...">poke 2.0</a>'
91       new_version="$(curl -s https://www.jemarch.net/poke |
92           pcregrep -o1 '>poke ([0-9.]+)</a>')"
93       update-source-version poke "$new_version"
94     '';
95   };
97   meta = {
98     description = "Interactive, extensible editor for binary data";
99     homepage = "http://www.jemarch.net/poke";
100     changelog = "https://git.savannah.gnu.org/cgit/poke.git/plain/ChangeLog?h=releases/poke-${finalAttrs.version}";
101     license = lib.licenses.gpl3Plus;
102     maintainers = with lib.maintainers; [ kira-bruneau ];
103     platforms = lib.platforms.unix;
104     hydraPlatforms = lib.platforms.linux; # build hangs on Darwin platforms, needs investigation
105   };