Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pip install error, evdev/ecodes.c:706:29: error: 'ABS_RESERVED' undeclared (first use in this function) #166

Open
albertz opened this issue Oct 5, 2021 · 11 comments

Comments

@albertz
Copy link

albertz commented Oct 5, 2021

pip3 install --user evdev with Python 3.8 (via Linuxbrew) on Ubuntu 16.04:

Collecting evdev
  Using cached evdev-1.4.0.tar.gz (26 kB)
Building wheels for collected packages: evdev
  Building wheel for evdev (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /u/zeyer/.linuxbrew/opt/[email protected]/bin/python3.8 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/var/tmp/pip-install-v6tw2uve/evdev/setup.py'"'"'; __file__='"'"'/var/tmp/pip-install-v6tw2uve/evdev/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 /var/tmp/pip-wheel-9tu_20b1
       cwd: /var/tmp/pip-install-v6tw2uve/evdev/
  Complete output (46 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.8
  creating build/lib.linux-x86_64-3.8/evdev
  copying evdev/events.py -> build/lib.linux-x86_64-3.8/evdev
  copying evdev/__init__.py -> build/lib.linux-x86_64-3.8/evdev
  copying evdev/util.py -> build/lib.linux-x86_64-3.8/evdev
  copying evdev/uinput.py -> build/lib.linux-x86_64-3.8/evdev
  copying evdev/eventio_async.py -> build/lib.linux-x86_64-3.8/evdev
  copying evdev/device.py -> build/lib.linux-x86_64-3.8/evdev
  copying evdev/eventio.py -> build/lib.linux-x86_64-3.8/evdev
  copying evdev/ecodes.py -> build/lib.linux-x86_64-3.8/evdev
  copying evdev/evtest.py -> build/lib.linux-x86_64-3.8/evdev
  copying evdev/genecodes.py -> build/lib.linux-x86_64-3.8/evdev
  copying evdev/ff.py -> build/lib.linux-x86_64-3.8/evdev
  running build_ext
  running build_ecodes
  writing ecodes.c (using /usr/include/linux/input.h /usr/include/linux/input-event-codes.h /usr/include/linux/uinput.h)
  building 'evdev._input' extension
  creating build/temp.linux-x86_64-3.8
  creating build/temp.linux-x86_64-3.8/evdev
  gcc-5 -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -I/u/zeyer/.linuxbrew/opt/[email protected]/include/python3.8 -c evdev/input.c -o build/temp.linux-x86_64-3.8/evdev/input.o -std=c99 -Wno-error=declaration-after-statement
  gcc-5 -pthread -shared -L/u/zeyer/.linuxbrew/lib build/temp.linux-x86_64-3.8/evdev/input.o -L/u/zeyer/.linuxbrew/opt/[email protected]/lib -o build/lib.linux-x86_64-3.8/evdev/_input.cpython-38-x86_64-linux-gnu.so
  building 'evdev._uinput' extension
  gcc-5 -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -I/u/zeyer/.linuxbrew/opt/[email protected]/include/python3.8 -c evdev/uinput.c -o build/temp.linux-x86_64-3.8/evdev/uinput.o -std=c99 -Wno-error=declaration-after-statement
  gcc-5 -pthread -shared -L/u/zeyer/.linuxbrew/lib build/temp.linux-x86_64-3.8/evdev/uinput.o -L/u/zeyer/.linuxbrew/opt/[email protected]/lib -o build/lib.linux-x86_64-3.8/evdev/_uinput.cpython-38-x86_64-linux-gnu.so
  building 'evdev._ecodes' extension
  gcc-5 -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -I/u/zeyer/.linuxbrew/opt/[email protected]/include/python3.8 -c evdev/ecodes.c -o build/temp.linux-x86_64-3.8/evdev/ecodes.o -std=c99 -Wno-error=declaration-after-statement
  In file included from /u/zeyer/.linuxbrew/opt/[email protected]/include/python3.8/Python.h:137:0,
                   from evdev/ecodes.c:2:
  evdev/ecodes.c: In function 'moduleinit':
  evdev/ecodes.c:706:29: error: 'ABS_RESERVED' undeclared (first use in this function)
       PyModule_AddIntMacro(m, ABS_RESERVED);
                               ^
  /u/zeyer/.linuxbrew/opt/[email protected]/include/python3.8/modsupport.h:139:67: note: in definition of macro 'PyModule_AddIntMacro'                                                                                                   
   #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)                                          
                                                                     ^                                           
  evdev/ecodes.c:706:29: note: each undeclared identifier is reported only once for each function it appears in  
       PyModule_AddIntMacro(m, ABS_RESERVED);                                                                    
                               ^                                                                                 
  /u/zeyer/.linuxbrew/opt/[email protected]/include/python3.8/modsupport.h:139:67: note: in definition of macro 'PyModule_AddIntMacro'                                                                                                   
   #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)                                          
                                                                     ^                                           
  error: command 'gcc-5' failed with exit status 1                                                               
  ----------------------------------------                                                                       
  ERROR: Failed building wheel for evdev
  Running setup.py clean for evdev
Failed to build evdev
@albertz
Copy link
Author

albertz commented Oct 7, 2021

After some brew upgrade, this problem is resolved. Unfortunately I'm not exactly sure now what package caused the problem, and what update fixed it. I saw some Linux header related updates during the brew upgrade. Maybe that was it.

Also, I still wonder how this problem could occur in the first place. As far as I understand, build_ecodes parses the Linux headers and automatically generates the C file with the codes. Then when it compiles the file, maybe it uses a different header?

@albertz
Copy link
Author

albertz commented Oct 7, 2021

Ok, strange, now I get the same error again, but for Python 3.9 (after brew upgrade updated also my Python).

@albertz
Copy link
Author

albertz commented Oct 7, 2021

I checked, my /usr/include/linux/input-event-codes.h contains the ABS_RESERVED definition.
So, I assume the C compilation then uses some different Linux headers.

@albertz
Copy link
Author

albertz commented Oct 7, 2021

So, I checked, I added -v to the GCC command to print the search dirs, and this is my output:

GNU C99 (Ubuntu 5.4.0-6ubuntu1~16.04.12) version 5.4.0 20160609 (x86_64-linux-gnu)
        compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/5/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /u/zeyer/.linuxbrew/include
 /u/zeyer/.linuxbrew/opt/[email protected]/include
 /u/zeyer/.linuxbrew/opt/sqlite/include
 /u/zeyer/.linuxbrew/opt/[email protected]/include/python3.9
 /usr/lib/gcc/x86_64-linux-gnu/5/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.

And I have the file /u/zeyer/.linuxbrew/include/linux/input-event-codes.h.
So GCC will pick this file over /usr/include/linux/input-event-codes.h.
And the file /u/zeyer/.linuxbrew/include/linux/input-event-codes.h does not contain the ABS_RESERVED definition.

@albertz
Copy link
Author

albertz commented Oct 7, 2021

For reference:

lrwxrwxrwx 1 zeyer assi 48 Oct  5 13:49 /u/zeyer/.linuxbrew/include/linux -> ../Cellar/[email protected]/4.4.80/include/linux/

@albertz
Copy link
Author

albertz commented Oct 7, 2021

But anyway, I think the main problem is that build_ecodes uses a different Linux header than GCC does.

So I think there are two potential options:

  • Make sure GCC uses the same header as build_ecodes. This could be ensured by just adding -I /usr/include or so to GCC.
  • Or make sure build_ecodes uses the same headers as GCC. At some point, -I/u/zeyer/.linuxbrew/include is added to GCC anyway, so build_ecodes could check for the GCC args to find the right header.

@albertz
Copy link
Author

albertz commented Oct 7, 2021

Hm ok for some reason this can not be seen in the initial log. Here the new snippet:

  gcc-5 -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -I/u/zeyer/.linuxbrew/include -I/u/zeyer/.linuxbrew/opt/[email protected]/include -I/u/zeyer/.linuxbrew/opt/sqlite/include -I/u/zeyer/.linuxbrew/opt/[email protected]/include/python3.9 -c evdev/ecodes.c -o build/temp.linux-x86_64-3.9/evdev/ecodes.o -std=c99 -Wno-error=declaration-after-statement                                                                                          
  In file included from /u/zeyer/.linuxbrew/opt/[email protected]/include/python3.9/Python.h:150:0,                     
                   from evdev/ecodes.c:2:                                                                        
  evdev/ecodes.c: In function ‘moduleinit’:                                                                      
  evdev/ecodes.c:706:29: error: ‘ABS_RESERVED’ undeclared (first use in this function)                           
       PyModule_AddIntMacro(m, ABS_RESERVED);                                                                    
                               ^                                                                                 
  /u/zeyer/.linuxbrew/opt/[email protected]/include/python3.9/modsupport.h:146:67: note: in definition of macro ‘PyModule_AddIntMacro’                                                                                                   
   #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)                                          
                                                                     ^                                           
  evdev/ecodes.c:706:29: note: each undeclared identifier is reported only once for each function it appears in  
       PyModule_AddIntMacro(m, ABS_RESERVED);                                                                    
                               ^                                                                                 
  /u/zeyer/.linuxbrew/opt/[email protected]/include/python3.9/modsupport.h:146:67: note: in definition of macro ‘PyModule_AddIntMacro’                                                                                                   
   #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)                                          
                                                                     ^                                           
  error: command '/usr/bin/gcc-5' failed with exit code 1                                                        

@albertz
Copy link
Author

albertz commented Oct 7, 2021

Note, as a temporary workaround, this could be done:

brew unlink linux-headers

@jmigual
Copy link

jmigual commented Jan 3, 2022

Note, as a temporary workaround, this could be done:

brew unlink linux-headers

I can confirm that this indeed works. My linux kernel is 5.10.60.1 (WSL2) and my homebrew linux-headers version is [email protected]. There doesn't seem to be a version of linux-headers for 5.x on homebrew right now.

@IanTrudel
Copy link

I'm also having a similar issue with CentOS 7, kernel 5.14.8, Python 3.9 (and 3.9.9). Pip fails, building from source also fails, even tried adding the include files from the kernel source (though they are indeed also in /usr/include/linux).

pip3.9 install --user evdev
/home/ian/.local/lib/python3.9/site-packages/secretstorage/dhcrypto.py:16: CryptographyDeprecationWarning: int_from_bytes is deprecated, use int.from_bytes instead
  from cryptography.utils import int_from_bytes
/home/ian/.local/lib/python3.9/site-packages/secretstorage/util.py:25: CryptographyDeprecationWarning: int_from_bytes is deprecated, use int.from_bytes instead
  from cryptography.utils import int_from_bytes
Collecting evdev
  Using cached evdev-1.4.0.tar.gz (26 kB)
  Preparing metadata (setup.py) ... done
Using legacy 'setup.py install' for evdev, since package 'wheel' is not installed.
Installing collected packages: evdev
  Running setup.py install for evdev ... error
  error: subprocess-exited-with-error

  × Running setup.py install for evdev did not run successfully.
  │ exit code: 1
  ╰─> [382 lines of output]
      running install
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-3.9
      creating build/lib.linux-x86_64-3.9/evdev
      copying evdev/__init__.py -> build/lib.linux-x86_64-3.9/evdev
      copying evdev/device.py -> build/lib.linux-x86_64-3.9/evdev
      copying evdev/ecodes.py -> build/lib.linux-x86_64-3.9/evdev
      copying evdev/eventio.py -> build/lib.linux-x86_64-3.9/evdev
      copying evdev/eventio_async.py -> build/lib.linux-x86_64-3.9/evdev
      copying evdev/events.py -> build/lib.linux-x86_64-3.9/evdev
      copying evdev/evtest.py -> build/lib.linux-x86_64-3.9/evdev
      copying evdev/ff.py -> build/lib.linux-x86_64-3.9/evdev
      copying evdev/genecodes.py -> build/lib.linux-x86_64-3.9/evdev
      copying evdev/uinput.py -> build/lib.linux-x86_64-3.9/evdev
      copying evdev/util.py -> build/lib.linux-x86_64-3.9/evdev
      running build_ext
      running build_ecodes
      writing ecodes.c (using /usr/include/linux/input.h /usr/include/linux/input-event-codes.h /usr/include/linux/uinput.h)
      building 'evdev._input' extension
      creating build/temp.linux-x86_64-3.9
      creating build/temp.linux-x86_64-3.9/evdev
      gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/usr/local/include/python3.9 -c evdev/input.c -o build/temp.linux-x86_64-3.9/evdev/input.o -std=c99 -Wno-error=declaration-after-statement
      gcc -pthread -shared build/temp.linux-x86_64-3.9/evdev/input.o -o build/lib.linux-x86_64-3.9/evdev/_input.cpython-39-x86_64-linux-gnu.so
      building 'evdev._uinput' extension
      gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/usr/local/include/python3.9 -c evdev/uinput.c -o build/temp.linux-x86_64-3.9/evdev/uinput.o -std=c99 -Wno-error=declaration-after-statement
      gcc -pthread -shared build/temp.linux-x86_64-3.9/evdev/uinput.o -o build/lib.linux-x86_64-3.9/evdev/_uinput.cpython-39-x86_64-linux-gnu.so
      building 'evdev._ecodes' extension
      gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/usr/local/include/python3.9 -c evdev/ecodes.c -o build/temp.linux-x86_64-3.9/evdev/ecodes.o -std=c99 -Wno-error=declaration-after-statement
      Dans le fichier inclus depuis /usr/local/include/python3.9/Python.h:137,
                       depuis evdev/ecodes.c:2:
      evdev/ecodes.c: Dans la fonction « moduleinit »:
      evdev/ecodes.c:772:29: erreur: « SYN_MAX » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « SCNiMAX » ?
        772 |     PyModule_AddIntMacro(m, SYN_MAX);
            |                             ^~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:772:29: note: chaque identificateur non déclaré est rapporté une seule fois pour chaque fonction dans laquelle il apparaît
        772 |     PyModule_AddIntMacro(m, SYN_MAX);
            |                             ^~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:773:29: erreur: « SYN_CNT » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « SND_CNT » ?
        773 |     PyModule_AddIntMacro(m, SYN_CNT);
            |                             ^~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:928:29: erreur: « KEY_ROTATE_DISPLAY » non déclaré (première utilisation dans cette fonction)
        928 |     PyModule_AddIntMacro(m, KEY_ROTATE_DISPLAY);
            |                             ^~~~~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1015:29: erreur: « KEY_BRIGHTNESS_AUTO » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_BRIGHTNESS_ZERO » ?
       1015 |     PyModule_AddIntMacro(m, KEY_BRIGHTNESS_AUTO);
            |                             ^~~~~~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1018:29: erreur: « KEY_WWAN » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_WLAN » ?
       1018 |     PyModule_AddIntMacro(m, KEY_WWAN);
            |                             ^~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1057:29: erreur: « BTN_SOUTH » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « BTN_TOUCH » ?
       1057 |     PyModule_AddIntMacro(m, BTN_SOUTH);
            |                             ^~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1059:29: erreur: « BTN_EAST » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « BTN_BASE » ?
       1059 |     PyModule_AddIntMacro(m, BTN_EAST);
            |                             ^~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1062:29: erreur: « BTN_NORTH » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « BTN_TOUCH » ?
       1062 |     PyModule_AddIntMacro(m, BTN_NORTH);
            |                             ^~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1064:29: erreur: « BTN_WEST » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « BTN_LEFT » ?
       1064 |     PyModule_AddIntMacro(m, BTN_WEST);
            |                             ^~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1116:29: erreur: « KEY_FULL_SCREEN » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_SCREEN » ?
       1116 |     PyModule_AddIntMacro(m, KEY_FULL_SCREEN);
            |                             ^~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1120:29: erreur: « KEY_ASPECT_RATIO » non déclaré (première utilisation dans cette fonction)
       1120 |     PyModule_AddIntMacro(m, KEY_ASPECT_RATIO);
            |                             ^~~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1178:29: erreur: « KEY_BRIGHTNESS_TOGGLE » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_BRIGHTNESS_CYCLE » ?
       1178 |     PyModule_AddIntMacro(m, KEY_BRIGHTNESS_TOGGLE);
            |                             ^~~~~~~~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1237:29: erreur: « KEY_NUMERIC_A » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_NUMERIC_0 » ?
       1237 |     PyModule_AddIntMacro(m, KEY_NUMERIC_A);
            |                             ^~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1238:29: erreur: « KEY_NUMERIC_B » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_NUMERIC_0 » ?
       1238 |     PyModule_AddIntMacro(m, KEY_NUMERIC_B);
            |                             ^~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1239:29: erreur: « KEY_NUMERIC_C » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_NUMERIC_0 » ?
       1239 |     PyModule_AddIntMacro(m, KEY_NUMERIC_C);
            |                             ^~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1240:29: erreur: « KEY_NUMERIC_D » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_NUMERIC_0 » ?
       1240 |     PyModule_AddIntMacro(m, KEY_NUMERIC_D);
            |                             ^~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1256:29: erreur: « BTN_DPAD_UP » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « BTN_GEAR_UP » ?
       1256 |     PyModule_AddIntMacro(m, BTN_DPAD_UP);
            |                             ^~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1257:29: erreur: « BTN_DPAD_DOWN » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « BTN_GEAR_DOWN » ?
       1257 |     PyModule_AddIntMacro(m, BTN_DPAD_DOWN);
            |                             ^~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1258:29: erreur: « BTN_DPAD_LEFT » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « BTN_LEFT » ?
       1258 |     PyModule_AddIntMacro(m, BTN_DPAD_LEFT);
            |                             ^~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1259:29: erreur: « BTN_DPAD_RIGHT » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « BTN_RIGHT » ?
       1259 |     PyModule_AddIntMacro(m, BTN_DPAD_RIGHT);
            |                             ^~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1260:29: erreur: « KEY_ALS_TOGGLE » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_LIGHTS_TOGGLE » ?
       1260 |     PyModule_AddIntMacro(m, KEY_ALS_TOGGLE);
            |                             ^~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1263:29: erreur: « KEY_TASKMANAGER » non déclaré (première utilisation dans cette fonction)
       1263 |     PyModule_AddIntMacro(m, KEY_TASKMANAGER);
            |                             ^~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1264:29: erreur: « KEY_JOURNAL » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_EQUAL » ?
       1264 |     PyModule_AddIntMacro(m, KEY_JOURNAL);
            |                             ^~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1266:29: erreur: « KEY_APPSELECT » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_SELECT » ?
       1266 |     PyModule_AddIntMacro(m, KEY_APPSELECT);
            |                             ^~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1267:29: erreur: « KEY_SCREENSAVER » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_SCREENLOCK » ?
       1267 |     PyModule_AddIntMacro(m, KEY_SCREENSAVER);
            |                             ^~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1269:29: erreur: « KEY_ASSISTANT » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_RESTART » ?
       1269 |     PyModule_AddIntMacro(m, KEY_ASSISTANT);
            |                             ^~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1270:29: erreur: « KEY_KBD_LAYOUT_NEXT » non déclaré (première utilisation dans cette fonction)
       1270 |     PyModule_AddIntMacro(m, KEY_KBD_LAYOUT_NEXT);
            |                             ^~~~~~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1272:29: erreur: « KEY_BRIGHTNESS_MAX » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_BRIGHTNESS_MIN » ?
       1272 |     PyModule_AddIntMacro(m, KEY_BRIGHTNESS_MAX);
            |                             ^~~~~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1273:29: erreur: « KEY_KBDINPUTASSIST_PREV » non déclaré (première utilisation dans cette fonction)
       1273 |     PyModule_AddIntMacro(m, KEY_KBDINPUTASSIST_PREV);
            |                             ^~~~~~~~~~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1274:29: erreur: « KEY_KBDINPUTASSIST_NEXT » non déclaré (première utilisation dans cette fonction)
       1274 |     PyModule_AddIntMacro(m, KEY_KBDINPUTASSIST_NEXT);
            |                             ^~~~~~~~~~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1275:29: erreur: « KEY_KBDINPUTASSIST_PREVGROUP » non déclaré (première utilisation dans cette fonction)
       1275 |     PyModule_AddIntMacro(m, KEY_KBDINPUTASSIST_PREVGROUP);
            |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1276:29: erreur: « KEY_KBDINPUTASSIST_NEXTGROUP » non déclaré (première utilisation dans cette fonction)
       1276 |     PyModule_AddIntMacro(m, KEY_KBDINPUTASSIST_NEXTGROUP);
            |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1277:29: erreur: « KEY_KBDINPUTASSIST_ACCEPT » non déclaré (première utilisation dans cette fonction)
       1277 |     PyModule_AddIntMacro(m, KEY_KBDINPUTASSIST_ACCEPT);
            |                             ^~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1278:29: erreur: « KEY_KBDINPUTASSIST_CANCEL » non déclaré (première utilisation dans cette fonction)
       1278 |     PyModule_AddIntMacro(m, KEY_KBDINPUTASSIST_CANCEL);
            |                             ^~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1279:29: erreur: « KEY_RIGHT_UP » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_RIGHT » ?
       1279 |     PyModule_AddIntMacro(m, KEY_RIGHT_UP);
            |                             ^~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1280:29: erreur: « KEY_RIGHT_DOWN » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_RIGHT » ?
       1280 |     PyModule_AddIntMacro(m, KEY_RIGHT_DOWN);
            |                             ^~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1281:29: erreur: « KEY_LEFT_UP » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_LEFTALT » ?
       1281 |     PyModule_AddIntMacro(m, KEY_LEFT_UP);
            |                             ^~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1282:29: erreur: « KEY_LEFT_DOWN » non déclaré (première utilisation dans cette fonction)
       1282 |     PyModule_AddIntMacro(m, KEY_LEFT_DOWN);
            |                             ^~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1283:29: erreur: « KEY_ROOT_MENU » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_ZOOMIN » ?
       1283 |     PyModule_AddIntMacro(m, KEY_ROOT_MENU);
            |                             ^~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1284:29: erreur: « KEY_MEDIA_TOP_MENU » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_MEDIA_REPEAT » ?
       1284 |     PyModule_AddIntMacro(m, KEY_MEDIA_TOP_MENU);
            |                             ^~~~~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1285:29: erreur: « KEY_NUMERIC_11 » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_NUMERIC_1 » ?
       1285 |     PyModule_AddIntMacro(m, KEY_NUMERIC_11);
            |                             ^~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1286:29: erreur: « KEY_NUMERIC_12 » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_NUMERIC_1 » ?
       1286 |     PyModule_AddIntMacro(m, KEY_NUMERIC_12);
            |                             ^~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1287:29: erreur: « KEY_AUDIO_DESC » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_AUDIO » ?
       1287 |     PyModule_AddIntMacro(m, KEY_AUDIO_DESC);
            |                             ^~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1288:29: erreur: « KEY_3D_MODE » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_MODE » ?
       1288 |     PyModule_AddIntMacro(m, KEY_3D_MODE);
            |                             ^~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1289:29: erreur: « KEY_NEXT_FAVORITE » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_FAVORITES » ?
       1289 |     PyModule_AddIntMacro(m, KEY_NEXT_FAVORITE);
            |                             ^~~~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1290:29: erreur: « KEY_STOP_RECORD » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_RECORD » ?
       1290 |     PyModule_AddIntMacro(m, KEY_STOP_RECORD);
            |                             ^~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1291:29: erreur: « KEY_PAUSE_RECORD » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_PAUSECD » ?
       1291 |     PyModule_AddIntMacro(m, KEY_PAUSE_RECORD);
            |                             ^~~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1292:29: erreur: « KEY_VOD » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_DVD » ?
       1292 |     PyModule_AddIntMacro(m, KEY_VOD);
            |                             ^~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1293:29: erreur: « KEY_UNMUTE » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_MUTE » ?
       1293 |     PyModule_AddIntMacro(m, KEY_UNMUTE);
            |                             ^~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1294:29: erreur: « KEY_FASTREVERSE » non déclaré (première utilisation dans cette fonction)
       1294 |     PyModule_AddIntMacro(m, KEY_FASTREVERSE);
            |                             ^~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1295:29: erreur: « KEY_SLOWREVERSE » non déclaré (première utilisation dans cette fonction)
       1295 |     PyModule_AddIntMacro(m, KEY_SLOWREVERSE);
            |                             ^~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1296:29: erreur: « KEY_DATA » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_SAT » ?
       1296 |     PyModule_AddIntMacro(m, KEY_DATA);
            |                             ^~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1352:29: erreur: « REL_RESERVED » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_RESERVED » ?
       1352 |     PyModule_AddIntMacro(m, REL_RESERVED);
            |                             ^~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1353:29: erreur: « REL_WHEEL_HI_RES » non déclaré (première utilisation dans cette fonction)
       1353 |     PyModule_AddIntMacro(m, REL_WHEEL_HI_RES);
            |                             ^~~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1354:29: erreur: « REL_HWHEEL_HI_RES » non déclaré (première utilisation dans cette fonction)
       1354 |     PyModule_AddIntMacro(m, REL_HWHEEL_HI_RES);
            |                             ^~~~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1383:29: erreur: « ABS_RESERVED » non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser « KEY_RESERVED » ?
       1383 |     PyModule_AddIntMacro(m, ABS_RESERVED);
            |                             ^~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      evdev/ecodes.c:1417:29: erreur: « SW_PEN_INSERTED » non déclaré (première utilisation dans cette fonction)
       1417 |     PyModule_AddIntMacro(m, SW_PEN_INSERTED);
            |                             ^~~~~~~~~~~~~~~
      /usr/local/include/python3.9/modsupport.h:146:67: note: dans la définition de la macro « PyModule_AddIntMacro »
        146 | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
            |                                                                   ^
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> evdev

note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.

@gvalkov
Copy link
Owner

gvalkov commented Jul 18, 2022

@IanTrudel, I couldn't reproduce this - CentOS 7, Python 3.9.9 (through pyenv), linux-headers and pip install evdev works fine :\

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants