| Submitter | Saul Wold |
|---|---|
| Date | April 10, 2012, 7:26 a.m. |
| Message ID | <d233ff9b666db604ab0ed7fb6b447a97fe1b1a99.1334042473.git.sgw@linux.intel.com> |
| Download | mbox | patch |
| Permalink | /patch/25505/ |
| State | New |
| Headers | show |
Comments
On Tue, 2012-04-10 at 00:26 -0700, Saul Wold wrote: > From: Andrei Gherzan <andrei@gherzan.ro> > > "The suite of statements in a function definition executes with a local namespace > that is different from the global namespace. This means that all variables created > within a function are local to that function. When the suite finishes, these > working variables are discarded." > > In this way the needs_ldconfig variable in linux_so never gets True in the statements > below this function. As global statement is generally discouraged, a return value > would be a clean and fast way to solve this issue. > > [YOCTO #2205] > > Signed-off-by: Andrei Gherzan <andrei@gherzan.ro> > --- > meta/classes/package.bbclass | 4 +++- > 1 files changed, 3 insertions(+), 1 deletions(-) > > diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass > index d35667a..c98e8fa 100644 > --- a/meta/classes/package.bbclass > +++ b/meta/classes/package.bbclass > @@ -1263,6 +1263,7 @@ python package_do_shlibs() { > lf = bb.utils.lockfile(d.expand("${PACKAGELOCK}")) > > def linux_so(root, path, file): > + needs_ldconfig = False > cmd = d.getVar('OBJDUMP', True) + " -p " + pipes.quote(os.path.join(root, file)) + " 2>/dev/null" > cmd = "PATH=\"%s\" %s" % (d.getVar('PATH', True), cmd) > fd = os.popen(cmd) > @@ -1283,6 +1284,7 @@ python package_do_shlibs() { > needs_ldconfig = True > if snap_symlinks and (file != this_soname): > renames.append((os.path.join(root, file), os.path.join(root, this_soname))) > + return needs_ldconfig > > def darwin_so(root, path, file): > fullpath = os.path.join(root, file) > @@ -1382,7 +1384,7 @@ python package_do_shlibs() { > if targetos == "darwin" or targetos == "darwin8": > darwin_so(root, dirs, file) > elif os.access(path, os.X_OK) or lib_re.match(file): > - linux_so(root, dirs, file) > + needs_ldconfig = linux_so(root, dirs, file) I've replied with a question on this elsewhere. Cheers, Richard
Patch
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index d35667a..c98e8fa 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass @@ -1263,6 +1263,7 @@ python package_do_shlibs() { lf = bb.utils.lockfile(d.expand("${PACKAGELOCK}")) def linux_so(root, path, file): + needs_ldconfig = False cmd = d.getVar('OBJDUMP', True) + " -p " + pipes.quote(os.path.join(root, file)) + " 2>/dev/null" cmd = "PATH=\"%s\" %s" % (d.getVar('PATH', True), cmd) fd = os.popen(cmd) @@ -1283,6 +1284,7 @@ python package_do_shlibs() { needs_ldconfig = True if snap_symlinks and (file != this_soname): renames.append((os.path.join(root, file), os.path.join(root, this_soname))) + return needs_ldconfig def darwin_so(root, path, file): fullpath = os.path.join(root, file) @@ -1382,7 +1384,7 @@ python package_do_shlibs() { if targetos == "darwin" or targetos == "darwin8": darwin_so(root, dirs, file) elif os.access(path, os.X_OK) or lib_re.match(file): - linux_so(root, dirs, file) + needs_ldconfig = linux_so(root, dirs, file) for (old, new) in renames: bb.note("Renaming %s to %s" % (old, new)) os.rename(old, new)