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

(From OE-Core rev: 4cb7e93c624987d146aaf626ce8e99568e938a70)

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Joshua Watt
2024-05-23 12:26:54 -06:00
committed by Richard Purdie
parent af6d28d2b0
commit 242be0888c
2 changed files with 21 additions and 12 deletions

View 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]

View 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):