diff mbox

python: fix termios build for xtensa

Message ID 768f113a0cb394fde79b38ef52056ff8e335df0a.1405654360.git.baruch@tkos.co.il
State Accepted
Headers show

Commit Message

Baruch Siach July 18, 2014, 3:32 a.m. UTC
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/

Cc: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
 .../python-015-serial-ioctl-workaround.patch       | 23 ++++++++++++++++++++++
 1 file changed, 23 insertions(+)
 create mode 100644 package/python/python-015-serial-ioctl-workaround.patch

Comments

Max Filippov July 18, 2014, 11:42 a.m. UTC | #1
On Fri, Jul 18, 2014 at 7:32 AM, Baruch Siach <baruch@tkos.co.il> wrote:
> 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/
>
> Cc: Max Filippov <jcmvbkbc@gmail.com>
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> ---
>  .../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 ):
Baruch Siach July 18, 2014, 1:30 p.m. UTC | #2
Hi Max,

On Fri, Jul 18, 2014 at 03:42:43PM +0400, Max Filippov wrote:
> On Fri, Jul 18, 2014 at 7:32 AM, Baruch Siach <baruch@tkos.co.il> wrote:
> > 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/
> >
> > Cc: Max Filippov <jcmvbkbc@gmail.com>
> > Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> > ---
> >  .../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 ):

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
Thomas Petazzoni July 18, 2014, 6:04 p.m. UTC | #3
Dear Baruch Siach,

On Fri, 18 Jul 2014 06:32:40 +0300, Baruch Siach wrote:
> 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/
> 
> Cc: Max Filippov <jcmvbkbc@gmail.com>
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> ---
>  .../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
Max Filippov July 19, 2014, 12:06 a.m. UTC | #4
On Fri, Jul 18, 2014 at 5:30 PM, Baruch Siach <baruch@tkos.co.il> wrote:
> Hi Max,
>
> On Fri, Jul 18, 2014 at 03:42:43PM +0400, Max Filippov wrote:
>> On Fri, Jul 18, 2014 at 7:32 AM, Baruch Siach <baruch@tkos.co.il> wrote:
>> > 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/
>> >
>> > Cc: Max Filippov <jcmvbkbc@gmail.com>
>> > Signed-off-by: Baruch Siach <baruch@tkos.co.il>
>> > ---
>> >  .../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 ):
>
> You mean commit b973b4c91be8f (xtensa: fix TIOCGSERIAL and TIOCSSERIAL
> definitions)? It solved part of the problem.

Oh, right, other similar symbols.

> 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.
diff mbox

Patch

diff --git a/package/python/python-015-serial-ioctl-workaround.patch b/package/python/python-015-serial-ioctl-workaround.patch
new file mode 100644
index 000000000000..9ff775fd6d8d
--- /dev/null
+++ b/package/python/python-015-serial-ioctl-workaround.patch
@@ -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 <baruch@tkos.co.il>
+---
+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