pyenv: 2.4.14 -> 2.4.22 (#363286)
[NixPkgs.git] / pkgs / applications / science / electronics / kicad / base.nix
blob3d39261bc7a5236e6f3f206826068ab4ba68aa0f
1 { lib
2 , stdenv
3 , cmake
4 , libGLU
5 , libGL
6 , zlib
7 , wxGTK
8 , gtk3
9 , libX11
10 , gettext
11 , glew
12 , glm
13 , cairo
14 , curl
15 , openssl
16 , boost
17 , pkg-config
18 , doxygen
19 , graphviz
20 , pcre
21 , libpthreadstubs
22 , libXdmcp
23 , unixODBC
24 , libgit2
25 , libsecret
26 , libgcrypt
27 , libgpg-error
29 , util-linux
30 , libselinux
31 , libsepol
32 , libthai
33 , libdatrie
34 , libxkbcommon
35 , libepoxy
36 , dbus
37 , at-spi2-core
38 , libXtst
39 , pcre2
40 , libdeflate
42 , swig
43 , python
44 , wxPython
45 , opencascade-occt_7_6
46 , libngspice
47 , valgrind
49 , stable
50 , testing
51 , baseName
52 , kicadSrc
53 , kicadVersion
54 , withNgspice
55 , withScripting
56 , withI18n
57 , debug
58 , sanitizeAddress
59 , sanitizeThreads
62 assert lib.assertMsg (!(sanitizeAddress && sanitizeThreads))
63   "'sanitizeAddress' and 'sanitizeThreads' are mutually exclusive, use one.";
64 assert testing -> !stable
65   -> throw "testing implies stable and cannot be used with stable = false";
67 let
68   opencascade-occt = opencascade-occt_7_6;
69   inherit (lib) optional optionals optionalString;
71 stdenv.mkDerivation rec {
72   pname = "kicad-base";
73   version = if (stable) then kicadVersion else builtins.substring 0 10 src.rev;
75   src = kicadSrc;
77   patches = [
78     # upstream issue 12941 (attempted to upstream, but appreciably unacceptable)
79     ./writable.patch
80     # https://gitlab.com/kicad/code/kicad/-/issues/15687
81     ./runtime_stock_data_path.patch
82   ];
84   # tagged releases don't have "unknown"
85   # kicad testing and nightlies use git describe --dirty
86   # nix removes .git, so its approximated here
87   postPatch = lib.optionalString (!stable || testing) ''
88     substituteInPlace cmake/KiCadVersion.cmake \
89       --replace "unknown" "${builtins.substring 0 10 src.rev}"
91     substituteInPlace cmake/CreateGitVersionHeader.cmake \
92       --replace "0000000000000000000000000000000000000000" "${src.rev}"
93   '';
95   makeFlags = optionals (debug) [ "CFLAGS+=-Og" "CFLAGS+=-ggdb" ];
97   cmakeFlags = [
98     "-DKICAD_USE_EGL=ON"
99     "-DOCC_INCLUDE_DIR=${opencascade-occt}/include/opencascade"
100     # https://gitlab.com/kicad/code/kicad/-/issues/17133
101     "-DCMAKE_CTEST_ARGUMENTS='--exclude-regex;qa_spice'"
102   ]
103   ++ optional (stdenv.hostPlatform.system == "aarch64-linux")
104     "-DCMAKE_CTEST_ARGUMENTS=--exclude-regex;'qa_spice|qa_cli'"
105   ++ optional (stable && !withNgspice) "-DKICAD_SPICE=OFF"
106   ++ optionals (!withScripting) [
107     "-DKICAD_SCRIPTING_WXPYTHON=OFF"
108   ]
109   ++ optionals (withI18n) [
110     "-DKICAD_BUILD_I18N=ON"
111   ]
112   ++ optionals (!doInstallCheck) [
113     "-DKICAD_BUILD_QA_TESTS=OFF"
114   ]
115   ++ optionals (debug) [
116     "-DKICAD_STDLIB_DEBUG=ON"
117     "-DKICAD_USE_VALGRIND=ON"
118   ]
119   ++ optionals (sanitizeAddress) [
120     "-DKICAD_SANITIZE_ADDRESS=ON"
121   ]
122   ++ optionals (sanitizeThreads) [
123     "-DKICAD_SANITIZE_THREADS=ON"
124   ];
126   cmakeBuildType = if debug then "Debug" else "Release";
128   nativeBuildInputs = [
129     cmake
130     doxygen
131     graphviz
132     pkg-config
133     libgit2
134     libsecret
135     libgcrypt
136     libgpg-error
137   ]
138   # wanted by configuration on linux, doesn't seem to affect performance
139   # no effect on closure size
140   ++ optionals (stdenv.hostPlatform.isLinux) [
141     util-linux
142     libselinux
143     libsepol
144     libthai
145     libdatrie
146     libxkbcommon
147     libepoxy
148     dbus
149     at-spi2-core
150     libXtst
151     pcre2
152   ];
154   buildInputs = [
155     libGLU
156     libGL
157     zlib
158     libX11
159     wxGTK
160     gtk3
161     pcre
162     libXdmcp
163     gettext
164     glew
165     glm
166     libpthreadstubs
167     cairo
168     curl
169     openssl
170     boost
171     swig
172     python
173     unixODBC
174     libdeflate
175     opencascade-occt
176   ]
177   ++ optional (withScripting) wxPython
178   ++ optional (withNgspice) libngspice
179   ++ optional (debug) valgrind;
181   # some ngspice tests attempt to write to $HOME/.cache/
182   # this could be and was resolved with XDG_CACHE_HOME = "$TMP";
183   # but failing tests still attempt to create $HOME
184   # and the newer CLI tests seem to also use $HOME...
185   HOME = "$TMP";
187   # debug builds fail all but the python test
188   doInstallCheck = !(debug);
189   installCheckTarget = "test";
191   nativeInstallCheckInputs = [
192     (python.withPackages(ps: with ps; [
193       numpy
194       pytest
195       cairosvg
196       pytest-image-diff
197     ]))
198   ];
200   dontStrip = debug;
202   meta = {
203     description = "Just the built source without the libraries";
204     longDescription = ''
205       Just the build products, the libraries are passed via an env var in the wrapper, default.nix
206     '';
207     homepage = "https://www.kicad.org/";
208     license = lib.licenses.gpl3Plus;
209     platforms = lib.platforms.all;
210   };