Somewhere in the overall function the paths aren't formed correctly, but this patch is very much not a correct fix either, and should be marked as such. If you can provide a minimal reproducer recipe, that would help; I can't say what is wrong otherwise.
You might want to insert debugging statements to see where opt//opt formation is happening. Alex On Fri, 23 Feb 2024 at 21:31, Jeremy Puhlman via lists.openembedded.org <jpuhlman=mvista....@lists.openembedded.org> wrote: > > From: "Jeremy A. Puhlman" <jpuhl...@mvista.com> > > This seems to work around the following issue. The recipe in quesiton > places all of its content in /opt, and we turn on license collection > globally. Systemd is turned on so usrmerge is also on. I doubt this > is the correct way to deal with this as it is not clear why it is > looking for /usr//usr in the first place. Not sure if its just a > wierd edge case or what. > > File: > '/build/../layers/poky/meta/classes-global/package_rpm.bbclass', > lineno: 527, function: write_specfile > 0523: spec_scriptlets_bottom.append('') > 0524: > 0525: # Now process files > 0526: file_list = [] > *** 0527: walk_files(root, file_list, conffiles, dirfiles) > 0528: if not file_list and localdata.getVar('ALLOW_EMPTY', > False) != "1": > 0529: bb.note("Not creating empty RPM package for %s" % > splitname) > 0530: else: > 0531: spec_files_bottom.append('%%files -n %s' % > splitname) > File: > '/build/../layers/poky/meta/classes-global/package_rpm.bbclass', > lineno: 249, function: walk_files > 0245: target.append(get_attr(dir) + '%dir "' + > escape_chars(p) + '"') > 0246: else: > 0247: # packages own only empty directories or > explict directory. > 0248: # This will prevent the overlapping of > security permission. > *** 0249: attr = get_attr(path) > 0250: if path and not files and not dirs: > 0251: target.append(attr + '%dir "' + > escape_chars(path) + '"') > 0252: elif path and path in dirfiles: > 0253: target.append(attr + '%dir "' + > escape_chars(path) + '"') > File: > '/build/../layers/poky/meta/classes-global/package_rpm.bbclass', > lineno: 203, function: get_attr > 0199: # of the walk, the isdir() test would then fail and > the walk code would assume its a file > 0200: # hence we check for the names in files too. > 0201: for rootpath, dirs, files in os.walk(walkpath): > 0202: def get_attr(path): > *** 0203: stat_f = os.stat(rootpath + "/" + path, > follow_symlinks=False) > 0204: mode = stat.S_IMODE(stat_f.st_mode) > 0205: try: > 0206: owner = > pwd.getpwuid(stat_f.st_uid).pw_name > 0207: except Exception as e: > Exception: FileNotFoundError: [Errno 2] No such file or directory: > '/build/tmp/work/corei7-64-montavista-linux/mvtest/2.0/packages-split/mvtest-lic/opt//opt' > > Signed-off-by: Jeremy A. Puhlman <jpuhl...@mvista.com> > --- > meta/classes-global/package_rpm.bbclass | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/meta/classes-global/package_rpm.bbclass > b/meta/classes-global/package_rpm.bbclass > index 2e3e4e8c79..a6885ac74e 100644 > --- a/meta/classes-global/package_rpm.bbclass > +++ b/meta/classes-global/package_rpm.bbclass > @@ -200,6 +200,8 @@ python write_specfile () { > # hence we check for the names in files too. > for rootpath, dirs, files in os.walk(walkpath): > def get_attr(path): > + if not os.path.exists(rootpath + "/" + path): > + return "" > stat_f = os.stat(rootpath + "/" + path, > follow_symlinks=False) > mode = stat.S_IMODE(stat_f.st_mode) > try: > @@ -243,7 +245,7 @@ python write_specfile () { > p = path + '/' + dir > # All packages own the directories their files are in... > target.append(get_attr(dir) + '%dir "' + escape_chars(p) > + '"') > - elif path: > + elif path and os.path.exists(path): > # packages own only empty directories or explict directory. > # This will prevent the overlapping of security permission. > attr = get_attr(path) > @@ -257,7 +259,7 @@ python write_specfile () { > p = path + '/' + file > if conffiles.count(p): > target.append(attr + '%config "' + escape_chars(p) + '"') > - else: > + elif attr: > target.append(attr + '"' + escape_chars(p) + '"') > > # Prevent the prerm/postrm scripts from being run during an upgrade > -- > 2.31.1 > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#196114): https://lists.openembedded.org/g/openembedded-core/message/196114 Mute This Topic: https://lists.openembedded.org/mt/104536226/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-