[oe] [oe-commits] [openembedded-core] 05/06: package.bbclass: Include dbgsrc for static libs
Burton, Ross
ross.burton at intel.com
Fri Apr 20 14:09:32 UTC 2018
FWIW, libsdl2 builds fine for me with current sumo branch.
Ross
On 20 April 2018 at 13:03, Martin Jansa <martin.jansa at gmail.com> wrote:
> I haven't dig around this much, but some of my builds are now failing with:
>
> ERROR: libsdl2-webos-2.0.4-86-r22 do_package: dwarfsrcfiles failed with
> exit code 1 (cmd was 'dwarfsrcfiles' 'libsdl2-webos/2.0.4-86-r22/
> package/usr/lib/libSDL2main.a'):
> dwarfsrcfiles: libsdl2-webos/2.0.4-86-r22/package/usr/lib/libSDL2main.a:
> not a valid ELF file
> ERROR: libsdl2-webos-2.0.4-86-r22 do_package: Function failed:
> split_and_strip_files
>
> It's different version of libsdl2 than what's in oe-core now and the recipe
> for it might be a bit broken.
>
> $ file package/usr/lib/libSDL2main.a
> package/usr/lib/libSDL2main.a: current ar archive
>
> $ recipe-sysroot-native/usr/bin/dwarfsrcfiles package/usr/lib/libSDL2main.a
> dwarfsrcfiles: package/usr/lib/libSDL2main.a: not a valid ELF file
>
> $ ar x ../package/usr/lib/libSDL2main.a
>
> contains only:
> SDL_dummy_main.lo
>
> Should we try a bit harder to check if the .a contains static library? In
> the meantime I'll check what's going on in libsdl2-webos build and if the
> same happens in oe-core libsdl2.
>
> Regards,
>
> On Thu, Apr 19, 2018 at 3:45 PM, <git at git.openembedded.org> wrote:
>
>> This is an automated email from the git hooks/post-receive script.
>>
>> rpurdie pushed a commit to branch master
>> in repository openembedded-core.
>>
>> commit eefa5ba35663fabe1f3f8cf7f1ff126d51240613
>> Author: Ola x Nilsson <ola.x.nilsson at axis.com>
>> AuthorDate: Thu Apr 19 13:17:30 2018 +0200
>>
>> package.bbclass: Include dbgsrc for static libs
>>
>> 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 at axis.com>
>> Signed-off-by: Ross Burton <ross.burton at intel.com>
>> ---
>> meta/classes/package.bbclass | 44 ++++++++++++++++++++++++++++++
>> ++------------
>> 1 file changed, 32 insertions(+), 12 deletions(-)
>>
>> diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
>> index 7978307..fff7ceb 100644
>> --- a/meta/classes/package.bbclass
>> +++ b/meta/classes/package.bbclass
>> @@ -344,6 +344,20 @@ def parse_debugsources_from_dwarfs
>> rcfiles_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_dwarfs
>> rcfiles_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,15 @@ python split_and_strip_files () {
>> type |= 8
>> return type
>>
>> + def isStaticLib(path):
>> + if path.endswith('.a') and not os.path.islink(path):
>> + with open(path, 'rb') as fh:
>> + # The magic must include the first slash to avoid
>> + # matching golang static libraries
>> + magic = b'!<arch>\x0a/'
>> + 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 +955,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 +968,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 +1049,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:
>>
>> --
>> To stop receiving notification emails like this one, please contact
>> the administrator of this repository.
>> --
>> _______________________________________________
>> Openembedded-commits mailing list
>> Openembedded-commits at lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-commits
>>
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
More information about the Openembedded-devel
mailing list