mirror of
https://gitlab.redox-os.org/redox-os/redox.git
synced 2026-06-28 23:58:42 +08:00
Merge branch 'merge_drivers_repo' into 'master'
Merge the drivers repo into the base repo See merge request redox-os/redox!1721
This commit is contained in:
commit
a3b1c62fef
@ -12,7 +12,6 @@ prompt = false
|
||||
base = {}
|
||||
base-initfs = {}
|
||||
bootloader = {}
|
||||
drivers = {}
|
||||
kernel = {}
|
||||
libgcc = {}
|
||||
libstdcxx = {}
|
||||
|
||||
@ -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 \
|
||||
|
||||
@ -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
|
||||
"""
|
||||
|
||||
@ -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"
|
||||
"""
|
||||
@ -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
|
||||
"""
|
||||
Loading…
Reference in New Issue
Block a user