Skip to content

Latest commit

 

History

History
113 lines (92 loc) · 3.02 KB

run_cross_local.md

File metadata and controls

113 lines (92 loc) · 3.02 KB
draft
true

Instructions for running cross to test release builds locally

Prerequisites

Before start, check the comments in Cross.toml to turn on some commented configs for the target you want to build.

Targets

aarch64-unknown-linux-gnu

Build release

CROSS_BUILD_OPTS="--platform linux/amd64 --no-cache" CROSS_CONTAINER_OPTS="--platform linux/amd64" cross build --release --target aarch64-unknown-linux-gnu

Inspect container created by cross for debugging

docker run --platform linux/amd64 -it <image-id> /bin/bash

Testing the binary

  1. Download docker image for testing environment
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker pull arm64v8/ubuntu
  1. Run the container pwd is the directory contains the binary built in the previous step on your host machine
docker run -v $(pwd):/app -it arm64v8/ubuntu /bin/bash
  1. Install dependencies in the container and set up api testing environment
apt update
apt install libxcb1 libxcb1-dev libdbus-1-3 nvi
mkdir -p ~/.config/goose
# create goose config file
# set api key env variable

x86_64-unknown-linux-gnu

Build release

CROSS_BUILD_OPTS="--platform linux/amd64 --no-cache" CROSS_CONTAINER_OPTS="--platform linux/amd64" cross build --release --target x86_64-unknown-linux-gnu

inspect container created by cross for debugging

docker run --platform linux/amd64 -it <image-id> /bin/bash

Testing the binary

  1. Download docker image for testing environment
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker pull --platform linux/amd64 debian:latest
  1. Run the container pwd is the directory contains the binary built in the previous step on your host machine
docker run --platform linux/amd64 -it -v "$(pwd)":/app debian:latest /bin/bash
  1. Install dependencies in the container and set up api testing environment
apt update
apt install libxcb1 libxcb1-dev libdbus-1-3 nvi
mkdir -p ~/.config/goose
# create goose config file
# set api key env variable

aarch64-apple-darwin

build release

cross build --release --target aarch64-apple-darwin

There is no docker image available for aarch64-apple-darwin. It will fall back to your host machine for building the binary if your host machine matches.

testing the build

If the binary is signed with a certificate, run

xattr -d com.apple.quarantine goose

x86_64-apple-darwin

build release

cross build --release --target x86_64-apple-darwin

There is no docker image available for x86_64-apple-darwin. It will fall back to your host machine for building the binary if your host machine matches.

testing the build

  1. If the binary is signed with a certificate, run
xattr -d com.apple.quarantine goose
  1. If you are on Apple Silicon (ARM), you can use Rosetta to test the binary
softwareupdate --install-rosetta # make sure Rosetta 2 is installed
arch -x86_64 ./goose help