Skip to contentSkip to conversation

python: fix termios build for xtensa

PATCH New Baruch Siach 3 participants 5 messages Jul 18, 2014 – Jul 19, 2014

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 python: fix termios build for xtensa

The xtensa ioctls.h header references struct serial_multiport_struct that is not defined in this header or included headers. ioctls.h also references tty_struct that is not exported to userspace at all. Add a patch fixing these issues.

This is only a workaround as the real problem should be fixed in the kernel (by removing all struct references like all other archs). But since we support older kernel versions we'll have to carry this patch for some time.

Fixes:
http://autobuild.buildroot.net/results/12b/12b5612828d7f1fc7d1f69fc01341d5a6e628db5/

---
 .../python-015-serial-ioctl-workaround.patch       | 23 ++++++++++++++++++++++
 1 file changed, 23 insertions(+)
 create mode 100644 package/python/python-015-serial-ioctl-workaround.patch
package/python/python-015-serial-ioctl-workaround.patch new file +23 -0
new file mode 100644
index 000000000000..9ff775fd6d8d
@@ -0,0 +1,23 @@
+Serial ioctl() workaround
+
+The ioctls.h of some architectures (notably xtensa) references structs from
+linux/serial.h. Make sure to include this header as well.
+
+Also, undef TIOCTTYGSTRUCT that require reference to internal kernel tty_struct,
+but isn't actually referenced in modern kernels.
+
+Signed-off-by: Baruch Siach <[email protected]>
+---
+diff -Nuar Python-2.7.8-orig/Modules/termios.c Python-2.7.8/Modules/termios.c
+--- Python-2.7.8-orig/Modules/termios.c	2014-06-30 05:05:44.000000000 +0300
++++ Python-2.7.8/Modules/termios.c	2014-07-18 06:16:43.393010357 +0300
+@@ -16,7 +16,9 @@
+  * so this needs to be included first on that platform. */
+ #include <termio.h>
+ #endif
++#include <linux/serial.h>
+ #include <sys/ioctl.h>
++#undef TIOCTTYGSTRUCT
+ 
+ /* HP-UX requires that this be included to pick up MDCD, MCTS, MDSR,
+  * MDTR, MRI, and MRTS (appearantly used internally by some things
Signature · 1 line
2.0.1
#1 lore raw

PATCH 1/1 python: fix termios build for xtensa

Quoted 12 lines · Baruch Siach

The xtensa ioctls.h header references struct serial_multiport_struct that is not defined in this header or included headers. ioctls.h also references tty_struct that is not exported to userspace at all. Add a patch fixing these issues.

This is only a workaround as the real problem should be fixed in the kernel (by removing all struct references like all other archs). But since we support older kernel versions we'll have to carry this patch for some time.

Fixes:
http://autobuild.buildroot.net/results/12b/12b5612828d7f1fc7d1f69fc01341d5a6e628db5/

Quoted 6 lines
---
 .../python-015-serial-ioctl-workaround.patch       | 23 ++++++++++++++++++++++
 1 file changed, 23 insertions(+)
 create mode 100644 package/python/python-015-serial-ioctl-workaround.patch

Thank you, Baruch.
I'll send corresponding linux patches. I definitely saw this issue some time ago,
but I couldn't find any trace of that ):

Signature · 2 lines
Thanks.
-- Max
#2 lore raw

PATCH 1/1 python: fix termios build for xtensa

Hi Max,

Quoted 20 lines · Max Filippov
Quoted 12 lines · Baruch Siach

The xtensa ioctls.h header references struct serial_multiport_struct that is not defined in this header or included headers. ioctls.h also references tty_struct that is not exported to userspace at all. Add a patch fixing these issues.

This is only a workaround as the real problem should be fixed in the kernel (by removing all struct references like all other archs). But since we support older kernel versions we'll have to carry this patch for some time.

Fixes:
http://autobuild.buildroot.net/results/12b/12b5612828d7f1fc7d1f69fc01341d5a6e628db5/

Quoted 6 lines
---
 .../python-015-serial-ioctl-workaround.patch       | 23 ++++++++++++++++++++++
 1 file changed, 23 insertions(+)
 create mode 100644 package/python/python-015-serial-ioctl-workaround.patch
Quoted 4 lines

Thank you, Baruch.
I'll send corresponding linux patches. I definitely saw this issue some time ago,
but I couldn't find any trace of that ):

You mean commit b973b4c91be8f (xtensa: fix TIOCGSERIAL and TIOCSSERIAL definitions)? It solved part of the problem.

It seems most other architectures migrated to asm-generic/ioctls.h.

baruch

Signature · 3 lines
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
#3 lore raw

PATCH 1/1 python: fix termios build for xtensa

Quoted 23 lines · Baruch Siach

Hi Max,

Quoted 20 lines · Max Filippov
Quoted 18 lines · Baruch Siach

The xtensa ioctls.h header references struct serial_multiport_struct that is not defined in this header or included headers. ioctls.h also references tty_struct that is not exported to userspace at all. Add a patch fixing these issues.

This is only a workaround as the real problem should be fixed in the kernel (by removing all struct references like all other archs). But since we support older kernel versions we'll have to carry this patch for some time.

Fixes:
http://autobuild.buildroot.net/results/12b/12b5612828d7f1fc7d1f69fc01341d5a6e628db5/

---
 .../python-015-serial-ioctl-workaround.patch       | 23 ++++++++++++++++++++++
 1 file changed, 23 insertions(+)
 create mode 100644 package/python/python-015-serial-ioctl-workaround.patch
Quoted 7 lines
Quoted 4 lines

Thank you, Baruch.
I'll send corresponding linux patches. I definitely saw this issue some time ago,
but I couldn't find any trace of that ):

You mean commit b973b4c91be8f (xtensa: fix TIOCGSERIAL and TIOCSSERIAL definitions)? It solved part of the problem.

Oh, right, other similar symbols.

Quoted 1 line

It seems most other architectures migrated to asm-generic/ioctls.h.

This would change existing IOCTL codes, so I don't think we can do it.

Signature · 2 lines
Thanks.
-- Max
#4 lore raw

PATCH 1/1 python: fix termios build for xtensa

In reply to Baruch Siach

Dear Baruch Siach,

Quoted 12 lines · Baruch Siach

The xtensa ioctls.h header references struct serial_multiport_struct that is not defined in this header or included headers. ioctls.h also references tty_struct that is not exported to userspace at all. Add a patch fixing these issues.

This is only a workaround as the real problem should be fixed in the kernel (by removing all struct references like all other archs). But since we support older kernel versions we'll have to carry this patch for some time.

Fixes:
http://autobuild.buildroot.net/results/12b/12b5612828d7f1fc7d1f69fc01341d5a6e628db5/

Quoted 6 lines
---
 .../python-015-serial-ioctl-workaround.patch       | 23 ++++++++++++++++++++++
 1 file changed, 23 insertions(+)
 create mode 100644 package/python/python-015-serial-ioctl-workaround.patch

Applied, thanks.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com