I am trying to get a cardano node started on a Mac with the new M1 chip. Ive looked through the Installing a Cardano-node walk-through and found that they specify that the Mac install is for Intel chips only. They do say that they are working on a guide for the M1 chip, so this leads me to believe that it is possible. Does anybody have a lead or suggestions as to what the different steps might be?
6 Answers
I also do have Macbook with M1 chip and I use precompiled binaries that ship with Daedalus. It will save you a lot of trouble unless you really want to build it from source.
After you've installed your Daedalus you can sym link cardano-cli binary that comes with it and export CARDANO_NODE_SOCKET_PATH
env variable and it should be ready to use.
For example if you want to sym link cardano-cli for testnet Daedauls you'd do this:
ln -s /Applications/Daedalus Testnet.app/Contents/MacOS/cardano-cli /usr/local/bin/cardano-cli
and to export CARDANO_NODE_SOCKET_PATH
env variable you would do this:
export CARDANO_NODE_SOCKET_PATH=~/Library/Application\ Support/Daedalus\ Testnet/cardano-node.socket
Once you do this, and sync your node (by running you wallet) you should be ready to submit transactions and or query blockchain.
-
I think this is the most valid solution right now. Configuring the Testnet is just the same steps as it would be if you had built from the source. Good work around :) Oct 12, 2021 at 17:23
-
seems something simillar is necessary to do after cabal configure...
. Mac doesn't have apt command, but I would assume you can get those libraries with homebrew
sudo apt install llvm-9
sudo apt install clang-9 libnuma-dev
sudo ln -s /usr/bin/llvm-config-9 /usr/bin/llvm-config
sudo ln -s /usr/bin/opt-9 /usr/bin/opt
sudo ln -s /usr/bin/llc-9 /usr/bin/llc
sudo ln -s /usr/bin/clang-9 /usr/bin/clang
Edited 02-Jan-2022:
So I was able to compile cardano-node on M1, main trick to install llvm + add some cabal options, before building.
To install llvm you will need:
brew install llvm
Additionally you need to set cabal options after cabal configure --with-compiler=ghc-8.10.7
echo "package trace-dispatcher" >> cabal.project.local
echo " ghc-options: -Wwarn" >> cabal.project.local
echo "" >> cabal.project.local
I got hint from here: https://github.com/input-output-hk/cardano-node/issues/3395
Additionally I updated cardano-node instalation manual on https://developers.cardano.org/docs/get-started/installing-cardano-node, but it is not merged yet, here you can find full manual what I hope will be merged soon:
Try this guide. Worked for me using Debian in a VM
https://gist.github.com/d0n13/d286b36d630fa6820c40b534fb56986a
Unlike the Daedalus wallet these are arm64 binaries which are faster
cardano-cli: ELF 64-bit LSB executable, ARM aarch64
cardano-node: ELF 64-bit LSB executable, ARM aarch64
I am able to confirm that the cardano-node that is packaged with the plutus-app git works find on an M1 apple. Was able to mint tokens using the cli on the cardano testnet. Cheers!
Though, did you tried installing the node anyway ? I've been trying and it stops at the cabal build all
commands, here's the error :
[3 of 3] Compiling Criterion.Measurement ( src/Criterion/Measurement.hs, dist/build/Criterion/Measurement.o, dist/build/Criterion/Measurement.dyn_o )
cbits/cycles.c:55:2: error:
error: Unsupported OS/architecture/compiler!
|
55 | #error Unsupported OS/architecture/compiler!
| ^
#error Unsupported OS/architecture/compiler!
^
1 error generated.
`gcc' failed in phase `C Compiler'. (Exit code: 1)
cabal: Failed to build criterion-measurement-0.1.2.0 (which is required by
test:cardano-api-test from cardano-api-1.30.1). See the build log above for
details.
Using Rosetta doesn't work either, an error occurs, not the same that without Rosetta :
/var/folders/w5/wm5j4z5s4s9ff4hmkm2bfb4m0000gn/T/ghc17359_0/ghc_1.s:15:2: error:
error: unrecognized instruction mnemonic, did you mean: eret, ret?
retq
^
|
15 | retq
| ^
<no location info>: error:
Error running clang! you need clang installed to use the LLVM backend
(or GHC tried to execute clang incorrectly)
`clang' failed in phase `Clang (Assembler)'. (Exit code: 1)
Although I have installed llvm... I am still trying to figure how to go through all this but I don't have plenty of times
-
I get a similar error to the build where you did not use Rosetta. Mine says this
cabal: Failed to build plutus-core-0.1.0.0
. Some guy on the Cardano-node discord said he got it working when building from the source, so I don't know what to do. Oct 7, 2021 at 20:04 -
Ive decided its not worth my time to figure this out when I can use a Linux Vm. Lemme know if you figure it out though :) Oct 7, 2021 at 20:44
-
1Well, i still find nothing about it, it looks like it is too soon haha. I managed to make cardano-node and cardano-cli usable through Daedalus App so i might be alright now ! :)– farneseOct 8, 2021 at 21:09
-
Oh hell yah dude! Im gonna do the same. Did you end up using rosetta as well? Oct 9, 2021 at 3:12
-
1I am using rosetta yes, well it's not really a problem, if anything needs to be done without it i'll just uncheck that checkbox in the Read informations page of the terminal– farneseOct 9, 2021 at 13:07
I have created an elegant solution where you can run cardano-cli from any network easily.
Firstly, download preview and pre-prod here:
https://docs.cardano.org/cardano-testnet/daedalus-testnet/
Download mainnet here:
https://daedaluswallet.io/en/download/
Once you have done this navigate to /usr/local/bin
Using sudo
create 3 new files with the following names and shell script inside it.
cardano-cli-preview
#!/bin/sh
export CARDANO_NODE_SOCKET_PATH=~/Library/Application\ Support/Daedalus\ Preview/cardano-node.socket
/Applications/Daedalus\ Preview.app/Contents/MacOS/cardano-cli "$@"
cardano-cli-preprod
#!/bin/sh
export CARDANO_NODE_SOCKET_PATH=~/Library/Application\ Support/Daedalus\ Pre-Prod/cardano-node.socket
/Applications/Daedalus\ Pre-Prod.app/Contents/MacOS/cardano-cli "$@"
cardano-cli-mainnet
#!/bin/sh
export CARDANO_NODE_SOCKET_PATH=~/Library/Application\ Support/Daedalus\ Mainnet/cardano-node.socket
/Applications/Daedalus\ Mainnet.app/Contents/MacOS/cardano-cli "$@"
Note the "@" will take all the arguments passed to it and pass it onto the real cardano-cli.
Make sure to give them execution permissions
sudo chmod +x /usr/local/bin/cardano-cli-preview
sudo chmod +x /usr/local/bin/cardano-cli-preprod
sudo chmod +x /usr/local/bin/cardano-cli-mainnet
Now you can simply call cardano-cli-preview to connect to the preview network whenever you want, or call cardano-cli-preprod to connect to preproduction and cardano-cli-mainnet for the mainnet.
To test each of these you can run the following commands
cardano-cli-preview query tip --testnet-magic 2
cardano-cli-preprod query tip --testnet-magic 1
cardano-cli-mainnet query tip --mainnet
ln -s /Applications/Daedalus Testnet.app/Contents/MacOS/cardano-cli /usr/local/bin/cardano-cli
error saysln: /usr/local/bin/cardano-cli: No such file or directory
How can I fix that?