fix: restore Qt producer surfaces for vectorimage chain

This commit is contained in:
2026-05-02 22:10:43 +01:00
parent 1908d8e643
commit 7b48083a14
5 changed files with 142 additions and 150 deletions
+26 -39
View File
@@ -15,14 +15,9 @@ script = """
DYNAMIC_INIT
HOST_BUILD="${COOKBOOK_ROOT}/build/qt-host-build"
source "${COOKBOOK_ROOT}/local/scripts/lib/qt-sysroot.sh"
# Sysroot path fix: the cookbook only symlinks sysroot/{bin,include,lib,share} -> usr/
# but Qt6 cmake targets reference ${_IMPORT_PREFIX}/{plugins,mkspecs,metatypes,modules}.
for qtdir in plugins mkspecs metatypes modules; do
if [ -d "${COOKBOOK_SYSROOT}/usr/${qtdir}" ] && [ ! -e "${COOKBOOK_SYSROOT}/${qtdir}" ]; then
ln -s "usr/${qtdir}" "${COOKBOOK_SYSROOT}/${qtdir}"
fi
done
redbear_qt_link_sysroot_dirs "${COOKBOOK_SYSROOT}" plugins mkspecs metatypes modules
if [ ! -d "${COOKBOOK_SYSROOT}/lib/cmake/Qt6Quick" ] \
&& [ ! -d "${COOKBOOK_SYSROOT}/usr/lib/cmake/Qt6Quick" ]; then
@@ -45,6 +40,18 @@ fi
rm -f CMakeCache.txt
rm -rf CMakeFiles
python - <<'PY'
import os
from pathlib import Path
path = Path(os.environ["COOKBOOK_SOURCE"]) / "src/3rdparty/assimp/src/contrib/unzip/ioapi.c"
text = path.read_text()
old = 'defined(__APPLE__) || defined(IOAPI_NO_64) || defined(__HAIKU__) || defined(MINIZIP_FOPEN_NO_64)'
new = 'defined(__APPLE__) || defined(IOAPI_NO_64) || defined(__HAIKU__) || defined(MINIZIP_FOPEN_NO_64) || defined(__redox__)'
if old in text and new not in text:
text = text.replace(old, new, 1)
path.write_text(text)
PY
cmake "${COOKBOOK_SOURCE}" \
-DCMAKE_TOOLCHAIN_FILE="${COOKBOOK_ROOT}/local/recipes/qt/redox-toolchain.cmake" \
-DQT_HOST_PATH="${HOST_BUILD}" \
@@ -104,38 +111,18 @@ if [ -d "${COOKBOOK_STAGE}/usr/qml" ]; then
fi
BUILD_DIR="${COOKBOOK_BUILD}"
if [ -d "${COOKBOOK_STAGE}/usr/lib/cmake" ]; then
find "${COOKBOOK_STAGE}/usr/lib/cmake" -name '*.cmake' -exec sed -i \
"s|${BUILD_DIR}|/usr|g" {} + 2>/dev/null || true
fi
STAGE_USR="${COOKBOOK_STAGE}/usr"
STAGE_CMAKE_DIR="${STAGE_USR}/lib/cmake"
SYSROOT="${COOKBOOK_SYSROOT}"
if [ -d "${COOKBOOK_STAGE}/usr/lib/cmake" ]; then
find "${COOKBOOK_STAGE}/usr/lib/cmake" -name '*.cmake' -exec sed -i \
"s|/usr/include|${SYSROOT}/include|g" {} + 2>/dev/null || true
find "${COOKBOOK_STAGE}/usr/lib/cmake" -name '*.cmake' -exec sed -i \
"s|${COOKBOOK_SOURCE}/src/.*/meta_types/|${SYSROOT}/metatypes/|g" {} + 2>/dev/null || true
fi
if [ -d "${COOKBOOK_STAGE}/usr/include" ]; then
mkdir -p "${SYSROOT}/include"
cp -a "${COOKBOOK_STAGE}/usr/include/"* "${SYSROOT}/include/" 2>/dev/null || true
fi
if [ -d "${COOKBOOK_STAGE}/usr/lib/cmake" ]; then
mkdir -p "${SYSROOT}/lib/cmake"
cp -a "${COOKBOOK_STAGE}/usr/lib/cmake/Qt6"* "${SYSROOT}/lib/cmake/" 2>/dev/null || true
fi
mkdir -p "${SYSROOT}/lib"
cp -a "${COOKBOOK_STAGE}/usr/lib/libQt6"* "${SYSROOT}/lib/" 2>/dev/null || true
if [ -d "${COOKBOOK_STAGE}/usr/metatypes" ]; then
mkdir -p "${SYSROOT}/metatypes"
cp -a "${COOKBOOK_STAGE}/usr/metatypes/"* "${SYSROOT}/metatypes/" 2>/dev/null || true
fi
if [ -d "${COOKBOOK_STAGE}/usr/plugins" ]; then
mkdir -p "${SYSROOT}/plugins"
cp -a "${COOKBOOK_STAGE}/usr/plugins/"* "${SYSROOT}/plugins/" 2>/dev/null || true
fi
if [ -d "${COOKBOOK_STAGE}/usr/qml" ]; then
mkdir -p "${SYSROOT}/qml"
cp -a "${COOKBOOK_STAGE}/usr/qml/"* "${SYSROOT}/qml/" 2>/dev/null || true
if [ -d "${STAGE_CMAKE_DIR}" ]; then
redbear_qt_rewrite_stage_build_paths "${STAGE_USR}" "${BUILD_DIR}"
redbear_qt_rewrite_stage_include_paths "${STAGE_CMAKE_DIR}" "${SYSROOT}"
redbear_qt_rewrite_stage_lib_paths "${STAGE_CMAKE_DIR}" "${SYSROOT}"
redbear_qt_rewrite_stage_source_metatype_paths "${STAGE_CMAKE_DIR}" "${SYSROOT}" "${COOKBOOK_SOURCE}"
redbear_qt_copy_stage_qt6_cmake_to_sysroot "${STAGE_USR}" "${SYSROOT}"
fi
redbear_qt_copy_common_stage_to_sysroot "${STAGE_USR}" "${SYSROOT}"
redbear_qt_copy_optional_stage_dir_to_sysroot "${STAGE_USR}" "${SYSROOT}" metatypes
redbear_qt_copy_optional_stage_dir_to_sysroot "${STAGE_USR}" "${SYSROOT}" plugins
redbear_qt_copy_optional_stage_dir_to_sysroot "${STAGE_USR}" "${SYSROOT}" qml
"""
+54 -41
View File
@@ -9,12 +9,48 @@ template = "custom"
dependencies = [
"qtbase",
"qtshadertools",
"qtsvg",
]
script = """
DYNAMIC_INIT
HOST_BUILD="${COOKBOOK_ROOT}/build/qt-host-build"
DECL_HOST="${COOKBOOK_ROOT}/build/qt-declarative-host"
HOST_QTSVG_BUILD="${COOKBOOK_ROOT}/build/qtsvg-host-build"
source "${COOKBOOK_ROOT}/local/scripts/lib/qt-sysroot.sh"
source "${COOKBOOK_ROOT}/local/scripts/lib/qt-sysroot.sh"
# ============================================================
# Step 0: Build host qtsvg into the shared host prefix.
# quick-vectorimage in qtdeclarative requires host Qt::Svg support before
# svgtoqml / Qt6QuickTools can be generated and exported.
# ============================================================
if [ ! -d "${HOST_BUILD}/lib/cmake/Qt6Svg" ]; then
echo "=== Building qtsvg host module ==="
rm -rf "${HOST_QTSVG_BUILD}"
env \
-u CPPFLAGS \
-u LDFLAGS \
-u PKG_CONFIG_ALLOW_CROSS \
-u PKG_CONFIG_PATH \
-u PKG_CONFIG_LIBDIR \
-u PKG_CONFIG_SYSROOT_DIR \
-u CFLAGS_x86_64_unknown_redox \
-u CXXFLAGS_x86_64_unknown_redox \
-u LDFLAGS_x86_64_unknown_redox \
cmake -S "${COOKBOOK_ROOT}/recipes/wip/qt/qtsvg/source" -B "${HOST_QTSVG_BUILD}" \
-DCMAKE_C_COMPILER=/usr/bin/cc \
-DCMAKE_CXX_COMPILER=/usr/bin/c++ \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="${HOST_BUILD}" \
-DCMAKE_PREFIX_PATH="${HOST_BUILD}" \
-DQT_BUILD_EXAMPLES=OFF \
-DQT_BUILD_TESTS=OFF \
-DQT_GENERATE_SBOM=OFF \
-Wno-dev
cmake --build "${HOST_QTSVG_BUILD}" -j"${COOKBOOK_MAKE_JOBS}"
cmake --install "${HOST_QTSVG_BUILD}" --prefix "${HOST_BUILD}"
fi
# ============================================================
# Step 1: Build only the qtdeclarative host tools actually needed for cross-builds.
@@ -23,7 +59,7 @@ DECL_HOST="${COOKBOOK_ROOT}/build/qt-declarative-host"
# Install/copy the minimal host tools into the same prefix as qtbase host tools so
# QT_HOST_PATH finds both qtbase and qtdeclarative tools.
# ============================================================
if [ ! -f "${HOST_BUILD}/bin/qmlcachegen" ] || [ ! -f "${HOST_BUILD}/bin/qmlaotstats" ] || [ ! -d "${HOST_BUILD}/lib/cmake/Qt6QmlTools" ]; then
if [ ! -f "${HOST_BUILD}/bin/qmlcachegen" ] || [ ! -f "${HOST_BUILD}/bin/qmlaotstats" ] || [ ! -d "${HOST_BUILD}/lib/cmake/Qt6QmlTools" ] || [ ! -d "${HOST_BUILD}/lib/cmake/Qt6QuickTools" ] || { [ ! -f "${HOST_BUILD}/bin/svgtoqml" ] && [ ! -f "${HOST_BUILD}/libexec/svgtoqml" ]; }; then
echo "=== Building qtdeclarative host tools ==="
mkdir -p "${DECL_HOST}"
env \
@@ -47,7 +83,7 @@ if [ ! -f "${HOST_BUILD}/bin/qmlcachegen" ] || [ ! -f "${HOST_BUILD}/bin/qmlaots
-DQT_BUILD_TESTS=OFF \
-DQT_GENERATE_SBOM=OFF \
-Wno-dev
cmake --build "${DECL_HOST}" --target qmllint qmlimportscanner qmltyperegistrar qmlaotstats -j"${COOKBOOK_MAKE_JOBS}" || true
cmake --build "${DECL_HOST}" --target qmllint qmlimportscanner qmltyperegistrar qmlaotstats svgtoqml -j"${COOKBOOK_MAKE_JOBS}" || true
# Generate jsroot.qmltypes needed by qmlcachegen using the host-built qmltyperegistrar.
# Qt6 CMake rule: qmltyperegistrar --jsroot --generate-qmltypes <output>
QMLREG="${DECL_HOST}/libexec/qmltyperegistrar"
@@ -72,7 +108,7 @@ if [ ! -f "${HOST_BUILD}/bin/qmlcachegen" ] || [ ! -f "${HOST_BUILD}/bin/qmlaots
fi
mkdir -p "${HOST_BUILD}/bin" "${HOST_BUILD}/libexec" "${HOST_BUILD}/lib/cmake"
for tool in qmlcachegen qmllint qmlimportscanner qmltyperegistrar qmlaotstats; do
for tool in qmlcachegen qmllint qmlimportscanner qmltyperegistrar qmlaotstats svgtoqml; do
if [ -f "${DECL_HOST}/bin/${tool}" ]; then
cp -a "${DECL_HOST}/bin/${tool}" "${HOST_BUILD}/bin/"
elif [ -f "${DECL_HOST}/libexec/${tool}" ]; then
@@ -82,6 +118,7 @@ if [ ! -f "${HOST_BUILD}/bin/qmlcachegen" ] || [ ! -f "${HOST_BUILD}/bin/qmlaots
done
cp -a "${DECL_HOST}/lib/cmake/Qt6QmlTools" "${HOST_BUILD}/lib/cmake/" 2>/dev/null || true
cp -a "${DECL_HOST}/lib/cmake/Qt6QmlCompiler" "${HOST_BUILD}/lib/cmake/" 2>/dev/null || true
cp -a "${DECL_HOST}/lib/cmake/Qt6QuickTools" "${HOST_BUILD}/lib/cmake/" 2>/dev/null || true
fi
# ============================================================
@@ -90,14 +127,7 @@ fi
rm -f CMakeCache.txt
rm -rf CMakeFiles
# Sysroot path fix: the cookbook only symlinks sysroot/{bin,include,lib,share} → usr/
# but Qt6 cmake targets reference ${_IMPORT_PREFIX}/{plugins,mkspecs,metatypes,modules}
# which resolve to sysroot/{plugins,mkspecs,metatypes,modules} — missing the usr/ layer.
for qtdir in plugins mkspecs metatypes modules; do
if [ -d "${COOKBOOK_SYSROOT}/usr/${qtdir}" ] && [ ! -e "${COOKBOOK_SYSROOT}/${qtdir}" ]; then
ln -s "usr/${qtdir}" "${COOKBOOK_SYSROOT}/${qtdir}"
fi
done
redbear_qt_link_sysroot_dirs "${COOKBOOK_SYSROOT}" plugins mkspecs metatypes modules
# Patch masm/CheckedArithmetic.h: add missing ArithmeticOperations<unsigned, long>
# specialization for LP64 (sizeof(long) != sizeof(int)). The existing code only
@@ -184,7 +214,7 @@ cmake "${COOKBOOK_SOURCE}" \
HOST_QT6_LIBS="${DECL_HOST}/lib:${HOST_BUILD}/lib"
export LD_LIBRARY_PATH="${HOST_QT6_LIBS}:${LD_LIBRARY_PATH:-}"
cmake --build . --target Qt6Qml Qt6Quick Qt6QuickWidgets Qt6QmlModels Qt6QmlWorkerScript Qt6QmlIntegration Qt6LabsSettings Qt6QuickTest Qt6QuickControls2 Qt6QuickTemplates2 -j${COOKBOOK_MAKE_JOBS} || true
cmake --build . --target Qml Quick QuickWidgets QmlModels QmlWorkerScript QmlIntegration LabsSettings QuickControls2 QuickTemplates2 QuickVectorImageGeneratorPrivate QuickVectorImage QuickVectorImageHelpers -j${COOKBOOK_MAKE_JOBS}
cmake --build . -j${COOKBOOK_MAKE_JOBS} 2>/dev/null || echo "Some targets failed (tools/qml expected)"
# ============================================================
@@ -228,37 +258,20 @@ for lib in "${COOKBOOK_STAGE}/usr/lib/libQt6"*.so.*; do
done
find "${COOKBOOK_STAGE}/usr/plugins" -name '*.so' -exec patchelf --remove-rpath {} + 2>/dev/null || true
# CMake export fixup: replace build-tree paths with /usr
# CMake export fixup and sysroot propagation
BUILD_DIR="${COOKBOOK_BUILD}"
find "${COOKBOOK_STAGE}/usr/lib/cmake" -name '*.cmake' -exec sed -i \
"s|${BUILD_DIR}|/usr|g" {} + 2>/dev/null || true
STAGE_USR="${COOKBOOK_STAGE}/usr"
STAGE_CMAKE_DIR="${STAGE_USR}/lib/cmake"
SYSROOT="${COOKBOOK_SYSROOT}"
find "${COOKBOOK_STAGE}/usr/lib/cmake" -name '*.cmake' -exec sed -i \
"s|/usr/include|${SYSROOT}/include|g" {} + 2>/dev/null || true
find "${COOKBOOK_STAGE}/usr/lib/cmake" -name '*.cmake' -exec sed -i \
"s|/usr/lib|${SYSROOT}/lib|g" {} + 2>/dev/null || true
find "${COOKBOOK_STAGE}/usr/lib/cmake" -name '*.cmake' -exec sed -i \
"s|/usr/src|${COOKBOOK_SOURCE}/src|g" {} + 2>/dev/null || true
find "${COOKBOOK_STAGE}/usr/lib/cmake" -name '*.cmake' -exec sed -i \
"s|${COOKBOOK_SOURCE}/src/.*/meta_types/|${SYSROOT}/metatypes/|g" {} + 2>/dev/null || true
mkdir -p "${SYSROOT}/include" "${SYSROOT}/lib/cmake" "${SYSROOT}/lib"
cp -a "${COOKBOOK_STAGE}/usr/include/"* "${SYSROOT}/include/" 2>/dev/null || true
cp -a "${COOKBOOK_STAGE}/usr/lib/cmake/Qt6"* "${SYSROOT}/lib/cmake/" 2>/dev/null || true
cp -a "${COOKBOOK_STAGE}/usr/lib/libQt6"* "${SYSROOT}/lib/" 2>/dev/null || true
if [ -d "${COOKBOOK_STAGE}/usr/metatypes" ]; then
mkdir -p "${SYSROOT}/metatypes"
cp -a "${COOKBOOK_STAGE}/usr/metatypes/"* "${SYSROOT}/metatypes/" 2>/dev/null || true
fi
if [ -d "${COOKBOOK_STAGE}/usr/plugins" ]; then
mkdir -p "${SYSROOT}/plugins"
cp -a "${COOKBOOK_STAGE}/usr/plugins/"* "${SYSROOT}/plugins/" 2>/dev/null || true
fi
if [ -d "${COOKBOOK_STAGE}/usr/qml" ]; then
mkdir -p "${SYSROOT}/qml"
cp -a "${COOKBOOK_STAGE}/usr/qml/"* "${SYSROOT}/qml/" 2>/dev/null || true
fi
redbear_qt_rewrite_stage_build_paths "${STAGE_USR}" "${BUILD_DIR}"
redbear_qt_rewrite_stage_include_paths "${STAGE_CMAKE_DIR}" "${SYSROOT}"
redbear_qt_rewrite_stage_lib_paths "${STAGE_CMAKE_DIR}" "${SYSROOT}"
redbear_qt_rewrite_stage_source_metatype_paths "${STAGE_CMAKE_DIR}" "${SYSROOT}" "${COOKBOOK_SOURCE}"
redbear_qt_copy_common_stage_to_sysroot "${STAGE_USR}" "${SYSROOT}"
redbear_qt_copy_stage_qt6_cmake_to_sysroot "${STAGE_USR}" "${SYSROOT}"
redbear_qt_copy_optional_stage_dir_to_sysroot "${STAGE_USR}" "${SYSROOT}" metatypes
redbear_qt_copy_optional_stage_dir_to_sysroot "${STAGE_USR}" "${SYSROOT}" plugins
redbear_qt_copy_optional_stage_dir_to_sysroot "${STAGE_USR}" "${SYSROOT}" qml
for stdlib in \
"${COOKBOOK_STAGE}/usr/include/stdlib.h" \
+25 -36
View File
@@ -3,6 +3,7 @@
[source]
tar = "https://download.qt.io/official_releases/qt/6.11/6.11.0/submodules/qtlottie-everywhere-src-6.11.0.tar.xz"
blake3 = "03ec625fe5fbbc072c9d0ffcba49b31c8213945c8797f1c7b46923c9c045f2b1"
[build]
template = "custom"
@@ -13,6 +14,7 @@ script = """
DYNAMIC_INIT
HOST_BUILD="${COOKBOOK_ROOT}/build/qt-host-build"
source "${COOKBOOK_ROOT}/local/scripts/lib/qt-sysroot.sh"
# Sysroot path fix: the cookbook only symlinks sysroot/{bin,include,lib,share} -> usr/
# but Qt6 cmake targets reference ${_IMPORT_PREFIX}/{plugins,mkspecs,metatypes,modules}.
@@ -31,6 +33,16 @@ if [ ! -d "${COOKBOOK_SYSROOT}/lib/cmake/Qt6Quick" ] \
exit 1
fi
# Redox Qt stack currently lacks Qt6QuickVectorImageGeneratorPrivate.
# Disable the optional lottietoqml tool and vector image plugin slices that require it,
# while keeping the core runtime library and QML import buildable.
sed -i 's|^include("${CMAKE_CURRENT_LIST_DIR}/tools/lottietoqml/Qt6LottieToQmlMacros.cmake")|# disabled for Redox: requires Qt6QuickVectorImageGeneratorPrivate|' \
"${COOKBOOK_SOURCE}/CMakeLists.txt" 2>/dev/null || true
sed -i 's|^add_subdirectory(lottietoqml)|# disabled for Redox: requires Qt6QuickVectorImageGeneratorPrivate|' \
"${COOKBOOK_SOURCE}/tools/CMakeLists.txt" 2>/dev/null || true
sed -i 's|^add_subdirectory(vectorimageformats)|# disabled for Redox: requires Qt6QuickVectorImageGeneratorPrivate|' \
"${COOKBOOK_SOURCE}/src/plugins/CMakeLists.txt" 2>/dev/null || true
rm -f CMakeCache.txt
rm -rf CMakeFiles
@@ -92,42 +104,19 @@ if [ -d "${COOKBOOK_STAGE}/usr/qml" ]; then
fi
BUILD_DIR="${COOKBOOK_BUILD}"
if [ -d "${COOKBOOK_STAGE}/usr/lib/cmake" ]; then
find "${COOKBOOK_STAGE}/usr/lib/cmake" -name '*.cmake' -exec sed -i \
"s|${BUILD_DIR}|/usr|g" {} + 2>/dev/null || true
fi
STAGE_USR="${COOKBOOK_STAGE}/usr"
STAGE_CMAKE_DIR="${STAGE_USR}/lib/cmake"
SYSROOT="${COOKBOOK_SYSROOT}"
if [ -d "${COOKBOOK_STAGE}/usr/lib/cmake" ]; then
find "${COOKBOOK_STAGE}/usr/lib/cmake" -name '*.cmake' -exec sed -i \
"s|/usr/include|${SYSROOT}/include|g" {} + 2>/dev/null || true
find "${COOKBOOK_STAGE}/usr/lib/cmake" -name '*.cmake' -exec sed -i \
"s|/usr/lib|${SYSROOT}/lib|g" {} + 2>/dev/null || true
find "${COOKBOOK_STAGE}/usr/lib/cmake" -name '*.cmake' -exec sed -i \
"s|/usr/src/.*/meta_types/|${SYSROOT}/metatypes/|g" {} + 2>/dev/null || true
find "${COOKBOOK_STAGE}/usr/lib/cmake" -name '*.cmake' -exec sed -i \
"s|${COOKBOOK_SOURCE}/src/.*/meta_types/|${SYSROOT}/metatypes/|g" {} + 2>/dev/null || true
fi
if [ -d "${COOKBOOK_STAGE}/usr/include" ]; then
mkdir -p "${SYSROOT}/include"
cp -a "${COOKBOOK_STAGE}/usr/include/"* "${SYSROOT}/include/" 2>/dev/null || true
fi
if [ -d "${COOKBOOK_STAGE}/usr/lib/cmake" ]; then
mkdir -p "${SYSROOT}/lib/cmake"
cp -a "${COOKBOOK_STAGE}/usr/lib/cmake/Qt6"* "${SYSROOT}/lib/cmake/" 2>/dev/null || true
fi
mkdir -p "${SYSROOT}/lib"
cp -a "${COOKBOOK_STAGE}/usr/lib/libQt6"* "${SYSROOT}/lib/" 2>/dev/null || true
if [ -d "${COOKBOOK_STAGE}/usr/plugins" ]; then
mkdir -p "${SYSROOT}/plugins"
cp -a "${COOKBOOK_STAGE}/usr/plugins/"* "${SYSROOT}/plugins/" 2>/dev/null || true
fi
if [ -d "${COOKBOOK_STAGE}/usr/qml" ]; then
mkdir -p "${SYSROOT}/qml"
cp -a "${COOKBOOK_STAGE}/usr/qml/"* "${SYSROOT}/qml/" 2>/dev/null || true
fi
if [ -d "${COOKBOOK_STAGE}/usr/metatypes" ]; then
mkdir -p "${SYSROOT}/metatypes"
cp -a "${COOKBOOK_STAGE}/usr/metatypes/"* "${SYSROOT}/metatypes/" 2>/dev/null || true
if [ -d "${STAGE_CMAKE_DIR}" ]; then
redbear_qt_rewrite_stage_build_paths "${STAGE_USR}" "${BUILD_DIR}"
redbear_qt_rewrite_stage_include_paths "${STAGE_CMAKE_DIR}" "${SYSROOT}"
redbear_qt_rewrite_stage_lib_paths "${STAGE_CMAKE_DIR}" "${SYSROOT}"
redbear_qt_rewrite_usr_src_metatype_paths "${STAGE_CMAKE_DIR}" "${SYSROOT}"
redbear_qt_rewrite_stage_source_metatype_paths "${STAGE_CMAKE_DIR}" "${SYSROOT}" "${COOKBOOK_SOURCE}"
redbear_qt_copy_stage_qt6_cmake_to_sysroot "${STAGE_USR}" "${SYSROOT}"
fi
redbear_qt_copy_common_stage_to_sysroot "${STAGE_USR}" "${SYSROOT}"
redbear_qt_copy_optional_stage_dir_to_sysroot "${STAGE_USR}" "${SYSROOT}" plugins
redbear_qt_copy_optional_stage_dir_to_sysroot "${STAGE_USR}" "${SYSROOT}" qml
redbear_qt_copy_optional_stage_dir_to_sysroot "${STAGE_USR}" "${SYSROOT}" metatypes
"""
+16 -13
View File
@@ -10,6 +10,8 @@ dependencies = [
script = """
DYNAMIC_INIT
source "${COOKBOOK_ROOT}/local/scripts/lib/qt-sysroot.sh"
HOST_BUILD="${COOKBOOK_ROOT}/build/qt-host-build"
SHADER_HOST="${COOKBOOK_ROOT}/build/qt-shadertools-host"
SHADER_HOST_SRC="${COOKBOOK_ROOT}/build/qt-shadertools-host-src"
@@ -232,21 +234,21 @@ for lib in "${COOKBOOK_STAGE}/usr/lib/libQt6"*.so.*; do
done
find "${COOKBOOK_STAGE}/usr/plugins" -name '*.so' -exec patchelf --remove-rpath {} + 2>/dev/null || true
# CMake export fixup: replace build-tree paths with /usr
# CMake export fixup and sysroot propagation for downstream Qt modules
BUILD_DIR="${COOKBOOK_BUILD}"
find "${COOKBOOK_STAGE}/usr/lib/cmake" -name '*.cmake' -exec sed -i \
"s|${BUILD_DIR}|/usr|g" {} + 2>/dev/null || true
# Sysroot propagation for downstream Qt modules
STAGE_USR="${COOKBOOK_STAGE}/usr"
SYSROOT="${COOKBOOK_SYSROOT}"
find "${COOKBOOK_STAGE}/usr/lib/cmake/Qt6ShaderTools" -name '*.cmake' -exec sed -i \
"s|/usr/include|${SYSROOT}/include|g" {} + 2>/dev/null || true
mkdir -p "${SYSROOT}/include"
cp -a "${COOKBOOK_STAGE}/usr/include/"* "${SYSROOT}/include/" 2>/dev/null || true
mkdir -p "${SYSROOT}/lib/cmake/Qt6ShaderTools"
cp -a "${COOKBOOK_STAGE}/usr/lib/cmake/Qt6ShaderTools/"* "${SYSROOT}/lib/cmake/Qt6ShaderTools/" 2>/dev/null || true
mkdir -p "${SYSROOT}/lib"
cp -a "${COOKBOOK_STAGE}/usr/lib/libQt6"* "${SYSROOT}/lib/" 2>/dev/null || true
redbear_qt_rewrite_stage_build_paths "${STAGE_USR}" "${BUILD_DIR}"
redbear_qt_rewrite_stage_include_paths "${STAGE_USR}/lib/cmake/Qt6ShaderTools" "${SYSROOT}"
redbear_qt_rewrite_usr_src_metatype_paths "${STAGE_USR}/lib/cmake/Qt6ShaderTools" "${SYSROOT}"
redbear_qt_rewrite_stage_lib_paths "${STAGE_USR}/lib/cmake/Qt6ShaderTools" "${SYSROOT}"
redbear_qt_rewrite_stage_include_paths "${STAGE_USR}/lib/cmake/Qt6ShaderToolsPrivate" "${SYSROOT}"
redbear_qt_rewrite_usr_src_metatype_paths "${STAGE_USR}/lib/cmake/Qt6ShaderToolsPrivate" "${SYSROOT}"
redbear_qt_rewrite_stage_lib_paths "${STAGE_USR}/lib/cmake/Qt6ShaderToolsPrivate" "${SYSROOT}"
redbear_qt_rewrite_stage_path_literal "${STAGE_USR}/lib/cmake/Qt6ShaderToolsPrivate" "/usr/src/shadertools" "${SYSROOT}/include/QtShaderTools"
redbear_qt_copy_common_stage_to_sysroot "${STAGE_USR}" "${SYSROOT}"
redbear_qt_copy_stage_cmake_subdir_to_sysroot "${STAGE_USR}" "${SYSROOT}" "Qt6ShaderTools"
redbear_qt_copy_stage_cmake_subdir_to_sysroot "${STAGE_USR}" "${SYSROOT}" "Qt6ShaderToolsPrivate"
# Ensure qsb is staged for downstream consumers.
if [ -f "${HOST_BUILD}/bin/qsb" ]; then
@@ -258,3 +260,4 @@ fi
[source]
tar = "https://download.qt.io/official_releases/qt/6.11/6.11.0/submodules/qtshadertools-everywhere-src-6.11.0.tar.xz"
blake3 = "7d11bdaaeb7f823e0d168d0864413e76274e110ccdab499ae20479d1942198b9"
+21 -21
View File
@@ -9,18 +9,11 @@ script = """
DYNAMIC_INIT
HOST_BUILD="${COOKBOOK_ROOT}/build/qt-host-build"
source "${COOKBOOK_ROOT}/local/scripts/lib/qt-sysroot.sh"
# Sysroot path fix: same as qtdeclarative — cookbook only symlinks
# sysroot/{bin,include,lib,share} but Qt6 cmake targets reference
# ${_IMPORT_PREFIX}/{plugins,mkspecs,metatypes,modules}.
for qtdir in plugins mkspecs metatypes modules; do
if [ -d "${COOKBOOK_SYSROOT}/usr/${qtdir}" ] && [ ! -e "${COOKBOOK_SYSROOT}/${qtdir}" ]; then
ln -s "usr/${qtdir}" "${COOKBOOK_SYSROOT}/${qtdir}"
fi
done
redbear_qt_link_sysroot_dirs "${COOKBOOK_SYSROOT}" plugins mkspecs metatypes modules
rm -f CMakeCache.txt
rm -rf CMakeFiles
redbear_qt_reset_cmake_cache_dir
cmake "${COOKBOOK_SOURCE}" \
-DCMAKE_TOOLCHAIN_FILE="${COOKBOOK_ROOT}/local/recipes/qt/redox-toolchain.cmake" \
@@ -60,6 +53,8 @@ if [ -d "plugins" ]; then
mkdir -p "${COOKBOOK_STAGE}/usr/plugins"
cp -a plugins/* "${COOKBOOK_STAGE}/usr/plugins/" 2>/dev/null || true
fi
mkdir -p "${COOKBOOK_STAGE}/usr/metatypes"
find . -path '*/meta_types/*.json' -type f -exec cp -an {} "${COOKBOOK_STAGE}/usr/metatypes/" \\; 2>/dev/null || true
for lib in "${COOKBOOK_STAGE}/usr/lib/libQt6"*.so.*; do
[ -f "${lib}" ] || continue
@@ -68,19 +63,24 @@ done
find "${COOKBOOK_STAGE}/usr/plugins" -name '*.so' -exec patchelf --remove-rpath {} + 2>/dev/null || true
BUILD_DIR="${COOKBOOK_BUILD}"
find "${COOKBOOK_STAGE}/usr/lib/cmake" -name '*.cmake' -exec sed -i \
"s|${BUILD_DIR}|/usr|g" {} + 2>/dev/null || true
STAGE_USR="${COOKBOOK_STAGE}/usr"
SYSROOT="${COOKBOOK_SYSROOT}"
find "${COOKBOOK_STAGE}/usr/lib/cmake/Qt6Svg" -name '*.cmake' -exec sed -i \
"s|/usr/include|${SYSROOT}/include|g" {} + 2>/dev/null || true
mkdir -p "${SYSROOT}/include"
cp -a "${COOKBOOK_STAGE}/usr/include/"* "${SYSROOT}/include/" 2>/dev/null || true
mkdir -p "${SYSROOT}/lib/cmake/Qt6Svg"
cp -a "${COOKBOOK_STAGE}/usr/lib/cmake/Qt6Svg/"* "${SYSROOT}/lib/cmake/Qt6Svg/" 2>/dev/null || true
mkdir -p "${SYSROOT}/lib"
cp -a "${COOKBOOK_STAGE}/usr/lib/libQt6"* "${SYSROOT}/lib/" 2>/dev/null || true
redbear_qt_rewrite_stage_build_paths "${STAGE_USR}" "${BUILD_DIR}"
redbear_qt_rewrite_stage_include_paths "${STAGE_USR}/lib/cmake/Qt6Svg" "${SYSROOT}"
redbear_qt_rewrite_usr_src_metatype_paths "${STAGE_USR}/lib/cmake/Qt6Svg" "${SYSROOT}"
redbear_qt_rewrite_stage_lib_paths "${STAGE_USR}/lib/cmake/Qt6Svg" "${SYSROOT}"
redbear_qt_rewrite_stage_include_paths "${STAGE_USR}/lib/cmake/Qt6SvgPrivate" "${SYSROOT}"
redbear_qt_rewrite_stage_lib_paths "${STAGE_USR}/lib/cmake/Qt6SvgPrivate" "${SYSROOT}"
redbear_qt_rewrite_usr_src_metatype_paths "${STAGE_USR}/lib/cmake/Qt6SvgWidgets" "${SYSROOT}"
redbear_qt_rewrite_stage_lib_paths "${STAGE_USR}/lib/cmake/Qt6SvgWidgets" "${SYSROOT}"
redbear_qt_rewrite_stage_path_literal "${STAGE_USR}/lib/cmake/Qt6SvgPrivate" "/usr/src/svg" "${SYSROOT}/include/QtSvg"
redbear_qt_copy_common_stage_to_sysroot "${STAGE_USR}" "${SYSROOT}"
redbear_qt_copy_stage_cmake_subdir_to_sysroot "${STAGE_USR}" "${SYSROOT}" "Qt6Svg"
redbear_qt_copy_stage_cmake_subdir_to_sysroot "${STAGE_USR}" "${SYSROOT}" "Qt6SvgPrivate"
redbear_qt_copy_stage_cmake_subdir_to_sysroot "${STAGE_USR}" "${SYSROOT}" "Qt6SvgWidgets"
redbear_qt_copy_optional_stage_dir_to_sysroot "${STAGE_USR}" "${SYSROOT}" metatypes
"""
[source]
tar = "https://download.qt.io/official_releases/qt/6.11/6.11.0/submodules/qtsvg-everywhere-src-6.11.0.tar.xz"
blake3 = "b7825c7971c67c04993ac2d3bdb72e403e8848e1696cdd33fb3b5034730e491c"