All of lore.kernel.org
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 0/3] pmdinfogen fixes
@ 2021-01-25 22:12 Dmitry Kozlyuk
  2021-01-25 22:12 ` [dpdk-dev] [PATCH 1/3] pmdinfogen: fix build with pyelftools < 0.24 Dmitry Kozlyuk
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Dmitry Kozlyuk @ 2021-01-25 22:12 UTC (permalink / raw)
  To: dev; +Cc: Ali Alnubani, Bruce Richardson, Thomas Monjalon, Dmitry Kozlyuk

Recent pmdinfogen patches introduced regressions with older systems.
This is a follow-up cleaning the mess.

[1]: http://patchwork.dpdk.org/project/dpdk/list/?series=13153
[2]: http://patchwork.dpdk.org/project/dpdk/list/?series=14274

Dmitry Kozlyuk (3):
  pmdinfogen: fix build with pyelftools < 0.24
  buildtools: fix archive extraction for Python 3.5
  buildtools: use build subdirectory for temporary files

 buildtools/gen-pmdinfo-cfile.py |  6 +++---
 buildtools/meson.build          |  2 +-
 buildtools/pmdinfogen.py        | 20 ++++++++++++++++++--
 3 files changed, 22 insertions(+), 6 deletions(-)

-- 
2.29.2


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [dpdk-dev] [PATCH 1/3] pmdinfogen: fix build with pyelftools < 0.24
  2021-01-25 22:12 [dpdk-dev] [PATCH 0/3] pmdinfogen fixes Dmitry Kozlyuk
@ 2021-01-25 22:12 ` Dmitry Kozlyuk
  2021-01-25 22:12 ` [dpdk-dev] [PATCH 2/3] buildtools: fix archive extraction for Python 3.5 Dmitry Kozlyuk
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Dmitry Kozlyuk @ 2021-01-25 22:12 UTC (permalink / raw)
  To: dev
  Cc: Ali Alnubani, Bruce Richardson, Thomas Monjalon, Dmitry Kozlyuk,
	Neil Horman

pyelftools had some breaking changes [1] and API enhancements [2]
between 0.23 (used in Ubuntu 16.04) and 0.24. Ensure compatibility with
both legacy and modern versions.

[1]: https://github.com/eliben/pyelftools/pull/76
[2]: https://github.com/eliben/pyelftools/pull/56

Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
---
To be squashed with 043e0ba6c ("buildtools: add Python pmdinfogen").

 buildtools/pmdinfogen.py | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/buildtools/pmdinfogen.py b/buildtools/pmdinfogen.py
index 893a6c571..7a739ec7d 100755
--- a/buildtools/pmdinfogen.py
+++ b/buildtools/pmdinfogen.py
@@ -10,6 +10,7 @@
 import tempfile
 
 try:
+    import elftools
     from elftools.elf.elffile import ELFFile
     from elftools.elf.sections import SymbolTableSection
 except ImportError:
@@ -38,8 +39,13 @@ def get_value(self, offset, size):
 
 class ELFImage:
     def __init__(self, data):
+        version = tuple(int(c) for c in elftools.__version__.split("."))
+        self._legacy_elftools = version < (0, 24)
+
         self._image = ELFFile(data)
-        self._symtab = self._image.get_section_by_name(".symtab")
+
+        section = b".symtab" if self._legacy_elftools else ".symtab"
+        self._symtab = self._image.get_section_by_name(section)
         if not isinstance(self._symtab, SymbolTableSection):
             raise Exception(".symtab section is not a symbol table")
 
@@ -48,10 +54,20 @@ def is_big_endian(self):
         return not self._image.little_endian
 
     def find_by_name(self, name):
-        symbol = self._symtab.get_symbol_by_name(name)
+        symbol = self._get_symbol_by_name(name)
         return ELFSymbol(self._image, symbol[0]) if symbol else None
 
+    def _get_symbol_by_name(self, name):
+        if not self._legacy_elftools:
+            return self._symtab.get_symbol_by_name(name)
+        name = name.encode("utf-8")
+        for symbol in self._symtab.iter_symbols():
+            if symbol.name == name:
+                return [symbol]
+        return None
+
     def find_by_prefix(self, prefix):
+        prefix = prefix.encode("utf-8") if self._legacy_elftools else prefix
         for i in range(self._symtab.num_symbols()):
             symbol = self._symtab.get_symbol(i)
             if symbol.name.startswith(prefix):
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [dpdk-dev] [PATCH 2/3] buildtools: fix archive extraction for Python 3.5
  2021-01-25 22:12 [dpdk-dev] [PATCH 0/3] pmdinfogen fixes Dmitry Kozlyuk
  2021-01-25 22:12 ` [dpdk-dev] [PATCH 1/3] pmdinfogen: fix build with pyelftools < 0.24 Dmitry Kozlyuk
