From 7b48083a142613c6b00b825d3f4206f825296072 Mon Sep 17 00:00:00 2001 From: Vasilito Date: Sat, 2 May 2026 22:10:43 +0100 Subject: [PATCH] fix: restore Qt producer surfaces for vectorimage chain --- recipes/wip/qt/qt3d/recipe.toml | 65 +++++++--------- recipes/wip/qt/qtdeclarative/recipe.toml | 95 ++++++++++++++---------- recipes/wip/qt/qtlottie/recipe.toml | 61 +++++++-------- recipes/wip/qt/qtshadertools/recipe.toml | 29 ++++---- recipes/wip/qt/qtsvg/recipe.toml | 42 +++++------ 5 files changed, 142 insertions(+), 150 deletions(-) diff --git a/recipes/wip/qt/qt3d/recipe.toml b/recipes/wip/qt/qt3d/recipe.toml index 44ab2959..f72f6c9e 100644 --- a/recipes/wip/qt/qt3d/recipe.toml +++ b/recipes/wip/qt/qt3d/recipe.toml @@ -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 """ diff --git a/recipes/wip/qt/qtdeclarative/recipe.toml b/recipes/wip/qt/qtdeclarative/recipe.toml index 380eb1df..712ed387 100644 --- a/recipes/wip/qt/qtdeclarative/recipe.toml +++ b/recipes/wip/qt/qtdeclarative/recipe.toml @@ -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 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 # 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" \ diff --git a/recipes/wip/qt/qtlottie/recipe.toml b/recipes/wip/qt/qtlottie/recipe.toml index 0187888f..4a94918b 100644 --- a/recipes/wip/qt/qtlottie/recipe.toml +++ b/recipes/wip/qt/qtlottie/recipe.toml @@ -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 """ diff --git a/recipes/wip/qt/qtshadertools/recipe.toml b/recipes/wip/qt/qtshadertools/recipe.toml index 82d3277b..81de54e8 100644 --- a/recipes/wip/qt/qtshadertools/recipe.toml +++ b/recipes/wip/qt/qtshadertools/recipe.toml @@ -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" diff --git a/recipes/wip/qt/qtsvg/recipe.toml b/recipes/wip/qt/qtsvg/recipe.toml index 275c0386..1756fba0 100644 --- a/recipes/wip/qt/qtsvg/recipe.toml +++ b/recipes/wip/qt/qtsvg/recipe.toml @@ -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"