cub: full AUR package manager + Phase 1-5 native build tools
cub redesign (local/recipes/system/cub/): - AUR RPC v5 client (serde_json) with search/info - ~/.cub/ user-local recipe/source/repo storage - Enhanced PKGBUILD parser: optdepends, .SRCINFO, split packages, 19 linuxism patterns - Recipe generation: host: prefix on dev-deps, shallow_clone, cargopath, installs, optional-packages - Dependency resolver: scans build errors for missing commands/headers/libs/pkgconfig, maps to packages - Dependency installation: checks installed packages, fetches AUR deps, interactive prompt - ~110 Arc→Redox dependency mappings - ratatui TUI: search, info, install, build, query views - 14 Arch-style CLI switches (-S/-Si/-Syu/-G/-R/-Q/-Qi/-Ql) - 65 tests, 0 failures, clean build Phase 1-5 native build tools (local/recipes/dev/): - P1 Substrate: tar, m4, diffutils (gnulib bypass), mkfifo kernel patch (1085 lines) - P2 Build Systems: bison, flex, meson (standalone wrapper), ninja-build, libtool - P3 Native GCC: gcc-native, binutils-native (cross-compiled for redox host) - P4 Native LLVM: llvm-native (clang + lld from monorepo) - P5 Native Rust: rust-native (rustc + cargo) - Groups: build-essential-native, dev-essential expanded Config: - redbear-mini: +7 tools (diffutils, tar, bison, flex, meson, ninja, m4) - redbear-full: +4 native tools (gcc, binutils, llvm, rust) - All recipes moved to local/ with symlinks for cookbook discovery (Red Bear policy) Docs: - BUILD-TOOLS-PORTING-PLAN.md: phased porting roadmap - CUB-WORKFLOW-ASSESSMENT.md: gap analysis and integration assessment
This commit is contained in:
@@ -0,0 +1,117 @@
|
||||
[source]
|
||||
same_as = "../../../../recipes/dev/llvm21"
|
||||
|
||||
[build]
|
||||
template = "custom"
|
||||
dependencies = [
|
||||
"llvm21",
|
||||
"llvm21.runtime",
|
||||
"llvm21.dev",
|
||||
"clang21",
|
||||
"lld21",
|
||||
"zstd",
|
||||
]
|
||||
script = """
|
||||
DYNAMIC_INIT
|
||||
ARCH="$(echo "${TARGET}" | cut -d - -f1)"
|
||||
|
||||
generate_cookbook_cmake_file "$COOKBOOK_HOST_TARGET" "" "$COOKBOOK_TOOLCHAIN" native.cmake
|
||||
|
||||
case "${ARCH}" in
|
||||
x86 | x86_64) LLVM_TARGETS_TO_BUILD="X86";;
|
||||
aarch64) LLVM_TARGETS_TO_BUILD="AArch64";;
|
||||
riscv64gc) LLVM_TARGETS_TO_BUILD="RISCV";;
|
||||
esac
|
||||
|
||||
COOKBOOK_CMAKE_FLAGS+=(
|
||||
-DLLVM_ENABLE_PROJECTS="clang;lld"
|
||||
-DLLVM_BUILD_LLVM_DYLIB=On
|
||||
-DLLVM_LINK_LLVM_DYLIB=On
|
||||
-DLLVM_INCLUDE_UTILS=On
|
||||
-DLLVM_INSTALL_UTILS=On
|
||||
-DLLVM_TARGETS_TO_BUILD="$LLVM_TARGETS_TO_BUILD"
|
||||
-DLLVM_ENABLE_ZLIB=Off
|
||||
-DLLVM_USE_STATIC_ZSTD=On
|
||||
-DLLVM_ENABLE_LIBXML2=Off
|
||||
-DCLANG_LINK_CLANG_DYLIB=ON
|
||||
-DLIBCLANG_BUILD_STATIC=1
|
||||
-DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$(realpath native.cmake)"
|
||||
-DCMAKE_CXX_FLAGS="--std=gnu++11"
|
||||
-DBUILD_SHARED_LIBS=False
|
||||
-DLLVM_BUILD_EXAMPLES=Off
|
||||
-DLLVM_BUILD_TESTS=Off
|
||||
-DLLVM_DEFAULT_TARGET_TRIPLE="${TARGET}"
|
||||
-DLLVM_ENABLE_LTO=Off
|
||||
-DLLVM_ENABLE_RTTI=On
|
||||
-DLLVM_ENABLE_THREADS=On
|
||||
-DLLVM_INCLUDE_EXAMPLES=Off
|
||||
-DLLVM_INCLUDE_TESTS=Off
|
||||
-DLLVM_OPTIMIZED_TABLEGEN=On
|
||||
-DLLVM_TARGET_ARCH=$ARCH
|
||||
-DLLVM_TOOLS_INSTALL_DIR=bin
|
||||
-DLLVM_UTILS_INSTALL_DIR=bin
|
||||
-DUNIX=1
|
||||
-DLLVM_TABLEGEN_EXE=${COOKBOOK_HOST_SYSROOT}/bin/llvm-tblgen
|
||||
-DCLANG_TABLEGEN_EXE=${COOKBOOK_HOST_SYSROOT}/bin/clang-tblgen
|
||||
)
|
||||
|
||||
COOKBOOK_SOURCE="$COOKBOOK_SOURCE/llvm"
|
||||
cookbook_cmake
|
||||
|
||||
# Create unprefixed symlinks for native use
|
||||
for tool in clang clang++ clang-cpp clang-cl clang-check clang-format clang-tidy \
|
||||
lld ld.lld ld64.lld wasm-ld \
|
||||
llvm-ar llvm-ranlib llvm-nm llvm-objdump llvm-objcopy llvm-strip \
|
||||
llvm-readelf llvm-size llvm-strings llvm-symbolizer llvm-addr2line \
|
||||
llvm-config llvm-link llvm-profdata llvm-cov \
|
||||
llvm-as llvm-dis llc opt; do
|
||||
if [ -f "${COOKBOOK_STAGE}/usr/bin/${tool}" ]; then
|
||||
: # already has unprefixed name
|
||||
elif [ -f "${COOKBOOK_STAGE}/usr/bin/${GNU_TARGET}-${tool}" ]; then
|
||||
ln -sf "${GNU_TARGET}-${tool}" "${COOKBOOK_STAGE}/usr/bin/${tool}"
|
||||
fi
|
||||
done
|
||||
|
||||
# Provide cc/c++ symlinks
|
||||
if [ -f "${COOKBOOK_STAGE}/usr/bin/clang" ]; then
|
||||
ln -sf clang "${COOKBOOK_STAGE}/usr/bin/cc"
|
||||
ln -sf clang++ "${COOKBOOK_STAGE}/usr/bin/c++"
|
||||
elif [ -f "${COOKBOOK_STAGE}/usr/bin/${GNU_TARGET}-clang" ]; then
|
||||
ln -sf "${GNU_TARGET}-clang" "${COOKBOOK_STAGE}/usr/bin/cc"
|
||||
ln -sf "${GNU_TARGET}-clang++" "${COOKBOOK_STAGE}/usr/bin/c++"
|
||||
fi
|
||||
|
||||
# Remove libtool archives
|
||||
rm -f "${COOKBOOK_STAGE}"/usr/lib/*.la
|
||||
"""
|
||||
|
||||
[package]
|
||||
description = "Native LLVM/Clang/LLD 21 toolchain for Red Bear OS"
|
||||
dependencies = ["llvm21.runtime"]
|
||||
|
||||
[[optional-packages]]
|
||||
name = "dev"
|
||||
dependencies = [".runtime"]
|
||||
files = [
|
||||
"usr/include/llvm*/**",
|
||||
"usr/include/clang*/**",
|
||||
"usr/include/lld*/**",
|
||||
"usr/lib/libLLVM*.a",
|
||||
"usr/lib/libclang*.a",
|
||||
"usr/lib/liblld*.a",
|
||||
"usr/lib/cmake/llvm/**",
|
||||
"usr/lib/cmake/clang/**",
|
||||
"usr/lib/cmake/lld/**",
|
||||
]
|
||||
|
||||
[[optional-packages]]
|
||||
name = "runtime"
|
||||
files = [
|
||||
"usr/bin/clang*",
|
||||
"usr/bin/lld*",
|
||||
"usr/bin/llvm-*",
|
||||
"usr/bin/llc",
|
||||
"usr/bin/opt",
|
||||
"usr/lib/libLLVM*.so*",
|
||||
"usr/lib/libclang*.so*",
|
||||
]
|
||||
Reference in New Issue
Block a user