krata: rewrite all repo infrastructure

This commit is contained in:
Alex Zenla
2024-03-07 09:04:05 +00:00
parent baefe0dceb
commit 670e140682
39 changed files with 419 additions and 181 deletions

46
scripts/dist/bundle.sh vendored Executable file
View File

@ -0,0 +1,46 @@
#!/bin/sh
set -e
# shellcheck source=common.sh
. "$(dirname "${0}")/common.sh"
if [ -z "${KRATA_KERNEL_BUILD_JOBS}" ]
then
KRATA_KERNEL_BUILD_JOBS="2"
fi
BUNDLE_TAR="${OUTPUT_DIR}/bundle.tgz"
rm -f "${BUNDLE_TAR}"
BUNDLE_DIR="$(mktemp -d /tmp/krata-bundle.XXXXXXXXXXXXX)"
BUNDLE_DIR="${BUNDLE_DIR}/krata"
mkdir -p "${BUNDLE_DIR}"
for X in kratad kratanet kratactl
do
./scripts/build/cargo.sh build --release --bin "${X}"
RUST_TARGET="$(./scripts/build/target.sh)"
cp "${KRATA_DIR}/target/${RUST_TARGET}/release/${X}" "${BUNDLE_DIR}/${X}"
done
./scripts/initrd/build.sh
if [ "${KRATA_BUNDLE_SKIP_KERNEL_BUILD}" != "1" ]
then
./scripts/kernel/build.sh "-j${KRATA_KERNEL_BUILD_JOBS}"
fi
cd "${BUNDLE_DIR}"
cp "${KRATA_DIR}/target/initrd/initrd" initrd
cp "${KRATA_DIR}/target/kernel/kernel" kernel
cp "${KRATA_DIR}/resources/systemd/kratad.service" kratad.service
cp "${KRATA_DIR}/resources/systemd/kratanet.service" kratanet.service
cp "${KRATA_DIR}/resources/bundle/install.sh" install.sh
cp "${KRATA_DIR}/resources/bundle/uninstall.sh" uninstall.sh
for X in install.sh uninstall.sh kratactl kratad kratanet
do
chmod +x "${X}"
done
cd ..
tar czf "${BUNDLE_TAR}" .
cd "${KRATA_DIR}"
rm -rf "$(dirname "${BUNDLE_DIR}")"

8
scripts/dist/common.sh vendored Normal file
View File

@ -0,0 +1,8 @@
#!/bin/sh
set -e
REAL_SCRIPT="$(realpath "${0}")"
cd "$(dirname "${REAL_SCRIPT}")/../.."
KRATA_DIR="${PWD}"
OUTPUT_DIR="${KRATA_DIR}/target/dist"
mkdir -p "${OUTPUT_DIR}"

30
scripts/dist/deb.sh vendored Executable file
View File

@ -0,0 +1,30 @@
#!/bin/sh
set -e
# shellcheck source=common.sh
. "$(dirname "${0}")/common.sh"
"${KRATA_DIR}/scripts/dist/systar.sh"
KRATA_VERSION="$("${KRATA_DIR}/scripts/dist/version.sh")"
TARGET_ARCH="$(KRATA_ARCH_ALT_NAME=1 "${KRATA_DIR}/scripts/build/arch.sh")"
cd "${OUTPUT_DIR}"
rm -f "krata_${KRATA_VERSION}_${TARGET_ARCH}.deb"
fpm -s tar -t deb \
--name krata \
--license agpl3 \
--version "${KRATA_VERSION}" \
--architecture "${TARGET_ARCH}" \
--depends "xen-system-${TARGET_ARCH}" \
--description "Krata Hypervisor" \
--url "https://krata.dev" \
--maintainer "Edera Team <contact@edera.dev>" \
-x "usr/lib/**" \
--deb-systemd "${KRATA_DIR}/resources/systemd/kratad.service" \
--deb-systemd "${KRATA_DIR}/resources/systemd/kratanet.service" \
--deb-systemd-enable \
--deb-systemd-auto-start \
"${OUTPUT_DIR}/system.tgz"

31
scripts/dist/systar.sh vendored Executable file
View File

@ -0,0 +1,31 @@
#!/bin/sh
set -e
# shellcheck source=common.sh
. "$(dirname "${0}")/common.sh"
"${KRATA_DIR}/scripts/dist/bundle.sh"
SYSTAR="${OUTPUT_DIR}/system.tgz"
rm -f "${SYSTAR}"
SYSTAR_DIR="$(mktemp -d /tmp/krata-systar.XXXXXXXXXXXXX)"
cd "${SYSTAR_DIR}"
tar xf "${OUTPUT_DIR}/bundle.tgz"
mkdir sys
cd sys
mkdir -p usr/bin usr/libexec
mv ../krata/kratactl usr/bin
mv ../krata/kratanet ../krata/kratad usr/libexec/
mkdir -p usr/lib/systemd/system
mv ../krata/kratad.service ../krata/kratanet.service usr/lib/systemd/system/
mkdir -p usr/share/krata/guest
mv ../krata/kernel ../krata/initrd usr/share/krata/guest
tar czf "${SYSTAR}" --owner 0 --group 0 .
cd "${KRATA_DIR}"
rm -rf "${SYSTAR_DIR}"

15
scripts/dist/version.sh vendored Executable file
View File

@ -0,0 +1,15 @@
#!/bin/sh
set -e
# shellcheck source=common.sh
. "$(dirname "${0}")/common.sh"
cd "${KRATA_DIR}"
KRATA_VERSION="$(grep -A1 -F '[workspace.package]' Cargo.toml | grep 'version' | awk '{print $3}' | sed 's/"//g')"
if [ -z "${KRATA_VERSION}" ]
then
echo "ERROR: failed to determine krata version" > /dev/stderr
exit 1
fi
echo "${KRATA_VERSION}"