@ 2021-01-25 22:12 ` Dmitry Kozlyuk
  2021-01-25 22:12 ` [dpdk-dev] [PATCH 3/3] buildtools: use build subdirectory for temporary files Dmitry Kozlyuk
  2021-01-25 23:44 ` [dpdk-dev] [PATCH 0/3] pmdinfogen fixes Thomas Monjalon
  3 siblings, 0 replies; 5+ messages in thread
From: Dmitry Kozlyuk @ 2021-01-25 22:12 UTC (permalink / raw)
  To: dev; +Cc: Ali Alnubani, Bruce Richardson, Thomas Monjalon, Dmitry Kozlyuk

Python 3.5 subprocess.run() has no capture_output parameter.
Use subprocess.PIPE available in all versions.

Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
---
To be squashed with caaca1ec6 ("buildtools: support object file
extraction for Windows").

 buildtools/gen-pmdinfo-cfile.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/buildtools/gen-pmdinfo-cfile.py b/buildtools/gen-pmdinfo-cfile.py
index f1f289ffe..c60ecd7f6 100644
--- a/buildtools/gen-pmdinfo-cfile.py
+++ b/buildtools/gen-pmdinfo-cfile.py
@@ -11,7 +11,7 @@
 with tempfile.TemporaryDirectory() as temp:
     proc = subprocess.run(
         # Don't use "ar p", because its output is corrupted on Windows.
-        [ar, "xv", os.path.abspath(archive)], capture_output=True, check=True, cwd=temp
+        [ar, "xv", os.path.abspath(archive)], stdout=subprocess.PIPE, check=True, cwd=temp
     )
     lines = proc.stdout.decode().splitlines()
     names = [line[len("x - ") :] for line in lines]
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [dpdk-dev] [PATCH 3/3] buildtools: use build subdirectory for temporary files
  2021-01-25 22:12 [dpdk-dev] [PATCH 0/3] pmdinfogen fixes Dmitry Kozlyuk
  2021-01-25 22:12 ` [dpdk-dev] [PATCH 1/3] pmdinfogen: fix build with pyelftools < 0.24 Dmitry Kozlyuk
  2021-01-25 22:12 ` [dpdk-dev] [PATCH 2/3] buildtools: fix archive extraction for Python 3.5 Dmitry Kozlyuk
@ 2021-01-25 22:12 ` Dmitry Kozlyuk
  2021-01-25 23:44 ` [dpdk-dev] [PATCH 0/3] pmdinfogen fixes Thomas Monjalon
  3 siblings, 0 replies; 5+ messages in thread
From: Dmitry Kozlyuk @ 2021-01-25 22:12 UTC (permalink / raw)
  To: dev; +Cc: Ali Alnubani, Bruce Richardson, Thomas Monjalon, Dmitry Kozlyuk

Use current build directory as base for temporary directories,
so that all build files are isolated there.

Fixes: caaca1ec6a8e ("buildtools: support object file extraction for Windows")

Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
---
Thomas asked to send this as a follow-up before regression has been
noticed, may be squashed with commit mentioned above or applied on its own.

 buildtools/gen-pmdinfo-cfile.py | 4 ++--
 buildtools/meson.build          | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/buildtools/gen-pmdinfo-cfile.py b/buildtools/gen-pmdinfo-cfile.py
index c60ecd7f6..a4e080199 100644
--- a/buildtools/gen-pmdinfo-cfile.py
+++ b/buildtools/gen-pmdinfo-cfile.py
@@ -7,8 +7,8 @@
 import sys
 import tempfile
 
-_, ar, archive, output, *pmdinfogen = sys.argv
-with tempfile.TemporaryDirectory() as temp:
+_, tmp_root, ar, archive, output, *pmdinfogen = sys.argv
+with tempfile.TemporaryDirectory(dir=tmp_root) as temp:
     proc = subprocess.run(
         # Don't use "ar p", because its output is corrupted on Windows.
         [ar, "xv", os.path.abspath(archive)], stdout=subprocess.PIPE, check=True, cwd=temp
diff --git a/buildtools/meson.build b/buildtools/meson.build
index 0a2e91a7b..9c9347457 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -18,7 +18,7 @@ map_to_win_cmd = py3 + files('map_to_win.py')
 sphinx_wrapper = py3 + files('call-sphinx-build.py')
 
 # select library and object file format
-pmdinfo = py3 + files('gen-pmdinfo-cfile.py')
+pmdinfo = py3 + files('gen-pmdinfo-cfile.py') + [meson.current_build_dir()]
 pmdinfogen = py3 + files('pmdinfogen.py')
 if host_machine.system() == 'windows'
 	if cc.get_id() == 'gcc'
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [dpdk-dev] [PATCH 0/3] pmdinfogen fixes
  2021-01-25 22:12 [dpdk-dev] [PATCH 0/3] pmdinfogen fixes Dmitry Kozlyuk
                   ` (2 preceding siblings ...)
  2021-01-25 22:12 ` [dpdk-dev] [PATCH 3/3] buildtools: use build subdirectory for temporary files Dmitry Kozlyuk
@ 2021-01-25 23:44 ` Thomas Monjalon
  3 siblings, 0 replies; 5+ messages in thread
