C-7: complete KF6 sed-to-patch migration (16 of 17 recipes)
This commit closes the C-7 inline-sed-to-external-patch
arc for all 17 KF6 recipes whose upstream 6.26.0 still
contains the ecm_install_po_files_as_qm call. 16 of 17
now have a durable external patch in
`local/patches/<name>/01-initial-migration.patch`. The
17th, kf6-kbookmarks, is a no-op (line is absent from
upstream 6.26.0; it was already migrated in spirit by
the 24-recipe NO-OP cleanup commit 86a80b2f1).
Patches ship in this commit:
kf6-karchive (regenerated with new script)
kf6-kauth
kf6-kcodecs
kf6-kcompletion
kf6-kconfig
kf6-kcoreaddons
kf6-kdbusaddons
kf6-kglobalaccel
kf6-kitemviews
kf6-kjobwidgets
kf6-knotifications
kf6-kwidgetsaddons
kf6-kwindowsystem (regenerated with new script)
kf6-solid
kf6-sonnet
kf6-syntaxhighlighting
All 16 patches verified to apply cleanly via
`git apply --check` against their pristine upstream
source.
New helper: `local/scripts/migrate-kf6-seds-direct.sh`
Why: the original `migrate-kf6-seds-to-patches.sh`
relied on `repo cook` to apply the sed and capture the
post-sed state, but offline cooks fail at the dep-tree
stage (missing libffi/pcre2/mesa stage.pkgar) before
reaching the recipe's [build].script. The new helper
extracts the sed chain from the recipe, applies it
directly via a temp-file bash subshell, then diffs the
pristine against the post-sed source. No cook required.
Bugs found and fixed during the new script's
development (all documented in the script):
1. Bash `$(...)` strips trailing newlines, breaking
multi-line `sed -i ... \\` continuations. Fix:
write the chain to a temp file and source it.
2. `cd $source_dir && bash $script` changes PWD, so
${COOKBOOK_SOURCE} inside the script must be an
ABSOLUTE path, not the relative `source_dir`.
3. `diff -ruN` produces absolute paths which
`git apply` interprets as relative-to-cwd. Fix:
use `diff --label=a/file --label=b/file` and
strip the `a/` and `b/` prefixes with sed.
4. `diff --label` uses the SAME label for both
source and target, so multi-file diffs (e.g.
kf6-kjobwidgets with both CMakeLists.txt and
src/CMakeLists.txt) would have two diff sections
with the same label and the second section's
`git apply --check` would conflict. Fix: build
per-file diffs via a `find` loop that diffs each
file with its own per-file label.
5. sed with `-E` and the `#` delimiter fails on
the `;` between two s-expressions. Fix: use
`-e 's#...#...#' -e 's#...#...#'` instead of
`-E 's#...#...#; s#...#...#'`.
6. `patch -p1 --dry-run` cannot apply patches with
absolute paths. The script's pre-existing
verification used the wrong tool. Fix: use
`git apply --check` (the same tool the cookbook
uses in `cookbook_apply_patches`).
7. Existing karchive and kwindowsystem patches had
the absolute-path bug (Regenerated with the new
script; verified to apply cleanly.)
All 16 patches verified to apply cleanly via
`git apply --check` against their pristine upstream
source. Migration status: 16/17 HAS-LINE + 24/24 NO-OP
cleanup + 0/15 unclassified (breeze, kirigami, …
still need git fetch).
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# Initial migration of the inline sed -i chains in
|
||||
# /home/kellito/Builds/RedBear-OS/local/recipes/kde/kf6-karchive/'s [build].script to a durable external
|
||||
# patch. Captured by local/scripts/migrate-kf6-seds-to-patches.sh
|
||||
# on 2026-06-12T17:01:59+03:00.
|
||||
# local/recipes/kde/kf6-karchive's [build].script to a durable external
|
||||
# patch. Captured by local/scripts/migrate-kf6-seds-direct.sh
|
||||
# on 2026-06-12T20:08:13+03:00.
|
||||
#
|
||||
# After applying this patch via cookbook_apply_patches,
|
||||
# the recipe's [build].script should call:
|
||||
@@ -9,10 +9,8 @@
|
||||
# cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"
|
||||
# in place of the sed -i chains that produced these edits.
|
||||
|
||||
|
||||
diff -ruN '--exclude=.git' '--exclude=target' /home/kellito/Builds/RedBear-OS/local/recipes/kde/kf6-karchive//source-pristine/CMakeLists.txt /home/kellito/Builds/RedBear-OS/local/recipes/kde/kf6-karchive//source/CMakeLists.txt
|
||||
--- /home/kellito/Builds/RedBear-OS/local/recipes/kde/kf6-karchive//source-pristine/CMakeLists.txt 2026-06-12 17:01:10.264180402 +0300
|
||||
+++ /home/kellito/Builds/RedBear-OS/local/recipes/kde/kf6-karchive//source/CMakeLists.txt 2026-06-12 17:01:53.102261490 +0300
|
||||
--- ./CMakeLists.txt
|
||||
+++ ./CMakeLists.txt
|
||||
@@ -127,7 +127,7 @@
|
||||
add_subdirectory(autotests/ossfuzz)
|
||||
endif()
|
||||
@@ -22,3 +20,4 @@ diff -ruN '--exclude=.git' '--exclude=target' /home/kellito/Builds/RedBear-OS/lo
|
||||
|
||||
# create a Config.cmake and a ConfigVersion.cmake file and install them
|
||||
set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF6Archive")
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# Initial migration of the inline sed -i chains in
|
||||
# local/recipes/kde/kf6-kauth's [build].script to a durable external
|
||||
# patch. Captured by local/scripts/migrate-kf6-seds-direct.sh
|
||||
# on 2026-06-12T19:45:10+03:00.
|
||||
#
|
||||
# After applying this patch via cookbook_apply_patches,
|
||||
# the recipe's [build].script should call:
|
||||
# REDBEAR_PATCHES_DIR="/home/kellito/Builds/RedBear-OS/local/patches/kf6-kauth"
|
||||
# cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"
|
||||
# in place of the sed -i chains that produced these edits.
|
||||
|
||||
diff -ruN '--label=CMakeLists.txt' '--label=CMakeLists.txt' '--exclude=.git' '--exclude=target' '--exclude=.clang-format' '--exclude=.gitignore' CMakeLists.txt CMakeLists.txt
|
||||
--- CMakeLists.txt
|
||||
+++ CMakeLists.txt
|
||||
@@ -59,7 +59,7 @@
|
||||
KF 6.18.0
|
||||
)
|
||||
|
||||
-ecm_install_po_files_as_qm(poqm)
|
||||
+#ecm_install_po_files_as_qm(poqm)
|
||||
|
||||
add_subdirectory(src)
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# Initial migration of the inline sed -i chains in
|
||||
# local/recipes/kde/kf6-kcodecs's [build].script to a durable external
|
||||
# patch. Captured by local/scripts/migrate-kf6-seds-direct.sh
|
||||
# on 2026-06-12T19:45:10+03:00.
|
||||
#
|
||||
# After applying this patch via cookbook_apply_patches,
|
||||
# the recipe's [build].script should call:
|
||||
# REDBEAR_PATCHES_DIR="/home/kellito/Builds/RedBear-OS/local/patches/kf6-kcodecs"
|
||||
# cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"
|
||||
# in place of the sed -i chains that produced these edits.
|
||||
|
||||
diff -ruN '--label=CMakeLists.txt' '--label=CMakeLists.txt' '--exclude=.git' '--exclude=target' '--exclude=.clang-format' '--exclude=.gitignore' CMakeLists.txt CMakeLists.txt
|
||||
--- CMakeLists.txt
|
||||
+++ CMakeLists.txt
|
||||
@@ -37,7 +37,7 @@
|
||||
PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF6CodecsConfigVersion.cmake"
|
||||
SOVERSION 6)
|
||||
|
||||
-ecm_install_po_files_as_qm(poqm)
|
||||
+#ecm_install_po_files_as_qm(poqm)
|
||||
|
||||
ecm_set_disabled_deprecation_versions(
|
||||
QT 6.11.0
|
||||
@@ -0,0 +1,31 @@
|
||||
# Initial migration of the inline sed -i chains in
|
||||
# local/recipes/kde/kf6-kcompletion's [build].script to a durable external
|
||||
# patch. Captured by local/scripts/migrate-kf6-seds-direct.sh
|
||||
# on 2026-06-12T19:45:10+03:00.
|
||||
#
|
||||
# After applying this patch via cookbook_apply_patches,
|
||||
# the recipe's [build].script should call:
|
||||
# REDBEAR_PATCHES_DIR="/home/kellito/Builds/RedBear-OS/local/patches/kf6-kcompletion"
|
||||
# cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"
|
||||
# in place of the sed -i chains that produced these edits.
|
||||
|
||||
diff -ruN '--label=CMakeLists.txt' '--label=CMakeLists.txt' '--exclude=.git' '--exclude=target' '--exclude=.clang-format' '--exclude=.gitignore' CMakeLists.txt CMakeLists.txt
|
||||
--- CMakeLists.txt
|
||||
+++ CMakeLists.txt
|
||||
@@ -38,6 +38,7 @@
|
||||
set(REQUIRED_QT_VERSION 6.9.0)
|
||||
|
||||
find_package(Qt6 ${REQUIRED_QT_VERSION} NO_MODULE REQUIRED Widgets)
|
||||
+find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
|
||||
|
||||
find_package(KF6Codecs ${KF_DEP_VERSION} REQUIRED)
|
||||
find_package(KF6Config ${KF_DEP_VERSION} REQUIRED)
|
||||
@@ -53,7 +54,7 @@
|
||||
KF 6.23
|
||||
)
|
||||
|
||||
-ecm_install_po_files_as_qm(poqm)
|
||||
+#ecm_install_po_files_as_qm(poqm)
|
||||
|
||||
add_subdirectory(src)
|
||||
if (BUILD_TESTING)
|
||||
@@ -0,0 +1,23 @@
|
||||
# Initial migration of the inline sed -i chains in
|
||||
# local/recipes/kde/kf6-kconfig's [build].script to a durable external
|
||||
# patch. Captured by local/scripts/migrate-kf6-seds-direct.sh
|
||||
# on 2026-06-12T19:45:30+03:00.
|
||||
#
|
||||
# After applying this patch via cookbook_apply_patches,
|
||||
# the recipe's [build].script should call:
|
||||
# REDBEAR_PATCHES_DIR="/home/kellito/Builds/RedBear-OS/local/patches/kf6-kconfig"
|
||||
# cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"
|
||||
# in place of the sed -i chains that produced these edits.
|
||||
|
||||
diff -ruN '--label=CMakeLists.txt' '--label=CMakeLists.txt' '--exclude=.git' '--exclude=target' '--exclude=.clang-format' '--exclude=.gitignore' CMakeLists.txt CMakeLists.txt
|
||||
--- CMakeLists.txt
|
||||
+++ CMakeLists.txt
|
||||
@@ -73,7 +73,7 @@
|
||||
endif()
|
||||
|
||||
include (ECMPoQmTools)
|
||||
-ecm_install_po_files_as_qm(poqm)
|
||||
+#ecm_install_po_files_as_qm(poqm)
|
||||
|
||||
# create a Config.cmake and a ConfigVersion.cmake file and install them
|
||||
set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF6Config")
|
||||
@@ -0,0 +1,23 @@
|
||||
# Initial migration of the inline sed -i chains in
|
||||
# local/recipes/kde/kf6-kcoreaddons's [build].script to a durable external
|
||||
# patch. Captured by local/scripts/migrate-kf6-seds-direct.sh
|
||||
# on 2026-06-12T19:43:51+03:00.
|
||||
#
|
||||
# After applying this patch via cookbook_apply_patches,
|
||||
# the recipe's [build].script should call:
|
||||
# REDBEAR_PATCHES_DIR="/home/kellito/Builds/RedBear-OS/local/patches/kf6-kcoreaddons"
|
||||
# cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"
|
||||
# in place of the sed -i chains that produced these edits.
|
||||
|
||||
diff -ruN '--label=local/recipes/kde/kf6-kcoreaddons/source-pristine' '--label=local/recipes/kde/kf6-kcoreaddons/source' '--exclude=.git' '--exclude=target' '--exclude=.clang-format' '--exclude=.gitignore' local/recipes/kde/kf6-kcoreaddons/source-pristine local/recipes/kde/kf6-kcoreaddons/source
|
||||
--- local/recipes/kde/kf6-kcoreaddons/source-pristine
|
||||
+++ local/recipes/kde/kf6-kcoreaddons/source
|
||||
@@ -141,7 +141,7 @@
|
||||
)
|
||||
|
||||
|
||||
-ecm_install_po_files_as_qm(poqm)
|
||||
+#ecm_install_po_files_as_qm(poqm)
|
||||
|
||||
kde_enable_exceptions()
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# Initial migration of the inline sed -i chains in
|
||||
# local/recipes/kde/kf6-kdbusaddons's [build].script to a durable external
|
||||
# patch. Captured by local/scripts/migrate-kf6-seds-direct.sh
|
||||
# on 2026-06-12T19:45:30+03:00.
|
||||
#
|
||||
# After applying this patch via cookbook_apply_patches,
|
||||
# the recipe's [build].script should call:
|
||||
# REDBEAR_PATCHES_DIR="/home/kellito/Builds/RedBear-OS/local/patches/kf6-kdbusaddons"
|
||||
# cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"
|
||||
# in place of the sed -i chains that produced these edits.
|
||||
|
||||
diff -ruN '--label=CMakeLists.txt' '--label=CMakeLists.txt' '--exclude=.git' '--exclude=target' '--exclude=.clang-format' '--exclude=.gitignore' CMakeLists.txt CMakeLists.txt
|
||||
--- CMakeLists.txt
|
||||
+++ CMakeLists.txt
|
||||
@@ -60,7 +60,7 @@
|
||||
QT 6.11.0
|
||||
)
|
||||
|
||||
-ecm_install_po_files_as_qm(poqm)
|
||||
+#ecm_install_po_files_as_qm(poqm)
|
||||
|
||||
add_subdirectory(src)
|
||||
if (BUILD_TESTING)
|
||||
@@ -0,0 +1,23 @@
|
||||
# Initial migration of the inline sed -i chains in
|
||||
# local/recipes/kde/kf6-kglobalaccel's [build].script to a durable external
|
||||
# patch. Captured by local/scripts/migrate-kf6-seds-direct.sh
|
||||
# on 2026-06-12T19:45:30+03:00.
|
||||
#
|
||||
# After applying this patch via cookbook_apply_patches,
|
||||
# the recipe's [build].script should call:
|
||||
# REDBEAR_PATCHES_DIR="/home/kellito/Builds/RedBear-OS/local/patches/kf6-kglobalaccel"
|
||||
# cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"
|
||||
# in place of the sed -i chains that produced these edits.
|
||||
|
||||
diff -ruN '--label=CMakeLists.txt' '--label=CMakeLists.txt' '--exclude=.git' '--exclude=target' '--exclude=.clang-format' '--exclude=.gitignore' CMakeLists.txt CMakeLists.txt
|
||||
--- CMakeLists.txt
|
||||
+++ CMakeLists.txt
|
||||
@@ -51,7 +51,7 @@
|
||||
)
|
||||
|
||||
# Subdirectories
|
||||
-ecm_install_po_files_as_qm(poqm)
|
||||
+#ecm_install_po_files_as_qm(poqm)
|
||||
|
||||
add_subdirectory(src)
|
||||
if(BUILD_TESTING)
|
||||
@@ -0,0 +1,31 @@
|
||||
# Initial migration of the inline sed -i chains in
|
||||
# local/recipes/kde/kf6-kitemviews's [build].script to a durable external
|
||||
# patch. Captured by local/scripts/migrate-kf6-seds-direct.sh
|
||||
# on 2026-06-12T19:45:30+03:00.
|
||||
#
|
||||
# After applying this patch via cookbook_apply_patches,
|
||||
# the recipe's [build].script should call:
|
||||
# REDBEAR_PATCHES_DIR="/home/kellito/Builds/RedBear-OS/local/patches/kf6-kitemviews"
|
||||
# cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"
|
||||
# in place of the sed -i chains that produced these edits.
|
||||
|
||||
diff -ruN '--label=CMakeLists.txt' '--label=CMakeLists.txt' '--exclude=.git' '--exclude=target' '--exclude=.clang-format' '--exclude=.gitignore' CMakeLists.txt CMakeLists.txt
|
||||
--- CMakeLists.txt
|
||||
+++ CMakeLists.txt
|
||||
@@ -27,6 +27,7 @@
|
||||
|
||||
set(REQUIRED_QT_VERSION 6.9.0)
|
||||
find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Widgets)
|
||||
+find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
|
||||
|
||||
set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control the range of deprecated API excluded from the build [default=0].")
|
||||
|
||||
@@ -40,7 +41,7 @@
|
||||
SOVERSION 6)
|
||||
|
||||
|
||||
-ecm_install_po_files_as_qm(poqm)
|
||||
+#ecm_install_po_files_as_qm(poqm)
|
||||
|
||||
ecm_set_disabled_deprecation_versions(
|
||||
QT 6.11
|
||||
@@ -0,0 +1,69 @@
|
||||
# Initial migration of the inline sed -i chains in
|
||||
# local/recipes/kde/kf6-kjobwidgets's [build].script to a durable external
|
||||
# patch. Captured by local/scripts/migrate-kf6-seds-direct.sh
|
||||
# on 2026-06-12T20:04:39+03:00.
|
||||
#
|
||||
# After applying this patch via cookbook_apply_patches,
|
||||
# the recipe's [build].script should call:
|
||||
# REDBEAR_PATCHES_DIR="/home/kellito/Builds/RedBear-OS/local/patches/kf6-kjobwidgets"
|
||||
# cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"
|
||||
# in place of the sed -i chains that produced these edits.
|
||||
|
||||
--- ./src/CMakeLists.txt
|
||||
+++ ./src/CMakeLists.txt
|
||||
@@ -41,8 +41,6 @@
|
||||
kwidgetjobtracker.cpp
|
||||
kwidgetjobtracker.h
|
||||
kwidgetjobtracker_p.h
|
||||
- knotificationjobuidelegate.cpp
|
||||
- knotificationjobuidelegate.h
|
||||
|
||||
${kjobwidgets_dbus_SRCS}
|
||||
)
|
||||
@@ -84,7 +82,7 @@
|
||||
KF6::CoreAddons # KJob
|
||||
PRIVATE
|
||||
KF6::WidgetsAddons # KSqueezedTextLabel
|
||||
- KF6::Notifications
|
||||
+ #KF6::Notifications
|
||||
)
|
||||
if (HAVE_QTDBUS)
|
||||
target_link_libraries(KF6JobWidgets PRIVATE Qt6::DBus)
|
||||
@@ -103,7 +101,7 @@
|
||||
KUiServerV2JobTracker
|
||||
KStatusBarJobTracker
|
||||
KWidgetJobTracker
|
||||
- KNotificationJobUiDelegate
|
||||
+ #KNotificationJobUiDelegate
|
||||
|
||||
REQUIRED_HEADERS KJobWidgets_HEADERS
|
||||
)
|
||||
--- ./CMakeLists.txt
|
||||
+++ ./CMakeLists.txt
|
||||
@@ -27,6 +27,7 @@
|
||||
|
||||
set(REQUIRED_QT_VERSION 6.9.0)
|
||||
find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Widgets)
|
||||
+find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
|
||||
|
||||
if (Qt6Gui_VERSION VERSION_GREATER_EQUAL "6.10.0")
|
||||
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE)
|
||||
@@ -50,7 +51,7 @@
|
||||
|
||||
find_package(KF6CoreAddons ${KF_DEP_VERSION} REQUIRED)
|
||||
find_package(KF6WidgetsAddons ${KF_DEP_VERSION} REQUIRED)
|
||||
-find_package(KF6Notifications ${KF_DEP_VERSION} REQUIRED)
|
||||
+#find_package(KF6Notifications ${KF_DEP_VERSION} REQUIRED)
|
||||
|
||||
set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control the range of deprecated API excluded from the build [default=0].")
|
||||
|
||||
@@ -65,7 +66,7 @@
|
||||
KF 6.23.0
|
||||
)
|
||||
|
||||
-ecm_install_po_files_as_qm(poqm)
|
||||
+#ecm_install_po_files_as_qm(poqm)
|
||||
|
||||
add_subdirectory(src)
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# Initial migration of the inline sed -i chains in
|
||||
# local/recipes/kde/kf6-knotifications's [build].script to a durable external
|
||||
# patch. Captured by local/scripts/migrate-kf6-seds-direct.sh
|
||||
# on 2026-06-12T19:34:07+03:00.
|
||||
#
|
||||
# After applying this patch via cookbook_apply_patches,
|
||||
# the recipe's [build].script should call:
|
||||
# REDBEAR_PATCHES_DIR="/home/kellito/Builds/RedBear-OS/local/patches/kf6-knotifications"
|
||||
# cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"
|
||||
# in place of the sed -i chains that produced these edits.
|
||||
|
||||
diff -ruN '--exclude=.git' '--exclude=target' '--exclude=.clang-format' '--exclude=.gitignore' local/recipes/kde/kf6-knotifications/source-pristine/CMakeLists.txt local/recipes/kde/kf6-knotifications/source/CMakeLists.txt
|
||||
--- local/recipes/kde/kf6-knotifications/source-pristine/CMakeLists.txt 2026-06-12 19:04:53.669731256 +0300
|
||||
+++ local/recipes/kde/kf6-knotifications/source/CMakeLists.txt 2026-06-12 19:34:07.603999577 +0300
|
||||
@@ -103,7 +103,7 @@
|
||||
|
||||
remove_definitions(-DQT_NO_CAST_FROM_BYTEARRAY)
|
||||
|
||||
-ecm_install_po_files_as_qm(poqm)
|
||||
+#ecm_install_po_files_as_qm(poqm)
|
||||
|
||||
ecm_set_disabled_deprecation_versions(
|
||||
QT 6.11
|
||||
@@ -0,0 +1,23 @@
|
||||
# Initial migration of the inline sed -i chains in
|
||||
# local/recipes/kde/kf6-kwidgetsaddons's [build].script to a durable external
|
||||
# patch. Captured by local/scripts/migrate-kf6-seds-direct.sh
|
||||
# on 2026-06-12T19:45:30+03:00.
|
||||
#
|
||||
# After applying this patch via cookbook_apply_patches,
|
||||
# the recipe's [build].script should call:
|
||||
# REDBEAR_PATCHES_DIR="/home/kellito/Builds/RedBear-OS/local/patches/kf6-kwidgetsaddons"
|
||||
# cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"
|
||||
# in place of the sed -i chains that produced these edits.
|
||||
|
||||
diff -ruN '--label=CMakeLists.txt' '--label=CMakeLists.txt' '--exclude=.git' '--exclude=target' '--exclude=.clang-format' '--exclude=.gitignore' CMakeLists.txt CMakeLists.txt
|
||||
--- CMakeLists.txt
|
||||
+++ CMakeLists.txt
|
||||
@@ -56,7 +56,7 @@
|
||||
cmake_dependent_option(BUILD_DESIGNERPLUGIN "Build plugin for Qt Designer" ON "NOT CMAKE_CROSSCOMPILING" OFF)
|
||||
add_feature_info(DESIGNERPLUGIN ${BUILD_DESIGNERPLUGIN} "Build plugin for Qt Designer")
|
||||
|
||||
-ecm_install_po_files_as_qm(poqm)
|
||||
+#ecm_install_po_files_as_qm(poqm)
|
||||
|
||||
configure_file(test-config.h.in ${CMAKE_CURRENT_BINARY_DIR}/test-config.h)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Initial migration of the inline sed -i chains in
|
||||
# /home/kellito/Builds/RedBear-OS/local/recipes/kde/kf6-kwindowsystem/'s [build].script to a durable external
|
||||
# patch. Captured by local/scripts/migrate-kf6-seds-to-patches.sh
|
||||
# on 2026-06-12T17:59:03+03:00.
|
||||
# local/recipes/kde/kf6-kwindowsystem's [build].script to a durable external
|
||||
# patch. Captured by local/scripts/migrate-kf6-seds-direct.sh
|
||||
# on 2026-06-12T20:08:14+03:00.
|
||||
#
|
||||
# After applying this patch via cookbook_apply_patches,
|
||||
# the recipe's [build].script should call:
|
||||
@@ -9,9 +9,8 @@
|
||||
# cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"
|
||||
# in place of the sed -i chains that produced these edits.
|
||||
|
||||
diff -ruN '--exclude=.git' '--exclude=target' '--exclude=.clang-format' '--exclude=.gitignore' /home/kellito/Builds/RedBear-OS/local/recipes/kde/kf6-kwindowsystem//source-pristine/CMakeLists.txt /home/kellito/Builds/RedBear-OS/local/recipes/kde/kf6-kwindowsystem//source/CMakeLists.txt
|
||||
--- /home/kellito/Builds/RedBear-OS/local/recipes/kde/kf6-kwindowsystem//source-pristine/CMakeLists.txt 2026-06-12 17:58:14.097649577 +0300
|
||||
+++ /home/kellito/Builds/RedBear-OS/local/recipes/kde/kf6-kwindowsystem//source/CMakeLists.txt 2026-06-12 17:58:56.877257856 +0300
|
||||
--- ./CMakeLists.txt
|
||||
+++ ./CMakeLists.txt
|
||||
@@ -86,7 +86,7 @@
|
||||
set(KWINDOWSYSTEM_HAVE_X11 ${KWINDOWSYSTEM_X11})
|
||||
|
||||
@@ -21,3 +20,4 @@ diff -ruN '--exclude=.git' '--exclude=target' '--exclude=.clang-format' '--exclu
|
||||
|
||||
ecm_set_disabled_deprecation_versions(
|
||||
QT 6.11.0
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# Initial migration of the inline sed -i chains in
|
||||
# local/recipes/kde/kf6-solid's [build].script to a durable external
|
||||
# patch. Captured by local/scripts/migrate-kf6-seds-direct.sh
|
||||
# on 2026-06-12T19:45:30+03:00.
|
||||
#
|
||||
# After applying this patch via cookbook_apply_patches,
|
||||
# the recipe's [build].script should call:
|
||||
# REDBEAR_PATCHES_DIR="/home/kellito/Builds/RedBear-OS/local/patches/kf6-solid"
|
||||
# cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"
|
||||
# in place of the sed -i chains that produced these edits.
|
||||
|
||||
diff -ruN '--label=CMakeLists.txt' '--label=CMakeLists.txt' '--exclude=.git' '--exclude=target' '--exclude=.clang-format' '--exclude=.gitignore' CMakeLists.txt CMakeLists.txt
|
||||
--- CMakeLists.txt
|
||||
+++ CMakeLists.txt
|
||||
@@ -97,7 +97,7 @@
|
||||
QT 6.11.0
|
||||
)
|
||||
|
||||
-ecm_install_po_files_as_qm(poqm)
|
||||
+#ecm_install_po_files_as_qm(poqm)
|
||||
|
||||
include(SolidBackendsMacros)
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# Initial migration of the inline sed -i chains in
|
||||
# local/recipes/kde/kf6-sonnet's [build].script to a durable external
|
||||
# patch. Captured by local/scripts/migrate-kf6-seds-direct.sh
|
||||
# on 2026-06-12T19:45:30+03:00.
|
||||
#
|
||||
# After applying this patch via cookbook_apply_patches,
|
||||
# the recipe's [build].script should call:
|
||||
# REDBEAR_PATCHES_DIR="/home/kellito/Builds/RedBear-OS/local/patches/kf6-sonnet"
|
||||
# cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"
|
||||
# in place of the sed -i chains that produced these edits.
|
||||
|
||||
diff -ruN '--label=CMakeLists.txt' '--label=CMakeLists.txt' '--exclude=.git' '--exclude=target' '--exclude=.clang-format' '--exclude=.gitignore' CMakeLists.txt CMakeLists.txt
|
||||
--- CMakeLists.txt
|
||||
+++ CMakeLists.txt
|
||||
@@ -55,7 +55,7 @@
|
||||
add_feature_info(DESIGNERPLUGIN ${BUILD_DESIGNERPLUGIN} "Build plugin for Qt Designer")
|
||||
endif()
|
||||
|
||||
-ecm_install_po_files_as_qm(poqm)
|
||||
+#ecm_install_po_files_as_qm(poqm)
|
||||
|
||||
ecm_set_disabled_deprecation_versions(
|
||||
QT 6.11.0
|
||||
@@ -0,0 +1,51 @@
|
||||
# Initial migration of the inline sed -i chains in
|
||||
# local/recipes/kde/kf6-syntaxhighlighting's [build].script to a durable external
|
||||
# patch. Captured by local/scripts/migrate-kf6-seds-direct.sh
|
||||
# on 2026-06-12T19:45:31+03:00.
|
||||
#
|
||||
# After applying this patch via cookbook_apply_patches,
|
||||
# the recipe's [build].script should call:
|
||||
# REDBEAR_PATCHES_DIR="/home/kellito/Builds/RedBear-OS/local/patches/kf6-syntaxhighlighting"
|
||||
# cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"
|
||||
# in place of the sed -i chains that produced these edits.
|
||||
|
||||
diff -ruN '--label=CMakeLists.txt' '--label=CMakeLists.txt' '--exclude=.git' '--exclude=target' '--exclude=.clang-format' '--exclude=.gitignore' CMakeLists.txt CMakeLists.txt
|
||||
--- CMakeLists.txt
|
||||
+++ CMakeLists.txt
|
||||
@@ -39,12 +39,12 @@
|
||||
# Dependencies
|
||||
#
|
||||
set(REQUIRED_QT_VERSION 6.9.0)
|
||||
-find_package(Qt6 ${REQUIRED_QT_VERSION} NO_MODULE REQUIRED COMPONENTS Core Network Test)
|
||||
+find_package(Qt6 ${REQUIRED_QT_VERSION} NO_MODULE REQUIRED COMPONENTS Core Network)
|
||||
option(KSYNTAXHIGHLIGHTING_USE_GUI "Build components depending on QtGui" ON)
|
||||
if(KSYNTAXHIGHLIGHTING_USE_GUI)
|
||||
find_package(Qt6 ${REQUIRED_QT_VERSION} NO_MODULE REQUIRED COMPONENTS Gui)
|
||||
endif()
|
||||
-find_package(Qt6 ${REQUIRED_QT_VERSION} NO_MODULE QUIET OPTIONAL_COMPONENTS PrintSupport Widgets Quick)
|
||||
+find_package(Qt6 ${REQUIRED_QT_VERSION} NO_MODULE QUIET OPTIONAL_COMPONENTS PrintSupport Widgets)
|
||||
set_package_properties(Qt6 PROPERTIES URL "http://qt-project.org/")
|
||||
set_package_properties(Qt6Widgets PROPERTIES PURPOSE "Example application.")
|
||||
set_package_properties(Qt6PrintSupport PROPERTIES PURPOSE "Example application.")
|
||||
@@ -75,7 +75,7 @@
|
||||
#
|
||||
# Translations
|
||||
#
|
||||
-ecm_install_po_files_as_qm(poqm)
|
||||
+#ecm_install_po_files_as_qm(poqm)
|
||||
|
||||
# tell the framework if it shall use the syntax files from the resource
|
||||
if (QRC_SYNTAX)
|
||||
@@ -99,9 +99,9 @@
|
||||
add_subdirectory(src)
|
||||
if(TARGET Qt6::Gui)
|
||||
add_subdirectory(examples)
|
||||
- if (BUILD_TESTING)
|
||||
- add_subdirectory(autotests)
|
||||
- endif()
|
||||
+# if (BUILD_TESTING)
|
||||
+# add_subdirectory(autotests)
|
||||
+# endif()
|
||||
endif()
|
||||
|
||||
#
|
||||
Executable
+224
@@ -0,0 +1,224 @@
|
||||
#!/usr/bin/env bash
|
||||
# Red Bear OS — C-7 direct-sed migration
|
||||
#
|
||||
# For KF6 recipes whose [build].script uses inline `sed -i`
|
||||
# chains, this script:
|
||||
# 1. Restores the pristine source from `source-pristine/`
|
||||
# 2. Applies the same sed chain manually via `bash -c`
|
||||
# 3. Diffs pristine vs post-sed source
|
||||
# 4. Saves the diff as `local/patches/<name>/01-initial-migration.patch`
|
||||
#
|
||||
# Why direct-sed instead of `repo cook`: the cookbook's
|
||||
# `cook` step does a full dep-tree build that often fails
|
||||
# in offline mode (missing libffi/pcre2/mesa stage.pkgar
|
||||
# etc.). The sed chain we care about is the FIRST thing
|
||||
# in the recipe's [build].script and runs BEFORE cmake
|
||||
# configure. We can run it standalone with a simple
|
||||
# `bash -c "<sed chain>"` to capture the post-sed state.
|
||||
#
|
||||
# This is the same diff that `repo cook` would have
|
||||
# produced, but without the dep-tree failure mode.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
cd "$(dirname "${BASH_SOURCE[0]}")/../.."
|
||||
|
||||
PATCHES_DIR="${REDBEAR_MIGRATE_PATCHES_DIR:-/home/kellito/Builds/RedBear-OS/local/patches}"
|
||||
|
||||
# The 17 recipes that need migration (all those whose
|
||||
# upstream 6.26.0 still has the ecm_install_po_files_as_qm
|
||||
# call). The 24 NO-OP recipes were cleaned separately by
|
||||
# cleanup-kf6-noop-seds.sh.
|
||||
recipe_dirs=(
|
||||
"local/recipes/kde/kf6-karchive"
|
||||
"local/recipes/kde/kf6-kauth"
|
||||
"local/recipes/kde/kf6-kbookmarks"
|
||||
"local/recipes/kde/kf6-kcodecs"
|
||||
"local/recipes/kde/kf6-kcompletion"
|
||||
"local/recipes/kde/kf6-kconfig"
|
||||
"local/recipes/kde/kf6-kcoreaddons"
|
||||
"local/recipes/kde/kf6-kdbusaddons"
|
||||
"local/recipes/kde/kf6-kglobalaccel"
|
||||
"local/recipes/kde/kf6-kitemviews"
|
||||
"local/recipes/kde/kf6-kjobwidgets"
|
||||
"local/recipes/kde/kf6-knotifications"
|
||||
"local/recipes/kde/kf6-kwidgetsaddons"
|
||||
"local/recipes/kde/kf6-kwindowsystem"
|
||||
"local/recipes/kde/kf6-solid"
|
||||
"local/recipes/kde/kf6-sonnet"
|
||||
"local/recipes/kde/kf6-syntaxhighlighting"
|
||||
)
|
||||
|
||||
migrated=0
|
||||
skipped=0
|
||||
failed=0
|
||||
no_op=0
|
||||
|
||||
for recipe_dir in "${recipe_dirs[@]}"; do
|
||||
name=$(basename "$recipe_dir")
|
||||
recipe="$recipe_dir/recipe.toml"
|
||||
pristine_dir="$recipe_dir/source-pristine"
|
||||
source_dir="$recipe_dir/source"
|
||||
patch_dir="$PATCHES_DIR/$name"
|
||||
patch_file="$patch_dir/01-initial-migration.patch"
|
||||
|
||||
if [ -e "$patch_file" ]; then
|
||||
echo "SKIP: $name (patch already exists)"
|
||||
skipped=$((skipped+1))
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ ! -e "$pristine_dir" ] || [ ! -e "$source_dir" ]; then
|
||||
echo "FAIL: $name (missing pristine or source dir)"
|
||||
failed=$((failed+1))
|
||||
continue
|
||||
fi
|
||||
|
||||
# Restore pristine state (the previous cook may have
|
||||
# partially modified source/).
|
||||
rm -rf "$source_dir"
|
||||
cp -r "$pristine_dir" "$source_dir"
|
||||
|
||||
# Extract the sed chain from the recipe's [build].script.
|
||||
# The chain is everything between the first `sed -i` line
|
||||
# and the next non-sed, non-continuation line. Continuation
|
||||
# lines are those that either end with `\` (line-continuation
|
||||
# within the sed command) or are indented-continuations
|
||||
# (the file path / args of a multi-line sed).
|
||||
sed_chain=$(python3 - "$recipe" <<'PY'
|
||||
import sys
|
||||
from pathlib import Path
|
||||
text = Path(sys.argv[1]).read_text()
|
||||
out = []
|
||||
in_sed = False
|
||||
prev_ended_with_continuation = False
|
||||
BS = chr(92)
|
||||
for line in text.splitlines():
|
||||
if "sed -i" in line and not in_sed:
|
||||
in_sed = True
|
||||
out.append(line)
|
||||
prev_ended_with_continuation = line.rstrip().endswith(BS)
|
||||
elif in_sed:
|
||||
ends_with_bs = line.rstrip().endswith(BS)
|
||||
is_indented = line.startswith(" ") or line.startswith("\t")
|
||||
if "sed -i" in line:
|
||||
out.append(line)
|
||||
prev_ended_with_continuation = ends_with_bs
|
||||
elif ends_with_bs or is_indented or prev_ended_with_continuation:
|
||||
out.append(line)
|
||||
prev_ended_with_continuation = ends_with_bs
|
||||
else:
|
||||
break
|
||||
print(chr(10).join(out))
|
||||
PY
|
||||
)
|
||||
|
||||
if [ -z "$sed_chain" ]; then
|
||||
echo "FAIL: $name (no sed chain found in recipe)"
|
||||
failed=$((failed+1))
|
||||
continue
|
||||
fi
|
||||
|
||||
# Apply the sed chain. Bash's `$(...)` command substitution
|
||||
# strips trailing newlines, which would break the multi-line
|
||||
# `sed -i ... \` continuation. Write the chain to a temp
|
||||
# file and source it instead so the literal newlines are
|
||||
# preserved.
|
||||
sed_script=$(mktemp /tmp/sed-chain.XXXXXX.sh)
|
||||
printf '%s\n' "$sed_chain" > "$sed_script"
|
||||
# shellcheck disable=SC1090
|
||||
# Use an absolute path for COOKBOOK_SOURCE because the cd
|
||||
# below changes PWD, and a relative path in COOKBOOK_SOURCE
|
||||
# would resolve against the new PWD.
|
||||
abs_source_dir=$(cd "$source_dir" && pwd)
|
||||
( export COOKBOOK_SOURCE="$abs_source_dir" && cd "$abs_source_dir" && bash "$sed_script" 2>/dev/null ) || true
|
||||
rm -f "$sed_script"
|
||||
|
||||
# Diff pristine vs post-sed. The cookbook's
|
||||
# `cookbook_apply_patches` helper runs `git apply` from
|
||||
# inside `${COOKBOOK_SOURCE}` (the source directory), and
|
||||
# `git apply` interprets the path in `---` and `+++`
|
||||
# lines as relative-to-cwd. So the patch's labels must
|
||||
# be the actual file paths relative to the source
|
||||
# directory (e.g. `CMakeLists.txt` or `src/CMakeLists.txt`).
|
||||
#
|
||||
# Build a per-file diff so each file gets the right
|
||||
# label. Use `diff -rq` to enumerate changed files
|
||||
# (its output is locale-dependent so we just extract
|
||||
# all the absolute paths that match the source dir).
|
||||
abs_pristine_dir=$(cd "$pristine_dir" && pwd)
|
||||
abs_source_dir2=$(cd "$source_dir" && pwd)
|
||||
# Enumerate regular files in the source dir (we know
|
||||
# pristine and source share the same file tree, only
|
||||
# file contents differ).
|
||||
diff_out=""
|
||||
while IFS= read -r -d '' rel_file; do
|
||||
# Skip ECM-generated noise.
|
||||
case "$rel_file" in
|
||||
.clang-format|.gitignore|target) continue ;;
|
||||
esac
|
||||
pristine_file="$abs_pristine_dir/$rel_file"
|
||||
source_file="$abs_source_dir2/$rel_file"
|
||||
if [ ! -f "$pristine_file" ] || [ ! -f "$source_file" ]; then
|
||||
continue
|
||||
fi
|
||||
# Per-file diff with the relative path as the label.
|
||||
file_diff=$(diff -uN \
|
||||
--label="a/$rel_file" \
|
||||
--label="b/$rel_file" \
|
||||
"$pristine_file" "$source_file" 2>/dev/null || true)
|
||||
if [ -n "$file_diff" ]; then
|
||||
# Strip the `a/` and `b/` prefixes to get just
|
||||
# the file path relative to source.
|
||||
file_diff=$(echo "$file_diff" \
|
||||
| sed -e "s#^--- a/#--- #g" -e "s#^+++ b/#+++ #g")
|
||||
diff_out="${diff_out}${file_diff}"$'\n'
|
||||
fi
|
||||
done < <(cd "$abs_source_dir2" && find . -type f -not -path './.git/*' -not -path './target/*' -not -name '.clang-format' -not -name '.gitignore' -print0)
|
||||
|
||||
if [ -z "$diff_out" ]; then
|
||||
echo "NO-OP: $name (sed produced no diff — line not in upstream)"
|
||||
no_op=$((no_op+1))
|
||||
continue
|
||||
fi
|
||||
|
||||
# Save the patch.
|
||||
mkdir -p "$patch_dir"
|
||||
{
|
||||
echo "# Initial migration of the inline sed -i chains in"
|
||||
echo "# $recipe_dir's [build].script to a durable external"
|
||||
echo "# patch. Captured by local/scripts/migrate-kf6-seds-direct.sh"
|
||||
echo "# on $(date -Iseconds)."
|
||||
echo "#"
|
||||
echo "# After applying this patch via cookbook_apply_patches,"
|
||||
echo "# the recipe's [build].script should call:"
|
||||
echo "# REDBEAR_PATCHES_DIR=\"$PATCHES_DIR/$name\""
|
||||
echo "# cookbook_apply_patches \"\${REDBEAR_PATCHES_DIR}\""
|
||||
echo "# in place of the sed -i chains that produced these edits."
|
||||
echo
|
||||
echo "$diff_out"
|
||||
} > "$patch_file"
|
||||
|
||||
# Verify the patch applies cleanly to pristine using
|
||||
# `git apply --check` (the same tool the cookbook's
|
||||
# `cookbook_apply_patches` helper uses). `patch -p1` does
|
||||
# NOT work on these patches because they were generated
|
||||
# by `diff -ruN` with absolute paths and include
|
||||
# /home/kellito/Builds/RedBear-OS/... prefixes that
|
||||
# `patch -p1` cannot strip.
|
||||
if (cd "$pristine_dir" && git apply --check "$patch_file" >/dev/null 2>&1); then
|
||||
echo "MIGRATED: $name"
|
||||
migrated=$((migrated+1))
|
||||
else
|
||||
echo "FAIL: $name (patch does not apply cleanly)"
|
||||
rm -f "$patch_file"
|
||||
failed=$((failed+1))
|
||||
fi
|
||||
done
|
||||
|
||||
echo
|
||||
echo "=== Summary ==="
|
||||
echo "Migrated: $migrated"
|
||||
echo "No-op: $no_op"
|
||||
echo "Skipped: $skipped"
|
||||
echo "Failed: $failed"
|
||||
Reference in New Issue
Block a user