From: tornaria <tornaria@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] python3: enable bluetooth sockets
Date: Wed, 13 Apr 2022 06:21:47 +0200 [thread overview]
Message-ID: <20220413042147.3cmlj5bOyzXhf3e95bUtDgjYc3DW3goTmwDnwKpIr2o@z> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-36640@inbox.vuxu.org>
[-- Attachment #1: Type: text/plain, Size: 1126 bytes --]
There is an updated pull request by tornaria against master on the void-packages repository
https://github.com/tornaria/void-packages python3-enable-bluetooth
https://github.com/void-linux/void-packages/pull/36640
python3: enable bluetooth sockets
#### Testing the changes
- I tested the changes in this PR: **YES**
I've been using `python3-bluez` for bluetooth sockets, but this package was removed because it was not compatible with python 3.10 (this has been fixed upstream, but not released yet, see #33626)
TIL that bluetooth sockets are available in python stdlib. However, they need to be enabled. That's what this PR does.
Note, however, that this seems to create a circular build dependency, since `bluez` hostmakedepends on `python3-docutils`for its `rst2man` tool. I don't know if this would cause any trouble, and if so what is the standard solution. The tarball of `bluez`contains prebuilt manpages; although a couple would need to be patched for paths, this ought to be easy (I could do it).
CC: @ahesford
A patch file from https://github.com/void-linux/void-packages/pull/36640.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-python3-enable-bluetooth-36640.patch --]
[-- Type: text/x-diff, Size: 11093 bytes --]
From 8e3b6848c94c9ebed0c236327ec5e996dc626854 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
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?= <tornaria@cmat.edu.uy>
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?= <tornaria@cmat.edu.uy>
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?= <tornaria@cmat.edu.uy>
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<path>` to the compiler for every compiled extension that sets an
# rpath rather than the '-Wl,-R<path>' argument that GCC requires
unset GCC CC CXX CPP LD AR AS RANLIB
+ export CPPFLAGS="-I${FILESDIR}"
./configure ${configure_args}
}
next prev parent reply other threads:[~2022-04-13 4:21 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-11 19:10 [PR PATCH] " tornaria
2022-04-11 19:31 ` paper42
2022-04-11 19:32 ` paper42
2022-04-11 20:20 ` [PR PATCH] [Updated] " tornaria
2022-04-11 20:36 ` tornaria
2022-04-12 4:33 ` classabbyamp
2022-04-12 21:33 ` tornaria
2022-04-12 23:01 ` ahesford
2022-04-12 23:01 ` ahesford
2022-04-13 4:21 ` tornaria [this message]
2022-04-13 13:34 ` ahesford
2022-04-13 15:22 ` tornaria
2022-04-13 15:57 ` [PR PATCH] [Updated] " tornaria
2022-04-13 16:11 ` tornaria
2022-04-14 15:56 ` ahesford
2022-06-08 2:08 ` ahesford
2022-09-06 2:16 ` github-actions
2022-09-06 2:19 ` classabbyamp
2022-09-18 19:46 ` ahesford
2022-09-18 19:46 ` [PR PATCH] [Closed]: " ahesford
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220413042147.3cmlj5bOyzXhf3e95bUtDgjYc3DW3goTmwDnwKpIr2o@z \
--to=tornaria@users.noreply.github.com \
--cc=ml@inbox.vuxu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).