Merge pull request #119986 from evils/kicad-usage
This commit is contained in:
commit
b4034ccbc5
@ -15,84 +15,124 @@
|
|||||||
, boost
|
, boost
|
||||||
, pkg-config
|
, pkg-config
|
||||||
, doxygen
|
, doxygen
|
||||||
|
, graphviz
|
||||||
, pcre
|
, pcre
|
||||||
, libpthreadstubs
|
, libpthreadstubs
|
||||||
, libXdmcp
|
, libXdmcp
|
||||||
, lndir
|
, lndir
|
||||||
|
|
||||||
|
, util-linux
|
||||||
|
, libselinux
|
||||||
|
, libsepol
|
||||||
|
, libthai
|
||||||
|
, libdatrie
|
||||||
|
, libxkbcommon
|
||||||
|
, epoxy
|
||||||
|
, dbus
|
||||||
|
, at-spi2-core
|
||||||
|
, libXtst
|
||||||
|
|
||||||
|
, swig
|
||||||
|
, python
|
||||||
|
, wxPython
|
||||||
|
, opencascade
|
||||||
|
, opencascade-occt
|
||||||
|
, libngspice
|
||||||
|
, valgrind
|
||||||
|
|
||||||
, stable
|
, stable
|
||||||
, baseName
|
, baseName
|
||||||
, kicadSrc
|
, kicadSrc
|
||||||
, kicadVersion
|
, kicadVersion
|
||||||
, i18n
|
, i18n
|
||||||
, withOCE
|
, withOCE
|
||||||
, opencascade
|
|
||||||
, withOCC
|
, withOCC
|
||||||
, opencascade-occt
|
|
||||||
, withNgspice
|
, withNgspice
|
||||||
, libngspice
|
|
||||||
, withScripting
|
, withScripting
|
||||||
, swig
|
|
||||||
, python
|
|
||||||
, wxPython
|
|
||||||
, debug
|
, debug
|
||||||
, valgrind
|
, sanitizeAddress
|
||||||
|
, sanitizeThreads
|
||||||
, withI18n
|
, withI18n
|
||||||
, gtk3
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
assert lib.asserts.assertMsg (!(withOCE && stdenv.isAarch64)) "OCE fails a test on Aarch64";
|
assert lib.asserts.assertMsg (!(withOCE && stdenv.isAarch64)) "OCE fails a test on Aarch64";
|
||||||
assert lib.asserts.assertMsg (!(withOCC && withOCE))
|
assert lib.asserts.assertMsg (!(withOCC && withOCE))
|
||||||
"Only one of OCC and OCE may be enabled";
|
"Only one of OCC and OCE may be enabled";
|
||||||
|
assert lib.assertMsg (!(stable && (sanitizeAddress || sanitizeThreads)))
|
||||||
|
"Only kicad-unstable(-small) supports address/thread sanitation";
|
||||||
|
assert lib.assertMsg (!(sanitizeAddress && sanitizeThreads))
|
||||||
|
"'sanitizeAddress' and 'sanitizeThreads' are mutually exclusive, use one.";
|
||||||
let
|
let
|
||||||
inherit (lib) optional optionals;
|
inherit (lib) optional optionals;
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "kicad-base";
|
pname = "kicad-base";
|
||||||
version = kicadVersion;
|
version = if (stable) then kicadVersion else builtins.substring 0 10 src.rev;
|
||||||
|
|
||||||
src = kicadSrc;
|
src = kicadSrc;
|
||||||
|
|
||||||
# tagged releases don't have "unknown"
|
# tagged releases don't have "unknown"
|
||||||
# kicad nightlies use git describe --dirty
|
# kicad nightlies use git describe --dirty
|
||||||
# nix removes .git, so its approximated here
|
# nix removes .git, so its approximated here
|
||||||
# "-1" appended to indicate we're adding a patch
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
substituteInPlace CMakeModules/KiCadVersion.cmake \
|
substituteInPlace CMakeModules/KiCadVersion.cmake \
|
||||||
--replace "unknown" "${builtins.substring 0 10 src.rev}-1" \
|
--replace "unknown" "${builtins.substring 0 10 src.rev}" \
|
||||||
--replace "${version}" "${version}-1"
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
makeFlags = optional (debug) [ "CFLAGS+=-Og" "CFLAGS+=-ggdb" ];
|
makeFlags = optionals (debug) [ "CFLAGS+=-Og" "CFLAGS+=-ggdb" ];
|
||||||
|
|
||||||
cmakeFlags =
|
cmakeFlags = optionals (withScripting) [
|
||||||
optionals (withScripting) [
|
"-DKICAD_SCRIPTING=ON"
|
||||||
"-DKICAD_SCRIPTING=ON"
|
"-DKICAD_SCRIPTING_MODULES=ON"
|
||||||
"-DKICAD_SCRIPTING_MODULES=ON"
|
"-DKICAD_SCRIPTING_PYTHON3=ON"
|
||||||
"-DKICAD_SCRIPTING_PYTHON3=ON"
|
"-DKICAD_SCRIPTING_WXPYTHON_PHOENIX=ON"
|
||||||
"-DKICAD_SCRIPTING_WXPYTHON_PHOENIX=ON"
|
]
|
||||||
]
|
++ optional (!withScripting)
|
||||||
++ optional (!withScripting)
|
"-DKICAD_SCRIPTING=OFF"
|
||||||
"-DKICAD_SCRIPTING=OFF"
|
++ optional (withNgspice) "-DKICAD_SPICE=ON"
|
||||||
++ optional (withNgspice) "-DKICAD_SPICE=ON"
|
++ optional (!withOCE) "-DKICAD_USE_OCE=OFF"
|
||||||
++ optional (!withOCE) "-DKICAD_USE_OCE=OFF"
|
++ optional (!withOCC) "-DKICAD_USE_OCC=OFF"
|
||||||
++ optional (!withOCC) "-DKICAD_USE_OCC=OFF"
|
++ optionals (withOCE) [
|
||||||
++ optionals (withOCE) [
|
"-DKICAD_USE_OCE=ON"
|
||||||
"-DKICAD_USE_OCE=ON"
|
"-DOCE_DIR=${opencascade}"
|
||||||
"-DOCE_DIR=${opencascade}"
|
]
|
||||||
]
|
++ optionals (withOCC) [
|
||||||
++ optionals (withOCC) [
|
"-DKICAD_USE_OCC=ON"
|
||||||
"-DKICAD_USE_OCC=ON"
|
"-DOCC_INCLUDE_DIR=${opencascade-occt}/include/opencascade"
|
||||||
"-DOCC_INCLUDE_DIR=${opencascade-occt}/include/opencascade"
|
]
|
||||||
]
|
++ optionals (debug) [
|
||||||
++ optionals (debug) [
|
"-DCMAKE_BUILD_TYPE=Debug"
|
||||||
"-DCMAKE_BUILD_TYPE=Debug"
|
"-DKICAD_STDLIB_DEBUG=ON"
|
||||||
"-DKICAD_STDLIB_DEBUG=ON"
|
"-DKICAD_USE_VALGRIND=ON"
|
||||||
"-DKICAD_USE_VALGRIND=ON"
|
]
|
||||||
]
|
++ optionals (sanitizeAddress) [
|
||||||
;
|
"-DKICAD_SANITIZE_ADDRESS=ON"
|
||||||
|
]
|
||||||
|
++ optionals (sanitizeThreads) [
|
||||||
|
"-DKICAD_SANITIZE_THREADS=ON"
|
||||||
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake doxygen pkg-config lndir ];
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
doxygen
|
||||||
|
graphviz
|
||||||
|
pkg-config
|
||||||
|
lndir
|
||||||
|
]
|
||||||
|
# wanted by configuration on linux, doesn't seem to affect performance
|
||||||
|
# no effect on closure size
|
||||||
|
++ optionals (stdenv.isLinux) [
|
||||||
|
util-linux
|
||||||
|
libselinux
|
||||||
|
libsepol
|
||||||
|
libthai
|
||||||
|
libdatrie
|
||||||
|
libxkbcommon
|
||||||
|
epoxy
|
||||||
|
dbus.daemon
|
||||||
|
at-spi2-core
|
||||||
|
libXtst
|
||||||
|
];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
libGLU
|
libGLU
|
||||||
@ -100,6 +140,7 @@ stdenv.mkDerivation rec {
|
|||||||
zlib
|
zlib
|
||||||
libX11
|
libX11
|
||||||
wxGTK
|
wxGTK
|
||||||
|
wxGTK.gtk
|
||||||
pcre
|
pcre
|
||||||
libXdmcp
|
libXdmcp
|
||||||
gettext
|
gettext
|
||||||
@ -110,7 +151,6 @@ stdenv.mkDerivation rec {
|
|||||||
curl
|
curl
|
||||||
openssl
|
openssl
|
||||||
boost
|
boost
|
||||||
gtk3
|
|
||||||
]
|
]
|
||||||
++ optionals (withScripting) [ swig python wxPython ]
|
++ optionals (withScripting) [ swig python wxPython ]
|
||||||
++ optional (withNgspice) libngspice
|
++ optional (withNgspice) libngspice
|
||||||
|
@ -25,6 +25,8 @@
|
|||||||
, withScripting ? true
|
, withScripting ? true
|
||||||
, python3
|
, python3
|
||||||
, debug ? false
|
, debug ? false
|
||||||
|
, sanitizeAddress ? false
|
||||||
|
, sanitizeThreads ? false
|
||||||
, with3d ? true
|
, with3d ? true
|
||||||
, withI18n ? true
|
, withI18n ? true
|
||||||
, srcs ? { }
|
, srcs ? { }
|
||||||
@ -146,28 +148,28 @@ let
|
|||||||
};
|
};
|
||||||
|
|
||||||
python = python3;
|
python = python3;
|
||||||
wxPython = python.pkgs.wxPython_4_0;
|
wxPython = if (stable)
|
||||||
|
then python.pkgs.wxPython_4_0
|
||||||
|
else python.pkgs.wxPython_4_1;
|
||||||
|
|
||||||
inherit (lib) concatStringsSep flatten optionalString optionals;
|
inherit (lib) concatStringsSep flatten optionalString optionals;
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
|
|
||||||
# Common libraries, referenced during runtime, via the wrapper.
|
# Common libraries, referenced during runtime, via the wrapper.
|
||||||
passthru.libraries = callPackages ./libraries.nix { inherit libSrc libVersion; };
|
passthru.libraries = callPackages ./libraries.nix { inherit libSrc; };
|
||||||
passthru.i18n = callPackage ./i18n.nix {
|
passthru.i18n = callPackage ./i18n.nix { src = i18nSrc; };
|
||||||
src = i18nSrc;
|
|
||||||
version = i18nVersion;
|
|
||||||
};
|
|
||||||
base = callPackage ./base.nix {
|
base = callPackage ./base.nix {
|
||||||
inherit stable baseName;
|
inherit stable baseName;
|
||||||
inherit kicadSrc kicadVersion;
|
inherit kicadSrc kicadVersion;
|
||||||
inherit (passthru) i18n;
|
inherit (passthru) i18n;
|
||||||
inherit wxGTK python wxPython;
|
inherit wxGTK python wxPython;
|
||||||
inherit debug withI18n withOCC withOCE withNgspice withScripting;
|
inherit withI18n withOCC withOCE withNgspice withScripting;
|
||||||
|
inherit debug sanitizeAddress sanitizeThreads;
|
||||||
};
|
};
|
||||||
|
|
||||||
inherit pname;
|
inherit pname;
|
||||||
version = kicadVersion;
|
version = if (stable) then kicadVersion else builtins.substring 0 10 src.src.rev;
|
||||||
|
|
||||||
src = base;
|
src = base;
|
||||||
dontUnpack = true;
|
dontUnpack = true;
|
||||||
@ -193,14 +195,31 @@ stdenv.mkDerivation rec {
|
|||||||
# wrapGAppsHook did these two as well, no idea if it matters...
|
# wrapGAppsHook did these two as well, no idea if it matters...
|
||||||
"--prefix XDG_DATA_DIRS : ${cups}/share"
|
"--prefix XDG_DATA_DIRS : ${cups}/share"
|
||||||
"--prefix GIO_EXTRA_MODULES : ${dconf}/lib/gio/modules"
|
"--prefix GIO_EXTRA_MODULES : ${dconf}/lib/gio/modules"
|
||||||
|
# required to open a bug report link in firefox-wayland
|
||||||
|
"--set-default MOZ_DBUS_REMOTE 1"
|
||||||
|
]
|
||||||
|
++ optionals (stable)
|
||||||
|
[
|
||||||
"--set-default KISYSMOD ${footprints}/share/kicad/modules"
|
"--set-default KISYSMOD ${footprints}/share/kicad/modules"
|
||||||
"--set-default KICAD_SYMBOL_DIR ${symbols}/share/kicad/library"
|
"--set-default KICAD_SYMBOL_DIR ${symbols}/share/kicad/library"
|
||||||
"--set-default KICAD_TEMPLATE_DIR ${templates}/share/kicad/template"
|
"--set-default KICAD_TEMPLATE_DIR ${templates}/share/kicad/template"
|
||||||
"--prefix KICAD_TEMPLATE_DIR : ${symbols}/share/kicad/template"
|
"--prefix KICAD_TEMPLATE_DIR : ${symbols}/share/kicad/template"
|
||||||
"--prefix KICAD_TEMPLATE_DIR : ${footprints}/share/kicad/template"
|
"--prefix KICAD_TEMPLATE_DIR : ${footprints}/share/kicad/template"
|
||||||
]
|
]
|
||||||
++ optionals (with3d) [ "--set-default KISYS3DMOD ${packages3d}/share/kicad/modules/packages3d" ]
|
++ optionals (stable && with3d) [ "--set-default KISYS3DMOD ${packages3d}/share/kicad/modules/packages3d" ]
|
||||||
|
++ optionals (!stable)
|
||||||
|
[
|
||||||
|
"--set-default KICAD6_FOOTPRINT_DIR ${footprints}/share/kicad/modules"
|
||||||
|
"--set-default KICAD6_SYMBOL_DIR ${symbols}/share/kicad/library"
|
||||||
|
"--set-default KICAD6_TEMPLATE_DIR ${templates}/share/kicad/template"
|
||||||
|
"--prefix KICAD6_TEMPLATE_DIR : ${symbols}/share/kicad/template"
|
||||||
|
"--prefix KICAD6_TEMPLATE_DIR : ${footprints}/share/kicad/template"
|
||||||
|
]
|
||||||
|
++ optionals (!stable && with3d)
|
||||||
|
[
|
||||||
|
"--set-default KISYS3DMOD ${packages3d}/share/kicad/3dmodels"
|
||||||
|
"--set-default KICAD6_3DMODEL_DIR ${packages3d}/share/kicad/3dmodels"
|
||||||
|
]
|
||||||
++ optionals (withNgspice) [ "--prefix LD_LIBRARY_PATH : ${libngspice}/lib" ]
|
++ optionals (withNgspice) [ "--prefix LD_LIBRARY_PATH : ${libngspice}/lib" ]
|
||||||
|
|
||||||
# infinisil's workaround for #39493
|
# infinisil's workaround for #39493
|
||||||
@ -238,6 +257,7 @@ stdenv.mkDerivation rec {
|
|||||||
postInstall = ''
|
postInstall = ''
|
||||||
mkdir -p $out/share
|
mkdir -p $out/share
|
||||||
ln -s ${base}/share/applications $out/share/applications
|
ln -s ${base}/share/applications $out/share/applications
|
||||||
|
ln -s ${base}/share/metainfo $out/share/metainfo
|
||||||
ln -s ${base}/share/icons $out/share/icons
|
ln -s ${base}/share/icons $out/share/icons
|
||||||
ln -s ${base}/share/mime $out/share/mime
|
ln -s ${base}/share/mime $out/share/mime
|
||||||
'';
|
'';
|
||||||
@ -260,8 +280,7 @@ stdenv.mkDerivation rec {
|
|||||||
The Programs handle Schematic Capture, and PCB Layout with Gerber output.
|
The Programs handle Schematic Capture, and PCB Layout with Gerber output.
|
||||||
'';
|
'';
|
||||||
license = lib.licenses.gpl3Plus;
|
license = lib.licenses.gpl3Plus;
|
||||||
# berce seems inactive...
|
maintainers = with lib.maintainers; [ evils kiwi ];
|
||||||
maintainers = with lib.maintainers; [ evils kiwi berce ];
|
|
||||||
# kicad is cross platform
|
# kicad is cross platform
|
||||||
platforms = lib.platforms.all;
|
platforms = lib.platforms.all;
|
||||||
# despite that, nipkgs' wxGTK for darwin is "wxmac"
|
# despite that, nipkgs' wxGTK for darwin is "wxmac"
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
, cmake
|
, cmake
|
||||||
, gettext
|
, gettext
|
||||||
, src
|
, src
|
||||||
, version
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
inherit src version;
|
inherit src;
|
||||||
|
|
||||||
pname = "kicad-i18n";
|
pname = "kicad-i18n";
|
||||||
|
version = builtins.substring 0 10 src.rev;
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake gettext ];
|
nativeBuildInputs = [ cmake gettext ];
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
@ -2,13 +2,12 @@
|
|||||||
, cmake
|
, cmake
|
||||||
, gettext
|
, gettext
|
||||||
, libSrc
|
, libSrc
|
||||||
, libVersion
|
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
mkLib = name:
|
mkLib = name:
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
pname = "kicad-${name}";
|
pname = "kicad-${name}";
|
||||||
version = libVersion;
|
version = builtins.substring 0 10 (libSrc name).rev;
|
||||||
|
|
||||||
src = libSrc name;
|
src = libSrc name;
|
||||||
|
|
||||||
|
@ -3,17 +3,17 @@
|
|||||||
{
|
{
|
||||||
"kicad" = {
|
"kicad" = {
|
||||||
kicadVersion = {
|
kicadVersion = {
|
||||||
version = "5.1.9";
|
version = "5.1.10";
|
||||||
src = {
|
src = {
|
||||||
rev = "73d0e3b20dec05c4350efa5b69916eb29a7bfcb5";
|
rev = "88a1d61d58fdd62149bd1e00984e01540148ca1b";
|
||||||
sha256 = "1cqh3bc9y140hbryfk9qavs2y3lj5sm9q0qjxcf4mm472afzckky";
|
sha256 = "10ix560bqy0lprnik1bprxw9ix4g8w2ipvyikx551ak9ryvgwjcc";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
libVersion = {
|
libVersion = {
|
||||||
version = "5.1.9";
|
version = "5.1.10";
|
||||||
libSources = {
|
libSources = {
|
||||||
i18n.rev = "04f3231f60d55400cb81564b2cd465a57d5192d5";
|
i18n.rev = "f081afe79be4660d5c49a9d674e3cb666d76d4d0";
|
||||||
i18n.sha256 = "04jq1dcag6i2ljjfqrib65mn4wg4c4nmi7i946l3bywc0rkqsx1f";
|
i18n.sha256 = "0y51l0r62cnxkvpc21732p3cx7pjvaqjih8193502hlv9kv1j9p6";
|
||||||
symbols.rev = "6dec5004b6a2679c19d4857bda2f90c5ab3a5726";
|
symbols.rev = "6dec5004b6a2679c19d4857bda2f90c5ab3a5726";
|
||||||
symbols.sha256 = "0n25rq32jwyigfw26faqraillwv6zbi2ywy26dkz5zqlf5xp56ad";
|
symbols.sha256 = "0n25rq32jwyigfw26faqraillwv6zbi2ywy26dkz5zqlf5xp56ad";
|
||||||
templates.rev = "1ccbaf3704e8ff4030d0915f71e051af621ef7d7";
|
templates.rev = "1ccbaf3704e8ff4030d0915f71e051af621ef7d7";
|
||||||
@ -27,23 +27,23 @@
|
|||||||
};
|
};
|
||||||
"kicad-unstable" = {
|
"kicad-unstable" = {
|
||||||
kicadVersion = {
|
kicadVersion = {
|
||||||
version = "2020-12-23";
|
version = "2021-05-13";
|
||||||
src = {
|
src = {
|
||||||
rev = "912657dd238ad78cfc5d9d5e426ea850d5554fb3";
|
rev = "8513ca974c28d76d9f74a7dc96601d98e66e87fd";
|
||||||
sha256 = "1p5kr4d4zpajwdmya1f351y1ix8qmvsx1hrnvhzh7yc3g72kgxah";
|
sha256 = "1xlj6jwzwxsa14djqhj0csziii21mr9czvdj6fxqp6px84cifjsh";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
libVersion = {
|
libVersion = {
|
||||||
version = "2020-12-23";
|
version = "2021-05-13";
|
||||||
libSources = {
|
libSources = {
|
||||||
i18n.rev = "e89d9a89bec59199c1ade56ee2556591412ab7b0";
|
i18n.rev = "e89d9a89bec59199c1ade56ee2556591412ab7b0";
|
||||||
i18n.sha256 = "04zaqyhj3qr4ymyd3k5vjpcna64j8klpsygcgjcv29s3rdi8glfl";
|
i18n.sha256 = "04zaqyhj3qr4ymyd3k5vjpcna64j8klpsygcgjcv29s3rdi8glfl";
|
||||||
symbols.rev = "e538abb015b4f289910a6f26b2f1b9cb8bf2efdb";
|
symbols.rev = "32de73ea01347a005790119eb4102c550815685c";
|
||||||
symbols.sha256 = "117y4cm46anlrnw6y6mdjgl1a5gab6h6m7cwx3q7qb284m9bs5gi";
|
symbols.sha256 = "0gj10v06rkxlxngc40d1sfmlcagy5p7jfxid0lch4w0wxfjmks7z";
|
||||||
templates.rev = "32a4f6fab863976fdcfa232e3e08fdcf3323a954";
|
templates.rev = "073d1941c428242a563dcb5301ff5c7479fe9c71";
|
||||||
templates.sha256 = "13r94dghrh9slpj7nkzv0zqv5hk49s6pxm4q5ndqx0y8037ivmhk";
|
templates.sha256 = "14p06m2zvlzzz2w74y83f2zml7mgv5dhy2nyfkpblanxawrzxv1x";
|
||||||
footprints.rev = "15ffd67e01257d4d8134dbd6708cb58977eeccbe";
|
footprints.rev = "8fa36dfa3423d8777472e3475c1c2b0b2069624f";
|
||||||
footprints.sha256 = "1ad5k3wh2zqfibrar7pd3g363jk2q51dvraxnq3zlxa2x4znh7mw";
|
footprints.sha256 = "138xfkr0prxw2djkwc1m4mlp9km99v12sivbqhm1jkq5yxngdbin";
|
||||||
packages3d.rev = "d8b7e8c56d535f4d7e46373bf24c754a8403da1f";
|
packages3d.rev = "d8b7e8c56d535f4d7e46373bf24c754a8403da1f";
|
||||||
packages3d.sha256 = "0dh8ixg0w43wzj5h3164dz6l1vl4llwxhi3qcdgj1lgvrs28aywd";
|
packages3d.sha256 = "0dh8ixg0w43wzj5h3164dz6l1vl4llwxhi3qcdgj1lgvrs28aywd";
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user