Public bug reported:

the header files from linux-libc-dev are causing repsnapper on -proposed
to FTBFS on powerpc/ppc64el

I tracked it to 2 include clauses:

#include <sys/ioctl.h>
#include <asm/termbits.h>

causing the following error on powerpc/ppc64el builds:

following errors:

  src/printer/custom_baud.cpp: In function 'bool set_custom_baudrate(int, int)':
  src/printer/custom_baud.cpp:15:19: error: aggregate 'set_custom_baudrate(int, 
int)::termios2 options' has incomplete type and cannot be defined
     struct termios2 options;
                   ^
  src/printer/custom_baud.cpp:17:26: error: 'TCGETS2' was not declared in this 
scope
     if ( ioctl( device_fd, TCGETS2, &options ) < 0 ) {
                          ^
  src/printer/custom_baud.cpp:27:26: error: 'TCSETS2' was not declared in this 
scope
     if ( ioctl( device_fd, TCSETS2, &options ) < 0 ) {

Please see bug #1619100 for more info.

Comparing the powerpc/ppc64el headers to amd64 I found that they seem to
be missing includes to other headers under asm-generic/

If I try to add the missing asm-generic headers:

#include <sys/ioctl.h>
#include <asm/termbits.h>
#include <asm-generic/ioctls.h>
#include <asm-generic/termbits.h>

Then the build again fails on both powerpc/ppc64el and succeeds on all
other archs, this time the error is:

In file included from src/printer/custom_baud.cpp:11:0:
/usr/include/asm-generic/termbits.h:11:8: error: redefinition of ‘struct 
termios’
 struct termios {
        ^~~~~~~
In file included from src/printer/custom_baud.cpp:9:0:
/usr/include/powerpc-linux-gnu/asm/termbits.h:22:8: error: previous definition 
of ‘struct termios’
 struct termios {
        ^~~~~~~
In file included from src/printer/custom_baud.cpp:11:0:
/usr/include/asm-generic/termbits.h:31:8: error: redefinition of ‘struct 
ktermios’
 struct ktermios {
        ^~~~~~~~
In file included from src/printer/custom_baud.cpp:9:0:
/usr/include/powerpc-linux-gnu/asm/termbits.h:35:8: error: previous definition 
of ‘struct ktermios’
 struct ktermios {
        ^~~~~~~~

Finally, modifying the original includes to remove the asm/termbits.h:

#include <sys/ioctl.h>
#include <asm-generic/ioctls.h>
#include <asm-generic/termbits.h>

Allows for the repsnapper build to succeed on all arches, including
powerpc/ppc64el. Question is: why is this even needed?


linux-libc-dev packages:
Get:10 http://ftpmaster.internal/ubuntu yakkety/main powerpc linux-libc-dev 
powerpc 4.4.0-9136.55 [818 kB]
Get:10 http://ftpmaster.internal/ubuntu yakkety/main ppc64el linux-libc-dev 
ppc64el 4.4.0-9136.55 [818 kB]
Get:10 http://ftpmaster.internal/ubuntu yakkety/main amd64 linux-libc-dev amd64 
4.4.0-9136.55 [828 kB]

Checking the headers is seems that powerpc/ppc64el are missing includes
for asm-generics:

$ grep -r TCGETS2 linux-libc-dev_4.4.0-9136.55_*/
linux-libc-dev_4.4.0-9136.55_amd64/usr/include/asm-generic/ioctls.h:#define 
TCGETS2             _IOR('T', 0x2A, struct termios2)
linux-libc-dev_4.4.0-9136.55_ppc64el/usr/include/asm-generic/ioctls.h:#define 
TCGETS2           _IOR('T', 0x2A, struct termios2)

$ grep -r ioctls.h linux-libc-dev_4.4.0-9136.55_*/
linux-libc-dev_4.4.0-9136.55_amd64/usr/include/x86_64-linux-gnu/asm/ioctls.h:#include
 <asm-generic/ioctls.h>
linux-libc-dev_4.4.0-9136.55_amd64/usr/include/asm-generic/termios.h:#include 
<asm/ioctls.h>
linux-libc-dev_4.4.0-9136.55_ppc64el/usr/include/asm-generic/termios.h:#include 
<asm/ioctls.h>
linux-libc-dev_4.4.0-9136.55_ppc64el/usr/include/powerpc64le-linux-gnu/asm/termios.h:#include
 <asm/ioctls.h>

$ grep -r "termios2 {" linux-libc-dev_4.4.0-9136.55_*/     
linux-libc-dev_4.4.0-9136.55_amd64/usr/include/asm-generic/termbits.h:struct 
termios2 {
linux-libc-dev_4.4.0-9136.55_ppc64el/usr/include/asm-generic/termbits.h:struct 
termios2 {

$ grep -r termbits.h linux-libc-dev_4.4.0-9136.55_*/  
linux-libc-dev_4.4.0-9136.55_amd64/usr/include/x86_64-linux-gnu/asm/termbits.h:#include
 <asm-generic/termbits.h>
linux-libc-dev_4.4.0-9136.55_amd64/usr/include/asm-generic/termios.h:#include 
<asm/termbits.h>
linux-libc-dev_4.4.0-9136.55_ppc64el/usr/include/asm-generic/termios.h:#include 
<asm/termbits.h>
linux-libc-dev_4.4.0-9136.55_ppc64el/usr/include/powerpc64le-linux-gnu/asm/termios.h:#include
 <asm/termbits.h>

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New

** Summary changed:

- mismatch headers between powerpc/ppc64el and other archs
+ mismatching headers between powerpc/ppc64el and other archs

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1619446

Title:
  mismatching headers between powerpc/ppc64el and other archs

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1619446/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to