From 8e3b6848c94c9ebed0c236327ec5e996dc626854 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Mon, 11 Apr 2022 10:25:40 -0300 Subject: [PATCH 1/4] python3: enable bluetooth sockets --- srcpkgs/python3/template | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/srcpkgs/python3/template b/srcpkgs/python3/template index ed15b88359ff..3bb66e6f5d14 100644 --- a/srcpkgs/python3/template +++ b/srcpkgs/python3/template @@ -4,7 +4,7 @@ # pkgname=python3 version=3.10.4 -revision=1 +revision=2 wrksrc="Python-${version}" build_style="gnu-configure" configure_args="--enable-shared --enable-ipv6 @@ -14,7 +14,8 @@ configure_args="--enable-shared --enable-ipv6 pycompile_dirs="usr/lib/python${version%.*}" hostmakedepends="pkgconf" makedepends="libffi-devel readline-devel gdbm-devel openssl-devel - expat-devel sqlite-devel bzip2-devel zlib-devel liblzma-devel" + expat-devel sqlite-devel bzip2-devel zlib-devel liblzma-devel + libbluetooth-devel" depends="ca-certificates" checkdepends="$depends iana-etc" short_desc="Python programming language (${version%.*} series)" From 9cc17e3b5c27ddf7df70fa7f6a9b026eaa9794e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Mon, 11 Apr 2022 17:17:39 -0300 Subject: [PATCH 2/4] bluez: remove makedepends on python3-docutils --- .../patches/0010-dont-require-rst2man.patch | 32 +++++++++++++++++++ srcpkgs/bluez/template | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/bluez/patches/0010-dont-require-rst2man.patch diff --git a/srcpkgs/bluez/patches/0010-dont-require-rst2man.patch b/srcpkgs/bluez/patches/0010-dont-require-rst2man.patch new file mode 100644 index 000000000000..b05dfec21793 --- /dev/null +++ b/srcpkgs/bluez/patches/0010-dont-require-rst2man.patch @@ -0,0 +1,32 @@ +--- a/configure.ac 2022-03-16 12:06:20.000000000 -0300 ++++ b/configure.ac 2022-04-11 09:27:53.726166927 -0300 +@@ -335,9 +335,6 @@ + [enable_manpages=${enableval}]) + if (test "${enable_manpages}" != "no"); then + AC_CHECK_PROGS(RST2MAN, [rst2man rst2man.py], "no") +- if (test "${RST2MAN}" = "no" ); then +- AC_MSG_ERROR([rst2man is required]) +- fi + fi + AM_CONDITIONAL(MANPAGES, test "${enable_manpages}" != "no") + AM_CONDITIONAL(RUN_RST2MAN, test "${enable_manpages}" != "no" && +--- a/src/bluetoothd.8 2022-03-16 12:17:56.000000000 -0300 ++++ b/src/bluetoothd.8 2022-04-11 17:11:10.093067361 -0300 +@@ -56,7 +56,7 @@ + .TP + .B \-f\fP,\fB \-\-configfile + Specifies an explicit config file path instead of relying +-on the default path(\fI/usr/local/etc/bluetooth/main.conf\fP) ++on the default path(\fI/etc/bluetooth/main.conf\fP) + for the config file. + .UNINDENT + .INDENT 0.0 +@@ -90,7 +90,7 @@ + .SH FILES + .INDENT 0.0 + .TP +-.B \fI/usr/local/etc/bluetooth/main.conf\fP ++.B \fI/etc/bluetooth/main.conf\fP + Location of the global configuration file. + .UNINDENT + .SH RESOURCES diff --git a/srcpkgs/bluez/template b/srcpkgs/bluez/template index e9827e8e1d95..43a6404079b7 100644 --- a/srcpkgs/bluez/template +++ b/srcpkgs/bluez/template @@ -7,7 +7,7 @@ configure_args="--with-udevdir=/usr/lib/udev --disable-systemd --enable-sixaxis --enable-threads --enable-library --enable-deprecated --enable-external-ell $(vopt_enable mesh) $(vopt_enable nfc) $(vopt_enable experimental)" -hostmakedepends="automake flex libtool pkg-config python3-docutils" +hostmakedepends="automake flex libtool pkg-config" makedepends="cups-devel eudev-libudev-devel libglib-devel libical-devel readline-devel ell-devel $(vopt_if mesh json-c-devel)" short_desc="Bluetooth tools and daemons" From 66ec96ca70f94c983389a826c4121280a66bfbc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Tue, 12 Apr 2022 23:43:41 -0300 Subject: [PATCH 3/4] Revert "bluez: remove makedepends on python3-docutils" This reverts commit 9cc17e3b5c27ddf7df70fa7f6a9b026eaa9794e2. --- .../patches/0010-dont-require-rst2man.patch | 32 ------------------- srcpkgs/bluez/template | 2 +- 2 files changed, 1 insertion(+), 33 deletions(-) delete mode 100644 srcpkgs/bluez/patches/0010-dont-require-rst2man.patch diff --git a/srcpkgs/bluez/patches/0010-dont-require-rst2man.patch b/srcpkgs/bluez/patches/0010-dont-require-rst2man.patch deleted file mode 100644 index b05dfec21793..000000000000 --- a/srcpkgs/bluez/patches/0010-dont-require-rst2man.patch +++ /dev/null @@ -1,32 +0,0 @@ ---- a/configure.ac 2022-03-16 12:06:20.000000000 -0300 -+++ b/configure.ac 2022-04-11 09:27:53.726166927 -0300 -@@ -335,9 +335,6 @@ - [enable_manpages=${enableval}]) - if (test "${enable_manpages}" != "no"); then - AC_CHECK_PROGS(RST2MAN, [rst2man rst2man.py], "no") -- if (test "${RST2MAN}" = "no" ); then -- AC_MSG_ERROR([rst2man is required]) -- fi - fi - AM_CONDITIONAL(MANPAGES, test "${enable_manpages}" != "no") - AM_CONDITIONAL(RUN_RST2MAN, test "${enable_manpages}" != "no" && ---- a/src/bluetoothd.8 2022-03-16 12:17:56.000000000 -0300 -+++ b/src/bluetoothd.8 2022-04-11 17:11:10.093067361 -0300 -@@ -56,7 +56,7 @@ - .TP - .B \-f\fP,\fB \-\-configfile - Specifies an explicit config file path instead of relying --on the default path(\fI/usr/local/etc/bluetooth/main.conf\fP) -+on the default path(\fI/etc/bluetooth/main.conf\fP) - for the config file. - .UNINDENT - .INDENT 0.0 -@@ -90,7 +90,7 @@ - .SH FILES - .INDENT 0.0 - .TP --.B \fI/usr/local/etc/bluetooth/main.conf\fP -+.B \fI/etc/bluetooth/main.conf\fP - Location of the global configuration file. - .UNINDENT - .SH RESOURCES diff --git a/srcpkgs/bluez/template b/srcpkgs/bluez/template index 43a6404079b7..e9827e8e1d95 100644 --- a/srcpkgs/bluez/template +++ b/srcpkgs/bluez/template @@ -7,7 +7,7 @@ configure_args="--with-udevdir=/usr/lib/udev --disable-systemd --enable-sixaxis --enable-threads --enable-library --enable-deprecated --enable-external-ell $(vopt_enable mesh) $(vopt_enable nfc) $(vopt_enable experimental)" -hostmakedepends="automake flex libtool pkg-config" +hostmakedepends="automake flex libtool pkg-config python3-docutils" makedepends="cups-devel eudev-libudev-devel libglib-devel libical-devel readline-devel ell-devel $(vopt_if mesh json-c-devel)" short_desc="Bluetooth tools and daemons" From 42b800f69f088d2dc09aba4dbd94de454c710da2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Tue, 12 Apr 2022 23:42:38 -0300 Subject: [PATCH 4/4] python3: enable bluetooth sockets w/o bluez --- srcpkgs/python3/files/bluetooth/bluetooth.h | 9 +++++++ srcpkgs/python3/files/bluetooth/hci.h | 8 ++++++ srcpkgs/python3/files/bluetooth/l2cap.h | 7 ++++++ srcpkgs/python3/files/bluetooth/rfcomm.h | 5 ++++ srcpkgs/python3/files/bluetooth/sco.h | 4 +++ srcpkgs/python3/files/mk_bluetooth_hdr | 27 +++++++++++++++++++++ srcpkgs/python3/template | 4 +-- 7 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 srcpkgs/python3/files/bluetooth/bluetooth.h create mode 100644 srcpkgs/python3/files/bluetooth/hci.h create mode 100644 srcpkgs/python3/files/bluetooth/l2cap.h create mode 100644 srcpkgs/python3/files/bluetooth/rfcomm.h create mode 100644 srcpkgs/python3/files/bluetooth/sco.h create mode 100755 srcpkgs/python3/files/mk_bluetooth_hdr diff --git a/srcpkgs/python3/files/bluetooth/bluetooth.h b/srcpkgs/python3/files/bluetooth/bluetooth.h new file mode 100644 index 000000000000..8a4d3eb76132 --- /dev/null +++ b/srcpkgs/python3/files/bluetooth/bluetooth.h @@ -0,0 +1,9 @@ +#define BTPROTO_L2CAP 0 +#define BTPROTO_HCI 1 +#define BTPROTO_SCO 2 +#define BTPROTO_RFCOMM 3 +#define SOL_HCI 0 +/* BD Address */ +typedef struct { + uint8_t b[6]; +} __attribute__((packed)) bdaddr_t; diff --git a/srcpkgs/python3/files/bluetooth/hci.h b/srcpkgs/python3/files/bluetooth/hci.h new file mode 100644 index 000000000000..f86dc9d4217c --- /dev/null +++ b/srcpkgs/python3/files/bluetooth/hci.h @@ -0,0 +1,8 @@ +#define HCI_DATA_DIR 1 +#define HCI_FILTER 2 +#define HCI_TIME_STAMP 3 +struct sockaddr_hci { + sa_family_t hci_family; + unsigned short hci_dev; + unsigned short hci_channel; +}; diff --git a/srcpkgs/python3/files/bluetooth/l2cap.h b/srcpkgs/python3/files/bluetooth/l2cap.h new file mode 100644 index 000000000000..39221859b4bd --- /dev/null +++ b/srcpkgs/python3/files/bluetooth/l2cap.h @@ -0,0 +1,7 @@ +struct sockaddr_l2 { + sa_family_t l2_family; + unsigned short l2_psm; + bdaddr_t l2_bdaddr; + unsigned short l2_cid; + uint8_t l2_bdaddr_type; +}; diff --git a/srcpkgs/python3/files/bluetooth/rfcomm.h b/srcpkgs/python3/files/bluetooth/rfcomm.h new file mode 100644 index 000000000000..5415c192c9d5 --- /dev/null +++ b/srcpkgs/python3/files/bluetooth/rfcomm.h @@ -0,0 +1,5 @@ +struct sockaddr_rc { + sa_family_t rc_family; + bdaddr_t rc_bdaddr; + uint8_t rc_channel; +}; diff --git a/srcpkgs/python3/files/bluetooth/sco.h b/srcpkgs/python3/files/bluetooth/sco.h new file mode 100644 index 000000000000..6974f3e47be2 --- /dev/null +++ b/srcpkgs/python3/files/bluetooth/sco.h @@ -0,0 +1,4 @@ +struct sockaddr_sco { + sa_family_t sco_family; + bdaddr_t sco_bdaddr; +}; diff --git a/srcpkgs/python3/files/mk_bluetooth_hdr b/srcpkgs/python3/files/mk_bluetooth_hdr new file mode 100755 index 000000000000..765e80237d15 --- /dev/null +++ b/srcpkgs/python3/files/mk_bluetooth_hdr @@ -0,0 +1,27 @@ +#! /bin/sh + +# create stub bluetooth headers that can be used to compile python +# with bluetooth socket support + +set -e + +if [ ! -r /usr/include/bluetooth/bluetooth.h ]; then + echo "Please 'xbps-install libbluetooth-devel'" + exit 1 +fi + +echo "Change directory to '$(dirname "$0")'" +cd "$(dirname "$0")" + +echo "Create 'bluetooth/'" +mkdir -p bluetooth + +for h in bluetooth.h hci.h l2cap.h rfcomm.h sco.h; do + echo "Create 'bluetooth/$h'" + sed -nE \ + -e '/BTPROTO_(L2CAP|HCI|SCO|RFCOMM)|SOL_HCI/p' \ + -e '/\* BD Address \*/,/}/p' \ + -e '/HCI_(DATA_DIR|FILTER|TIME_STAMP)/p' \ + -e '/sockaddr_/,/}/p' \ + /usr/include/bluetooth/$h > bluetooth/$h +done diff --git a/srcpkgs/python3/template b/srcpkgs/python3/template index 3bb66e6f5d14..0f3ee95446b6 100644 --- a/srcpkgs/python3/template +++ b/srcpkgs/python3/template @@ -14,8 +14,7 @@ configure_args="--enable-shared --enable-ipv6 pycompile_dirs="usr/lib/python${version%.*}" hostmakedepends="pkgconf" makedepends="libffi-devel readline-devel gdbm-devel openssl-devel - expat-devel sqlite-devel bzip2-devel zlib-devel liblzma-devel - libbluetooth-devel" + expat-devel sqlite-devel bzip2-devel zlib-devel liblzma-devel" depends="ca-certificates" checkdepends="$depends iana-etc" short_desc="Python programming language (${version%.*} series)" @@ -53,6 +52,7 @@ do_configure() { # `-R` to the compiler for every compiled extension that sets an # rpath rather than the '-Wl,-R' argument that GCC requires unset GCC CC CXX CPP LD AR AS RANLIB + export CPPFLAGS="-I${FILESDIR}" ./configure ${configure_args} }