Add an automated script to update wl_shm.format
authorSimon Ser <contact@emersion.fr>
Mon, 2 Sep 2019 17:51:02 +0000 (20:51 +0300)
committerPekka Paalanen <pq@iki.fi>
Fri, 6 Sep 2019 12:09:22 +0000 (12:09 +0000)
commit8854f64baeec50ebb0fe5af748574c290cce0682
tree100846cc1aa2be5d05aa8d65cb7191bc46c542ad
parentcd9b3ef0cd2d6b6c5a07e07759699956af77555d
Add an automated script to update wl_shm.format

This prevents mismatches and missing formats between wl_shm.formats and
drm_fourcc.h.

The script collects DRM_FORMAT_* constants from drm_fourcc.h, compares the list
with the current wayland.xml entries (checking for any mismatch) and then
appends missing entries to wayland.xml.

Enum values are obtained by executing a generated C file which prints the
constants. There is no other reliable way to get these values as they are
defined via various macros.

There is no widespread Python library able to parse an XML file and format it
with all whitespace preserved. For this reason, we don't use an XML library to
create the new XML elements. Instead, we keep track of the line number of the
last wl_shm.format enum entry and add new entries right after. To be able to
read the line number of an element, we use lxml (the standard library doesn't
retain line number information).

Signed-off-by: Simon Ser <contact@emersion.fr>
protocol/generate-shm-formats.py [new file with mode: 0755]