Re: [PATCH v11 0/5] Introduce Python bindings for libfdt

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



On Fri, Mar 17, 2017 at 04:14:29PM -0600, Simon Glass wrote:
> At present libfdt consists of only a C implementation. Many scripts are
> written using Python so it useful to have Python bindings for libfdt.
> Apparently this has never been attempted before, or if so I cannot find a
> reference.
> 
> This series starts the process of adding this support, with just a
> bare-bones set of methods.
> 
> The v11 series provides binding that can be used like this:
> 
>     fdt = libfdt.Fdt(open(fname).read())
>     node = fdt.path_offset('/subnode@1')
>     print fdt.get_prop(node, 'compatible')
>     subnode = fdt.first_subnode(node, quiet=[libfdt.NOTFOUND])
>     while subnode > 0:
>         print fdt.get_name(subnode)
>         subnode = fdt.next_subnode(subnode, quiet=[libfdt.NOTFOUND])
> 
> This version includes a simple class for properties.

Applied to master.  I made a small change in the last patch, so that
the error message when the python packages aren't installed is less
scary looking.

> 
> Changes in v11:
> - Show test output always
> 
> Changes in v10:
> - Show test output when there are failures
> 
> Changes in v9:
> - Drop PYLIBFDT_CLEANFILES
> - Add _libfdt.so to PYLIBFDT_cleanfiles
> - Support 'make clean' properly with pylibfdt
> - Move run_tests.sh updates to this patch
> - Only run the pylibfdt tests automatically if we can build pylibfdt
> - Update commit message to reflect swig/Python.h detection
> - Update Makefile shell command to support dash shell
> 
> Changes in v8:
> - Fix up setup.py name and author
> - Move QUITE_ALL into a single assignment
> - Drop fdt32_to_cpu()
> - Adjust fdt_get_property_by_offset() to rely on the typemap more
> - Move pylibfdt_copy_value(() functionality into a typemap
> - Add an fdt parameter to the [const] void * typemaps
> - Create an output typemap for struct fdt_property *
> - Drop the arg4 TODO comment
> - Avoid using hard-coded offsets (ROOT_PROPS)
> - Use types.ModuleType instead of type(str)
> - Compare exception number instead of using a regex
> - Avoid using hard-coded size
> - Drop testEndian()
> - Move the changes to run_tests.sh to a later commit
> - Add comments to testPropertyOffsetExceptions()
> - Drop all the namelen functions from the Python bindings
> - Only build pylibfdt if we have swig and Python.h
> 
> Changes in v7:
> - Add QUIET_ALL to silence all exceptions
> - Add a test for QUIET_ALL
> 
> Changes in v6:
> - Use a tuple instead of list for the default quiet parameter
> - Use a tuple instead of list for QUIET_NOTFOUND
> - Use 'list' instead of 'tuple' for the comment in check_err_null()
> - Return a bytearray from getprop()
> - Adjust the Property constructor to accept the name and value
> - Use uint8_t for pylibfdt_copy_value
> - Adjust tests to avoid checking a hard-coded offset
> - Use 0 instead of self.fdt.path_offset('/')
> - Adjust the totalsize() test to compare against the file size
> - Adjust test result processing to avoid using awk
> - Update example to print the node value as an integer
> - Update example to print the bytestring as well as the string
> 
> Changes in v5:
> - Use a 'quiet' parameter instead of quiet versions of functions
> - Add a Property object to hold a property's name and value
> - Drop the data() and string() functions which are not needed now
> - Rename pylibfdt_copy_data() tp pylibfdt_copy_value()
> - Change order of libfdt.h inclusion to avoid #ifdef around libfdt macros
> - Drop fdt_offset_ptr() and fdt_getprop_namelen() from the swig interface
> - Use $(SWIG) to call swig from the Makefile
> - Review function comments
> - Adjust tests to match new swig bindings
> - Use an interactive session to demonstrate pylibfdt
> - Mention that more work remains
> - Update commit message
> - Drop #ifdef around fdt_get_header() macros
> - Fix 'possible' typo
> 
> Changes in v4:
> - Make the library less pythonic to avoid a shaky illusion
> - Drop classes for Node and Prop, along with associated methods
> - Include libfdt.h instead of repeating it
> - Add support for fdt_getprop()
> - Bring in all libfdt functions (but Python support is missing for many)
> - Add full comments for Python methods
> - Drop tests that are no-longer applicable
> - Add a get for getprop()
> - Add new patch to adjust libfdt.h to work with swig
> 
> Changes in v3:
> - Make the library more pythonic
> - Add classes for Node and Prop along with methods
> - Add an exception class
> - Use Python to generate exeptions instead of SWIG
> - Add some more tests
> 
> Changes in v2:
> - Add exceptions when functions return an error
> - Correct Python naming to following PEP8
> - Use a class to encapsulate the various methods
> - Include fdt.h instead of redefining struct fdt_property
> - Use bytearray to avoid the SWIG warning 454
> - Add comments
> - Update tests for new pylibfdt
> - Add a few more tests to increase coverage
> - Add details on how to obtain full help and code coverage
> 
> Simon Glass (5):
>   Add an initial Python library for libfdt
>   Add tests for pylibfdt
>   Mention pylibfdt in the documentation
>   Adjust libfdt.h to work with swig
>   Build pylibfdt as part of the normal build process
> 
>  Makefile                   |  35 +++-
>  README                     |  47 +++++
>  libfdt/libfdt.h            |  21 ++-
>  pylibfdt/.gitignore        |   3 +
>  pylibfdt/Makefile.pylibfdt |  17 ++
>  pylibfdt/libfdt.swig       | 433 +++++++++++++++++++++++++++++++++++++++++++++
>  pylibfdt/setup.py          |  34 ++++
>  tests/pylibfdt_tests.py    | 288 ++++++++++++++++++++++++++++++
>  tests/run_tests.sh         |  28 +++
>  9 files changed, 903 insertions(+), 3 deletions(-)
>  create mode 100644 pylibfdt/.gitignore
>  create mode 100644 pylibfdt/Makefile.pylibfdt
>  create mode 100644 pylibfdt/libfdt.swig
>  create mode 100644 pylibfdt/setup.py
>  create mode 100644 tests/pylibfdt_tests.py
> 

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux