[OE-core] [PATCH v2] package.py: New EXTRA_STRIPFLAGS variable
Ulf Magnusson
ulfalizer at gmail.com
Tue Oct 25 11:29:47 UTC 2016
On Tue, Oct 25, 2016 at 1:18 PM, Ulf Magnusson <ulfalizer at gmail.com> wrote:
> On Tue, Oct 25, 2016 at 12:23 PM, Michael Blättler
> <michael.blaettler at siemens.com> wrote:
>> The EXTRA_STRIPFLAGS variable can be used to pass additional parameters to the strip command.
>> This can be used to remove additional sections or to keep symbols.
>> The removal of additional sections can be useful to enable reproducible builds.
>> Sections which contain paths or md5sums of the debug binaries (like gnu_debuglink)
>> can be eliminated with this flag.
>>
>> Signed-off-by: Pascal Bach <pascal.bach at siemens.com>
>> Signed-off-by: Michael Blättler <michael.blaettler at siemens.com>
>> ---
>> meta/classes/package.bbclass | 5 +++--
>> meta/lib/oe/package.py | 13 ++++++-------
>> 2 files changed, 9 insertions(+), 9 deletions(-)
>>
>> diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
>> index a6f0a7a..05b92a8 100644
>> --- a/meta/classes/package.bbclass
>> +++ b/meta/classes/package.bbclass
>> @@ -1055,14 +1055,15 @@ python split_and_strip_files () {
>> # Now lets go back over things and strip them
>> #
>> if (d.getVar('INHIBIT_PACKAGE_STRIP', True) != '1'):
>> + extraflags = d.getVar('EXTRA_STRIPFLAGS', False)
>
> Why False? That means you can't do e.g.
>
> EXTRA_STRIPFLAGS = "${EXTRA_STRIPSFLAGS_HELPER}"
>
> or
>
> EXTRA_STRIPFLAGS = "${@calculate_extra_stripflags()}"
>
>> strip = d.getVar("STRIP", True)
>> sfiles = []
>> for file in elffiles:
>> elf_file = int(elffiles[file])
>> #bb.note("Strip %s" % file)
>> - sfiles.append((file, elf_file, strip))
>> + sfiles.append((file, elf_file, strip, extraflags))
>> for f in kernmods:
>> - sfiles.append((f, 16, strip))
>> + sfiles.append((f, 16, strip, extraflags))
>>
>> oe.utils.multiprocess_exec(sfiles, oe.package.runstrip)
>>
>> diff --git a/meta/lib/oe/package.py b/meta/lib/oe/package.py
>> index 02642f2..757044a 100644
>> --- a/meta/lib/oe/package.py
>> +++ b/meta/lib/oe/package.py
>> @@ -10,7 +10,7 @@ def runstrip(arg):
>>
>> import stat, subprocess
>>
>> - (file, elftype, strip) = arg
>> + (file, elftype, strip, extraflags) = arg
>>
>> newmode = None
>> if not os.access(file, os.W_OK) or os.access(file, os.R_OK):
>> @@ -18,17 +18,16 @@ def runstrip(arg):
>> newmode = origmode | stat.S_IWRITE | stat.S_IREAD
>> os.chmod(file, newmode)
>>
>> - extraflags = ""
>> -
>> - # kernel module
>> + extraflags += ' '
>
> I'd remove this line and add an extra space to the beginning of the +=
> values below, but no biggie.
>
>> + # kernel module
>> if elftype & 16:
>> - extraflags = "--strip-debug --remove-section=.comment --remove-section=.note --preserve-dates"
>> + extraflags += "--strip-debug --remove-section=.comment --remove-section=.note --preserve-dates"
>> # .so and shared library
>> elif ".so" in file and elftype & 8:
>> - extraflags = "--remove-section=.comment --remove-section=.note --strip-unneeded"
>> + extraflags += "--remove-section=.comment --remove-section=.note --strip-unneeded"
>> # shared or executable:
>> elif elftype & 8 or elftype & 4:
>> - extraflags = "--remove-section=.comment --remove-section=.note"
>> + extraflags += "--remove-section=.comment --remove-section=.note"
>>
>> stripcmd = "'%s' %s '%s'" % (strip, extraflags, file)
>> bb.debug(1, "runstrip: %s" % stripcmd)
>> --
>> 2.1.4
>>
>> --
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core at lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
> Cheers,
> Ulf
This might still have issues if EXTRA_STRIPFLAGS is unset by the way.
Maybe you want the following, to avoid extraflags becoming None:
extraflags = d.getVar('EXTRA_STRIPFLAGS', True) or ""
Cheers,
Ulf
More information about the Openembedded-core
mailing list