From: Thomas Monjalon @ 2021-01-25 23:44 UTC (permalink / raw)
  To: Dmitry Kozlyuk; +Cc: dev, Ali Alnubani, Bruce Richardson

25/01/2021 23:12, Dmitry Kozlyuk:
> Recent pmdinfogen patches introduced regressions with older systems.
> This is a follow-up cleaning the mess.
> 
> [1]: http://patchwork.dpdk.org/project/dpdk/list/?series=13153
> [2]: http://patchwork.dpdk.org/project/dpdk/list/?series=14274
> 
> Dmitry Kozlyuk (3):
>   pmdinfogen: fix build with pyelftools < 0.24
>   buildtools: fix archive extraction for Python 3.5
>   buildtools: use build subdirectory for temporary files

Applied, thanks for the quick fixes.




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-01-25 23:45 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-25 22:12 [dpdk-dev] [PATCH 0/3] pmdinfogen fixes Dmitry Kozlyuk
2021-01-25 22:12 ` [dpdk-dev] [PATCH 1/3] pmdinfogen: fix build with pyelftools < 0.24 Dmitry Kozlyuk
2021-01-25 22:12 ` [dpdk-dev] [PATCH 2/3] buildtools: fix archive extraction for Python 3.5 Dmitry Kozlyuk
2021-01-25 22:12 ` [dpdk-dev] [PATCH 3/3] buildtools: use build subdirectory for temporary files Dmitry Kozlyuk
2021-01-25 23:44 ` [dpdk-dev] [PATCH 0/3] pmdinfogen fixes Thomas Monjalon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.