diff --git a/pkgs/tools/admin/lxd/default.nix b/pkgs/tools/admin/lxd/default.nix index fcc82601badf..7c4b8984bfcd 100644 --- a/pkgs/tools/admin/lxd/default.nix +++ b/pkgs/tools/admin/lxd/default.nix @@ -1,20 +1,39 @@ -{ lib, hwdata, pkg-config, lxc, buildGoPackage, fetchurl -, makeWrapper, acl, rsync, gnutar, xz, btrfs-progs, gzip, dnsmasq, attr -, squashfsTools, iproute2, iptables, libcap -, dqlite, raft-canonical, sqlite-replication, udev -, writeShellScriptBin, apparmor-profiles, apparmor-parser +{ lib +, hwdata +, pkg-config +, lxc +, buildGoModule +, fetchurl +, makeWrapper +, acl +, rsync +, gnutar +, xz +, btrfs-progs +, gzip +, dnsmasq +, attr +, squashfsTools +, iproute2 +, iptables +, libcap +, dqlite +, raft-canonical +, sqlite-replication +, udev +, writeShellScriptBin +, apparmor-profiles +, apparmor-parser , criu , bash , installShellFiles , nixosTests }: -buildGoPackage rec { +buildGoModule rec { pname = "lxd"; version = "5.6"; - goPackagePath = "github.com/lxc/lxd"; - src = fetchurl { urls = [ "https://linuxcontainers.org/downloads/lxd/lxd-${version}.tar.gz" @@ -23,6 +42,8 @@ buildGoPackage rec { sha256 = "sha256-bLKl9OpvxXozmqjX8hY2xIiVectBiohDxTzd5du5w+4="; }; + vendorSha256 = null; + postPatch = '' substituteInPlace shared/usbid/load.go \ --replace "/usr/share/misc/usb.ids" "${hwdata}/share/hwdata/usb.ids" @@ -30,13 +51,38 @@ buildGoPackage rec { excludedPackages = [ "test" "lxd/db/generate" ]; + nativeBuildInputs = [ installShellFiles pkg-config makeWrapper ]; + buildInputs = [ + lxc + acl + libcap + dqlite.dev + raft-canonical.dev + sqlite-replication + udev.dev + ]; + + ldflags = [ "-s" "-w" ]; + tags = [ "libsqlite3" ]; + preBuild = '' # required for go-dqlite. See: https://github.com/lxc/lxd/pull/8939 export CGO_LDFLAGS_ALLOW="(-Wl,-wrap,pthread_create)|(-Wl,-z,now)" - - makeFlagsArray+=("-tags libsqlite3") ''; + preCheck = + let skippedTests = [ + "TestValidateConfig" + "TestConvertNetworkConfig" + "TestConvertStorageConfig" + "TestSnapshotCommon" + "TestContainerTestSuite" + ]; in + '' + # Disable tests requiring local operations + buildFlagsArray+=("-run" "[^(${builtins.concatStringsSep "|" skippedTests})]") + ''; + postInstall = '' wrapProgram $out/bin/lxd --prefix PATH : ${lib.makeBinPath ( [ iptables ] @@ -47,16 +93,12 @@ buildGoPackage rec { ) } - installShellCompletion --bash --name lxd go/src/github.com/lxc/lxd/scripts/bash/lxd-client + installShellCompletion --bash --name lxd ./scripts/bash/lxd-client ''; passthru.tests.lxd = nixosTests.lxd; passthru.tests.lxd-nftables = nixosTests.lxd-nftables; - nativeBuildInputs = [ installShellFiles pkg-config makeWrapper ]; - buildInputs = [ lxc acl libcap dqlite.dev raft-canonical.dev - sqlite-replication udev.dev ]; - meta = with lib; { description = "Daemon based on liblxc offering a REST API to manage containers"; homepage = "https://linuxcontainers.org/lxd/";