[oe] [oe-commits] [openembedded-core] 05/06: package.bbclass: Include dbgsrc for static libs
Martin Jansa
martin.jansa at gmail.com
Fri Apr 20 20:59:13 UTC 2018
Yes, builds fine here as well, because libSDL2main.a and libSDL2_test.a
built by oe-core version of libsdl2 contain the actual object files:
SDL_dummy_main.o
and
./SDL_test_fuzzer.o
./SDL_test_imageBlitBlend.o
./SDL_test_compare.o
./SDL_test_common.o
./SDL_test_imagePrimitives.o
./SDL_test_font.o
./SDL_test_imageFace.o
./SDL_test_memory.o
./SDL_test_assert.o
./SDL_test_md5.o
./SDL_test_log.o
./SDL_test_random.o
./SDL_test_crc32.o
./SDL_test_imagePrimitivesBlend.o
./SDL_test_imageBlit.o
./SDL_test_harness.o
not the libtool object files like this:
SDL_dummy_main.lo
# build/SDL_dummy_main.lo - a libtool object file
# Generated by libtool (GNU libtool) 2.4.2
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# Name of the PIC object.
pic_object='.libs/SDL_dummy_main.o'
# Name of the non-PIC object
non_pic_object=none
I'll fix our version of libsdl2, the point of this tread was more about
probably checking a bit harder if the .a file is not only the ar archive,
but also contains some ELF binaries.
On Fri, Apr 20, 2018 at 4:09 PM, Burton, Ross <ross.burton at intel.com> wrote:
> 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