diff --git a/flake.lock b/flake.lock index b7deb4e..a617543 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -20,16 +20,32 @@ }, "nixpkgs": { "locked": { - "lastModified": 1701282334, - "narHash": "sha256-MxCVrXY6v4QmfTwIysjjaX0XUhqBbxTWWB4HXtDYsdk=", + "lastModified": 1731603435, + "narHash": "sha256-CqCX4JG7UiHvkrBTpYC3wcEurvbtTADLbo3Ns2CEoL8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "057f9aecfb71c4437d2b27d3323df7f93c010b7e", + "rev": "8b27c1239e5c421a2bbc2c65d52e4a6fbf2ff296", "type": "github" }, "original": { "owner": "nixos", - "ref": "23.11", + "ref": "24.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs2505": { + "locked": { + "lastModified": 1748026580, + "narHash": "sha256-rWtXrcIzU5wm/C8F9LWvUfBGu5U5E7cFzPYT1pHIJaQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "11cb3517b3af6af300dd6c055aeda73c9bf52c48", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "25.05", "repo": "nixpkgs", "type": "github" } @@ -37,7 +53,8 @@ "root": { "inputs": { "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "nixpkgs2505": "nixpkgs2505" } }, "systems": { diff --git a/flake.nix b/flake.nix index f266355..49678a8 100644 --- a/flake.nix +++ b/flake.nix @@ -4,24 +4,31 @@ and a development shell for Linux and macOS. ''; inputs = { - nixpkgs.url = "github:nixos/nixpkgs/23.11"; + nixpkgs.url = "github:nixos/nixpkgs/24.11"; + # only used for crossBuilding on darwin, since 24.11 is broken + nixpkgs2505.url = "github:nixos/nixpkgs/25.05"; flake-utils.url = "github:numtide/flake-utils"; }; - outputs = { self, nixpkgs, flake-utils }: + outputs = { self, nixpkgs, nixpkgs2505, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; }; + crossBuild = import ./nix/crossBuild.nix { inherit pkgs; }; + + crossBuildDarwin = import ./nix/crossBuild.nix { + pkgs = import nixpkgs2505 { inherit system; }; + }; in { devShells = { crossBuild = { inherit (crossBuild) x86_64-linux; inherit (crossBuild) x86_64-windows; - inherit (crossBuild) darwin; + inherit (crossBuildDarwin) darwin; }; default = import ./nix/devShell.nix { inherit pkgs; diff --git a/go.mod b/go.mod index 5bcd391..2febc2a 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/dividat/driver -go 1.18 +go 1.23.0 + +toolchain go1.23.3 require ( github.com/cenkalti/backoff v2.2.1+incompatible @@ -18,15 +20,15 @@ require ( // dependency choice as these projects evolve in the future. github.com/libp2p/zeroconf/v2 v2.2.0 github.com/pin/tftp v2.1.0+incompatible - github.com/sirupsen/logrus v1.8.1 + github.com/sirupsen/logrus v1.8.3 go.bug.st/serial v1.6.1 ) require ( github.com/creack/goselect v0.1.2 // indirect github.com/miekg/dns v1.1.43 // indirect - golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6 // indirect - golang.org/x/sys v0.19.0 // indirect + golang.org/x/net v0.36.0 // indirect + golang.org/x/sys v0.30.0 // indirect ) replace go.bug.st/serial => github.com/dividat/go-serial v1.6.4-usbmetadata diff --git a/go.sum b/go.sum index e27f169..dabc2ce 100644 --- a/go.sum +++ b/go.sum @@ -4,6 +4,7 @@ github.com/creack/goselect v0.1.2 h1:2DNy14+JPjRBgPzAd1thbQp4BSIihxcBf0IXhQXDRa0 github.com/creack/goselect v0.1.2/go.mod h1:a/NhLweNvqIYMuxcMOuWY516Cimucms3DglDzQP3hKY= github.com/cskr/pubsub v1.0.2 h1:vlOzMhl6PFn60gRlTQQsIfVwaPB/B/8MziK8FhEPt/0= github.com/cskr/pubsub v1.0.2/go.mod h1:/8MzYXk/NJAz782G8RPkFzXTZVu63VotefPnR9TIRis= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/denisbrodbeck/machineid v1.0.1 h1:geKr9qtkB876mXguW2X6TU4ZynleN6ezuMSRhl4D7AQ= @@ -24,25 +25,31 @@ github.com/pin/tftp v2.1.0+incompatible h1:Yng4J7jv6lOc6IF4XoB5mnd3P7ZrF60XQq+my github.com/pin/tftp v2.1.0+incompatible/go.mod h1:xVpZOMCXTy+A5QMjEVN0Glwa1sUvaJhFXbr/aAxuxGY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/sirupsen/logrus v1.8.3 h1:DBBfY8eMYazKEJHb3JKpSPfpgd2mBCoNFlQx6C5fftU= +github.com/sirupsen/logrus v1.8.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6 h1:0PC75Fz/kyMGhL0e1QnypqK2kQMqKt9csD1GnMJR+Zk= golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= +golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426080607-c94f62235c83/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/nix/crossBuild.nix b/nix/crossBuild.nix index 386357b..f089484 100644 --- a/nix/crossBuild.nix +++ b/nix/crossBuild.nix @@ -26,6 +26,10 @@ in let mingwPkgs = pkgs.pkgsCross.mingwW64; cc = mingwPkgs.stdenv.cc; + + mcfgthreads = mingwPkgs.windows.mcfgthreads.overrideAttrs (oldAttrs: { + configureFlags = (oldAttrs.configureFlags or []) ++ [ "--enable-static" ]; + }); in mkCrossBuildShell { GOOS = "windows"; @@ -33,7 +37,7 @@ in CC = "${cc}/bin/x86_64-w64-mingw32-gcc"; buildInputs = [ cc - mingwPkgs.windows.mingw_w64_pthreads + mcfgthreads ]; staticBuild = true; }; @@ -43,7 +47,7 @@ in muslPkgs = pkgs.pkgsCross.musl64; cc = muslPkgs.gcc; static-pcsclite = muslPkgs.pcsclite.overrideAttrs (attrs: { - configureFlags = attrs.configureFlags ++ [ "--enable-static" "--disable-shared" ]; + mesonFlags = attrs.mesonFlags ++ [ (pkgs.lib.mesonOption "default_library" "static") ]; }); in mkCrossBuildShell { diff --git a/src/dividat-driver/flex/enumerator/mockdev/enabled.go b/src/dividat-driver/flex/enumerator/mockdev/enabled.go index c445483..6f9ce90 100644 --- a/src/dividat-driver/flex/enumerator/mockdev/enabled.go +++ b/src/dividat-driver/flex/enumerator/mockdev/enabled.go @@ -5,7 +5,9 @@ package mockdev import ( "encoding/json" "errors" + "maps" "net/http" + "slices" "strconv" "strings" @@ -80,11 +82,8 @@ func (h *MockDeviceRegistry) ServeHTTP(w http.ResponseWriter, r *http.Request) { } func (h *MockDeviceRegistry) ListMockDevices() []*serialenum.PortDetails { - ports := make([]*serialenum.PortDetails, 0, len(h.registeredMockDevices)) - for _, port := range h.registeredMockDevices { - ports = append(ports, port) - } - return ports + values := slices.Collect(maps.Values(h.registeredMockDevices)) + return values } func (h *MockDeviceRegistry) nextMockDeviceId() MockDeviceId {