flacjacket / pywlroots Goto Github PK
View Code? Open in Web Editor NEWPython binding to the wlroots library using cffi
License: University of Illinois/NCSA Open Source License
Python binding to the wlroots library using cffi
License: University of Illinois/NCSA Open Source License
Hello there,
All these days I am struggling by myself to find solutions on pywayland and pywlroots/wlroots that do the same roles when are about do key press/release, mouse press/release and get the current mouse position on the screen. For example, considering Xlib is necessary to generate a display object (Display(os.environ['DISPLAY'])
) and this object contains with itself some methods responsible to access screen attributes:
Display(os.environ['DISPLAY']).screen().root.query_pointer._data.coord["root_x"]
(To get the x current mouse location) and Display(os.environ['DISPLAY']).screen().root.query_pointer._data.coord["root_y"]
(To get the y current mouse location) considering that Display(object)
belongs from Xlib.display
module.
As well as the fake_input(Display(os.environ['DISPLAY']), X.any_event, button, x=value_x,y_value_y)
to make events such as mouse movement, button mouse press/release, and Display(os.environ['DISPLAY']).sync()
to refresh the display state, considering that fake_input()
belongs from Xlib.ext.xtest
module and X
from Xlib
package.
Where could I see a tutorial from the pywayland and pywlroots usage? I saw https://github.com/flacjacket/pywlroots/blob/main/wlroots/wlr_types/virtual_pointer_v1.py and https://github.com/flacjacket/pywlroots/blob/main/wlroots/wlr_types/virtual_keyboard_v1.py but I have no idea how to use them. I am researching them also.
Each time I copy some code from wlroots to ffi_build.py I think, wouldn't it be nice if ffi_build.py could find the code that is accessed at lib.<something>
and take it directly from wlroots.
Do you think this is feasible? This could save a lot of work overall, though I'd have no clue where to start.
The next major version of wlroots is released: https://github.com/swaywm/wlroots/releases/tag/0.14.0
I went through their changes and the only one that we need to act on is #44
Other than that we just need to bump the version.
When I try to run tiny I get the following error:
DEBUG:wlroots:[render/allocator/allocator.c:98] Trying to create gbm allocator
MESA-LOADER: failed to open iris: /usr/lib64/dri/iris_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib64/dri, suffix _dri)
failed to load driver: iris
MESA-LOADER: failed to open kms_swrast: /usr/lib64/dri/kms_swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib64/dri, suffix _dri)
failed to load driver: kms_swrast
MESA-LOADER: failed to open swrast: /usr/lib64/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib64/dri, suffix _dri)
failed to load swrast driver
ERROR:wlroots:[render/allocator/gbm.c:198] gbm_create_device failed
When I start a different wlroots-based compositor I get this output:
00:00:00.385 [render/allocator/allocator.c:98] Trying to create gbm allocator
00:00:00.391 [render/allocator/gbm.c:203] Created GBM allocator with backend drm
00:00:00.391 [render/allocator/gbm.c:206] Using DRM node /dev/dri/renderD128
I tired to look through the code to find what pywlroots does differently than the other compositor, but it all looks very similar. Any idea what I am doing wrong? Do I have to re-build the .so files for my system or something? Any help would be appreciated!
The tinywl example is not listening to destroy events of input devices, so the TinywlServer.keyboards
list is growing but not shrinking if a keyboard gets destroyed
As I get a little more involved with the project, I'm wondering if another 0.16.x release is planned, or if we should focus on 0.17.x, which will bring some changes anyway.
I would prefer a final release under 0.16.x (maybe addressing #144 and #146 and all previous changes), maybe fixing #134 and #141 might be a useful addition.
But I would probably want to concentrate on wlroots 0.17.x
Do you have any roadmap for this project?
Compositers generally allow for a smalll amount of user configuration of the input devices via libinput. Example settings are tap-to-click, point accelleration etc, see https://wayland.freedesktop.org/libinput/doc/latest/configuration.html
Example usage by a wlroots compositer is to set these options to a device when the device is added via the backend's new input event, e.g.:
if (wlr_input_device_is_libinput(device)) {
struct libinput_device *ldev = wlr_libinput_get_device_handle(device);
if (libinput_device_config_tap_get_finger_count(ldev) > 1) {
libinput_device_config_tap_set_enabled(ldev, LIBINPUT_CONFIG_TAP_ENABLED);
}
}
wlr_cursor_attach_input_device(wimp.cursor, device);
Here there are a couple wlroots functions but also functions from libinput. Do you think it would make sense to also include some of these libinput device configuring functions in the lib, perhaps exposed methods to InputDevice
?
Package in arch linux repo is out of date.
It has been flagged as out-of-date a couple days ago.
Sorry if this is not the right place to report it.
I got a strange error that the XCursorManager has no attribute "set_cursor_image". So, I got a look:
Python 3.12.2 (main, Feb 15 2024, 06:47:30) [GCC 13.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import wlroots
>>> wlroots.__version__
'0.16.6'
>>> from wlroots.wlr_types.xcursor_manager import XCursorManager
>>> [n for n in dir(XCursorManager) if not n.startswith('__')]
['destroy', 'get_xcursor', 'load']
>>>
I haven't had time to look at it closely yet, the method is available in the source distribution. Maybe a wheel is broken?
I'll get back to you later.
Attempting to install 0.14.0-1 with pamac
and 0.14.0 with pip.
Preparing...
Cloning pywlroots build files...
Checking pywlroots dependencies...
Resolving dependencies...
Checking inter-conflicts...
Building pywlroots...
==> Making package: pywlroots 0.14.0-1 (Tue 06 Jul 2021 04:22:33 PM EDT)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
-> Found v0.14.0.tar.gz
==> Validating source files with sha256sums...
v0.14.0.tar.gz ... Skipped
==> Removing existing $srcdir/ directory...
==> Extracting sources...
-> Extracting v0.14.0.tar.gz with bsdtar
==> Removing existing $pkgdir/ directory...
==> Starting build()...
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.9
creating build/lib.linux-x86_64-3.9/wlroots
copying wlroots/ffi_build.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/backend.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/renderer.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/init.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/helper.py -> build/lib.linux-x86_64-3.9/wlroots
creating build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/xdg_shell.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/xdg_decoration_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/xdg_output_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/matrix.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/data_control_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/output_damage.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/cursor.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/screencopy_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/data_device_manager.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/server_decoration.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/output_layout.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/xcursor_manager.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/box.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/virtual_keyboard_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/gamma_control_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/pointer.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/compositor.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/texture.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/input_device.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/seat.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/output_management_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/surface.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/keyboard.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/output.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/init.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/layer_shell_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/primary_selection_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
creating build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/util/clock.py -> build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/util/region.py -> build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/util/edges.py -> build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/util/init.py -> build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/util/log.py -> build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/py.typed -> build/lib.linux-x86_64-3.9/wlroots
running build_ext
generating cffi module 'build/temp.linux-x86_64-3.9/wlroots._ffi.c'
creating build/temp.linux-x86_64-3.9
building 'wlroots._ffi' extension
creating build/temp.linux-x86_64-3.9/build
creating build/temp.linux-x86_64-3.9/build/temp.linux-x86_64-3.9
gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fno-semantic-interposition -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2,-D_GLIBCXX_ASSERTIONS -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fPIC -DWLR_USE_UNSTABLE -I/usr/include/pixman-1 -I/var/tmp/pamac-build-yobleck/pywlroots/src/pywlroots-0.14.0/include -I/usr/include/python3.9 -c build/temp.linux-x86_64-3.9/wlroots._ffi.c -o build/temp.linux-x86_64-3.9/build/temp.linux-x86_64-3.9/wlroots._ffi.o
build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_checkfld_struct_wlr_surface’:
build/temp.linux-x86_64-3.9/wlroots._ffi.c:12155:31: error: ‘struct wlr_surface’ has no member named ‘subsurfaces_below’; did you mean ‘subsurfaces’?
12155 | { struct wl_list *tmp = &p->subsurfaces_below; (void)tmp; }
| ^~~~~~~~~~~~~~~~~
| subsurfaces
build/temp.linux-x86_64-3.9/wlroots._ffi.c:12156:31: error: ‘struct wlr_surface’ has no member named ‘subsurfaces_above’; did you mean ‘subsurfaces’?
12156 | { struct wl_list *tmp = &p->subsurfaces_above; (void)tmp; }
| ^~~~~~~~~~~~~~~~~
| subsurfaces
build/temp.linux-x86_64-3.9/wlroots._ffi.c:12157:31: error: ‘struct wlr_surface’ has no member named ‘subsurfaces_pending_below’; did you mean ‘subsurface_pending_list’?
12157 | { struct wl_list *tmp = &p->subsurfaces_pending_below; (void)tmp; }
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| subsurface_pending_list
build/temp.linux-x86_64-3.9/wlroots._ffi.c:12158:31: error: ‘struct wlr_surface’ has no member named ‘subsurfaces_pending_above’; did you mean ‘subsurface_pending_list’?
12158 | { struct wl_list *tmp = &p->subsurfaces_pending_above; (void)tmp; }
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| subsurface_pending_list
In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
build/temp.linux-x86_64-3.9/wlroots._ffi.c: At top level:
build/temp.linux-x86_64-3.9/wlroots._ffi.c:13844:55: error: ‘struct wlr_surface’ has no member named ‘subsurfaces_below’; did you mean ‘subsurfaces’?
13844 | { "subsurfaces_below", offsetof(struct wlr_surface, subsurfaces_below),
| ^~~~~~~~~~~~~~~~~
build/temp.linux-x86_64-3.9/wlroots._ffi.c:13845:60: error: ‘struct wlr_surface’ has no member named ‘subsurfaces_below’; did you mean ‘subsurfaces’?
13845 | sizeof(((struct wlr_surface *)0)->subsurfaces_below),
| ^~~~~~~~~~~~~~~~~
| subsurfaces
In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
build/temp.linux-x86_64-3.9/wlroots._ffi.c:13847:55: error: ‘struct wlr_surface’ has no member named ‘subsurfaces_above’; did you mean ‘subsurfaces’?
13847 | { "subsurfaces_above", offsetof(struct wlr_surface, subsurfaces_above),
| ^~~~~~~~~~~~~~~~~
build/temp.linux-x86_64-3.9/wlroots._ffi.c:13848:60: error: ‘struct wlr_surface’ has no member named ‘subsurfaces_above’; did you mean ‘subsurfaces’?
13848 | sizeof(((struct wlr_surface *)0)->subsurfaces_above),
| ^~~~~~~~~~~~~~~~~
| subsurfaces
In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
build/temp.linux-x86_64-3.9/wlroots._ffi.c:13850:63: error: ‘struct wlr_surface’ has no member named ‘subsurfaces_pending_below’; did you mean ‘subsurface_pending_list’?
13850 | { "subsurfaces_pending_below", offsetof(struct wlr_surface, subsurfaces_pending_below),
| ^~~~~~~~~~~~~~~~~~~~~~~~~
build/temp.linux-x86_64-3.9/wlroots._ffi.c:13851:68: error: ‘struct wlr_surface’ has no member named ‘subsurfaces_pending_below’; did you mean ‘subsurface_pending_list’?
13851 | sizeof(((struct wlr_surface *)0)->subsurfaces_pending_below),
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| subsurface_pending_list
In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
build/temp.linux-x86_64-3.9/wlroots._ffi.c:13853:63: error: ‘struct wlr_surface’ has no member named ‘subsurfaces_pending_above’; did you mean ‘subsurface_pending_list’?
13853 | { "subsurfaces_pending_above", offsetof(struct wlr_surface, subsurfaces_pending_above),
| ^~~~~~~~~~~~~~~~~~~~~~~~~
build/temp.linux-x86_64-3.9/wlroots._ffi.c:13854:68: error: ‘struct wlr_surface’ has no member named ‘subsurfaces_pending_above’; did you mean ‘subsurface_pending_list’?
13854 | sizeof(((struct wlr_surface *)0)->subsurfaces_pending_above),
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| subsurface_pending_list
error: command '/sbin/gcc' failed with exit code 1
==> ERROR: A failure occurred in build().
Aborting...
All dependencies are installed and up to date:
python-setuptools-scm 5.0.2-1 community 124.4 kB
wlroots 0.13.0-1 community 993.3 kB
python-xkbcommon 0.3-1 AUR 194.0 kB
pywayland 0.4.4-1 AUR 1.9 MB
python-cffi 1.14.5-1 extra 1.1 MB
inxi -S output:
Kernel: 5.10.42-1-MANJARO x86_64 Desktop: Qtile 0.17.0 Distro: Manjaro Linux
I was trying to bind a protocol I am developing but I've never done this in python so all of this is pretty much a guess.
import logging
from typing import Any
# TODO: Figure out why this breaks mypy.
from pywayland.protocol.next_control_v1 import NextControlV1 # ignore: type
from pywayland.protocol_core.globals import Global
from pywayland.protocol_core.resource import Resource
from pywayland.server import Display
from pywayland.server.client import Client
log = logging.getLogger("Next: Control")
class Control(Global):
def __init__(self, display: Display) -> None:
self.interface = NextControlV1
self._callback_info = {"interface": self.interface, "bind_func": self.bind}
super().__init__(display, 1)
self.bind_func(self.bind)
log.info("Created next_control_v1 global")
def bind(self, client: Client, data: Any = None, version: int=0, id: int=1) -> None:
NextControlV1.resource_class(client)
def destroy(self) -> None:
super().destroy()
this is the gist of what I came up with but the bind function doesn't seem to return a client which tells me I'm implementing the bind func incorrectly, @m-col. Is there any example I can maybe look at?
pywlroots/wlroots/ffi_build.py
Lines 67 to 70 in 1b39a33
This code means that the function won't be executed if wlroots._build
can be imported from anywhere, including the previous version installed to the system. So if pywlroots are installed, the following bit won't ever be executed:
pywlroots/wlroots/ffi_build.py
Lines 86 to 87 in 1b39a33
and the newly created wheel (or install to --root
) won't contain the file. As a result, the Gentoo ebuild produces an install without the file every second run; which in turns breaks building qtile.
Downstream bug report: https://bugs.gentoo.org/919097
wlroots.tinywl provides an option to start an application, might be useful to add this option to the Python example as well.
See https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/tinywl/tinywl.c#L1050
OutputHeadV1State
is missing a method to apply the state on an output state.
I guess OutputState
has to be implemented as well.
See wlroots 1.6.2 - wlr_output_management_v1.h
/**
* Apply the head state on the supplied struct wlr_output_state.
*
* Compositors can then pass the resulting struct wlr_output_state to
* wlr_output_commit_state() or wlr_output_test_state().
*
* The position needs to be applied manually by the caller.
*/
void wlr_output_head_v1_state_apply(
const struct wlr_output_head_v1_state *head_state,
struct wlr_output_state *output_state);
The wlr_types Output class has no method to enable adaptive sync.
def enable_adaptive_sync(self, enable: bool = True) -> None:
lib.wlr_output_enable_adaptive_sync(self._ptr, enable)
Several classes (Renderer, Allocator, …) have a factory function which does not use the passed cls
argument at all, they can be decorated with @staticmethod
without any difference.
Example:
pywlroots/wlroots/allocator.py
Line 21 in b38b6ce
@classmethod
def autocreate(cls, backend: Backend, renderer: Renderer) -> Allocator:
"""Creates the adequate allocator given a backend and a renderer."""
ret = lib.wlr_allocator_autocreate(backend._ptr, renderer._ptr)
if not ret:
raise RuntimeError("Unable to create an allocator.")
return Allocator(ret)
Hey there, I'm interested in playing around with writing a wayland compositor but have very little prior wayland knowledge.
Do you consider these bindings stable enough to do that? If so, how would I go about doing that? Could you post a minimal example of a compositor that just starts and displays "Hello World" or whatever? :)
It seems the ffi.verify()
call wants write access to neighbouring files, and so importing wlroots.ffi_build
raises a PermissionError
when a user does not havewrite permissions to /usr/lib. This is the stack trace:
>>> import wlroots.ffi_build
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.10/site-packages/wlroots/ffi_build.py", line 2408, in <module>
check_version()
File "/usr/lib/python3.10/site-packages/wlroots/ffi_build.py", line 44, in check_version
wlroots_version = load_wlroots_version()
File "/usr/lib/python3.10/site-packages/wlroots/ffi_build.py", line 36, in load_wlroots_version
lib = ffi.verify("#include <wlr/version.h>")
File "/usr/lib/python3.10/site-packages/cffi/api.py", line 468, in verify
lib = self.verifier.load_library()
File "/usr/lib/python3.10/site-packages/cffi/verifier.py", line 104, in load_library
self._write_source()
File "/usr/lib/python3.10/site-packages/cffi/verifier.py", line 193, in _write_source
with open(self.sourcefilename, "w") as fp:
PermissionError: [Errno 13] Permission denied: '/usr/lib/python3.10/site-packages/wlroots/__pycache__/_cffi__x58fcf130xd9c61baf.c'
This is coming from the check_version()
. Perhaps we can have some kind of flag to disable the check? The use-case here is not building pywlroots per se, but building another CFFI module that depends on it.
Add a CHANGES.(txt|md|rst) file to the project which informs about changes between releases
wlroots compositors in C by default will print logs to stdout but this doesn't seem to be the case with pywlroots. I'm specifically referring to the logging done internal to wlroots, rather than any calls done by the compositor('s own code) to wlroots.utils.log.logger
, which of course does print to stdout. How can I get these logs printed?
I was gonna submit a fix but I wasn't sure where you'd prefer types-dataclasses to go, just in the github CI or in requirements.txt or some else
The Cursor class implements wlr_cursor_attach_input_device
but not wlr_cursor_detach_input_device()
. The latter might be useful if a device (pointer) is destroyed.
I don't know much about CFFI and don't understand how it works but, Is it possible to use functions not inside header files ?
If yes would such code be merged into the repo ?
I was trying to implement a way to control the state of caps lock and num lock from the compositor, however it seems like how it's done is by calling a function (wlr_keyboard_notify_modifiers
) that the compositor is not supposed to use. (from sway)
Installing a fresh pywlroots==0.16 and using wlroots.lib
, none of the C structs, enums or functions appended to the CDEF
in ffi_build.py
conditionally upon if has_xwayland()
can be accessed:
>>> wlroots.lib.WLR_XWAYLAND_SURFACE_DECORATIONS_ALL
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: cffi library 'wlroots._ffi' has no function, constant or global variable named 'WLR_XWAYLAND_SURFACE_DECORATIONS_ALL'
I can successfully access non-XWayland things that were added very recently (i.e. the last addition was buffer_iterator_callback
which can be accessed), ruling out that it was an older cached lib being used either on my machine or uploaded to pypi.
This wasn't an issue on the last release, so I suspect it was one of the changes in .github
, or a change in wlroots.
I would like to know where could I find the documentation about the usage of this library as well as some examples about automate mouse and keyboard events. I have tried to import directly the package import pywlroots
but I am facing ModuleNotFoundError: No module named 'pywlroots'
even with it already installed
Hello,
I noticed that the LICENSE
file is University of Illinois/NCSA Open Source License
however setup.cfg
says license = MIT
.
Probably a copy-paste error. Can you please fix whichever of those licenses is not correct?
The Backend.start() method does not only start the backend but checks the result, destroys it in case of an error and raises a RuntimeException in case of an error.
IMO it would be much cleaner if start() returns a boolean and stops itself from cleaning up.
Compositors could easily check the result from Backend.start() and react in their way in case of an error.
I've found more candidates where a boolean or None
value would make more sense (Renderer.autocreate(), Renderer.init_display(), Allocator.autocreate()) and pywlroots should not raise a RuntimeException.
If there is a general consensus about reducing the exceptions and replacing them with boolean values or None
, I could submit a PR.
Or if there is no general agreement, at least the deviations from wlroots (i.e. calling destory() and a runtime error) should be better documented
It is of course possible that I'm doing something silly and obvious, but I can't seem to install pywlroots either from PyPI or from this repo. I get:
Collecting pywlroots
Using cached pywlroots-0.15.11.tar.gz (82 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Installing backend dependencies ... done
Preparing wheel metadata ... done
Requirement already satisfied: cffi>=1.12.0 in /usr/local/lib/python3.9/dist-packages (from pywlroots) (1.15.0)
Requirement already satisfied: pywayland>=0.1.1 in /home/jmyles/.local/lib/python3.9/site-packages (from pywlroots) (0.4.11)
Requirement already satisfied: xkbcommon>=0.2 in /home/jmyles/.local/lib/python3.9/site-packages (from pywlroots) (0.4)
Requirement already satisfied: pycparser in /usr/local/lib/python3.9/dist-packages (from cffi>=1.12.0->pywlroots) (2.21)
Building wheels for collected packages: pywlroots
Building wheel for pywlroots (PEP 517) ... error
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 /tmp/tmpos8hlku4_in_process.py build_wheel /tmp/tmp7gm8xfsr
cwd: /tmp/pip-install-7anz42ze/pywlroots_61e864eadabb4fc5bf2e9d2b6dd37222
Complete output (81 lines):
Installing wlroots v0.15.11 requires wlroots v0.15.x, found v0.12.0
Built with support for XWayland helpers.
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.9
creating build/lib.linux-x86_64-3.9/wlroots
copying wlroots/allocator.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/backend.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/helper.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/ffi_build.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/renderer.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/version.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/__init__.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/xwayland.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/_build.py -> build/lib.linux-x86_64-3.9/wlroots
creating build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/surface.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/seat.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/data_device_manager.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/matrix.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/cursor.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/xdg_shell.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/xcursor_manager.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/box.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/output.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/primary_selection_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/keyboard.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/virtual_keyboard_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/data_control_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/foreign_toplevel_management_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/idle.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/output_power_management_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/__init__.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/relative_pointer_manager_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/server_decoration.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/texture.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/output_management_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/scene.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/idle_inhibit_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/pointer.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/output_damage.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/screencopy_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/xdg_output_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/gamma_control_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/input_inhibit.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/input_device.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/compositor.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/touch.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/xdg_decoration_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/pointer_constraints_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/output_layout.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/layer_shell_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
creating build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/util/box.py -> build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/util/log.py -> build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/util/edges.py -> build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/util/__init__.py -> build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/util/region.py -> build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/util/clock.py -> build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/py.typed -> build/lib.linux-x86_64-3.9/wlroots
creating build/lib.linux-x86_64-3.9/wlroots/include
copying wlroots/include/xdg-shell-protocol.h -> build/lib.linux-x86_64-3.9/wlroots/include
copying wlroots/include/pointer-constraints-unstable-v1-protocol.h -> build/lib.linux-x86_64-3.9/wlroots/include
copying wlroots/include/idle-inhibit-unstable-v1-protocol.h -> build/lib.linux-x86_64-3.9/wlroots/include
copying wlroots/include/idle-protocol.h -> build/lib.linux-x86_64-3.9/wlroots/include
copying wlroots/include/wlr-layer-shell-unstable-v1-protocol.h -> build/lib.linux-x86_64-3.9/wlroots/include
copying wlroots/include/wlr-output-power-management-unstable-v1-protocol.h -> build/lib.linux-x86_64-3.9/wlroots/include
running build_ext
generating cffi module 'build/temp.linux-x86_64-3.9/wlroots._ffi.c'
creating build/temp.linux-x86_64-3.9
building 'wlroots._ffi' extension
creating build/temp.linux-x86_64-3.9/build
creating build/temp.linux-x86_64-3.9/build/temp.linux-x86_64-3.9
x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -DWLR_USE_UNSTABLE -I/usr/include/pixman-1 -I/tmp/pip-install-7anz42ze/pywlroots_61e864eadabb4fc5bf2e9d2b6dd37222/wlroots/include -I/usr/include/python3.9 -c build/temp.linux-x86_64-3.9/wlroots._ffi.c -o build/temp.linux-x86_64-3.9/build/temp.linux-x86_64-3.9/wlroots._ffi.o
build/temp.linux-x86_64-3.9/wlroots._ffi.c:573:10: fatal error: wlr/render/allocator.h: No such file or directory
573 | #include <wlr/render/allocator.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
----------------------------------------
ERROR: Failed building wheel for pywlroots
Failed to build pywlroots
ERROR: Could not build wheels for pywlroots which use PEP 517 and cannot be installed directly
Acc. to https://wayland.emersion.fr/wlroots/wlr/types/wlr_seat.h.html#func-wlr_seat_set_keyboard NULL
values are accepted, at least they are not forbidden.
Proposal: Change https://github.com/flacjacket/pywlroots/blob/main/wlroots/wlr_types/seat.py#L232
def set_keyboard(self, keyboard: Keyboard) -> None:
to:
def set_keyboard(self, keyboard: Keyboard | None) -> None:
wlroots provides a struct wlr_touch c.f. https://wayland.emersion.fr/wlroots/wlr/types/wlr_touch.h.html#struct-wlr_touch
Although pywlroots provides several touch events, the wlr_touch struct is not implemented.
Hello, I am trying to read the titles of XdgSurfaces stored in their toplevels, but I am having issues with reading from the char pointer. The issue seems to be with the datatype that I get when I try to reference it.
I have tried using something like this
xdgSurface.toplevel._ptr.title
to read the data, when I print it it says that it is a cdata char * type
however, when I check its type using the type()
function or any of the cffi methods for converting pointers to strings, I see that it is of type _cffi_backend._CDataBase
. looking this up in the CFFI documentation hasn't turned up much useful information regarding how to turn that into a char* or a python string and I was wondering I you had any insight on how to get the data that this pointer is pointing to
I should also note that ffi.addressof()
doesn't work for getting the location of the data because it is not a struct or union
thanks
This is the stack trace this time:
Traceback (most recent call last):
File "/home/user/git/qtile-git/src/qtile/setup.py", line 105, in <module>
cffi_modules=get_cffi_modules(),
File "/home/user/git/qtile-git/src/qtile/setup.py", line 89, in get_cffi_modules
import wlroots.ffi_build
File "/usr/lib/python3.10/site-packages/wlroots/ffi_build.py", line 2419, in <module>
if has_xwayland():
File "/usr/lib/python3.10/site-packages/wlroots/ffi_build.py", line 68, in has_xwayland
FFI().verify(
File "/usr/lib/python3.10/site-packages/cffi/api.py", line 468, in verify
lib = self.verifier.load_library()
File "/usr/lib/python3.10/site-packages/cffi/verifier.py", line 104, in load_library
self._write_source()
File "/usr/lib/python3.10/site-packages/cffi/verifier.py", line 193, in _write_source
with open(self.sourcefilename, "w") as fp:
PermissionError: [Errno 13] Permission denied: '/usr/lib/python3.10/site-packages/wlroots/__pycache__/_cffi__x7e26aea1x8197481a.c'
This is specifically triggered by the has_xwayland
function.
I'll try to find an equivalent approach, but I'm also wondering if we could save the results of has_xwayland
and also check_version
at build-time into a file that gets packaged alongside the code. Then we get the functionality without the ffi.verify
needed after installation. What do you think?
Hi! I'm kind of puzzled by an issue that I'm facing, I apologize if this has nothing to do with pywlroots. If there's a better place where I can ask such questions, please do redirect me.
I'm current writing a compositor and I copied a lot from tinywl to get to a somewhat usable state and that includes the cursor setup.
I created a Cursor (self.cursor
) object in my server class and attached the button event to it.
The event triggers as per my logs without any errors.
However my focused toplevel doesn't get any click events? I have checked and made sure that the surface has focus (surface.set_activated(True)
, seat.keyboard_notify_enter(....)
)
Upon trying to run the tiny wm:
Traceback (most recent call last):
File "/usr/lib/python3.9/runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.9/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/home/user/builds/pywlroots/tiny/__main__.py", line 15, in <module>
from wlroots.backend import Backend
File "/home/user/builds/pywlroots/wlroots/backend.py", line 9, in <module>
from wlroots.wlr_types.input_device import InputDevice
File "/home/user/builds/pywlroots/wlroots/wlr_types/__init__.py", line 5, in <module>
from .cursor import Cursor # noqa: F401
File "/home/user/builds/pywlroots/wlroots/wlr_types/cursor.py", line 9, in <module>
from .input_device import InputDevice, InputDeviceType
File "/home/user/builds/pywlroots/wlroots/wlr_types/input_device.py", line 6, in <module>
from .keyboard import Keyboard
File "/home/user/builds/pywlroots/wlroots/wlr_types/keyboard.py", line 33, in <module>
class KeyState(enum.IntEnum):
File "/home/user/builds/pywlroots/wlroots/wlr_types/keyboard.py", line 34, in KeyState
KEY_RELEASED = lib.WLR_KEY_RELEASED
AttributeError: cffi library 'wlroots._ffi' has no function, constant or global variable named 'WLR_KEY_RELEASED'
Not an issue but would you consider adding a section or anything to keep track of the implemented protocols ?
And what about a section with links to other projects that uses pywlroots ?
Reproduce:
Result:
(wlroots) al@al-desktop:~/wlroots/pywlroots$ python3 -m tiny
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/home/al/wlroots/pywlroots/tiny/__main__.py", line 13, in <module>
from wlroots.helper import build_compositor
File "/home/al/wlroots/pywlroots/wlroots/__init__.py", line 8, in <module>
from ._ffi import ffi, lib
ModuleNotFoundError: No module named 'wlroots._ffi'
This happens because there is a wlroots
module right next to tiny
in the repository, so that one will be imported instead of the one installed by pip. But that one hasn't been built, so it does not work.
Workaround:
Move tiny
somewhere else.
Both deliver the same result. In my opinion, the property Seat.has_grab
should be removed because the name is not clear: Seat provides keyboard_has_grab
, pointer_has_grab
, and touch_has_grab
, so it is unclear which of the aforementioned states is meant by Seat.has_grab
.
There are some breaking changes for the next wlroots release, and more may be added between now and when it is released. I'm going through their changes listed here and checking to see if we need to do something about them. This may need updating as they add more changes - current version is from 25th August.
Changes for packagers
- backend: make DRM and libinput backends optional (#3058): the
x11-backend
build option has been superseded by thebackends
option.
Doesn't affect us.
Breaking changes for compositors
These changes can affect most compositors.
- Nuke
wlr_list
(#3002):wlr/types/wlr_list.h
has been removed.wlr_tablet.paths
andwlr_tablet_pad.paths
are nowwl_array
instead ofwlr_list
.
Doesn't affect us.
- Stabilize
wlr_box
API (#3011)
wlr_box_from_pixman_box32
andwlr_box_rotated_bounds
have been removed.wlr/types/wlr_box.h
has been moved towlr/util/box.h
(a redirection with a warning is still in place).- Unnecessary
wlr_box.h
includes have been replaced with forward declarations in public wlroots headers.
Just need to move box.py #50 and remove wlr_box_rotated_bounds
#51
- backend/drm: preserve mode order from kernel (#3078): the order of
wlr_output.modes
has been reversed for the DRM backend to match the kernel's ordering. Compositors are advised to usewlr_output_preferred_mode
instead of relying on mode order.
This doesn't affect pywlroots directly but may affect any compositors that use it.
- layer-shell: replace close() with destroy() (#3108): replace
wlr_layer_surface_v1_close
calls withwlr_layer_surface_v1_destroy
and ensure thewlr_layer_surface_v1
isn't used after that call.
Needs some changes. #51
Breaking changes for custom backends and renderers
These changes are unlikely to affect compositors that don't have a custom
backend or renderer.
- render/egl: make most functions private (#2985)
Doesn't affect us.
- surface: make
wlr_subsurface_create
private (#2993)
Just need to remove the signature from ffi_build.py #51
- render: drop
wlr_renderer_impl.texture_from_{pixels,dmabuf}
(#2997)- Remove
wlr_resource_get_buffer_size
(#3023)
wlr_resource_get_buffer_size
has been removed.wlr_client_buffer_import
has been split into two functions:wlr_buffer_from_resource
andwlr_client_buffer_create
.- buffer: drop
wlr_client_buffer.resource
(#3039)- output: add generic
wlr_output_export_dmabuf
implementation (#2955):wlr_output_impl.export_dmabuf
has been dropped.
None of these affect us.
- render: drop
wlr_renderer_impl.init_wl_display
(#3062)
This needs some changes to Renderer
and ffi_build.py.
- Drop legacy output APIs (#3044):
wlr_output_impl.{attach,rollback}_render
andwlr_output_state.buffer_type
have been removed.
Replace pending_buffer_type
with pending_attach_render
#51
Of course, we'll need to keep this up to date as they add more changes. Once 0.15 upstream is released we can cross reference this with their changelog and then release with our breaking changes from #51.
Hi! would you consider generating some documentation from the preexisting comments?
I can't update or reinstall pywlroots15 via pip, give me this error
Collecting pywlroots
Using cached pywlroots-0.15.3.tar.gz (74 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Installing backend dependencies ... done
Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: xkbcommon>=0.2 in /usr/local/lib/python3.9/dist-packages (from pywlroots) (0.4)
Requirement already satisfied: cffi>=1.12.0 in /usr/lib/python3/dist-packages (from pywlroots) (1.15.0)
Requirement already satisfied: pywayland>=0.1.1 in /usr/local/lib/python3.9/dist-packages (from pywlroots) (0.4.9)
Building wheels for collected packages: pywlroots
Building wheel for pywlroots (pyproject.toml) ... error
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 /usr/local/lib/python3.9/dist-packages/pip/_vendor/pep517/in_process/_in_process.py build_wheel /tmp/tmp93tycsgu
cwd: /tmp/pip-install-ls8mqm9r/pywlroots_36d18fc289134d1bb48aec0e2dce1522
Complete output (68 lines):
Installing wlroots v0.15.3 requires wlroots v0.15.x, found v0.14.1
Built with support for XWayland helpers.
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.9
creating build/lib.linux-x86_64-3.9/wlroots
copying wlroots/xwayland.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/version.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/renderer.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/helper.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/ffi_build.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/backend.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/allocator.py -> build/lib.linux-x86_64-3.9/wlroots
copying wlroots/init.py -> build/lib.linux-x86_64-3.9/wlroots
creating build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/xdg_shell.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/xdg_output_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/xdg_decoration_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/xcursor_manager.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/virtual_keyboard_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/touch.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/texture.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/surface.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/server_decoration.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/seat.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/screencopy_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/scene.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/relative_pointer_manager_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/primary_selection_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/pointer_constraints_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/pointer.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/output_management_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/output_layout.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/output_damage.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/output.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/matrix.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/layer_shell_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/keyboard.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/input_inhibit.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/input_device.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/gamma_control_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/foreign_toplevel_management_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/data_device_manager.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/data_control_v1.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/cursor.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/compositor.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/box.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
copying wlroots/wlr_types/init.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
creating build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/util/region.py -> build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/util/log.py -> build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/util/edges.py -> build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/util/clock.py -> build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/util/box.py -> build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/util/init.py -> build/lib.linux-x86_64-3.9/wlroots/util
copying wlroots/py.typed -> build/lib.linux-x86_64-3.9/wlroots
running build_ext
creating build/temp.linux-x86_64-3.9
creating build/temp.linux-x86_64-3.9/build
creating build/temp.linux-x86_64-3.9/build/temp.linux-x86_64-3.9
x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -DWLR_USE_UNSTABLE -I/usr/include/pixman-1 -I/tmp/pip-install-ls8mqm9r/pywlroots_36d18fc289134d1bb48aec0e2dce1522/include -I/usr/include/python3.9 -c build/temp.linux-x86_64-3.9/wlroots._ffi.c -o build/temp.linux-x86_64-3.9/build/temp.linux-x86_64-3.9/wlroots._ffi.o
build/temp.linux-x86_64-3.9/wlroots._ffi.c:573:10: fatal error: wlr/render/allocator.h: No existe el fichero o el directorio
573 | #include <wlr/render/allocator.h>
compilation terminated.
error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
ERROR: Failed building wheel for pywlroots
Failed to build pywlroots
ERROR: Could not build wheels for pywlroots, which is required to install pyproject.toml-based projects
I'm just playing around with tinywl and running python tinywl
or python tinywl/__main__.py
gives this error:
Traceback (most recent call last):
File "/usr/lib/python3.9/runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.9/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/home/mcol/git/pywlroots/tiny/__main__.py", line 23, in <module>
from .server import TinywlServer
ImportError: attempted relative import with no known parent package
Changing that last import line to from tiny.server import TinywlServer
fixes it though.
Not sure I get why this is the case though, unless relative imports don't work in files named __main__.py
?
Is there a reason why the Output.commit() method is implemented this way:
def commit(self) -> None:
"""Commit the pending output state
If `.attach_render` has been called, the pending frame will be
submitted for display.
"""
if not lib.wlr_output_test(self._ptr):
self.rollback()
raise RuntimeError("Rendering on output failed")
if not lib.wlr_output_commit(self._ptr):
raise RuntimeError("Unable to commit output")
Shouldn't the following be sufficient:
def commit(self) -> bool:
"""Commit the pending output state
If `.attach_render` has been called, the pending frame will be
submitted for display.
"""
return lib.wlr_output_commit(self._ptr)
See the wlroot docs for the commit function:
/**
* Commit the pending output state. If wlr_output_attach_render() has been
* called, the pending frame will be submitted for display and a `frame` event
* will be scheduled.
*
* On failure, the pending changes are rolled back.
*/
bool wlr_output_commit(struct wlr_output *output);
Hi! I'm currently starting to package python-pywlroots on Arch Linux for qtile.
We usually run tests against the build to ensure compatibility with the rest of the system. Especially when building wrappers for C libraries this is very important to detect problems as early as possible (upon rebuild).
It would be really great, if you could include the tests directory in the sdist tarball! :)
I know, wlroots 0.15 is old, but systems like Debian still ship with the old version and projects like Qtile rely on the pywlroots 0.15.x.
Code to reproduce the problem: python -m tiny
tiny won't show up but deliver a segmentation fault.
Change the line in https://github.com/flacjacket/pywlroots/blob/v0.15.x/tiny/server.py#L355 to
print('before set_keymap')
keyboard.set_keymap(keymap)
print('after set_keymap')
And you'll see that "after set_keymap" is never printed.
I haven't tested pywlroots versions < 0.15.24
How do you manage compatibility with wlroots releases? Currently pywlroots only supports wlroots 0.12.0, whereas wlroots is currently on 0.13.0 (only recently). Between releases they track breaking changes in an issue such as this for 0.14.0: swaywm/wlroots#2844. Do you aim to exclusively support the current release or maintain some kind of backwards compatibility?
I encountered this error while installing wlroots on python 3.9:
2021-11-16T16:36:10,958 User install by explicit request
2021-11-16T16:36:11,333 Created temporary directory: /tmp/pip-ephem-wheel-cache-el7f27gz
2021-11-16T16:36:11,334 Created temporary directory: /tmp/pip-req-tracker-1zz9nw25
2021-11-16T16:36:11,334 Initialized build tracking at /tmp/pip-req-tracker-1zz9nw25
2021-11-16T16:36:11,334 Created build tracker: /tmp/pip-req-tracker-1zz9nw25
2021-11-16T16:36:11,335 Entered build tracker: /tmp/pip-req-tracker-1zz9nw25
2021-11-16T16:36:11,335 Created temporary directory: /tmp/pip-install-b3cqmuw9
2021-11-16T16:36:11,397 1 location(s) to search for versions of pywlroots:
2021-11-16T16:36:11,397 * https://pypi.org/simple/pywlroots/
2021-11-16T16:36:11,397 Fetching project page and analyzing links: https://pypi.org/simple/pywlroots/
2021-11-16T16:36:11,398 Getting page https://pypi.org/simple/pywlroots/
2021-11-16T16:36:11,399 Found index url https://pypi.org/simple
2021-11-16T16:36:11,401 Getting credentials from keyring for https://pypi.org/simple
2021-11-16T16:36:11,466 Getting credentials from keyring for pypi.org
2021-11-16T16:36:11,487 Looking up "https://pypi.org/simple/pywlroots/" in the cache
2021-11-16T16:36:11,487 Request header has "max_age" as 0, cache bypassed
2021-11-16T16:36:11,491 Starting new HTTPS connection (1): pypi.org:443
2021-11-16T16:36:11,685 https://pypi.org:443 "GET /simple/pywlroots/ HTTP/1.1" 304 0
2021-11-16T16:36:11,862 Found link https://files.pythonhosted.org/packages/8d/b6/cd25ed589a9fa8d43572993dba99e0b072bd4488999731edc87c8600d622/pywlroots-0.1.0.tar.gz#sha256=58c4f1fac10ee78b02d2f920337cae85adc3bccdda3bd1172f9b94ae0f343df9 (from https://pypi.org/simple/pywlroots/), version: 0.1.0
2021-11-16T16:36:11,862 Found link https://files.pythonhosted.org/packages/64/2b/ae84eb1465ef8490165f39dba2af581e2c9905422f16e7d739e64eb02052/pywlroots-0.1.1.tar.gz#sha256=36a085e7f3a569feeb61bdb5afaeee021bf878aa509b3af7f837f2b98d894ba1 (from https://pypi.org/simple/pywlroots/), version: 0.1.1
2021-11-16T16:36:11,863 Found link https://files.pythonhosted.org/packages/ff/65/0c5ceeeb295a4df4a2b9e6e1343940f8f79df330b07a75d51b01999181c5/pywlroots-0.1.2.tar.gz#sha256=1dadfe3e34416f97d496b7a1bba2e49d7abe362f84890c78958b0d7c78bb3364 (from https://pypi.org/simple/pywlroots/), version: 0.1.2
2021-11-16T16:36:11,863 Found link https://files.pythonhosted.org/packages/1d/e2/f59e4e101755b504f6a4f1ac130db6f60ee835a8d905c7018ba40dae6eaa/pywlroots-0.1.3.tar.gz#sha256=2369dd43f82bb28f75548e71b55564bf11f3b06d5d1072c54cb7758c4a630352 (from https://pypi.org/simple/pywlroots/), version: 0.1.3
2021-11-16T16:36:11,863 Found link https://files.pythonhosted.org/packages/ed/05/8214cfd08b351b7e88135ccd210635f9f242a08866b43fde578fd0100929/pywlroots-0.2.0.tar.gz#sha256=393422c817b74ba7bb30d313898a7655e09e623108608562776336f2018979f8 (from https://pypi.org/simple/pywlroots/), version: 0.2.0
2021-11-16T16:36:11,864 Found link https://files.pythonhosted.org/packages/93/f0/6a0d190b568a8be05e0883c3ca4c1286142268cb3467d9ee7cab74400d97/pywlroots-0.2.1.tar.gz#sha256=2907b3500e92766d14bf0fd33b8e9b0aa874927a3958cc370ba2b6207bd68dc8 (from https://pypi.org/simple/pywlroots/), version: 0.2.1
2021-11-16T16:36:11,864 Found link https://files.pythonhosted.org/packages/53/bc/03c3a9aca3ce0f97218e55de45b9a7405c727c7a5fdfa7a00ccde0143610/pywlroots-0.2.2.tar.gz#sha256=39dc0bd30c161638052b0f12729886bfe765dadac647b94e4afe16aeff4e406f (from https://pypi.org/simple/pywlroots/), version: 0.2.2
2021-11-16T16:36:11,864 Found link https://files.pythonhosted.org/packages/89/07/4a6253cfece2bdf1f4944b5f12dc66478c8ab3a7dad30fb5c012edcbe326/pywlroots-0.2.3.tar.gz#sha256=891510c7229bbed2b197c48c1ee826d81f40ff1a04bb05bdf4e9aeb1d5fdc666 (from https://pypi.org/simple/pywlroots/), version: 0.2.3
2021-11-16T16:36:11,865 Found link https://files.pythonhosted.org/packages/2e/0a/871147835f237c4b4da64599793b7545f3208daa82b3261d8ee173d49e2f/pywlroots-0.2.4.tar.gz#sha256=25830c49444452cd572b7f09d8a3135d3868b532a768536af77e70b973b91bcb (from https://pypi.org/simple/pywlroots/), version: 0.2.4
2021-11-16T16:36:11,865 Found link https://files.pythonhosted.org/packages/47/67/069a2d78a1f91a8c8d2050d41741e81c9969e6fb6049c13e8d59080a0cb7/pywlroots-0.2.5.tar.gz#sha256=296225758d03c1309252c7f55e08183f4cad2516a7fd25813b6a041b37f067cb (from https://pypi.org/simple/pywlroots/), version: 0.2.5
2021-11-16T16:36:11,865 Found link https://files.pythonhosted.org/packages/02/59/a00b964d7138b72c36192f5ec9aebe8157522d160d566e3044ae7ef39e86/pywlroots-0.2.6.tar.gz#sha256=a77f5d5624a06c2770c5f3cac07a3cf83f5cfe3cccb445d313d090f28fc2abc0 (from https://pypi.org/simple/pywlroots/), version: 0.2.6
2021-11-16T16:36:11,866 Found link https://files.pythonhosted.org/packages/c1/25/ade16388f44e1ba98ab0c564afea93cade51a68f2e34cd07aac08adb241c/pywlroots-0.2.7.tar.gz#sha256=ad0233088c5860728fb35a04d2b9bfdb12ed8894a6e0a8b8c853ce5549054193 (from https://pypi.org/simple/pywlroots/), version: 0.2.7
2021-11-16T16:36:11,866 Found link https://files.pythonhosted.org/packages/04/2c/2b8e1598804aa4ec0236ed5f3d40015f6ec0a85212d8b0bd36ae7728b017/pywlroots-0.2.8.tar.gz#sha256=e9dc58f0600d830c3a50cd851a19f6a0a6301a941f3d6b65baf4087eb2980b51 (from https://pypi.org/simple/pywlroots/), version: 0.2.8
2021-11-16T16:36:11,866 Found link https://files.pythonhosted.org/packages/ed/3b/374aff31c2aaf618ea34e82553e535a849c409d10bc7b6a61a595cad01f6/pywlroots-0.2.9.tar.gz#sha256=419b0ae4085793f5df9c5d07e30eabe2f38253a49ced482274c3d4db373c7173 (from https://pypi.org/simple/pywlroots/), version: 0.2.9
2021-11-16T16:36:11,867 Found link https://files.pythonhosted.org/packages/b6/c0/be81e74119afbef304eb4a0f82a200498519b86c4c5f0c9fa1ae93969715/pywlroots-0.13.0.tar.gz#sha256=8adad3d2ca17fe3464d0afc9ac81695bddc1af213b2205586d949f58311767b3 (from https://pypi.org/simple/pywlroots/), version: 0.13.0
2021-11-16T16:36:11,867 Found link https://files.pythonhosted.org/packages/cd/00/5191ca13b15178aca295b6e8061579232676f0d9b0c6503df25d4ef4a269/pywlroots-0.13.1.tar.gz#sha256=c62818d1cc609a53b737c074af61b93e83ba63e904ca594e0716729b58e11ec0 (from https://pypi.org/simple/pywlroots/), version: 0.13.1
2021-11-16T16:36:11,867 Found link https://files.pythonhosted.org/packages/e0/b1/505226b495cdf8b353f1a6a95f2035c5d74eb903b762f2ad17ea8404ca6e/pywlroots-0.13.2.tar.gz#sha256=eb62a278957b330623369a0a191207dbca33f20c1d1486328f9c4a80e5708917 (from https://pypi.org/simple/pywlroots/), version: 0.13.2
2021-11-16T16:36:11,868 Found link https://files.pythonhosted.org/packages/a8/7f/59423497c9f826b694bf76a1498fbaf98aef21b4ec12834c7b1ce01dc378/pywlroots-0.13.3.tar.gz#sha256=a8b28d0528016aa4876976367def082798bc6d4ca2b3b0a9a38d0faf3de6d670 (from https://pypi.org/simple/pywlroots/), version: 0.13.3
2021-11-16T16:36:11,868 Found link https://files.pythonhosted.org/packages/c2/08/871bc980601c4f2fd3ac7aac3d835b68d0eb1bb55d2eecaf30d293df602c/pywlroots-0.13.4.tar.gz#sha256=91e0e1cd9d188be65badb4ee169863c7d926acb60cc13d2db51659b336ddef09 (from https://pypi.org/simple/pywlroots/), version: 0.13.4
2021-11-16T16:36:11,868 Found link https://files.pythonhosted.org/packages/ec/79/a35cbcf8dcfb60569d8646cc1fcbb3c77b77b5cdf311ed2b237fb4a23127/pywlroots-0.13.5.tar.gz#sha256=cc037635948b97abe82a2497b1fd170a1c2c9d90a7d492625ef7ef5d930017a7 (from https://pypi.org/simple/pywlroots/), version: 0.13.5
2021-11-16T16:36:11,869 Found link https://files.pythonhosted.org/packages/76/14/1ff1121a518a08f96c464f5d55ed4d56dd1a188b16a0b02d43d9429de4c2/pywlroots-0.13.6.tar.gz#sha256=472b0794ec4dd1447abfde85261011bac5eea12bf31f9c54ed004cafc61770dc (from https://pypi.org/simple/pywlroots/), version: 0.13.6
2021-11-16T16:36:11,869 Found link https://files.pythonhosted.org/packages/84/64/92c26f2b2cc4a582c7df3fe65f081e0c57a31330319cb33cb89ff7e849d4/pywlroots-0.14.0.tar.gz#sha256=525970ca05131a1685076912a5203ed3ce4ff787aed0ec2859a29a8adb06b782 (from https://pypi.org/simple/pywlroots/), version: 0.14.0
2021-11-16T16:36:11,869 Found link https://files.pythonhosted.org/packages/93/66/c68146a15973cadf028fc83e6dabfa3707496d439afc1182bc02824ff1b7/pywlroots-0.14.1.tar.gz#sha256=d20b8d80a8ffa74a1ab989c3d91da8725b6f80c0a3f55891d9884b981d7f6cf3 (from https://pypi.org/simple/pywlroots/), version: 0.14.1
2021-11-16T16:36:11,870 Found link https://files.pythonhosted.org/packages/4f/5d/ef2cb43d081d9acfecc5b8d945b98fe3ff427c754de38b0062c6b65fb67d/pywlroots-0.14.2.tar.gz#sha256=4d9aab03e68d10e34c51885aab99c767a16034e7626ce995ab7802f6a430ce88 (from https://pypi.org/simple/pywlroots/), version: 0.14.2
2021-11-16T16:36:11,870 Found link https://files.pythonhosted.org/packages/39/8a/eb84bec5b33d10b8785c7f0421ebe0d3e2853e022d8513b57bd7bbf6e4ab/pywlroots-0.14.3.tar.gz#sha256=41ff1cdb97414fca40a7089c1ce45cbfee80656da03e48d1526c847776647c64 (from https://pypi.org/simple/pywlroots/), version: 0.14.3
2021-11-16T16:36:11,870 Found link https://files.pythonhosted.org/packages/a5/13/c5de6d581820f17c04d4cf141ab0a1992cd44cfb2e0e638ed3c013cd7bcf/pywlroots-0.14.4.tar.gz#sha256=c678bd54972d02cb6d437d4992f481c435ba8d873850ea553a0bec2e5565853a (from https://pypi.org/simple/pywlroots/), version: 0.14.4
2021-11-16T16:36:11,871 Found link https://files.pythonhosted.org/packages/41/61/73cadef03a5ce16d38ac7cc97ce74143de614a125ca12f00dba43af83da4/pywlroots-0.14.5.tar.gz#sha256=414eb5a7f9f9364ad749dbe1fa65986646cdcf3d0f26751df97cbda60cec4bf9 (from https://pypi.org/simple/pywlroots/), version: 0.14.5
2021-11-16T16:36:11,871 Found link https://files.pythonhosted.org/packages/3c/7a/81f61258e67dde4fe4ad8a1eb2a47775d9fe9358111b675871ed4dd91043/pywlroots-0.14.6.tar.gz#sha256=84bb5d1db666cab56074a72261cae2ee373c78d05b2d31ba6d2c364742030fa7 (from https://pypi.org/simple/pywlroots/), version: 0.14.6
2021-11-16T16:36:11,871 Found link https://files.pythonhosted.org/packages/69/39/ebbaf96930ee937a1022348412602a6695b169b62bc86aebf206f4fa9d1e/pywlroots-0.14.7.tar.gz#sha256=f3ecfbb670bae9d776dff042f46641edb6877571ee55a59b40af7cd7db729035 (from https://pypi.org/simple/pywlroots/), version: 0.14.7
2021-11-16T16:36:11,872 Found link https://files.pythonhosted.org/packages/9e/03/410df1bd9ae4423437f1de355f459b3d8c67e8c024c56d552058e9188c9e/pywlroots-0.14.8.tar.gz#sha256=bc25603b6eb2bf8c09f5c7a37cb7eb45091bb912462d37ecaa403dc6f6f0c911 (from https://pypi.org/simple/pywlroots/), version: 0.14.8
2021-11-16T16:36:11,872 Found link https://files.pythonhosted.org/packages/34/4e/d8011bf7e170b9d3a4c9c1ce5afe65b75e4c837759ccf6570b9f88a9584c/pywlroots-0.14.9.tar.gz#sha256=8f31e1e6e6e89e7ea909a3a9f839ebeed03d9f90dd676f2104cfb4de365996f7 (from https://pypi.org/simple/pywlroots/), version: 0.14.9
2021-11-16T16:36:11,872 Found link https://files.pythonhosted.org/packages/d2/2b/50bbc0b6548fa535578369d73443b5adba0a5bcc87c731f2e106dd4cb10a/pywlroots-0.14.10.tar.gz#sha256=8c3bf811d60adb612d9ee7dc5aec9ada3947bf7ec93c3252e7b9cd32582191f8 (from https://pypi.org/simple/pywlroots/), version: 0.14.10
2021-11-16T16:36:11,937 Given no hashes to check 1 links for project 'pywlroots': discarding no candidates
2021-11-16T16:36:12,002 Collecting pywlroots==0.1.3
2021-11-16T16:36:12,003 Created temporary directory: /tmp/pip-unpack-l58437w8
2021-11-16T16:36:12,005 Getting credentials from keyring for files.pythonhosted.org
2021-11-16T16:36:12,023 Looking up "https://files.pythonhosted.org/packages/1d/e2/f59e4e101755b504f6a4f1ac130db6f60ee835a8d905c7018ba40dae6eaa/pywlroots-0.1.3.tar.gz" in the cache
2021-11-16T16:36:12,025 Current age based on date: 177
2021-11-16T16:36:12,026 Ignoring unknown cache-control directive: immutable
2021-11-16T16:36:12,026 Freshness lifetime from max-age: 365000000
2021-11-16T16:36:12,026 The response is "fresh", returning cached response
2021-11-16T16:36:12,026 365000000 > 177
2021-11-16T16:36:12,027 Using cached pywlroots-0.1.3.tar.gz (41 kB)
2021-11-16T16:36:12,080 Added pywlroots==0.1.3 from https://files.pythonhosted.org/packages/1d/e2/f59e4e101755b504f6a4f1ac130db6f60ee835a8d905c7018ba40dae6eaa/pywlroots-0.1.3.tar.gz#sha256=2369dd43f82bb28f75548e71b55564bf11f3b06d5d1072c54cb7758c4a630352 to build tracker '/tmp/pip-req-tracker-1zz9nw25'
2021-11-16T16:36:12,081 Running setup.py (path:/tmp/pip-install-b3cqmuw9/pywlroots_7cf9620257f74a229069820f234b8226/setup.py) egg_info for package pywlroots
2021-11-16T16:36:12,081 Created temporary directory: /tmp/pip-pip-egg-info-8lm4xfd1
2021-11-16T16:36:12,081 Running command python setup.py egg_info
2021-11-16T16:36:13,462 running egg_info
2021-11-16T16:36:13,463 creating /tmp/pip-pip-egg-info-8lm4xfd1/pywlroots.egg-info
2021-11-16T16:36:13,464 writing /tmp/pip-pip-egg-info-8lm4xfd1/pywlroots.egg-info/PKG-INFO
2021-11-16T16:36:13,465 writing dependency_links to /tmp/pip-pip-egg-info-8lm4xfd1/pywlroots.egg-info/dependency_links.txt
2021-11-16T16:36:13,466 writing requirements to /tmp/pip-pip-egg-info-8lm4xfd1/pywlroots.egg-info/requires.txt
2021-11-16T16:36:13,466 writing top-level names to /tmp/pip-pip-egg-info-8lm4xfd1/pywlroots.egg-info/top_level.txt
2021-11-16T16:36:13,467 writing manifest file '/tmp/pip-pip-egg-info-8lm4xfd1/pywlroots.egg-info/SOURCES.txt'
2021-11-16T16:36:13,625 reading manifest file '/tmp/pip-pip-egg-info-8lm4xfd1/pywlroots.egg-info/SOURCES.txt'
2021-11-16T16:36:13,626 reading manifest template 'MANIFEST.in'
2021-11-16T16:36:13,629 writing manifest file '/tmp/pip-pip-egg-info-8lm4xfd1/pywlroots.egg-info/SOURCES.txt'
2021-11-16T16:36:13,735 Source in /tmp/pip-install-b3cqmuw9/pywlroots_7cf9620257f74a229069820f234b8226 has version 0.1.3, which satisfies requirement pywlroots==0.1.3 from https://files.pythonhosted.org/packages/1d/e2/f59e4e101755b504f6a4f1ac130db6f60ee835a8d905c7018ba40dae6eaa/pywlroots-0.1.3.tar.gz#sha256=2369dd43f82bb28f75548e71b55564bf11f3b06d5d1072c54cb7758c4a630352
2021-11-16T16:36:13,738 Removed pywlroots==0.1.3 from https://files.pythonhosted.org/packages/1d/e2/f59e4e101755b504f6a4f1ac130db6f60ee835a8d905c7018ba40dae6eaa/pywlroots-0.1.3.tar.gz#sha256=2369dd43f82bb28f75548e71b55564bf11f3b06d5d1072c54cb7758c4a630352 from build tracker '/tmp/pip-req-tracker-1zz9nw25'
2021-11-16T16:36:13,799 Requirement already satisfied: cffi>=1.12.0 in /home/kiko/.local/lib/python3.9/site-packages (from pywlroots==0.1.3) (1.15.0)
2021-11-16T16:36:13,805 Requirement already satisfied: pywayland>=0.1.1 in /home/kiko/.local/lib/python3.9/site-packages (from pywlroots==0.1.3) (0.4.7)
2021-11-16T16:36:13,809 Requirement already satisfied: xkbcommon>=0.2 in /home/kiko/.local/lib/python3.9/site-packages (from pywlroots==0.1.3) (0.4)
2021-11-16T16:36:13,819 Requirement already satisfied: pycparser in /home/kiko/.local/lib/python3.9/site-packages (from cffi>=1.12.0->pywlroots==0.1.3) (2.21)
2021-11-16T16:36:13,845 Created temporary directory: /tmp/pip-unpack-r2wmzh84
2021-11-16T16:36:13,847 Building wheels for collected packages: pywlroots
2021-11-16T16:36:13,849 Created temporary directory: /tmp/pip-wheel-ypwaij_v
2021-11-16T16:36:13,850 Destination directory: /tmp/pip-wheel-ypwaij_v
2021-11-16T16:36:13,850 Running command /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-b3cqmuw9/pywlroots_7cf9620257f74a229069820f234b8226/setup.py'"'"'; __file__='"'"'/tmp/pip-install-b3cqmuw9/pywlroots_7cf9620257f74a229069820f234b8226/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-ypwaij_v
2021-11-16T16:36:15,207 running bdist_wheel
2021-11-16T16:36:15,211 running build
2021-11-16T16:36:15,211 running build_py
2021-11-16T16:36:15,364 creating build
2021-11-16T16:36:15,365 creating build/lib.linux-x86_64-3.9
2021-11-16T16:36:15,365 creating build/lib.linux-x86_64-3.9/wlroots
2021-11-16T16:36:15,365 copying wlroots/backend.py -> build/lib.linux-x86_64-3.9/wlroots
2021-11-16T16:36:15,366 copying wlroots/renderer.py -> build/lib.linux-x86_64-3.9/wlroots
2021-11-16T16:36:15,366 copying wlroots/__init__.py -> build/lib.linux-x86_64-3.9/wlroots
2021-11-16T16:36:15,367 copying wlroots/ffi_build.py -> build/lib.linux-x86_64-3.9/wlroots
2021-11-16T16:36:15,368 creating build/lib.linux-x86_64-3.9/wlroots/util
2021-11-16T16:36:15,369 copying wlroots/util/clock.py -> build/lib.linux-x86_64-3.9/wlroots/util
2021-11-16T16:36:15,369 copying wlroots/util/log.py -> build/lib.linux-x86_64-3.9/wlroots/util
2021-11-16T16:36:15,370 copying wlroots/util/__init__.py -> build/lib.linux-x86_64-3.9/wlroots/util
2021-11-16T16:36:15,370 copying wlroots/util/edges.py -> build/lib.linux-x86_64-3.9/wlroots/util
2021-11-16T16:36:15,372 creating build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:15,372 copying wlroots/wlr_types/texture.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:15,373 copying wlroots/wlr_types/data_device_manager.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:15,373 copying wlroots/wlr_types/matrix.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:15,374 copying wlroots/wlr_types/output_layout.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:15,375 copying wlroots/wlr_types/xdg_shell.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:15,375 copying wlroots/wlr_types/cursor.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:15,376 copying wlroots/wlr_types/compositor.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:15,377 copying wlroots/wlr_types/keyboard.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:15,377 copying wlroots/wlr_types/xcursor_manager.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:15,378 copying wlroots/wlr_types/seat.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:15,379 copying wlroots/wlr_types/surface.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:15,379 copying wlroots/wlr_types/__init__.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:15,380 copying wlroots/wlr_types/pointer.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:15,380 copying wlroots/wlr_types/box.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:15,381 copying wlroots/wlr_types/input_device.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:15,381 copying wlroots/wlr_types/output.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:15,383 copying wlroots/py.typed -> build/lib.linux-x86_64-3.9/wlroots
2021-11-16T16:36:15,385 running build_ext
2021-11-16T16:36:15,386 generating cffi module 'build/temp.linux-x86_64-3.9/wlroots._ffi.c'
2021-11-16T16:36:15,387 creating build/temp.linux-x86_64-3.9
2021-11-16T16:36:15,491 building 'wlroots._ffi' extension
2021-11-16T16:36:15,491 creating build/temp.linux-x86_64-3.9/build
2021-11-16T16:36:15,491 creating build/temp.linux-x86_64-3.9/build/temp.linux-x86_64-3.9
2021-11-16T16:36:15,492 x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DWLR_USE_UNSTABLE -I/usr/include/pixman-1 -I/tmp/pip-install-b3cqmuw9/pywlroots_7cf9620257f74a229069820f234b8226/include -I/usr/include/python3.9 -c build/temp.linux-x86_64-3.9/wlroots._ffi.c -o build/temp.linux-x86_64-3.9/build/temp.linux-x86_64-3.9/wlroots._ffi.o
2021-11-16T16:36:15,915 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_const_WLR_KEY_RELEASED’:
2021-11-16T16:36:15,916 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1340:12: error: ‘WLR_KEY_RELEASED’ undeclared (first use in this function); did you mean ‘WLR_BUTTON_RELEASED’?
2021-11-16T16:36:15,916 1340 | int n = (WLR_KEY_RELEASED) <= 0;
2021-11-16T16:36:15,917 | ^~~~~~~~~~~~~~~~
2021-11-16T16:36:15,917 | WLR_BUTTON_RELEASED
2021-11-16T16:36:15,917 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1340:12: note: each undeclared identifier is reported only once for each function it appears in
2021-11-16T16:36:15,945 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_const_WLR_KEY_PRESSED’:
2021-11-16T16:36:15,946 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1347:12: error: ‘WLR_KEY_PRESSED’ undeclared (first use in this function); did you mean ‘WLR_BUTTON_PRESSED’?
2021-11-16T16:36:15,946 1347 | int n = (WLR_KEY_PRESSED) <= 0;
2021-11-16T16:36:15,946 | ^~~~~~~~~~~~~~~
2021-11-16T16:36:15,947 | WLR_BUTTON_PRESSED
2021-11-16T16:36:15,953 build/temp.linux-x86_64-3.9/wlroots._ffi.c: At top level:
2021-11-16T16:36:15,954 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1797:119: warning: ‘struct wlr_egl’ declared inside parameter list will not be visible outside of this definition or declaration
2021-11-16T16:36:15,954 1797 | static struct wlr_backend * _cffi_d_wlr_backend_autocreate(struct wl_display * x0, struct wlr_renderer *(* x1)(struct wlr_egl *, unsigned int, void *, int *, int))
2021-11-16T16:36:15,954 | ^~~~~~~
2021-11-16T16:36:15,955 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_d_wlr_backend_autocreate’:
2021-11-16T16:36:15,955 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1799:10: error: too many arguments to function ‘wlr_backend_autocreate’
2021-11-16T16:36:15,955 1799 | return wlr_backend_autocreate(x0, x1);
2021-11-16T16:36:15,955 | ^~~~~~~~~~~~~~~~~~~~~~
2021-11-16T16:36:15,955 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:570:
2021-11-16T16:36:15,956 /usr/local/include/wlr/backend.h:41:21: note: declared here
2021-11-16T16:36:15,956 41 | struct wlr_backend *wlr_backend_autocreate(struct wl_display *display);
2021-11-16T16:36:15,956 | ^~~~~~~~~~~~~~~~~~~~~~
2021-11-16T16:36:15,957 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_f_wlr_backend_autocreate’:
2021-11-16T16:36:15,957 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1806:38: warning: ‘struct wlr_egl’ declared inside parameter list will not be visible outside of this definition or declaration
2021-11-16T16:36:15,957 1806 | struct wlr_renderer *(* x1)(struct wlr_egl *, unsigned int, void *, int *, int);
2021-11-16T16:36:15,957 | ^~~~~~~
2021-11-16T16:36:15,957 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1826:41: warning: ‘struct wlr_egl’ declared inside parameter list will not be visible outside of this definition or declaration
2021-11-16T16:36:15,958 1826 | x1 = (struct wlr_renderer *(*)(struct wlr_egl *, unsigned int, void *, int *, int))_cffi_to_c_pointer(arg1, _cffi_type(72));
2021-11-16T16:36:15,958 | ^~~~~~~
2021-11-16T16:36:15,958 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1826:6: warning: assignment to ‘struct wlr_renderer * (*)(struct wlr_egl *, unsigned int, void *, int *, int)’ from incompatible pointer type ‘struct wlr_renderer * (*)(struct wlr_egl *, unsigned int, void *, int *, int)’ [-Wincompatible-pointer-types]
2021-11-16T16:36:15,959 1826 | x1 = (struct wlr_renderer *(*)(struct wlr_egl *, unsigned int, void *, int *, int))_cffi_to_c_pointer(arg1, _cffi_type(72));
2021-11-16T16:36:15,959 | ^
2021-11-16T16:36:15,959 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1827:46: warning: ‘struct wlr_egl’ declared inside parameter list will not be visible outside of this definition or declaration
2021-11-16T16:36:15,959 1827 | if (x1 == (struct wlr_renderer *(*)(struct wlr_egl *, unsigned int, void *, int *, int))NULL && PyErr_Occurred())
2021-11-16T16:36:15,960 | ^~~~~~~
2021-11-16T16:36:15,960 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1827:10: warning: comparison of distinct pointer types lacks a cast
2021-11-16T16:36:15,960 1827 | if (x1 == (struct wlr_renderer *(*)(struct wlr_egl *, unsigned int, void *, int *, int))NULL && PyErr_Occurred())
2021-11-16T16:36:15,961 | ^~
2021-11-16T16:36:15,961 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1832:14: error: too many arguments to function ‘wlr_backend_autocreate’
2021-11-16T16:36:15,962 1832 | { result = wlr_backend_autocreate(x0, x1); }
2021-11-16T16:36:15,962 | ^~~~~~~~~~~~~~~~~~~~~~
2021-11-16T16:36:15,962 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:570:
2021-11-16T16:36:15,962 /usr/local/include/wlr/backend.h:41:21: note: declared here
2021-11-16T16:36:15,963 41 | struct wlr_backend *wlr_backend_autocreate(struct wl_display *display);
2021-11-16T16:36:15,963 | ^~~~~~~~~~~~~~~~~~~~~~
2021-11-16T16:36:16,176 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_d_wlr_xdg_surface_for_each_popup’:
2021-11-16T16:36:16,180 build/temp.linux-x86_64-3.9/wlroots._ffi.c:5678:3: warning: implicit declaration of function ‘wlr_xdg_surface_for_each_popup’; did you mean ‘wlr_xdg_surface_for_each_surface’? [-Wimplicit-function-declaration]
2021-11-16T16:36:16,180 5678 | wlr_xdg_surface_for_each_popup(x0, x1, x2);
2021-11-16T16:36:16,181 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-11-16T16:36:16,181 | wlr_xdg_surface_for_each_surface
2021-11-16T16:36:16,236 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_checkfld_struct_wlr_event_keyboard_key’:
2021-11-16T16:36:16,239 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6558:31: warning: initialization of ‘enum wlr_key_state *’ from incompatible pointer type ‘enum wl_keyboard_key_state *’ [-Wincompatible-pointer-types]
2021-11-16T16:36:16,239 6558 | { enum wlr_key_state *tmp = &p->state; (void)tmp; }
2021-11-16T16:36:16,239 | ^
2021-11-16T16:36:16,245 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_checkfld_struct_wlr_surface’:
2021-11-16T16:36:16,249 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6877:37: warning: initialization of ‘struct wlr_surface_state *’ from incompatible pointer type ‘struct <anonymous> *’ [-Wincompatible-pointer-types]
2021-11-16T16:36:16,249 6877 | { struct wlr_surface_state *tmp = &p->previous; (void)tmp; }
2021-11-16T16:36:16,249 | ^
2021-11-16T16:36:16,252 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6881:29: error: ‘struct wlr_surface’ has no member named ‘subsurfaces’
2021-11-16T16:36:16,252 6881 | { struct wl_list *tmp = &p->subsurfaces; (void)tmp; }
2021-11-16T16:36:16,252 | ^~
2021-11-16T16:36:16,255 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6882:29: error: ‘struct wlr_surface’ has no member named ‘subsurface_pending_list’
2021-11-16T16:36:16,255 6882 | { struct wl_list *tmp = &p->subsurface_pending_list; (void)tmp; }
2021-11-16T16:36:16,256 | ^~
2021-11-16T16:36:16,256 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_checkfld_struct_wlr_surface_state’:
2021-11-16T16:36:16,259 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6905:35: error: ‘struct wlr_surface_state’ has no member named ‘buffer_resource’
2021-11-16T16:36:16,259 6905 | { struct wl_resource * *tmp = &p->buffer_resource; (void)tmp; }
2021-11-16T16:36:16,259 | ^~
2021-11-16T16:36:16,262 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6919:33: error: ‘struct wlr_surface_state’ has no member named ‘buffer_destroy’
2021-11-16T16:36:16,263 6919 | { struct wl_listener *tmp = &p->buffer_destroy; (void)tmp; }
2021-11-16T16:36:16,263 | ^~
2021-11-16T16:36:16,263 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_checkfld_struct_wlr_xdg_surface’:
2021-11-16T16:36:16,268 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6954:14: error: ‘struct wlr_xdg_surface’ has no member named ‘configure_serial’; did you mean ‘configure_idle’?
2021-11-16T16:36:16,269 6954 | (void)((p->configure_serial) | 0); /* check that 'struct wlr_xdg_surface.configure_serial' is an integer */
2021-11-16T16:36:16,269 | ^~~~~~~~~~~~~~~~
2021-11-16T16:36:16,269 | configure_idle
2021-11-16T16:36:16,272 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6956:12: error: ‘struct wlr_xdg_surface’ has no member named ‘configure_next_serial’
2021-11-16T16:36:16,272 6956 | (void)((p->configure_next_serial) | 0); /* check that 'struct wlr_xdg_surface.configure_next_serial' is an integer */
2021-11-16T16:36:16,272 | ^~
2021-11-16T16:36:16,275 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6958:12: error: ‘struct wlr_xdg_surface’ has no member named ‘has_next_geometry’
2021-11-16T16:36:16,275 6958 | (void)((p->has_next_geometry) | 0); /* check that 'struct wlr_xdg_surface.has_next_geometry' is an integer */
2021-11-16T16:36:16,275 | ^~
2021-11-16T16:36:16,278 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6959:29: error: ‘struct wlr_xdg_surface’ has no member named ‘next_geometry’
2021-11-16T16:36:16,279 6959 | { struct wlr_box *tmp = &p->next_geometry; (void)tmp; }
2021-11-16T16:36:16,279 | ^~
2021-11-16T16:36:16,281 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6960:29: error: ‘struct wlr_xdg_surface’ has no member named ‘geometry’
2021-11-16T16:36:16,282 6960 | { struct wlr_box *tmp = &p->geometry; (void)tmp; }
2021-11-16T16:36:16,282 | ^~
2021-11-16T16:36:16,282 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_checkfld_struct_wlr_xdg_toplevel’:
2021-11-16T16:36:16,285 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6978:44: error: ‘struct wlr_xdg_toplevel’ has no member named ‘client_pending’
2021-11-16T16:36:16,285 6978 | { struct wlr_xdg_toplevel_state *tmp = &p->client_pending; (void)tmp; }
2021-11-16T16:36:16,286 | ^~
2021-11-16T16:36:16,288 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6979:44: error: ‘struct wlr_xdg_toplevel’ has no member named ‘server_pending’
2021-11-16T16:36:16,289 6979 | { struct wlr_xdg_toplevel_state *tmp = &p->server_pending; (void)tmp; }
2021-11-16T16:36:16,289 | ^~
2021-11-16T16:36:16,290 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_checkfld_struct_wlr_xdg_toplevel_state’:
2021-11-16T16:36:16,293 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7050:34: error: ‘struct wlr_xdg_toplevel_state’ has no member named ‘fullscreen_output’
2021-11-16T16:36:16,294 7050 | { struct wlr_output * *tmp = &p->fullscreen_output; (void)tmp; }
2021-11-16T16:36:16,294 | ^~
2021-11-16T16:36:16,296 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7051:33: error: ‘struct wlr_xdg_toplevel_state’ has no member named ‘fullscreen_output_destroy’
2021-11-16T16:36:16,297 7051 | { struct wl_listener *tmp = &p->fullscreen_output_destroy; (void)tmp; }
2021-11-16T16:36:16,297 | ^~
2021-11-16T16:36:16,331 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:16,331 build/temp.linux-x86_64-3.9/wlroots._ffi.c: At top level:
2021-11-16T16:36:16,334 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7828:20: error: ‘struct wlr_surface’ has no member named ‘subsurfaces’
2021-11-16T16:36:16,334 7828 | { "subsurfaces", offsetof(struct wlr_surface, subsurfaces),
2021-11-16T16:36:16,335 | ^~~~~~~~
2021-11-16T16:36:16,338 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7829:52: error: ‘struct wlr_surface’ has no member named ‘subsurfaces’
2021-11-16T16:36:16,338 7829 | sizeof(((struct wlr_surface *)0)->subsurfaces),
2021-11-16T16:36:16,338 | ^~
2021-11-16T16:36:16,341 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:16,342 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7831:32: error: ‘struct wlr_surface’ has no member named ‘subsurface_pending_list’
2021-11-16T16:36:16,342 7831 | { "subsurface_pending_list", offsetof(struct wlr_surface, subsurface_pending_list),
2021-11-16T16:36:16,342 | ^~~~~~~~
2021-11-16T16:36:16,345 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7832:64: error: ‘struct wlr_surface’ has no member named ‘subsurface_pending_list’
2021-11-16T16:36:16,346 7832 | sizeof(((struct wlr_surface *)0)->subsurface_pending_list),
2021-11-16T16:36:16,346 | ^~
2021-11-16T16:36:16,350 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:16,350 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7852:24: error: ‘struct wlr_surface_state’ has no member named ‘buffer_resource’
2021-11-16T16:36:16,350 7852 | { "buffer_resource", offsetof(struct wlr_surface_state, buffer_resource),
2021-11-16T16:36:16,350 | ^~~~~~~~
2021-11-16T16:36:16,353 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7853:62: error: ‘struct wlr_surface_state’ has no member named ‘buffer_resource’
2021-11-16T16:36:16,354 7853 | sizeof(((struct wlr_surface_state *)0)->buffer_resource),
2021-11-16T16:36:16,354 | ^~
2021-11-16T16:36:16,358 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:16,359 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7894:23: error: ‘struct wlr_surface_state’ has no member named ‘buffer_destroy’
2021-11-16T16:36:16,359 7894 | { "buffer_destroy", offsetof(struct wlr_surface_state, buffer_destroy),
2021-11-16T16:36:16,359 | ^~~~~~~~
2021-11-16T16:36:16,362 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7895:61: error: ‘struct wlr_surface_state’ has no member named ‘buffer_destroy’
2021-11-16T16:36:16,362 7895 | sizeof(((struct wlr_surface_state *)0)->buffer_destroy),
2021-11-16T16:36:16,363 | ^~
2021-11-16T16:36:16,368 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:16,368 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7951:58: error: ‘struct wlr_xdg_surface’ has no member named ‘configure_serial’; did you mean ‘configure_idle’?
2021-11-16T16:36:16,368 7951 | { "configure_serial", offsetof(struct wlr_xdg_surface, configure_serial),
2021-11-16T16:36:16,368 | ^~~~~~~~~~~~~~~~
2021-11-16T16:36:16,374 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7952:63: error: ‘struct wlr_xdg_surface’ has no member named ‘configure_serial’; did you mean ‘configure_idle’?
2021-11-16T16:36:16,374 7952 | sizeof(((struct wlr_xdg_surface *)0)->configure_serial),
2021-11-16T16:36:16,374 | ^~~~~~~~~~~~~~~~
2021-11-16T16:36:16,374 | configure_idle
2021-11-16T16:36:16,378 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:16,378 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7957:30: error: ‘struct wlr_xdg_surface’ has no member named ‘configure_next_serial’
2021-11-16T16:36:16,378 7957 | { "configure_next_serial", offsetof(struct wlr_xdg_surface, configure_next_serial),
2021-11-16T16:36:16,378 | ^~~~~~~~
2021-11-16T16:36:16,381 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7958:66: error: ‘struct wlr_xdg_surface’ has no member named ‘configure_next_serial’
2021-11-16T16:36:16,382 7958 | sizeof(((struct wlr_xdg_surface *)0)->configure_next_serial),
2021-11-16T16:36:16,382 | ^~
2021-11-16T16:36:16,385 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:16,386 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7963:26: error: ‘struct wlr_xdg_surface’ has no member named ‘has_next_geometry’
2021-11-16T16:36:16,386 7963 | { "has_next_geometry", offsetof(struct wlr_xdg_surface, has_next_geometry),
2021-11-16T16:36:16,386 | ^~~~~~~~
2021-11-16T16:36:16,389 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7964:62: error: ‘struct wlr_xdg_surface’ has no member named ‘has_next_geometry’
2021-11-16T16:36:16,389 7964 | sizeof(((struct wlr_xdg_surface *)0)->has_next_geometry),
2021-11-16T16:36:16,389 | ^~
2021-11-16T16:36:16,393 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:16,393 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7966:22: error: ‘struct wlr_xdg_surface’ has no member named ‘next_geometry’
2021-11-16T16:36:16,393 7966 | { "next_geometry", offsetof(struct wlr_xdg_surface, next_geometry),
2021-11-16T16:36:16,393 | ^~~~~~~~
2021-11-16T16:36:16,396 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7967:58: error: ‘struct wlr_xdg_surface’ has no member named ‘next_geometry’
2021-11-16T16:36:16,397 7967 | sizeof(((struct wlr_xdg_surface *)0)->next_geometry),
2021-11-16T16:36:16,397 | ^~
2021-11-16T16:36:16,400 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:16,401 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7969:17: error: ‘struct wlr_xdg_surface’ has no member named ‘geometry’
2021-11-16T16:36:16,401 7969 | { "geometry", offsetof(struct wlr_xdg_surface, geometry),
2021-11-16T16:36:16,401 | ^~~~~~~~
2021-11-16T16:36:16,404 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7970:53: error: ‘struct wlr_xdg_surface’ has no member named ‘geometry’
2021-11-16T16:36:16,404 7970 | sizeof(((struct wlr_xdg_surface *)0)->geometry),
2021-11-16T16:36:16,405 | ^~
2021-11-16T16:36:16,409 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:16,409 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7999:23: error: ‘struct wlr_xdg_toplevel’ has no member named ‘client_pending’
2021-11-16T16:36:16,409 7999 | { "client_pending", offsetof(struct wlr_xdg_toplevel, client_pending),
2021-11-16T16:36:16,409 | ^~~~~~~~
2021-11-16T16:36:16,412 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8000:60: error: ‘struct wlr_xdg_toplevel’ has no member named ‘client_pending’
2021-11-16T16:36:16,413 8000 | sizeof(((struct wlr_xdg_toplevel *)0)->client_pending),
2021-11-16T16:36:16,413 | ^~
2021-11-16T16:36:16,416 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:16,416 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8002:23: error: ‘struct wlr_xdg_toplevel’ has no member named ‘server_pending’
2021-11-16T16:36:16,417 8002 | { "server_pending", offsetof(struct wlr_xdg_toplevel, server_pending),
2021-11-16T16:36:16,417 | ^~~~~~~~
2021-11-16T16:36:16,420 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8003:60: error: ‘struct wlr_xdg_toplevel’ has no member named ‘server_pending’
2021-11-16T16:36:16,420 8003 | sizeof(((struct wlr_xdg_toplevel *)0)->server_pending),
2021-11-16T16:36:16,421 | ^~
2021-11-16T16:36:16,427 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:16,427 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8095:26: error: ‘struct wlr_xdg_toplevel_state’ has no member named ‘fullscreen_output’
2021-11-16T16:36:16,427 8095 | { "fullscreen_output", offsetof(struct wlr_xdg_toplevel_state, fullscreen_output),
2021-11-16T16:36:16,428 | ^~~~~~~~
2021-11-16T16:36:16,430 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8096:69: error: ‘struct wlr_xdg_toplevel_state’ has no member named ‘fullscreen_output’
2021-11-16T16:36:16,431 8096 | sizeof(((struct wlr_xdg_toplevel_state *)0)->fullscreen_output),
2021-11-16T16:36:16,431 | ^~
2021-11-16T16:36:16,434 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:16,435 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8098:34: error: ‘struct wlr_xdg_toplevel_state’ has no member named ‘fullscreen_output_destroy’
2021-11-16T16:36:16,435 8098 | { "fullscreen_output_destroy", offsetof(struct wlr_xdg_toplevel_state, fullscreen_output_destroy),
2021-11-16T16:36:16,435 | ^~~~~~~~
2021-11-16T16:36:16,438 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8099:77: error: ‘struct wlr_xdg_toplevel_state’ has no member named ‘fullscreen_output_destroy’
2021-11-16T16:36:16,438 8099 | sizeof(((struct wlr_xdg_toplevel_state *)0)->fullscreen_output_destroy),
2021-11-16T16:36:16,439 | ^~
2021-11-16T16:36:16,456 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8564:49: error: invalid application of ‘sizeof’ to incomplete type ‘enum wlr_key_state’
2021-11-16T16:36:16,456 8564 | { "wlr_key_state", 412, _cffi_prim_int(sizeof(enum wlr_key_state), ((enum wlr_key_state)-1) <= 0),
2021-11-16T16:36:16,457 | ^~~~
2021-11-16T16:36:16,457 build/temp.linux-x86_64-3.9/wlroots._ffi.c:541:7: note: in definition of macro ‘_cffi_prim_int’
2021-11-16T16:36:16,457 541 | ((size) == 1 ? ((sign) ? _CFFI_PRIM_INT8 : _CFFI_PRIM_UINT8) : \
2021-11-16T16:36:16,457 | ^~~~
2021-11-16T16:36:16,461 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8564:77: error: conversion to incomplete type
2021-11-16T16:36:16,461 8564 | { "wlr_key_state", 412, _cffi_prim_int(sizeof(enum wlr_key_state), ((enum wlr_key_state)-1) <= 0),
2021-11-16T16:36:16,461 | ^~~~~~~~~~~~~
2021-11-16T16:36:16,461 build/temp.linux-x86_64-3.9/wlroots._ffi.c:541:22: note: in definition of macro ‘_cffi_prim_int’
2021-11-16T16:36:16,462 541 | ((size) == 1 ? ((sign) ? _CFFI_PRIM_INT8 : _CFFI_PRIM_UINT8) : \
2021-11-16T16:36:16,462 | ^~~~
2021-11-16T16:36:16,465 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8564:49: error: invalid application of ‘sizeof’ to incomplete type ‘enum wlr_key_state’
2021-11-16T16:36:16,466 8564 | { "wlr_key_state", 412, _cffi_prim_int(sizeof(enum wlr_key_state), ((enum wlr_key_state)-1) <= 0),
2021-11-16T16:36:16,466 | ^~~~
2021-11-16T16:36:16,466 build/temp.linux-x86_64-3.9/wlroots._ffi.c:542:7: note: in definition of macro ‘_cffi_prim_int’
2021-11-16T16:36:16,466 542 | (size) == 2 ? ((sign) ? _CFFI_PRIM_INT16 : _CFFI_PRIM_UINT16) : \
2021-11-16T16:36:16,466 | ^~~~
2021-11-16T16:36:16,470 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8564:77: error: conversion to incomplete type
2021-11-16T16:36:16,470 8564 | { "wlr_key_state", 412, _cffi_prim_int(sizeof(enum wlr_key_state), ((enum wlr_key_state)-1) <= 0),
2021-11-16T16:36:16,470 | ^~~~~~~~~~~~~
2021-11-16T16:36:16,471 build/temp.linux-x86_64-3.9/wlroots._ffi.c:542:22: note: in definition of macro ‘_cffi_prim_int’
2021-11-16T16:36:16,471 542 | (size) == 2 ? ((sign) ? _CFFI_PRIM_INT16 : _CFFI_PRIM_UINT16) : \
2021-11-16T16:36:16,471 | ^~~~
2021-11-16T16:36:16,474 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8564:49: error: invalid application of ‘sizeof’ to incomplete type ‘enum wlr_key_state’
2021-11-16T16:36:16,475 8564 | { "wlr_key_state", 412, _cffi_prim_int(sizeof(enum wlr_key_state), ((enum wlr_key_state)-1) <= 0),
2021-11-16T16:36:16,475 | ^~~~
2021-11-16T16:36:16,475 build/temp.linux-x86_64-3.9/wlroots._ffi.c:543:7: note: in definition of macro ‘_cffi_prim_int’
2021-11-16T16:36:16,475 543 | (size) == 4 ? ((sign) ? _CFFI_PRIM_INT32 : _CFFI_PRIM_UINT32) : \
2021-11-16T16:36:16,476 | ^~~~
2021-11-16T16:36:16,479 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8564:77: error: conversion to incomplete type
2021-11-16T16:36:16,479 8564 | { "wlr_key_state", 412, _cffi_prim_int(sizeof(enum wlr_key_state), ((enum wlr_key_state)-1) <= 0),
2021-11-16T16:36:16,480 | ^~~~~~~~~~~~~
2021-11-16T16:36:16,480 build/temp.linux-x86_64-3.9/wlroots._ffi.c:543:22: note: in definition of macro ‘_cffi_prim_int’
2021-11-16T16:36:16,480 543 | (size) == 4 ? ((sign) ? _CFFI_PRIM_INT32 : _CFFI_PRIM_UINT32) : \
2021-11-16T16:36:16,480 | ^~~~
2021-11-16T16:36:16,484 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8564:49: error: invalid application of ‘sizeof’ to incomplete type ‘enum wlr_key_state’
2021-11-16T16:36:16,484 8564 | { "wlr_key_state", 412, _cffi_prim_int(sizeof(enum wlr_key_state), ((enum wlr_key_state)-1) <= 0),
2021-11-16T16:36:16,484 | ^~~~
2021-11-16T16:36:16,485 build/temp.linux-x86_64-3.9/wlroots._ffi.c:544:7: note: in definition of macro ‘_cffi_prim_int’
2021-11-16T16:36:16,485 544 | (size) == 8 ? ((sign) ? _CFFI_PRIM_INT64 : _CFFI_PRIM_UINT64) : \
2021-11-16T16:36:16,485 | ^~~~
2021-11-16T16:36:16,488 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8564:77: error: conversion to incomplete type
2021-11-16T16:36:16,489 8564 | { "wlr_key_state", 412, _cffi_prim_int(sizeof(enum wlr_key_state), ((enum wlr_key_state)-1) <= 0),
2021-11-16T16:36:16,489 | ^~~~~~~~~~~~~
2021-11-16T16:36:16,489 build/temp.linux-x86_64-3.9/wlroots._ffi.c:544:22: note: in definition of macro ‘_cffi_prim_int’
2021-11-16T16:36:16,490 544 | (size) == 8 ? ((sign) ? _CFFI_PRIM_INT64 : _CFFI_PRIM_UINT64) : \
2021-11-16T16:36:16,490 | ^~~~
2021-11-16T16:36:16,570 error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
2021-11-16T16:36:16,685 ERROR: Failed building wheel for pywlroots
2021-11-16T16:36:16,688 Running setup.py clean for pywlroots
2021-11-16T16:36:16,689 Running command /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-b3cqmuw9/pywlroots_7cf9620257f74a229069820f234b8226/setup.py'"'"'; __file__='"'"'/tmp/pip-install-b3cqmuw9/pywlroots_7cf9620257f74a229069820f234b8226/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' clean --all
2021-11-16T16:36:18,025 running clean
2021-11-16T16:36:18,026 removing 'build/temp.linux-x86_64-3.9' (and everything under it)
2021-11-16T16:36:18,027 removing 'build/lib.linux-x86_64-3.9' (and everything under it)
2021-11-16T16:36:18,031 'build/bdist.linux-x86_64' does not exist -- can't clean it
2021-11-16T16:36:18,031 'build/scripts-3.9' does not exist -- can't clean it
2021-11-16T16:36:18,033 removing 'build'
2021-11-16T16:36:18,121 Failed to build pywlroots
2021-11-16T16:36:18,759 Installing collected packages: pywlroots
2021-11-16T16:36:18,768 Created temporary directory: /tmp/pip-record-_9in_rf5
2021-11-16T16:36:18,769 Running command /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-b3cqmuw9/pywlroots_7cf9620257f74a229069820f234b8226/setup.py'"'"'; __file__='"'"'/tmp/pip-install-b3cqmuw9/pywlroots_7cf9620257f74a229069820f234b8226/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-_9in_rf5/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /home/kiko/.local/include/python3.9/pywlroots
2021-11-16T16:36:20,103 running install
2021-11-16T16:36:20,105 running build
2021-11-16T16:36:20,106 running build_py
2021-11-16T16:36:20,256 creating build
2021-11-16T16:36:20,257 creating build/lib.linux-x86_64-3.9
2021-11-16T16:36:20,258 creating build/lib.linux-x86_64-3.9/wlroots
2021-11-16T16:36:20,258 copying wlroots/backend.py -> build/lib.linux-x86_64-3.9/wlroots
2021-11-16T16:36:20,258 copying wlroots/renderer.py -> build/lib.linux-x86_64-3.9/wlroots
2021-11-16T16:36:20,259 copying wlroots/__init__.py -> build/lib.linux-x86_64-3.9/wlroots
2021-11-16T16:36:20,259 copying wlroots/ffi_build.py -> build/lib.linux-x86_64-3.9/wlroots
2021-11-16T16:36:20,261 creating build/lib.linux-x86_64-3.9/wlroots/util
2021-11-16T16:36:20,261 copying wlroots/util/clock.py -> build/lib.linux-x86_64-3.9/wlroots/util
2021-11-16T16:36:20,262 copying wlroots/util/log.py -> build/lib.linux-x86_64-3.9/wlroots/util
2021-11-16T16:36:20,262 copying wlroots/util/__init__.py -> build/lib.linux-x86_64-3.9/wlroots/util
2021-11-16T16:36:20,263 copying wlroots/util/edges.py -> build/lib.linux-x86_64-3.9/wlroots/util
2021-11-16T16:36:20,265 creating build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:20,265 copying wlroots/wlr_types/texture.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:20,266 copying wlroots/wlr_types/data_device_manager.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:20,266 copying wlroots/wlr_types/matrix.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:20,267 copying wlroots/wlr_types/output_layout.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:20,268 copying wlroots/wlr_types/xdg_shell.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:20,269 copying wlroots/wlr_types/cursor.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:20,269 copying wlroots/wlr_types/compositor.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:20,270 copying wlroots/wlr_types/keyboard.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:20,271 copying wlroots/wlr_types/xcursor_manager.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:20,271 copying wlroots/wlr_types/seat.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:20,272 copying wlroots/wlr_types/surface.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:20,273 copying wlroots/wlr_types/__init__.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:20,273 copying wlroots/wlr_types/pointer.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:20,274 copying wlroots/wlr_types/box.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:20,276 copying wlroots/wlr_types/input_device.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:20,277 copying wlroots/wlr_types/output.py -> build/lib.linux-x86_64-3.9/wlroots/wlr_types
2021-11-16T16:36:20,277 copying wlroots/py.typed -> build/lib.linux-x86_64-3.9/wlroots
2021-11-16T16:36:20,279 running build_ext
2021-11-16T16:36:20,281 generating cffi module 'build/temp.linux-x86_64-3.9/wlroots._ffi.c'
2021-11-16T16:36:20,282 creating build/temp.linux-x86_64-3.9
2021-11-16T16:36:20,386 building 'wlroots._ffi' extension
2021-11-16T16:36:20,386 creating build/temp.linux-x86_64-3.9/build
2021-11-16T16:36:20,386 creating build/temp.linux-x86_64-3.9/build/temp.linux-x86_64-3.9
2021-11-16T16:36:20,387 x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DWLR_USE_UNSTABLE -I/usr/include/pixman-1 -I/tmp/pip-install-b3cqmuw9/pywlroots_7cf9620257f74a229069820f234b8226/include -I/usr/include/python3.9 -c build/temp.linux-x86_64-3.9/wlroots._ffi.c -o build/temp.linux-x86_64-3.9/build/temp.linux-x86_64-3.9/wlroots._ffi.o
2021-11-16T16:36:20,819 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_const_WLR_KEY_RELEASED’:
2021-11-16T16:36:20,820 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1340:12: error: ‘WLR_KEY_RELEASED’ undeclared (first use in this function); did you mean ‘WLR_BUTTON_RELEASED’?
2021-11-16T16:36:20,821 1340 | int n = (WLR_KEY_RELEASED) <= 0;
2021-11-16T16:36:20,822 | ^~~~~~~~~~~~~~~~
2021-11-16T16:36:20,823 | WLR_BUTTON_RELEASED
2021-11-16T16:36:20,824 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1340:12: note: each undeclared identifier is reported only once for each function it appears in
2021-11-16T16:36:20,848 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_const_WLR_KEY_PRESSED’:
2021-11-16T16:36:20,849 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1347:12: error: ‘WLR_KEY_PRESSED’ undeclared (first use in this function); did you mean ‘WLR_BUTTON_PRESSED’?
2021-11-16T16:36:20,850 1347 | int n = (WLR_KEY_PRESSED) <= 0;
2021-11-16T16:36:20,851 | ^~~~~~~~~~~~~~~
2021-11-16T16:36:20,852 | WLR_BUTTON_PRESSED
2021-11-16T16:36:20,857 build/temp.linux-x86_64-3.9/wlroots._ffi.c: At top level:
2021-11-16T16:36:20,858 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1797:119: warning: ‘struct wlr_egl’ declared inside parameter list will not be visible outside of this definition or declaration
2021-11-16T16:36:20,859 1797 | static struct wlr_backend * _cffi_d_wlr_backend_autocreate(struct wl_display * x0, struct wlr_renderer *(* x1)(struct wlr_egl *, unsigned int, void *, int *, int))
2021-11-16T16:36:20,859 | ^~~~~~~
2021-11-16T16:36:20,860 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_d_wlr_backend_autocreate’:
2021-11-16T16:36:20,861 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1799:10: error: too many arguments to function ‘wlr_backend_autocreate’
2021-11-16T16:36:20,862 1799 | return wlr_backend_autocreate(x0, x1);
2021-11-16T16:36:20,863 | ^~~~~~~~~~~~~~~~~~~~~~
2021-11-16T16:36:20,863 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:570:
2021-11-16T16:36:20,864 /usr/local/include/wlr/backend.h:41:21: note: declared here
2021-11-16T16:36:20,865 41 | struct wlr_backend *wlr_backend_autocreate(struct wl_display *display);
2021-11-16T16:36:20,866 | ^~~~~~~~~~~~~~~~~~~~~~
2021-11-16T16:36:20,867 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_f_wlr_backend_autocreate’:
2021-11-16T16:36:20,867 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1806:38: warning: ‘struct wlr_egl’ declared inside parameter list will not be visible outside of this definition or declaration
2021-11-16T16:36:20,868 1806 | struct wlr_renderer *(* x1)(struct wlr_egl *, unsigned int, void *, int *, int);
2021-11-16T16:36:20,869 | ^~~~~~~
2021-11-16T16:36:20,870 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1826:41: warning: ‘struct wlr_egl’ declared inside parameter list will not be visible outside of this definition or declaration
2021-11-16T16:36:20,871 1826 | x1 = (struct wlr_renderer *(*)(struct wlr_egl *, unsigned int, void *, int *, int))_cffi_to_c_pointer(arg1, _cffi_type(72));
2021-11-16T16:36:20,872 | ^~~~~~~
2021-11-16T16:36:20,873 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1826:6: warning: assignment to ‘struct wlr_renderer * (*)(struct wlr_egl *, unsigned int, void *, int *, int)’ from incompatible pointer type ‘struct wlr_renderer * (*)(struct wlr_egl *, unsigned int, void *, int *, int)’ [-Wincompatible-pointer-types]
2021-11-16T16:36:20,873 1826 | x1 = (struct wlr_renderer *(*)(struct wlr_egl *, unsigned int, void *, int *, int))_cffi_to_c_pointer(arg1, _cffi_type(72));
2021-11-16T16:36:20,874 | ^
2021-11-16T16:36:20,875 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1827:46: warning: ‘struct wlr_egl’ declared inside parameter list will not be visible outside of this definition or declaration
2021-11-16T16:36:20,876 1827 | if (x1 == (struct wlr_renderer *(*)(struct wlr_egl *, unsigned int, void *, int *, int))NULL && PyErr_Occurred())
2021-11-16T16:36:20,877 | ^~~~~~~
2021-11-16T16:36:20,877 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1827:10: warning: comparison of distinct pointer types lacks a cast
2021-11-16T16:36:20,878 1827 | if (x1 == (struct wlr_renderer *(*)(struct wlr_egl *, unsigned int, void *, int *, int))NULL && PyErr_Occurred())
2021-11-16T16:36:20,879 | ^~
2021-11-16T16:36:20,880 build/temp.linux-x86_64-3.9/wlroots._ffi.c:1832:14: error: too many arguments to function ‘wlr_backend_autocreate’
2021-11-16T16:36:20,881 1832 | { result = wlr_backend_autocreate(x0, x1); }
2021-11-16T16:36:20,882 | ^~~~~~~~~~~~~~~~~~~~~~
2021-11-16T16:36:20,882 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:570:
2021-11-16T16:36:20,883 /usr/local/include/wlr/backend.h:41:21: note: declared here
2021-11-16T16:36:20,884 41 | struct wlr_backend *wlr_backend_autocreate(struct wl_display *display);
2021-11-16T16:36:20,885 | ^~~~~~~~~~~~~~~~~~~~~~
2021-11-16T16:36:21,080 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_d_wlr_xdg_surface_for_each_popup’:
2021-11-16T16:36:21,084 build/temp.linux-x86_64-3.9/wlroots._ffi.c:5678:3: warning: implicit declaration of function ‘wlr_xdg_surface_for_each_popup’; did you mean ‘wlr_xdg_surface_for_each_surface’? [-Wimplicit-function-declaration]
2021-11-16T16:36:21,084 5678 | wlr_xdg_surface_for_each_popup(x0, x1, x2);
2021-11-16T16:36:21,085 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-11-16T16:36:21,085 | wlr_xdg_surface_for_each_surface
2021-11-16T16:36:21,140 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_checkfld_struct_wlr_event_keyboard_key’:
2021-11-16T16:36:21,143 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6558:31: warning: initialization of ‘enum wlr_key_state *’ from incompatible pointer type ‘enum wl_keyboard_key_state *’ [-Wincompatible-pointer-types]
2021-11-16T16:36:21,143 6558 | { enum wlr_key_state *tmp = &p->state; (void)tmp; }
2021-11-16T16:36:21,143 | ^
2021-11-16T16:36:21,152 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_checkfld_struct_wlr_surface’:
2021-11-16T16:36:21,153 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6877:37: warning: initialization of ‘struct wlr_surface_state *’ from incompatible pointer type ‘struct <anonymous> *’ [-Wincompatible-pointer-types]
2021-11-16T16:36:21,153 6877 | { struct wlr_surface_state *tmp = &p->previous; (void)tmp; }
2021-11-16T16:36:21,154 | ^
2021-11-16T16:36:21,157 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6881:29: error: ‘struct wlr_surface’ has no member named ‘subsurfaces’
2021-11-16T16:36:21,157 6881 | { struct wl_list *tmp = &p->subsurfaces; (void)tmp; }
2021-11-16T16:36:21,158 | ^~
2021-11-16T16:36:21,160 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6882:29: error: ‘struct wlr_surface’ has no member named ‘subsurface_pending_list’
2021-11-16T16:36:21,160 6882 | { struct wl_list *tmp = &p->subsurface_pending_list; (void)tmp; }
2021-11-16T16:36:21,160 | ^~
2021-11-16T16:36:21,161 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_checkfld_struct_wlr_surface_state’:
2021-11-16T16:36:21,163 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6905:35: error: ‘struct wlr_surface_state’ has no member named ‘buffer_resource’
2021-11-16T16:36:21,164 6905 | { struct wl_resource * *tmp = &p->buffer_resource; (void)tmp; }
2021-11-16T16:36:21,164 | ^~
2021-11-16T16:36:21,167 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6919:33: error: ‘struct wlr_surface_state’ has no member named ‘buffer_destroy’
2021-11-16T16:36:21,167 6919 | { struct wl_listener *tmp = &p->buffer_destroy; (void)tmp; }
2021-11-16T16:36:21,168 | ^~
2021-11-16T16:36:21,168 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_checkfld_struct_wlr_xdg_surface’:
2021-11-16T16:36:21,173 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6954:14: error: ‘struct wlr_xdg_surface’ has no member named ‘configure_serial’; did you mean ‘configure_idle’?
2021-11-16T16:36:21,174 6954 | (void)((p->configure_serial) | 0); /* check that 'struct wlr_xdg_surface.configure_serial' is an integer */
2021-11-16T16:36:21,174 | ^~~~~~~~~~~~~~~~
2021-11-16T16:36:21,174 | configure_idle
2021-11-16T16:36:21,176 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6956:12: error: ‘struct wlr_xdg_surface’ has no member named ‘configure_next_serial’
2021-11-16T16:36:21,177 6956 | (void)((p->configure_next_serial) | 0); /* check that 'struct wlr_xdg_surface.configure_next_serial' is an integer */
2021-11-16T16:36:21,177 | ^~
2021-11-16T16:36:21,180 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6958:12: error: ‘struct wlr_xdg_surface’ has no member named ‘has_next_geometry’
2021-11-16T16:36:21,180 6958 | (void)((p->has_next_geometry) | 0); /* check that 'struct wlr_xdg_surface.has_next_geometry' is an integer */
2021-11-16T16:36:21,180 | ^~
2021-11-16T16:36:21,183 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6959:29: error: ‘struct wlr_xdg_surface’ has no member named ‘next_geometry’
2021-11-16T16:36:21,183 6959 | { struct wlr_box *tmp = &p->next_geometry; (void)tmp; }
2021-11-16T16:36:21,183 | ^~
2021-11-16T16:36:21,186 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6960:29: error: ‘struct wlr_xdg_surface’ has no member named ‘geometry’
2021-11-16T16:36:21,186 6960 | { struct wlr_box *tmp = &p->geometry; (void)tmp; }
2021-11-16T16:36:21,187 | ^~
2021-11-16T16:36:21,187 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_checkfld_struct_wlr_xdg_toplevel’:
2021-11-16T16:36:21,190 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6978:44: error: ‘struct wlr_xdg_toplevel’ has no member named ‘client_pending’
2021-11-16T16:36:21,190 6978 | { struct wlr_xdg_toplevel_state *tmp = &p->client_pending; (void)tmp; }
2021-11-16T16:36:21,190 | ^~
2021-11-16T16:36:21,193 build/temp.linux-x86_64-3.9/wlroots._ffi.c:6979:44: error: ‘struct wlr_xdg_toplevel’ has no member named ‘server_pending’
2021-11-16T16:36:21,193 6979 | { struct wlr_xdg_toplevel_state *tmp = &p->server_pending; (void)tmp; }
2021-11-16T16:36:21,194 | ^~
2021-11-16T16:36:21,195 build/temp.linux-x86_64-3.9/wlroots._ffi.c: In function ‘_cffi_checkfld_struct_wlr_xdg_toplevel_state’:
2021-11-16T16:36:21,198 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7050:34: error: ‘struct wlr_xdg_toplevel_state’ has no member named ‘fullscreen_output’
2021-11-16T16:36:21,198 7050 | { struct wlr_output * *tmp = &p->fullscreen_output; (void)tmp; }
2021-11-16T16:36:21,198 | ^~
2021-11-16T16:36:21,201 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7051:33: error: ‘struct wlr_xdg_toplevel_state’ has no member named ‘fullscreen_output_destroy’
2021-11-16T16:36:21,201 7051 | { struct wl_listener *tmp = &p->fullscreen_output_destroy; (void)tmp; }
2021-11-16T16:36:21,202 | ^~
2021-11-16T16:36:21,235 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:21,236 build/temp.linux-x86_64-3.9/wlroots._ffi.c: At top level:
2021-11-16T16:36:21,239 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7828:20: error: ‘struct wlr_surface’ has no member named ‘subsurfaces’
2021-11-16T16:36:21,239 7828 | { "subsurfaces", offsetof(struct wlr_surface, subsurfaces),
2021-11-16T16:36:21,239 | ^~~~~~~~
2021-11-16T16:36:21,243 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7829:52: error: ‘struct wlr_surface’ has no member named ‘subsurfaces’
2021-11-16T16:36:21,243 7829 | sizeof(((struct wlr_surface *)0)->subsurfaces),
2021-11-16T16:36:21,243 | ^~
2021-11-16T16:36:21,246 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:21,247 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7831:32: error: ‘struct wlr_surface’ has no member named ‘subsurface_pending_list’
2021-11-16T16:36:21,247 7831 | { "subsurface_pending_list", offsetof(struct wlr_surface, subsurface_pending_list),
2021-11-16T16:36:21,247 | ^~~~~~~~
2021-11-16T16:36:21,250 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7832:64: error: ‘struct wlr_surface’ has no member named ‘subsurface_pending_list’
2021-11-16T16:36:21,250 7832 | sizeof(((struct wlr_surface *)0)->subsurface_pending_list),
2021-11-16T16:36:21,251 | ^~
2021-11-16T16:36:21,254 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:21,255 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7852:24: error: ‘struct wlr_surface_state’ has no member named ‘buffer_resource’
2021-11-16T16:36:21,255 7852 | { "buffer_resource", offsetof(struct wlr_surface_state, buffer_resource),
2021-11-16T16:36:21,255 | ^~~~~~~~
2021-11-16T16:36:21,258 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7853:62: error: ‘struct wlr_surface_state’ has no member named ‘buffer_resource’
2021-11-16T16:36:21,258 7853 | sizeof(((struct wlr_surface_state *)0)->buffer_resource),
2021-11-16T16:36:21,259 | ^~
2021-11-16T16:36:21,263 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:21,263 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7894:23: error: ‘struct wlr_surface_state’ has no member named ‘buffer_destroy’
2021-11-16T16:36:21,264 7894 | { "buffer_destroy", offsetof(struct wlr_surface_state, buffer_destroy),
2021-11-16T16:36:21,264 | ^~~~~~~~
2021-11-16T16:36:21,267 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7895:61: error: ‘struct wlr_surface_state’ has no member named ‘buffer_destroy’
2021-11-16T16:36:21,267 7895 | sizeof(((struct wlr_surface_state *)0)->buffer_destroy),
2021-11-16T16:36:21,267 | ^~
2021-11-16T16:36:21,272 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:21,273 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7951:58: error: ‘struct wlr_xdg_surface’ has no member named ‘configure_serial’; did you mean ‘configure_idle’?
2021-11-16T16:36:21,273 7951 | { "configure_serial", offsetof(struct wlr_xdg_surface, configure_serial),
2021-11-16T16:36:21,273 | ^~~~~~~~~~~~~~~~
2021-11-16T16:36:21,278 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7952:63: error: ‘struct wlr_xdg_surface’ has no member named ‘configure_serial’; did you mean ‘configure_idle’?
2021-11-16T16:36:21,279 7952 | sizeof(((struct wlr_xdg_surface *)0)->configure_serial),
2021-11-16T16:36:21,279 | ^~~~~~~~~~~~~~~~
2021-11-16T16:36:21,279 | configure_idle
2021-11-16T16:36:21,282 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:21,283 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7957:30: error: ‘struct wlr_xdg_surface’ has no member named ‘configure_next_serial’
2021-11-16T16:36:21,283 7957 | { "configure_next_serial", offsetof(struct wlr_xdg_surface, configure_next_serial),
2021-11-16T16:36:21,283 | ^~~~~~~~
2021-11-16T16:36:21,286 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7958:66: error: ‘struct wlr_xdg_surface’ has no member named ‘configure_next_serial’
2021-11-16T16:36:21,286 7958 | sizeof(((struct wlr_xdg_surface *)0)->configure_next_serial),
2021-11-16T16:36:21,287 | ^~
2021-11-16T16:36:21,290 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:21,290 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7963:26: error: ‘struct wlr_xdg_surface’ has no member named ‘has_next_geometry’
2021-11-16T16:36:21,290 7963 | { "has_next_geometry", offsetof(struct wlr_xdg_surface, has_next_geometry),
2021-11-16T16:36:21,291 | ^~~~~~~~
2021-11-16T16:36:21,294 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7964:62: error: ‘struct wlr_xdg_surface’ has no member named ‘has_next_geometry’
2021-11-16T16:36:21,294 7964 | sizeof(((struct wlr_xdg_surface *)0)->has_next_geometry),
2021-11-16T16:36:21,294 | ^~
2021-11-16T16:36:21,297 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:21,298 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7966:22: error: ‘struct wlr_xdg_surface’ has no member named ‘next_geometry’
2021-11-16T16:36:21,298 7966 | { "next_geometry", offsetof(struct wlr_xdg_surface, next_geometry),
2021-11-16T16:36:21,298 | ^~~~~~~~
2021-11-16T16:36:21,301 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7967:58: error: ‘struct wlr_xdg_surface’ has no member named ‘next_geometry’
2021-11-16T16:36:21,302 7967 | sizeof(((struct wlr_xdg_surface *)0)->next_geometry),
2021-11-16T16:36:21,302 | ^~
2021-11-16T16:36:21,305 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:21,305 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7969:17: error: ‘struct wlr_xdg_surface’ has no member named ‘geometry’
2021-11-16T16:36:21,306 7969 | { "geometry", offsetof(struct wlr_xdg_surface, geometry),
2021-11-16T16:36:21,306 | ^~~~~~~~
2021-11-16T16:36:21,309 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7970:53: error: ‘struct wlr_xdg_surface’ has no member named ‘geometry’
2021-11-16T16:36:21,309 7970 | sizeof(((struct wlr_xdg_surface *)0)->geometry),
2021-11-16T16:36:21,309 | ^~
2021-11-16T16:36:21,313 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:21,314 build/temp.linux-x86_64-3.9/wlroots._ffi.c:7999:23: error: ‘struct wlr_xdg_toplevel’ has no member named ‘client_pending’
2021-11-16T16:36:21,314 7999 | { "client_pending", offsetof(struct wlr_xdg_toplevel, client_pending),
2021-11-16T16:36:21,314 | ^~~~~~~~
2021-11-16T16:36:21,317 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8000:60: error: ‘struct wlr_xdg_toplevel’ has no member named ‘client_pending’
2021-11-16T16:36:21,318 8000 | sizeof(((struct wlr_xdg_toplevel *)0)->client_pending),
2021-11-16T16:36:21,318 | ^~
2021-11-16T16:36:21,321 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:21,321 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8002:23: error: ‘struct wlr_xdg_toplevel’ has no member named ‘server_pending’
2021-11-16T16:36:21,321 8002 | { "server_pending", offsetof(struct wlr_xdg_toplevel, server_pending),
2021-11-16T16:36:21,322 | ^~~~~~~~
2021-11-16T16:36:21,325 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8003:60: error: ‘struct wlr_xdg_toplevel’ has no member named ‘server_pending’
2021-11-16T16:36:21,325 8003 | sizeof(((struct wlr_xdg_toplevel *)0)->server_pending),
2021-11-16T16:36:21,325 | ^~
2021-11-16T16:36:21,331 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:21,332 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8095:26: error: ‘struct wlr_xdg_toplevel_state’ has no member named ‘fullscreen_output’
2021-11-16T16:36:21,332 8095 | { "fullscreen_output", offsetof(struct wlr_xdg_toplevel_state, fullscreen_output),
2021-11-16T16:36:21,332 | ^~~~~~~~
2021-11-16T16:36:21,335 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8096:69: error: ‘struct wlr_xdg_toplevel_state’ has no member named ‘fullscreen_output’
2021-11-16T16:36:21,335 8096 | sizeof(((struct wlr_xdg_toplevel_state *)0)->fullscreen_output),
2021-11-16T16:36:21,336 | ^~
2021-11-16T16:36:21,339 In file included from build/temp.linux-x86_64-3.9/wlroots._ffi.c:61:
2021-11-16T16:36:21,339 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8098:34: error: ‘struct wlr_xdg_toplevel_state’ has no member named ‘fullscreen_output_destroy’
2021-11-16T16:36:21,340 8098 | { "fullscreen_output_destroy", offsetof(struct wlr_xdg_toplevel_state, fullscreen_output_destroy),
2021-11-16T16:36:21,340 | ^~~~~~~~
2021-11-16T16:36:21,343 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8099:77: error: ‘struct wlr_xdg_toplevel_state’ has no member named ‘fullscreen_output_destroy’
2021-11-16T16:36:21,343 8099 | sizeof(((struct wlr_xdg_toplevel_state *)0)->fullscreen_output_destroy),
2021-11-16T16:36:21,343 | ^~
2021-11-16T16:36:21,361 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8564:49: error: invalid application of ‘sizeof’ to incomplete type ‘enum wlr_key_state’
2021-11-16T16:36:21,361 8564 | { "wlr_key_state", 412, _cffi_prim_int(sizeof(enum wlr_key_state), ((enum wlr_key_state)-1) <= 0),
2021-11-16T16:36:21,361 | ^~~~
2021-11-16T16:36:21,362 build/temp.linux-x86_64-3.9/wlroots._ffi.c:541:7: note: in definition of macro ‘_cffi_prim_int’
2021-11-16T16:36:21,362 541 | ((size) == 1 ? ((sign) ? _CFFI_PRIM_INT8 : _CFFI_PRIM_UINT8) : \
2021-11-16T16:36:21,362 | ^~~~
2021-11-16T16:36:21,365 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8564:77: error: conversion to incomplete type
2021-11-16T16:36:21,366 8564 | { "wlr_key_state", 412, _cffi_prim_int(sizeof(enum wlr_key_state), ((enum wlr_key_state)-1) <= 0),
2021-11-16T16:36:21,366 | ^~~~~~~~~~~~~
2021-11-16T16:36:21,366 build/temp.linux-x86_64-3.9/wlroots._ffi.c:541:22: note: in definition of macro ‘_cffi_prim_int’
2021-11-16T16:36:21,366 541 | ((size) == 1 ? ((sign) ? _CFFI_PRIM_INT8 : _CFFI_PRIM_UINT8) : \
2021-11-16T16:36:21,366 | ^~~~
2021-11-16T16:36:21,370 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8564:49: error: invalid application of ‘sizeof’ to incomplete type ‘enum wlr_key_state’
2021-11-16T16:36:21,371 8564 | { "wlr_key_state", 412, _cffi_prim_int(sizeof(enum wlr_key_state), ((enum wlr_key_state)-1) <= 0),
2021-11-16T16:36:21,371 | ^~~~
2021-11-16T16:36:21,371 build/temp.linux-x86_64-3.9/wlroots._ffi.c:542:7: note: in definition of macro ‘_cffi_prim_int’
2021-11-16T16:36:21,371 542 | (size) == 2 ? ((sign) ? _CFFI_PRIM_INT16 : _CFFI_PRIM_UINT16) : \
2021-11-16T16:36:21,371 | ^~~~
2021-11-16T16:36:21,375 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8564:77: error: conversion to incomplete type
2021-11-16T16:36:21,375 8564 | { "wlr_key_state", 412, _cffi_prim_int(sizeof(enum wlr_key_state), ((enum wlr_key_state)-1) <= 0),
2021-11-16T16:36:21,375 | ^~~~~~~~~~~~~
2021-11-16T16:36:21,376 build/temp.linux-x86_64-3.9/wlroots._ffi.c:542:22: note: in definition of macro ‘_cffi_prim_int’
2021-11-16T16:36:21,376 542 | (size) == 2 ? ((sign) ? _CFFI_PRIM_INT16 : _CFFI_PRIM_UINT16) : \
2021-11-16T16:36:21,376 | ^~~~
2021-11-16T16:36:21,379 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8564:49: error: invalid application of ‘sizeof’ to incomplete type ‘enum wlr_key_state’
2021-11-16T16:36:21,380 8564 | { "wlr_key_state", 412, _cffi_prim_int(sizeof(enum wlr_key_state), ((enum wlr_key_state)-1) <= 0),
2021-11-16T16:36:21,380 | ^~~~
2021-11-16T16:36:21,380 build/temp.linux-x86_64-3.9/wlroots._ffi.c:543:7: note: in definition of macro ‘_cffi_prim_int’
2021-11-16T16:36:21,380 543 | (size) == 4 ? ((sign) ? _CFFI_PRIM_INT32 : _CFFI_PRIM_UINT32) : \
2021-11-16T16:36:21,381 | ^~~~
2021-11-16T16:36:21,384 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8564:77: error: conversion to incomplete type
2021-11-16T16:36:21,384 8564 | { "wlr_key_state", 412, _cffi_prim_int(sizeof(enum wlr_key_state), ((enum wlr_key_state)-1) <= 0),
2021-11-16T16:36:21,385 | ^~~~~~~~~~~~~
2021-11-16T16:36:21,385 build/temp.linux-x86_64-3.9/wlroots._ffi.c:543:22: note: in definition of macro ‘_cffi_prim_int’
2021-11-16T16:36:21,385 543 | (size) == 4 ? ((sign) ? _CFFI_PRIM_INT32 : _CFFI_PRIM_UINT32) : \
2021-11-16T16:36:21,385 | ^~~~
2021-11-16T16:36:21,389 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8564:49: error: invalid application of ‘sizeof’ to incomplete type ‘enum wlr_key_state’
2021-11-16T16:36:21,389 8564 | { "wlr_key_state", 412, _cffi_prim_int(sizeof(enum wlr_key_state), ((enum wlr_key_state)-1) <= 0),
2021-11-16T16:36:21,389 | ^~~~
2021-11-16T16:36:21,389 build/temp.linux-x86_64-3.9/wlroots._ffi.c:544:7: note: in definition of macro ‘_cffi_prim_int’
2021-11-16T16:36:21,390 544 | (size) == 8 ? ((sign) ? _CFFI_PRIM_INT64 : _CFFI_PRIM_UINT64) : \
2021-11-16T16:36:21,390 | ^~~~
2021-11-16T16:36:21,393 build/temp.linux-x86_64-3.9/wlroots._ffi.c:8564:77: error: conversion to incomplete type
2021-11-16T16:36:21,394 8564 | { "wlr_key_state", 412, _cffi_prim_int(sizeof(enum wlr_key_state), ((enum wlr_key_state)-1) <= 0),
2021-11-16T16:36:21,394 | ^~~~~~~~~~~~~
2021-11-16T16:36:21,394 build/temp.linux-x86_64-3.9/wlroots._ffi.c:544:22: note: in definition of macro ‘_cffi_prim_int’
2021-11-16T16:36:21,394 544 | (size) == 8 ? ((sign) ? _CFFI_PRIM_INT64 : _CFFI_PRIM_UINT64) : \
2021-11-16T16:36:21,395 | ^~~~
2021-11-16T16:36:21,477 error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
2021-11-16T16:36:21,591 ERROR: Command errored out with exit status 1: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-b3cqmuw9/pywlroots_7cf9620257f74a229069820f234b8226/setup.py'"'"'; __file__='"'"'/tmp/pip-install-b3cqmuw9/pywlroots_7cf9620257f74a229069820f234b8226/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-_9in_rf5/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /home/kiko/.local/include/python3.9/pywlroots Check the logs for full command output.
2021-11-16T16:36:21,592 Exception information:
2021-11-16T16:36:21,592 Traceback (most recent call last):
2021-11-16T16:36:21,592 File "/usr/lib/python3/dist-packages/pip/_internal/req/req_install.py", line 848, in install
2021-11-16T16:36:21,592 success = install_legacy(
2021-11-16T16:36:21,592 File "/usr/lib/python3/dist-packages/pip/_internal/operations/install/legacy.py", line 86, in install
2021-11-16T16:36:21,592 raise LegacyInstallFailure
2021-11-16T16:36:21,592 pip._internal.operations.install.legacy.LegacyInstallFailure
2021-11-16T16:36:21,592
2021-11-16T16:36:21,592 During handling of the above exception, another exception occurred:
2021-11-16T16:36:21,592
2021-11-16T16:36:21,592 Traceback (most recent call last):
2021-11-16T16:36:21,592 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 223, in _main
2021-11-16T16:36:21,592 status = self.run(options, args)
2021-11-16T16:36:21,592 File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", line 180, in wrapper
2021-11-16T16:36:21,592 return func(self, options, args)
2021-11-16T16:36:21,592 File "/usr/lib/python3/dist-packages/pip/_internal/commands/install.py", line 421, in run
2021-11-16T16:36:21,592 installed = install_given_reqs(
2021-11-16T16:36:21,592 File "/usr/lib/python3/dist-packages/pip/_internal/req/__init__.py", line 82, in install_given_reqs
2021-11-16T16:36:21,592 requirement.install(
2021-11-16T16:36:21,592 File "/usr/lib/python3/dist-packages/pip/_internal/req/req_install.py", line 866, in install
2021-11-16T16:36:21,592 six.reraise(*exc.parent)
2021-11-16T16:36:21,592 File "/usr/share/python-wheels/six-1.16.0-py2.py3-none-any.whl/six.py", line 719, in reraise
2021-11-16T16:36:21,592 raise value
2021-11-16T16:36:21,592 File "/usr/lib/python3/dist-packages/pip/_internal/operations/install/legacy.py", line 74, in install
2021-11-16T16:36:21,592 runner(
2021-11-16T16:36:21,592 File "/usr/lib/python3/dist-packages/pip/_internal/utils/subprocess.py", line 292, in runner
2021-11-16T16:36:21,592 call_subprocess(
2021-11-16T16:36:21,592 File "/usr/lib/python3/dist-packages/pip/_internal/utils/subprocess.py", line 261, in call_subprocess
2021-11-16T16:36:21,592 raise InstallationSubprocessError(proc.returncode, command_desc)
2021-11-16T16:36:21,592 pip._internal.exceptions.InstallationSubprocessError: Command errored out with exit status 1: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-b3cqmuw9/pywlroots_7cf9620257f74a229069820f234b8226/setup.py'"'"'; __file__='"'"'/tmp/pip-install-b3cqmuw9/pywlroots_7cf9620257f74a229069820f234b8226/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-_9in_rf5/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /home/kiko/.local/include/python3.9/pywlroots Check the logs for full command output.
2021-11-16T16:36:21,677 Removed build tracker: '/tmp/pip-req-tracker-1zz9nw25'```
I don't know what to do or why it errored out. Any help would be appreciated.
Sorry for the long post btw. I thought it would be better to include the whole logs.
Edit: I got this error after compiling wlroots because i got an error with the `libwlroots-dev` and `libwlroots7` packages on ubuntu and i thought the error was because the packages are on version `0.12.0` and pywlroots is on version `0.14.10`.
This is flagged from the discussion in qtile/qtile#2933.
Basically, cffi and the other cffi-based dependencies need to be installed during the setup phase. This can be done with setup_requires
(rather than the current solution which is using install_requires
), but this then causes failures in the github actions job that pushes to pypi because even sdist
will require having these packages installed (and by extension all of the dev libraries to build and install everything). Using build_system
doesn't seem to generate a package that correctly installs the deps.
Upstream changes for the next release are recorded here: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3527
This thread is for tracking our corresponding changes. I'll start making PRs against a wlroots-next
branch with changes listed there, and when I do so I'll list them here too. Thus anything mentioned on their thread and not here is a TODO (and PRs welcome!).
Implemented:
Lots of the Ptr classes have properties that get and sometimes set attributes that belong to their _ptr
attribute. Others do the same thing but wrapped with another Ptr
class, where the getter returns e.g. Output(self._ptr.output)
, and would set with self._ptr.<attr> = value._ptr
.
We could simplify the layout of the code and reduce the need for us to manually write up lots of similar properties (which is error-prone).
Here is an example implementation:
diff --git a/wlroots/__init__.py b/wlroots/__init__.py
index 0fc0d1e..649d77b 100644
--- a/wlroots/__init__.py
+++ b/wlroots/__init__.py
@@ -28,3 +28,43 @@ class Ptr:
def __hash__(self) -> int:
"""Use the hash from `object`, which is unique per object"""
return super().__hash__()
+
+ @staticmethod
+ def _ptr_property(attr, immutable=False, wrapper=None, doc=None):
+ """
+ Create a property that proxies an attribute on the pointer.
+
+ :param attr:
+ The name of the attribute on the pointer.
+ :param immutable:
+ If True, no setter is added.
+ :param wrapper:
+ Another Ptr subclass which wraps the attribute on the pointer. The getter
+ will wrap the returned pointer with this, and the setter will set the
+ pointer's attribute with the pointer from the wrapper.
+ :param doc:
+ A docstring to add to the property. If not provided, the attribute name is
+ used.
+ """
+ if wrapper:
+ # getter and setter proxied by the wrapper
+ def getter(self):
+ return wrapper(getattr(self._ptr, attr))
+
+ if not immutable:
+ def setter(self):
+ setattr(self._ptr, attr, value._ptr)
+
+ else:
+ # getter and setter accessing attribute directly
+ def getter(self):
+ return getattr(self._ptr, attr)
+
+ if not immutable:
+ def setter(self, value):
+ setattr(self._ptr, attr, value)
+
+ if immutable:
+ setter = None
+
+ return property(fget=getter, fset=setter, doc=doc or attr)
A simple example use-case:
class OutputMode(Ptr):
def __init__(self, ptr) -> None:
self._ptr = ptr
width = Ptr._ptr_property("width")
height = Ptr._ptr_property("height")
refresh = Ptr._ptr_property("refresh")
preferred = Ptr._ptr_property("preferred")
A more complex example use-case:
class KeyboardKeyEvent(Ptr):
def __init__(self, ptr) -> None:
"""Event that a key has been pressed or release
This event is emitted before the xkb state of the keyboard has been
updated (including modifiers).
"""
self._ptr = ffi.cast("struct wlr_event_keyboard_key *", ptr)
time_msec = Ptr._ptr_property("time_msec", immutable=True, doc="Time of the key event")
keycode = Ptr._ptr_property("keycode", immutable=True, doc="Keycode triggering the event")
update_state = Ptr._ptr_property(
"update_state", immutable=True, doc="If backend doesn't update modifiers on its own"
)
state = Ptr._ptr_property(
"state", immutable=True, wrapper=WlKeyboard.key_state,
doc="The state of the keycode triggering the event"
)
I post these two examples because this idea started off from the simple example, which I thought looked nice, but it was pretty limited so I then added immutable
, then wrapper
, then doc
when I came across existing properties that needed these. Then when we get to the more complex example the readability takes a hit, so I'm not 100% certain of it's even desired.
I'm throwing this out there as an idea in case it's worth discussing whether we should implement something like this, and how. Also working on this it became more clear how formulaic a lot of the code is, which is making me a bit more interested in an auto-generated approach, which'd be awesome.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.