[2/2] packages.bbclass: Break out the debug info styles to bitbake variables

Message ID 20220131213954.29887-2-pkj@axis.com
State New
Headers show
Series [1/2] glibc-tests: Correct PACKAGE_DEBUG_SPLIT_STYLE | expand

Commit Message

Peter Kjellerstedt Jan. 31, 2022, 9:39 p.m. UTC
Break out the hardcoded values for the various debug info styles from
split_and_strip_files() into bitbake variables. This allows the debug
info styles to be adopted, and also allows new styles to be added
(within the limits of the available variables).

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
---
 meta/classes/package.bbclass | 95 ++++++++++++++++++++++--------------
 1 file changed, 58 insertions(+), 37 deletions(-)

Comments

Richard Purdie Feb. 1, 2022, 8:13 a.m. UTC | #1
On Mon, 2022-01-31 at 22:39 +0100, Peter Kjellerstedt wrote:
> Break out the hardcoded values for the various debug info styles from
> split_and_strip_files() into bitbake variables. This allows the debug
> info styles to be adopted, and also allows new styles to be added
> (within the limits of the available variables).
> 
> Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
> ---
>  meta/classes/package.bbclass | 95 ++++++++++++++++++++++--------------
>  1 file changed, 58 insertions(+), 37 deletions(-)
> 
> diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
> index 4927fb99ff..a5358d5851 100644
> --- a/meta/classes/package.bbclass
> +++ b/meta/classes/package.bbclass
> @@ -1065,6 +1065,51 @@ python fixup_perms () {
>                      fix_perms(each_file, fs_perms_table[dir].fmode, fs_perms_table[dir].fuid, fs_perms_table[dir].fgid, dir)
>  }
>  
> +# Debug info
> +PACKAGE_DEBUG_APPEND = "${@d.getVarFlag('PACKAGE_DEBUG_APPEND', d.getVar('PACKAGE_DEBUG_SPLIT_STYLE'))}"
> +PACKAGE_DEBUG_STATICAPPEND = "${@d.getVarFlag('PACKAGE_DEBUG_STATICAPPEND', d.getVar('PACKAGE_DEBUG_SPLIT_STYLE'))}"
> +PACKAGE_DEBUG_DIR = "${@d.getVarFlag('PACKAGE_DEBUG_DIR', d.getVar('PACKAGE_DEBUG_SPLIT_STYLE'))}"
> +PACKAGE_DEBUG_STATICDIR = "${@d.getVarFlag('PACKAGE_DEBUG_STATICDIR', d.getVar('PACKAGE_DEBUG_SPLIT_STYLE'))}"
> +PACKAGE_DEBUG_LIBDIR = "${@d.getVarFlag('PACKAGE_DEBUG_LIBDIR', d.getVar('PACKAGE_DEBUG_SPLIT_STYLE'))}"
> +PACKAGE_DEBUG_STATICLIBDIR = "${@d.getVarFlag('PACKAGE_DEBUG_STATICLIBDIR', d.getVar('PACKAGE_DEBUG_SPLIT_STYLE'))}"
> +PACKAGE_DEBUG_SRCDIR = "${@d.getVarFlag('PACKAGE_DEBUG_SRCDIR', d.getVar('PACKAGE_DEBUG_SPLIT_STYLE'))}"
> +
> +# Original OE-core, a.k.a. ".debug", style debug info
> +PACKAGE_DEBUG_APPEND[.debug] = ""
> +PACKAGE_DEBUG_STATICAPPEND[.debug] = ""
> +PACKAGE_DEBUG_DIR[.debug] = "/.debug"
> +PACKAGE_DEBUG_STATICDIR[.debug] = "/.debug-static"
> +PACKAGE_DEBUG_LIBDIR[.debug] = ""
> +PACKAGE_DEBUG_STATICLIBDIR[.debug] = ""
> +PACKAGE_DEBUG_SRCDIR[.debug] = "/usr/src/debug"
> +
> +# Single debug-file-directory style debug info
> +PACKAGE_DEBUG_APPEND[debug-file-directory] = ".debug"
> +PACKAGE_DEBUG_STATICAPPEND[debug-file-directory] = ""
> +PACKAGE_DEBUG_DIR[debug-file-directory] = ""
> +PACKAGE_DEBUG_STATICDIR[debug-file-directory] = ""
> +PACKAGE_DEBUG_LIBDIR[debug-file-directory] = "/usr/lib/debug"
> +PACKAGE_DEBUG_STATICLIBDIR[debug-file-directory] = "/usr/lib/debug-static"
> +PACKAGE_DEBUG_SRCDIR[debug-file-directory] = "/usr/src/debug"
> +
> +# Debug info without sources in /usr/src/debug
> +PACKAGE_DEBUG_APPEND[debug-without-src] = ""
> +PACKAGE_DEBUG_STATICAPPEND[debug-without-src] = ""
> +PACKAGE_DEBUG_DIR[debug-without-src] = "/.debug"
> +PACKAGE_DEBUG_STATICDIR[debug-without-src] = "/.debug-static"
> +PACKAGE_DEBUG_LIBDIR[debug-without-src] = ""
> +PACKAGE_DEBUG_STATICLIBDIR[debug-without-src] = ""
> +PACKAGE_DEBUG_SRCDIR[debug-without-src] = ""
> +
> +# Debug info with separate -src packages
> +PACKAGE_DEBUG_APPEND[debug-with-srcpkg] = ""
> +PACKAGE_DEBUG_STATICAPPEND[debug-with-srcpkg] = ""
> +PACKAGE_DEBUG_DIR[debug-with-srcpkg] = "/.debug"
> +PACKAGE_DEBUG_STATICDIR[debug-with-srcpkg] = "/.debug-static"
> +PACKAGE_DEBUG_LIBDIR[debug-with-srcpkg] = ""
> +PACKAGE_DEBUG_STATICLIBDIR[debug-with-srcpkg] = ""
> +PACKAGE_DEBUG_SRCDIR[debug-with-srcpkg] = "/usr/src/debug"
> +
>  python split_and_strip_files () {
>      import stat, errno
>      import subprocess


I can see what you've done and why but I'm not really sure this is an
improvement, it adds a ton of "global" variables which are only every used in a
very specific use case. I'm also particularly not keen on mapping the flags into
the real variables with online python. It isn't going to help our overall
parsing performance in the long run.

I'm torn on it but at least wanted to share my first thoughts looking at it...

Cheers,

Richard

Patch

diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 4927fb99ff..a5358d5851 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -1065,6 +1065,51 @@  python fixup_perms () {
                     fix_perms(each_file, fs_perms_table[dir].fmode, fs_perms_table[dir].fuid, fs_perms_table[dir].fgid, dir)
 }
 
+# Debug info
+PACKAGE_DEBUG_APPEND = "${@d.getVarFlag('PACKAGE_DEBUG_APPEND', d.getVar('PACKAGE_DEBUG_SPLIT_STYLE'))}"
+PACKAGE_DEBUG_STATICAPPEND = "${@d.getVarFlag('PACKAGE_DEBUG_STATICAPPEND', d.getVar('PACKAGE_DEBUG_SPLIT_STYLE'))}"
+PACKAGE_DEBUG_DIR = "${@d.getVarFlag('PACKAGE_DEBUG_DIR', d.getVar('PACKAGE_DEBUG_SPLIT_STYLE'))}"
+PACKAGE_DEBUG_STATICDIR = "${@d.getVarFlag('PACKAGE_DEBUG_STATICDIR', d.getVar('PACKAGE_DEBUG_SPLIT_STYLE'))}"
+PACKAGE_DEBUG_LIBDIR = "${@d.getVarFlag('PACKAGE_DEBUG_LIBDIR', d.getVar('PACKAGE_DEBUG_SPLIT_STYLE'))}"
+PACKAGE_DEBUG_STATICLIBDIR = "${@d.getVarFlag('PACKAGE_DEBUG_STATICLIBDIR', d.getVar('PACKAGE_DEBUG_SPLIT_STYLE'))}"
+PACKAGE_DEBUG_SRCDIR = "${@d.getVarFlag('PACKAGE_DEBUG_SRCDIR', d.getVar('PACKAGE_DEBUG_SPLIT_STYLE'))}"
+
+# Original OE-core, a.k.a. ".debug", style debug info
+PACKAGE_DEBUG_APPEND[.debug] = ""
+PACKAGE_DEBUG_STATICAPPEND[.debug] = ""
+PACKAGE_DEBUG_DIR[.debug] = "/.debug"
+PACKAGE_DEBUG_STATICDIR[.debug] = "/.debug-static"
+PACKAGE_DEBUG_LIBDIR[.debug] = ""
+PACKAGE_DEBUG_STATICLIBDIR[.debug] = ""
+PACKAGE_DEBUG_SRCDIR[.debug] = "/usr/src/debug"
+
+# Single debug-file-directory style debug info
+PACKAGE_DEBUG_APPEND[debug-file-directory] = ".debug"
+PACKAGE_DEBUG_STATICAPPEND[debug-file-directory] = ""
+PACKAGE_DEBUG_DIR[debug-file-directory] = ""
+PACKAGE_DEBUG_STATICDIR[debug-file-directory] = ""
+PACKAGE_DEBUG_LIBDIR[debug-file-directory] = "/usr/lib/debug"
+PACKAGE_DEBUG_STATICLIBDIR[debug-file-directory] = "/usr/lib/debug-static"
+PACKAGE_DEBUG_SRCDIR[debug-file-directory] = "/usr/src/debug"
+
+# Debug info without sources in /usr/src/debug
+PACKAGE_DEBUG_APPEND[debug-without-src] = ""
+PACKAGE_DEBUG_STATICAPPEND[debug-without-src] = ""
+PACKAGE_DEBUG_DIR[debug-without-src] = "/.debug"
+PACKAGE_DEBUG_STATICDIR[debug-without-src] = "/.debug-static"
+PACKAGE_DEBUG_LIBDIR[debug-without-src] = ""
+PACKAGE_DEBUG_STATICLIBDIR[debug-without-src] = ""
+PACKAGE_DEBUG_SRCDIR[debug-without-src] = ""
+
+# Debug info with separate -src packages
+PACKAGE_DEBUG_APPEND[debug-with-srcpkg] = ""
+PACKAGE_DEBUG_STATICAPPEND[debug-with-srcpkg] = ""
+PACKAGE_DEBUG_DIR[debug-with-srcpkg] = "/.debug"
+PACKAGE_DEBUG_STATICDIR[debug-with-srcpkg] = "/.debug-static"
+PACKAGE_DEBUG_LIBDIR[debug-with-srcpkg] = ""
+PACKAGE_DEBUG_STATICLIBDIR[debug-with-srcpkg] = ""
+PACKAGE_DEBUG_SRCDIR[debug-with-srcpkg] = "/usr/src/debug"
+
 python split_and_strip_files () {
     import stat, errno
     import subprocess
@@ -1076,42 +1121,18 @@  python split_and_strip_files () {
     oldcwd = os.getcwd()
     os.chdir(dvar)
 
-    # We default to '.debug' style
-    if d.getVar('PACKAGE_DEBUG_SPLIT_STYLE') == 'debug-file-directory':
-        # Single debug-file-directory style debug info
-        debugappend = ".debug"
-        debugstaticappend = ""
-        debugdir = ""
-        debugstaticdir = ""
-        debuglibdir = "/usr/lib/debug"
-        debugstaticlibdir = "/usr/lib/debug-static"
-        debugsrcdir = "/usr/src/debug"
-    elif d.getVar('PACKAGE_DEBUG_SPLIT_STYLE') == 'debug-without-src':
-        # Original OE-core, a.k.a. ".debug", style debug info, but without sources in /usr/src/debug
-        debugappend = ""
-        debugstaticappend = ""
-        debugdir = "/.debug"
-        debugstaticdir = "/.debug-static"
-        debuglibdir = ""
-        debugstaticlibdir = ""
-        debugsrcdir = ""
-    elif d.getVar('PACKAGE_DEBUG_SPLIT_STYLE') == 'debug-with-srcpkg':
-        debugappend = ""
-        debugstaticappend = ""
-        debugdir = "/.debug"
-        debugstaticdir = "/.debug-static"
-        debuglibdir = ""
-        debugstaticlibdir = ""
-        debugsrcdir = "/usr/src/debug"
-    else:
-        # Original OE-core, a.k.a. ".debug", style debug info
-        debugappend = ""
-        debugstaticappend = ""
-        debugdir = "/.debug"
-        debugstaticdir = "/.debug-static"
-        debuglibdir = ""
-        debugstaticlibdir = ""
-        debugsrcdir = "/usr/src/debug"
+    # Sanity test that PACKAGE_DEBUG_SPLIT_STYLE has a valid value.
+    if d.getVarFlag('PACKAGE_DEBUG_APPEND', d.getVar('PACKAGE_DEBUG_SPLIT_STYLE')) is None:
+        bb.fatal("Unknown PACKAGE_DEBUG_SPLIT_STYLE specified: %s" %
+                 d.getVar('PACKAGE_DEBUG_SPLIT_STYLE'))
+
+    debugappend = d.getVar('PACKAGE_DEBUG_APPEND')
+    debugstaticappend = d.getVar('PACKAGE_DEBUG_STATICAPPEND')
+    debugdir = d.getVar('PACKAGE_DEBUG_DIR')
+    debugstaticdir = d.getVar('PACKAGE_DEBUG_STATICDIR')
+    debuglibdir = d.getVar('PACKAGE_DEBUG_LIBDIR')
+    debugstaticlibdir = d.getVar('PACKAGE_DEBUG_STATICLIBDIR')
+    debugsrcdir = d.getVar('PACKAGE_DEBUG_SRCDIR')
 
     #
     # First lets figure out all of the files we may have to process ... do this only once!
@@ -1338,7 +1359,7 @@  python populate_packages () {
     
     autodebug = not (d.getVar("NOAUTOPACKAGEDEBUG") or False)
 
-    split_source_package = (d.getVar('PACKAGE_DEBUG_SPLIT_STYLE') == 'debug-with-srcpkg')
+    split_source_package = (d.getVar('PACKAGE_DEBUG_SPLIT_STYLE').endswith('-with-srcpkg'))
 
     # If debug-with-srcpkg mode is enabled then add the source package if it
     # doesn't exist and add the source file contents to the source package.