1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 igraph,
6 pygments,
7 scikit-build-core,
8 pybind11,
9 ninja,
10 cmake,
11 pytestCheckHook,
12 setuptools,
13}:
14
15buildPythonPackage rec {
16 pname = "explorerscript";
17 version = "0.2.1.post2";
18 pyproject = true;
19
20 src = fetchFromGitHub {
21 owner = "SkyTemple";
22 repo = "explorerscript";
23 rev = "refs/tags/${version}";
24 hash = "sha256-cKEceWr7XmZbuomPOmjQ32ptAjz3LZDQBWAgZEFadDY=";
25 # Include a pinned antlr4 fork used as a C++ library
26 fetchSubmodules = true;
27 };
28
29 build-system = [
30 setuptools
31 scikit-build-core
32 ninja
33 cmake
34 pybind11
35 ];
36
37 # The source include some auto-generated ANTLR code that could be recompiled, but trying that resulted in a crash while decompiling unionall.ssb.
38 # We thus do not rebuild them.
39
40 postPatch = ''
41 substituteInPlace pyproject.toml \
42 --replace-fail "scikit-build-core<=0.9.8" scikit-build-core
43 '';
44
45 dontUseCmakeConfigure = true;
46
47 pythonRelaxDeps = [
48 "igraph"
49 ];
50
51 dependencies = [
52 igraph
53 ];
54
55 optional-dependencies.pygments = [ pygments ];
56
57 nativeCheckInputs = [ pytestCheckHook ] ++ optional-dependencies.pygments;
58
59 pythonImportsCheck = [ "explorerscript" ];
60
61 meta = {
62 homepage = "https://github.com/SkyTemple/explorerscript";
63 description = "Programming language + compiler/decompiler for creating scripts for Pokémon Mystery Dungeon Explorers of Sky";
64 license = lib.licenses.mit;
65 maintainers = with lib.maintainers; [ marius851000 ];
66 };
67}