From 22f62b365bca403923850ef9490c0e857b337783 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 29 Nov 2025 11:48:34 +0100 Subject: [PATCH] Merge the drivers repo into the base repo --- config/base.toml | 1 - recipes/core/base-initfs/recipe.toml | 101 ++++++++++++++++++------ recipes/core/base/recipe.toml | 55 +++++++++++++ recipes/core/drivers-initfs/recipe.toml | 79 ------------------ recipes/core/drivers/recipe.toml | 61 -------------- 5 files changed, 133 insertions(+), 164 deletions(-) delete mode 100644 recipes/core/drivers-initfs/recipe.toml delete mode 100644 recipes/core/drivers/recipe.toml diff --git a/config/base.toml b/config/base.toml index d4edb8c49..96b645166 100644 --- a/config/base.toml +++ b/config/base.toml @@ -12,7 +12,6 @@ prompt = false base = {} base-initfs = {} bootloader = {} -drivers = {} kernel = {} libgcc = {} libstdcxx = {} diff --git a/recipes/core/base-initfs/recipe.toml b/recipes/core/base-initfs/recipe.toml index fd3987fc6..0bb632940 100644 --- a/recipes/core/base-initfs/recipe.toml +++ b/recipes/core/base-initfs/recipe.toml @@ -4,17 +4,70 @@ same_as = "../base" [build] template = "custom" dependencies = [ - "drivers-initfs", "redoxfs", ] script = """ -INITFS_RM_BINS='redoxfs-ar redoxfs-mkfs' +BINS=( + init + logd + ramfs + randd + zerod + + acpid + fbbootlogd + fbcond + hwd + inputd + lived + nvmed + pcid + pcid-spawner + rtcd + vesad +) + +virt_bins() +{ + BINS+=(virtio-blkd virtio-gpud) +} + +x86_common_bins() +{ + BINS+=(ahcid ided ps2d vesad) + virt_bins +} + +aarch64_bins() +{ + case "${BOARD}" in + raspi3b*) + BINS+=(bcm2835-sdhcid) + ;; + *) + #qemu-virt + virt_bins + ;; + esac +} + +case "${TARGET}" in + i586-unknown-redox | i686-unknown-redox) + x86_common_bins + ;; + x86_64-unknown-redox) + x86_common_bins + ;; + aarch64-unknown-redox) + aarch64_bins + ;; + *) + ;; +esac 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" @@ -24,26 +77,26 @@ 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 +mkdir -pv "${COOKBOOK_BUILD}/initfs/etc/pcid" +cp -v "${COOKBOOK_SOURCE}/drivers/initfs.toml" "${COOKBOOK_BUILD}/initfs/etc/pcid/initfs.toml" + +export CARGO_PROFILE_RELEASE_OPT_LEVEL=s +export CARGO_PROFILE_RELEASE_PANIC=abort +"${COOKBOOK_CARGO}" build ${build_flags} \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + $(for bin in "${BINS[@]}"; do echo "-p" "${bin}"; done) + +mkdir -pv "${COOKBOOK_BUILD}/initfs/bin" "${COOKBOOK_BUILD}/initfs/lib/drivers" +for bin in "${BINS[@]}" 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}" + case "${bin}" in + init | logd | ramfs | randd | zerod | pcid | pcid-spawner | fbbootlogd | fbcond | inputd | vesad | lived | ps2d | acpid | bcm2835-sdhcid | rtcd | hwd) + cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_BUILD}/initfs/bin" + ;; + *) + cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_BUILD}/initfs/lib/drivers" + ;; + esac done # TODO: symlinks aren't supported by redox-initfs @@ -51,6 +104,8 @@ done cp "${COOKBOOK_BUILD}/initfs/bin/zerod" "${COOKBOOK_BUILD}/initfs/bin/nulld" +cp "${COOKBOOK_SYSROOT}/usr/bin/redoxfs" "${COOKBOOK_BUILD}/initfs/bin" + ARCH="$(echo "${GNU_TARGET}" | cut -d - -f1)" cargo \ -Zbuild-std=core,alloc,compiler_builtins \ diff --git a/recipes/core/base/recipe.toml b/recipes/core/base/recipe.toml index 169fc2a8b..a5dfe66ce 100644 --- a/recipes/core/base/recipe.toml +++ b/recipes/core/base/recipe.toml @@ -20,4 +20,59 @@ done cp -v \ "target/${TARGET}/${build_type}/smolnetd" \ "${COOKBOOK_STAGE}/usr/bin/smolnetd" + +# Drivers that are built on all architectures, and NOT in drivers-initfs +BINS=( + alxd + e1000d + ihdad + ixgbed + pcid + pcid-spawner + rtl8139d + rtl8168d + usbctl + usbhidd + usbhubd + usbscsid + virtio-netd + xhcid + inputd +) + +# Add additional drivers to the list to build, that are not in drivers-initfs +# depending on the target architecture +case "${TARGET}" in + i586-unknown-redox | i686-unknown-redox | x86_64-unknown-redox) + BINS+=(ac97d bgad sb16d vboxd) + ;; + *) + ;; +esac + +#Build each driver in the list +mkdir -pv "${COOKBOOK_STAGE}/usr/bin" "${COOKBOOK_STAGE}/usr/lib/drivers" +export CARGO_PROFILE_RELEASE_OPT_LEVEL=s +export CARGO_PROFILE_RELEASE_PANIC=abort +"${COOKBOOK_CARGO}" build ${build_flags} \ + --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ + $(for bin in "${BINS[@]}"; do echo "-p" "${bin}"; done) +for bin in "${BINS[@]}" +do + if [[ "${bin}" == "inputd" || "${bin}" == "pcid" || "${bin}" == "pcid-spawner" ]]; then + cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_STAGE}/usr/bin" + else + cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_STAGE}/usr/lib/drivers" + fi +done + +mkdir -pv "${COOKBOOK_STAGE}/etc/pcid" +cp -v "${COOKBOOK_SOURCE}/drivers/initfs.toml" "${COOKBOOK_STAGE}/etc/pcid/initfs.toml" + +mkdir -pv "${COOKBOOK_STAGE}/etc/pcid.d" +${FIND} "${COOKBOOK_SOURCE}/drivers" -maxdepth 3 -type f -name 'config.toml' | while read conf +do + driver="$(basename "$(dirname "$conf")")" + cp -v "$conf" "${COOKBOOK_STAGE}/etc/pcid.d/$driver.toml" +done """ diff --git a/recipes/core/drivers-initfs/recipe.toml b/recipes/core/drivers-initfs/recipe.toml deleted file mode 100644 index 9ef3f48f6..000000000 --- a/recipes/core/drivers-initfs/recipe.toml +++ /dev/null @@ -1,79 +0,0 @@ -[source] -same_as = "../drivers" - -[build] -template = "custom" -script = """ -BINS=( - acpid - fbbootlogd - fbcond - hwd - inputd - lived - nvmed - pcid - pcid-spawner - rtcd - vesad -) - -virt_bins() -{ - BINS+=(virtio-blkd virtio-gpud) -} - -x86_common_bins() -{ - BINS+=(ahcid ided ps2d vesad) - virt_bins -} - -aarch64_bins() -{ - case "${BOARD}" in - raspi3b*) - BINS+=(bcm2835-sdhcid) - ;; - *) - #qemu-virt - virt_bins - ;; - esac -} - -case "${TARGET}" in - i586-unknown-redox | i686-unknown-redox) - x86_common_bins - ;; - x86_64-unknown-redox) - x86_common_bins - ;; - aarch64-unknown-redox) - aarch64_bins - ;; - *) - ;; -esac - -mkdir -pv "${COOKBOOK_STAGE}/bin" "${COOKBOOK_STAGE}/lib/drivers" -export CARGO_PROFILE_RELEASE_OPT_LEVEL=s -export CARGO_PROFILE_RELEASE_PANIC=abort -"${COOKBOOK_CARGO}" build ${build_flags} \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - $(for bin in "${BINS[@]}"; do echo "-p" "${bin}"; done) -for bin in "${BINS[@]}" -do - case "${bin}" in - pcid | pcid-spawner | fbbootlogd | fbcond | inputd | vesad | lived | ps2d | acpid | bcm2835-sdhcid | rtcd | hwd) - cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_STAGE}/bin" - ;; - *) - cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_STAGE}/lib/drivers" - ;; - esac -done - -mkdir -pv "${COOKBOOK_STAGE}/etc/pcid" -cp -v "${COOKBOOK_SOURCE}/initfs.toml" "${COOKBOOK_STAGE}/etc/pcid/initfs.toml" -""" diff --git a/recipes/core/drivers/recipe.toml b/recipes/core/drivers/recipe.toml deleted file mode 100644 index 9a8360918..000000000 --- a/recipes/core/drivers/recipe.toml +++ /dev/null @@ -1,61 +0,0 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/drivers.git" - -[build] -template = "custom" -script = """ -# Drivers that are built on all architectures, and NOT in drivers-initfs -BINS=( - alxd - e1000d - ihdad - ixgbed - pcid - pcid-spawner - rtl8139d - rtl8168d - usbctl - usbhidd - usbhubd - usbscsid - virtio-netd - xhcid - inputd -) - -# Add additional drivers to the list to build, that are not in drivers-initfs -# depending on the target architecture -case "${TARGET}" in - i586-unknown-redox | i686-unknown-redox | x86_64-unknown-redox) - BINS+=(ac97d bgad sb16d vboxd) - ;; - *) - ;; -esac - -#Build each driver in the list -mkdir -pv "${COOKBOOK_STAGE}/usr/bin" "${COOKBOOK_STAGE}/usr/lib/drivers" -export CARGO_PROFILE_RELEASE_OPT_LEVEL=s -export CARGO_PROFILE_RELEASE_PANIC=abort -"${COOKBOOK_CARGO}" build ${build_flags} \ - --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ - $(for bin in "${BINS[@]}"; do echo "-p" "${bin}"; done) -for bin in "${BINS[@]}" -do - if [[ "${bin}" == "inputd" || "${bin}" == "pcid" || "${bin}" == "pcid-spawner" ]]; then - cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_STAGE}/usr/bin" - else - cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_STAGE}/usr/lib/drivers" - fi -done - -mkdir -pv "${COOKBOOK_STAGE}/etc/pcid" -cp -v "${COOKBOOK_SOURCE}/initfs.toml" "${COOKBOOK_STAGE}/etc/pcid/initfs.toml" - -mkdir -pv "${COOKBOOK_STAGE}/etc/pcid.d" -${FIND} "${COOKBOOK_SOURCE}" -maxdepth 3 -type f -name 'config.toml' | while read conf -do - driver="$(basename "$(dirname "$conf")")" - cp -v "$conf" "${COOKBOOK_STAGE}/etc/pcid.d/$driver.toml" -done -"""