From 95de1291b2f288ae4f7bec7dc862e3896cb5e256 Mon Sep 17 00:00:00 2001 From: Evils Date: Mon, 18 Jan 2021 02:22:16 +0100 Subject: [PATCH 1/8] kicad-unstable: use wxPython 4.1 --- pkgs/applications/science/electronics/kicad/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/science/electronics/kicad/default.nix b/pkgs/applications/science/electronics/kicad/default.nix index 86bda3092bc..e0dccb22c43 100644 --- a/pkgs/applications/science/electronics/kicad/default.nix +++ b/pkgs/applications/science/electronics/kicad/default.nix @@ -146,7 +146,9 @@ let }; 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; in From 552a5a900cc33279e47126dff35bdf1008b84fba Mon Sep 17 00:00:00 2001 From: Evils Date: Fri, 8 Jan 2021 09:52:50 +0100 Subject: [PATCH 2/8] kicad-unstable: set KICAD6 env vars --- .../science/electronics/kicad/default.nix | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/science/electronics/kicad/default.nix b/pkgs/applications/science/electronics/kicad/default.nix index e0dccb22c43..cd79e819353 100644 --- a/pkgs/applications/science/electronics/kicad/default.nix +++ b/pkgs/applications/science/electronics/kicad/default.nix @@ -195,14 +195,29 @@ stdenv.mkDerivation rec { # wrapGAppsHook did these two as well, no idea if it matters... "--prefix XDG_DATA_DIRS : ${cups}/share" "--prefix GIO_EXTRA_MODULES : ${dconf}/lib/gio/modules" - + ] + ++ optionals (stable) + [ "--set-default KISYSMOD ${footprints}/share/kicad/modules" "--set-default KICAD_SYMBOL_DIR ${symbols}/share/kicad/library" "--set-default KICAD_TEMPLATE_DIR ${templates}/share/kicad/template" "--prefix KICAD_TEMPLATE_DIR : ${symbols}/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" ] # infinisil's workaround for #39493 From b54dfb232e09a0bfce0267434595e9be542fb30c Mon Sep 17 00:00:00 2001 From: Evils Date: Sun, 25 Apr 2021 07:49:06 +0200 Subject: [PATCH 3/8] kicad-unstable: link through new /share/metainfo --- pkgs/applications/science/electronics/kicad/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/applications/science/electronics/kicad/default.nix b/pkgs/applications/science/electronics/kicad/default.nix index cd79e819353..81c687c07ec 100644 --- a/pkgs/applications/science/electronics/kicad/default.nix +++ b/pkgs/applications/science/electronics/kicad/default.nix @@ -255,6 +255,7 @@ stdenv.mkDerivation rec { postInstall = '' mkdir -p $out/share 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/mime $out/share/mime ''; From 7a69e69a0b749172edea86eb7506326695b29f8d Mon Sep 17 00:00:00 2001 From: Evils Date: Mon, 18 Jan 2021 02:29:27 +0100 Subject: [PATCH 4/8] kicad-unstable: 2020-12-23 -> 2021-05-13 --- .../science/electronics/kicad/versions.nix | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pkgs/applications/science/electronics/kicad/versions.nix b/pkgs/applications/science/electronics/kicad/versions.nix index 8a5e5d8f5f5..98c30354265 100644 --- a/pkgs/applications/science/electronics/kicad/versions.nix +++ b/pkgs/applications/science/electronics/kicad/versions.nix @@ -27,23 +27,23 @@ }; "kicad-unstable" = { kicadVersion = { - version = "2020-12-23"; + version = "2021-05-13"; src = { - rev = "912657dd238ad78cfc5d9d5e426ea850d5554fb3"; - sha256 = "1p5kr4d4zpajwdmya1f351y1ix8qmvsx1hrnvhzh7yc3g72kgxah"; + rev = "8513ca974c28d76d9f74a7dc96601d98e66e87fd"; + sha256 = "1xlj6jwzwxsa14djqhj0csziii21mr9czvdj6fxqp6px84cifjsh"; }; }; libVersion = { - version = "2020-12-23"; + version = "2021-05-13"; libSources = { i18n.rev = "e89d9a89bec59199c1ade56ee2556591412ab7b0"; i18n.sha256 = "04zaqyhj3qr4ymyd3k5vjpcna64j8klpsygcgjcv29s3rdi8glfl"; - symbols.rev = "e538abb015b4f289910a6f26b2f1b9cb8bf2efdb"; - symbols.sha256 = "117y4cm46anlrnw6y6mdjgl1a5gab6h6m7cwx3q7qb284m9bs5gi"; - templates.rev = "32a4f6fab863976fdcfa232e3e08fdcf3323a954"; - templates.sha256 = "13r94dghrh9slpj7nkzv0zqv5hk49s6pxm4q5ndqx0y8037ivmhk"; - footprints.rev = "15ffd67e01257d4d8134dbd6708cb58977eeccbe"; - footprints.sha256 = "1ad5k3wh2zqfibrar7pd3g363jk2q51dvraxnq3zlxa2x4znh7mw"; + symbols.rev = "32de73ea01347a005790119eb4102c550815685c"; + symbols.sha256 = "0gj10v06rkxlxngc40d1sfmlcagy5p7jfxid0lch4w0wxfjmks7z"; + templates.rev = "073d1941c428242a563dcb5301ff5c7479fe9c71"; + templates.sha256 = "14p06m2zvlzzz2w74y83f2zml7mgv5dhy2nyfkpblanxawrzxv1x"; + footprints.rev = "8fa36dfa3423d8777472e3475c1c2b0b2069624f"; + footprints.sha256 = "138xfkr0prxw2djkwc1m4mlp9km99v12sivbqhm1jkq5yxngdbin"; packages3d.rev = "d8b7e8c56d535f4d7e46373bf24c754a8403da1f"; packages3d.sha256 = "0dh8ixg0w43wzj5h3164dz6l1vl4llwxhi3qcdgj1lgvrs28aywd"; }; From 3fe839e78cfb63661cf00cda0407a11ab8c05b76 Mon Sep 17 00:00:00 2001 From: Evils Date: Tue, 27 Apr 2021 18:20:28 +0200 Subject: [PATCH 5/8] kicad: 5.1.9 -> 5.1.10 --- .../science/electronics/kicad/versions.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/applications/science/electronics/kicad/versions.nix b/pkgs/applications/science/electronics/kicad/versions.nix index 98c30354265..5fa9aba64b0 100644 --- a/pkgs/applications/science/electronics/kicad/versions.nix +++ b/pkgs/applications/science/electronics/kicad/versions.nix @@ -3,17 +3,17 @@ { "kicad" = { kicadVersion = { - version = "5.1.9"; + version = "5.1.10"; src = { - rev = "73d0e3b20dec05c4350efa5b69916eb29a7bfcb5"; - sha256 = "1cqh3bc9y140hbryfk9qavs2y3lj5sm9q0qjxcf4mm472afzckky"; + rev = "88a1d61d58fdd62149bd1e00984e01540148ca1b"; + sha256 = "10ix560bqy0lprnik1bprxw9ix4g8w2ipvyikx551ak9ryvgwjcc"; }; }; libVersion = { - version = "5.1.9"; + version = "5.1.10"; libSources = { - i18n.rev = "04f3231f60d55400cb81564b2cd465a57d5192d5"; - i18n.sha256 = "04jq1dcag6i2ljjfqrib65mn4wg4c4nmi7i946l3bywc0rkqsx1f"; + i18n.rev = "f081afe79be4660d5c49a9d674e3cb666d76d4d0"; + i18n.sha256 = "0y51l0r62cnxkvpc21732p3cx7pjvaqjih8193502hlv9kv1j9p6"; symbols.rev = "6dec5004b6a2679c19d4857bda2f90c5ab3a5726"; symbols.sha256 = "0n25rq32jwyigfw26faqraillwv6zbi2ywy26dkz5zqlf5xp56ad"; templates.rev = "1ccbaf3704e8ff4030d0915f71e051af621ef7d7"; From 7dc05fed4f27268995be0101f96d81ff78d18666 Mon Sep 17 00:00:00 2001 From: Evils Date: Fri, 23 Apr 2021 05:55:43 +0200 Subject: [PATCH 6/8] kicad: bunch of minor cleanup squash of the following kicad: makeFlags: optional -> optionals kicad: remove -1 in version string, no more patch should have been removed in a52e974cff8 kicad: remove berce as maintainer kicad: gtk3 -> wxGTK.gtk use wxGTK.gtk rather than gtk3 add graphviz as doxygen wants it (no idea if doxygen is required...) minor compilation warning kicad: rearrange / sort inputs separate optional deps and options kicad: clear some configuration warnings linux specific stuff that's wanted by something in config kicad: fix opening bug report in firefox wayland may be removed when kicad goes native? --- .../science/electronics/kicad/base.nix | 108 +++++++++++------- .../science/electronics/kicad/default.nix | 5 +- 2 files changed, 71 insertions(+), 42 deletions(-) diff --git a/pkgs/applications/science/electronics/kicad/base.nix b/pkgs/applications/science/electronics/kicad/base.nix index 1a5c0de5fb7..e5119af4952 100644 --- a/pkgs/applications/science/electronics/kicad/base.nix +++ b/pkgs/applications/science/electronics/kicad/base.nix @@ -15,30 +15,42 @@ , boost , pkg-config , doxygen +, graphviz , pcre , libpthreadstubs , libXdmcp , lndir +, util-linux +, libselinux +, libsepol +, libthai +, libdatrie +, libxkbcommon +, epoxy +, dbus +, at-spi2-core +, libXtst + +, swig +, python +, wxPython +, opencascade +, opencascade-occt +, libngspice +, valgrind + , stable , baseName , kicadSrc , kicadVersion , i18n , withOCE -, opencascade , withOCC -, opencascade-occt , withNgspice -, libngspice , withScripting -, swig -, python -, wxPython , debug -, valgrind , withI18n -, gtk3 }: assert lib.asserts.assertMsg (!(withOCE && stdenv.isAarch64)) "OCE fails a test on Aarch64"; @@ -56,43 +68,59 @@ stdenv.mkDerivation rec { # tagged releases don't have "unknown" # kicad nightlies use git describe --dirty # nix removes .git, so its approximated here - # "-1" appended to indicate we're adding a patch postPatch = '' substituteInPlace CMakeModules/KiCadVersion.cmake \ - --replace "unknown" "${builtins.substring 0 10 src.rev}-1" \ - --replace "${version}" "${version}-1" + --replace "unknown" "${builtins.substring 0 10 src.rev}" \ ''; - makeFlags = optional (debug) [ "CFLAGS+=-Og" "CFLAGS+=-ggdb" ]; + makeFlags = optionals (debug) [ "CFLAGS+=-Og" "CFLAGS+=-ggdb" ]; - cmakeFlags = - optionals (withScripting) [ - "-DKICAD_SCRIPTING=ON" - "-DKICAD_SCRIPTING_MODULES=ON" - "-DKICAD_SCRIPTING_PYTHON3=ON" - "-DKICAD_SCRIPTING_WXPYTHON_PHOENIX=ON" - ] - ++ optional (!withScripting) - "-DKICAD_SCRIPTING=OFF" - ++ optional (withNgspice) "-DKICAD_SPICE=ON" - ++ optional (!withOCE) "-DKICAD_USE_OCE=OFF" - ++ optional (!withOCC) "-DKICAD_USE_OCC=OFF" - ++ optionals (withOCE) [ - "-DKICAD_USE_OCE=ON" - "-DOCE_DIR=${opencascade}" - ] - ++ optionals (withOCC) [ - "-DKICAD_USE_OCC=ON" - "-DOCC_INCLUDE_DIR=${opencascade-occt}/include/opencascade" - ] - ++ optionals (debug) [ - "-DCMAKE_BUILD_TYPE=Debug" - "-DKICAD_STDLIB_DEBUG=ON" - "-DKICAD_USE_VALGRIND=ON" - ] - ; + cmakeFlags = optionals (withScripting) [ + "-DKICAD_SCRIPTING=ON" + "-DKICAD_SCRIPTING_MODULES=ON" + "-DKICAD_SCRIPTING_PYTHON3=ON" + "-DKICAD_SCRIPTING_WXPYTHON_PHOENIX=ON" + ] + ++ optional (!withScripting) + "-DKICAD_SCRIPTING=OFF" + ++ optional (withNgspice) "-DKICAD_SPICE=ON" + ++ optional (!withOCE) "-DKICAD_USE_OCE=OFF" + ++ optional (!withOCC) "-DKICAD_USE_OCC=OFF" + ++ optionals (withOCE) [ + "-DKICAD_USE_OCE=ON" + "-DOCE_DIR=${opencascade}" + ] + ++ optionals (withOCC) [ + "-DKICAD_USE_OCC=ON" + "-DOCC_INCLUDE_DIR=${opencascade-occt}/include/opencascade" + ] + ++ optionals (debug) [ + "-DCMAKE_BUILD_TYPE=Debug" + "-DKICAD_STDLIB_DEBUG=ON" + "-DKICAD_USE_VALGRIND=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 = [ libGLU @@ -100,6 +128,7 @@ stdenv.mkDerivation rec { zlib libX11 wxGTK + wxGTK.gtk pcre libXdmcp gettext @@ -110,7 +139,6 @@ stdenv.mkDerivation rec { curl openssl boost - gtk3 ] ++ optionals (withScripting) [ swig python wxPython ] ++ optional (withNgspice) libngspice diff --git a/pkgs/applications/science/electronics/kicad/default.nix b/pkgs/applications/science/electronics/kicad/default.nix index 81c687c07ec..9d27b59dd5b 100644 --- a/pkgs/applications/science/electronics/kicad/default.nix +++ b/pkgs/applications/science/electronics/kicad/default.nix @@ -195,6 +195,8 @@ stdenv.mkDerivation rec { # wrapGAppsHook did these two as well, no idea if it matters... "--prefix XDG_DATA_DIRS : ${cups}/share" "--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) [ @@ -278,8 +280,7 @@ stdenv.mkDerivation rec { The Programs handle Schematic Capture, and PCB Layout with Gerber output. ''; license = lib.licenses.gpl3Plus; - # berce seems inactive... - maintainers = with lib.maintainers; [ evils kiwi berce ]; + maintainers = with lib.maintainers; [ evils kiwi ]; # kicad is cross platform platforms = lib.platforms.all; # despite that, nipkgs' wxGTK for darwin is "wxmac" From e37d772beb4aeb47dce8bc31e4320e679b65a854 Mon Sep 17 00:00:00 2001 From: Evils Date: Wed, 7 Apr 2021 07:39:58 +0200 Subject: [PATCH 7/8] kicad: avoid rebuild on date change the date changes more often than most of the inputs the date can also change on the base without other changes this causes a substantial rebuild for no reason --- pkgs/applications/science/electronics/kicad/base.nix | 2 +- pkgs/applications/science/electronics/kicad/default.nix | 9 +++------ pkgs/applications/science/electronics/kicad/i18n.nix | 4 ++-- .../applications/science/electronics/kicad/libraries.nix | 3 +-- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/pkgs/applications/science/electronics/kicad/base.nix b/pkgs/applications/science/electronics/kicad/base.nix index e5119af4952..931202a1f89 100644 --- a/pkgs/applications/science/electronics/kicad/base.nix +++ b/pkgs/applications/science/electronics/kicad/base.nix @@ -61,7 +61,7 @@ let in stdenv.mkDerivation rec { pname = "kicad-base"; - version = kicadVersion; + version = if (stable) then kicadVersion else builtins.substring 0 10 src.rev; src = kicadSrc; diff --git a/pkgs/applications/science/electronics/kicad/default.nix b/pkgs/applications/science/electronics/kicad/default.nix index 9d27b59dd5b..e8cb749268f 100644 --- a/pkgs/applications/science/electronics/kicad/default.nix +++ b/pkgs/applications/science/electronics/kicad/default.nix @@ -155,11 +155,8 @@ in stdenv.mkDerivation rec { # Common libraries, referenced during runtime, via the wrapper. - passthru.libraries = callPackages ./libraries.nix { inherit libSrc libVersion; }; - passthru.i18n = callPackage ./i18n.nix { - src = i18nSrc; - version = i18nVersion; - }; + passthru.libraries = callPackages ./libraries.nix { inherit libSrc; }; + passthru.i18n = callPackage ./i18n.nix { src = i18nSrc; }; base = callPackage ./base.nix { inherit stable baseName; inherit kicadSrc kicadVersion; @@ -169,7 +166,7 @@ stdenv.mkDerivation rec { }; inherit pname; - version = kicadVersion; + version = if (stable) then kicadVersion else builtins.substring 0 10 src.src.rev; src = base; dontUnpack = true; diff --git a/pkgs/applications/science/electronics/kicad/i18n.nix b/pkgs/applications/science/electronics/kicad/i18n.nix index 9a93e4ca7ce..c9a70a0060d 100644 --- a/pkgs/applications/science/electronics/kicad/i18n.nix +++ b/pkgs/applications/science/electronics/kicad/i18n.nix @@ -2,13 +2,13 @@ , cmake , gettext , src -, version }: stdenv.mkDerivation { - inherit src version; + inherit src; pname = "kicad-i18n"; + version = builtins.substring 0 10 src.rev; nativeBuildInputs = [ cmake gettext ]; meta = with lib; { diff --git a/pkgs/applications/science/electronics/kicad/libraries.nix b/pkgs/applications/science/electronics/kicad/libraries.nix index e98f2e49576..9591cbc31c3 100644 --- a/pkgs/applications/science/electronics/kicad/libraries.nix +++ b/pkgs/applications/science/electronics/kicad/libraries.nix @@ -2,13 +2,12 @@ , cmake , gettext , libSrc -, libVersion }: let mkLib = name: stdenv.mkDerivation { pname = "kicad-${name}"; - version = libVersion; + version = builtins.substring 0 10 (libSrc name).rev; src = libSrc name; From e2661b00f7b8cf1fdfa0b637375d901c5717e2a2 Mon Sep 17 00:00:00 2001 From: Evils Date: Sat, 23 Jan 2021 10:58:33 +0100 Subject: [PATCH 8/8] kicad: add sanitizeAddress & sanitizeThreads options only kicad 5.99 or later are affected was briefly -DKICAD_SANITIZE=ON are mutually exclusive according to a compiler error --- pkgs/applications/science/electronics/kicad/base.nix | 12 ++++++++++++ .../science/electronics/kicad/default.nix | 5 ++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/science/electronics/kicad/base.nix b/pkgs/applications/science/electronics/kicad/base.nix index 931202a1f89..9848eb58399 100644 --- a/pkgs/applications/science/electronics/kicad/base.nix +++ b/pkgs/applications/science/electronics/kicad/base.nix @@ -50,12 +50,18 @@ , withNgspice , withScripting , debug +, sanitizeAddress +, sanitizeThreads , withI18n }: assert lib.asserts.assertMsg (!(withOCE && stdenv.isAarch64)) "OCE fails a test on Aarch64"; assert lib.asserts.assertMsg (!(withOCC && withOCE)) "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 inherit (lib) optional optionals; in @@ -98,6 +104,12 @@ stdenv.mkDerivation rec { "-DCMAKE_BUILD_TYPE=Debug" "-DKICAD_STDLIB_DEBUG=ON" "-DKICAD_USE_VALGRIND=ON" + ] + ++ optionals (sanitizeAddress) [ + "-DKICAD_SANITIZE_ADDRESS=ON" + ] + ++ optionals (sanitizeThreads) [ + "-DKICAD_SANITIZE_THREADS=ON" ]; nativeBuildInputs = [ diff --git a/pkgs/applications/science/electronics/kicad/default.nix b/pkgs/applications/science/electronics/kicad/default.nix index e8cb749268f..79a044a800c 100644 --- a/pkgs/applications/science/electronics/kicad/default.nix +++ b/pkgs/applications/science/electronics/kicad/default.nix @@ -25,6 +25,8 @@ , withScripting ? true , python3 , debug ? false +, sanitizeAddress ? false +, sanitizeThreads ? false , with3d ? true , withI18n ? true , srcs ? { } @@ -162,7 +164,8 @@ stdenv.mkDerivation rec { inherit kicadSrc kicadVersion; inherit (passthru) i18n; inherit wxGTK python wxPython; - inherit debug withI18n withOCC withOCE withNgspice withScripting; + inherit withI18n withOCC withOCE withNgspice withScripting; + inherit debug sanitizeAddress sanitizeThreads; }; inherit pname;