Merge branch 'host-deps' into 'master'

Make deps for hosts recipes work

See merge request redox-os/redox!1723
This commit is contained in:
Jeremy Soller 2025-11-30 07:08:26 -07:00
commit 04fa310351
5 changed files with 51 additions and 8 deletions

View File

@ -7,11 +7,12 @@ template = "custom"
script = """
DYNAMIC_INIT
ARCH="${TARGET%%-*}"
OS=$(echo "${TARGET}" | cut -d - -f3)
COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/Configure"
COOKBOOK_CONFIGURE_FLAGS=(
threads
no-dgram
"redox-${ARCH}"
"${OS}-${ARCH}"
--prefix="/"
)

View File

@ -11,17 +11,24 @@ dependencies = [
script = """
DYNAMIC_INIT
ARCH="${TARGET%%-*}"
OS=$(echo "${TARGET}" | cut -d - -f3)
export ARFLAGS=cr
COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/Configure"
COOKBOOK_CONFIGURE_FLAGS=(
no-tests
no-unit-test
shared
zlib
enable-zstd
"redox-${ARCH}"
"${OS}-${ARCH}"
--prefix="/usr"
)
if [ "${COOKBOOK_DYNAMIC}" = "1" ]; then
COOKBOOK_CONFIGURE_FLAGS+=(shared)
else
COOKBOOK_CONFIGURE_FLAGS+=(no-shared)
fi
"${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}"
"${COOKBOOK_MAKE}" -j1 # bug in make/ar
"${COOKBOOK_MAKE}" install_sw install_ssldirs DESTDIR="${COOKBOOK_STAGE}"

View File

@ -229,12 +229,16 @@ pub fn build(
logger,
&sysroot_dir,
target_dir.join("sysroot.tmp"),
&dep_pkgars,
if name.is_host() {
&dep_host_pkgars
} else {
&dep_pkgars
},
source_modified,
deps_modified,
)?;
}
if recipe.build.kind != BuildKind::Remote && dep_host_pkgars.len() > 0 {
if recipe.build.kind != BuildKind::Remote && !name.is_host() && dep_host_pkgars.len() > 0 {
build_deps_dir(
logger,
&toolchain_dir,
@ -347,6 +351,8 @@ pub fn build(
command.env("COOKBOOK_SYSROOT", &cookbook_sysroot);
if let Some(cookbook_toolchain) = &cookbook_toolchain {
command.env("COOKBOOK_TOOLCHAIN", cookbook_toolchain);
} else if name.is_host() {
command.env("COOKBOOK_TOOLCHAIN", &cookbook_sysroot);
}
command.env("COOKBOOK_MAKE_JOBS", cli_jobs.to_string());
if cli_verbose {

View File

@ -14,6 +14,8 @@ function DYNAMIC_INIT {
;;
"x86_64-unknown-linux-gnu")
;;
"aarch64-unknown-linux-gnu")
;;
*)
[ -z "${COOKBOOK_VERBOSE}" ] || echo "WARN: ${TARGET} does not support dynamic linking." >&2
return
@ -202,6 +204,11 @@ COOKBOOK_CMAKE_FLAGS=(
-DENABLE_STATIC=True
)
function cookbook_cmake {
if [ "$(echo "${TARGET}" | cut -d - -f3)" = "linux" ]; then
SYSTEM_NAME="Linux"
else
SYSTEM_NAME="UnixPaths"
fi
cat > cross_file.cmake <<EOF
set(CMAKE_AR ${GNU_TARGET}-ar)
set(CMAKE_CXX_COMPILER ${GNU_TARGET}-g++)
@ -214,7 +221,7 @@ set(CMAKE_PLATFORM_USES_PATH_WHEN_NO_SONAME 1)
set(CMAKE_PREFIX_PATH, ${COOKBOOK_SYSROOT})
set(CMAKE_RANLIB ${GNU_TARGET}-ranlib)
set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,")
set(CMAKE_SYSTEM_NAME UnixPaths)
set(CMAKE_SYSTEM_NAME ${SYSTEM_NAME})
set(CMAKE_SYSTEM_PROCESSOR $(echo "${TARGET}" | cut -d - -f1))
EOF
@ -262,7 +269,7 @@ function cookbook_meson {
echo "glib-compile-schemas = 'glib-compile-schemas'" >> cross_file.txt
echo "[host_machine]" >> cross_file.txt
echo "system = 'redox'" >> cross_file.txt
echo "system = '$(echo "${TARGET}" | cut -d - -f3)'" >> cross_file.txt
echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt
echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt
echo "endian = 'little'" >> cross_file.txt

View File

@ -208,8 +208,30 @@ impl Recipe {
}
impl CookRecipe {
pub fn new(name: PackageName, dir: PathBuf, recipe: Recipe) -> Result<Self, PackageError> {
pub fn new(name: PackageName, dir: PathBuf, mut recipe: Recipe) -> Result<Self, PackageError> {
let target = package_target(&name);
if name.is_host() {
let thisname = name.name();
let fn_map = |p: PackageName| {
if p.is_host() {
if p.name() == thisname { None } else { Some(p) }
} else {
Some(PackageName::new(format!("host:{}", p.as_str())).unwrap())
}
};
recipe.build.dependencies = recipe
.build
.dependencies
.into_iter()
.filter_map(fn_map)
.collect();
recipe.build.dev_dependencies = recipe
.build
.dev_dependencies
.into_iter()
.filter_map(fn_map)
.collect();
}
Ok(Self {
name,
dir,