diff options
-rw-r--r-- | meta/classes/insane.bbclass | 2 | ||||
-rw-r--r-- | meta/classes/package.bbclass | 67 | ||||
-rw-r--r-- | meta/conf/bitbake.conf | 2 |
3 files changed, 66 insertions, 5 deletions
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass index 795c7b9212..7425b8cbd5 100644 --- a/meta/classes/insane.bbclass +++ b/meta/classes/insane.bbclass | |||
@@ -182,7 +182,7 @@ def package_qa_check_staticdev(path, name, d, elf, messages): | |||
182 | libgcc.a, libgcov.a will be skipped in their packages | 182 | libgcc.a, libgcov.a will be skipped in their packages |
183 | """ | 183 | """ |
184 | 184 | ||
185 | if not name.endswith("-pic") and not name.endswith("-staticdev") and not name.endswith("-ptest") and path.endswith(".a") and not path.endswith("_nonshared.a"): | 185 | if not name.endswith("-pic") and not name.endswith("-staticdev") and not name.endswith("-ptest") and path.endswith(".a") and not path.endswith("_nonshared.a") and not '/usr/lib/debug-static/' in path and not '/.debug-static/' in path: |
186 | package_qa_add_message(messages, "staticdev", "non -staticdev package contains static .a library: %s path '%s'" % \ | 186 | package_qa_add_message(messages, "staticdev", "non -staticdev package contains static .a library: %s path '%s'" % \ |
187 | (name, package_qa_clean_path(path,d))) | 187 | (name, package_qa_clean_path(path,d))) |
188 | 188 | ||
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index 7080d63287..1efc396ac6 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass | |||
@@ -416,6 +416,49 @@ def splitdebuginfo(file, dvar, debugdir, debuglibdir, debugappend, debugsrcdir, | |||
416 | 416 | ||
417 | return (file, sources) | 417 | return (file, sources) |
418 | 418 | ||
419 | def splitstaticdebuginfo(file, dvar, debugstaticdir, debugstaticlibdir, debugstaticappend, debugsrcdir, d): | ||
420 | # Unlike the function above, there is no way to split a static library | ||
421 | # two components. So to get similar results we will copy the unmodified | ||
422 | # static library (containing the debug symbols) into a new directory. | ||
423 | # We will then strip (preserving symbols) the static library in the | ||
424 | # typical location. | ||
425 | # | ||
426 | # return a mapping of files:debugsources | ||
427 | |||
428 | import stat | ||
429 | import shutil | ||
430 | |||
431 | src = file[len(dvar):] | ||
432 | dest = debugstaticlibdir + os.path.dirname(src) + debugstaticdir + "/" + os.path.basename(src) + debugstaticappend | ||
433 | debugfile = dvar + dest | ||
434 | sources = [] | ||
435 | |||
436 | # Copy the file... | ||
437 | bb.utils.mkdirhier(os.path.dirname(debugfile)) | ||
438 | #bb.note("Copy %s -> %s" % (file, debugfile)) | ||
439 | |||
440 | dvar = d.getVar('PKGD') | ||
441 | |||
442 | newmode = None | ||
443 | if not os.access(file, os.W_OK) or os.access(file, os.R_OK): | ||
444 | origmode = os.stat(file)[stat.ST_MODE] | ||
445 | newmode = origmode | stat.S_IWRITE | stat.S_IREAD | ||
446 | os.chmod(file, newmode) | ||
447 | |||
448 | # We need to extract the debug src information here... | ||
449 | if debugsrcdir: | ||
450 | sources = source_info(file, d) | ||
451 | |||
452 | bb.utils.mkdirhier(os.path.dirname(debugfile)) | ||
453 | |||
454 | # Copy the unmodified item to the debug directory | ||
455 | shutil.copy2(file, debugfile) | ||
456 | |||
457 | if newmode: | ||
458 | os.chmod(file, origmode) | ||
459 | |||
460 | return (file, sources) | ||
461 | |||
419 | def copydebugsources(debugsrcdir, sources, d): | 462 | def copydebugsources(debugsrcdir, sources, d): |
420 | # The debug src information written out to sourcefile is further processed | 463 | # The debug src information written out to sourcefile is further processed |
421 | # and copied to the destination here. | 464 | # and copied to the destination here. |
@@ -916,25 +959,37 @@ python split_and_strip_files () { | |||
916 | if d.getVar('PACKAGE_DEBUG_SPLIT_STYLE') == 'debug-file-directory': | 959 | if d.getVar('PACKAGE_DEBUG_SPLIT_STYLE') == 'debug-file-directory': |
917 | # Single debug-file-directory style debug info | 960 | # Single debug-file-directory style debug info |
918 | debugappend = ".debug" | 961 | debugappend = ".debug" |
962 | debugstaticappend = "" | ||
919 | debugdir = "" | 963 | debugdir = "" |
964 | debugstaticdir = "" | ||
920 | debuglibdir = "/usr/lib/debug" | 965 | debuglibdir = "/usr/lib/debug" |
966 | debugstaticlibdir = "/usr/lib/debug-static" | ||
921 | debugsrcdir = "/usr/src/debug" | 967 | debugsrcdir = "/usr/src/debug" |
922 | elif d.getVar('PACKAGE_DEBUG_SPLIT_STYLE') == 'debug-without-src': | 968 | elif d.getVar('PACKAGE_DEBUG_SPLIT_STYLE') == 'debug-without-src': |
923 | # Original OE-core, a.k.a. ".debug", style debug info, but without sources in /usr/src/debug | 969 | # Original OE-core, a.k.a. ".debug", style debug info, but without sources in /usr/src/debug |
924 | debugappend = "" | 970 | debugappend = "" |
971 | debugstaticappend = "" | ||
925 | debugdir = "/.debug" | 972 | debugdir = "/.debug" |
973 | debugstaticdir = "/.debug-static" | ||
926 | debuglibdir = "" | 974 | debuglibdir = "" |
975 | debugstaticlibdir = "" | ||
927 | debugsrcdir = "" | 976 | debugsrcdir = "" |
928 | elif d.getVar('PACKAGE_DEBUG_SPLIT_STYLE') == 'debug-with-srcpkg': | 977 | elif d.getVar('PACKAGE_DEBUG_SPLIT_STYLE') == 'debug-with-srcpkg': |
929 | debugappend = "" | 978 | debugappend = "" |
979 | debugstaticappend = "" | ||
930 | debugdir = "/.debug" | 980 | debugdir = "/.debug" |
981 | debugstaticdir = "/.debug-static" | ||
931 | debuglibdir = "" | 982 | debuglibdir = "" |
983 | debugstaticlibdir = "" | ||
932 | debugsrcdir = "/usr/src/debug" | 984 | debugsrcdir = "/usr/src/debug" |
933 | else: | 985 | else: |
934 | # Original OE-core, a.k.a. ".debug", style debug info | 986 | # Original OE-core, a.k.a. ".debug", style debug info |
935 | debugappend = "" | 987 | debugappend = "" |
988 | debugstaticappend = "" | ||
936 | debugdir = "/.debug" | 989 | debugdir = "/.debug" |
990 | debugstaticdir = "/.debug-static" | ||
937 | debuglibdir = "" | 991 | debuglibdir = "" |
992 | debugstaticlibdir = "" | ||
938 | debugsrcdir = "/usr/src/debug" | 993 | debugsrcdir = "/usr/src/debug" |
939 | 994 | ||
940 | # | 995 | # |
@@ -1051,8 +1106,11 @@ python split_and_strip_files () { | |||
1051 | results = oe.utils.multiprocess_launch(splitdebuginfo, list(elffiles), d, extraargs=(dvar, debugdir, debuglibdir, debugappend, debugsrcdir, d)) | 1106 | results = oe.utils.multiprocess_launch(splitdebuginfo, list(elffiles), d, extraargs=(dvar, debugdir, debuglibdir, debugappend, debugsrcdir, d)) |
1052 | 1107 | ||
1053 | if debugsrcdir and not targetos.startswith("mingw"): | 1108 | if debugsrcdir and not targetos.startswith("mingw"): |
1054 | for file in staticlibs: | 1109 | if (d.getVar('PACKAGE_DEBUG_STATIC_SPLIT') == '1'): |
1055 | results.append( (file, source_info(file, d, fatal=False)) ) | 1110 | results = oe.utils.multiprocess_launch(splitstaticdebuginfo, staticlibs, d, extraargs=(dvar, debugstaticdir, debugstaticlibdir, debugstaticappend, debugsrcdir, d)) |
1111 | else: | ||
1112 | for file in staticlibs: | ||
1113 | results.append( (file,source_info(file, d)) ) | ||
1056 | 1114 | ||
1057 | sources = set() | 1115 | sources = set() |
1058 | for r in results: | 1116 | for r in results: |
@@ -1121,6 +1179,9 @@ python split_and_strip_files () { | |||
1121 | sfiles.append((file, elf_file, strip)) | 1179 | sfiles.append((file, elf_file, strip)) |
1122 | for f in kernmods: | 1180 | for f in kernmods: |
1123 | sfiles.append((f, 16, strip)) | 1181 | sfiles.append((f, 16, strip)) |
1182 | if (d.getVar('PACKAGE_STRIP_STATIC') == '1' or d.getVar('PACKAGE_DEBUG_STATIC_SPLIT') == '1'): | ||
1183 | for f in staticlibs: | ||
1184 | sfiles.append((f, 16, strip)) | ||
1124 | 1185 | ||
1125 | oe.utils.multiprocess_launch(oe.package.runstrip, sfiles, d) | 1186 | oe.utils.multiprocess_launch(oe.package.runstrip, sfiles, d) |
1126 | 1187 | ||
@@ -1188,7 +1249,7 @@ python populate_packages () { | |||
1188 | dir = os.sep | 1249 | dir = os.sep |
1189 | for f in (files + dirs): | 1250 | for f in (files + dirs): |
1190 | path = "." + os.path.join(dir, f) | 1251 | path = "." + os.path.join(dir, f) |
1191 | if "/.debug/" in path or path.endswith("/.debug"): | 1252 | if "/.debug/" in path or "/.debug-static/" in path or path.endswith("/.debug"): |
1192 | debug.append(path) | 1253 | debug.append(path) |
1193 | 1254 | ||
1194 | for pkg in packages: | 1255 | for pkg in packages: |
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index 8b4621f9b9..954c06b313 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf | |||
@@ -325,7 +325,7 @@ FILES_${PN}-staticdev = "${libdir}/*.a ${base_libdir}/*.a ${libdir}/${BPN}/*.a" | |||
325 | SECTION_${PN}-staticdev = "devel" | 325 | SECTION_${PN}-staticdev = "devel" |
326 | RDEPENDS_${PN}-staticdev = "${PN}-dev (= ${EXTENDPKGV})" | 326 | RDEPENDS_${PN}-staticdev = "${PN}-dev (= ${EXTENDPKGV})" |
327 | 327 | ||
328 | FILES_${PN}-dbg = "/usr/lib/debug /usr/src/debug" | 328 | FILES_${PN}-dbg = "/usr/lib/debug /usr/lib/debug-static /usr/src/debug" |
329 | SECTION_${PN}-dbg = "devel" | 329 | SECTION_${PN}-dbg = "devel" |
330 | ALLOW_EMPTY_${PN}-dbg = "1" | 330 | ALLOW_EMPTY_${PN}-dbg = "1" |
331 | 331 | ||