diff mbox series

[03/11] recipe-upgrade-additional-rename.bbclass: add a class

Message ID 20240621103414.2842509-3-alex.kanavin@gmail.com
State New
Headers show
Series [01/11] devtool/upgrade: rename RECIPE_UPDATE_EXTRA_TASKS -> RECIPE_UPGRADE_EXTRA_TASKS | expand

Commit Message

Alexander Kanavin June 21, 2024, 10:34 a.m. UTC
From: Alexander Kanavin <alex@linutronix.de>

Please see the comment in the class for the rationale.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
---
 .../recipe-upgrade-additional-rename.bbclass  | 22 +++++++++++++++++++
 1 file changed, 22 insertions(+)
 create mode 100644 meta/classes-recipe/recipe-upgrade-additional-rename.bbclass
diff mbox series

Patch

diff --git a/meta/classes-recipe/recipe-upgrade-additional-rename.bbclass b/meta/classes-recipe/recipe-upgrade-additional-rename.bbclass
new file mode 100644
index 00000000000..b173b3d3571
--- /dev/null
+++ b/meta/classes-recipe/recipe-upgrade-additional-rename.bbclass
@@ -0,0 +1,22 @@ 
+# This class can be used to add file renames in devtool version upgrades
+# operations when there are supplemental recipes that need to be updated
+# in lockstep with the main one by renaming the files. This is common,
+# e.g. glib, cmake, mesa, libva, etc have this issue.
+#
+# Example (from glib which has glib-initial to handle):
+#
+# inherit recipe-upgrade-additional-rename
+# RECIPE_UPGRADE_ADDITIONAL_RENAME = "glib-2.0-initial_{pv}.bb"
+#
+RECIPE_UPGRADE_FINISH_EXTRA_TASKS += "do_recipe_upgrade_additional_rename"
+addtask do_recipe_upgrade_additional_rename
+
+python do_recipe_upgrade_additional_rename() {
+    import glob
+    origpath = d.getVar("THISDIR")
+    newpv = d.getVar("PV")
+
+    for f_pattern in d.getVar("RECIPE_UPGRADE_ADDITIONAL_RENAME").split():
+        for f_disk in glob.glob(os.path.join(origpath, f_pattern.format(pv="*"))):
+            os.rename(f_disk, os.path.join(origpath, f_pattern.format(pv=newpv)))
+}