From: Ola x Nilsson <ola.x.nilsson@axis.com>
To: openembedded-core@lists.openembedded.org
Subject: [PATCH] package.bbclass: Include dbgsrc for static libs
Date: Fri, 23 Feb 2018 08:46:18 +0100 [thread overview]
Message-ID: <20180223074618.24928-1-olani@axis.com> (raw)
The debugsource must be added from the package providing the static
lib, because any package using that lib does not have access to the
source code.
Fixes [YOCTO #12558]
Signed-off-by: Ola x Nilsson <olani@axis.com>
---
meta/classes/package.bbclass | 42 ++++++++++++++++++++++++++++++------------
1 file changed, 30 insertions(+), 12 deletions(-)
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index e7e93a067a..ec6fca87b5 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -344,6 +344,20 @@ def parse_debugsources_from_dwarfsrcfiles_output(dwarfsrcfiles_output):
return debugfiles.keys()
+def append_source_info(file, sourcefile, d):
+ cmd = "'dwarfsrcfiles' '%s'" % (file)
+ (retval, output) = oe.utils.getstatusoutput(cmd)
+ # 255 means a specific file wasn't fully parsed to get the debug file list, which is not a fatal failure
+ if retval != 0 and retval != 255:
+ bb.fatal("dwarfsrcfiles failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
+
+ debugsources = parse_debugsources_from_dwarfsrcfiles_output(output)
+ # filenames are null-separated - this is an artefact of the previous use
+ # of rpm's debugedit, which was writing them out that way, and the code elsewhere
+ # is still assuming that.
+ debuglistoutput = '\0'.join(debugsources) + '\0'
+ open(sourcefile, 'a').write(debuglistoutput)
+
def splitdebuginfo(file, debugfile, debugsrcdir, sourcefile, d):
# Function to split a single file into two components, one is the stripped
@@ -369,18 +383,7 @@ def splitdebuginfo(file, debugfile, debugsrcdir, sourcefile, d):
# We need to extract the debug src information here...
if debugsrcdir:
- cmd = "'dwarfsrcfiles' '%s'" % (file)
- (retval, output) = oe.utils.getstatusoutput(cmd)
- # 255 means a specific file wasn't fully parsed to get the debug file list, which is not a fatal failure
- if retval != 0 and retval != 255:
- bb.fatal("dwarfsrcfiles failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
-
- debugsources = parse_debugsources_from_dwarfsrcfiles_output(output)
- # filenames are null-separated - this is an artefact of the previous use
- # of rpm's debugedit, which was writing them out that way, and the code elsewhere
- # is still assuming that.
- debuglistoutput = '\0'.join(debugsources) + '\0'
- open(sourcefile, 'a').write(debuglistoutput)
+ append_source_info(file, sourcefile, d)
bb.utils.mkdirhier(os.path.dirname(debugfile))
@@ -936,6 +939,13 @@ python split_and_strip_files () {
type |= 8
return type
+ def isStaticLib(path):
+ if file.endswith('.a'):
+ with open(path, 'rb') as fh:
+ magic = b'!<arch>\n'
+ start = fh.read(len(magic))
+ return start == magic
+ return False
#
# First lets figure out all of the files we may have to process ... do this only once!
@@ -943,6 +953,7 @@ python split_and_strip_files () {
elffiles = {}
symlinks = {}
kernmods = []
+ staticlibs = []
inodes = {}
libdir = os.path.abspath(dvar + os.sep + d.getVar("libdir"))
baselibdir = os.path.abspath(dvar + os.sep + d.getVar("base_libdir"))
@@ -955,6 +966,9 @@ python split_and_strip_files () {
if file.endswith(".ko") and file.find("/lib/modules/") != -1:
kernmods.append(file)
continue
+ if isStaticLib(file):
+ staticlibs.append(file)
+ continue
# Skip debug files
if debugappend and file.endswith(debugappend):
@@ -1033,6 +1047,10 @@ python split_and_strip_files () {
# Only store off the hard link reference if we successfully split!
splitdebuginfo(file, fpath, debugsrcdir, sourcefile, d)
+ if debugsrcdir:
+ for file in staticlibs:
+ append_source_info(file, sourcefile, d)
+
# Hardlink our debug symbols to the other hardlink copies
for ref in inodes:
if len(inodes[ref]) == 1:
--
2.11.0
next reply other threads:[~2018-02-23 7:46 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-23 7:46 Ola x Nilsson [this message]
2018-03-27 12:28 ` [PATCH] package.bbclass: Include dbgsrc for static libs Ola x Nilsson
2018-04-04 13:43 ` Richard Purdie
2018-04-19 11:17 ` Ola x Nilsson
2018-04-19 11:17 ` [PATCH v2] " Ola x Nilsson
2018-04-20 7:13 ` Richard Purdie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180223074618.24928-1-olani@axis.com \
--to=ola.x.nilsson@axis.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox