125 lines
3 KiB
Nix
125 lines
3 KiB
Nix
|
{
|
||
|
lib,
|
||
|
python3,
|
||
|
fetchPypi,
|
||
|
fetchFromGitHub,
|
||
|
clang,
|
||
|
clang-tools,
|
||
|
cppcheck,
|
||
|
gcc,
|
||
|
makeWrapper,
|
||
|
withClang ? false,
|
||
|
withClangTools ? false,
|
||
|
withCppcheck ? false,
|
||
|
withGcc ? false,
|
||
|
}:
|
||
|
let
|
||
|
python = python3.override {
|
||
|
packageOverrides = self: super: rec {
|
||
|
# codechecker is incompatible with SQLAlchemy greater than 1.3
|
||
|
sqlalchemy = super.sqlalchemy_1_4.overridePythonAttrs (oldAttrs: rec {
|
||
|
version = "1.3.23";
|
||
|
pname = oldAttrs.pname;
|
||
|
src = fetchFromGitHub {
|
||
|
owner = "sqlalchemy";
|
||
|
repo = "sqlalchemy";
|
||
|
rev = "rel_${lib.replaceStrings [ "." ] [ "_" ] version}";
|
||
|
hash = "sha256-hWA0/f7rQpEfYTg10i0rBK3qeJbw3p6HW7S59rLnD0Q=";
|
||
|
};
|
||
|
doCheck = false;
|
||
|
# That test does not exist in the 1.3 branch so we get an error for disabling it
|
||
|
disabledTestPaths = builtins.filter (
|
||
|
testPath: testPath != "test/ext/mypy"
|
||
|
) oldAttrs.disabledTestPaths;
|
||
|
});
|
||
|
sqlalchemy_1_4 = sqlalchemy;
|
||
|
|
||
|
# The current alembic version is not compatible with SQLAlchemy 1.3 so we need to downgrade it
|
||
|
alembic = super.alembic.overridePythonAttrs (oldAttrs: rec {
|
||
|
pname = "alembic";
|
||
|
version = "1.5.5";
|
||
|
src = fetchPypi {
|
||
|
inherit pname version;
|
||
|
hash = "sha256-3wAowZJ1os/xN+OWF6Oc3NvRFzczuHtr+iV7fAhgITs=";
|
||
|
};
|
||
|
doCheck = false;
|
||
|
dependencies = oldAttrs.dependencies ++ [
|
||
|
super.python-dateutil
|
||
|
super.python-editor
|
||
|
];
|
||
|
});
|
||
|
};
|
||
|
};
|
||
|
python3Packages = python.pkgs;
|
||
|
in
|
||
|
python3Packages.buildPythonApplication rec {
|
||
|
pname = "codechecker";
|
||
|
version = "6.24.0";
|
||
|
pyproject = true;
|
||
|
|
||
|
src = fetchPypi {
|
||
|
inherit pname version;
|
||
|
hash = "sha256-ftZACUf2lAHokcUXj45LRA7/3goOcIy521cGl6qhR98=";
|
||
|
};
|
||
|
|
||
|
nativeBuildInputs = with python3Packages; [
|
||
|
setuptools
|
||
|
pythonRelaxDepsHook
|
||
|
];
|
||
|
|
||
|
propagatedBuildInputs = with python3Packages; [
|
||
|
lxml
|
||
|
sqlalchemy
|
||
|
alembic
|
||
|
portalocker
|
||
|
psutil
|
||
|
multiprocess
|
||
|
thrift
|
||
|
gitpython
|
||
|
types-pyyaml
|
||
|
sarif-tools
|
||
|
pytest
|
||
|
pycodestyle
|
||
|
pylint
|
||
|
mkdocs
|
||
|
coverage
|
||
|
];
|
||
|
|
||
|
pythonRelaxDeps = [
|
||
|
"thrift"
|
||
|
"portalocker"
|
||
|
"types-pyyaml"
|
||
|
"lxml"
|
||
|
"psutil"
|
||
|
"multiprocess"
|
||
|
"gitpython"
|
||
|
"sarif-tools"
|
||
|
"pyyaml"
|
||
|
];
|
||
|
|
||
|
postInstall = ''
|
||
|
wrapProgram "$out/bin/CodeChecker" --prefix PATH : ${
|
||
|
lib.makeBinPath (
|
||
|
[ ]
|
||
|
++ lib.optional withClang clang
|
||
|
++ lib.optional withClangTools clang-tools
|
||
|
++ lib.optional withCppcheck cppcheck
|
||
|
++ lib.optional withGcc gcc
|
||
|
)
|
||
|
}
|
||
|
'';
|
||
|
|
||
|
meta = with lib; {
|
||
|
homepage = "https://github.com/Ericsson/codechecker";
|
||
|
changelog = "https://github.com/Ericsson/codechecker/releases/tag/v${version}";
|
||
|
description = "Analyzer tooling, defect database and viewer extension for the Clang Static Analyzer and Clang Tidy";
|
||
|
license = licenses.asl20-llvm;
|
||
|
maintainers = with maintainers; [
|
||
|
zebreus
|
||
|
felixsinger
|
||
|
];
|
||
|
mainProgram = "CodeChecker";
|
||
|
platforms = platforms.linux;
|
||
|
};
|
||
|
}
|