0001-fix-build-with-gcc-10.x.patch 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. Description: This patch fixes the "multiple definition of" errors with gcc10
  2. Signed-off-by: Michael Fischer <mf@go-sys.de>
  3. diff -purN python-rpi-gpio.org/source/common.h python-rpi-gpio/source/common.h
  4. --- python-rpi-gpio.org/source/common.h 2019-07-21 14:41:22.000000000 +0200
  5. +++ python-rpi-gpio/source/common.h 2020-08-07 09:31:33.948575964 +0200
  6. @@ -30,14 +30,14 @@ SOFTWARE.
  7. #define I2C 42
  8. #define PWM 43
  9. -int gpio_mode;
  10. -const int pin_to_gpio_rev1[41];
  11. -const int pin_to_gpio_rev2[41];
  12. -const int pin_to_gpio_rev3[41];
  13. -const int (*pin_to_gpio)[41];
  14. -int gpio_direction[54];
  15. -rpi_info rpiinfo;
  16. -int setup_error;
  17. -int module_setup;
  18. +extern int gpio_mode;
  19. +extern const int pin_to_gpio_rev1[41];
  20. +extern const int pin_to_gpio_rev2[41];
  21. +extern const int pin_to_gpio_rev3[41];
  22. +extern const int (*pin_to_gpio)[41];
  23. +extern int gpio_direction[54];
  24. +extern rpi_info rpiinfo;
  25. +extern int setup_error;
  26. +extern int module_setup;
  27. int check_gpio_priv(void);
  28. int get_gpio_number(int channel, unsigned int *gpio);
  29. diff -purN python-rpi-gpio.org/source/constants.h python-rpi-gpio/source/constants.h
  30. --- python-rpi-gpio.org/source/constants.h 2019-07-21 14:41:22.000000000 +0200
  31. +++ python-rpi-gpio/source/constants.h 2020-08-07 09:32:15.522196618 +0200
  32. @@ -23,22 +23,22 @@ SOFTWARE.
  33. #define PY_PUD_CONST_OFFSET 20
  34. #define PY_EVENT_CONST_OFFSET 30
  35. -PyObject *high;
  36. -PyObject *low;
  37. -PyObject *input;
  38. -PyObject *output;
  39. -PyObject *pwm;
  40. -PyObject *serial;
  41. -PyObject *i2c;
  42. -PyObject *spi;
  43. -PyObject *unknown;
  44. -PyObject *board;
  45. -PyObject *bcm;
  46. -PyObject *pud_off;
  47. -PyObject *pud_up;
  48. -PyObject *pud_down;
  49. -PyObject *rising_edge;
  50. -PyObject *falling_edge;
  51. -PyObject *both_edge;
  52. +extern PyObject *high;
  53. +extern PyObject *low;
  54. +extern PyObject *input;
  55. +extern PyObject *output;
  56. +extern PyObject *pwm;
  57. +extern PyObject *serial;
  58. +extern PyObject *i2c;
  59. +extern PyObject *spi;
  60. +extern PyObject *unknown;
  61. +extern PyObject *board;
  62. +extern PyObject *bcm;
  63. +extern PyObject *pud_off;
  64. +extern PyObject *pud_up;
  65. +extern PyObject *pud_down;
  66. +extern PyObject *rising_edge;
  67. +extern PyObject *falling_edge;
  68. +extern PyObject *both_edge;
  69. void define_constants(PyObject *module);
  70. diff -purN python-rpi-gpio.org/source/event_gpio.c python-rpi-gpio/source/event_gpio.c
  71. --- python-rpi-gpio.org/source/event_gpio.c 2019-07-21 14:41:22.000000000 +0200
  72. +++ python-rpi-gpio/source/event_gpio.c 2020-08-07 09:42:05.564483136 +0200
  73. @@ -57,7 +57,7 @@ struct callback
  74. };
  75. struct callback *callbacks = NULL;
  76. -pthread_t threads;
  77. +static pthread_t threads;
  78. int event_occurred[54] = { 0 };
  79. int thread_running = 0;
  80. int epfd_thread = -1;
  81. diff -purN python-rpi-gpio.org/source/py_pwm.h python-rpi-gpio/source/py_pwm.h
  82. --- python-rpi-gpio.org/source/py_pwm.h 2019-07-21 14:41:22.000000000 +0200
  83. +++ python-rpi-gpio/source/py_pwm.h 2020-08-07 09:38:49.445646807 +0200
  84. @@ -20,5 +20,5 @@ OUT OF OR IN CONNECTION WITH THE SOFTWAR
  85. SOFTWARE.
  86. */
  87. -PyTypeObject PWMType;
  88. +extern PyTypeObject PWMType;
  89. PyTypeObject *PWM_init_PWMType(void);
  90. diff -purN python-rpi-gpio.org/source/soft_pwm.c python-rpi-gpio/source/soft_pwm.c
  91. --- python-rpi-gpio.org/source/soft_pwm.c 2019-07-21 14:41:22.000000000 +0200
  92. +++ python-rpi-gpio/source/soft_pwm.c 2020-08-07 09:42:40.753160437 +0200
  93. @@ -25,7 +25,7 @@ SOFTWARE.
  94. #include <time.h>
  95. #include "c_gpio.h"
  96. #include "soft_pwm.h"
  97. -pthread_t threads;
  98. +static pthread_t threads;
  99. struct pwm
  100. {
  101. diff -purN python-rpi-gpio.org/source/soft_pwm.h python-rpi-gpio/source/soft_pwm.h
  102. --- python-rpi-gpio.org/source/soft_pwm.h 2019-07-21 14:41:22.000000000 +0200
  103. +++ python-rpi-gpio/source/soft_pwm.h 2020-08-07 09:39:25.916811352 +0200
  104. @@ -26,4 +26,4 @@ void pwm_set_duty_cycle(unsigned int gpi
  105. void pwm_set_frequency(unsigned int gpio, float freq);
  106. void pwm_start(unsigned int gpio);
  107. void pwm_stop(unsigned int gpio);
  108. -int pwm_exists(unsigned int gpio);
  109. +extern int pwm_exists(unsigned int gpio);