* [PATCH 0/1] Solve Bug 2205 - package.bbclass/linux_so never calls ldconfig
@ 2012-04-06 13:56 Andrei Gherzan
2012-04-06 13:57 ` [PATCH 1/1] package.bbclass: needs_ldconfig from linux_so is needed in global namespace Andrei Gherzan
0 siblings, 1 reply; 5+ messages in thread
From: Andrei Gherzan @ 2012-04-06 13:56 UTC (permalink / raw)
To: openembedded-core
This is because needs_ldconfig is a local function variable. A way to solve
would be to define this variable global but this is a discouraged. Another
solution would be to return this value in linux_so and i will patch the package
class with this fix.
The following changes since commit 190f6d791d51aaa4cfb9f1cf932bc205ff674fb5:
runqemu-internal: Add console=tty for qemuppc and NFS (2012-04-06 01:12:47 +0100)
are available in the git repository at:
git://git.yoctoproject.org/poky-contrib ag/linux_so
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=ag/linux_so
Andrei Gherzan (1):
package.bbclass: needs_ldconfig from linux_so is needed in global
namespace
meta/classes/package.bbclass | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
--
1.7.5.4
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH 1/1] package.bbclass: needs_ldconfig from linux_so is needed in global namespace 2012-04-06 13:56 [PATCH 0/1] Solve Bug 2205 - package.bbclass/linux_so never calls ldconfig Andrei Gherzan @ 2012-04-06 13:57 ` Andrei Gherzan 2012-04-10 9:02 ` Richard Purdie 0 siblings, 1 reply; 5+ messages in thread From: Andrei Gherzan @ 2012-04-06 13:57 UTC (permalink / raw) To: openembedded-core "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) for (old, new) in renames: bb.note("Renaming %s to %s" % (old, new)) os.rename(old, new) -- 1.7.5.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/1] package.bbclass: needs_ldconfig from linux_so is needed in global namespace 2012-04-06 13:57 ` [PATCH 1/1] package.bbclass: needs_ldconfig from linux_so is needed in global namespace Andrei Gherzan @ 2012-04-10 9:02 ` Richard Purdie 2012-04-10 15:34 ` Andrei Gherzan 0 siblings, 1 reply; 5+ messages in thread From: Richard Purdie @ 2012-04-10 9:02 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Fri, 2012-04-06 at 16:57 +0300, Andrei Gherzan wrote: > "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) Shouldn't this be something like: ldconfig = linux_so(root, dirs, file) needs_ldconfig = needs_ldconfig or ldconfig or can this only get called once? Cheers, Richard ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/1] package.bbclass: needs_ldconfig from linux_so is needed in global namespace 2012-04-10 9:02 ` Richard Purdie @ 2012-04-10 15:34 ` Andrei Gherzan 2012-04-11 11:57 ` Richard Purdie 0 siblings, 1 reply; 5+ messages in thread From: Andrei Gherzan @ 2012-04-10 15:34 UTC (permalink / raw) To: Patches and discussions about the oe-core layer [-- Attachment #1: Type: text/plain, Size: 2731 bytes --] On Tue, Apr 10, 2012 at 12:02, Richard Purdie < richard.purdie@linuxfoundation.org> wrote: > On Fri, 2012-04-06 at 16:57 +0300, Andrei Gherzan wrote: > > "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) > > Shouldn't this be something like: > > ldconfig = linux_so(root, dirs, file) > needs_ldconfig = needs_ldconfig or ldconfig > > or can this only get called once? > > As i recall this is called once but if you want i can amend with your hint. @g [-- Attachment #2: Type: text/html, Size: 3406 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/1] package.bbclass: needs_ldconfig from linux_so is needed in global namespace 2012-04-10 15:34 ` Andrei Gherzan @ 2012-04-11 11:57 ` Richard Purdie 0 siblings, 0 replies; 5+ messages in thread From: Richard Purdie @ 2012-04-11 11:57 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Tue, 2012-04-10 at 18:34 +0300, Andrei Gherzan wrote: > On Tue, Apr 10, 2012 at 12:02, Richard Purdie > <richard.purdie@linuxfoundation.org> wrote: > On Fri, 2012-04-06 at 16:57 +0300, Andrei Gherzan wrote: > > "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) > > > Shouldn't this be something like: > > ldconfig = linux_so(root, dirs, file) > needs_ldconfig = needs_ldconfig or ldconfig > > or can this only get called once? > > > As i recall this is called once but if you want i can amend with your > hint. I've checked and it is called multiple times as I suspected. It needs the fix I described. I've gone ahead, tweaked and merged this I'd like this fixed in the release. Cheers, Richard ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-04-11 12:07 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-04-06 13:56 [PATCH 0/1] Solve Bug 2205 - package.bbclass/linux_so never calls ldconfig Andrei Gherzan 2012-04-06 13:57 ` [PATCH 1/1] package.bbclass: needs_ldconfig from linux_so is needed in global namespace Andrei Gherzan 2012-04-10 9:02 ` Richard Purdie 2012-04-10 15:34 ` Andrei Gherzan 2012-04-11 11:57 ` Richard Purdie
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.