nixpkgs/pkgs/development/tools/comby/default.nix
Silvan Mosberger 4f0dadbf38 treewide: format all inactive Nix files
After final improvements to the official formatter implementation,
this commit now performs the first treewide reformat of Nix files using it.
This is part of the implementation of RFC 166.

Only "inactive" files are reformatted, meaning only files that
aren't being touched by any PR with activity in the past 2 months.
This is to avoid conflicts for PRs that might soon be merged.
Later we can do a full treewide reformat to get the rest,
which should not cause as many conflicts.

A CI check has already been running for some time to ensure that new and
already-formatted files are formatted, so the files being reformatted here
should also stay formatted.

This commit was automatically created and can be verified using

    nix-build a08b3a4d19.tar.gz \
      --argstr baseRev b32a094368
    result/bin/apply-formatting $NIXPKGS_PATH
2024-12-10 20:26:33 +01:00

119 lines
2.8 KiB
Nix

{
ocamlPackages,
fetchFromGitHub,
lib,
zlib,
pkg-config,
cacert,
gmp,
libev,
autoconf,
sqlite,
stdenv,
}:
let
mkCombyPackage =
{
pname,
extraBuildInputs ? [ ],
extraNativeInputs ? [ ],
preBuild ? "",
}:
ocamlPackages.buildDunePackage rec {
inherit pname preBuild;
version = "1.8.1";
duneVersion = "3";
minimalOCamlVersion = "4.08.1";
doCheck = true;
src = fetchFromGitHub {
owner = "comby-tools";
repo = "comby";
rev = version;
sha256 = "sha256-yQrfSzJgJm0OWJxhxst2XjZULIVHeEfPMvMIwH7BYDc=";
};
patches = [ ./comby.patch ];
nativeBuildInputs = extraNativeInputs;
buildInputs = [
ocamlPackages.core
ocamlPackages.core_kernel
ocamlPackages.ocaml_pcre
ocamlPackages.mparser
ocamlPackages.mparser-pcre
ocamlPackages.angstrom
ocamlPackages.ppx_deriving
ocamlPackages.ppx_deriving_yojson
ocamlPackages.ppx_sexp_conv
ocamlPackages.ppx_sexp_message
] ++ extraBuildInputs;
nativeCheckInputs = [ cacert ];
meta = {
description = "Tool for searching and changing code structure";
mainProgram = "comby";
license = lib.licenses.asl20;
homepage = "https://comby.dev";
};
};
combyKernel = mkCombyPackage { pname = "comby-kernel"; };
combySemantic = mkCombyPackage {
pname = "comby-semantic";
extraBuildInputs = [ ocamlPackages.cohttp-lwt-unix ];
};
in
mkCombyPackage {
pname = "comby";
# tests have to be removed before building otherwise installPhase will fail
# cli tests expect a path to the built binary
preBuild = ''
substituteInPlace test/common/dune \
--replace "test_cli_list" "" \
--replace "test_cli_helper" "" \
--replace "test_cli" ""
rm test/common/{test_cli_list,test_cli_helper,test_cli}.ml
'';
extraBuildInputs =
[
zlib
gmp
libev
sqlite
ocamlPackages.shell # This input must appear before `parany` or any other input that propagates `ocamlnet`
ocamlPackages.lwt
ocamlPackages.patience_diff
ocamlPackages.toml
ocamlPackages.cohttp-lwt-unix
ocamlPackages.textutils
ocamlPackages.jst-config
ocamlPackages.parany
ocamlPackages.conduit-lwt-unix
ocamlPackages.lwt_react
ocamlPackages.tar-unix
ocamlPackages.tls
ocamlPackages.ppx_jane
ocamlPackages.ppx_expect
ocamlPackages.dune-configurator
combyKernel
combySemantic
]
++ (
if !stdenv.hostPlatform.isAarch32 && !stdenv.hostPlatform.isAarch64 then
[ ocamlPackages.hack_parallel ]
else
[ ]
);
extraNativeInputs = [
autoconf
pkg-config
];
}