[source] same_as = "../base" [build] template = "custom" dependencies = [ "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" cp "${COOKBOOK_RECIPE}/init_drivers.rc" "${COOKBOOK_BUILD}/initfs/etc/init_drivers.rc" if [ -e ${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc.${BOARD} ]; then cp "${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc.${BOARD}" "${COOKBOOK_BUILD}/initfs/etc/init_drivers.rc" elif [ -e ${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc ]; then cp "${COOKBOOK_RECIPE}/${TARGET}/init_drivers.rc" "${COOKBOOK_BUILD}/initfs/etc/init_drivers.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 mkdir -pv "${COOKBOOK_BUILD}/initfs/bin" for package in init logd ramfs randd zerod; do "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/${package}/Cargo.toml" \ ${build_flags} cp -v \ "target/${TARGET}/${build_type}/${package}" \ "${COOKBOOK_BUILD}/initfs/bin/${package}" done # TODO: symlinks aren't supported by redox-initfs #ln -sv zerod "${COOKBOOK_BUILD}/initfs/bin/nulld" cp "${COOKBOOK_BUILD}/initfs/bin/zerod" "${COOKBOOK_BUILD}/initfs/bin/nulld" ARCH="$(echo "${GNU_TARGET}" | cut -d - -f1)" cargo \ -Zbuild-std=core,alloc,compiler_builtins \ -Zbuild-std-features=compiler-builtins-mem build \ --target "${TARGET}" \ --manifest-path "${COOKBOOK_SOURCE}/bootstrap/Cargo.toml" \ --release \ --target-dir "${COOKBOOK_BUILD}" "${GNU_TARGET}-ld" \ -o "${COOKBOOK_BUILD}/bootstrap" \ --gc-sections \ -T "${COOKBOOK_SOURCE}/bootstrap/src/${ARCH}.ld" \ -z max-page-size=4096 \ "${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" env -u CARGO cargo run --manifest-path "${COOKBOOK_SOURCE}/initfs/tools/Cargo.toml" --bin redox-initfs-ar -- "${COOKBOOK_BUILD}/initfs" "${COOKBOOK_BUILD}/bootstrap" -o "${COOKBOOK_BUILD}/initfs.img" mkdir -v "${COOKBOOK_STAGE}/boot" cp "${COOKBOOK_BUILD}/initfs.img" "${COOKBOOK_STAGE}/boot/initfs" """