redox/recipes/core/initfs/recipe.toml
2025-03-01 21:12:07 -07: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 -rf "${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"
"""