From b65402644c100b03c951bcf88df01eb9a40e78c5 Mon Sep 17 00:00:00 2001 From: Egor Savkin Date: Mon, 6 May 2024 15:52:57 +0800 Subject: [PATCH] Add ARTIQ offline installer based on MSYS2 --- README.md | 1 + flake.nix | 129 +++- installer/qt-ifw/config/artiq.ico | Bin 0 -> 134526 bytes installer/qt-ifw/config/config.xml | 18 + installer/qt-ifw/config/control.js | 20 + .../com.msys2.root/meta/installscript.js | 64 ++ .../packages/com.msys2.root/meta/package.xml | 9 + msys2/artiq_dependencies.txt | 19 + msys2/artiq_dependency_packages.nix | 602 ++++++++++++++++++ msys2/comtools_dependencies.txt | 3 + msys2/make_msys2_packages.sh | 44 +- msys2/msys2_packages.nix | 324 +++++----- msys2/msys2_qt_ifw_packages.nix | 8 + msys2/pythonparser_dependencies.txt | 1 + msys2/sipyco_dependencies.txt | 3 + 15 files changed, 1056 insertions(+), 189 deletions(-) create mode 100644 installer/qt-ifw/config/artiq.ico create mode 100644 installer/qt-ifw/config/config.xml create mode 100644 installer/qt-ifw/config/control.js create mode 100644 installer/qt-ifw/packages/com.msys2.root/meta/installscript.js create mode 100644 installer/qt-ifw/packages/com.msys2.root/meta/package.xml create mode 100644 msys2/artiq_dependencies.txt create mode 100644 msys2/artiq_dependency_packages.nix create mode 100644 msys2/comtools_dependencies.txt create mode 100644 msys2/msys2_qt_ifw_packages.nix create mode 100644 msys2/pythonparser_dependencies.txt create mode 100644 msys2/sipyco_dependencies.txt diff --git a/README.md b/README.md index 93cfd7b..d3bfc9e 100644 --- a/README.md +++ b/README.md @@ -3,5 +3,6 @@ ARTIQ extrapkg This contains additional packages and infrastructure for ARTIQ: * MSYS2 and Conda packages + * MSYS2 offline installer * Controllers/NDSPs * Windows tests diff --git a/flake.nix b/flake.nix index 537e245..21fc952 100644 --- a/flake.nix +++ b/flake.nix @@ -16,6 +16,13 @@ let pkgs = import artiqpkgs.inputs.nixpkgs { system = "x86_64-linux"; }; msys2 = import ./msys2 { inherit pkgs; }; + sipycoDependenciesFile = ./msys2/sipyco_dependencies.txt; + artiqDependenciesFile = ./msys2/artiq_dependencies.txt; + comtoolsDependenciesFile = ./msys2/comtools_dependencies.txt; + pythonparserDependenciesFile = ./msys2/pythonparser_dependencies.txt; + # reads filename and return list of non-empty lines from it + readStringListFromFile = (filename: builtins.filter (x: builtins.lessThan 0 (builtins.length (pkgs.lib.strings.stringToCharacters x))) + (builtins.filter builtins.isString (builtins.split "\n| |\t" (builtins.readFile filename)))); condaDeps = with pkgs; [ zlib xorg.libSM xorg.libICE xorg.libX11 xorg.libXau xorg.libXi xorg.libXrender libselinux libGL ]; # Use the full Anaconda distribution, which already contains conda-build and its many dependencies. @@ -420,19 +427,19 @@ name = "python-pythonparser"; version = artiqpkgs.packages.x86_64-linux.pythonparser.version; src = artiqpkgs.packages.x86_64-linux.pythonparser.src; - depends = [ "mingw-w64-x86_64-python-regex" ]; + depends = readStringListFromFile pythonparserDependenciesFile; }; msys2-sipyco = msys2.makeMsys2Package { name = "python-sipyco"; src = artiqpkgs.inputs.sipyco.packages.x86_64-linux.sipyco.src; inherit (artiqpkgs.inputs.sipyco.packages.x86_64-linux.sipyco) version; - depends = [ "mingw-w64-x86_64-python" "mingw-w64-x86_64-python-numpy" "mingw-w64-x86_64-python-pybase64" ]; + depends = readStringListFromFile sipycoDependenciesFile; }; msys2-artiq-comtools = msys2.makeMsys2Package { name = "artiq-comtools"; src = artiqpkgs.inputs.artiq-comtools.packages.x86_64-linux.artiq-comtools.src; inherit (artiqpkgs.inputs.artiq-comtools.packages.x86_64-linux.artiq-comtools) version; - depends = [ "mingw-w64-x86_64-python" "mingw-w64-x86_64-python-sipyco" "mingw-w64-x86_64-python-numpy" "mingw-w64-x86_64-python-aiohttp" ]; + depends = (readStringListFromFile comtoolsDependenciesFile) ++ [ "mingw-w64-x86_64-python-sipyco" ]; }; msys2-artiq = msys2.makeMsys2Package { name = "artiq"; @@ -442,27 +449,9 @@ export VERSIONEER_OVERRIDE=${artiqpkgs.packages.x86_64-linux.artiq.version} export VERSIONEER_REV=${artiqpkgs.sourceInfo.rev} ''; - depends = [ - "mingw-w64-x86_64-python" - "mingw-w64-x86_64-python-h5py" - "mingw-w64-x86_64-python-pyqt5" - "mingw-w64-x86_64-qt5-svg" - "mingw-w64-x86_64-python-qasync" - "mingw-w64-x86_64-python-pyqtgraph" - "mingw-w64-x86_64-python-numpy" - "mingw-w64-x86_64-python-scipy" - "mingw-w64-x86_64-python-dateutil" - "mingw-w64-x86_64-python-prettytable" - "mingw-w64-x86_64-python-tqdm" - "mingw-w64-x86_64-python-pygit2" - "mingw-w64-x86_64-python-sipyco" - "mingw-w64-x86_64-python-llvmlite" - "mingw-w64-x86_64-python-pythonparser" - "mingw-w64-x86_64-python-levenshtein" - "mingw-w64-x86_64-python-lmdb" - "mingw-w64-x86_64-lld" - "mingw-w64-x86_64-artiq-comtools" - ]; + depends = (readStringListFromFile artiqDependenciesFile) + ++ [ "mingw-w64-x86_64-python-sipyco" "mingw-w64-x86_64-python-pythonparser" "mingw-w64-x86_64-artiq-comtools" ]; + }; msys2-asyncserial = msys2.makeMsys2Package { name = "python-asyncserial"; @@ -523,18 +512,94 @@ msys2-hut2 msys2-flake8-artiq ]; + + msys2-offline-installer = pkgs.stdenv.mkDerivation { + name = "msys2-offline-installer"; + buildInputs = with pkgs; [ p7zip wine64 ]; + src = ./.; + msys2_qt_ifw = pkgs.stdenvNoCC.mkDerivation rec { + name = "msys2_qt_ifw"; + srcs = import ./msys2/msys2_qt_ifw_packages.nix { inherit pkgs; }; + buildInputs = [ pkgs.gnutar pkgs.zstd ]; + phases = [ "installPhase" ]; + installPhase = (pkgs.lib.strings.concatStringsSep "\n" (["mkdir $out"] ++ (map (p: "tar xvf ${p} -C $out") srcs))); + }; + + msys2_artiq_root = pkgs.stdenvNoCC.mkDerivation rec { + name = "msys2_artiq_root"; + artiq-deps-pkgs = import ./msys2/artiq_dependency_packages.nix { inherit pkgs; }; + msys2-pkgs = import ./msys2/msys2_packages.nix { inherit pkgs; }; + msys2-base = pkgs.fetchurl { + url = "https://github.com/msys2/msys2-installer/releases/download/2024-01-13/msys2-base-x86_64-20240113.tar.xz"; + name = "base"; + sha256 = "sha256-BEVqRKlW08C1+bbHVJGL86jD2HyFi+egyUyRcasTxYw="; + }; + + src = ./.; + buildInputs = [ pkgs.gnutar pkgs.zstd pkgs.pacman pkgs.fakeroot ]; + phases = [ "installPhase" ]; + + installPhase = '' + mkdir $out + mkdir -p tmp/cache + tar -xvf ${msys2-base} --strip-components=1 -C $out/ msys64 + printf "\n[artiq]\nSigLevel = Optional TrustAll\nServer = https://msys2.m-labs.hk/artiq-beta\n" >> $out/etc/pacman.conf + cat $out/etc/pacman.conf | sed -e "s|/etc/pacman.d|$out/etc/pacman.d|g" -e "s|SigLevel = Required|SigLevel = Never|g" -e "s|CheckSpace||g" > tmp/pacman.conf + sed -i '/\[mingw32\]/,/^$/d; /\[clang32\]/,/^$/d; /\[clang64\]/,/^$/d; /\[ucrt64\]/,/^$/d; /\[clangarm64\]/,/^$/d;' $out/etc/pacman.conf + fakeroot pacman -U --asdeps --noconfirm --cachedir tmp/cache --config tmp/pacman.conf --root $out ${pkgs.lib.concatStringsSep " " (map (p: "${p}") msys2-pkgs)} + fakeroot pacman -U --asdeps --noconfirm --cachedir tmp/cache --config tmp/pacman.conf --root $out ${pkgs.lib.concatStringsSep " " (map (p: "${p}") artiq-deps-pkgs)} + fakeroot pacman -U --noconfirm --cachedir tmp/cache --config tmp/pacman.conf --root $out ${msys2-artiq}/*.pkg.tar.zst ${msys2-artiq-comtools}/*.pkg.tar.zst ${msys2-pythonparser}/*.pkg.tar.zst ${msys2-sipyco}/*.pkg.tar.zst + rm -rf $out/clang64* $out/clang32* $out/clangarm64* $out/mingw32* $out/ucrt64* \ + $out/var/lib/pacman/sync/clang64* $out/var/lib/pacman/sync/clang32* $out/var/lib/pacman/sync/clangarm64* \ + $out/var/lib/pacman/sync/mingw32* $out/var/lib/pacman/sync/ucrt64* \ + $out/etc/pacman.d/mirrorlist.clang64 $out/etc/pacman.d/mirrorlist.clang32 $out/etc/pacman.d/mirrorlist.clangarm64 \ + $out/etc/pacman.d/mirrorlist.mingw32 $out/etc/pacman.d/mirrorlist.ucrt64 + ''; + }; + + phases = [ "buildPhase" "installPhase" ]; + buildPhase = '' + export HOME=`mktemp -d` + cp -r $src/installer/qt-ifw qt-ifw + # needed for sed and 7z + chmod -R 700 qt-ifw + sed -i "s|@DATE@|$(date +'%Y-%m-%d')|g" qt-ifw/config/config.xml qt-ifw/packages/com.msys2.root/meta/package.xml ; + sed -i "s|@VERSION@|$(date +'%Y%m%d')|g" qt-ifw/config/config.xml qt-ifw/packages/com.msys2.root/meta/package.xml ; + + 7z a -mx9 -md128m "qt-ifw/packages/com.msys2.root/data/msys64.7z" "$msys2_artiq_root/"* + ${pkgs.wineWowPackages.stable}/bin/wine64 $msys2_qt_ifw/mingw64/bin/binarycreator.exe \ + -t "$msys2_qt_ifw/mingw64/bin/installerbase.exe" \ + -p "qt-ifw/packages" \ + -c "qt-ifw/config/config.xml" \ + --offline-only \ + "artiq-msys2-x86_64.exe" \ + -v + ''; + installPhase = '' + mkdir -p $out + cp artiq-msys2-x86_64.exe $out/artiq-msys2-x86_64-${artiqpkgs.packages.x86_64-linux.artiq.version}.exe + mkdir -p $out/nix-support/ + for i in $out/*.*; do + echo file binary-dist $i >> $out/nix-support/hydra-build-products + done + ''; + }; }; hydraJobs = packages.x86_64-linux; - devShells.x86_64-linux.msys2 = pkgs.mkShell { - name = "dev-shell-msys2"; - buildInputs = with pkgs; [ - curl - pacman - fakeroot - msys2.wine-msys2 - ]; + devShells.x86_64-linux = { + msys2 = pkgs.mkShell { + name = "dev-shell-msys2"; + buildInputs = with pkgs; [ + curl + pacman + fakeroot + p7zip + msys2.wine-msys2 + wineWowPackages.stable + ]; + }; }; }; } diff --git a/installer/qt-ifw/config/artiq.ico b/installer/qt-ifw/config/artiq.ico new file mode 100644 index 0000000000000000000000000000000000000000..edb222d44f14e25f253f7b3ae8ee1d0c169edc38 GIT binary patch literal 134526 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 literal 0 HcmV?d00001 diff --git a/installer/qt-ifw/config/config.xml b/installer/qt-ifw/config/config.xml new file mode 100644 index 0000000..359db3e --- /dev/null +++ b/installer/qt-ifw/config/config.xml @@ -0,0 +1,18 @@ + + + MSYS2 + @VERSION@ + MSYS2 + The MSYS2 Developers + control.js + MSYS2 + @TargetDir@/mingw64.exe + + artiq + artiq.ico + false + uninstall + false + false + false + diff --git a/installer/qt-ifw/config/control.js b/installer/qt-ifw/config/control.js new file mode 100644 index 0000000..0436580 --- /dev/null +++ b/installer/qt-ifw/config/control.js @@ -0,0 +1,20 @@ +function Controller() +{ + installer.setDefaultPageVisible(QInstaller.LicenseCheck, false); + if (installer.isInstaller()) { + installer.setDefaultPageVisible(QInstaller.ComponentSelection, false); + installer.setDefaultPageVisible(QInstaller.ReadyForInstallation, false); + } +} + +Controller.prototype.IntroductionPageCallback = function() +{ + const widget = gui.currentPageWidget(); + const radioNames = ["PackageManagerRadioButton", "UpdaterRadioButton"]; + for (const name of radioNames) { + const el = gui.findChild(widget, name); + if (el != null) { + el.hide(); + } + } +} diff --git a/installer/qt-ifw/packages/com.msys2.root/meta/installscript.js b/installer/qt-ifw/packages/com.msys2.root/meta/installscript.js new file mode 100644 index 0000000..d41a70b --- /dev/null +++ b/installer/qt-ifw/packages/com.msys2.root/meta/installscript.js @@ -0,0 +1,64 @@ +function cancelInstaller(message) +{ + installer.setDefaultPageVisible(QInstaller.Introduction, false); + installer.setDefaultPageVisible(QInstaller.TargetDirectory, false); + installer.setDefaultPageVisible(QInstaller.ComponentSelection, false); + installer.setDefaultPageVisible(QInstaller.ReadyForInstallation, false); + installer.setDefaultPageVisible(QInstaller.StartMenuSelection, false); + installer.setDefaultPageVisible(QInstaller.PerformInstallation, false); + installer.setDefaultPageVisible(QInstaller.LicenseCheck, false); + + var abortText = "" + message +""; + installer.setValue("FinishedText", abortText); + installer.setValue("RunProgram", null); +} + +function isSupported() +{ + if (systemInfo.kernelType === "winnt") { + var major = parseInt(systemInfo.kernelVersion.split(".", 1)); + var minor = parseInt(systemInfo.kernelVersion.split(".", 2)[1]); + // Windows >= 8.1 + if (major > 6 || (major == 6 && minor >= 3)) { + return true; + } + } + return false; +} + +function createShortcuts() +{ + var windir = installer.environmentVariable("WINDIR"); + if (windir === "") { + QMessageBox["warning"]( "Error" , "Error", "Could not find windows installation directory"); + return; + } + + component.addOperation("CreateShortcut", "@TargetDir@/mingw64.exe", "@StartMenuDir@/MSYS2 MINGW64.lnk", "iconPath=@TargetDir@/mingw64.exe"); + + component.addOperation( "Execute", + ["@TargetDir@\\usr\\bin\\bash.exe", "--login", "-c", "exit"]); +} + +function Component() { + + if (!isSupported()) { + cancelInstaller("Installation on " + systemInfo.prettyProductName + " is not supported"); + return; + } + + var systemDrive = installer.environmentVariable("SystemDrive"); + // Use C: as a default for messed up systems. + if (systemDrive === "") { + systemDrive = "C:"; + } + var targetDir = installer.value("TargetDir", systemDrive+"\\msys64") + + installer.setValue("TargetDir", targetDir); +} + +Component.prototype.createOperations = function() +{ + component.createOperations(); + createShortcuts(); +} diff --git a/installer/qt-ifw/packages/com.msys2.root/meta/package.xml b/installer/qt-ifw/packages/com.msys2.root/meta/package.xml new file mode 100644 index 0000000..f988a0b --- /dev/null +++ b/installer/qt-ifw/packages/com.msys2.root/meta/package.xml @@ -0,0 +1,9 @@ + + + MSYS2 + Cygwin-derived Posix-like env. for Windows with Arch Linux's Pacman + @VERSION@ + @DATE@ + true + + diff --git a/msys2/artiq_dependencies.txt b/msys2/artiq_dependencies.txt new file mode 100644 index 0000000..89b54dd --- /dev/null +++ b/msys2/artiq_dependencies.txt @@ -0,0 +1,19 @@ +mingw-w64-x86_64-python3.11 +mingw-w64-x86_64-python-h5py +mingw-w64-x86_64-python-pyqt5 +mingw-w64-x86_64-qt5-svg +mingw-w64-x86_64-python-qasync +mingw-w64-x86_64-python-pyqtgraph +mingw-w64-x86_64-python-numpy +mingw-w64-x86_64-python-scipy +mingw-w64-x86_64-python-dateutil +mingw-w64-x86_64-python-prettytable +mingw-w64-x86_64-python-tqdm +mingw-w64-x86_64-python-pygit2 +mingw-w64-x86_64-python-llvmlite +mingw-w64-x86_64-python-levenshtein +mingw-w64-x86_64-python-lmdb +mingw-w64-x86_64-lld +mingw-w64-x86_64-llvm +mingw-w64-x86_64-openocd +mingw-w64-x86_64-bscan-spi-bitstreams diff --git a/msys2/artiq_dependency_packages.nix b/msys2/artiq_dependency_packages.nix new file mode 100644 index 0000000..a28c06e --- /dev/null +++ b/msys2/artiq_dependency_packages.nix @@ -0,0 +1,602 @@ +{ pkgs } : [ + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libwinpthread-git-11.0.0.r731.g8fdf7c9b5-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libwinpthread-git"; + sha256 = "1q5mjrsxxrqa0vm9vn1hqr0ijn7b24lkyzyx5hymlksdbx3r0b29"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-libs-13.2.0-6-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-gcc-libs"; + sha256 = "1wg64p13ldw3f9cl2na4dz8avj06a8xj9fdk9z6h2h2gp1ipgici"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-expat-2.6.2-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-expat"; + sha256 = "13zp12yp286i8pbyqcvgdzln0c6r8hs9jfbwvrbbimhq57jcy91q"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-bzip2-1.0.8-3-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-bzip2"; + sha256 = "1dki26kz4pmr9q3gp3dirrvrwkcv38b9sjrb9slrq4yw31ycjgk5"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libffi-3.4.6-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libffi"; + sha256 = "018sv8b54ym24qmyc61sxhjix3rrbmvj04plhy5i0k92qnk2hnv4"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-mpdecimal-4.0.0-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-mpdecimal"; + sha256 = "1dm8hjj0l1q48fv0li0x5xn8yfy6a6ywicqm0i8v0c13qfa5hv7v"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libiconv-1.17-4-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libiconv"; + sha256 = "0mvamv1maj479lch0spfa25i27yfsb2795v1kpv6z3py8rmv7vff"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gettext-runtime-0.22.5-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-gettext-runtime"; + sha256 = "0kdjkscdgaxgb073a1ga07g5p53vh3cn6aaa9q96shsb7fbd3aqz"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libtre-git-r177.07e66d0-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libtre-git"; + sha256 = "1fphiijfdz1zn3j11fq16fvqx88vms78d2rawsgrqd5janbq4flb"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libsystre-1.0.1-5-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libsystre"; + sha256 = "0q67s9p1dcfzhhr1qsji7g3fpwsi223b5s1c4d74sczn3kvkrd6v"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-ncurses-6.4.20231217-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-ncurses"; + sha256 = "00sx48qazh5nh70fyi9nd8l6498b97fmy9p6vmbsr3pjbwkwpznk"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-openssl-3.3.0-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-openssl"; + sha256 = "14p37hlj3vn0jb6grfwycjvlfakjbbj3h2fqw1xcj4al0dby2xsd"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-termcap-1.3.1-7-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-termcap"; + sha256 = "1s51i2fwy1mrzmxsgr1vv87wlmb3bk88yipqalfldvy3xdgjgjh4"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-readline-8.2.010-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-readline"; + sha256 = "1qcgv32jrgs9fycqg5qyq40rkxxvjf7j6dnkprhf8zlnzhl3ymaa"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-zlib-1.3.1-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-zlib"; + sha256 = "1w05h62i4bcvkr09lzf442dx4ybf80w31m82clhxw59ysypwl16a"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-tcl-8.6.13-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-tcl"; + sha256 = "1h6sgjmqp2akm4nc64cmj87zr8iaa9m4wg1rgqhhs3x8a904m6by"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-sqlite3-3.45.2-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-sqlite3"; + sha256 = "1rzjzhhji3wmggccv8av5gcqxl3d0wdyrfaj3g8v4gfqql9f525y"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-tk-8.6.13-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-tk"; + sha256 = "093j1hkjs60nimbnad7jc7190pr2xrwx4nrz22g159dq770cc4xp"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-xz-5.6.1-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-xz"; + sha256 = "089v96imr9fyg38v6hmpacd997dxz9c37fkqq4y03gcc4skj7078"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-tzdata-2024a-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-tzdata"; + sha256 = "1yjcndq1bhfy5mw04c8k5rbmknrcgkq023b0gvwra15spj2c1h9v"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-3.11.9-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python"; + sha256 = "1iv0pg26g8p7sqpjqzh0xdx6s9wi8l70kqkansky96nbqx2byp3f"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-libgfortran-13.2.0-6-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-gcc-libgfortran"; + sha256 = "1jmncy2drswx441dhxxs4i471d5lyqdn7faxd6qdni0g6vd56qir"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-openblas-0.3.27-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-openblas"; + sha256 = "1130ir15sq54mnhyr50yljkm1jj5s40lqkdhsmvk7rwlykl67jq4"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-numpy-1.26.4-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-numpy"; + sha256 = "1mhsnh3gvqhlq4m1m21xsfdf4zb0yrzvfp88hqcy6s1iiy5w4ync"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libaec-1.1.3-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libaec"; + sha256 = "0ca6713y39flq6i4lsw7ja423s5zm7qcgxzzk1899v0n806fax9p"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-c-ares-1.28.1-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-c-ares"; + sha256 = "0skdb9hcgzgrqf8n9x3pxihnbxfgi7gk8v8zjxvxpxr2pb2l57gr"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-brotli-1.1.0-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-brotli"; + sha256 = "1ix63yg59k6wq32xgs64i3i2hqsi9f5qj5qw5apsfr1sgy9zlppm"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libunistring-1.2-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libunistring"; + sha256 = "17mhzkkvpaxgk5yy67kh20nqdfc7s959hw3ifmn8bjck5f7cs7k9"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libidn2-2.3.7-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libidn2"; + sha256 = "0ki6lnjid60qqs322qsljf7swa372czqbpyax6rc2yww5w53z8h9"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libpsl-0.21.5-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libpsl"; + sha256 = "059i6n82rd3idlbvp948rkyyd5zyvzqkbd5hgsmsvb703ncsncjk"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-zstd-1.5.6-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-zstd"; + sha256 = "09g167k7d7yliz8vlqsknnz4sp947w1v5sidp5rrgbcs2bcxcx8l"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libtasn1-4.19.0-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libtasn1"; + sha256 = "09bgm2y25jyjm0pwn2imnr30nxzdd7j71ifmxkpabaqkpsfa5av5"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-p11-kit-0.25.3-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-p11-kit"; + sha256 = "1f32pznnvzm8axhvd5406hg0ilvmlilhiqyfjky6zdk545wsyyxl"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-ca-certificates-20240203-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-ca-certificates"; + sha256 = "092wq5mainz3insakm9lacqa348p3ya6xnf2c3s65x7c6hw0702v"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libssh2-1.11.0-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libssh2"; + sha256 = "0h4hfsig3n7grp7hn7vn16af6x122hc220llpmd8aii3d3jwc8d1"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-nghttp2-1.61.0-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-nghttp2"; + sha256 = "1ysm4pzkkrxmkyscz7li1rg3x1hv1q27v3lk6cjz1qwglxrv3zig"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-curl-8.7.1-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-curl"; + sha256 = "006j0lkpk1zdf1s577nvnvx3hk971cbnlhwppgrgg9jrrn4p8v76"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-hdf5-1.14.3-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-hdf5"; + sha256 = "0jqngjbvdjl99555di0jip4hy861zqas5b9lgaq0f0z694q8xig4"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-h5py-3.10.0-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-h5py"; + sha256 = "0xmy25hg2mfbmmdqmk9r7ykz629qaz45lnz8nz03r7mg42qga8i1"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-pyqt5-sip-12.13.0-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-pyqt5-sip"; + sha256 = "0j8l8nc5c9f46748ln46lgaw818fmqmd97493f671x1gwfi3il6j"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-dbus-1.14.10-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-dbus"; + sha256 = "1j735j46kj6ivmfm4np9qij4ibh0c9daznx1b0hiyzaq3dj81d5d"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-double-conversion-3.3.0-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-double-conversion"; + sha256 = "1lw76bfwlc23d1rj8dissyi7mb915wimprxrikdz7bicb059vg26"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libpng-1.6.43-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libpng"; + sha256 = "078gvc5xy0mzqd1sm9nw6wp1jk7cdxmj8xp7s87l7lzascg1n5mc"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-wineditline-2.206-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-wineditline"; + sha256 = "18a8cvyvmb9ilfcb1i1angp46n5c245bn3qw3ckqv86634ph86jl"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-pcre2-10.43-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-pcre2"; + sha256 = "0dnlvfjjmy65s7ywwx8pjrr1babh0ylx6qlwqvwxyy79q81fhbih"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-packaging-23.2-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-packaging"; + sha256 = "0gsaa1jk6f6jwqf5i8ib9agk8fh85pjn9hwfpi372lvq3n5zjwdi"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-glib2-2.80.0-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-glib2"; + sha256 = "0bl2ffcxc509wl8mmvcdxasm0hjlqwambqwp8mn35d0dcr6bsddb"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-graphite2-1.3.14-3-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-graphite2"; + sha256 = "1cgmzncx1dblny629fsrhczvsra9zz4xvhlivzl4nyyvxcqbfd3s"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-harfbuzz-8.4.0-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-harfbuzz"; + sha256 = "0hcafmwlvzz5jx18q1ghfcmzdk05dpmm0g70nn027qmf1aj67dpq"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-freetype-2.13.2-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-freetype"; + sha256 = "0vsw6zg6sqwv3z0dv1x8g63m2dkn5nksgplida641r68lbrlsv68"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-fontconfig-2.15.0-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-fontconfig"; + sha256 = "05zddp7g2sm87ihmd4crs2ycwsh1rj1jhw9y0lc9y25z5hl2z8vd"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-icu-74.2-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-icu"; + sha256 = "10j8z4zx75ln5mwgb2x0wg695dspm5qqs3808zimw6igb9cvj8ml"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libjpeg-turbo-3.0.2-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libjpeg-turbo"; + sha256 = "0dxlaajh1h4x96pwk4da502v4587xg7d5b17mvv4nr14bn5slp7c"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-md4c-0.5.2-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-md4c"; + sha256 = "0z6s1h8wp5cai6p79b2cwzn6q9kcacvgvc622gmga13rjxznb71i"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-vulkan-loader-1.3.280.0-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-vulkan-loader"; + sha256 = "04jlvaxx6xmhcrpqb9ng29988py5jr2zfyfwjr802xik9pvvbi5l"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-qt5-base-5.15.13+kde+r138-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-qt5-base"; + sha256 = "1gyzp8xz4s5wgbmh11xx8h6wvw19gvwg9a4cxxdq8y8l0yxhq8xm"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-pyqt5-5.15.10-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-pyqt5"; + sha256 = "0qlr553xqs49idk12vhhvqf0v7vypgc9vs3hra344xmxhjq71x5l"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-qt5-svg-5.15.13+kde+r6-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-qt5-svg"; + sha256 = "0ckyfi890szlkhk79wnijk3v71ylbc3wfgji0rkvi5lacy1q45ky"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-qasync-0.27.1-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-qasync"; + sha256 = "1g9fdghqpf63pq971n90dqslvlh7kxl7k4gmbgxnmqay05ycywky"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-pyqtgraph-0.13.3-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-pyqtgraph"; + sha256 = "063pxfcmpviwawlh1gidq6m73r3r1i3bha3hxw05z1mj6a46ym2p"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-scipy-1.12.0-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-scipy"; + sha256 = "0yr1rlq3rz55pcm9r81wi5yyw7kxqmgm3rs1ydwvlcbgar6q3ggc"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-six-1.16.0-4-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-six"; + sha256 = "0hv012cnzi27pnr6v0ynygzwvmdmmjl60bdbbs3nv1x2waavv2q3"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-dateutil-2.9.0-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-dateutil"; + sha256 = "151cnff75zb9rg4fcw3db4cjn1hfg6cp6ykd76rai6j7hkk5zjsr"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-wcwidth-0.2.13-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-wcwidth"; + sha256 = "046gy1wq95a2381nmaii1i6jlnk0rly8w6wym79gdw4n4ycvm79w"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-prettytable-3.10.0-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-prettytable"; + sha256 = "16nh16rsgcbaa2943c3hh6dkhdlnps4lq0hlajv8fwn38k0nz1vg"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-colorama-0.4.6-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-colorama"; + sha256 = "0f62gmhgfwxnhk5sbqfd0qlzhbwis3qxzr625sdyq1xa46yr3ddy"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-tqdm-4.66.2-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-tqdm"; + sha256 = "036mzpi0ncdif1j3npxkcrsp3d3xzwl9jrg6hwnlm6chgnp29gr8"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-http-parser-2.9.4-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-http-parser"; + sha256 = "09s8l8v7s6yx3vl114bxc2zbcgdlv95pq5amp80wdfbgd0dzinda"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libgit2-1.7.2-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libgit2"; + sha256 = "03ddnkar6m68ijhvaik61ng0672l0pcr0lpdd9f8ply4iwpjzf4j"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-ply-3.11-4-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-ply"; + sha256 = "057bmgxnfr5vklhhsksnpaa5kw8cvnp53ib8kykpqfqcsglmjhws"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-pycparser-2.21-3-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-pycparser"; + sha256 = "1kmwp0j3l8fbpbf1np0ilck9wi7pwm3bzq62jcjjxw4ciwrbxbii"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-cffi-1.16.0-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-cffi"; + sha256 = "1cs3ajs56pkg24l7xsa5s0n70g9i63jkm8hqslxazjl2v007iiwd"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-pygit2-1.14.1-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-pygit2"; + sha256 = "08ny0yg92fg413q8jzwp4qvz41vy77ajg75kib4zhva6025rxa0g"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-llvmlite-0.42.0-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-llvmlite"; + sha256 = "0l56iwa0ndxyprz6fw3n4hnd6l47lmvfzshw83x2ygbynls5j3jm"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-rapidfuzz-3.6.2-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-rapidfuzz"; + sha256 = "0mp04k3rylfs3f6ccslg61zkg99y5x14iv1lzpdsdyglk9zd6rkg"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-levenshtein-0.25.0-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-levenshtein"; + sha256 = "0i89a7zkj1gvb08zhnrm3h606yd90a4nfmm2j4cbfvfixqjijibm"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-lmdb-0.9.31-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-lmdb"; + sha256 = "1dzr764y6by4p8mlg3dd0ljmxnbv961clgxssxnz6khhgr4riz3i"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-lmdb-1.4.1-3-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-lmdb"; + sha256 = "1v6xs6bl4bnyn2a1w9y2k4jsd8qgyp2mdfp00mb2vf01dsbm1l6f"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libxml2-2.12.6-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libxml2"; + sha256 = "0nqhq9whrzq6m1xscnx12g2q8bv6jaak43ly7q4viqd1zfin1abx"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-llvm-libs-18.1.4-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-llvm-libs"; + sha256 = "0jl2l400z0rj60hcpr5nms8f1iwdlky4rgzk37ysvfsv2s3xb3g3"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-lld-18.1.4-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-lld"; + sha256 = "1fc4pbzkm9wc2i874vfaxbin2p7bryx1yan1n0vvzddr747qxi21"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-llvm-18.1.4-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-llvm"; + sha256 = "0446wv29vp1pld6drjaw1lr93lijcvn6l66jj4r5m1gyrf07jhlh"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-hidapi-0.14.0-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-hidapi"; + sha256 = "05k8papxsnnvz26761gjfpc7h3db89j7kdg9jyfyd9g5nmpy18x5"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libusb-1.0.27-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libusb"; + sha256 = "1jjdj6njc3yapki1ffj7q5hcy6sd3gqrwyf830bgg72kmc8lxpwl"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libusb-compat-git-r76.b5db9d0-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libusb-compat-git"; + sha256 = "0x9gczdy09mjrj3cybl0qyk77466lhpcjv23r5z1851yq70ilhz9"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-confuse-3.3-3-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-confuse"; + sha256 = "0cv020y67984jax23v3iwi9kcn753qafhqsida44y6jhd1znjjpm"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libftdi-1.5-7-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libftdi"; + sha256 = "0pcrwic5wgdjhs5vvynz8fw2hiqbaz75kikl61gmzqxshm619b2v"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libjaylink-git-r175.cfccbc9-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libjaylink-git"; + sha256 = "053vp2jak9qrl3di5syr6bw7z1hspx5744027knb6irm3kpa1iki"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-capstone-5.0.1-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-capstone"; + sha256 = "1awzx375s3fidrc80l3dhc78cd7wyssvxjlaz9jnbpa3cy5qxl7z"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-openocd-0.12.0-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-openocd"; + sha256 = "1na5blv3kajiic8f1igyanbmva6rj8flxam5xmg9d23v8yr99z6a"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-bscan-spi-bitstreams-1.0-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-bscan-spi-bitstreams"; + sha256 = "0facp60r9364fkrxx6vfrbivr00yiq99n6n24f5snqb8vqc2mrd1"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-attrs-23.2.0-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-attrs"; + sha256 = "0jvm2jdgcrphwq61n3kj8ialy18m8lbj6xq3jgwbi8qqjlw9s1n7"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-multidict-6.0.5-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-multidict"; + sha256 = "0hc7d031m3f8dq3qyvspgs5m2n8x7sljvr6j573ini4cn78w3y0p"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-idna-3.6-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-idna"; + sha256 = "0fzkcd2c2c0crqg4690lrizwm9q4338bfn6w46k855gp5l83f4ww"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-yarl-1.9.4-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-yarl"; + sha256 = "0y9790lq8kq713v08ypmbxxn48fdfbigkdv78jf1dl570vav72pw"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-frozenlist-1.4.1-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-frozenlist"; + sha256 = "0if893h135p6qzldhl9f5a604whlj9viy3sj5p8mlkr6zyxww7p3"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-aiosignal-1.3.1-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-aiosignal"; + sha256 = "0mpp79fx5f0sfjfrqxk0vmc5b13mkl779gwjg5ca38hjqzkycmgy"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-aiohttp-3.9.3-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-aiohttp"; + sha256 = "17qym6rwq1w37a6ph0drvz7jqmnm8k0pc3cnbhfj135cq0z79q96"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-regex-2023.12.25-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-regex"; + sha256 = "17hmnaw3fvcbnzjbm6i7drs3i5j2rsdmxq2c841n497ks30xa5r4"; + }) + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-pybase64-1.3.2-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-pybase64"; + sha256 = "0wnwfacimz7jxv2cnpn9z4x5fbz0fyin04grab3pslrl5xa4shyr"; + }) +] diff --git a/msys2/comtools_dependencies.txt b/msys2/comtools_dependencies.txt new file mode 100644 index 0000000..bc99002 --- /dev/null +++ b/msys2/comtools_dependencies.txt @@ -0,0 +1,3 @@ +mingw-w64-x86_64-python3.11 +mingw-w64-x86_64-python-numpy +mingw-w64-x86_64-python-aiohttp diff --git a/msys2/make_msys2_packages.sh b/msys2/make_msys2_packages.sh index 86ac2de..31a973a 100755 --- a/msys2/make_msys2_packages.sh +++ b/msys2/make_msys2_packages.sh @@ -6,19 +6,37 @@ cd $(dirname $0) MSYS2DIR=`pwd`/msys2 mkdir -p $MSYS2DIR/var/lib/pacman $MSYS2DIR/msys/etc -curl -L https://mirror.msys2.org/msys/x86_64/pacman-mirrors-20220205-1-any.pkg.tar.zst | tar xvf - -C $MSYS2DIR --zstd -curl -L https://raw.githubusercontent.com/msys2/MSYS2-packages/master/pacman/pacman.conf | sed -e "s|/etc/pacman.d|$MSYS2DIR/etc/pacman.d|g" -e "s|SigLevel = Required|SigLevel = Never|g" > $MSYS2DIR/etc/pacman.conf +curl -L https://repo.msys2.org/msys/x86_64/pacman-mirrors-20240210-1-any.pkg.tar.zst | tar xvf - -C $MSYS2DIR --zstd +curl -L https://raw.githubusercontent.com/msys2/MSYS2-packages/master/pacman/pacman.conf | \ + sed -e "s|/etc/pacman.d|$MSYS2DIR/etc/pacman.d|g" -e "s|SigLevel = Required|SigLevel = Never|g" > $MSYS2DIR/etc/pacman.conf fakeroot pacman --root $MSYS2DIR --config $MSYS2DIR/etc/pacman.conf -Syy -pacman --root $MSYS2DIR --config $MSYS2DIR/etc/pacman.conf --cachedir $MSYS2DIR/msys/cache -Sp mingw-w64-x86_64-cc mingw-w64-x86_64-python3.11 mingw-w64-x86_64-python-numpy mingw-w64-x86_64-python-setuptools > $MSYS2DIR/packages.txt +pacman --root $MSYS2DIR --config $MSYS2DIR/etc/pacman.conf \ + --cachedir $MSYS2DIR/msys/cache --sync --print-format "%l %n" \ + mingw-w64-x86_64-cc mingw-w64-x86_64-python3.11 \ + mingw-w64-x86_64-python-numpy mingw-w64-x86_64-python-setuptools > $MSYS2DIR/packages.txt -echo "{ pkgs } : [" > msys2_packages.nix -while read package; do - hash=$(nix-prefetch-url $package) - echo " -(pkgs.fetchurl { - url = \"$package\"; - sha256 = \"$hash\"; -})" >> msys2_packages.nix -done < $MSYS2DIR/packages.txt -echo "]" >> msys2_packages.nix +cat artiq_dependencies.txt comtools_dependencies.txt pythonparser_dependencies.txt sipyco_dependencies.txt | pacman --root $MSYS2DIR --config $MSYS2DIR/etc/pacman.conf \ + --cachedir $MSYS2DIR/msys/cache --sync --print-format "%l %n" - > $MSYS2DIR/artiq_dependency_packages.txt + +pacman --root $MSYS2DIR --config $MSYS2DIR/etc/pacman.conf --cachedir $MSYS2DIR/msys/cache \ + --sync --print-format "%l %n" mingw-w64-x86_64-qt-installer-framework > $MSYS2DIR/qt_ifw_packages.txt + +function generate_nix_packages_from_pacman() { + echo "{ pkgs } : [" > $OUT + while IFS= read -r line; do + read -r url package <<< "$line" + hash=$(nix-prefetch-url $url --name $package) + echo " + (pkgs.fetchurl { + url = \"$url\"; + name = \"$package\"; + sha256 = \"$hash\"; + })" >> $OUT + done < $IN + echo "]" >> $OUT +} + +IN=$MSYS2DIR/packages.txt OUT=msys2_packages.nix generate_nix_packages_from_pacman +IN=$MSYS2DIR/qt_ifw_packages.txt OUT=msys2_qt_ifw_packages.nix generate_nix_packages_from_pacman +IN=$MSYS2DIR/artiq_dependency_packages.txt OUT=artiq_dependency_packages.nix generate_nix_packages_from_pacman diff --git a/msys2/msys2_packages.nix b/msys2/msys2_packages.nix index d38f9f9..7b3af12 100644 --- a/msys2/msys2_packages.nix +++ b/msys2/msys2_packages.nix @@ -1,182 +1,218 @@ { pkgs } : [ -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libwinpthread-git-11.0.0.r680.g257321cea-1-any.pkg.tar.zst"; - sha256 = "1f8sl3jckz8pkk0af6yh7ymrq7kwwy84i3922vgmkn80lq5f4kn1"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libwinpthread-git-11.0.0.r731.g8fdf7c9b5-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libwinpthread-git"; + sha256 = "1q5mjrsxxrqa0vm9vn1hqr0ijn7b24lkyzyx5hymlksdbx3r0b29"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-libs-13.2.0-6-any.pkg.tar.zst"; - sha256 = "1wg64p13ldw3f9cl2na4dz8avj06a8xj9fdk9z6h2h2gp1ipgici"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-libs-13.2.0-6-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-gcc-libs"; + sha256 = "1wg64p13ldw3f9cl2na4dz8avj06a8xj9fdk9z6h2h2gp1ipgici"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libiconv-1.17-4-any.pkg.tar.zst"; - sha256 = "0mvamv1maj479lch0spfa25i27yfsb2795v1kpv6z3py8rmv7vff"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libiconv-1.17-4-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libiconv"; + sha256 = "0mvamv1maj479lch0spfa25i27yfsb2795v1kpv6z3py8rmv7vff"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gettext-runtime-0.22.5-2-any.pkg.tar.zst"; - sha256 = "0kdjkscdgaxgb073a1ga07g5p53vh3cn6aaa9q96shsb7fbd3aqz"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gettext-runtime-0.22.5-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-gettext-runtime"; + sha256 = "0kdjkscdgaxgb073a1ga07g5p53vh3cn6aaa9q96shsb7fbd3aqz"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-zlib-1.3.1-1-any.pkg.tar.zst"; - sha256 = "1w05h62i4bcvkr09lzf442dx4ybf80w31m82clhxw59ysypwl16a"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-zlib-1.3.1-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-zlib"; + sha256 = "1w05h62i4bcvkr09lzf442dx4ybf80w31m82clhxw59ysypwl16a"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-zstd-1.5.6-2-any.pkg.tar.zst"; - sha256 = "09g167k7d7yliz8vlqsknnz4sp947w1v5sidp5rrgbcs2bcxcx8l"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-zstd-1.5.6-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-zstd"; + sha256 = "09g167k7d7yliz8vlqsknnz4sp947w1v5sidp5rrgbcs2bcxcx8l"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-binutils-2.42-2-any.pkg.tar.zst"; - sha256 = "16gl687nfsm8n0f78c4s16wwx592f3wd0kcfrna49xblyrr5gadm"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-binutils-2.42-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-binutils"; + sha256 = "16gl687nfsm8n0f78c4s16wwx592f3wd0kcfrna49xblyrr5gadm"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-headers-git-11.0.0.r680.g257321cea-1-any.pkg.tar.zst"; - sha256 = "01kh11kndh37y2jcd6q4ymdc950934887skdp55bkm6f7j4jryx4"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-headers-git-11.0.0.r731.g8fdf7c9b5-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-headers-git"; + sha256 = "1q5d71dy8jhqb3nm1xiv7psmxdninhpbkvlgsrcdzm8nvqcmlcqr"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-crt-git-11.0.0.r680.g257321cea-1-any.pkg.tar.zst"; - sha256 = "0vwdb5f1mx16as1bmpcq9n4dl0srq334rvb6mw8p1i0gxa1id9qy"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-crt-git-11.0.0.r731.g8fdf7c9b5-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-crt-git"; + sha256 = "1n1ibknmsc269lbj30105haaa8alg1yrcfc2cmvhyl76pv423zqw"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gmp-6.3.0-2-any.pkg.tar.zst"; - sha256 = "1k0ma22hyn5m2m8kflpmscwm2p1v53pzd93fnind9bf4fhwl6949"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gmp-6.3.0-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-gmp"; + sha256 = "1k0ma22hyn5m2m8kflpmscwm2p1v53pzd93fnind9bf4fhwl6949"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-isl-0.26-1-any.pkg.tar.zst"; - sha256 = "0hfycibi23xkah9sw60n4ka786l8vmlc67d2waw9mwqqljdmx7pr"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-isl-0.26-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-isl"; + sha256 = "0hfycibi23xkah9sw60n4ka786l8vmlc67d2waw9mwqqljdmx7pr"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-mpfr-4.2.1-2-any.pkg.tar.zst"; - sha256 = "1j96kipr7mzawngjhi9m0rh2lhylmggg1mkgkipw9ssrsxxf7g97"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-mpfr-4.2.1-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-mpfr"; + sha256 = "1j96kipr7mzawngjhi9m0rh2lhylmggg1mkgkipw9ssrsxxf7g97"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-mpc-1.3.1-2-any.pkg.tar.zst"; - sha256 = "04md7pzz6rwvlsxzgxn8zc6l5lmqn1w2dg9f5xdf13qbl9zfm615"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-mpc-1.3.1-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-mpc"; + sha256 = "04md7pzz6rwvlsxzgxn8zc6l5lmqn1w2dg9f5xdf13qbl9zfm615"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-windows-default-manifest-6.4-4-any.pkg.tar.zst"; - sha256 = "1ylipf8k9j7bgmwndkib2l29mds394i7jcij7a6ciag4kynlhsvi"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-windows-default-manifest-6.4-4-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-windows-default-manifest"; + sha256 = "1ylipf8k9j7bgmwndkib2l29mds394i7jcij7a6ciag4kynlhsvi"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-winpthreads-git-11.0.0.r680.g257321cea-1-any.pkg.tar.zst"; - sha256 = "16l6zqhqhnv284aipz25639spgs6198q8xnzl0s6m0ckkxjx257q"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-winpthreads-git-11.0.0.r731.g8fdf7c9b5-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-winpthreads-git"; + sha256 = "0jvrzmbac86pl5rc2xi8q931r1rhvf8k8bs83zywkv1v22qcgi1a"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-13.2.0-6-any.pkg.tar.zst"; - sha256 = "0j13crl29s8w24kjig0gny68d7ag6n4mgzwyb9ddph23cwqv0l3h"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-13.2.0-6-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-gcc"; + sha256 = "0j13crl29s8w24kjig0gny68d7ag6n4mgzwyb9ddph23cwqv0l3h"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-expat-2.6.2-1-any.pkg.tar.zst"; - sha256 = "13zp12yp286i8pbyqcvgdzln0c6r8hs9jfbwvrbbimhq57jcy91q"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-expat-2.6.2-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-expat"; + sha256 = "13zp12yp286i8pbyqcvgdzln0c6r8hs9jfbwvrbbimhq57jcy91q"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-bzip2-1.0.8-3-any.pkg.tar.zst"; - sha256 = "1dki26kz4pmr9q3gp3dirrvrwkcv38b9sjrb9slrq4yw31ycjgk5"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-bzip2-1.0.8-3-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-bzip2"; + sha256 = "1dki26kz4pmr9q3gp3dirrvrwkcv38b9sjrb9slrq4yw31ycjgk5"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libffi-3.4.6-1-any.pkg.tar.zst"; - sha256 = "018sv8b54ym24qmyc61sxhjix3rrbmvj04plhy5i0k92qnk2hnv4"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libffi-3.4.6-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libffi"; + sha256 = "018sv8b54ym24qmyc61sxhjix3rrbmvj04plhy5i0k92qnk2hnv4"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-mpdecimal-4.0.0-1-any.pkg.tar.zst"; - sha256 = "1dm8hjj0l1q48fv0li0x5xn8yfy6a6ywicqm0i8v0c13qfa5hv7v"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-mpdecimal-4.0.0-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-mpdecimal"; + sha256 = "1dm8hjj0l1q48fv0li0x5xn8yfy6a6ywicqm0i8v0c13qfa5hv7v"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libtre-git-r177.07e66d0-2-any.pkg.tar.zst"; - sha256 = "1fphiijfdz1zn3j11fq16fvqx88vms78d2rawsgrqd5janbq4flb"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libtre-git-r177.07e66d0-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libtre-git"; + sha256 = "1fphiijfdz1zn3j11fq16fvqx88vms78d2rawsgrqd5janbq4flb"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libsystre-1.0.1-5-any.pkg.tar.zst"; - sha256 = "0q67s9p1dcfzhhr1qsji7g3fpwsi223b5s1c4d74sczn3kvkrd6v"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libsystre-1.0.1-5-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-libsystre"; + sha256 = "0q67s9p1dcfzhhr1qsji7g3fpwsi223b5s1c4d74sczn3kvkrd6v"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-ncurses-6.4.20231217-1-any.pkg.tar.zst"; - sha256 = "00sx48qazh5nh70fyi9nd8l6498b97fmy9p6vmbsr3pjbwkwpznk"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-ncurses-6.4.20231217-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-ncurses"; + sha256 = "00sx48qazh5nh70fyi9nd8l6498b97fmy9p6vmbsr3pjbwkwpznk"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-openssl-3.3.0-1-any.pkg.tar.zst"; - sha256 = "12kh1d8d8ib4d6jchy1m5nxvj0zaz04zrq4v1p1mdx01217nqciz"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-openssl-3.3.0-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-openssl"; + sha256 = "14p37hlj3vn0jb6grfwycjvlfakjbbj3h2fqw1xcj4al0dby2xsd"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-termcap-1.3.1-7-any.pkg.tar.zst"; - sha256 = "1s51i2fwy1mrzmxsgr1vv87wlmb3bk88yipqalfldvy3xdgjgjh4"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-termcap-1.3.1-7-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-termcap"; + sha256 = "1s51i2fwy1mrzmxsgr1vv87wlmb3bk88yipqalfldvy3xdgjgjh4"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-readline-8.2.010-1-any.pkg.tar.zst"; - sha256 = "1qcgv32jrgs9fycqg5qyq40rkxxvjf7j6dnkprhf8zlnzhl3ymaa"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-readline-8.2.010-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-readline"; + sha256 = "1qcgv32jrgs9fycqg5qyq40rkxxvjf7j6dnkprhf8zlnzhl3ymaa"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-tcl-8.6.13-1-any.pkg.tar.zst"; - sha256 = "1h6sgjmqp2akm4nc64cmj87zr8iaa9m4wg1rgqhhs3x8a904m6by"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-tcl-8.6.13-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-tcl"; + sha256 = "1h6sgjmqp2akm4nc64cmj87zr8iaa9m4wg1rgqhhs3x8a904m6by"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-sqlite3-3.45.2-1-any.pkg.tar.zst"; - sha256 = "1rzjzhhji3wmggccv8av5gcqxl3d0wdyrfaj3g8v4gfqql9f525y"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-sqlite3-3.45.2-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-sqlite3"; + sha256 = "1rzjzhhji3wmggccv8av5gcqxl3d0wdyrfaj3g8v4gfqql9f525y"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-tk-8.6.13-1-any.pkg.tar.zst"; - sha256 = "093j1hkjs60nimbnad7jc7190pr2xrwx4nrz22g159dq770cc4xp"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-tk-8.6.13-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-tk"; + sha256 = "093j1hkjs60nimbnad7jc7190pr2xrwx4nrz22g159dq770cc4xp"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-xz-5.6.1-2-any.pkg.tar.zst"; - sha256 = "089v96imr9fyg38v6hmpacd997dxz9c37fkqq4y03gcc4skj7078"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-xz-5.6.1-2-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-xz"; + sha256 = "089v96imr9fyg38v6hmpacd997dxz9c37fkqq4y03gcc4skj7078"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-tzdata-2024a-1-any.pkg.tar.zst"; - sha256 = "1yjcndq1bhfy5mw04c8k5rbmknrcgkq023b0gvwra15spj2c1h9v"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-tzdata-2024a-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-tzdata"; + sha256 = "1yjcndq1bhfy5mw04c8k5rbmknrcgkq023b0gvwra15spj2c1h9v"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-3.11.9-1-any.pkg.tar.zst"; - sha256 = "1iv0pg26g8p7sqpjqzh0xdx6s9wi8l70kqkansky96nbqx2byp3f"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-3.11.9-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python"; + sha256 = "1iv0pg26g8p7sqpjqzh0xdx6s9wi8l70kqkansky96nbqx2byp3f"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-libgfortran-13.2.0-6-any.pkg.tar.zst"; - sha256 = "1jmncy2drswx441dhxxs4i471d5lyqdn7faxd6qdni0g6vd56qir"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-libgfortran-13.2.0-6-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-gcc-libgfortran"; + sha256 = "1jmncy2drswx441dhxxs4i471d5lyqdn7faxd6qdni0g6vd56qir"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-openblas-0.3.27-1-any.pkg.tar.zst"; - sha256 = "1130ir15sq54mnhyr50yljkm1jj5s40lqkdhsmvk7rwlykl67jq4"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-openblas-0.3.27-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-openblas"; + sha256 = "1130ir15sq54mnhyr50yljkm1jj5s40lqkdhsmvk7rwlykl67jq4"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-numpy-1.26.4-1-any.pkg.tar.zst"; - sha256 = "1mhsnh3gvqhlq4m1m21xsfdf4zb0yrzvfp88hqcy6s1iiy5w4ync"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-numpy-1.26.4-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-numpy"; + sha256 = "1mhsnh3gvqhlq4m1m21xsfdf4zb0yrzvfp88hqcy6s1iiy5w4ync"; + }) -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-setuptools-69.1.1-1-any.pkg.tar.zst"; - sha256 = "0ih9y27m58c2mlj4g9sg90skbm8r2n60f71ayv7ilgqpl7k9s15j"; -}) + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-setuptools-69.1.1-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-python-setuptools"; + sha256 = "0ih9y27m58c2mlj4g9sg90skbm8r2n60f71ayv7ilgqpl7k9s15j"; + }) ] diff --git a/msys2/msys2_qt_ifw_packages.nix b/msys2/msys2_qt_ifw_packages.nix new file mode 100644 index 0000000..fea6325 --- /dev/null +++ b/msys2/msys2_qt_ifw_packages.nix @@ -0,0 +1,8 @@ +{ pkgs } : [ + + (pkgs.fetchurl { + url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-qt-installer-framework-4.7.0-1-any.pkg.tar.zst"; + name = "mingw-w64-x86_64-qt-installer-framework"; + sha256 = "188mb11y4ljyc52z0crp5xx63n19yr1bmcqi3qndvj5w5bmm2zgx"; + }) +] diff --git a/msys2/pythonparser_dependencies.txt b/msys2/pythonparser_dependencies.txt new file mode 100644 index 0000000..20a096a --- /dev/null +++ b/msys2/pythonparser_dependencies.txt @@ -0,0 +1 @@ +mingw-w64-x86_64-python-regex diff --git a/msys2/sipyco_dependencies.txt b/msys2/sipyco_dependencies.txt new file mode 100644 index 0000000..01a0005 --- /dev/null +++ b/msys2/sipyco_dependencies.txt @@ -0,0 +1,3 @@ +mingw-w64-x86_64-python3.11 +mingw-w64-x86_64-python-numpy +mingw-w64-x86_64-python-pybase64