]> code.ossystems Code Review - openembedded-core.git/commitdiff
package_rpm.bbclass : escape "%" in files and directories name
authorSébastien Mennetrier <smennetrier@voxtok.com>
Wed, 20 May 2015 14:48:19 +0000 (16:48 +0200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 24 Aug 2015 22:45:22 +0000 (23:45 +0100)
The rpm process replace all the "%name" in the spec file by the name of
the package. So, if the package is composed of some files or directories
named "%name...", the rpm package process failed.

Replace all "%" present in files or directories names by "%%%%%%%%" to
correctly escape "%" due to the number of times that % is treated as an
escape character.  Jeff Johnson says this is the Right Thing To Do.

[ YOCTO #5397 ]

Signed-off-by: Sébastien Mennetrier <smennetrier@voxtok.com>
Signed-off-by: Michaël Burtin <mburtin@voxtok.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/classes/package_rpm.bbclass

index 271b9ae77232a091444e41b2217a87ab1cf2923d..8fd068525b27904f2c8da17e7bc536ad261fde4e 100644 (file)
@@ -196,6 +196,7 @@ python write_specfile () {
             path = rootpath.replace(walkpath, "")
             if path.endswith("DEBIAN") or path.endswith("CONTROL"):
                 continue
+            path = path.replace("%", "%%%%%%%%")
 
             # Treat all symlinks to directories as normal files.
             # os.walk() lists them as directories.
@@ -214,6 +215,7 @@ python write_specfile () {
                 for dir in dirs:
                     if dir == "CONTROL" or dir == "DEBIAN":
                         continue
+                    dir = dir.replace("%", "%%%%%%%%")
                     # All packages own the directories their files are in...
                     target.append('%dir "' + path + '/' + dir + '"')
             else:
@@ -227,6 +229,7 @@ python write_specfile () {
             for file in files:
                 if file == "CONTROL" or file == "DEBIAN":
                     continue
+                file = file.replace("%", "%%%%%%%%")
                 if conffiles.count(path + '/' + file):
                     target.append('%config "' + path + '/' + file + '"')
                 else: