mirror of
https://gitlab.redox-os.org/redox-os/redox.git
synced 2026-06-17 23:44:17 +08:00
Merge initfs into the base repo
This commit is contained in:
parent
05908c7e15
commit
d419ea76a0
@ -3,37 +3,71 @@ same_as = "../base"
|
||||
|
||||
[build]
|
||||
template = "custom"
|
||||
dependencies = [
|
||||
"drivers-initfs",
|
||||
"redoxfs",
|
||||
]
|
||||
script = """
|
||||
mkdir -pv "${COOKBOOK_STAGE}/usr/bin"
|
||||
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_STAGE}/usr/bin/${package}"
|
||||
"${COOKBOOK_BUILD}/initfs/bin/${package}"
|
||||
done
|
||||
|
||||
# TODO: symlinks aren't supported by redox-initfs
|
||||
#ln -sv zerod "${COOKBOOK_STAGE}/usr/bin/nulld"
|
||||
#ln -sv zerod "${COOKBOOK_BUILD}/initfs/bin/nulld"
|
||||
|
||||
cp "${COOKBOOK_STAGE}/usr/bin/zerod" "${COOKBOOK_STAGE}/usr/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 rustc \
|
||||
-Zbuild-std-features=compiler-builtins-mem build \
|
||||
--target "${TARGET}" \
|
||||
--manifest-path "${COOKBOOK_SOURCE}/bootstrap/Cargo.toml" \
|
||||
--release \
|
||||
--target-dir "${COOKBOOK_BUILD}" \
|
||||
-- \
|
||||
--emit link="${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a"
|
||||
mkdir -v "${COOKBOOK_STAGE}/boot"
|
||||
--target-dir "${COOKBOOK_BUILD}"
|
||||
"${GNU_TARGET}-ld" \
|
||||
-o "${COOKBOOK_STAGE}/boot/bootstrap" \
|
||||
-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"
|
||||
"""
|
||||
|
||||
@ -1,44 +0,0 @@
|
||||
[source]
|
||||
git = "https://gitlab.redox-os.org/redox-os/redox-initfs.git"
|
||||
|
||||
[build]
|
||||
template = "custom"
|
||||
dependencies = [
|
||||
"base-initfs",
|
||||
"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
|
||||
|
||||
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"
|
||||
"""
|
||||
Loading…
Reference in New Issue
Block a user