From: Joshua Watt Date: Thu, 23 May 2024 18:26:54 +0000 (-0600) Subject: lib: package: Add file_reverse_translate X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4cb7e93c624987d146aaf626ce8e99568e938a70;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git lib: package: Add file_reverse_translate 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 Signed-off-by: Alexandre Belloni --- diff --git a/meta/classes-global/package_rpm.bbclass b/meta/classes-global/package_rpm.bbclass index 790ccbfaf0c..474d2491eb0 100644 --- a/meta/classes-global/package_rpm.bbclass +++ b/meta/classes-global/package_rpm.bbclass @@ -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] diff --git a/meta/lib/oe/package.py b/meta/lib/oe/package.py index 1511ba47c42..0fe49c00d6d 100644 --- a/meta/lib/oe/package.py +++ b/meta/lib/oe/package.py @@ -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):