From 9199961617fd1813c29134d0e582fd8cc8872319 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 7 Dec 2025 14:00:28 +0700 Subject: [PATCH 01/26] Small fixes to nodejs --- recipes/wip/dev/lang/nodejs-21/recipe.toml | 8 +++-- recipes/wip/dev/lang/nodejs-21/redox.patch | 36 +++++++++++++++++++++- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/recipes/wip/dev/lang/nodejs-21/recipe.toml b/recipes/wip/dev/lang/nodejs-21/recipe.toml index d34be354a..e7cbeaff6 100644 --- a/recipes/wip/dev/lang/nodejs-21/recipe.toml +++ b/recipes/wip/dev/lang/nodejs-21/recipe.toml @@ -34,10 +34,10 @@ dev-dependencies = [ script = """ DYNAMIC_INIT -export PYTHONDONTWRITEBYTECODE=1 +export PYTHONDONTWRITEBYTECODE=1 COOKBOOK_NOSTRIP=true export CC_host="$CC_WRAPPER gcc" CXX_host="$CC_WRAPPER g++" -rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +rsync -av "${COOKBOOK_SOURCE}/" ./ case "${TARGET}" in x86_64-unknown-linux-gnu) export NODE_CPU=x64 NODE_OS=linux;; @@ -58,6 +58,10 @@ COOKBOOK_CONFIGURE_FLAGS=( --shared-nghttp3 --shared-openssl --shared-zlib + --disable-shared-readonly-heap + --without-node-snapshot + --without-node-code-cache + --v8-lite-mode # TODO: Find a way to separate host and target flags instead? # --shared-zlib-includes="${COOKBOOK_TOOLCHAIN}/include" --shared-openssl-includes="${COOKBOOK_SYSROOT}/include" diff --git a/recipes/wip/dev/lang/nodejs-21/redox.patch b/recipes/wip/dev/lang/nodejs-21/redox.patch index 2c1217661..82f99e0ae 100644 --- a/recipes/wip/dev/lang/nodejs-21/redox.patch +++ b/recipes/wip/dev/lang/nodejs-21/redox.patch @@ -179,7 +179,7 @@ diff -ruwN source/deps/v8/src/base/platform/platform-posix.cc source-new/deps/v8 #endif +#if defined(__redox__) -+ #define PTHREAD_STACK_MIN 4096 ++ #define PTHREAD_STACK_MIN 1024 * 1024 +#endif + #if defined(ANDROID) && !defined(V8_ANDROID_LOG_STDOUT) @@ -392,6 +392,40 @@ diff -ruwN source/src/node_credentials.cc source-new/src/node_credentials.cc return value.As()->Value(); } else { Utf8Value name(isolate, value); +diff -ruwN source/src/node_dotenv.cc source-new/src/node_dotenv.cc +--- source/src/node_dotenv.cc 2024-04-10 19:46:14.000000000 +0700 ++++ source-new/src/node_dotenv.cc 2025-11-30 23:39:21.486092041 +0700 +@@ -16,10 +16,14 @@ + * The inspiration for this implementation comes from the original dotenv code, + * available at https://github.com/motdotla/dotenv + */ ++ ++// redox crash on compiling this regex ++#if !defined(__redox__) + const std::regex LINE( + "\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^']" + ")*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\r\n]+)?\\s*(?" + ":#.*)?"); // NOLINT(whitespace/line_length) ++#endif + + std::vector Dotenv::GetPathFromArgs( + const std::vector& args) { +@@ -102,6 +106,7 @@ + } + + void Dotenv::ParseContent(const std::string_view content) { ++#if !defined(__redox__) + std::string lines = std::string(content); + lines = std::regex_replace(lines, std::regex("\r\n?"), "\n"); + +@@ -131,6 +136,7 @@ + store_.insert_or_assign(std::string(key), value); + lines = match.suffix(); + } ++#endif + } + + Dotenv::ParseResult Dotenv::ParsePath(const std::string_view path) { diff -ruwN source/src/node_report.cc source-new/src/node_report.cc --- source/src/node_report.cc 2024-04-10 19:46:14.000000000 +0700 +++ source-new/src/node_report.cc 2025-10-10 13:46:05.190512964 +0700 From 5acc39d44d555966bf5a03f5df6fea68950e0c10 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 7 Dec 2025 18:38:34 +0700 Subject: [PATCH 02/26] Inherit recipes config from parent packages --- src/bin/repo.rs | 67 +++++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/src/bin/repo.rs b/src/bin/repo.rs index 7d2833988..c4a10a28b 100644 --- a/src/bin/repo.rs +++ b/src/bin/repo.rs @@ -498,46 +498,47 @@ fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec {} - // keep local changes - PackageConfig::Build(rule) if rule == "local" => recipe.recipe.source = None, - // download from remote build - PackageConfig::Build(rule) if rule == "binary" => { - recipe.recipe.source = None; - recipe.recipe.build.set_as_remote(); - } - // don't build this recipe (unlikely to go here unless some deps need it) - // TODO: Note that we're assuming this being ignored from e.g. metapackages - // TODO: Will totally broke build if this recipe needed as some other build dependencies - PackageConfig::Build(rule) if rule == "ignore" => { - recipe.recipe.source = None; - recipe.recipe.build.set_as_none(); - } - PackageConfig::Build(rule) => { - bail!( - // Fail fast because we could risk losing local changes if "local" was typo'ed - "Invalid pkg config {} = \"{}\"\nExpecting either 'source', 'local', 'binary' or 'ignore'", - recipe.name.as_str(), - rule - ); - } + let repo_binary = conf.general.repo_binary == Some(true); + let mut last_rule = if repo_binary { "binary" } else { "source" }; + // Use rev() so recipes that don't listed in config is inherited from parent + for recipe in recipes.iter_mut().rev() { + if let Some(conf) = conf.packages.get(recipe.name.as_str()) { + last_rule = match conf { + PackageConfig::Build(rule) => &rule, _ => { - if conf.general.repo_binary == Some(true) { - // same reason as Build("binary") - recipe.recipe.source = None; - recipe.recipe.build.set_as_remote(); + if repo_binary { + "binary" + } else { + "source" } } } - } else { - if conf.general.repo_binary == Some(true) { + }; + match last_rule { + // build from source as usual + "source" => {} + // keep local changes + "local" => recipe.recipe.source = None, + // download from remote build + "binary" => { recipe.recipe.source = None; recipe.recipe.build.set_as_remote(); } + // don't build this recipe (unlikely to go here unless some deps need it) + // TODO: Note that we're assuming this being ignored from e.g. metapackages + // TODO: Will totally broke build if this recipe needed as some other build dependencies + "ignore" => { + recipe.recipe.source = None; + recipe.recipe.build.set_as_none(); + } + rule => { + bail!( + // Fail fast because we could risk losing local changes if "local" was typo'ed + "Invalid pkg config {} = \"{}\"\nExpecting either 'source', 'local', 'binary' or 'ignore'", + recipe.name.as_str(), + rule + ); + } } } } From 7190938186d30cf2d4c261a71e38d4a144d67527 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 7 Dec 2025 20:41:45 +0700 Subject: [PATCH 03/26] Make dev deps recursive --- src/cook/cook_build.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/cook/cook_build.rs b/src/cook/cook_build.rs index 385dc3ece..74513d035 100644 --- a/src/cook/cook_build.rs +++ b/src/cook/cook_build.rs @@ -188,12 +188,13 @@ pub fn build( let mut dep_pkgars = BTreeSet::new(); let mut dep_host_pkgars = BTreeSet::new(); - let mut build_deps = - CookRecipe::get_build_deps_recursive(&recipe.build.dependencies, false, false) - .map_err(|e| format!("{:?}", e))?; - for dep in &recipe.build.dev_dependencies { - build_deps.push(CookRecipe::from_name(dep.clone()).map_err(|e| format!("{:?}", e))?); - } + let build_deps = [ + &recipe.build.dependencies[..], + &recipe.build.dev_dependencies[..], + ] + .concat(); + let build_deps = CookRecipe::get_build_deps_recursive(&build_deps, false, false) + .map_err(|e| format!("{:?}", e))?; for dependency in build_deps.iter() { let (_, pkgar, _) = dependency.stage_paths(); if dependency.name.is_host() { From 6f30dc5f3ec9f2c2136853123cebafb3328a4b34 Mon Sep 17 00:00:00 2001 From: Ojus Chugh Date: Sun, 7 Dec 2025 19:14:05 +0530 Subject: [PATCH 04/26] Added mount script for RedoxFS partitions in dual-boot this Creates mount-redoxfs.sh to handle mounting RedoxFS partitions with FUSE3 support. Auto-detects redoxfs binary and works with both block devices and image files. Updates dual-boot.sh to reference the script. Fixes #1579 Signed-off-by: Ojus Chugh --- scripts/dual-boot.sh | 3 + scripts/mount-redoxfs.sh | 119 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 122 insertions(+) create mode 100755 scripts/mount-redoxfs.sh diff --git a/scripts/dual-boot.sh b/scripts/dual-boot.sh index 25d2995c2..b067ad5f4 100755 --- a/scripts/dual-boot.sh +++ b/scripts/dual-boot.sh @@ -55,3 +55,6 @@ set +x sync echo "Finished installing Redox OS dual boot" +echo "" +echo "To mount the RedoxFS partition, run:" +echo " ./scripts/mount-redoxfs.sh ${DISK}" diff --git a/scripts/mount-redoxfs.sh b/scripts/mount-redoxfs.sh new file mode 100755 index 000000000..495d81f55 --- /dev/null +++ b/scripts/mount-redoxfs.sh @@ -0,0 +1,119 @@ +#!/usr/bin/env bash + +set -e + +MOUNT_POINT="/mnt/redoxfs" +DISK_DEVICE="" + +show_help() { + echo "Usage: $0 [options] " + echo "" + echo "Mount or unmount a RedoxFS partition" + echo "" + echo "Options:" + echo " -u, --unmount Unmount the RedoxFS partition" + echo " -m, --mount-point PATH Custom mount point (default: /mnt/redoxfs)" + echo " -h, --help Show this help" + echo "" + echo "Examples:" + echo " $0 /dev/sda3 Mount /dev/sda3" + echo " $0 -u Unmount from default location" + echo " $0 -m /mnt/my-redox /dev/sda3 Mount to custom location" +} + +unmount_fs() { + if mountpoint -q "$MOUNT_POINT" 2>/dev/null; then + echo "Unmounting RedoxFS from $MOUNT_POINT..." + fusermount -u "$MOUNT_POINT" || fusermount3 -u "$MOUNT_POINT" + echo "Successfully unmounted" + else + echo "Nothing mounted at $MOUNT_POINT" + fi + exit 0 +} + +check_dependencies() { + # Try to find redoxfs in multiple locations + REDOXFS_BIN="" + if [ -x "build/fstools/bin/redoxfs" ]; then + REDOXFS_BIN="build/fstools/bin/redoxfs" + elif [ -x "$(dirname "$0")/../build/fstools/bin/redoxfs" ]; then + REDOXFS_BIN="$(dirname "$0")/../build/fstools/bin/redoxfs" + elif command -v redoxfs &> /dev/null; then + REDOXFS_BIN="redoxfs" + fi + + if [ -z "$REDOXFS_BIN" ]; then + echo "Error: redoxfs command not found" + echo "Please build it first with: make fstools" + exit 1 + fi + + if ! ldconfig -p 2>/dev/null | grep -q "libfuse3"; then + echo "Error: libfuse 3.x is not installed" + echo "Please install it:" + if command -v apt-get &> /dev/null; then + echo " sudo apt-get install fuse3 libfuse3-dev" + elif command -v dnf &> /dev/null; then + echo " sudo dnf install fuse3-devel" + elif command -v pacman &> /dev/null; then + echo " sudo pacman -S fuse3" + else + echo " (check your package manager for fuse3)" + fi + exit 1 + fi +} + +UNMOUNT=false + +while [[ $# -gt 0 ]]; do + case $1 in + -u|--unmount) + UNMOUNT=true + shift + ;; + -m|--mount-point) + MOUNT_POINT="$2" + shift 2 + ;; + -h|--help) + show_help + exit 0 + ;; + *) + DISK_DEVICE="$1" + shift + ;; + esac +done + +if [ "$UNMOUNT" = true ]; then + unmount_fs +fi + +if [ -z "$DISK_DEVICE" ]; then + DISK_DEVICE="/dev/disk/by-partlabel/REDOX_INSTALL" + if [ ! -b "$DISK_DEVICE" ]; then + echo "Error: No device specified and default partition not found" + echo "" + show_help + exit 1 + fi +fi + +if [ ! -b "$DISK_DEVICE" ] && [ ! -f "$DISK_DEVICE" ]; then + echo "Error: $DISK_DEVICE is not a block device or file" + exit 1 +fi + +check_dependencies + +mkdir -p "$MOUNT_POINT" + +echo "Mounting $DISK_DEVICE to $MOUNT_POINT..." +"$REDOXFS_BIN" "$DISK_DEVICE" "$MOUNT_POINT" + +echo "RedoxFS successfully mounted at $MOUNT_POINT" +echo "To unmount, run: $0 -u" + From 941784af9ded891e610f048efb1c4477277e30a4 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 7 Dec 2025 20:54:23 +0700 Subject: [PATCH 05/26] Fix and improve LLVM and Rust compilation --- bin/x86_64-unknown-redox-llvm-config | 206 ++++++--------------------- podman/redox-base-containerfile | 5 +- recipes/dev/llvm21/recipe.toml | 63 ++++---- recipes/dev/rust/config.toml | 11 +- recipes/dev/rust/recipe.toml | 19 ++- 5 files changed, 97 insertions(+), 207 deletions(-) diff --git a/bin/x86_64-unknown-redox-llvm-config b/bin/x86_64-unknown-redox-llvm-config index 387d7e30c..a0f050e77 100755 --- a/bin/x86_64-unknown-redox-llvm-config +++ b/bin/x86_64-unknown-redox-llvm-config @@ -1,173 +1,51 @@ #!/usr/bin/env python3 -# The values here are copied from the output of llvm-config running under Redox. -# This is a hack, and should be replaced if possible. - -# generated with this ion script: -# for component in @(llvm-config --components) -# echo -e \"$component\": \"$(llvm-config --libs $component)\", -# end -components = { - 'aggressiveinstcombine': '-lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'all': '-lLLVMWindowsManifest -lLLVMXRay -lLLVMLibDriver -lLLVMDlltoolDriver -lLLVMTextAPIBinaryReader -lLLVMCoverage -lLLVMLineEditor -lLLVMX86TargetMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMOrcDebugging -lLLVMOrcJIT -lLLVMWindowsDriver -lLLVMMCJIT -lLLVMJITLink -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMDWP -lLLVMDebugInfoLogicalView -lLLVMDebugInfoGSYM -lLLVMOption -lLLVMObjectYAML -lLLVMObjCopy -lLLVMMCA -lLLVMMCDisassembler -lLLVMLTO -lLLVMPasses -lLLVMHipStdPar -lLLVMCFGuard -lLLVMCoroutines -lLLVMipo -lLLVMVectorize -lLLVMLinker -lLLVMInstrumentation -lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMFrontendOpenACC -lLLVMFrontendHLSL -lLLVMFrontendDriver -lLLVMExtensions -lLLVMDWARFLinkerParallel -lLLVMDWARFLinkerClassic -lLLVMDWARFLinker -lLLVMGlobalISel -lLLVMMIRParser -lLLVMAsmPrinter -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMObjCARCOpts -lLLVMCodeGenTypes -lLLVMIRPrinter -lLLVMInterfaceStub -lLLVMFileCheck -lLLVMFuzzMutate -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMFuzzerCLI -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMTableGen -lLLVMSupport -lLLVMDemangle', - 'all-targets': '-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMInstrumentation -lLLVMIRPrinter -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMCFGuard -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'analysis': '-lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'asmparser': '-lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'asmprinter': '-lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'binaryformat': '-lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'bitreader': '-lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle', - 'bitstreamreader': '-lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle', - 'bitwriter': '-lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'cfguard': '-lLLVMCFGuard -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'codegen': '-lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'codegentypes': '-lLLVMCodeGenTypes -lLLVMSupport -lLLVMDemangle', - 'core': '-lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'coroutines': '-lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'coverage': '-lLLVMCoverage -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'debuginfobtf': '-lLLVMDebugInfoBTF -lLLVMSupport -lLLVMDemangle', - 'debuginfocodeview': '-lLLVMDebugInfoCodeView -lLLVMSupport -lLLVMDemangle', - 'debuginfodwarf': '-lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'debuginfogsym': '-lLLVMDebugInfoGSYM -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'debuginfologicalview': '-lLLVMDebugInfoLogicalView -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'debuginfomsf': '-lLLVMDebugInfoMSF -lLLVMSupport -lLLVMDemangle', - 'debuginfopdb': '-lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'demangle': '-lLLVMDemangle', - 'dlltooldriver': '-lLLVMDlltoolDriver -lLLVMOption -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle', - 'dwarflinker': '-lLLVMDWARFLinker -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'dwarflinkerclassic': '-lLLVMDWARFLinkerClassic -lLLVMDWARFLinker -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'dwarflinkerparallel': '-lLLVMDWARFLinkerParallel -lLLVMDWARFLinker -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'dwp': '-lLLVMDWP -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'engine': '-lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'executionengine': '-lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'extensions': '-lLLVMExtensions -lLLVMSupport -lLLVMDemangle', - 'filecheck': '-lLLVMFileCheck', - 'frontenddriver': '-lLLVMFrontendDriver -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'frontendhlsl': '-lLLVMFrontendHLSL -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'frontendoffloading': '-lLLVMFrontendOffloading -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'frontendopenacc': '-lLLVMFrontendOpenACC', - 'frontendopenmp': '-lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'fuzzercli': '-lLLVMFuzzerCLI -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'fuzzmutate': '-lLLVMFuzzMutate -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'globalisel': '-lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'hipstdpar': '-lLLVMHipStdPar -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'instcombine': '-lLLVMInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'instrumentation': '-lLLVMInstrumentation -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'interfacestub': '-lLLVMInterfaceStub -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'interpreter': '-lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'ipo': '-lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMScalarOpts -lLLVMInstCombine -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'irprinter': '-lLLVMIRPrinter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'irreader': '-lLLVMIRReader -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'jitlink': '-lLLVMJITLink -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMOption -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'libdriver': '-lLLVMLibDriver -lLLVMOption -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'lineeditor': '-lLLVMLineEditor -lLLVMSupport -lLLVMDemangle', - 'linker': '-lLLVMLinker -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'lto': '-lLLVMLTO -lLLVMPasses -lLLVMIRPrinter -lLLVMHipStdPar -lLLVMCoroutines -lLLVMCFGuard -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMExtensions -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMObjCARCOpts -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'mc': '-lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'mca': '-lLLVMMCA -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'mcdisassembler': '-lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'mcjit': '-lLLVMMCJIT -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'mcparser': '-lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'mirparser': '-lLLVMMIRParser -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMAsmParser -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'native': '-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMInstrumentation -lLLVMIRPrinter -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMCFGuard -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'nativecodegen': '-lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMInstrumentation -lLLVMIRPrinter -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMCFGuard -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'objcarcopts': '-lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'objcopy': '-lLLVMObjCopy -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'object': '-lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle', - 'objectyaml': '-lLLVMObjectYAML -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'option': '-lLLVMOption -lLLVMSupport -lLLVMDemangle', - 'orcdebugging': '-lLLVMOrcDebugging -lLLVMOrcJIT -lLLVMPasses -lLLVMIRPrinter -lLLVMHipStdPar -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMObjCARCOpts -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMCFGuard -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMWindowsDriver -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMRuntimeDyld -lLLVMJITLink -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMOption -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'orcjit': '-lLLVMOrcJIT -lLLVMPasses -lLLVMIRPrinter -lLLVMHipStdPar -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMObjCARCOpts -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMCFGuard -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMWindowsDriver -lLLVMJITLink -lLLVMOption -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'orcshared': '-lLLVMOrcShared -lLLVMSupport -lLLVMDemangle', - 'orctargetprocess': '-lLLVMOrcTargetProcess -lLLVMTargetParser -lLLVMOrcShared -lLLVMSupport -lLLVMDemangle', - 'passes': '-lLLVMPasses -lLLVMIRPrinter -lLLVMHipStdPar -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMObjCARCOpts -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMCFGuard -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'profiledata': '-lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'remarks': '-lLLVMRemarks -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle', - 'runtimedyld': '-lLLVMRuntimeDyld -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'scalaropts': '-lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'selectiondag': '-lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'support': '-lLLVMSupport -lLLVMDemangle', - 'symbolize': '-lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'tablegen': '-lLLVMTableGen -lLLVMSupport -lLLVMDemangle', - 'target': '-lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'targetparser': '-lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'textapi': '-lLLVMTextAPI -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'textapibinaryreader': '-lLLVMTextAPIBinaryReader -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle', - 'transformutils': '-lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'vectorize': '-lLLVMVectorize -lLLVMTransformUtils -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'windowsdriver': '-lLLVMWindowsDriver -lLLVMTargetParser -lLLVMOption -lLLVMSupport -lLLVMDemangle', - 'windowsmanifest': '-lLLVMWindowsManifest -lLLVMSupport -lLLVMDemangle', - 'x86': '-lLLVMX86TargetMCA -lLLVMMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMInstrumentation -lLLVMIRPrinter -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMCFGuard -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'x86asmparser': '-lLLVMX86AsmParser -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMCodeGenTypes -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'x86codegen': '-lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMInstrumentation -lLLVMIRPrinter -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMCFGuard -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMObjCARCOpts -lLLVMTransformUtils -lLLVMCodeGenTypes -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'x86desc': '-lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMCodeGenTypes -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'x86disassembler': '-lLLVMX86Disassembler -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'x86info': '-lLLVMX86Info -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMSupport -lLLVMDemangle', - 'x86targetmca': '-lLLVMX86TargetMCA -lLLVMX86Desc -lLLVMX86Info -lLLVMMCDisassembler -lLLVMMCParser -lLLVMMCA -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMCodeGenTypes -lLLVMSupport -lLLVMDemangle', - 'xray': '-lLLVMXRay -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMBitstreamReader -lLLVMSupport -lLLVMDemangle', -} +# This script wraps llvm-config that intended for cross compiling to Redox. +# Because we can't run llvm-config compiled to Redox, we wrap it here. +# Any recipes that calls this script must have "host:llvm.runtime" available. import os import sys +import subprocess -def fail(message): - print("redox llvm-config failure", file=sys.stderr) - print(message, file=sys.stderr) - sys.exit(1) +LLVM_CONFIG = "/usr/bin/llvm-config" -prefix = os.environ["COOKBOOK_SYSROOT"] +def main(): + toolchain_path = os.environ.get("COOKBOOK_TOOLCHAIN") + sysroot_path = os.environ.get("COOKBOOK_SYSROOT") -args = [] -link_static = False -for arg in sys.argv[1:]: - if arg == "--link-static": - link_static = True - elif arg == "--link-shared": - fail("shared linking disabled") - else: - args.append(arg) + if not toolchain_path or not sysroot_path: + print(f"Error: COOKBOOK_TOOLCHAIN or COOKBOOK_SYSROOT not set", file=sys.stderr) + sys.exit(1) -if args == []: - fail("no arguments") -elif args == ["--version"]: - print("18.1.4") -elif args == ["--bindir"]: - print(prefix + "/bin") -elif args == ["--cppflags"]: - print("-I" + prefix + "/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") -elif args == ["--cxxflags"]: - print("-I" + prefix + "/include --std=c++17 -fno-exceptions -funwind-tables -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") -elif args == ["--components"]: - print(" ".join(components.keys())) -elif args == ["--includedir"]: - print(prefix + "/include") -elif args == ["--ldflags"]: - print("-L" + prefix + "/lib"); -elif args == ["--libdir"]: - print(prefix + "/lib") -elif args == ["--system-libs"]: - print("-lm") -elif args == ["--targets-built"]: - print("X86") -elif args[0] == "--libs": - libs = [] - if len(args) == 1: - args.append("all") - for component in args[1:]: - for lib in components[component].split(" "): - libs.append(lib) - print(" ".join(libs)) -elif args[0] == "--libfiles": - libs = [] - if len(args) == 1: - args.append("all") - for component in args[1:]: - for lib in components[component].split(" "): - file = prefix + "/lib/lib" + lib[2:] + ".a" - libs.append(file) - print(" ".join(libs)) -elif args == ["--has-rtti"]: - print("YES") -elif args[0] == "--shared-mode": - print("static") -else: - fail("unknown arguments: " + " ".join(args)) + cmd = [toolchain_path + LLVM_CONFIG] + sys.argv[1:] + + try: + result = subprocess.run( + cmd, + stdout=subprocess.PIPE, + stderr=sys.stderr, + check=False, + text=True + ) + except FileNotFoundError: + print(f"Error: Could not find executable '{LLVM_CONFIG}'", file=sys.stderr) + sys.exit(1) + + if result.returncode != 0: + sys.exit(result.returncode) + + output = result.stdout + + if sys.argv[1] in ["--bindir"]: + output = toolchain_path + "/usr/bin" + else: #if sys.argv[1] in ["--cppflags", "--cxxflags", "--includedir", "--ldflags", "--libdir", "--libfiles"] + src = toolchain_path.rstrip(os.sep) + dst = sysroot_path.rstrip(os.sep) + + output = output.replace(src, dst) + + print(output, end='') + +if __name__ == "__main__": + main() diff --git a/podman/redox-base-containerfile b/podman/redox-base-containerfile index c1de779c3..525d64e17 100644 --- a/podman/redox-base-containerfile +++ b/podman/redox-base-containerfile @@ -14,7 +14,6 @@ RUN apt-get update \ bison \ bsdextrautils \ build-essential \ - clang \ cmake \ curl \ dos2unix \ @@ -51,13 +50,11 @@ RUN apt-get update \ libsdl1.2-dev \ libsdl2-ttf-dev \ libxml2-utils \ - llvm \ - lua5.4 \ - luajit \ lzip \ m4 \ make \ meson \ + nano \ nasm \ ninja-build \ patch \ diff --git a/recipes/dev/llvm21/recipe.toml b/recipes/dev/llvm21/recipe.toml index e01a70bd2..3ef79ecd2 100644 --- a/recipes/dev/llvm21/recipe.toml +++ b/recipes/dev/llvm21/recipe.toml @@ -7,59 +7,36 @@ shallow_clone = true [build] template = "custom" dependencies = [ - "zlib" + "zlib", + "libxml2", +] +dev-dependencies = [ + "host:xz", + "host:libarchive", ] script = """ DYNAMIC_INIT -# https://llvm.org/docs/CMake.html -case "${TARGET}" in - x86-unknown-redox) - LLVM_TARGETS_TO_BUILD="X86" - ;; - x86_64-unknown-redox) - LLVM_TARGETS_TO_BUILD="X86" - ;; - aarch64-unknown-redox) - LLVM_TARGETS_TO_BUILD="AArch64" - ;; - riscv64gc-unknown-redox) - LLVM_TARGETS_TO_BUILD="RISCV" - ;; - *) - LLVM_TARGETS_TO_BUILD="host" - ;; -esac - COOKBOOK_CMAKE_FLAGS+=( -DCMAKE_CXX_FLAGS="--std=gnu++11" -DBUILD_SHARED_LIBS=False -DLLVM_LINK_LLVM_DYLIB=On -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$(realpath "${COOKBOOK_RECIPE}/native.cmake")" - -DLLVM_BUILD_BENCHMARKS=Off -DLLVM_BUILD_EXAMPLES=Off -DLLVM_BUILD_TESTS=Off - -DLLVM_BUILD_UTILS=Off + -DLLVM_BUILD_UTILS=On -DLLVM_DEFAULT_TARGET_TRIPLE="${TARGET}" -DLLVM_ENABLE_LTO=Off -DLLVM_ENABLE_RTTI=On -DLLVM_ENABLE_THREADS=On - -DLLVM_ENABLE_ZSTD=Off - -DLLVM_INCLUDE_BENCHMARKS=Off -DLLVM_INCLUDE_EXAMPLES=Off -DLLVM_INCLUDE_TESTS=Off - -DLLVM_INCLUDE_UTILS=Off + -DLLVM_INSTALL_UTILS=On -DLLVM_OPTIMIZED_TABLEGEN=On -DLLVM_TARGET_ARCH="$(echo "${TARGET}" | cut -d - -f1)" - -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS_TO_BUILD}" - -DLLVM_TOOL_LLVM_COV_BUILD=Off - -DLLVM_TOOL_LLVM_LTO_BUILD=Off - -DLLVM_TOOL_LLVM_LTO2_BUILD=Off - -DLLVM_TOOL_LLVM_PROFDATA_BUILD=Off - -DLLVM_TOOL_LLVM_RTDYLD_BUILD=Off - -DLLVM_TOOL_LLVM_XRAY_BUILD=Off - -DLLVM_TOOL_LLI_BUILD=Off - -DLLVM_TOOL_LTO_BUILD=Off + -DLLVM_TARGETS_TO_BUILD="X86;AArch64" + -DLLVM_TOOL_LLVM_COV_BUILD=On + -DLLVM_TOOL_LLVM_PROFDATA_BUILD=On -DLLVM_TOOLS_INSTALL_DIR=bin -DLLVM_UTILS_INSTALL_DIR=bin -DUNIX=1 @@ -68,5 +45,21 @@ COOKBOOK_CMAKE_FLAGS+=( # Native tablegen build fails with too many jobs, limit to 16 COOKBOOK_MAKE_JOBS="$(( ${COOKBOOK_MAKE_JOBS} > 16 ? 16 : ${COOKBOOK_MAKE_JOBS} ))" -cookbook_cmake "${COOKBOOK_SOURCE}/llvm" +COOKBOOK_SOURCE="$COOKBOOK_SOURCE/llvm" +cookbook_cmake """ + +[[optional-packages]] +name = "dev" +dependencies = [ ".runtime" ] +files = [ + "usr/include/**", + "usr/lib/*.a", + "usr/lib/cmake/**", +] + +[[optional-packages]] +name = "runtime" +files = [ + "usr/bin/**", +] diff --git a/recipes/dev/rust/config.toml b/recipes/dev/rust/config.toml index 3bfe250ff..9674da00f 100644 --- a/recipes/dev/rust/config.toml +++ b/recipes/dev/rust/config.toml @@ -1,11 +1,9 @@ +#TODO: use sed to replace hardcoded paths into env [llvm] download-ci-llvm = false static-libstdcpp = false targets = "X86" experimental-targets = "" -# TODO: This currently must need to be set manually. -# If you like to build llvm with sccache, uncomment: -# ccache = "sccache" [build] host = ["x86_64-unknown-redox"] @@ -30,3 +28,10 @@ ar = "x86_64-unknown-redox-ar" linker = "x86_64-unknown-redox-gcc" rpath = false crt-static = false +llvm-config = "/mnt/redox/recipes/dev/rust/target/x86_64-unknown-redox/sysroot/bin/llvm-config" + +[target.aarch64-unknown-linux-gnu] +llvm-config = "/mnt/redox/recipes/dev/rust/target/x86_64-unknown-redox/toolchain/bin/llvm-config" + +[target.x86_64-unknown-linux-gnu] +llvm-config = "/mnt/redox/recipes/dev/rust/target/x86_64-unknown-redox/toolchain/bin/llvm-config" diff --git a/recipes/dev/rust/recipe.toml b/recipes/dev/rust/recipe.toml index 933fbdbda..fdf501862 100644 --- a/recipes/dev/rust/recipe.toml +++ b/recipes/dev/rust/recipe.toml @@ -7,8 +7,16 @@ shallow_clone = true template = "custom" dependencies = [ "llvm21", - "zlib" + "zlib", ] +dev-dependencies = [ + "llvm21.dev", + "llvm21.runtime", + "host:llvm21", + "host:llvm21.dev", + "host:llvm21.runtime", +] + script = """ DYNAMIC_INIT # Linker flags for stage2 compiler (host -> target) @@ -17,6 +25,15 @@ export CARGO_TARGET_X86_64_UNKNOWN_REDOX_RUSTFLAGS="\ -Clink-args=-L${COOKBOOK_SYSROOT}/lib \ -Clink-args=-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib \ -Clink-args=-lz" +# Hack for Rust errorneusly running `llvm-config --version` on cross compiled llvm-config +cat "${COOKBOOK_ROOT}/bin/x86_64-unknown-redox-llvm-config" > "${COOKBOOK_SYSROOT}/bin/llvm-config" +# Linker flags for stage1 compiler (host -> host) +export RUSTFLAGS_BOOTSTRAP="\ +-Clink-args=-L${COOKBOOK_TOOLCHAIN}/lib \ +-Clink-args=-Wl,-rpath-link,${COOKBOOK_TOOLCHAIN}/lib" +export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS="${RUSTFLAGS_BOOTSTRAP}" +export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS="${RUSTFLAGS_BOOTSTRAP}" + # Don't poison the stage1 compiler (host -> host) unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF RUSTFLAGS STRIP python3 "${COOKBOOK_SOURCE}/x.py" install \ From 647666a5c6138338d3769525a0310ed708ea6eee Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 7 Dec 2025 22:04:35 +0700 Subject: [PATCH 06/26] Update mesa and drop deps to llvm18 --- recipes/demos/gears/recipe.toml | 1 - recipes/demos/glutin/recipe.toml | 1 - recipes/demos/osdemo/recipe.toml | 1 - recipes/emulators/flycast/recipe.toml | 1 - recipes/emulators/mednafen/recipe.toml | 1 - recipes/emulators/mupen64plus/recipe.toml | 1 - recipes/emulators/retroarch/recipe.toml | 1 - recipes/games/classicube/recipe.toml | 1 - recipes/games/freeciv/recipe.toml | 1 - recipes/games/hematite/recipe.toml | 1 - recipes/games/neverball/recipe.toml | 1 - recipes/games/openjk/recipe.toml | 1 - recipes/games/opentyrian/recipe.toml | 1 - recipes/games/quakespasm/recipe.toml | 1 - recipes/games/sm64ex/recipe.toml | 1 - recipes/games/spacecadetpinball/recipe.toml | 1 - recipes/groups/dev-essential/recipe.toml | 2 +- recipes/libs/ffmpeg6/recipe.toml | 1 - recipes/libs/mesa-glu/recipe.toml | 2 +- recipes/libs/mesa/recipe.toml | 5 ++++- recipes/libs/sdl2-gfx/recipe.toml | 1 - recipes/libs/sdl2-image/recipe.toml | 1 - recipes/libs/sdl2-mixer/recipe.toml | 1 - recipes/libs/sdl2-ttf/recipe.toml | 1 - recipes/libs/sdl2/recipe.toml | 1 - recipes/tools/pathfinder/recipe.toml | 1 - .../emulators/game-console/ppsspp/recipe.toml | 1 - .../emulators/windows/boxedwine/recipe.toml | 1 - recipes/wip/games/other/love/recipe.toml | 1 - .../wip/games/other/shockolate/recipe.toml | 1 - recipes/wip/games/other/vvvvvv/recipe.toml | 1 - recipes/wip/games/other/wesnoth/recipe.toml | 1 - recipes/wip/graphics/other/gaffer/recipe.toml | 1 - recipes/wip/libs/audio/openal/recipe.toml | 1 - recipes/wip/libs/mozjs/recipe.toml | 1 - recipes/wip/libs/other/libepoxy/recipe.toml | 1 - recipes/wip/players/tplay/recipe.toml | 1 - recipes/wip/vm/qemu/recipe.toml | 1 - recipes/wip/web/servo/recipe.toml | 1 + recipes/wip/x11/keybinder3/recipe.toml | 1 - recipes/wip/x11/lxde/libfm-gtk3/recipe.toml | 1 - recipes/wip/x11/lxde/lxpanel/recipe.toml | 1 - recipes/wip/x11/mesa-demos-x11/recipe.toml | 19 ++++--------------- recipes/wip/x11/mesa-glu-x11/recipe.toml | 8 -------- recipes/wip/x11/mesa-x11/recipe.toml | 9 +++++---- 45 files changed, 16 insertions(+), 68 deletions(-) diff --git a/recipes/demos/gears/recipe.toml b/recipes/demos/gears/recipe.toml index b736d6b4f..d2b9e36a6 100644 --- a/recipes/demos/gears/recipe.toml +++ b/recipes/demos/gears/recipe.toml @@ -1,7 +1,6 @@ [build] dependencies=[ "liborbital", - "llvm18", "mesa", "mesa-glu", "zlib", diff --git a/recipes/demos/glutin/recipe.toml b/recipes/demos/glutin/recipe.toml index 67dd944a9..2ba5786fa 100644 --- a/recipes/demos/glutin/recipe.toml +++ b/recipes/demos/glutin/recipe.toml @@ -6,7 +6,6 @@ upstream = "https://github.com/rust-windowing/glutin.git" [build] template = "custom" dependencies = [ - "llvm18", "mesa", "zlib" ] diff --git a/recipes/demos/osdemo/recipe.toml b/recipes/demos/osdemo/recipe.toml index 720f1315f..ced17af5e 100644 --- a/recipes/demos/osdemo/recipe.toml +++ b/recipes/demos/osdemo/recipe.toml @@ -2,7 +2,6 @@ template = "custom" dependencies = [ "liborbital", - "llvm18", "mesa", "mesa-glu", "zlib" diff --git a/recipes/emulators/flycast/recipe.toml b/recipes/emulators/flycast/recipe.toml index 7277aa1ef..27ff9a3d2 100644 --- a/recipes/emulators/flycast/recipe.toml +++ b/recipes/emulators/flycast/recipe.toml @@ -7,7 +7,6 @@ dependencies = [ "curl", "libiconv", "liborbital", - "llvm18", "mesa", "nghttp2", "openssl1", diff --git a/recipes/emulators/mednafen/recipe.toml b/recipes/emulators/mednafen/recipe.toml index 0f29da6a8..bd51a37db 100644 --- a/recipes/emulators/mednafen/recipe.toml +++ b/recipes/emulators/mednafen/recipe.toml @@ -11,7 +11,6 @@ dependencies = [ #TODO: libflac "libiconv", "liborbital", - "llvm18", "mesa", "sdl2", "zlib", diff --git a/recipes/emulators/mupen64plus/recipe.toml b/recipes/emulators/mupen64plus/recipe.toml index d28ca0bc9..f1538f56f 100644 --- a/recipes/emulators/mupen64plus/recipe.toml +++ b/recipes/emulators/mupen64plus/recipe.toml @@ -8,7 +8,6 @@ dependencies = [ "freetype2", "liborbital", "libpng", - "llvm18", "mesa", "mesa-glu", "sdl2", diff --git a/recipes/emulators/retroarch/recipe.toml b/recipes/emulators/retroarch/recipe.toml index e830377e2..5d6febdbb 100644 --- a/recipes/emulators/retroarch/recipe.toml +++ b/recipes/emulators/retroarch/recipe.toml @@ -6,7 +6,6 @@ template = "custom" dependencies = [ "liborbital", "libretro-super", - "llvm18", "mesa", "openssl1", "sdl2", diff --git a/recipes/games/classicube/recipe.toml b/recipes/games/classicube/recipe.toml index d78d3c5a7..083f334be 100644 --- a/recipes/games/classicube/recipe.toml +++ b/recipes/games/classicube/recipe.toml @@ -5,7 +5,6 @@ git = "https://github.com/jackpot51/ClassiCube.git" template = "custom" dependencies = [ "liborbital", - "llvm18", "mesa", "sdl2", "zlib", diff --git a/recipes/games/freeciv/recipe.toml b/recipes/games/freeciv/recipe.toml index a82782047..3f3493fde 100644 --- a/recipes/games/freeciv/recipe.toml +++ b/recipes/games/freeciv/recipe.toml @@ -11,7 +11,6 @@ dependencies = [ "liborbital", "libjpeg", "libpng", - "llvm18", "openssl1", "mesa", "nghttp2", diff --git a/recipes/games/hematite/recipe.toml b/recipes/games/hematite/recipe.toml index c34240441..4034a0713 100644 --- a/recipes/games/hematite/recipe.toml +++ b/recipes/games/hematite/recipe.toml @@ -6,7 +6,6 @@ upstream = "https://github.com/PistonDevelopers/hematite.git" [build] template = "custom" dependencies = [ - "llvm18", "mesa", "zlib" ] diff --git a/recipes/games/neverball/recipe.toml b/recipes/games/neverball/recipe.toml index 6c3f9f121..7a525e40a 100644 --- a/recipes/games/neverball/recipe.toml +++ b/recipes/games/neverball/recipe.toml @@ -13,7 +13,6 @@ dependencies = [ "liborbital", "libpng", "libvorbis", - "llvm18", "mesa", "sdl2", "sdl2-ttf", diff --git a/recipes/games/openjk/recipe.toml b/recipes/games/openjk/recipe.toml index 1ea400768..b1c8322e0 100644 --- a/recipes/games/openjk/recipe.toml +++ b/recipes/games/openjk/recipe.toml @@ -8,7 +8,6 @@ dependencies = [ "libjpeg", "liborbital", "libpng", - "llvm18", "mesa", "sdl2", "zlib", diff --git a/recipes/games/opentyrian/recipe.toml b/recipes/games/opentyrian/recipe.toml index ba168fb22..84fc86159 100644 --- a/recipes/games/opentyrian/recipe.toml +++ b/recipes/games/opentyrian/recipe.toml @@ -14,7 +14,6 @@ patches = [ "redox.patch" ] [build] template = "custom" dependencies = [ - "llvm18", "liborbital", "mesa", "sdl2", diff --git a/recipes/games/quakespasm/recipe.toml b/recipes/games/quakespasm/recipe.toml index 58cefddb9..169a874e6 100644 --- a/recipes/games/quakespasm/recipe.toml +++ b/recipes/games/quakespasm/recipe.toml @@ -10,7 +10,6 @@ rev = "cc32abe09ed417ce3be10af300d2dc2f686349ba" [build] template = "custom" dependencies = [ - "llvm18", "libiconv", "libogg", "liborbital", diff --git a/recipes/games/sm64ex/recipe.toml b/recipes/games/sm64ex/recipe.toml index 69b947373..10992c486 100644 --- a/recipes/games/sm64ex/recipe.toml +++ b/recipes/games/sm64ex/recipe.toml @@ -5,7 +5,6 @@ git = "https://github.com/jackpot51/sm64ex.git" template = "custom" dependencies = [ "liborbital", - "llvm18", "mesa", "sdl2", "zlib", diff --git a/recipes/games/spacecadetpinball/recipe.toml b/recipes/games/spacecadetpinball/recipe.toml index d0d3857e1..2828ce3bc 100644 --- a/recipes/games/spacecadetpinball/recipe.toml +++ b/recipes/games/spacecadetpinball/recipe.toml @@ -9,7 +9,6 @@ dependencies = [ "libogg", "liborbital", "libvorbis", - "llvm18", "mesa", "sdl2", "sdl2-mixer", diff --git a/recipes/groups/dev-essential/recipe.toml b/recipes/groups/dev-essential/recipe.toml index 40d3f296c..efe81319b 100644 --- a/recipes/groups/dev-essential/recipe.toml +++ b/recipes/groups/dev-essential/recipe.toml @@ -5,7 +5,7 @@ dependencies = [ "cargo", "gcc13", "gcc13.cxx", - "llvm18", + "llvm21", "gnu-binutils", "gnu-make", "gnu-grep", diff --git a/recipes/libs/ffmpeg6/recipe.toml b/recipes/libs/ffmpeg6/recipe.toml index bc63a4ec5..8f15ca3a4 100644 --- a/recipes/libs/ffmpeg6/recipe.toml +++ b/recipes/libs/ffmpeg6/recipe.toml @@ -10,7 +10,6 @@ patches = [ template = "custom" dependencies = [ "liborbital", - "llvm18", "mesa", "sdl2", "zlib", diff --git a/recipes/libs/mesa-glu/recipe.toml b/recipes/libs/mesa-glu/recipe.toml index a79880b8f..db79f16ac 100644 --- a/recipes/libs/mesa-glu/recipe.toml +++ b/recipes/libs/mesa-glu/recipe.toml @@ -3,7 +3,7 @@ tar = "https://archive.mesa3d.org/glu/glu-9.0.3.tar.xz" blake3 = "beed1665ed983540e7502289ec50c7e66d840820af3e9ef21c9c4a7e9686ab9f" [build] -dependencies = ["mesa", "zlib"] +dependencies = ["mesa"] template = "custom" script = """ DYNAMIC_INIT diff --git a/recipes/libs/mesa/recipe.toml b/recipes/libs/mesa/recipe.toml index 0f74aa945..d5930cc8f 100644 --- a/recipes/libs/mesa/recipe.toml +++ b/recipes/libs/mesa/recipe.toml @@ -9,9 +9,12 @@ dependencies = [ "expat", "libdrm", "liborbital", - "llvm18", + "llvm21", "zlib", ] +dev-dependencies = [ + "llvm21.dev", +] script = """ DYNAMIC_INIT diff --git a/recipes/libs/sdl2-gfx/recipe.toml b/recipes/libs/sdl2-gfx/recipe.toml index bf4b621fb..a9b968f0e 100644 --- a/recipes/libs/sdl2-gfx/recipe.toml +++ b/recipes/libs/sdl2-gfx/recipe.toml @@ -10,7 +10,6 @@ dependencies = [ "freetype2", "liborbital", "libpng", - "llvm18", "mesa", "sdl2", "zlib", diff --git a/recipes/libs/sdl2-image/recipe.toml b/recipes/libs/sdl2-image/recipe.toml index 94c49908d..0fd67360e 100644 --- a/recipes/libs/sdl2-image/recipe.toml +++ b/recipes/libs/sdl2-image/recipe.toml @@ -7,7 +7,6 @@ dependencies = [ "libjpeg", "liborbital", "libpng", - "llvm18", "mesa", "sdl2", "zlib", diff --git a/recipes/libs/sdl2-mixer/recipe.toml b/recipes/libs/sdl2-mixer/recipe.toml index d73bd12e9..b95425adf 100644 --- a/recipes/libs/sdl2-mixer/recipe.toml +++ b/recipes/libs/sdl2-mixer/recipe.toml @@ -7,7 +7,6 @@ template = "custom" dependencies = [ "sdl2", "liborbital", - "llvm18", "mesa", "zlib", "libogg", diff --git a/recipes/libs/sdl2-ttf/recipe.toml b/recipes/libs/sdl2-ttf/recipe.toml index 888f1835a..d6252b3ea 100644 --- a/recipes/libs/sdl2-ttf/recipe.toml +++ b/recipes/libs/sdl2-ttf/recipe.toml @@ -13,7 +13,6 @@ dependencies = [ "libdrm", "liborbital", "libpng", - "llvm18", "mesa", "sdl2", "zlib", diff --git a/recipes/libs/sdl2/recipe.toml b/recipes/libs/sdl2/recipe.toml index bef94c0a2..76f865993 100644 --- a/recipes/libs/sdl2/recipe.toml +++ b/recipes/libs/sdl2/recipe.toml @@ -6,7 +6,6 @@ git = "https://gitlab.redox-os.org/redox-os/sdl2.git" template = "custom" dependencies = [ "liborbital", - "llvm18", "mesa", "zlib", ] diff --git a/recipes/tools/pathfinder/recipe.toml b/recipes/tools/pathfinder/recipe.toml index d867a2302..f89e57d01 100644 --- a/recipes/tools/pathfinder/recipe.toml +++ b/recipes/tools/pathfinder/recipe.toml @@ -6,7 +6,6 @@ upstream = "https://github.com/servo/pathfinder.git" [build] template = "custom" dependencies = [ - "llvm18", "mesa", "zlib", ] diff --git a/recipes/wip/emulators/game-console/ppsspp/recipe.toml b/recipes/wip/emulators/game-console/ppsspp/recipe.toml index fe76b84d8..054f3f9e6 100644 --- a/recipes/wip/emulators/game-console/ppsspp/recipe.toml +++ b/recipes/wip/emulators/game-console/ppsspp/recipe.toml @@ -7,7 +7,6 @@ tar = "https://github.com/hrydgard/ppsspp/releases/download/v1.19.3/ppsspp-1.19. template = "custom" dependencies = [ #"liborbital", - "llvm18", "mesa", "mesa-glu", "sdl2", diff --git a/recipes/wip/emulators/windows/boxedwine/recipe.toml b/recipes/wip/emulators/windows/boxedwine/recipe.toml index 0933f5a54..6402cc4d9 100644 --- a/recipes/wip/emulators/windows/boxedwine/recipe.toml +++ b/recipes/wip/emulators/windows/boxedwine/recipe.toml @@ -7,7 +7,6 @@ template = "custom" dependencies = [ "curl", "liborbital", - "llvm18", "mesa", "mesa-glu", "nghttp2", diff --git a/recipes/wip/games/other/love/recipe.toml b/recipes/wip/games/other/love/recipe.toml index c4fd36f5b..4ee0050e5 100644 --- a/recipes/wip/games/other/love/recipe.toml +++ b/recipes/wip/games/other/love/recipe.toml @@ -15,7 +15,6 @@ dependencies = [ "libpng", "libtheora", "libvorbis", - "llvm18", "luajit", "openal", "mesa", diff --git a/recipes/wip/games/other/shockolate/recipe.toml b/recipes/wip/games/other/shockolate/recipe.toml index 11b7e365b..6c82cf8f2 100644 --- a/recipes/wip/games/other/shockolate/recipe.toml +++ b/recipes/wip/games/other/shockolate/recipe.toml @@ -32,5 +32,4 @@ cp -rv "${COOKBOOK_SOURCE}/shaders" "${COOKBOOK_STAGE}/home/user/systemshock/sha """ [package] dependencies = [ - "llvm18", ] diff --git a/recipes/wip/games/other/vvvvvv/recipe.toml b/recipes/wip/games/other/vvvvvv/recipe.toml index 92f51c390..a15bc5eb4 100644 --- a/recipes/wip/games/other/vvvvvv/recipe.toml +++ b/recipes/wip/games/other/vvvvvv/recipe.toml @@ -15,7 +15,6 @@ dependencies = [ "sdl2-mixer", "sdl2", "liborbital", - "llvm18", "mesa", "mesa-glu", "zlib", diff --git a/recipes/wip/games/other/wesnoth/recipe.toml b/recipes/wip/games/other/wesnoth/recipe.toml index 890ee7ffe..8b28a2623 100644 --- a/recipes/wip/games/other/wesnoth/recipe.toml +++ b/recipes/wip/games/other/wesnoth/recipe.toml @@ -24,7 +24,6 @@ dependencies = [ "liborbital", "libpng", "libvorbis", - "llvm18", "mesa", "mesa-glu", "pcre", diff --git a/recipes/wip/graphics/other/gaffer/recipe.toml b/recipes/wip/graphics/other/gaffer/recipe.toml index a4496f948..d39f8c9bf 100644 --- a/recipes/wip/graphics/other/gaffer/recipe.toml +++ b/recipes/wip/graphics/other/gaffer/recipe.toml @@ -13,7 +13,6 @@ dependencies = [ "freetype2", "glew", "imath", - "llvm18", "lz4", "libffi", "libjpeg", diff --git a/recipes/wip/libs/audio/openal/recipe.toml b/recipes/wip/libs/audio/openal/recipe.toml index ad05cfba9..566e58fa7 100644 --- a/recipes/wip/libs/audio/openal/recipe.toml +++ b/recipes/wip/libs/audio/openal/recipe.toml @@ -10,7 +10,6 @@ template = "custom" dependencies = [ "liborbital", "libsndfile", - "llvm18", "mesa", "sdl2", "zlib", diff --git a/recipes/wip/libs/mozjs/recipe.toml b/recipes/wip/libs/mozjs/recipe.toml index 611d45b57..1a0e60574 100644 --- a/recipes/wip/libs/mozjs/recipe.toml +++ b/recipes/wip/libs/mozjs/recipe.toml @@ -29,7 +29,6 @@ dependencies = [ "libpthread-stubs", "fontconfig", "expat", - "llvm18", "gcc13", ] diff --git a/recipes/wip/libs/other/libepoxy/recipe.toml b/recipes/wip/libs/other/libepoxy/recipe.toml index c4eaa6531..d77fc9cb1 100644 --- a/recipes/wip/libs/other/libepoxy/recipe.toml +++ b/recipes/wip/libs/other/libepoxy/recipe.toml @@ -13,7 +13,6 @@ dependencies = [ "libxext", "libxfixes", "libxxf86vm", - "llvm18", "mesa-x11", "x11proto", "zlib", diff --git a/recipes/wip/players/tplay/recipe.toml b/recipes/wip/players/tplay/recipe.toml index 603d5b11b..05ee069f7 100644 --- a/recipes/wip/players/tplay/recipe.toml +++ b/recipes/wip/players/tplay/recipe.toml @@ -5,7 +5,6 @@ git = "https://github.com/maxcurzi/tplay" template = "cargo" dependencies = [ "ffmpeg6", - "llvm18", "openssl1", "opencv4", ] diff --git a/recipes/wip/vm/qemu/recipe.toml b/recipes/wip/vm/qemu/recipe.toml index bbf0179b4..31d7010f8 100644 --- a/recipes/wip/vm/qemu/recipe.toml +++ b/recipes/wip/vm/qemu/recipe.toml @@ -14,7 +14,6 @@ dependencies = [ "liborbital", "libpng", "libstdcxx", - "llvm18", "mesa", "nghttp2", "openssl1", diff --git a/recipes/wip/web/servo/recipe.toml b/recipes/wip/web/servo/recipe.toml index 8bc27b637..e8d2eaac3 100644 --- a/recipes/wip/web/servo/recipe.toml +++ b/recipes/wip/web/servo/recipe.toml @@ -37,6 +37,7 @@ export CLANGFLAGS="-I $PREFIX_INCLUDE/c++/13.2.0 -I $PREFIX_INCLUDE/c++/13.2.0/$ #Mozjs specifics export CARGO_MAKEFLAGS="-j $COOKBOOK_MAKE_JOBS" CCACHE="sccache" +unset CC_WRAPPER PACKAGE_PATH="ports/servoshell" cookbook_cargo diff --git a/recipes/wip/x11/keybinder3/recipe.toml b/recipes/wip/x11/keybinder3/recipe.toml index 47378a987..65ddf484f 100644 --- a/recipes/wip/x11/keybinder3/recipe.toml +++ b/recipes/wip/x11/keybinder3/recipe.toml @@ -36,7 +36,6 @@ dependencies = [ "libxrandr", "libxrender", "libxxf86vm", - "llvm18", "mesa-x11", "pango", "pcre", diff --git a/recipes/wip/x11/lxde/libfm-gtk3/recipe.toml b/recipes/wip/x11/lxde/libfm-gtk3/recipe.toml index ea5d38401..eb232f92a 100644 --- a/recipes/wip/x11/lxde/libfm-gtk3/recipe.toml +++ b/recipes/wip/x11/lxde/libfm-gtk3/recipe.toml @@ -39,7 +39,6 @@ dependencies = [ "libxrandr", "libxrender", "libxxf86vm", - "llvm18", "mesa-x11", "pango", "pcre", diff --git a/recipes/wip/x11/lxde/lxpanel/recipe.toml b/recipes/wip/x11/lxde/lxpanel/recipe.toml index 504f69124..eeb6df653 100644 --- a/recipes/wip/x11/lxde/lxpanel/recipe.toml +++ b/recipes/wip/x11/lxde/lxpanel/recipe.toml @@ -41,7 +41,6 @@ dependencies = [ "libxrandr", "libxrender", "libxxf86vm", - "llvm18", "mesa-x11", "pango", "pcre", diff --git a/recipes/wip/x11/mesa-demos-x11/recipe.toml b/recipes/wip/x11/mesa-demos-x11/recipe.toml index 6a94ccccc..f7b049aeb 100644 --- a/recipes/wip/x11/mesa-demos-x11/recipe.toml +++ b/recipes/wip/x11/mesa-demos-x11/recipe.toml @@ -5,23 +5,12 @@ patches = ["redox.patch"] [build] dependencies = [ - "expat", - "libpthread-stubs", - "libstdcxx", - "libx11", - "libxau", - "libxcb", - "libxext", - "libxfixes", - "libxml2", - "libxxf86vm", - "llvm18", - "mesa-x11", "mesa-glu-x11", - "x11proto", - "xextproto", - "zlib", ] +dev-dependencies = [ + "libstdcxx", +] + template = "custom" script = """ DYNAMIC_INIT diff --git a/recipes/wip/x11/mesa-glu-x11/recipe.toml b/recipes/wip/x11/mesa-glu-x11/recipe.toml index c4a7e860a..a105a30ca 100644 --- a/recipes/wip/x11/mesa-glu-x11/recipe.toml +++ b/recipes/wip/x11/mesa-glu-x11/recipe.toml @@ -4,15 +4,7 @@ blake3 = "beed1665ed983540e7502289ec50c7e66d840820af3e9ef21c9c4a7e9686ab9f" [build] dependencies = [ - "libpthread-stubs", - "libx11", - "libxau", - "libxcb", - "libxext", - "libxfixes", - "libxxf86vm", "mesa-x11", - "x11proto", ] template = "custom" script = """ diff --git a/recipes/wip/x11/mesa-x11/recipe.toml b/recipes/wip/x11/mesa-x11/recipe.toml index c18db7d98..d7310734f 100644 --- a/recipes/wip/x11/mesa-x11/recipe.toml +++ b/recipes/wip/x11/mesa-x11/recipe.toml @@ -6,19 +6,20 @@ template = "custom" dependencies = [ "expat", "libdrm", - "libpthread-stubs", "libx11", - "libxau", "libxcb", "libxext", "libxfixes", "libxrandr", "libxshmfence", "libxxf86vm", - "llvm18", - "x11proto", + "llvm21", "zlib", ] +dev-dependencies = [ + "llvm21.dev" +] + script = """ DYNAMIC_INIT cookbook_meson \ From d07371ef7f5c477b04cd89f27a44ed6eb12a145a Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 7 Dec 2025 23:18:09 -0500 Subject: [PATCH 07/26] Fix package name on publish --- src/bin/repo_builder.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/repo_builder.rs b/src/bin/repo_builder.rs index d7ae75bcc..cc090a316 100644 --- a/src/bin/repo_builder.rs +++ b/src/bin/repo_builder.rs @@ -98,7 +98,7 @@ fn publish_packages(config: &CliConfig) -> anyhow::Result<()> { for package in cookbook_recipe.recipe.get_packages_list() { let (stage_dir, pkgar_src, toml_src) = cook_package::package_stage_paths(package, &target_dir); - let recipe_name = recipe.without_host(); + let recipe_name = cook_package::get_package_name(recipe.name(), package); let pkgar_dst = repo_path.join(format!("{}.pkgar", recipe_name)); let toml_dst = repo_path.join(format!("{}.toml", recipe_name)); From 1776adcc58174d1d3306af14e32c5131dc2efee5 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 8 Dec 2025 03:28:03 -0500 Subject: [PATCH 08/26] Compile clang in llvm21 --- config/x86_64/ci.toml | 2 +- recipes/dev/llvm21/recipe.toml | 58 ++++++++++++++++++++++++++++++---- 2 files changed, 53 insertions(+), 7 deletions(-) diff --git a/config/x86_64/ci.toml b/config/x86_64/ci.toml index 45a79ac83..1e904f18e 100644 --- a/config/x86_64/ci.toml +++ b/config/x86_64/ci.toml @@ -116,7 +116,7 @@ libwebp = {} libxkbcommon = {} libuuid = {} libxml2 = {} -llvm18 = {} +llvm21 = {} lsd = {} lua54 = {} lz4 = {} diff --git a/recipes/dev/llvm21/recipe.toml b/recipes/dev/llvm21/recipe.toml index 3ef79ecd2..ddd1b793a 100644 --- a/recipes/dev/llvm21/recipe.toml +++ b/recipes/dev/llvm21/recipe.toml @@ -11,8 +11,9 @@ dependencies = [ "libxml2", ] dev-dependencies = [ + "libstdcxx", "host:xz", - "host:libarchive", + "host:libarchive", # workaround for cmake error ] script = """ DYNAMIC_INIT @@ -39,8 +40,9 @@ COOKBOOK_CMAKE_FLAGS+=( -DLLVM_TOOL_LLVM_PROFDATA_BUILD=On -DLLVM_TOOLS_INSTALL_DIR=bin -DLLVM_UTILS_INSTALL_DIR=bin + -DLIBCLANG_BUILD_STATIC=On -DUNIX=1 - -DLLVM_ENABLE_PROJECTS="llvm" + -DLLVM_ENABLE_PROJECTS="llvm;clang;clang-tools-extra;lld" ) # Native tablegen build fails with too many jobs, limit to 16 @@ -49,17 +51,61 @@ COOKBOOK_SOURCE="$COOKBOOK_SOURCE/llvm" cookbook_cmake """ +# clang library and runtime [[optional-packages]] -name = "dev" +name = "clang" dependencies = [ ".runtime" ] files = [ - "usr/include/**", - "usr/lib/*.a", - "usr/lib/cmake/**", + "usr/bin/clang*", + "usr/libexec/**", + "usr/lib/libclang-cpp.so*", + "usr/lib/libclang.so*", + "usr/lib/clang/**", + "usr/lib/libear/**", + "usr/lib/libscanbuild/**", + "usr/share/clang*/**", ] +# lld runtime (no library) +[[optional-packages]] +name = "lld" +dependencies = [ ".runtime" ] +files = [ + "usr/bin/*.lld", + "usr/bin/*-ld", + "usr/bin/lld*", +] + +# llvm runtime [[optional-packages]] name = "runtime" files = [ "usr/bin/**", ] + +[[optional-packages]] +name = "clang-dev" +dependencies = [ ".clang" ] +files = [ + "usr/include/clang*/**", + "usr/lib/libclang*.a", + "usr/lib/cmake/clang/**", +] + +[[optional-packages]] +name = "lld-dev" +dependencies = [ ".lld" ] +files = [ + "usr/include/lld*/**", + "usr/lib/liblld*.a", + "usr/lib/cmake/lld/**", +] + +[[optional-packages]] +name = "dev" +dependencies = [ ".runtime" ] +files = [ + "usr/include/llvm*/**", + "usr/lib/libLLVM*.a", + "usr/lib/cmake/llvm/**", +] From 49dfd1369fc239383bda5d17e76c6c7738fe7496 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 8 Dec 2025 07:49:16 -0500 Subject: [PATCH 09/26] Fix dependency listing on optional packages --- src/cook/package.rs | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/cook/package.rs b/src/cook/package.rs index 70d90818e..bfbf51817 100644 --- a/src/cook/package.rs +++ b/src/cook/package.rs @@ -72,19 +72,8 @@ pub fn package( .map_err(|err| format!("failed to create pkgar archive: {:?}", err))?; } - let deps = if let Some(package) = package { - let mut b = BTreeSet::new(); - for dep in &package.dependencies { - let dep_name = if dep.name() == "" { - PackageName::new(format!("{}.{}", name.name(), package.name)) - .map_err(|e| format!("{}", e))? - } else { - dep.clone() - }; - b.insert(dep_name); - } - b.insert(name.clone()); - b + let deps = if package.is_some() { + BTreeSet::from([name.without_host()]) } else { auto_deps.clone() }; @@ -96,7 +85,17 @@ pub fn package( None => name.clone(), }; let package_deps = match package { - Some(p) => p.dependencies.clone(), + Some(p) => p + .dependencies + .iter() + .map(|dep| { + if dep.name().is_empty() { + name.with_suffix(dep.suffix()) + } else { + dep.clone() + } + }) + .collect(), None => recipe.package.dependencies.clone(), }; package_toml( From 1ca17090a9f40bb099cad8136fc5068a21a796b7 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Mon, 8 Dec 2025 10:48:51 -0500 Subject: [PATCH 10/26] Fix mesa compilation --- recipes/libs/libstdcxx/recipe.toml | 2 ++ recipes/libs/mesa/recipe.toml | 2 ++ recipes/wip/x11/mesa-x11/recipe.toml | 4 +++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/recipes/libs/libstdcxx/recipe.toml b/recipes/libs/libstdcxx/recipe.toml index 232733bed..cd9664481 100644 --- a/recipes/libs/libstdcxx/recipe.toml +++ b/recipes/libs/libstdcxx/recipe.toml @@ -1,6 +1,8 @@ [build] template = "custom" script = """ +if [ "$TARGET" != "$COOKBOOK_HOST_TARGET" ]; then mkdir -p "${COOKBOOK_STAGE}/lib" cp -av ${COOKBOOK_HOST_SYSROOT}/${GNU_TARGET}/lib/libstdc++.so* ${COOKBOOK_STAGE}/lib/ +fi """ diff --git a/recipes/libs/mesa/recipe.toml b/recipes/libs/mesa/recipe.toml index d5930cc8f..232145af5 100644 --- a/recipes/libs/mesa/recipe.toml +++ b/recipes/libs/mesa/recipe.toml @@ -14,6 +14,8 @@ dependencies = [ ] dev-dependencies = [ "llvm21.dev", + "host:llvm21.dev", + "host:llvm21.runtime", ] script = """ DYNAMIC_INIT diff --git a/recipes/wip/x11/mesa-x11/recipe.toml b/recipes/wip/x11/mesa-x11/recipe.toml index d7310734f..67f6452b8 100644 --- a/recipes/wip/x11/mesa-x11/recipe.toml +++ b/recipes/wip/x11/mesa-x11/recipe.toml @@ -17,7 +17,9 @@ dependencies = [ "zlib", ] dev-dependencies = [ - "llvm21.dev" + "llvm21.dev", + "host:llvm21.dev", + "host:llvm21.runtime", ] script = """ From e03519a2dbd06d81d68affccf00f25142c2c6c4e Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 9 Dec 2025 04:15:42 -0500 Subject: [PATCH 11/26] Fix gnu-make rebuild --- recipes/dev/gnu-make/recipe.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/dev/gnu-make/recipe.toml b/recipes/dev/gnu-make/recipe.toml index d9c722c9e..7199d8059 100644 --- a/recipes/dev/gnu-make/recipe.toml +++ b/recipes/dev/gnu-make/recipe.toml @@ -13,6 +13,6 @@ autotools_recursive_regenerate template = "custom" script = """ DYNAMIC_INIT -cp -rp "$COOKBOOK_SOURCE/." ./ +rsync -av --delete "$COOKBOOK_SOURCE/." ./ cookbook_configure -""" \ No newline at end of file +""" From 2c52aea4890210121f5dc4b8fd375fa897171e4d Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 9 Dec 2025 04:36:31 -0500 Subject: [PATCH 12/26] Don't wipe sccache on rebuilding podman --- mk/podman.mk | 2 -- 1 file changed, 2 deletions(-) diff --git a/mk/podman.mk b/mk/podman.mk index e81fd8d0b..8f5223ee2 100644 --- a/mk/podman.mk +++ b/mk/podman.mk @@ -58,8 +58,6 @@ container_kill: FORCE build/container.tag: $(CONTAINERFILE) ifeq ($(PODMAN_BUILD),1) rm -f build/container.tag - -chmod -R 0700 $(PODMAN_HOME) || true - -rm -rf $(PODMAN_HOME) || true -podman image rm --force $(IMAGE_TAG) || true mkdir -p $(PODMAN_HOME) @echo "Building Podman image. This may take some time." From 1cceaf593c50abf6333bacb3410c4452f5820dfa Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 9 Dec 2025 04:49:25 -0500 Subject: [PATCH 13/26] Change CI base image to fix error --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ffac21692..e2ef502ec 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,6 +8,7 @@ stages: - test fmt: + image: "rust:trixie" stage: lint rules: - if: '$CI_COMMIT_BRANCH == "master" && $CI_PROJECT_NAMESPACE == "redox-os"' @@ -17,6 +18,7 @@ fmt: - cargo fmt -- --check cargo-test: + image: "rust:trixie" stage: lint rules: - if: '$CI_COMMIT_BRANCH == "master" && $CI_PROJECT_NAMESPACE == "redox-os"' From eafd65b1ba43b4a5f78b63771862ab83fae33e79 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 9 Dec 2025 05:01:01 -0500 Subject: [PATCH 14/26] Fix cargo test --- src/cook/cook_build.rs | 4 ++-- src/recipe.rs | 13 ++++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/cook/cook_build.rs b/src/cook/cook_build.rs index 74513d035..74d515c9b 100644 --- a/src/cook/cook_build.rs +++ b/src/cook/cook_build.rs @@ -21,7 +21,7 @@ use std::{ use crate::{is_redox, log_to_pty}; fn auto_deps_from_dynamic_linking( - stage_dirs: &Vec, + stage_dirs: &[PathBuf], target_dir: &Path, dep_pkgars: &BTreeSet<(PackageName, PathBuf)>, logger: &PtyOut, @@ -601,7 +601,7 @@ mod tests { ); let entries = super::auto_deps_from_dynamic_linking( - &root, + &vec![root.clone()], &root.join(".."), &Default::default(), &None, diff --git a/src/recipe.rs b/src/recipe.rs index 5e0b4ce6e..953c2f6c3 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -15,7 +15,7 @@ use serde::{ use crate::{WALK_DEPTH, cook::package as cook_package}; /// Specifies how to download the source for a recipe -#[derive(Debug, Clone, Deserialize, PartialEq, Serialize)] +#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] #[serde(untagged)] pub enum SourceRecipe { /// Reuse the source directory of another package @@ -450,7 +450,7 @@ mod tests { #[test] fn git_cargo_recipe() { - use crate::recipe::{BuildKind, BuildRecipe, PackageRecipe, Recipe, SourceRecipe}; + use crate::recipe::{BuildKind, BuildRecipe, Recipe, SourceRecipe}; let recipe: Recipe = toml::from_str( r#" @@ -470,9 +470,12 @@ mod tests { Recipe { source: Some(SourceRecipe::Git { git: "https://gitlab.redox-os.org/redox-os/acid.git".to_string(), + upstream: None, branch: Some("master".to_string()), rev: Some("06344744d3d55a5ac9a62a6059cb363d40699bbc".to_string()), - ..Default::default() + patches: Vec::new(), + script: None, + shallow_clone: None, }), build: BuildRecipe::new(BuildKind::Cargo { package_path: None, @@ -485,7 +488,7 @@ mod tests { #[test] fn tar_custom_recipe() { - use crate::recipe::{BuildKind, BuildRecipe, PackageRecipe, Recipe, SourceRecipe}; + use crate::recipe::{BuildKind, BuildRecipe, Recipe, SourceRecipe}; let recipe: Recipe = toml::from_str( r#" @@ -544,7 +547,7 @@ mod tests { build: BuildRecipe::new(BuildKind::None), package: PackageRecipe { dependencies: vec![PackageName::new("gcc13").unwrap()], - ....Default::default() + ..Default::default() }, ..Default::default() } From e6b429450114917eb321b5dbcd826fbbf08816c9 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 9 Dec 2025 23:30:00 +0700 Subject: [PATCH 15/26] Update python to use host recipe as bootstrap --- Cargo.lock | 4 +- recipes/dev/python312/recipe.toml | 76 +++++++--------------- recipes/dev/python312/redox.patch | 62 +++++++----------- recipes/libs/ncursesw/recipe.toml | 6 +- recipes/libs/ncursesw/redox.patch | 12 ---- recipes/libs/readline/recipe.toml | 7 +- recipes/tools/bzip2/recipe.toml | 14 ++-- recipes/wip/libs/other/libuuid/recipe.toml | 2 + recipes/wip/libs/other/libuuid/redox.patch | 13 ++++ 9 files changed, 79 insertions(+), 117 deletions(-) delete mode 100644 recipes/libs/ncursesw/redox.patch diff --git a/Cargo.lock b/Cargo.lock index b95ef9214..617dc20c2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -911,8 +911,8 @@ dependencies = [ [[package]] name = "redox-pkg" -version = "0.2.8" -source = "git+https://gitlab.redox-os.org/redox-os/pkgutils.git#6ed6a265cbe9abaf9d747e700f72cad9cea5a5d0" +version = "0.2.9" +source = "git+https://gitlab.redox-os.org/redox-os/pkgutils.git#78b50760a3ee6c6752d47ec6f3511cd28b5d70de" dependencies = [ "anyhow", "ignore", diff --git a/recipes/dev/python312/recipe.toml b/recipes/dev/python312/recipe.toml index f7759afad..67cc6d402 100644 --- a/recipes/dev/python312/recipe.toml +++ b/recipes/dev/python312/recipe.toml @@ -1,5 +1,6 @@ [source] -tar = "https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz" +tar = "https://www.python.org/ftp/python/3.12.12/Python-3.12.12.tar.xz" +blake3 = "29636fdae3e0ee8d0fe585e528c9376fe43876f5f3f0f7892140567946fd907b" patches = [ "redox.patch" ] @@ -11,7 +12,6 @@ dependencies = [ "libffi", "libuuid", "openssl3", - "ncurses", "ncursesw", "readline", "sqlite3", @@ -19,63 +19,35 @@ dependencies = [ "xz", "zstd", ] +dev-dependencies = [ + "host:python312" +] script = """ DYNAMIC_INIT -# Build host python3 -mkdir -p host -pushd host -#TODO: easier way to build for host? -HOST_ENV=( - env - --unset=AR - --unset=AS - --unset=CC - --unset=CFLAGS - --unset=CPPFLAGS - --unset=CXX - --unset=GNU_TARGET - --unset=LD - --unset=LDFLAGS - --unset=NM - --unset=OBJCOPY - --unset=OBJDUMP - --unset=PKG_CONFIG - --unset=PKG_CONFIG_ALLOW_CROSS - --unset=PKG_CONFIG_FOR_BUILD - --unset=PKG_CONFIG_LIBDIR - --unset=PKG_CONFIG_PATH - --unset=PKG_CONFIG_SYSROOT_DIR - --unset=PREFIX_RUSTFLAGS - --unset=RANLIB - --unset=READELF - --unset=STRIP - --unset=TARGET -) -"${HOST_ENV[@]}" "${COOKBOOK_CONFIGURE}" --prefix="${PWD}/usr" -"${HOST_ENV[@]}" "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" -"${HOST_ENV[@]}" "${COOKBOOK_MAKE}" altinstall -popd - export PYTHONDONTWRITEBYTECODE=1 ARCH="${TARGET%%-*}" -# Packages are considerably larger because of this issue -# https://gitlab.redox-os.org/redox-os/relibc/-/issues/227 -export MODULE_BUILDTYPE=static +if [ "$TARGET" != "$COOKBOOK_HOST_TARGET" ]; then + COOKBOOK_CONFIGURE_FLAGS=( + --prefix=/usr + --disable-ipv6 + --host=${GNU_TARGET} + --build="$ARCH" + --with-build-python="${COOKBOOK_TOOLCHAIN}/usr/bin/python3.12" + --with-ensurepip=install + --disable-test-modules + ac_cv_file__dev_ptmx=no + ac_cv_file__dev_ptc=no + ) +else + COOKBOOK_CONFIGURE_FLAGS=(--prefix=/usr) +fi -COOKBOOK_CONFIGURE_FLAGS=( - --prefix=/usr - --enable-shared - --disable-ipv6 - --host=${GNU_TARGET} - --build="$ARCH" - --with-build-python="${PWD}/host/usr/bin/python3.12" - --with-ensurepip=install - --disable-test-modules - ac_cv_file__dev_ptmx=no - ac_cv_file__dev_ptc=no -) +if [ "${COOKBOOK_DYNAMIC}" != "1" ]; then + export MODULE_BUILDTYPE=static + COOKBOOK_CONFIGURE_FLAGS+=( --enable-shared ) +fi cookbook_configure """ diff --git a/recipes/dev/python312/redox.patch b/recipes/dev/python312/redox.patch index 9ead63c55..a0cfe4a54 100644 --- a/recipes/dev/python312/redox.patch +++ b/recipes/dev/python312/redox.patch @@ -1,7 +1,7 @@ diff -ruwN source/configure source-new/configure ---- source/configure 2023-10-02 05:48:14.000000000 -0600 -+++ source-new/configure 2025-09-28 13:44:57.914820310 -0600 -@@ -4276,6 +4276,9 @@ +--- source/configure 2025-10-09 18:07:00.000000000 +0700 ++++ source-new/configure 2025-12-09 22:14:30.781035339 +0700 +@@ -4283,6 +4283,9 @@ *-*-wasi) ac_sys_system=WASI ;; @@ -11,7 +11,7 @@ diff -ruwN source/configure source-new/configure *) # for now, limit cross builds to known configurations MACHDEP="unknown" -@@ -4300,6 +4303,7 @@ +@@ -4307,6 +4310,7 @@ case $MACHDEP in aix*) MACHDEP="aix";; linux*) MACHDEP="linux";; @@ -19,7 +19,7 @@ diff -ruwN source/configure source-new/configure cygwin*) MACHDEP="cygwin";; darwin*) MACHDEP="darwin";; '') MACHDEP="unknown";; -@@ -4311,7 +4315,7 @@ +@@ -4327,7 +4331,7 @@ if test "$cross_compiling" = yes; then case "$host" in @@ -28,7 +28,7 @@ diff -ruwN source/configure source-new/configure case "$host_cpu" in arm*) _host_cpu=arm -@@ -6746,6 +6750,7 @@ +@@ -6762,6 +6766,7 @@ #undef cris #undef fr30 #undef linux @@ -36,7 +36,7 @@ diff -ruwN source/configure source-new/configure #undef hppa #undef hpux #undef i386 -@@ -6891,6 +6896,18 @@ +@@ -6907,6 +6912,18 @@ # endif #elif defined(__gnu_hurd__) i386-gnu @@ -55,7 +55,7 @@ diff -ruwN source/configure source-new/configure #elif defined(__APPLE__) darwin #elif defined(__VXWORKS__) -@@ -7488,7 +7505,7 @@ +@@ -7507,7 +7524,7 @@ PY3LIBRARY=libpython3.so fi ;; @@ -64,8 +64,8 @@ diff -ruwN source/configure source-new/configure LDLIBRARY='libpython$(LDVERSION).so' BLDLIBRARY='-L. -lpython$(LDVERSION)' RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} -@@ -12753,7 +12770,7 @@ - Emscripten|WASI) +@@ -12815,7 +12832,7 @@ + Emscripten*|WASI*) LDSHARED='$(CC) -shared' LDCXXSHARED='$(CXX) -shared';; - Linux*|GNU*|QNX*|VxWorks*|Haiku*) @@ -73,7 +73,7 @@ diff -ruwN source/configure source-new/configure LDSHARED='$(CC) -shared' LDCXXSHARED='$(CXX) -shared';; FreeBSD*) -@@ -12839,7 +12856,7 @@ +@@ -12901,7 +12918,7 @@ else CCSHARED="+z"; fi;; Linux-android*) ;; @@ -82,7 +82,7 @@ diff -ruwN source/configure source-new/configure Emscripten*|WASI*) if test "x$enable_wasm_dynamic_linking" = xyes then : -@@ -12877,7 +12894,7 @@ +@@ -12939,7 +12956,7 @@ LINKFORSHARED="-Wl,-E -Wl,+s";; # LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";; Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";; @@ -92,8 +92,8 @@ diff -ruwN source/configure source-new/configure Darwin/*) LINKFORSHARED="$extra_undefs -framework CoreFoundation" diff -ruwN source/Include/pyport.h source-new/Include/pyport.h ---- source/Include/pyport.h 2023-10-02 05:48:14.000000000 -0600 -+++ source-new/Include/pyport.h 2025-09-28 13:44:57.916856922 -0600 +--- source/Include/pyport.h 2025-10-09 18:07:00.000000000 +0700 ++++ source-new/Include/pyport.h 2025-12-09 22:14:30.781035339 +0700 @@ -684,7 +684,7 @@ # error "Py_TRACE_REFS ABI is not compatible with release and debug ABI" #endif @@ -104,8 +104,8 @@ diff -ruwN source/Include/pyport.h source-new/Include/pyport.h // See _Py_GetLocaleEncoding(), PyUnicode_DecodeLocale() // and PyUnicode_EncodeLocale(). diff -ruwN source/Modules/_cryptmodule.c source-new/Modules/_cryptmodule.c ---- source/Modules/_cryptmodule.c 2023-10-02 05:48:14.000000000 -0600 -+++ source-new/Modules/_cryptmodule.c 2025-09-28 13:44:57.917139387 -0600 +--- source/Modules/_cryptmodule.c 2025-10-09 18:07:00.000000000 +0700 ++++ source-new/Modules/_cryptmodule.c 2025-12-09 22:14:30.781035339 +0700 @@ -38,13 +38,7 @@ /*[clinic end generated code: output=0512284a03d2803c input=0e8edec9c364352b]*/ { @@ -121,9 +121,9 @@ diff -ruwN source/Modules/_cryptmodule.c source-new/Modules/_cryptmodule.c return PyErr_SetFromErrno(PyExc_OSError); } diff -ruwN source/Modules/posixmodule.c source-new/Modules/posixmodule.c ---- source/Modules/posixmodule.c 2023-10-02 05:48:14.000000000 -0600 -+++ source-new/Modules/posixmodule.c 2025-09-28 13:44:57.918070573 -0600 -@@ -2610,8 +2610,7 @@ +--- source/Modules/posixmodule.c 2025-10-09 18:07:00.000000000 +0700 ++++ source-new/Modules/posixmodule.c 2025-12-09 22:14:30.781035339 +0700 +@@ -2695,8 +2695,7 @@ #ifdef HAVE_FSTATAT if ((dir_fd != DEFAULT_DIR_FD) || !follow_symlinks) { if (HAVE_FSTATAT_RUNTIME) { @@ -133,7 +133,7 @@ diff -ruwN source/Modules/posixmodule.c source-new/Modules/posixmodule.c } else { fstatat_unavailable = 1; -@@ -3083,8 +3082,6 @@ +@@ -3186,8 +3185,6 @@ if (HAVE_FACCESSAT_RUNTIME) { int flags = 0; @@ -142,7 +142,7 @@ diff -ruwN source/Modules/posixmodule.c source-new/Modules/posixmodule.c if (effective_ids) flags |= AT_EACCESS; result = faccessat(dir_fd, path->narrow, mode, flags); -@@ -3369,8 +3366,7 @@ +@@ -3472,8 +3469,7 @@ * support dir_fd and follow_symlinks=False. (Hopefully.) * Until then, we need to be careful what exception we raise. */ @@ -152,7 +152,7 @@ diff -ruwN source/Modules/posixmodule.c source-new/Modules/posixmodule.c /* * But wait! We can't throw the exception without allowing threads, * and we can't do that in this nested scope. (Macro trickery, sigh.) -@@ -3747,8 +3743,7 @@ +@@ -3850,8 +3846,7 @@ #ifdef HAVE_FCHOWNAT if ((dir_fd != DEFAULT_DIR_FD) || (!follow_symlinks)) { if (HAVE_FCHOWNAT_RUNTIME) { @@ -162,7 +162,7 @@ diff -ruwN source/Modules/posixmodule.c source-new/Modules/posixmodule.c } else { fchownat_unsupported = 1; } -@@ -14598,8 +14593,7 @@ +@@ -14727,8 +14722,7 @@ #ifdef HAVE_FSTATAT if (HAVE_FSTATAT_RUNTIME) { Py_BEGIN_ALLOW_THREADS @@ -173,8 +173,8 @@ diff -ruwN source/Modules/posixmodule.c source-new/Modules/posixmodule.c } else diff -ruwN source/Modules/resource.c source-new/Modules/resource.c ---- source/Modules/resource.c 2023-10-02 05:48:14.000000000 -0600 -+++ source-new/Modules/resource.c 2025-09-28 13:44:57.919295094 -0600 +--- source/Modules/resource.c 2025-10-09 18:07:00.000000000 +0700 ++++ source-new/Modules/resource.c 2025-12-09 22:14:30.781035339 +0700 @@ -216,7 +216,7 @@ { struct rlimit rl; @@ -202,15 +202,3 @@ diff -ruwN source/Modules/resource.c source-new/Modules/resource.c PyErr_SetString(PyExc_ValueError, "invalid resource specified"); return NULL; -diff -ruwN source/Modules/timemodule.c source-new/Modules/timemodule.c ---- source/Modules/timemodule.c 2023-10-02 05:48:14.000000000 -0600 -+++ source-new/Modules/timemodule.c 2025-09-28 13:45:28.513234796 -0600 -@@ -1494,7 +1494,7 @@ - - #elif defined(HAVE_CLOCK_GETTIME) && \ - defined(CLOCK_PROCESS_CPUTIME_ID) && \ -- !defined(__EMSCRIPTEN__) && !defined(__wasi__) -+ !defined(__EMSCRIPTEN__) && !defined(__wasi__) && !defined(__redox__) - #define HAVE_THREAD_TIME - - #if defined(__APPLE__) && defined(__has_attribute) && __has_attribute(availability) diff --git a/recipes/libs/ncursesw/recipe.toml b/recipes/libs/ncursesw/recipe.toml index a697aabe6..80eee8273 100644 --- a/recipes/libs/ncursesw/recipe.toml +++ b/recipes/libs/ncursesw/recipe.toml @@ -1,9 +1,5 @@ [source] -tar = "https://ftp.gnu.org/gnu/ncurses/ncurses-6.4.tar.gz" -blake3 = "0d1c9fdf53c0ca4bd66ba707d49a079d2dd6f5a960cdec74a56e29952c4ffe73" -patches = [ - "redox.patch" -] +same_as = "../ncurses" [build] template = "custom" diff --git a/recipes/libs/ncursesw/redox.patch b/recipes/libs/ncursesw/redox.patch deleted file mode 100644 index b446db168..000000000 --- a/recipes/libs/ncursesw/redox.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ruwN source/configure source-new/configure ---- source/configure 2022-11-06 04:13:26.000000000 +0700 -+++ source-new/configure 2025-09-17 21:14:28.163192730 +0700 -@@ -6386,7 +6386,7 @@ - fi - cf_cv_rm_so_locs=yes - ;; -- (linux*|gnu*|k*bsd*-gnu) -+ (linux*|gnu*|k*bsd*-gnu|redox*) - if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then - LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" diff --git a/recipes/libs/readline/recipe.toml b/recipes/libs/readline/recipe.toml index 35a30f597..82eb522bf 100644 --- a/recipes/libs/readline/recipe.toml +++ b/recipes/libs/readline/recipe.toml @@ -13,6 +13,9 @@ dependencies = [ script = """ DYNAMIC_INIT cookbook_configure -ln -s "libhistory.so.7" "${COOKBOOK_STAGE}"/usr/lib/libhistory.so -ln -s "libreadline.so.7" "${COOKBOOK_STAGE}"/usr/lib/libreadline.so +OS=$(echo "${TARGET}" | cut -d - -f3) +if [ "${OS}" = "redox" ]; then + ln -s "libhistory.so.7" "${COOKBOOK_STAGE}"/usr/lib/libhistory.so + ln -s "libreadline.so.7" "${COOKBOOK_STAGE}"/usr/lib/libreadline.so +fi """ diff --git a/recipes/tools/bzip2/recipe.toml b/recipes/tools/bzip2/recipe.toml index 5c73235ad..b7fdd3835 100644 --- a/recipes/tools/bzip2/recipe.toml +++ b/recipes/tools/bzip2/recipe.toml @@ -11,10 +11,10 @@ DYNAMIC_INIT # The static lib is preferred according to the README because it's faster rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" \ - AR="${TARGET}-ar" \ - CC="${CC_WRAPPER} ${TARGET}-gcc" \ + AR="${AR}" \ + CC="${CC}" \ + RANLIB="${RANLIB}" \ PREFIX="${COOKBOOK_STAGE}" \ - RANLIB="${TARGET}-ranlib" \ install # However, distros distribute libbz2 as well so we'll support it too @@ -24,10 +24,10 @@ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ # This DOES NOT build/clobber the binaries already built above "${COOKBOOK_MAKE}" -f Makefile-libbz2_so \ -j"${COOKBOOK_MAKE_JOBS}" \ - AR="${TARGET}-ar" \ - CC="${CC_WRAPPER} ${TARGET}-gcc" \ - PREFIX="${COOKBOOK_STAGE}" \ - RANLIB="${TARGET}-ranlib" + AR="${AR}" \ + CC="${CC}" \ + RANLIB="${RANLIB}" \ + PREFIX="${COOKBOOK_STAGE}" cp -av libbz2.so* "${COOKBOOK_STAGE}/lib" ln -sr "${COOKBOOK_STAGE}/lib/libbz2.so.1.0" "${COOKBOOK_STAGE}/lib/libbz2.so.1" diff --git a/recipes/wip/libs/other/libuuid/recipe.toml b/recipes/wip/libs/other/libuuid/recipe.toml index 8a9947f99..2ea2e5b5d 100644 --- a/recipes/wip/libs/other/libuuid/recipe.toml +++ b/recipes/wip/libs/other/libuuid/recipe.toml @@ -1,7 +1,9 @@ [source] tar = "https://sourceforge.net/projects/libuuid/files/libuuid-1.0.3.tar.gz/download" +blake3 = "ac6582304401d2be6e5db4570c0d9d6d1500f12c918591a05066679bb2e41e55" patches = [ "redox.patch" ] + [build] template = "configure" diff --git a/recipes/wip/libs/other/libuuid/redox.patch b/recipes/wip/libs/other/libuuid/redox.patch index 1ede79c48..2e7a5f9ce 100644 --- a/recipes/wip/libs/other/libuuid/redox.patch +++ b/recipes/wip/libs/other/libuuid/redox.patch @@ -40,6 +40,19 @@ diff -ruwN source/configure source-new/configure version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no +diff -ruwN source/gen_uuid.c source-new/gen_uuid.c +--- source/gen_uuid.c 2014-08-12 04:07:18.000000000 -0400 ++++ source-new/gen_uuid.c 2025-12-09 10:49:12.580466005 -0500 +@@ -59,9 +59,7 @@ + #include + #endif + #include +-#ifdef HAVE_SYS_FILE_H + #include +-#endif + #ifdef HAVE_SYS_IOCTL_H + #include + #endif diff -ruwN source/randutils.c source-new/randutils.c --- source/randutils.c 2014-08-12 15:07:18.000000000 +0700 +++ source-new/randutils.c 2025-09-19 21:11:57.907659403 +0700 From 128cfbfe965365a0b4a22509d70cb34be15f6410 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 9 Dec 2025 23:52:46 +0700 Subject: [PATCH 16/26] Split python dev --- recipes/dev/python312/recipe.toml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/recipes/dev/python312/recipe.toml b/recipes/dev/python312/recipe.toml index 67cc6d402..9067b5a5e 100644 --- a/recipes/dev/python312/recipe.toml +++ b/recipes/dev/python312/recipe.toml @@ -27,6 +27,7 @@ DYNAMIC_INIT export PYTHONDONTWRITEBYTECODE=1 ARCH="${TARGET%%-*}" +OS=$(echo "${TARGET}" | cut -d - -f3-4) if [ "$TARGET" != "$COOKBOOK_HOST_TARGET" ]; then COOKBOOK_CONFIGURE_FLAGS=( @@ -50,4 +51,15 @@ if [ "${COOKBOOK_DYNAMIC}" != "1" ]; then fi cookbook_configure + +# A same file to save 60MB +(cd "${COOKBOOK_STAGE}/usr/lib/python3.12/config-3.12-$ARCH-$OS" && \ + rm -f libpython3.12.a && ln -s ../../libpython3.12.a) """ + +[[optional-packages]] +name = "dev" +files = [ + "usr/lib/python3.12/config-*/**", + "usr/lib/libpython*.a" +] From 143a9556857311db2205494891ed9c22c0ec29f2 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 10 Dec 2025 02:12:52 -0300 Subject: [PATCH 17/26] Add recipes --- recipes/wip/dev/analysis/tinywatcher/recipe.toml | 5 +++++ recipes/wip/edu/nanocore/recipe.toml | 10 ++++++++++ recipes/wip/files/unf/recipe.toml | 5 +++++ recipes/wip/net/social/nostui/recipe.toml | 5 +++++ recipes/wip/text/rhyolite/recipe.toml | 13 +++++++++++++ recipes/wip/text/treemd/recipe.toml | 5 +++++ recipes/wip/web/dodeca/recipe.toml | 8 ++++++++ 7 files changed, 51 insertions(+) create mode 100644 recipes/wip/dev/analysis/tinywatcher/recipe.toml create mode 100644 recipes/wip/edu/nanocore/recipe.toml create mode 100644 recipes/wip/files/unf/recipe.toml create mode 100644 recipes/wip/net/social/nostui/recipe.toml create mode 100644 recipes/wip/text/rhyolite/recipe.toml create mode 100644 recipes/wip/text/treemd/recipe.toml create mode 100644 recipes/wip/web/dodeca/recipe.toml diff --git a/recipes/wip/dev/analysis/tinywatcher/recipe.toml b/recipes/wip/dev/analysis/tinywatcher/recipe.toml new file mode 100644 index 000000000..cf09d2e52 --- /dev/null +++ b/recipes/wip/dev/analysis/tinywatcher/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/tinywatcher/tinywatcher" +[build] +template = "cargo" diff --git a/recipes/wip/edu/nanocore/recipe.toml b/recipes/wip/edu/nanocore/recipe.toml new file mode 100644 index 000000000..f0d9ad828 --- /dev/null +++ b/recipes/wip/edu/nanocore/recipe.toml @@ -0,0 +1,10 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/AfaanBilal/NanoCore" +[build] +template = "custom" +script = """ +cookbook_cargo +mkdir -pv "${COOKBOOK_STAGE}/usr/share/nanocore" +cp -rv "${COOKBOOK_SOURCE}"/programs/* "${COOKBOOK_STAGE}/usr/share/nanocore" +""" diff --git a/recipes/wip/files/unf/recipe.toml b/recipes/wip/files/unf/recipe.toml new file mode 100644 index 000000000..205fa1d80 --- /dev/null +++ b/recipes/wip/files/unf/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/io12/unf" +[build] +template = "cargo" diff --git a/recipes/wip/net/social/nostui/recipe.toml b/recipes/wip/net/social/nostui/recipe.toml new file mode 100644 index 000000000..f4677875c --- /dev/null +++ b/recipes/wip/net/social/nostui/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/akiomik/nostui" +[build] +template = "cargo" diff --git a/recipes/wip/text/rhyolite/recipe.toml b/recipes/wip/text/rhyolite/recipe.toml new file mode 100644 index 000000000..d4982a371 --- /dev/null +++ b/recipes/wip/text/rhyolite/recipe.toml @@ -0,0 +1,13 @@ +#TODO not compiled or tested +#TODO resource packaging: https://github.com/lockedmutex/rhyolite/blob/master/Cargo.toml#L43 +[source] +git = "https://github.com/lockedmutex/rhyolite" +[build] +template = "custom" +dependencies = [ + "freetype2", + "fontconfig", +] +script = """ +cookbook_cargo --profile release +""" diff --git a/recipes/wip/text/treemd/recipe.toml b/recipes/wip/text/treemd/recipe.toml new file mode 100644 index 000000000..6d3ae01b1 --- /dev/null +++ b/recipes/wip/text/treemd/recipe.toml @@ -0,0 +1,5 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/Epistates/treemd" +[build] +template = "cargo" diff --git a/recipes/wip/web/dodeca/recipe.toml b/recipes/wip/web/dodeca/recipe.toml new file mode 100644 index 000000000..39466af80 --- /dev/null +++ b/recipes/wip/web/dodeca/recipe.toml @@ -0,0 +1,8 @@ +#TODO not compiled or tested +[source] +git = "https://github.com/bearcove/dodeca" +[build] +template = "custom" +script = """ +cookbook_cargo_packages dodeca +""" From 9bb6f79c84efe41387bdd919675f960d1c2143f4 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 10 Dec 2025 03:19:52 -0300 Subject: [PATCH 18/26] Try to fix some recipes --- recipes/wip/data-integrity/b3sum/recipe.toml | 1 + .../lang/java/openjdk11-headless/recipe.toml | 20 +++++++++---------- .../lang/java/openjdk17-headless/recipe.toml | 20 +++++++++---------- .../lang/java/openjdk21-headless/recipe.toml | 20 +++++++++---------- .../lang/java/openjdk8-headless/recipe.toml | 13 ++++++++---- .../wip/libs/other/wxwidgets-gtk3/recipe.toml | 14 ++++++------- 6 files changed, 43 insertions(+), 45 deletions(-) diff --git a/recipes/wip/data-integrity/b3sum/recipe.toml b/recipes/wip/data-integrity/b3sum/recipe.toml index 44efd01d0..3ec0df134 100644 --- a/recipes/wip/data-integrity/b3sum/recipe.toml +++ b/recipes/wip/data-integrity/b3sum/recipe.toml @@ -1,6 +1,7 @@ #TODO compiled but not tested [source] git = "https://github.com/BLAKE3-team/BLAKE3" +shallow_clone = true [build] template = "custom" script = """ diff --git a/recipes/wip/dev/lang/java/openjdk11-headless/recipe.toml b/recipes/wip/dev/lang/java/openjdk11-headless/recipe.toml index af318c2d8..b24c06a02 100644 --- a/recipes/wip/dev/lang/java/openjdk11-headless/recipe.toml +++ b/recipes/wip/dev/lang/java/openjdk11-headless/recipe.toml @@ -1,17 +1,15 @@ -#TODO can't find the configure script -#TODO build instructions - https://github.com/openjdk/jdk11u/blob/master/doc/building.md +#TODO not compiled or tested +# build instructions: https://github.com/openjdk/jdk11u/blob/master/doc/building.md [source] git = "https://github.com/openjdk/jdk11u" -rev = "09b402a6bcecce976ee17ce358b0a90ea127ab69" +rev = "jdk-11.0.29-ga" +shallow_clone = true +script = "chmod a+x configure" [build] -template = "custom" +template = "configure" +configureflags = [ + "--enable-headless-only=yes", +] dependencies = [ "fontconfig", ] -script = """ -chmod a+x configure -COOKBOOK_CONFIGURE_FLAGS+=( - --enable-headless-only=yes -) -cookbook_configure -""" diff --git a/recipes/wip/dev/lang/java/openjdk17-headless/recipe.toml b/recipes/wip/dev/lang/java/openjdk17-headless/recipe.toml index 46b8b8b90..ef2d8f79a 100644 --- a/recipes/wip/dev/lang/java/openjdk17-headless/recipe.toml +++ b/recipes/wip/dev/lang/java/openjdk17-headless/recipe.toml @@ -1,17 +1,15 @@ -#TODO build instructions - https://github.com/openjdk/jdk17u/blob/master/doc/building.md -#TODO add supported autoconf options +#TODO not compiled or tested +# build instructions: https://github.com/openjdk/jdk17u/blob/master/doc/building.md [source] git = "https://github.com/openjdk/jdk17u" -rev = "b78a848cc7ae5787d9ec9ea0ce843cd63b06efec" +rev = "jdk-17.0.17-ga" +shallow_clone = true +script = "chmod a+x configure" [build] -template = "custom" +template = "configure" +configureflags = [ + "--enable-headless-only=yes", +] dependencies = [ "fontconfig", ] -script = """ -chmod a+x configure -COOKBOOK_CONFIGURE_FLAGS+=( - --enable-headless-only=yes -) -cookbook_configure -""" diff --git a/recipes/wip/dev/lang/java/openjdk21-headless/recipe.toml b/recipes/wip/dev/lang/java/openjdk21-headless/recipe.toml index bdeea3dd0..d7256e3a2 100644 --- a/recipes/wip/dev/lang/java/openjdk21-headless/recipe.toml +++ b/recipes/wip/dev/lang/java/openjdk21-headless/recipe.toml @@ -1,17 +1,15 @@ -#TODO build instructions - https://github.com/openjdk/jdk21u/blob/master/doc/building.md -#TODO can't find the configure script +#TODO not compiled or tested +# build instructions: https://github.com/openjdk/jdk21u/blob/master/doc/building.md [source] git = "https://github.com/openjdk/jdk21u" -rev = "060c4f7589e7f13febd402f4dac3320f4c032b08" +rev = "jdk-21.0.9-ga" +shallow_clone = true +script = "chmod a+x configure" [build] -template = "custom" +template = "configure" +configureflags = [ + "--enable-headless-only=yes", +] dependencies = [ "fontconfig", ] -script = """ -chmod a+x configure -COOKBOOK_CONFIGURE_FLAGS+=( - --enable-headless-only=yes -) -cookbook_configure -""" diff --git a/recipes/wip/dev/lang/java/openjdk8-headless/recipe.toml b/recipes/wip/dev/lang/java/openjdk8-headless/recipe.toml index 9261f81ea..958e8a5f0 100644 --- a/recipes/wip/dev/lang/java/openjdk8-headless/recipe.toml +++ b/recipes/wip/dev/lang/java/openjdk8-headless/recipe.toml @@ -1,10 +1,15 @@ -#TODO build instructions - https://github.com/openjdk/jdk8u/blob/master/doc/building.md -#TODO require the headless option +#TODO not compiled or tested +# build instructions: https://github.com/openjdk/jdk8u/blob/master/doc/building.md [source] git = "https://github.com/openjdk/jdk8u" -rev = "9c9d6b267c41e4c713cacc41befb66007cdb2601" +rev = "jdk8u472-ga" +shallow_clone = true +script = "chmod a+x configure" [build] -template = "custom" +template = "configure" +configureflags = [ + "--enable-headless-only=yes", +] dependencies = [ "freetype2", ] diff --git a/recipes/wip/libs/other/wxwidgets-gtk3/recipe.toml b/recipes/wip/libs/other/wxwidgets-gtk3/recipe.toml index e5f14fb3f..710c98871 100644 --- a/recipes/wip/libs/other/wxwidgets-gtk3/recipe.toml +++ b/recipes/wip/libs/other/wxwidgets-gtk3/recipe.toml @@ -1,14 +1,12 @@ -#TODO probably wrong script, see https://github.com/wxWidgets/wxWidgets/blob/master/docs/gtk/install.md +#TODO not compiled or tested +# build instructions: https://github.com/wxWidgets/wxWidgets/blob/master/docs/gtk/install.md [source] tar = "https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.4/wxWidgets-3.2.4.tar.bz2" [build] -template = "custom" +template = "configure" +configureflags = [ + "--with-gtk", +] dependencies = [ "gtk3", ] -script = """ -COOKBOOK_CONFIGURE_FLAGS+=( - --with-gtk -) -cookbook_configure -""" From 3bd3c6dcab5a4dbaeef15e175b3ec1b24e580b90 Mon Sep 17 00:00:00 2001 From: Ribbon Date: Wed, 10 Dec 2025 03:22:41 -0300 Subject: [PATCH 19/26] Rename openjdk recipes --- .../dev/lang/java/{openjdk11-headless => openjdk11}/recipe.toml | 0 .../dev/lang/java/{openjdk17-headless => openjdk17}/recipe.toml | 0 .../dev/lang/java/{openjdk21-headless => openjdk21}/recipe.toml | 0 .../wip/dev/lang/java/{openjdk8-headless => openjdk8}/recipe.toml | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename recipes/wip/dev/lang/java/{openjdk11-headless => openjdk11}/recipe.toml (100%) rename recipes/wip/dev/lang/java/{openjdk17-headless => openjdk17}/recipe.toml (100%) rename recipes/wip/dev/lang/java/{openjdk21-headless => openjdk21}/recipe.toml (100%) rename recipes/wip/dev/lang/java/{openjdk8-headless => openjdk8}/recipe.toml (100%) diff --git a/recipes/wip/dev/lang/java/openjdk11-headless/recipe.toml b/recipes/wip/dev/lang/java/openjdk11/recipe.toml similarity index 100% rename from recipes/wip/dev/lang/java/openjdk11-headless/recipe.toml rename to recipes/wip/dev/lang/java/openjdk11/recipe.toml diff --git a/recipes/wip/dev/lang/java/openjdk17-headless/recipe.toml b/recipes/wip/dev/lang/java/openjdk17/recipe.toml similarity index 100% rename from recipes/wip/dev/lang/java/openjdk17-headless/recipe.toml rename to recipes/wip/dev/lang/java/openjdk17/recipe.toml diff --git a/recipes/wip/dev/lang/java/openjdk21-headless/recipe.toml b/recipes/wip/dev/lang/java/openjdk21/recipe.toml similarity index 100% rename from recipes/wip/dev/lang/java/openjdk21-headless/recipe.toml rename to recipes/wip/dev/lang/java/openjdk21/recipe.toml diff --git a/recipes/wip/dev/lang/java/openjdk8-headless/recipe.toml b/recipes/wip/dev/lang/java/openjdk8/recipe.toml similarity index 100% rename from recipes/wip/dev/lang/java/openjdk8-headless/recipe.toml rename to recipes/wip/dev/lang/java/openjdk8/recipe.toml From a65ae558a83b17dc4b47564902e7d96e9764d48a Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 10 Dec 2025 15:27:43 +0700 Subject: [PATCH 20/26] Allow aarch64 to be dynamically linked --- src/cook/script.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/cook/script.rs b/src/cook/script.rs index 312dedd7a..fe7736829 100644 --- a/src/cook/script.rs +++ b/src/cook/script.rs @@ -12,6 +12,8 @@ function DYNAMIC_INIT { case "${TARGET}" in "x86_64-unknown-redox") ;; + "aarch64-unknown-redox") + ;; "x86_64-unknown-linux-gnu") ;; "aarch64-unknown-linux-gnu") From 6c73be90d9c7b58bfe963862e82a483909ca34ab Mon Sep 17 00:00:00 2001 From: Wildan M Date: Fri, 12 Dec 2025 00:33:26 +0700 Subject: [PATCH 21/26] Adapt redoxer daemon changes --- config/redoxer.toml | 4 ---- config/x86_64/ci.toml | 1 - recipes/core/base/recipe.toml | 3 ++- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/config/redoxer.toml b/config/redoxer.toml index 5ef92a9d7..8c50e37d5 100644 --- a/config/redoxer.toml +++ b/config/redoxer.toml @@ -9,13 +9,9 @@ ca-certificates = {} coreutils = {} extrautils = {} findutils = {} -gcc13 = {} -"gcc13.cxx" = {} -gnu-binutils = {} ion = {} netdb = {} pkgutils = {} -redoxerd = {} relibc = {} # Override to not background dhcpd diff --git a/config/x86_64/ci.toml b/config/x86_64/ci.toml index 1e904f18e..393077f61 100644 --- a/config/x86_64/ci.toml +++ b/config/x86_64/ci.toml @@ -181,7 +181,6 @@ procedural-wallpapers-rs = {} python312 = {} #qemu = {} # can be built, but not working readline = {} -redoxerd = {} redox-fatfs = {} redoxfs = {} redox-games = {} diff --git a/recipes/core/base/recipe.toml b/recipes/core/base/recipe.toml index a5dfe66ce..8e8fdf52e 100644 --- a/recipes/core/base/recipe.toml +++ b/recipes/core/base/recipe.toml @@ -38,6 +38,7 @@ BINS=( virtio-netd xhcid inputd + redoxerd ) # Add additional drivers to the list to build, that are not in drivers-initfs @@ -59,7 +60,7 @@ export CARGO_PROFILE_RELEASE_PANIC=abort $(for bin in "${BINS[@]}"; do echo "-p" "${bin}"; done) for bin in "${BINS[@]}" do - if [[ "${bin}" == "inputd" || "${bin}" == "pcid" || "${bin}" == "pcid-spawner" ]]; then + if [[ "${bin}" == "inputd" || "${bin}" == "pcid" || "${bin}" == "pcid-spawner" || "${bin}" == "redoxerd" ]]; 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" From 5a5c95a63dfc656cd9069406b8cf63765fbb38f7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 11 Dec 2025 10:59:40 -0700 Subject: [PATCH 22/26] Fix servo compilation --- recipes/wip/web/servo/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/web/servo/recipe.toml b/recipes/wip/web/servo/recipe.toml index e8d2eaac3..0759eb455 100644 --- a/recipes/wip/web/servo/recipe.toml +++ b/recipes/wip/web/servo/recipe.toml @@ -36,6 +36,7 @@ PREFIX_INCLUDE="$COOKBOOK_HOST_SYSROOT/$TARGET/include" export CLANGFLAGS="-I $PREFIX_INCLUDE/c++/13.2.0 -I $PREFIX_INCLUDE/c++/13.2.0/$TARGET -I $PREFIX_INCLUDE/c++/13.2.0/backward -I $PREFIX_INCLUDE" #Mozjs specifics +unset CC_WRAPPER export CARGO_MAKEFLAGS="-j $COOKBOOK_MAKE_JOBS" CCACHE="sccache" unset CC_WRAPPER From 70821d875f78a17f25102183ed23c0edb8045044 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 11 Dec 2025 15:34:05 -0700 Subject: [PATCH 23/26] Add drm_info --- recipes/wip/x11/drm-info/recipe.toml | 11 +++++++++++ recipes/wip/x11/drm-info/redox.patch | 12 ++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 recipes/wip/x11/drm-info/recipe.toml create mode 100644 recipes/wip/x11/drm-info/redox.patch diff --git a/recipes/wip/x11/drm-info/recipe.toml b/recipes/wip/x11/drm-info/recipe.toml new file mode 100644 index 000000000..d1885e8c5 --- /dev/null +++ b/recipes/wip/x11/drm-info/recipe.toml @@ -0,0 +1,11 @@ +[source] +tar = "https://gitlab.freedesktop.org/emersion/drm_info/-/archive/v2.9.0/drm_info-v2.9.0.tar.gz" +blake3 = "48ff592b206a85c1d946abfe2f8a4e7ef40f9f1ee7d3d5ee454a33390f86d8cb" +patches = ["redox.patch"] + +[build] +dependencies = [ + "json-c", + "libdrm", +] +template = "meson" diff --git a/recipes/wip/x11/drm-info/redox.patch b/recipes/wip/x11/drm-info/redox.patch new file mode 100644 index 000000000..06d916480 --- /dev/null +++ b/recipes/wip/x11/drm-info/redox.patch @@ -0,0 +1,12 @@ +diff -ruwN source-old/meson.build source/meson.build +--- source-old/meson.build 2025-11-16 10:35:59.000000000 -0700 ++++ source/meson.build 2025-12-11 15:29:28.845861423 -0700 +@@ -68,7 +68,7 @@ + elif libdrm.type_name() == 'internal' + fourcc_h = meson.current_source_dir() / 'subprojects/libdrm/include/drm/drm_fourcc.h' + else +- fourcc_h = libdrm.get_variable(pkgconfig: 'pc_sysrootdir') + libdrm.get_variable(pkgconfig: 'includedir') / 'libdrm/drm_fourcc.h' ++ fourcc_h = libdrm.get_variable(pkgconfig: 'includedir') / 'libdrm/drm_fourcc.h' + endif + + # The DRM_BUS_FAUX bus and its information is included in libdrm v2.4.127 From 00bb1558d7595e0fdd5b917ac03b0647623d7d03 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Fri, 12 Dec 2025 13:12:43 +0700 Subject: [PATCH 24/26] Fix toolchain extract --- mk/prefix.mk | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mk/prefix.mk b/mk/prefix.mk index 4fa0e8716..47fdd6bcd 100644 --- a/mk/prefix.mk +++ b/mk/prefix.mk @@ -175,11 +175,15 @@ $(PREFIX)/binutils-$(BINUTILS_BRANCH).tar.bz2: mv $@.partial $@ $(PREFIX)/binutils: $(PREFIX)/binutils-$(BINUTILS_BRANCH).tar.bz2 +ifeq ($(PODMAN_BUILD),1) + $(PODMAN_RUN) make $@ +else rm -rf "$@.partial" "$@" mkdir -p "$@.partial" tar --extract --file "$<" --directory "$@.partial" --no-same-owner --strip-components=1 touch "$@.partial" mv "$@.partial" "$@" +endif $(PREFIX)/binutils-install: $(PREFIX)/binutils $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) @@ -211,11 +215,15 @@ $(PREFIX)/gcc-$(GCC_BRANCH).tar.bz2: mv "$@.partial" "$@" $(PREFIX)/gcc: $(PREFIX)/gcc-$(GCC_BRANCH).tar.bz2 +ifeq ($(PODMAN_BUILD),1) + $(PODMAN_RUN) make $@ +else mkdir -p "$@.partial" tar --extract --file "$<" --directory "$@.partial" --no-same-owner --strip-components=1 cd "$@.partial" && ./contrib/download_prerequisites touch "$@.partial" mv "$@.partial" "$@" +endif $(PREFIX)/gcc-freestanding-install: $(PREFIX)/gcc | $(PREFIX)/binutils-install $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) From cea6cd882e97f16f18fe70e491f603a8d5223982 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Fri, 12 Dec 2025 16:32:14 +0700 Subject: [PATCH 25/26] Skip binstall and directly download binaries --- podman/rustinstall.sh | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/podman/rustinstall.sh b/podman/rustinstall.sh index d4ae427a9..31bd594cf 100755 --- a/podman/rustinstall.sh +++ b/podman/rustinstall.sh @@ -3,9 +3,19 @@ # This script install the Rust toolchain and the build system dependencies # in Podman after the image has been built +echo Installing rust... curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stable --profile minimal -curl -sSLf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash -cargo +stable binstall --no-confirm --force --version 0.10.0 sccache -cargo +stable binstall --no-confirm --force --version 1.42.4 just -cargo +stable binstall --no-confirm --force --version 0.29.0 cbindgen +echo Downloading sccache... +SCCACHE_URL=https://github.com/mozilla/sccache/releases/download/v0.10.0/sccache-v0.10.0-$(uname -m)-unknown-linux-musl.tar.gz +wget -qO- --show-progress $SCCACHE_URL | tar -xz -C ~/.cargo/bin --strip-components=1 --wildcards '*/sccache' + +echo Downloading just... +JUST_URL=https://github.com/casey/just/releases/download/1.45.0/just-1.45.0-$(uname -m)-unknown-linux-musl.tar.gz +wget -qO- --show-progress $JUST_URL | tar -xz -C ~/.cargo/bin --wildcards 'just' + +echo Downloading cbindgen... +CBINDGEN_NAME=$( [[ $(uname -m) = "x86_64" ]] && echo "ubuntu22.04" || echo "ubuntu22.04-aarch64" ) +CBINDGEN_URL=https://github.com/mozilla/cbindgen/releases/download/0.29.0/cbindgen-$CBINDGEN_NAME +wget -qO- --show-progress $CBINDGEN_URL > ~/.cargo/bin/cbindgen +chmod +x ~/.cargo/bin/cbindgen From 48610134939b939932db342142a50697d5c0e0cd Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Fri, 12 Dec 2025 21:58:25 +0100 Subject: [PATCH 26/26] Make it explicit that bootstrap is statically linked Even if we start using dynamic linking for the rest of initfs, bootstrap has to be statically linked as it is responsible for loading the first instance of the dynamic linker. --- recipes/core/base-initfs/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/base-initfs/recipe.toml b/recipes/core/base-initfs/recipe.toml index 2e0618185..cc9e1bbf5 100644 --- a/recipes/core/base-initfs/recipe.toml +++ b/recipes/core/base-initfs/recipe.toml @@ -106,7 +106,7 @@ 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 \ +RUSTFLAGS="$RUSTFLAGS -Ctarget-feature=+crt-static" cargo \ -Zbuild-std=core,alloc,compiler_builtins \ -Zbuild-std-features=compiler-builtins-mem build \ --target "${TARGET}" \