diff --git a/flake.lock b/flake.lock index fbfcb7521..132cbbba8 100644 --- a/flake.lock +++ b/flake.lock @@ -11,11 +11,11 @@ ] }, "locked": { - "lastModified": 1647688999, - "narHash": "sha256-K99rYlmfCZmfam4m07hLZVg7m2zT5ul62wVGdpmjciA=", + "lastModified": 1649124276, + "narHash": "sha256-l1+vk7cvj4cjl83wRx/y1Jwdds4e8xAzpxHrXusEZ5A=", "owner": "m-labs", "repo": "artiq-comtools", - "rev": "7eb367b2df7510dd4fa7ccba3682b2ff64a5d982", + "rev": "e2d85f2e51ecdac463da752ef754e59572f9e119", "type": "github" }, "original": { @@ -45,11 +45,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1648584347, - "narHash": "sha256-m27UgTuWDO6rLkwNdxBeGXW7rLZbdl5vCp7afe0P4qo=", + "lastModified": 1649124608, + "narHash": "sha256-ZBmCeuOSZTxa9c9nbdFtSCDy940HlMAhNNh5TA42f1E=", "ref": "master", - "rev": "b8ef44d64eabf62175d2b3e900124e0607c7b4d3", - "revCount": 710, + "rev": "e05b0bf5dc427952a60b0dbe696de2ea239d9206", + "revCount": 724, "type": "git", "url": "https://git.m-labs.hk/m-labs/nac3.git" }, @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1647992509, - "narHash": "sha256-AG40Nt5OWz0LBs5p457emOuwLKOvTtcv/2fUdnEN3Ws=", + "lastModified": 1649024309, + "narHash": "sha256-AWbvj/NHZXVwAnHaVOFlxg7tcNerEKrKBmgGfztSHWM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d2caa9377539e3b5ff1272ac3aa2d15f3081069f", + "rev": "af0a9bc0e5341855518e9c1734d7ef913e5138b9", "type": "github" }, "original": { @@ -92,11 +92,11 @@ ] }, "locked": { - "lastModified": 1647688038, - "narHash": "sha256-IceTSKu1sQB8sFmDTzvmurlEHWL1cV29N0mUY5F7vUY=", + "lastModified": 1649124180, + "narHash": "sha256-NxGYtKeUqvABCkCBixJ1cDJGTPooHh4I2MuWfj0i0Ok=", "owner": "m-labs", "repo": "sipyco", - "rev": "1a9a3062451f5c5b125b006d1b9bee997f986abd", + "rev": "0d61fba000d03692ee5aa66c813977e7db085c31", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 134a96551..94cd4b92d 100644 --- a/flake.nix +++ b/flake.nix @@ -336,6 +336,8 @@ }; }; + packages.x86_64-w64-mingw32 = import ./windows { inherit sipyco nac3 artiq-comtools; artiq = self; }; + inherit makeArtiqBoardPackage; defaultPackage.x86_64-linux = packages.x86_64-linux.python3-mimalloc.withPackages(ps: [ packages.x86_64-linux.artiq ]); @@ -361,6 +363,9 @@ hydraJobs = { inherit (packages.x86_64-linux) artiq artiq-board-kc705-nist_clock openocd-bscanspi; + sipyco-msys2-pkg = packages.x86_64-w64-mingw32.sipyco-pkg; + artiq-comtools-msys2-pkg = packages.x86_64-w64-mingw32.artiq-comtools-pkg; + artiq-msys2-pkg = packages.x86_64-w64-mingw32.artiq-pkg; }; }; diff --git a/windows/PKGBUILD.artiq b/windows/PKGBUILD.artiq new file mode 100644 index 000000000..6f6aefaa1 --- /dev/null +++ b/windows/PKGBUILD.artiq @@ -0,0 +1,8 @@ +pkgbase="mingw-w64-artiq" +pkgname="mingw-w64-x86_64-artiq" +pkgrel=1 +pkgdesc="A leading-edge control system for quantum information experiments" +license=("LGPL") +depends=("mingw-w64-x86_64-python") + +source PKGBUILD.common diff --git a/windows/PKGBUILD.artiq-comtools b/windows/PKGBUILD.artiq-comtools new file mode 100644 index 000000000..370c7436d --- /dev/null +++ b/windows/PKGBUILD.artiq-comtools @@ -0,0 +1,8 @@ +pkgbase="mingw-w64-artiq-comtools" +pkgname="mingw-w64-x86_64-artiq-comtools" +pkgrel=1 +pkgdesc="Lightweight ARTIQ communication tools" +license=("LGPL") +depends=("mingw-w64-x86_64-python") + +source PKGBUILD.common diff --git a/windows/PKGBUILD.common b/windows/PKGBUILD.common new file mode 100644 index 000000000..78d493e8a --- /dev/null +++ b/windows/PKGBUILD.common @@ -0,0 +1,19 @@ +arch=("any") +mingw_arch=("mingw64") +pkgver=${DRV_VERSION} +url="https://m-labs.hk" +source=("source.tar") +sha256sums=("SKIP") + +build() { + mkdir mingw64 + export PYTHONPATH=`pwd`/mingw64/lib/python3.9/site-packages + chmod +w -R source + cd source + wine-msys2-build python setup.py install --prefix=../mingw64 + cd .. +} + +package() { + cp -R mingw64 ${pkgdir} +} diff --git a/windows/PKGBUILD.sipyco b/windows/PKGBUILD.sipyco new file mode 100644 index 000000000..d835bd1f3 --- /dev/null +++ b/windows/PKGBUILD.sipyco @@ -0,0 +1,8 @@ +pkgbase="mingw-w64-sipyco" +pkgname="mingw-w64-x86_64-sipyco" +pkgrel=1 +pkgdesc="Simple Python Communications" +license=("LGPL") +depends=("mingw-w64-x86_64-python") + +source PKGBUILD.common diff --git a/windows/default.nix b/windows/default.nix new file mode 100644 index 000000000..7d56e5c99 --- /dev/null +++ b/windows/default.nix @@ -0,0 +1,46 @@ +{ sipyco, nac3, artiq-comtools, artiq }: +let + pkgs = import nac3.inputs.nixpkgs { system = "x86_64-linux"; }; + makeMsys2 = { name, version, src }: pkgs.stdenvNoCC.mkDerivation { + pname = "${name}-msys2-pkg"; + inherit version; + nativeBuildInputs = [ + pkgs.pacman pkgs.fakeroot pkgs.libarchive pkgs.zstd pkgs.file + nac3.packages.x86_64-w64-mingw32.wine-msys2-build + ]; + inherit src; + phases = [ "buildPhase" "installPhase" ]; + buildPhase = + '' + export DRV_VERSION=${version} + ln -s ${./PKGBUILD.${name}} PKGBUILD + ln -s ${./PKGBUILD.common} PKGBUILD.common + ln -s $src source + tar cfh source.tar source + rm source + makepkg --config ${./makepkg.conf} --nodeps + ''; + installPhase = + '' + mkdir $out $out/nix-support + cp *.pkg.tar.zst $out + echo file msys2 $out/*.pkg.tar.zst >> $out/nix-support/hydra-build-products + ''; + }; +in { + sipyco-pkg = makeMsys2 { + name = "sipyco"; + src = sipyco; + inherit (sipyco.packages.x86_64-linux.sipyco) version; + }; + artiq-comtools-pkg = makeMsys2 { + name = "artiq-comtools"; + src = artiq-comtools; + inherit (artiq-comtools.packages.x86_64-linux.artiq-comtools) version; + }; + artiq-pkg = makeMsys2 { + name = "artiq"; + src = artiq; + inherit (artiq.packages.x86_64-linux.artiq) version; + }; +} diff --git a/windows/makepkg.conf b/windows/makepkg.conf new file mode 100644 index 000000000..3238344eb --- /dev/null +++ b/windows/makepkg.conf @@ -0,0 +1,2 @@ +PKGEXT='.pkg.tar.zst' +SRCEXT='.src.tar.gz'