krata: compile for aarch64 (aarch64 guests are not yet supported)

This commit is contained in:
Alex Zenla
2024-03-05 16:37:36 -08:00
parent f8e2f50c60
commit 0e27b8f228
10 changed files with 62 additions and 16 deletions

View File

@ -14,8 +14,9 @@ BUNDLE_DIR="${BUNDLE_DIR}/krata"
mkdir -p "${BUNDLE_DIR}"
for X in kratad kratanet kratactl
do
cargo build --release --target x86_64-unknown-linux-gnu --bin "${X}"
cp "${KRATA_DIR}/target/x86_64-unknown-linux-gnu/release/${X}" "${BUNDLE_DIR}/${X}"
./scripts/cargo.sh build --release --bin "${X}"
RUST_TARGET="$(./scripts/detect-rust-target.sh)"
cp "${KRATA_DIR}/target/${RUST_TARGET}/release/${X}" "${BUNDLE_DIR}/${X}"
done
./initrd/build.sh
if [ "${KRATA_BUNDLE_SKIP_KERNEL_BUILD}" != "1" ]

8
scripts/cargo.sh Executable file
View File

@ -0,0 +1,8 @@
#!/bin/sh
set -e
SCRIPTS_DIR="$(dirname "${0}")"
RUST_TARGET="$("${SCRIPTS_DIR}/detect-rust-target.sh")"
export CARGO_BUILD_TARGET="${RUST_TARGET}"
exec cargo "${@}"

30
scripts/detect-rust-target.sh Executable file
View File

@ -0,0 +1,30 @@
#!/bin/sh
set -e
if [ -z "${RUST_LIBC}" ]
then
RUST_LIBC="gnu"
fi
if [ -z "${RUST_TARGET}" ]
then
HOST_ARCH="$(uname -m)"
if [ "${HOST_ARCH}" = "x86_64" ]
then
RUST_TARGET="x86_64-unknown-linux-${RUST_LIBC}"
fi
if [ "${HOST_ARCH}" = "aarch64" ]
then
RUST_TARGET="aarch64-unknown-linux-${RUST_LIBC}"
fi
fi
if [ -z "${RUST_TARGET}" ]
then
echo "ERROR: Unable to determine RUST_TARGET, your architecture may not be supported by krata." > /dev/stderr
exit 1
fi
echo "${RUST_TARGET}"

View File

@ -2,5 +2,5 @@
set -e
cd "$(dirname "${0}")/.."
cargo clippy --target x86_64-unknown-linux-gnu --fix --allow-dirty --allow-staged
./scripts/cargo.sh clippy --fix --allow-dirty --allow-staged
cargo fmt --all

View File

@ -24,6 +24,7 @@ build_and_run() {
./initrd/build.sh -q
sudo cp "target/initrd/initrd" "/var/lib/krata/default/initrd"
fi
cargo build ${CARGO_BUILD_FLAGS} --target x86_64-unknown-linux-gnu --bin "${EXE_TARGET}"
exec sudo RUST_LOG="${RUST_LOG}" "target/x86_64-unknown-linux-gnu/debug/${EXE_TARGET}" "${@}"
RUST_TARGET="$(./scripts/detect-rust-target.sh)"
./scripts/cargo.sh build ${CARGO_BUILD_FLAGS} --bin "${EXE_TARGET}"
exec sudo RUST_LOG="${RUST_LOG}" "target/${RUST_TARGET}/debug/${EXE_TARGET}" "${@}"
}