From b7f9203059f3a26d7dd8918cb59d48f748bc479b Mon Sep 17 00:00:00 2001 From: Evils Date: Thu, 23 Dec 2021 14:27:57 +0100 Subject: [PATCH 1/8] kicad.updateScript: account for the bad 6.9.9 tag --- pkgs/applications/science/electronics/kicad/update.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/science/electronics/kicad/update.sh b/pkgs/applications/science/electronics/kicad/update.sh index 099440956ae7..defddc036f40 100755 --- a/pkgs/applications/science/electronics/kicad/update.sh +++ b/pkgs/applications/science/electronics/kicad/update.sh @@ -28,7 +28,7 @@ export TMPDIR=/tmp latest_tag="$(git ls-remote --tags --sort -version:refname \ https://gitlab.com/kicad/code/kicad.git \ | grep -o 'refs/tags/[0-9]*\.[0-9]*\.[0-9]*$' \ - | grep -v ".99" | head -n 1 | cut -d '/' -f 3)" + | grep -v "\.99" | grep -v "\.9\.9" | head -n 1 | cut -d '/' -f 3)" all_versions=( "${latest_tag}" master ) From 78f07691832d9912d59f29c002a176585b67f569 Mon Sep 17 00:00:00 2001 From: Evils Date: Thu, 23 Dec 2021 14:52:07 +0100 Subject: [PATCH 2/8] kicad: 5.1.12 -> 6.0.0 remove old build conditionals the old wrapper env vars are no longer applicable to 6.0.0 scripting is no longer optional though wxPython is still an optional dependency? add withI18n build option to kicad.base i18n was moved to the kicad source, and is disabled by default withI18n takes the same default add withPCM option to allow disabling building the Plugin and Content Manager remove the withOCE option the build option was removed in upstream commit: 1c5c052301b607a0cf8b8ed6681f1db1622a865b and unconditionally use wxGTK31-gtk3 and wxPython the pcb editor's python terminal seems to work with these versions --- .../science/electronics/kicad/base.nix | 39 ++++++--------- .../science/electronics/kicad/default.nix | 49 +++---------------- .../science/electronics/kicad/versions.nix | 24 ++++----- 3 files changed, 33 insertions(+), 79 deletions(-) diff --git a/pkgs/applications/science/electronics/kicad/base.nix b/pkgs/applications/science/electronics/kicad/base.nix index 61fcff77e1c7..7cc5a151d74e 100644 --- a/pkgs/applications/science/electronics/kicad/base.nix +++ b/pkgs/applications/science/electronics/kicad/base.nix @@ -35,7 +35,6 @@ , swig , python , wxPython -, opencascade , opencascade-occt , libngspice , valgrind @@ -45,21 +44,16 @@ , kicadSrc , kicadVersion , i18n -, withOCE , withOCC , withNgspice , withScripting +, withI18n +, withPCM , 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."; @@ -75,6 +69,7 @@ stdenv.mkDerivation rec { # tagged releases don't have "unknown" # kicad nightlies use git describe --dirty # nix removes .git, so its approximated here + # "6.99.0" doesn't have "-unknown", yet; so leaving this in case it returns postPatch = '' substituteInPlace CMakeModules/KiCadVersion.cmake \ --replace "unknown" "${builtins.substring 0 10 src.rev}" \ @@ -82,23 +77,14 @@ stdenv.mkDerivation rec { makeFlags = optionals (debug) [ "CFLAGS+=-Og" "CFLAGS+=-ggdb" ]; - cmakeFlags = optionals (stable && withScripting) [ - "-DKICAD_SCRIPTING=ON" - "-DKICAD_SCRIPTING_MODULES=ON" - "-DKICAD_SCRIPTING_PYTHON3=ON" - "-DKICAD_SCRIPTING_WXPYTHON_PHOENIX=ON" + cmakeFlags = optionals (withScripting) [ + "-DKICAD_SCRIPTING_WXPYTHON=ON" ] ++ optionals (!withScripting) [ - "-DKICAD_SCRIPTING=OFF" "-DKICAD_SCRIPTING_WXPYTHON=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" @@ -113,6 +99,12 @@ stdenv.mkDerivation rec { ] ++ optionals (sanitizeThreads) [ "-DKICAD_SANITIZE_THREADS=ON" + ] + ++ optionals (withI18n) [ + "-DKICAD_BUILD_I18N=ON" + ] + ++ optionals (!withPCM) [ + "-DKICAD_PCM=OFF" ]; nativeBuildInputs = [ @@ -154,20 +146,17 @@ stdenv.mkDerivation rec { curl openssl boost + swig + python ] - # unstable requires swig and python - # wxPython still optional - ++ optionals (withScripting || (!stable)) [ swig python ] ++ optional (withScripting) wxPython ++ optional (withNgspice) libngspice - ++ optional (withOCE) opencascade ++ optional (withOCC) opencascade-occt ++ optional (debug) valgrind ; # debug builds fail all but the python test - # 5.1.x fails the eeschema test - doInstallCheck = !debug && !stable; + doInstallCheck = !debug; installCheckTarget = "test"; dontStrip = debug; diff --git a/pkgs/applications/science/electronics/kicad/default.nix b/pkgs/applications/science/electronics/kicad/default.nix index 425234e7f772..4c6ce3f9b73e 100644 --- a/pkgs/applications/science/electronics/kicad/default.nix +++ b/pkgs/applications/science/electronics/kicad/default.nix @@ -2,8 +2,7 @@ , fetchFromGitLab , gnome , dconf -, wxGTK30 -, wxGTK31 +, wxGTK31-gtk3 , makeWrapper , gsettings-desktop-schemas , hicolor-icon-theme @@ -15,7 +14,6 @@ , pname ? "kicad" , stable ? true , oceSupport ? false -, withOCE ? false , withOCCT ? false , withOCC ? true , ngspiceSupport ? false @@ -28,7 +26,8 @@ , sanitizeAddress ? false , sanitizeThreads ? false , with3d ? true -, withI18n ? true +, withI18n ? false +, withPCM ? true # Plugin and Content Manager , srcs ? { } }: @@ -71,8 +70,6 @@ assert withNgspice -> libngspice != null; assert lib.assertMsg (!ngspiceSupport) "`nspiceSupport` was renamed to `withNgspice` for the sake of consistency with other kicad nix arguments."; -assert lib.assertMsg (!oceSupport) - "`oceSupport` was renamed to `withOCE` for the sake of consistency with other kicad nix arguments."; assert lib.assertMsg (!scriptingSupport) "`scriptingSupport` was renamed to `withScripting` for the sake of consistency with other kicad nix arguments."; assert lib.assertMsg (!withOCCT) @@ -132,25 +129,9 @@ let if srcOverridep "libVersion" then srcs.libVersion else versionsImport.${baseName}.libVersion.version; - wxGTK = - if (stable) - # wxGTK3x may default to withGtk2 = false, see #73145 - then - wxGTK30.override - { - withGtk2 = false; - } - # wxGTK31 currently introduces an issue with opening the python interpreter in pcbnew - # but brings high DPI support? - else - wxGTK31.override { - withGtk2 = false; - }; - + wxGTK = wxGTK31-gtk3; python = python3; - wxPython = if (stable) - then python.pkgs.wxPython_4_0 - else python.pkgs.wxPython_4_1; + wxPython = python.pkgs.wxPython_4_1; inherit (lib) concatStringsSep flatten optionalString optionals; in @@ -164,7 +145,7 @@ stdenv.mkDerivation rec { inherit kicadSrc kicadVersion; inherit (passthru) i18n; inherit wxGTK python wxPython; - inherit withI18n withOCC withOCE withNgspice withScripting; + inherit withOCC withNgspice withScripting withI18n withPCM; inherit debug sanitizeAddress sanitizeThreads; }; @@ -197,27 +178,14 @@ stdenv.mkDerivation rec { "--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 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 (stable && with3d) [ "--set-default KISYS3DMOD ${packages3d}/share/kicad/modules/packages3d" ] - ++ optionals (!stable) - [ "--set-default KICAD6_FOOTPRINT_DIR ${footprints}/share/kicad/footprints" "--set-default KICAD6_SYMBOL_DIR ${symbols}/share/kicad/symbols" "--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) + ++ optionals (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" ] @@ -259,9 +227,6 @@ stdenv.mkDerivation rec { ln -s ${base}/share/applications $out/share/applications ln -s ${base}/share/icons $out/share/icons ln -s ${base}/share/mime $out/share/mime - '' + optionalString (stable) '' - ln -s ${base}/share/appdata $out/share/appdata - '' + optionalString (!stable) '' ln -s ${base}/share/metainfo $out/share/metainfo ''; diff --git a/pkgs/applications/science/electronics/kicad/versions.nix b/pkgs/applications/science/electronics/kicad/versions.nix index 50a75cdfd094..2b9b98f4b0ed 100644 --- a/pkgs/applications/science/electronics/kicad/versions.nix +++ b/pkgs/applications/science/electronics/kicad/versions.nix @@ -3,25 +3,25 @@ { "kicad" = { kicadVersion = { - version = "5.1.12"; + version = "6.0.0"; src = { - rev = "84ad8e8a86f13c0697f5cbed8c17977b6545ddc9"; - sha256 = "0kgikchqxds3mp71nkg307mr4c1dgv8akbmksz4w9x8jg4i1mfqq"; + rev = "d3dd2cf0fa975548d027db88d19b8a88866866d8"; + sha256 = "1jrfwyi4zs0rpcpsj01z6687a433nnr56cxbnz12jfg2yafpxk23"; }; }; libVersion = { - version = "5.1.12"; + version = "6.0.0"; libSources = { i18n.rev = "0ad3d7e469e31c8868ad83f90e22a9c18f16aa1f"; i18n.sha256 = "0y51l0r62cnxkvpc21732p3cx7pjvaqjih8193502hlv9kv1j9p6"; - symbols.rev = "97c0bfdd2f5ebe952bc90c60f080a8e41da60615"; - symbols.sha256 = "1zdajim409570xzis53kmrbdcf7000v2vmc90f49h214lrx2zhr2"; - templates.rev = "eca0f632eb76c8f49de4d5a590c83543090d0b7d"; - templates.sha256 = "1fbhn1l3j2rwc29aida9b408wif55i23bp9ddcs7dvf83smjm05g"; - footprints.rev = "b65732f8ebd7ab894fd638f3f2bf4a4e9b24f653"; - footprints.sha256 = "0qpii55dgv2gxqg1qq0dngdnbb9din790qi5qv0l6qqrzx843h5s"; - packages3d.rev = "0ddd588650fede09766b704feb15d30bcb6e144f"; - packages3d.sha256 = "12w7m5nbk9kcnlnlg4sk1sd7xgb9i2kxfi0jcbd0phs89qyl7wjr"; + symbols.rev = "275f22eb9eecd5b6deabdefd82c9a826254d9f23"; + symbols.sha256 = "0wjk464l60xknvgc9d870901lqnx296dw7amlh3wg0wf78izarfr"; + templates.rev = "3a422b5b0928f3fd31579769d4dee2b009a85a11"; + templates.sha256 = "0vbjy1v5923942ma0rqcp1dhylhxk1m4vyfxjxw13sizkrpmlwr1"; + footprints.rev = "3ea7895b0817abecaa34276346749a711b0c69f6"; + footprints.sha256 = "0jv2plwzhhkfx7a2zankkjkbfzjxv43ab8rqpxzqfq2fnx83q6r5"; + packages3d.rev = "e607286d4a48ddf654585b37b45d74416a9a70c7"; + packages3d.sha256 = "0vwcbzq42hzjl4f0zjaswmiff1x59hv64g5n00mx1gl0gwngnyla"; }; }; }; From 818894d6a5bbe548db0d681945c430142511377b Mon Sep 17 00:00:00 2001 From: Evils Date: Sat, 25 Dec 2021 20:12:51 +0100 Subject: [PATCH 3/8] kicad-unstable: 6.0.0-rc1 -> 2021-12-23 --- .../science/electronics/kicad/versions.nix | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pkgs/applications/science/electronics/kicad/versions.nix b/pkgs/applications/science/electronics/kicad/versions.nix index 2b9b98f4b0ed..c15c989bac3f 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 = "6.0.0-rc1"; + version = "2021-12-23"; src = { - rev = "9fb05440b3ef3073613ecdeba6112aeb6b26c4df"; - sha256 = "1j0hd6bpmd80dyvy9mz4n4rr8f849bdwdd4vs8vfbsswf0gxj734"; + rev = "21eb92821866d558acd9e737b643b300a8b18202"; + sha256 = "01hg0byp60xzgz0xxfwvyq1hbvbllsys6lx9yfj27d3qjc3bdk42"; }; }; libVersion = { - version = "6.0.0-rc1"; + version = "2021-12-25"; libSources = { i18n.rev = "e89d9a89bec59199c1ade56ee2556591412ab7b0"; i18n.sha256 = "04zaqyhj3qr4ymyd3k5vjpcna64j8klpsygcgjcv29s3rdi8glfl"; - symbols.rev = "27b627393a7f2733e965ed82a5533a757789cbb2"; - symbols.sha256 = "0p1qay6h6ibkhcz1b8xszsihi432ddi8jgnan2xr5rl4539c4ydp"; + symbols.rev = "125a2e736504e776e4c6fb7f5131efad75edf245"; + symbols.sha256 = "0wjk464l60xknvgc9d870901lqnx296dw7amlh3wg0wf78izarfr"; templates.rev = "8c9ff3dadb9c75cf2932f11c09a46c0c9d84784b"; templates.sha256 = "0vbjy1v5923942ma0rqcp1dhylhxk1m4vyfxjxw13sizkrpmlwr1"; - footprints.rev = "4ce2242095912e491f1690210d9cb2328363b268"; - footprints.sha256 = "1zx13rrpiamxyv7y27mr5xsdz0d09hpwfgc2j496p3q41q2crlq0"; + footprints.rev = "ac8de318d8ef7b3eb64c78c6c2650b7b085f3271"; + footprints.sha256 = "0jv2plwzhhkfx7a2zankkjkbfzjxv43ab8rqpxzqfq2fnx83q6r5"; packages3d.rev = "1080b6e565e56bae9be46db2278a1542092d7a2d"; packages3d.sha256 = "0vwcbzq42hzjl4f0zjaswmiff1x59hv64g5n00mx1gl0gwngnyla"; }; From b3f0da107ea4ed4951afe3fe6ae2b18c2b5d7ec0 Mon Sep 17 00:00:00 2001 From: Evils Date: Thu, 23 Dec 2021 14:25:32 +0100 Subject: [PATCH 4/8] kicad: remove the separate i18n stuff i18n is now in the kicad source in both stable and unstable behind the withI18n flag which is disabled by default --- .../science/electronics/kicad/base.nix | 9 +---- .../science/electronics/kicad/default.nix | 35 +++++-------------- .../science/electronics/kicad/i18n.nix | 18 ---------- .../science/electronics/kicad/update.sh | 20 +---------- .../science/electronics/kicad/versions.nix | 4 --- 5 files changed, 11 insertions(+), 75 deletions(-) delete mode 100644 pkgs/applications/science/electronics/kicad/i18n.nix diff --git a/pkgs/applications/science/electronics/kicad/base.nix b/pkgs/applications/science/electronics/kicad/base.nix index 7cc5a151d74e..78420bf1fae7 100644 --- a/pkgs/applications/science/electronics/kicad/base.nix +++ b/pkgs/applications/science/electronics/kicad/base.nix @@ -43,7 +43,6 @@ , baseName , kicadSrc , kicadVersion -, i18n , withOCC , withNgspice , withScripting @@ -161,16 +160,10 @@ stdenv.mkDerivation rec { dontStrip = debug; - postInstall = optionalString (withI18n) '' - mkdir -p $out/share - lndir ${i18n}/share $out/share - ''; - meta = { description = "Just the built source without the libraries"; longDescription = '' - Just the build products, optionally with the i18n linked in - the libraries are passed via an env var in the wrapper, default.nix + Just the build products, the libraries are passed via an env var in the wrapper, default.nix ''; homepage = "https://www.kicad.org/"; license = lib.licenses.agpl3; diff --git a/pkgs/applications/science/electronics/kicad/default.nix b/pkgs/applications/science/electronics/kicad/default.nix index 4c6ce3f9b73e..bdcac55f9c58 100644 --- a/pkgs/applications/science/electronics/kicad/default.nix +++ b/pkgs/applications/science/electronics/kicad/default.nix @@ -32,23 +32,21 @@ }: # The `srcs` parameter can be used to override the kicad source code -# and all libraries (including i18n), which are otherwise inaccessible +# and all libraries, which are otherwise inaccessible # to overlays since most of the kicad build expression has been # refactored into base.nix, most of the library build expressions have -# been refactored into libraries.nix, and most the i18n build -# expression has been refactored into i18n.nix. Overrides are only -# applied when building `kicad-unstable`. The `srcs` parameter has no -# effect for stable `kicad`. `srcs` takes an attribute set in which +# been refactored into libraries.nix. Overrides are only applied when +# building `kicad-unstable`. The `srcs` parameter has +# no effect for stable `kicad`. `srcs` takes an attribute set in which # any of the following attributes are meaningful (though none are -# mandatory): "kicad", "kicadVersion", "i18n", "symbols", "templates", +# mandatory): "kicad", "kicadVersion", "symbols", "templates", # "footprints", "packages3d", and "libVersion". "kicadVersion" and # "libVersion" should be set to a string with the desired value for # the version attribute in kicad's `mkDerivation` and the version -# attribute in any of the library's or i18n's `mkDerivation`, -# respectively. "kicad", "i18n", "symbols", "templates", "footprints", -# and "packages3d" should be set to an appropriate fetcher (e.g., -# `fetchFromGitLab`). So, for example, a possible overlay for kicad -# is: +# attribute in any of the library's `mkDerivation`, respectively. +# "kicad", "symbols", "templates", "footprints", and "packages3d" +# should be set to an appropriate fetcher (e.g. `fetchFromGitLab`). +# So, for example, a possible overlay for kicad is: # # final: prev: @@ -88,14 +86,6 @@ let sha256 = versionsImport.${baseName}.kicadVersion.src.sha256; }; - i18nSrcFetch = fetchFromGitLab { - group = "kicad"; - owner = "code"; - repo = "kicad-i18n"; - rev = versionsImport.${baseName}.libVersion.libSources.i18n.rev; - sha256 = versionsImport.${baseName}.libVersion.libSources.i18n.sha256; - }; - libSrcFetch = name: fetchFromGitLab { group = "kicad"; owner = "libraries"; @@ -118,11 +108,6 @@ let if srcOverridep "kicadVersion" then srcs.kicadVersion else versionsImport.${baseName}.kicadVersion.version; - i18nSrc = if srcOverridep "i18n" then srcs.i18n else i18nSrcFetch; - i18nVersion = - if srcOverridep "i18nVersion" then srcs.i18nVersion - else versionsImport.${baseName}.libVersion.version; - libSrc = name: if srcOverridep name then srcs.${name} else libSrcFetch name; # TODO does it make sense to only have one version for all libs? libVersion = @@ -139,11 +124,9 @@ stdenv.mkDerivation rec { # Common libraries, referenced during runtime, via the wrapper. passthru.libraries = callPackages ./libraries.nix { inherit libSrc; }; - passthru.i18n = callPackage ./i18n.nix { src = i18nSrc; }; base = callPackage ./base.nix { inherit stable baseName; inherit kicadSrc kicadVersion; - inherit (passthru) i18n; inherit wxGTK python wxPython; inherit withOCC withNgspice withScripting withI18n withPCM; inherit debug sanitizeAddress sanitizeThreads; diff --git a/pkgs/applications/science/electronics/kicad/i18n.nix b/pkgs/applications/science/electronics/kicad/i18n.nix deleted file mode 100644 index c9a70a0060d5..000000000000 --- a/pkgs/applications/science/electronics/kicad/i18n.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ lib, stdenv -, cmake -, gettext -, src -}: - -stdenv.mkDerivation { - inherit src; - - pname = "kicad-i18n"; - version = builtins.substring 0 10 src.rev; - - nativeBuildInputs = [ cmake gettext ]; - meta = with lib; { - license = licenses.gpl2; # https://github.com/KiCad/kicad-i18n/issues/3 - platforms = platforms.all; - }; -} diff --git a/pkgs/applications/science/electronics/kicad/update.sh b/pkgs/applications/science/electronics/kicad/update.sh index defddc036f40..0300a11c7857 100755 --- a/pkgs/applications/science/electronics/kicad/update.sh +++ b/pkgs/applications/science/electronics/kicad/update.sh @@ -66,10 +66,6 @@ gitlab="https://gitlab.com/kicad" # append commit hash or tag gitlab_pre="https://gitlab.com/api/v4/projects/kicad%2Fcode%2Fkicad/repository/archive.tar.gz?sha=" -# not a lib, but separate and already moved to gitlab -i18n="${gitlab}/code/kicad-i18n.git" -i18n_pre="https://gitlab.com/api/v4/projects/kicad%2Fcode%2Fkicad-i18n/repository/archive.tar.gz?sha=" - count=0 printf "Latest tag is\t%s\n" "${latest_tag}" >&2 @@ -127,20 +123,6 @@ for version in "${all_versions[@]}"; do printf "%6sversion =\t\t\t\"%s\";\n" "" "${today}" printf "%6slibSources = {\n" "" - echo "Checking i18n" >&2 - i18n_rev="$(${get_rev} "${i18n}" "${version}" | cut -f1)" - has_rev="$(grep -sm 1 "\"${pname}\"" -A 11 "${file}" | grep -sm 1 "${i18n_rev}" || true)" - has_hash="$(grep -sm 1 "\"${pname}\"" -A 12 "${file}" | grep -sm 1 "i18n.sha256" || true)" - if [[ -n ${has_rev} && -n ${has_hash} && -z ${clean} ]]; then - echo "Reusing old kicad-i18n-${today}.src.sha256, already latest .rev" >&2 - grep -sm 1 "\"${pname}\"" -A 12 "${file}" | grep -sm 1 "i18n" -A 1 - else - printf "%8si18n.rev =\t\t\"%s\";\n" "" "${i18n_rev}" - printf "%8si18n.sha256 =\t\t\"%s\";\n" "" \ - "$(${prefetch} "${i18n_pre}${i18n_rev}")" - count=$((count+1)) - fi - for lib in "${libs[@]}"; do echo "Checking ${lib}" >&2 url="${gitlab}/libraries/kicad-${lib}.git" @@ -166,7 +148,7 @@ for version in "${all_versions[@]}"; do printf "%2s};\n" "" else printf "\nReusing old %s\n" "${pname}" >&2 - grep -sm 1 "\"${pname}\"" -A 23 "${file}" + grep -sm 1 "\"${pname}\"" -A 21 "${file}" fi done printf "}\n" diff --git a/pkgs/applications/science/electronics/kicad/versions.nix b/pkgs/applications/science/electronics/kicad/versions.nix index c15c989bac3f..5fed12b0027b 100644 --- a/pkgs/applications/science/electronics/kicad/versions.nix +++ b/pkgs/applications/science/electronics/kicad/versions.nix @@ -12,8 +12,6 @@ libVersion = { version = "6.0.0"; libSources = { - i18n.rev = "0ad3d7e469e31c8868ad83f90e22a9c18f16aa1f"; - i18n.sha256 = "0y51l0r62cnxkvpc21732p3cx7pjvaqjih8193502hlv9kv1j9p6"; symbols.rev = "275f22eb9eecd5b6deabdefd82c9a826254d9f23"; symbols.sha256 = "0wjk464l60xknvgc9d870901lqnx296dw7amlh3wg0wf78izarfr"; templates.rev = "3a422b5b0928f3fd31579769d4dee2b009a85a11"; @@ -36,8 +34,6 @@ libVersion = { version = "2021-12-25"; libSources = { - i18n.rev = "e89d9a89bec59199c1ade56ee2556591412ab7b0"; - i18n.sha256 = "04zaqyhj3qr4ymyd3k5vjpcna64j8klpsygcgjcv29s3rdi8glfl"; symbols.rev = "125a2e736504e776e4c6fb7f5131efad75edf245"; symbols.sha256 = "0wjk464l60xknvgc9d870901lqnx296dw7amlh3wg0wf78izarfr"; templates.rev = "8c9ff3dadb9c75cf2932f11c09a46c0c9d84784b"; From f7da08bb193e9d0ae9e12319ba2941fa61f5d9c8 Mon Sep 17 00:00:00 2001 From: Evils Date: Sat, 25 Dec 2021 16:52:54 +0100 Subject: [PATCH 5/8] kicad.updateScript: full shellcheck --- .../science/electronics/kicad/update.sh | 42 ++++++++++++------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/pkgs/applications/science/electronics/kicad/update.sh b/pkgs/applications/science/electronics/kicad/update.sh index 0300a11c7857..48270e962f53 100755 --- a/pkgs/applications/science/electronics/kicad/update.sh +++ b/pkgs/applications/science/electronics/kicad/update.sh @@ -1,7 +1,9 @@ #!/usr/bin/env nix-shell #!nix-shell -i bash -p coreutils git nix curl +# shellcheck shell=bash enable=all set -e +shopt -s inherit_errexit # this script will generate versions.nix in the right location # this should contain the versions' revs and hashes @@ -25,10 +27,12 @@ export TMPDIR=/tmp # remove items left in /nix/store? # get the latest tag that isn't an RC or *.99 -latest_tag="$(git ls-remote --tags --sort -version:refname \ - https://gitlab.com/kicad/code/kicad.git \ - | grep -o 'refs/tags/[0-9]*\.[0-9]*\.[0-9]*$' \ - | grep -v "\.99" | grep -v "\.9\.9" | head -n 1 | cut -d '/' -f 3)" +latest_tags="$(git ls-remote --tags --sort -version:refname https://gitlab.com/kicad/code/kicad.git)" +# using a scratch variable to ensure command failures get caught (SC2312) +scratch="$(grep -o 'refs/tags/[0-9]*\.[0-9]*\.[0-9]*$' <<< "${latest_tags}")" +scratch="$(grep -ve '\.99' -e '\.9\.9' <<< "${scratch}")" +scratch="$(head -n 1 <<< "${scratch}")" +latest_tag="$(cut -d '/' -f 3 <<< "${scratch}")" all_versions=( "${latest_tag}" master ) @@ -60,11 +64,15 @@ tmp="${here}/,versions.nix.${RANDOM}" libs=( symbols templates footprints packages3d ) -get_rev="git ls-remote --heads --tags" +get_rev() { + git ls-remote --heads --tags "$@" +} gitlab="https://gitlab.com/kicad" # append commit hash or tag -gitlab_pre="https://gitlab.com/api/v4/projects/kicad%2Fcode%2Fkicad/repository/archive.tar.gz?sha=" +src_pre="https://gitlab.com/api/v4/projects/kicad%2Fcode%2Fkicad/repository/archive.tar.gz?sha=" +lib_pre="https://gitlab.com/api/v4/projects/kicad%2Flibraries%2Fkicad-" +lib_mid="/repository/archive.tar.gz?sha=" count=0 @@ -104,16 +112,19 @@ for version in "${all_versions[@]}"; do printf "%6ssrc = {\n" "" echo "Checking src" >&2 - src_rev="$(${get_rev} "${gitlab}"/code/kicad.git "${version}" | cut -f1)" + scratch="$(get_rev "${gitlab}"/code/kicad.git "${version}")" + src_rev="$(cut -f1 <<< "${scratch}")" has_rev="$(grep -sm 1 "\"${pname}\"" -A 4 "${file}" | grep -sm 1 "${src_rev}" || true)" has_hash="$(grep -sm 1 "\"${pname}\"" -A 5 "${file}" | grep -sm 1 "sha256" || true)" + if [[ -n ${has_rev} && -n ${has_hash} && -z ${clean} ]]; then echo "Reusing old ${pname}.src.sha256, already latest .rev" >&2 - grep -sm 1 "\"${pname}\"" -A 5 "${file}" | grep -sm 1 "rev" -A 1 + scratch=$(grep -sm 1 "\"${pname}\"" -A 5 "${file}") + grep -sm 1 "rev" -A 1 <<< "${scratch}" else + prefetched="$(${prefetch} "${src_pre}${src_rev}")" printf "%8srev =\t\t\t\"%s\";\n" "" "${src_rev}" - printf "%8ssha256 =\t\t\"%s\";\n" \ - "" "$(${prefetch} "${gitlab_pre}${src_rev}")" + printf "%8ssha256 =\t\t\"%s\";\n" "" "${prefetched}" count=$((count+1)) fi printf "%6s};\n" "" @@ -126,20 +137,23 @@ for version in "${all_versions[@]}"; do for lib in "${libs[@]}"; do echo "Checking ${lib}" >&2 url="${gitlab}/libraries/kicad-${lib}.git" - lib_rev="$(${get_rev} "${url}" "${version}" | cut -f1 | tail -n1)" + scratch="$(get_rev "${url}" "${version}")" + scratch="$(cut -f1 <<< "${scratch}")" + lib_rev="$(tail -n1 <<< "${scratch}")" has_rev="$(grep -sm 1 "\"${pname}\"" -A 19 "${file}" | grep -sm 1 "${lib_rev}" || true)" has_hash="$(grep -sm 1 "\"${pname}\"" -A 20 "${file}" | grep -sm 1 "${lib}.sha256" || true)" if [[ -n ${has_rev} && -n ${has_hash} && -z ${clean} ]]; then echo "Reusing old kicad-${lib}-${today}.src.sha256, already latest .rev" >&2 - grep -sm 1 "\"${pname}\"" -A 20 "${file}" | grep -sm 1 "${lib}" -A 1 + scratch="$(grep -sm 1 "\"${pname}\"" -A 20 "${file}")" + grep -sm 1 "${lib}" -A 1 <<< "${scratch}" else + prefetched="$(${prefetch} "${lib_pre}${lib}${lib_mid}${lib_rev}")" printf "%8s%s.rev =\t" "" "${lib}" case "${lib}" in symbols|templates) printf "\t" ;; *) ;; esac printf "\"%s\";\n" "${lib_rev}" - printf "%8s%s.sha256 =\t\"%s\";\n" "" \ - "${lib}" "$(${prefetch} "https://gitlab.com/api/v4/projects/kicad%2Flibraries%2Fkicad-${lib}/repository/archive.tar.gz?sha=${lib_rev}")" + printf "%8s%s.sha256 =\t\"%s\";\n" "" "${lib}" "${prefetched}" count=$((count+1)) fi done From e54357a7d28ba3a69b0e13d5164815281bce0cc9 Mon Sep 17 00:00:00 2001 From: Evils Date: Sun, 26 Dec 2021 00:55:34 +0100 Subject: [PATCH 6/8] kicad: KICAD_SPICE build option defaults to ON and has apparently done so since it was added... --- pkgs/applications/science/electronics/kicad/base.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/science/electronics/kicad/base.nix b/pkgs/applications/science/electronics/kicad/base.nix index 78420bf1fae7..fdda40341eb1 100644 --- a/pkgs/applications/science/electronics/kicad/base.nix +++ b/pkgs/applications/science/electronics/kicad/base.nix @@ -82,7 +82,7 @@ stdenv.mkDerivation rec { ++ optionals (!withScripting) [ "-DKICAD_SCRIPTING_WXPYTHON=OFF" ] - ++ optional (withNgspice) "-DKICAD_SPICE=ON" + ++ optional (!withNgspice) "-DKICAD_SPICE=OFF" ++ optional (!withOCC) "-DKICAD_USE_OCC=OFF" ++ optionals (withOCC) [ "-DKICAD_USE_OCC=ON" From 83e6fe5557aa296f1d40c06458a28a2d7c99dbc1 Mon Sep 17 00:00:00 2001 From: Evils Date: Sun, 26 Dec 2021 01:23:07 +0100 Subject: [PATCH 7/8] kicad: remove unused options the asserts are in nixos-unstable by now and use the build_qa flag to disable building unused tests --- pkgs/applications/science/electronics/kicad/base.nix | 3 +++ .../science/electronics/kicad/default.nix | 11 ----------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/pkgs/applications/science/electronics/kicad/base.nix b/pkgs/applications/science/electronics/kicad/base.nix index fdda40341eb1..b54bbb714a58 100644 --- a/pkgs/applications/science/electronics/kicad/base.nix +++ b/pkgs/applications/science/electronics/kicad/base.nix @@ -93,6 +93,9 @@ stdenv.mkDerivation rec { "-DKICAD_STDLIB_DEBUG=ON" "-DKICAD_USE_VALGRIND=ON" ] + ++ optionals (!doInstallCheck) [ + "-DKICAD_BUILD_QA_TESTS=OFF" + ] ++ optionals (sanitizeAddress) [ "-DKICAD_SANITIZE_ADDRESS=ON" ] diff --git a/pkgs/applications/science/electronics/kicad/default.nix b/pkgs/applications/science/electronics/kicad/default.nix index bdcac55f9c58..44a538370dae 100644 --- a/pkgs/applications/science/electronics/kicad/default.nix +++ b/pkgs/applications/science/electronics/kicad/default.nix @@ -13,13 +13,9 @@ , pname ? "kicad" , stable ? true -, oceSupport ? false -, withOCCT ? false , withOCC ? true -, ngspiceSupport ? false , withNgspice ? true , libngspice -, scriptingSupport ? false , withScripting ? true , python3 , debug ? false @@ -65,13 +61,6 @@ # }); # } -assert withNgspice -> libngspice != null; -assert lib.assertMsg (!ngspiceSupport) - "`nspiceSupport` was renamed to `withNgspice` for the sake of consistency with other kicad nix arguments."; -assert lib.assertMsg (!scriptingSupport) - "`scriptingSupport` was renamed to `withScripting` for the sake of consistency with other kicad nix arguments."; -assert lib.assertMsg (!withOCCT) - "`withOCCT` was renamed to `withOCC` for the sake of consistency with upstream cmake options."; let baseName = if (stable) then "kicad" else "kicad-unstable"; versionsImport = import ./versions.nix; From 2753f7c8e1727d0c4068353d01f742aeccf87b59 Mon Sep 17 00:00:00 2001 From: Evils Date: Mon, 27 Dec 2021 05:45:34 +0100 Subject: [PATCH 8/8] kicad: disable tests due to an intermittent failure of the qa_pcbnew test https://gitlab.com/kicad/code/kicad/-/issues/9888 --- pkgs/applications/science/electronics/kicad/base.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/science/electronics/kicad/base.nix b/pkgs/applications/science/electronics/kicad/base.nix index b54bbb714a58..2f4fd63574b0 100644 --- a/pkgs/applications/science/electronics/kicad/base.nix +++ b/pkgs/applications/science/electronics/kicad/base.nix @@ -158,7 +158,9 @@ stdenv.mkDerivation rec { ; # debug builds fail all but the python test - doInstallCheck = !debug; + #doInstallCheck = !debug; + # temporarily disabled until upstream issue 9888 is resolved + doInstallCheck = false; installCheckTarget = "test"; dontStrip = debug;