Github messages for voidlinux
 help / color / mirror / Atom feed
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}
 }
 

  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).