diff --git a/build.rs b/build.rs index 13980ad4..b153538e 100644 --- a/build.rs +++ b/build.rs @@ -56,7 +56,7 @@ mod testgen_hs { return; } - let testgen_lib_version = "10.4.1.0"; + let testgen_lib_version = "10.4.1.1"; let target_os = if cfg!(target_os = "macos") { "darwin" diff --git a/flake.lock b/flake.lock index cbd3041f..81c8124d 100644 --- a/flake.lock +++ b/flake.lock @@ -241,16 +241,16 @@ "testgen-hs": { "flake": false, "locked": { - "lastModified": 1748953639, - "narHash": "sha256-DgbM5UUsxYMPJ1nl19AnCi3VdTj8WElB1A7zSE8iPII=", + "lastModified": 1751542906, + "narHash": "sha256-FYz1P11du5tSakpl2ec9CGdwEB5h+0FcdGPU3zXte60=", "owner": "input-output-hk", "repo": "testgen-hs", - "rev": "4f81d654fbd4a2bfa9d00c99b75e9725e8abd8e7", + "rev": "7d58736ed578a9ccf8337376b302bb188b74303f", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "10.4.1.0", + "ref": "10.4.1.1", "repo": "testgen-hs", "type": "github" } diff --git a/flake.nix b/flake.nix index 4d042bb3..bf4ffedb 100644 --- a/flake.nix +++ b/flake.nix @@ -11,7 +11,7 @@ flake-compat.flake = false; cardano-node.url = "github:IntersectMBO/cardano-node/10.4.1"; cardano-node.flake = false; # otherwise, +2k dependencies we don’t really use - testgen-hs.url = "github:input-output-hk/testgen-hs/10.4.1.0"; # make sure it follows cardano-node + testgen-hs.url = "github:input-output-hk/testgen-hs/10.4.1.1"; # make sure it follows cardano-node testgen-hs.flake = false; # otherwise, +2k dependencies we don’t really use devshell.url = "github:numtide/devshell"; devshell.inputs.nixpkgs.follows = "nixpkgs"; @@ -36,7 +36,7 @@ systems = [ "x86_64-linux" - # "aarch64-linux" + "aarch64-linux" "aarch64-darwin" "x86_64-darwin" ]; @@ -51,7 +51,6 @@ } // (lib.optionalAttrs (system == "x86_64-linux") { blockfrost-platform-x86_64-windows = inputs.self.internal.x86_64-windows.package; - blockfrost-platform-aarch64-linux = inputs.self.internal.aarch64-linux.package; }); devshells.default = import ./nix/devshells.nix {inherit inputs;}; @@ -113,9 +112,6 @@ ) // lib.genAttrs ["x86_64-windows"] ( targetSystem: import ./nix/internal/windows.nix {inherit inputs targetSystem;} - ) - // lib.genAttrs ["aarch64-linux"] ( - targetSystem: import ./nix/internal/linux-cross-arm64.nix {inherit inputs targetSystem;} ); nixosModule = { @@ -128,7 +124,7 @@ }; hydraJobs = let - crossSystems = ["x86_64-windows" "aarch64-linux"]; + crossSystems = ["x86_64-windows"]; allJobs = { blockfrost-platform = lib.genAttrs (config.systems ++ crossSystems) ( targetSystem: inputs.self.internal.${targetSystem}.package diff --git a/nix/internal/linux-cross-arm64.nix b/nix/internal/linux-cross-arm64.nix deleted file mode 100644 index 0c29fa48..00000000 --- a/nix/internal/linux-cross-arm64.nix +++ /dev/null @@ -1,92 +0,0 @@ -{ - inputs, - targetSystem, -}: -assert builtins.elem targetSystem ["aarch64-linux"]; let - buildSystem = "x86_64-linux"; - pkgs = inputs.nixpkgs.legacyPackages.${buildSystem}; -in rec { - toolchain = with inputs.fenix.packages.${buildSystem}; - combine [ - minimal.rustc - minimal.cargo - targets.aarch64-unknown-linux-gnu.latest.rust-std - ]; - - craneLib = (inputs.crane.mkLib pkgs).overrideToolchain toolchain; - - src = craneLib.cleanCargoSource ../../.; - - pkgsCross = pkgs.pkgsCross.aarch64-multiplatform; - - commonArgs = rec { - inherit src; - strictDeps = true; - - CARGO_BUILD_TARGET = "aarch64-unknown-linux-gnu"; - TARGET_CC = "${pkgsCross.stdenv.cc}/bin/${pkgsCross.stdenv.cc.targetPrefix}cc"; - - CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER = TARGET_CC; - - TESTGEN_HS_PATH = "unused"; # Don’t try to download it in `build.rs`. - - OPENSSL_DIR = "${pkgsCross.openssl.dev}"; - OPENSSL_LIB_DIR = "${pkgsCross.openssl.out}/lib"; - OPENSSL_INCLUDE_DIR = "${pkgsCross.openssl.dev}/include/"; - - depsBuildBuild = [ - pkgsCross.stdenv.cc - #pkgsCross.windows.pthreads - ]; - }; - - # For better caching: - cargoArtifacts = craneLib.buildDepsOnly commonArgs; - - packageName = (craneLib.crateNameFromCargoToml {cargoToml = src + "/Cargo.toml";}).pname; - - GIT_REVISION = inputs.self.rev or "dirty"; - - package = craneLib.buildPackage (commonArgs - // { - inherit cargoArtifacts GIT_REVISION; - doCheck = false; - postPatch = '' - sed -r '/^build = .*/d' -i Cargo.toml - rm build.rs - ''; - }); - - archive = let - outFileName = "${package.pname}-${package.version}-${inputs.self.shortRev or "dirty"}-${targetSystem}.tar.bz2"; - in - pkgs.runCommandNoCC "${package.pname}-archive" {} '' - cp -r ${bundle} ${package.pname} - - mkdir -p $out - tar -cjvf $out/${outFileName} ${package.pname}/ - - # Make it downloadable from Hydra: - mkdir -p $out/nix-support - echo "file binary-dist \"$out/${outFileName}\"" >$out/nix-support/hydra-build-products - ''; - - nix-bundle-exe = import inputs.nix-bundle-exe; - - # Portable directory that can be run on any modern Linux: - bundle = - (nix-bundle-exe { - inherit pkgs; - bin_dir = "bin"; - exe_dir = "exe"; - lib_dir = "lib"; - } "${package}/bin/${packageName}") - .overrideAttrs (drv: { - name = packageName; - buildCommand = - drv.buildCommand - + '' - ( cd $out ; ln -s bin/${packageName} . ; ) - ''; - }); -} diff --git a/nix/internal/unix.nix b/nix/internal/unix.nix index 0adbd051..6781f8ae 100644 --- a/nix/internal/unix.nix +++ b/nix/internal/unix.nix @@ -163,14 +163,17 @@ in in (import inputs.flake-compat { src = - if targetSystem != "aarch64-darwin" + if targetSystem != "aarch64-darwin" && targetSystem != "aarch64-linux" then unpatched else { outPath = toString (pkgs.runCommand "source" {} '' cp -r ${unpatched} $out chmod -R +w $out cd $out - echo ${lib.escapeShellArg (builtins.toJSON [targetSystem])} $out/nix/supported-systems.nix + echo ${lib.escapeShellArg (builtins.toJSON [targetSystem])} >$out/nix/supported-systems.nix + ${lib.optionalString (targetSystem == "aarch64-linux") '' + sed -r 's/"-fexternal-interpreter"//g' -i $out/nix/haskell.nix + ''} ''); inherit (unpatched) rev shortRev lastModified lastModifiedDate; }; @@ -180,7 +183,7 @@ in cardano-node-packages = { x86_64-linux = cardano-node-flake.hydraJobs.x86_64-linux.musl; - inherit (cardano-node-flake.packages) x86_64-darwin aarch64-darwin; + inherit (cardano-node-flake.packages) x86_64-darwin aarch64-darwin aarch64-linux; } .${ targetSystem @@ -236,41 +239,51 @@ in # For generating a signing key from a recovery phrase. It’s a little # controversial to download a binary, but we only need it for the devshell. If # needed, we can use the source instead. - cardano-address = let - release = "v2024-09-29"; - baseUrl = "https://github.com/cardano-foundation/cardano-wallet/releases/download/${release}/cardano-wallet"; - archive = pkgs.fetchzip { - name = "cardano-wallet-${release}"; - url = - { - "x86_64-linux" = "${baseUrl}-${release}-linux64.tar.gz"; - "x86_64-darwin" = "${baseUrl}-${release}-macos-intel.tar.gz"; - "aarch64-darwin" = "${baseUrl}-${release}-macos-silicon.tar.gz"; - } - .${ - targetSystem - }; - hash = - { - "x86_64-linux" = "sha256-EOe6ooqvSGylJMJnWbqDrUIVYzwTCw5Up/vU/gPK6tE="; - "x86_64-darwin" = "sha256-POUj3Loo8o7lBI4CniaA/Z9mTRAmWv9VWAdtcIMe27I="; - "aarch64-darwin" = "sha256-+6bzdUXnJ+nnYdZuhLueT0+bYmXzwDXTe9JqWrWnfe4="; - } - .${ - targetSystem - }; - }; - in - pkgs.runCommandNoCC "cardano-address" { - meta.description = "Command-line for address and key manipulation in Cardano"; - } '' - mkdir -p $out/bin $out/libexec - cp ${archive}/cardano-address $out/libexec/ - ${lib.optionalString pkgs.stdenv.isDarwin '' - cp ${archive}/{libz,libiconv.2,libgmp.10,libffi.8}.dylib $out/libexec - ''} - ln -sf $out/libexec/cardano-address $out/bin/ - ''; + cardano-address = + if targetSystem == "aarch64-linux" + then + pkgs.writeShellApplication { + name = "cardano-address"; + text = '' + echo >&2 "TODO: unimplemented: compile \`cardano-address\` for \`${targetSystem}\`!" + exit 1 + ''; + } + else let + release = "v2024-09-29"; + baseUrl = "https://github.com/cardano-foundation/cardano-wallet/releases/download/${release}/cardano-wallet"; + archive = pkgs.fetchzip { + name = "cardano-wallet-${release}"; + url = + { + "x86_64-linux" = "${baseUrl}-${release}-linux64.tar.gz"; + "x86_64-darwin" = "${baseUrl}-${release}-macos-intel.tar.gz"; + "aarch64-darwin" = "${baseUrl}-${release}-macos-silicon.tar.gz"; + } + .${ + targetSystem + }; + hash = + { + "x86_64-linux" = "sha256-EOe6ooqvSGylJMJnWbqDrUIVYzwTCw5Up/vU/gPK6tE="; + "x86_64-darwin" = "sha256-POUj3Loo8o7lBI4CniaA/Z9mTRAmWv9VWAdtcIMe27I="; + "aarch64-darwin" = "sha256-+6bzdUXnJ+nnYdZuhLueT0+bYmXzwDXTe9JqWrWnfe4="; + } + .${ + targetSystem + }; + }; + in + pkgs.runCommandNoCC "cardano-address" { + meta.description = "Command-line for address and key manipulation in Cardano"; + } '' + mkdir -p $out/bin $out/libexec + cp ${archive}/cardano-address $out/libexec/ + ${lib.optionalString pkgs.stdenv.isDarwin '' + cp ${archive}/{libz,libiconv.2,libgmp.10,libffi.8}.dylib $out/libexec + ''} + ln -sf $out/libexec/cardano-address $out/bin/ + ''; tx-build = pkgs.writeShellApplication { name = "tx-build";