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
"""