redox/recipes/core/initfs/recipe.toml
bjorn3 a7bd20fe95 Fix rebuilding the initfs recipe using r.initfs as opposed to cr.initfs
Without this when rebuilding it will try to remove symlinks created by
the cookbook that have been replaced with actual directories in the
previous build.
2025-03-01 22:08:11 +01:00

45 lines
1.5 KiB
TOML

[source]
git = "https://gitlab.redox-os.org/redox-os/redox-initfs.git"
[build]
template = "custom"
dependencies = [
"base-initfs",
"bootstrap",
"drivers-initfs",
"redoxfs",
]
script = """
INITFS_RM_BINS='redoxfs-ar redoxfs-mkfs'
rm -r "${COOKBOOK_BUILD}/initfs"
mkdir -p "${COOKBOOK_BUILD}/initfs/etc"
cp -r "${COOKBOOK_SYSROOT}/"* "${COOKBOOK_BUILD}/initfs"
# TODO: Move init.rc to another recipe, perhaps initfs-misc? Then it can be installed as a regular dependency.
cp "${COOKBOOK_RECIPE}/init.rc" "${COOKBOOK_BUILD}/initfs/etc/init.rc"
if [ -e ${COOKBOOK_RECIPE}/${TARGET}/init.rc.${BOARD} ]; then
cp "${COOKBOOK_RECIPE}/${TARGET}/init.rc.${BOARD}" "${COOKBOOK_BUILD}/initfs/etc/init.rc"
elif [ -e ${COOKBOOK_RECIPE}/${TARGET}/init.rc ]; then
cp "${COOKBOOK_RECIPE}/${TARGET}/init.rc" "${COOKBOOK_BUILD}/initfs/etc/init.rc"
fi
# Move /usr folders to / and remove links
for folder in bin lib include share
do
rm "${COOKBOOK_BUILD}/initfs/${folder}"
mv "${COOKBOOK_BUILD}/initfs/usr/${folder}" "${COOKBOOK_BUILD}/initfs/${folder}"
done
rmdir "${COOKBOOK_BUILD}/initfs/usr"
for bin in ${INITFS_RM_BINS}; do
rm -f "${COOKBOOK_BUILD}/initfs/bin/$bin"
done
env -u CARGO cargo run --manifest-path "${COOKBOOK_SOURCE}/tools/Cargo.toml" --bin redox-initfs-ar -- "${COOKBOOK_BUILD}/initfs" "${COOKBOOK_SYSROOT}/boot/bootstrap" -o "${COOKBOOK_BUILD}/initfs.img"
mkdir -v "${COOKBOOK_STAGE}/boot"
cp "${COOKBOOK_BUILD}/initfs.img" "${COOKBOOK_STAGE}/boot/initfs"
"""