Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
3d3c02d Improve (Kiminuo) ee3cf5f Add release instructions (Kiminuo) d93c8f7 Add support for arm64 (Kiminuo) Pull request description: Related to #345 Related to WalletWasabi/WalletWasabi#4051 (comment) Discussion: Some discussion here: kiminuo#1 This PR just shows how to do a deterministic build for `arm64` architecture. The hope is HWI's support for `arm64` will improve a bit. ### Setup To set up your environment, install: ```s sudo apt install qemu-user-static ``` ### Build for arm64 Use [docker buildx](https://docs.docker.com/buildx/working-with-buildx/) to replicate [deterministic build instructions](https://github.com/bitcoin-core/HWI/blob/master/docs/development/release-process.rst#deterministic-builds-with-docker) for the arm64 build: ```s docker buildx build --no-cache --platform linux/arm64 -t hwi-builder -f contrib/build.Dockerfile . # Note the use of "--without-gui". docker run --platform linux/arm64 -it --rm --name hwi-builder -v $PWD:/opt/hwi --workdir /opt/hwi hwi-builder /bin/bash -c "contrib/build_bin.sh --without-gui && contrib/build_dist.sh --without-gui" ``` i.e. the change is: ```diff -docker build --no-cache -t hwi-builder -f contrib/build.Dockerfile . -docker run -it --name hwi-builder -v $PWD:/opt/hwi --rm --workdir /opt/hwi hwi-builder /bin/bash -c "contrib/build_bin.sh && contrib/build_dist.sh && contrib/build_wine.sh" +docker buildx build --no-cache --platform linux/arm64 -t hwi-builder -f contrib/build.Dockerfile . +docker run --platform linux/arm64 -it --rm --name hwi-builder -v $PWD:/opt/hwi --workdir /opt/hwi hwi-builder /bin/bash -c "contrib/build_bin.sh --without-gui && contrib/build_dist.sh --without-gui" ``` ### Resources * https://docs.docker.com/build/building/multi-platform/#building-multi-platform-images * https://medium.com/@artur.klauser/building-multi-architecture-docker-images-with-buildx-27d80f7e2408 ## Limitations ### No GUI support So far I had no luck with building `hwi-qt` because I get the following error ``` Installing dependencies from lock file Package operations: 14 installs, 0 updates, 0 removals • Installing shiboken2 (5.15.2): Failed RuntimeError Unable to find installation candidates for shiboken2 (5.15.2) at ~/.pyenv/versions/3.9.7/lib/python3.9/site-packages/poetry/installation/chooser.py:72 in choose_for 68│ 69│ links.append(link) 70│ 71│ if not links: → 72│ raise RuntimeError( 73│ "Unable to find installation candidates for {}".format(package) 74│ ) 75│ 76│ # Get the best link ``` during execution of [`poetry install -E qt`](https://github.com/kiminuo/HWI/blob/a025af3ee3fdf0bac8dbdbc51b9e82ab946660b4/contrib/build_bin.sh#L12) That's why I use `build_bin.sh --without-gui` (see #655) ACKs for top commit: achow101: ACK 3d3c02d Tree-SHA512: 3df877ec3da07997c8281722ea0ec4687d850f1fec33cb5664e3f03cd8854cb02a90ce799da2123a88058b681fbb2bad31bdacbb485474d19fa88b60a4b73d83
- Loading branch information