Skip to content

Commit

Permalink
Try to fixup aarch64 cross build for hydra.
Browse files Browse the repository at this point in the history
  • Loading branch information
angerman committed May 10, 2024
1 parent a745f47 commit 612a6cc
Show file tree
Hide file tree
Showing 4 changed files with 115 additions and 29 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci-nix.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,10 @@ jobs:
name: cardano-scaling
authToken: '${{ secrets.CACHIX_CARDANO_SCALING_AUTH_TOKEN }}'

- name: ❓Aarch64
- name: Aarch64
if: ${{ matrix.package == 'aarch64' }}
run: |
nix build .#legacyPackages.x86_64-linux.aarch64.hydra-node
nix build .#legacyPackages.x86_64-linux.aarch64.hydra-node.components.exes.hydra-node
- name: ❓ Test (Pure)
if: ${{ matrix.package == 'hydra-plutus'
Expand Down
59 changes: 33 additions & 26 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 11 additions & 1 deletion flake.nix
Original file line number Diff line number Diff line change
@@ -1,7 +1,17 @@
{
inputs = {
nixpkgs.follows = "haskellNix/nixpkgs";
haskellNix.url = "github:input-output-hk/haskell.nix";
haskellNix.url = "github:input-output-hk/haskell.nix?ref=angerman/fix-aarch64-musl";
hackageNix = {
url = "github:input-output-hk/hackage.nix";
flake = false;
};
haskellNix.inputs.hackage.follows = "hackageNix";
iserv-proxy = {
url = "github:stable-haskell/iserv-proxy?ref=iserv-syms";
flake = false;
};
haskellNix.inputs.iserv-proxy.follows = "iserv-proxy";
iohk-nix.url = "github:input-output-hk/iohk-nix";
flake-parts.url = "github:hercules-ci/flake-parts";
lint-utils = {
Expand Down
69 changes: 69 additions & 0 deletions nix/hydra/project.nix
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,74 @@ pkgs.haskell-nix.project {
# For this reason, we try to get away without re-installing lib:ghc for now.
reinstallableLibGhc = false;
}
{
# This is needed to stop GHC from trying to load libc++.a; I hope we'll
# have a better fix for this eventually. For now this will have to do.
packages.double-conversion.ghcOptions = [
# stop putting U __gxx_personality_v0 into the library!
"-optcxx-fno-rtti" "-optcxx-fno-exceptions"
# stop putting U __cxa_guard_release into the library!
"-optcxx-std=gnu++98" "-optcxx-fno-threadsafe-statics"
];
# This is needed to stop failing when `git` can't be found. When
# cross compiling, git does not exist in the target context, and thus can
# not be executed. Template Hsakell does not distinguish between native
# and target.
packages.gitrev.patches = [
(builtins.toFile "gitrev.patch" ''
diff --git a/src/Development/GitRev.hs b/src/Development/GitRev.hs
index b664692..603ad1b 100644
--- a/src/Development/GitRev.hs
+++ b/src/Development/GitRev.hs
@@ -62,7 +62,9 @@ runGit :: [String] -> String -> IndexUsed -> Q String
runGit args def useIdx = do
let oops :: SomeException -> IO (ExitCode, String, String)
oops _e = return (ExitFailure 1, def, "")
+ none :: SomeException -> IO (Maybe FilePath)
+ none _e = return Nothing
- gitFound <- runIO $ isJust <$> findExecutable "git"
+ gitFound <- runIO $ isJust <$> findExecutable "git" `catch` none
if gitFound
then do
-- a lot of bookkeeping to record the right dependencies
'')
];
}
# This is needed because plutus-tx, force loads the PlutusTx.Plugin, and then
# we fail with
#
# > <no location info>: error:
# > Plugins require -fno-external-interpreter
#
# during the build. Plugins and cross compilers are still WIP :-/

(pkgs.lib.mkIf (pkgs.hostPlatform.isMusl && pkgs.hostPlatform.isAarch64) {
packages.plutus-tx.patches = [
(builtins.toFile "plutus-tx.patch" ''
From 895a8a4af848ec29f9165fbff585f391d2c3358b Mon Sep 17 00:00:00 2001
From: Moritz Angermann <[email protected]>
Date: Sun, 10 Dec 2023 16:23:24 +0800
Subject: [PATCH] Update TH.hs
Just don't force load it.
---
src/PlutusTx/TH.hs | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/PlutusTx/TH.hs b/src/PlutusTx/TH.hs
index 49f26f6585e..02a0f927dd5 100644
--- a/src/PlutusTx/TH.hs
+++ b/src/PlutusTx/TH.hs
@@ -46,7 +46,6 @@ going to typecheck, and the result is always a 'CompiledCode', so that's also fi
-- | Compile a quoted Haskell expression into a corresponding Plutus Core program.
compileUntyped :: TH.Q TH.Exp -> TH.Q TH.Exp
compileUntyped e = do
- TH.addCorePlugin "PlutusTx.Plugin"
loc <- TH.location
let locStr = TH.pprint loc
-- See note [Typed TH]
'')
];
})
];
}

0 comments on commit 612a6cc

Please sign in to comment.