diff options
Diffstat (limited to 'pkgs/applications/science/electronics')
11 files changed, 163 insertions, 64 deletions
diff --git a/pkgs/applications/science/electronics/dataexplorer/default.nix b/pkgs/applications/science/electronics/dataexplorer/default.nix index 128a5f62eeaa..8fd9dcc5eaa8 100644 --- a/pkgs/applications/science/electronics/dataexplorer/default.nix +++ b/pkgs/applications/science/electronics/dataexplorer/default.nix @@ -8,11 +8,11 @@ stdenv.mkDerivation rec { pname = "dataexplorer"; - version = "3.8.0"; + version = "3.8.3"; src = fetchurl { url = "mirror://savannah/dataexplorer/dataexplorer-${version}-src.tar.gz"; - sha256 = "sha256-ZluT/jCjcOrlh2nqe0j56shmtGqfm11BCnsp6mWDXkQ="; + sha256 = "sha256-vU9klb6Mweg8yxnClsIdelG4uW92if64SJ7UHumYYbs="; }; nativeBuildInputs = [ ant makeWrapper ]; diff --git a/pkgs/applications/science/electronics/kicad/base.nix b/pkgs/applications/science/electronics/kicad/base.nix index a2e5bbe72a56..bff63f3b2d7e 100644 --- a/pkgs/applications/science/electronics/kicad/base.nix +++ b/pkgs/applications/science/electronics/kicad/base.nix @@ -43,6 +43,7 @@ , valgrind , stable +, testing , baseName , kicadSrc , kicadVersion @@ -56,6 +57,8 @@ assert lib.assertMsg (!(sanitizeAddress && sanitizeThreads)) "'sanitizeAddress' and 'sanitizeThreads' are mutually exclusive, use one."; +assert testing -> !stable + -> throw "testing implies stable and cannot be used with stable = false"; let inherit (lib) optional optionals optionalString; @@ -74,9 +77,9 @@ stdenv.mkDerivation rec { ]; # tagged releases don't have "unknown" - # kicad nightlies use git describe --dirty + # kicad testing and nightlies use git describe --dirty # nix removes .git, so its approximated here - postPatch = lib.optionalString (!stable) '' + postPatch = lib.optionalString (!stable || testing) '' substituteInPlace cmake/KiCadVersion.cmake \ --replace "unknown" "${builtins.substring 0 10 src.rev}" @@ -92,7 +95,7 @@ stdenv.mkDerivation rec { ] ++ optionals (stable) [ # https://gitlab.com/kicad/code/kicad/-/issues/12491 - # should be resolved in the next release + # should be resolved in the next major? release "-DCMAKE_CTEST_ARGUMENTS='--exclude-regex;qa_eeschema'" ] ++ optional (stable && !withNgspice) "-DKICAD_SPICE=OFF" diff --git a/pkgs/applications/science/electronics/kicad/default.nix b/pkgs/applications/science/electronics/kicad/default.nix index c6c66839e4bc..fa0c7ae7a75e 100644 --- a/pkgs/applications/science/electronics/kicad/default.nix +++ b/pkgs/applications/science/electronics/kicad/default.nix @@ -2,22 +2,26 @@ , runCommand , newScope , fetchFromGitLab -, gnome -, dconf -, wxGTK32 -, gtk3 , makeWrapper -, gsettings-desktop-schemas -, hicolor-icon-theme +, symlinkJoin , callPackage , callPackages + +, gnome +, dconf +, gtk3 +, wxGTK32 , librsvg , cups +, gsettings-desktop-schemas +, hicolor-icon-theme + , unzip , jq , pname ? "kicad" , stable ? true +, testing ? false , withNgspice ? !stdenv.isDarwin , libngspice , withScripting ? true @@ -29,7 +33,6 @@ , with3d ? true , withI18n ? true , srcs ? { } -, symlinkJoin }: # `addons`: https://dev-docs.kicad.org/en/addons/ @@ -75,7 +78,9 @@ # } let - baseName = if (stable) then "kicad" else "kicad-unstable"; + baseName = if (testing) then "kicad-testing" + else if (stable) then "kicad" + else "kicad-unstable"; versionsImport = import ./versions.nix; # versions.nix does not provide us with version, src and rev. We @@ -118,7 +123,7 @@ let wxGTK = wxGTK32; python = python3; - wxPython = python.pkgs.wxPython_4_2; + wxPython = python.pkgs.wxpython; addonPath = "addon.zip"; addonsDrvs = map (pkg: pkg.override { inherit addonPath python3; }) addons; @@ -154,7 +159,7 @@ stdenv.mkDerivation rec { passthru.libraries = callPackages ./libraries.nix { inherit libSrc; }; passthru.callPackage = newScope { inherit addonPath python3; }; base = callPackage ./base.nix { - inherit stable baseName; + inherit stable testing baseName; inherit kicadSrc kicadVersion; inherit wxGTK python wxPython; inherit withNgspice withScripting withI18n; @@ -262,17 +267,16 @@ stdenv.mkDerivation rec { ln -s ${base}/share/metainfo $out/share/metainfo ''; - # can't run this for each pname - # stable and unstable are in the same versions.nix - # and kicad-small reuses stable - # with "all" it updates both, run it manually if you don't want that - # and can't git commit if this could be running in parallel with other scripts - passthru.updateScript = [ ./update.sh "all" ]; + passthru.updateScript = { + command = [ ./update.sh "${pname}" ]; + supportedFeatures = [ "commit" ]; + }; meta = rec { description = (if (stable) then "Open Source Electronics Design Automation suite" - else "Open Source EDA suite, development build") + else if (testing) then "Open Source EDA suite, latest on stable branch" + else "Open Source EDA suite, latest on master branch") + (lib.optionalString (!with3d) ", without 3D models"); homepage = "https://www.kicad.org/"; longDescription = '' diff --git a/pkgs/applications/science/electronics/kicad/update.sh b/pkgs/applications/science/electronics/kicad/update.sh index 625b2962fa23..b47e2d84b336 100755 --- a/pkgs/applications/science/electronics/kicad/update.sh +++ b/pkgs/applications/science/electronics/kicad/update.sh @@ -1,5 +1,5 @@ #!/usr/bin/env nix-shell -#!nix-shell -i bash -p coreutils git nix curl +#!nix-shell -i bash -p coreutils git nix curl jq # shellcheck shell=bash enable=all set -e @@ -25,38 +25,63 @@ export TMPDIR=/tmp # if there is, default to commiting? # won't work when running in parallel? # remove items left in /nix/store? +# reuse hashes of already checked revs (to avoid redownloading testing's packages3d) + +# nixpkgs' update.nix passes in UPDATE_NIX_PNAME to indicate which package is being updated +# assigning a default value to that as shellcheck doesn't like the use of unassigned variables +: "${UPDATE_NIX_PNAME:=""}" +# update.nix can also parse JSON output of this script to formulate a commit +# this requires we collect the version string in the old versions.nix for the updated package +old_version="" +new_version="" + # get the latest tag that isn't an RC or *.99 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}")" +scratch="$(sed -n '1p' <<< "${scratch}")" latest_tag="$(cut -d '/' -f 3 <<< "${scratch}")" -all_versions=( "${latest_tag}" master ) +# get the latest branch name for testing +branches="$(git ls-remote --heads --sort -version:refname https://gitlab.com/kicad/code/kicad.git)" +scratch="$(grep -o 'refs/heads/[0-9]*\.[0-9]*$' <<< "${branches}")" +scratch="$(sed -n '1p' <<< "${scratch}")" +testing_branch="$(cut -d '/' -f 3 <<< "${scratch}")" + +# "latest_tag" and "master" directly refer to what we want +# "testing" uses "testing_branch" found above +all_versions=( "${latest_tag}" testing master ) prefetch="nix-prefetch-url --unpack --quiet" clean="" check_stable="" +check_testing=1 check_unstable=1 commit="" -for arg in "$@"; do +for arg in "$@" "${UPDATE_NIX_PNAME}"; do case "${arg}" in help|-h|--help) echo "Read me!" >&2; exit 1; ;; - kicad|release|tag|stable|*small|5*|6*) check_stable=1; check_unstable="" ;; - all|both|full) check_stable=1; check_unstable=1 ;; + kicad|kicad-small|release|tag|stable|5*|6*|7*|8*) check_stable=1; check_testing=""; check_unstable="" ;; + *testing|kicad-testing-small) check_testing=1; check_unstable="" ;; + *unstable|*unstable-small|master|main) check_unstable=1; check_testing="" ;; + latest|now|today) check_unstable=1; check_testing=1 ;; + all|both|full) check_stable=1; check_testing=1; check_unstable=1 ;; + clean|fix|*fuck) check_stable=1; check_testing=1; check_unstable=1; clean=1 ;; commit) commit=1 ;; - clean|fix|*fuck) check_stable=1; check_unstable=1; clean=1 ;; - master|*unstable|latest|now|today) check_unstable=1 ;; *) ;; esac done here="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -now=$(date --iso-8601 --utc) +commit_date() { + gitlab_json="$(curl -s https://gitlab.com/api/v4/projects/kicad%2Fcode%2Fkicad/repository/commits/"$1")" + commit_created="$(jq .created_at --raw-output <<< "${gitlab_json}")" + date --date="${commit_created}" --iso-8601 --utc +} file="${here}/versions.nix" # just in case this runs in parallel @@ -65,11 +90,7 @@ tmp="${here}/,versions.nix.${RANDOM}" libs=( symbols templates footprints packages3d ) get_rev() { - if [[ ${version} == "master" ]]; then - git ls-remote --heads "$@" - else - git ls-remote --tags "$@" - fi + git ls-remote "$@" } gitlab="https://gitlab.com/kicad" @@ -78,13 +99,14 @@ src_pre="https://gitlab.com/api/v4/projects/kicad%2Fcode%2Fkicad/repository/arch lib_pre="https://gitlab.com/api/v4/projects/kicad%2Flibraries%2Fkicad-" lib_mid="/repository/archive.tar.gz?sha=" +# number of items updated count=0 -printf "Latest tag is\t%s\n" "${latest_tag}" >&2 +printf "Latest tag is %s\n" "${latest_tag}" >&2 if [[ ! -f ${file} ]]; then echo "No existing file, generating from scratch" >&2 - check_stable=1; check_unstable=1; clean=1 + check_stable=1; check_testing=1; check_unstable=1; clean=1 fi printf "Writing %s\n" "${tmp}" >&2 @@ -97,32 +119,58 @@ printf "{\n" for version in "${all_versions[@]}"; do + src_version=${version}; + lib_version=${version}; + # testing is the stable branch on the main repo + # but the libraries don't have such a branch + # only the latest release tag and a master branch + if [[ ${version} == "testing" ]]; then + src_version=${testing_branch}; + lib_version=${latest_tag}; + fi + if [[ ${version} == "master" ]]; then pname="kicad-unstable" - today="${now}" + elif [[ ${version} == "testing" ]]; then + pname="kicad-testing" else pname="kicad" - today="${version}" fi + # skip a version if we don't want to check it - if [[ (${version} != "master" && -n ${check_stable}) \ - || (${version} == "master" && -n ${check_unstable}) ]]; then + if [[ (-n ${check_stable} && ${version} != "master" && ${version} != "testing") \ + || (-n ${check_testing} && ${version} == "testing") \ + || (-n ${check_unstable} && ${version} == "master" ) ]]; then + + now=$(commit_date "${src_version}") + + if [[ ${version} == "master" ]]; then + pname="kicad-unstable" + new_version="${now}" + elif [[ ${version} == "testing" ]]; then + pname="kicad-testing" + new_version="${testing_branch}-${now}" + else + pname="kicad" + new_version="${version}" + fi printf "\nChecking %s\n" "${pname}" >&2 printf "%2s\"%s\" = {\n" "" "${pname}" printf "%4skicadVersion = {\n" "" - printf "%6sversion =\t\t\t\"%s\";\n" "" "${today}" + printf "%6sversion =\t\t\t\"%s\";\n" "" "${new_version}" printf "%6ssrc = {\n" "" echo "Checking src" >&2 - scratch="$(get_rev "${gitlab}"/code/kicad.git "${version}")" + scratch="$(get_rev "${gitlab}"/code/kicad.git "${src_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)" + old_version="$(grep -sm 1 "\"${pname}\"" -A 3 "${file}" | grep -sm 1 "version" | awk -F "\"" '{print $2}' || true)" if [[ -n ${has_rev} && -n ${has_hash} && -z ${clean} ]]; then - echo "Reusing old ${pname}.src.sha256, already latest .rev" >&2 + echo "Reusing old ${pname}.src.sha256, already latest .rev at ${old_version}" >&2 scratch=$(grep -sm 1 "\"${pname}\"" -A 5 "${file}") grep -sm 1 "rev" -A 1 <<< "${scratch}" else @@ -135,19 +183,19 @@ for version in "${all_versions[@]}"; do printf "%4s};\n" "" printf "%4slibVersion = {\n" "" - printf "%6sversion =\t\t\t\"%s\";\n" "" "${today}" + printf "%6sversion =\t\t\t\"%s\";\n" "" "${new_version}" printf "%6slibSources = {\n" "" for lib in "${libs[@]}"; do echo "Checking ${lib}" >&2 url="${gitlab}/libraries/kicad-${lib}.git" - scratch="$(get_rev "${url}" "${version}")" + scratch="$(get_rev "${url}" "${lib_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 + echo "Reusing old kicad-${lib}-${new_version}.src.sha256, already latest .rev" >&2 scratch="$(grep -sm 1 "\"${pname}\"" -A 20 "${file}")" grep -sm 1 "${lib}" -A 1 <<< "${scratch}" else @@ -191,3 +239,22 @@ if [[ ${count} -gt 0 ]]; then else echo "No changes, those checked are up to date" >&2 fi + +# using UPDATE_NIX_ATTR_PATH to detect if this is being called from update.nix +# and output JSON to describe the changes +if [[ -n ${UPDATE_NIX_ATTR_PATH} ]]; then + + if [[ ${count} -eq 0 ]]; then echo "[{}]"; exit 0; fi + + jq -n \ + --arg attrpath "${UPDATE_NIX_PNAME}" \ + --arg oldversion "${old_version}" \ + --arg newversion "${new_version}" \ + --arg file "${file}" \ +'[{ + "attrPath": $attrpath, + "oldVersion": $oldversion, + "newVersion": $newversion, + "files": [ $file ] +}]' +fi diff --git a/pkgs/applications/science/electronics/kicad/versions.nix b/pkgs/applications/science/electronics/kicad/versions.nix index b938d1659553..ffab1ba75121 100644 --- a/pkgs/applications/science/electronics/kicad/versions.nix +++ b/pkgs/applications/science/electronics/kicad/versions.nix @@ -23,6 +23,28 @@ }; }; }; + "kicad-testing" = { + kicadVersion = { + version = "7.0-2024-01-07"; + src = { + rev = "ace6439758f8d211001235f36f02a60488337e41"; + sha256 = "0z4p2srz9rld7mq6k2y5fipz8mgsdhh2506wam4388nklzzkrccr"; + }; + }; + libVersion = { + version = "7.0-2024-01-07"; + libSources = { + symbols.rev = "eedf6c9ddac2816023e817d4dc91032f9d7390b9"; + symbols.sha256 = "0nlgmxf9z1vf4g350dfkxql1dawgmw275wqxkgszsfxmhdfpmi9v"; + templates.rev = "9ce98cc45f3778e05c404edebf0f98de5c247ffe"; + templates.sha256 = "0mykfwwik7472i4r0isc5szj3dnmvd0538p0vlmzh4rcgj3pj3vm"; + footprints.rev = "7061fc9847ecc1b838e60dc6826db534028494f6"; + footprints.sha256 = "1az6fzh1lma71mj12bc4bblnmzjayrxhkb8w9rjvlhvvgv33cdmy"; + packages3d.rev = "d7345b34daaa23acf0d4506ed937fb424b5b18cd"; + packages3d.sha256 = "0xzyi4mgyifwc6dppdzh6jq294mkj0a71cwkqw2ymz1kfbksw626"; + }; + }; + }; "kicad-unstable" = { kicadVersion = { version = "2023-08-15"; diff --git a/pkgs/applications/science/electronics/lepton-eda/default.nix b/pkgs/applications/science/electronics/lepton-eda/default.nix index 8d4217d0aba3..00b0961895d3 100644 --- a/pkgs/applications/science/electronics/lepton-eda/default.nix +++ b/pkgs/applications/science/electronics/lepton-eda/default.nix @@ -7,9 +7,9 @@ , autoreconfHook , guile , flex -, gtk2 +, gtk3 , glib -, gtkextra +, gtksheet , gettext , gawk , shared-mime-info @@ -19,19 +19,20 @@ stdenv.mkDerivation rec { pname = "lepton-eda"; - version = "1.9.17-20211219"; + version = "1.9.18-20220529"; src = fetchurl { url = "https://github.com/lepton-eda/lepton-eda/releases/download/${version}/lepton-eda-${builtins.head (lib.splitString "-" version)}.tar.gz"; - sha256 = "sha256-lOneKeJUcw6jOX/3iv9BDWOJ3xip/vGhzxHHNAbtsS8="; + hash = "sha256-X9yNuosNR1Jf3gYWQZeOnKdxzJLld29Sn9XYsPGWYYI="; }; nativeBuildInputs = [ pkg-config makeWrapper texinfo autoreconfHook ]; - propagatedBuildInputs = [ guile flex gtk2 glib gtkextra gettext gawk shared-mime-info groff libstroke ]; + propagatedBuildInputs = [ guile flex gtk3 glib gtksheet gettext gawk shared-mime-info groff libstroke ]; configureFlags = [ "--disable-update-xdg-database" + "--with-gtk3" ]; CFLAGS = [ diff --git a/pkgs/applications/science/electronics/magic-vlsi/default.nix b/pkgs/applications/science/electronics/magic-vlsi/default.nix index 77ee3d97c9c8..2e4ef8003d15 100644 --- a/pkgs/applications/science/electronics/magic-vlsi/default.nix +++ b/pkgs/applications/science/electronics/magic-vlsi/default.nix @@ -13,11 +13,11 @@ stdenv.mkDerivation rec { pname = "magic-vlsi"; - version = "8.3.453"; + version = "8.3.454"; src = fetchurl { url = "http://opencircuitdesign.com/magic/archive/magic-${version}.tgz"; - sha256 = "sha256-1G8vm9AGboIElufXUIa9ZABaHVjx4UiBNA0ZTYeuVtU="; + sha256 = "sha256-nHZJ2L54J2x+H7S29TeGPInTgjEhRFv3h2ki0ccGYB0="; }; nativeBuildInputs = [ python3 ]; diff --git a/pkgs/applications/science/electronics/nvc/default.nix b/pkgs/applications/science/electronics/nvc/default.nix index a6f2c9d44731..003de49a4915 100644 --- a/pkgs/applications/science/electronics/nvc/default.nix +++ b/pkgs/applications/science/electronics/nvc/default.nix @@ -16,13 +16,13 @@ stdenv.mkDerivation rec { pname = "nvc"; - version = "1.11.1"; + version = "1.11.2"; src = fetchFromGitHub { owner = "nickg"; repo = "nvc"; rev = "r${version}"; - hash = "sha256-aBH3TtPFuJXtVvGTJcGJev5DYVwqjUAM9cf5PatJq9Y="; + hash = "sha256-qNnai2THSUyvtcnU5+Rdq+/EJe4HXw05bGTRz+wyXM8="; }; nativeBuildInputs = [ diff --git a/pkgs/applications/science/electronics/picoscope/default.nix b/pkgs/applications/science/electronics/picoscope/default.nix index 596f220242bb..c7242117b68c 100644 --- a/pkgs/applications/science/electronics/picoscope/default.nix +++ b/pkgs/applications/science/electronics/picoscope/default.nix @@ -1,5 +1,5 @@ { stdenv, lib, fetchurl, dpkg, makeWrapper , mono, gtk-sharp-3_0 -, glib, libusb1 , zlib, gtk3-x11, callPackage +, glib, libusb1 , zlib, gtk3-x11, callPackage, writeTextDir , scopes ? [ "picocv" "ps2000" @@ -114,7 +114,7 @@ in stdenv.mkDerivation rec { # services.udev.packages = [ pkgs.picoscope.rules ]; # users.groups.pico = {}; # users.users.you.extraGroups = [ "pico" ]; - passthru.rules = lib.writeTextDir "lib/udev/rules.d/95-pico.rules" '' + passthru.rules = writeTextDir "lib/udev/rules.d/95-pico.rules" '' SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ce9", MODE="664",GROUP="pico" ''; diff --git a/pkgs/applications/science/electronics/verilator/default.nix b/pkgs/applications/science/electronics/verilator/default.nix index 0c2adf0907e9..8d0fef289104 100644 --- a/pkgs/applications/science/electronics/verilator/default.nix +++ b/pkgs/applications/science/electronics/verilator/default.nix @@ -4,13 +4,13 @@ stdenv.mkDerivation rec { pname = "verilator"; - version = "5.018"; + version = "5.020"; src = fetchFromGitHub { owner = pname; repo = pname; rev = "v${version}"; - hash = "sha256-f06UzNw2MQ5me03EPrVFhkwxKum/GLDzQbDNTBsJMJs="; + hash = "sha256-7kxH/RPM+fjDuybwJgTYm0X6wpaqesGfu57plrExd8c="; }; enableParallelBuilding = true; diff --git a/pkgs/applications/science/electronics/xyce/default.nix b/pkgs/applications/science/electronics/xyce/default.nix index 30d8e0b8186d..93c155038a22 100644 --- a/pkgs/applications/science/electronics/xyce/default.nix +++ b/pkgs/applications/science/electronics/xyce/default.nix @@ -32,21 +32,21 @@ assert withMPI -> trilinos.withMPI; let - version = "7.7.0"; + version = "7.8.0"; # useing fetchurl or fetchFromGitHub doesn't include the manuals # due to .gitattributes files xyce_src = fetchgit { url = "https://github.com/Xyce/Xyce.git"; rev = "Release-${version}"; - sha256 = "sha256-F0kO86eliD1AfUUjeVllxJ231ZElXkfBfGJ3jhT0s9w="; + sha256 = "sha256-+aNy2bGuFQ517FZUvU0YqN0gmChRpVuFEmFGTCx9AgY="; }; regression_src = fetchFromGitHub { owner = "Xyce"; repo = "Xyce_Regression"; rev = "Release-${version}"; - sha256 = "sha256-iDxm0Vcn3JuuREciCt3/b7q94E8GhXoIUD/BCx0mW6Q="; + sha256 = "sha256-Fxi/NpXXIw/bseWaLi2iQ4sg4S9Z+othGgSvQoxyJ9c="; }; in @@ -82,11 +82,13 @@ stdenv.mkDerivation rec { libtool_2 ] ++ lib.optionals enableDocs [ (texliveMedium.withPackages (ps: with ps; [ + enumitem koma-script optional framed enumitem multirow + newtx preprint ])) ]; |