]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
lib: package: Add file_reverse_translate
authorJoshua Watt <JPEWhacker@gmail.com>
Thu, 23 May 2024 18:26:54 +0000 (12:26 -0600)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 3 Jun 2024 06:47:00 +0000 (07:47 +0100)
Adds API to reverse the removal of special characters from file names so
it can be correctly done in multiple places without open-coding it.

Replace the translation done in the package_rpm.bbclass with the new API

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
meta/classes-global/package_rpm.bbclass
meta/lib/oe/package.py

index 790ccbfaf0c7a19f7bcfc35d9146fef3d6477638..474d2491eb0c6a1cf0b3dc00f222d1db79f1b903 100644 (file)
@@ -38,6 +38,7 @@ def filter_nativesdk_deps(srcname, var):
 
 # Construct per file dependencies file
 def write_rpm_perfiledata(srcname, d):
+    import oe.package
     workdir = d.getVar('WORKDIR')
     packages = d.getVar('PACKAGES')
     pkgd = d.getVar('PKGD')
@@ -53,12 +54,7 @@ def write_rpm_perfiledata(srcname, d):
                 key = "FILE" + varname + ":" + dfile + ":" + pkg
                 deps = filter_nativesdk_deps(srcname, d.getVar(key) or "")
                 depends_dict = bb.utils.explode_dep_versions(deps)
-                file = dfile.replace("@underscore@", "_")
-                file = file.replace("@closebrace@", "]")
-                file = file.replace("@openbrace@", "[")
-                file = file.replace("@tab@", "\t")
-                file = file.replace("@space@", " ")
-                file = file.replace("@at@", "@")
+                file = oe.package.file_reverse_translate(dfile)
                 outfile.write('"' + pkgd + file + '" : "')
                 for dep in depends_dict:
                     ver = depends_dict[dep]
index 1511ba47c42ee6fd3a3cbbe14d3189efa29d834f..0fe49c00d6d9e1f63edf291f3e081733f3dc1120 100644 (file)
@@ -195,14 +195,27 @@ def strip_execs(pn, dstdir, strip_cmd, libdir, base_libdir, max_process, qa_alre
 
     oe.utils.multiprocess_launch_mp(runstrip, sfiles, max_process)
 
+TRANSLATE = (
+    ("@", "@at@"),
+    (" ", "@space@"),
+    ("\t", "@tab@"),
+    ("[", "@openbrace@"),
+    ("]", "@closebrace@"),
+    ("_", "@underscore@"),
+)
 
 def file_translate(file):
-    ft = file.replace("@", "@at@")
-    ft = ft.replace(" ", "@space@")
-    ft = ft.replace("\t", "@tab@")
-    ft = ft.replace("[", "@openbrace@")
-    ft = ft.replace("]", "@closebrace@")
-    ft = ft.replace("_", "@underscore@")
+    ft = file
+    for s, replace in TRANSLATE:
+        ft = ft.replace(s, replace)
+
+    return ft
+
+def file_reverse_translate(file):
+    ft = file
+    for s, replace in reversed(TRANSLATE):
+        ft = ft.replace(replace, s)
+
     return ft
 
 def filedeprunner(arg):