From e7808666ea6abbe5fb9037d72710df77b1be6b01 Mon Sep 17 00:00:00 2001 From: Luflosi Date: Mon, 1 Jul 2024 21:42:50 +0200 Subject: [PATCH 1/3] nixos/tests/darling-dmg: init --- nixos/tests/all-tests.nix | 1 + nixos/tests/darling-dmg.nix | 34 +++++++++++++++++++ .../tools/filesystems/darling-dmg/default.nix | 8 ++++- 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 nixos/tests/darling-dmg.nix diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index d16b747bfa95..93391ee3d43a 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -240,6 +240,7 @@ in { custom-ca = handleTest ./custom-ca.nix {}; croc = handleTest ./croc.nix {}; darling = handleTest ./darling.nix {}; + darling-dmg = runTest ./darling-dmg.nix; dae = handleTest ./dae.nix {}; davis = handleTest ./davis.nix {}; db-rest = handleTest ./db-rest.nix {}; diff --git a/nixos/tests/darling-dmg.nix b/nixos/tests/darling-dmg.nix new file mode 100644 index 000000000000..0a2ec8298122 --- /dev/null +++ b/nixos/tests/darling-dmg.nix @@ -0,0 +1,34 @@ +{ lib, pkgs, ... }: +# This needs to be a VM test because the FUSE kernel module can't be used inside of a derivation in the Nix sandbox. +# This test also exercises the LZFSE support in darling-dmg. +let + # The last kitty release which is stored on an HFS+ filesystem inside the disk image + test-dmg-file = pkgs.fetchurl { + url = "https://github.com/kovidgoyal/kitty/releases/download/v0.17.4/kitty-0.17.4.dmg"; + hash = "sha256-m+c5s8fFrgUc0xQNI196WplYBZq9+lNgems5haZUdvA="; + }; +in +{ + name = "darling-dmg"; + meta.maintainers = with lib.maintainers; [ Luflosi ]; + + nodes.machine = {}; + + testScript = '' + start_all() + + machine.succeed("mkdir mount-point") + machine.succeed("'${pkgs.darling-dmg}/bin/darling-dmg' '${test-dmg-file}' mount-point") + + # Crude way to verify the contents + # Taken from https://stackoverflow.com/questions/545387/linux-compute-a-single-hash-for-a-given-folder-contents + # This could be improved. It does not check symlinks for example. + hash = machine.succeed(""" + (find mount-point -type f -print0 | sort -z | xargs -0 sha256sum; \ + find mount-point \( -type f -o -type d \) -print0 | sort -z | \ + xargs -0 stat -c '%n %a') \ + | sha256sum + """).strip() + assert hash == "00e61c2ef171093fbf194e420c17bb84bcdb823238d70eb46e375bab2427cc21 -", f"The disk image contents differ from what was expected (was {hash})" + ''; +} diff --git a/pkgs/tools/filesystems/darling-dmg/default.nix b/pkgs/tools/filesystems/darling-dmg/default.nix index 8884ef2f63d5..916b2db3b64e 100644 --- a/pkgs/tools/filesystems/darling-dmg/default.nix +++ b/pkgs/tools/filesystems/darling-dmg/default.nix @@ -1,4 +1,6 @@ -{ lib, stdenv, fetchFromGitHub, cmake, fuse, zlib, bzip2, openssl, libxml2, icu, lzfse, libiconv }: +{ lib, stdenv, fetchFromGitHub, cmake, fuse, zlib, bzip2, openssl, libxml2, icu, lzfse, libiconv +, nixosTests +}: stdenv.mkDerivation rec { pname = "darling-dmg"; @@ -20,6 +22,10 @@ stdenv.mkDerivation rec { "-llzfse" ]; + passthru.tests = { + inherit (nixosTests) darling-dmg; + }; + meta = with lib; { homepage = "https://www.darlinghq.org/"; description = "Darling lets you open macOS dmgs on Linux"; From 9080624466f5dbdcde31d8d2738e937d95d2d87b Mon Sep 17 00:00:00 2001 From: Luflosi Date: Mon, 1 Jul 2024 16:44:09 +0200 Subject: [PATCH 2/3] darling-dmg: 1.0.4+git20200427 -> 1.0.4-unstable-2023-07-26 --- pkgs/tools/filesystems/darling-dmg/default.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/tools/filesystems/darling-dmg/default.nix b/pkgs/tools/filesystems/darling-dmg/default.nix index 916b2db3b64e..4fca75a45bc8 100644 --- a/pkgs/tools/filesystems/darling-dmg/default.nix +++ b/pkgs/tools/filesystems/darling-dmg/default.nix @@ -2,15 +2,15 @@ , nixosTests }: -stdenv.mkDerivation rec { +stdenv.mkDerivation { pname = "darling-dmg"; - version = "1.0.4+git20200427"; + version = "1.0.4-unstable-2023-07-26"; src = fetchFromGitHub { owner = "darlinghq"; repo = "darling-dmg"; - rev = "71cc76c792db30328663272788c0b64aca27fdb0"; - sha256 = "08iphkxlmjddrxpbm13gxyqwcrd0k65z3l1944n4pccb6qbyj8gv"; + rev = "a36bf0c07b16675b446377890c5f6f74563f84dd"; + hash = "sha256-QM75GuFHl2gRlRw1BmTexUE1d9YNnhG0qmTqmE9kMX4="; }; nativeBuildInputs = [ cmake ]; @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://www.darlinghq.org/"; - description = "Darling lets you open macOS dmgs on Linux"; + description = "FUSE module for .dmg files (containing an HFS+ filesystem)"; mainProgram = "darling-dmg"; platforms = platforms.unix; license = licenses.gpl3Only; From 496099641c37292cc00e438336fec1cb5f0ceeb7 Mon Sep 17 00:00:00 2001 From: Luflosi Date: Mon, 1 Jul 2024 17:15:56 +0200 Subject: [PATCH 3/3] darling-dmg: migrate to by-name --- .../default.nix => by-name/da/darling-dmg/package.nix} | 0 pkgs/top-level/all-packages.nix | 2 -- 2 files changed, 2 deletions(-) rename pkgs/{tools/filesystems/darling-dmg/default.nix => by-name/da/darling-dmg/package.nix} (100%) diff --git a/pkgs/tools/filesystems/darling-dmg/default.nix b/pkgs/by-name/da/darling-dmg/package.nix similarity index 100% rename from pkgs/tools/filesystems/darling-dmg/default.nix rename to pkgs/by-name/da/darling-dmg/package.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8112217897fe..f68fd8d4c357 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -38951,8 +38951,6 @@ with pkgs; cnijfilter2 = callPackage ../misc/cups/drivers/cnijfilter2 { }; - darling-dmg = callPackage ../tools/filesystems/darling-dmg { }; - depotdownloader = callPackage ../tools/misc/depotdownloader { }; dbacl = callPackage ../tools/misc/dbacl { };