Percona Server 5.6.26-74.0 fails to compile from source on FreeBSD

Bug #1496315 reported by Thomas Babut
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Percona Server moved to https://jira.percona.com/projects/PS
Status tracked in 5.7
5.6
Triaged
Low
Unassigned
5.7
Triaged
Low
Unassigned

Bug Description

The new release fails to compile from source on FreeBSD 9.3 and 10.2 (AMD64) with the following error:

Linking C executable comp_sql
[ 5%] Building C object zlib/CMakeFiles/zlib.dir/compress.c.o
[ 5%] Building C object libservices/CMakeFiles/mysqlservices.dir/my_thread_scheduler_service.c.o
/usr/ports/databases/percona56-client/work/percona-server-5.6.26-74.0/vio/viosocket.c: In function 'vio_client_must_be_proxied':
/usr/ports/databases/percona56-client/work/percona-server-5.6.26-74.0/vio/viosocket.c:709: error: 'struct in6_addr' has no member named 's6_addr32'
/usr/ports/databases/percona56-client/work/percona-server-5.6.26-74.0/vio/viosocket.c:709: error: 'struct in6_addr' has no member named 's6_addr32'
/usr/ports/databases/percona56-client/work/percona-server-5.6.26-74.0/vio/viosocket.c:709: error: 'struct in6_addr' has no member named 's6_addr32'
/usr/ports/databases/percona56-client/work/percona-server-5.6.26-74.0/vio/viosocket.c:710: error: 'struct in6_addr' has no member named 's6_addr32'
/usr/ports/databases/percona56-client/work/percona-server-5.6.26-74.0/vio/viosocket.c:710: error: 'struct in6_addr' has no member named 's6_addr32'
/usr/ports/databases/percona56-client/work/percona-server-5.6.26-74.0/vio/viosocket.c:711: error: 'struct in6_addr' has no member named 's6_addr32'
/usr/ports/databases/percona56-client/work/percona-server-5.6.26-74.0/vio/viosocket.c:712: error: 'struct in6_addr' has no member named 's6_addr32'
/usr/ports/databases/percona56-client/work/percona-server-5.6.26-74.0/vio/viosocket.c:712: error: 'struct in6_addr' has no member named 's6_addr32'
/usr/ports/databases/percona56-client/work/percona-server-5.6.26-74.0/vio/viosocket.c:713: error: 'struct in6_addr' has no member named 's6_addr32'
/usr/ports/databases/percona56-client/work/percona-server-5.6.26-74.0/vio/viosocket.c:714: error: 'struct in6_addr' has no member named 's6_addr32'
/usr/ports/databases/percona56-client/work/percona-server-5.6.26-74.0/vio/viosocket.c:714: error: 'struct in6_addr' has no member named 's6_addr32'
/usr/ports/databases/percona56-client/work/percona-server-5.6.26-74.0/vio/viosocket.c:715: error: 'struct in6_addr' has no member named 's6_addr32'
*** [vio/CMakeFiles/vio.dir/viosocket.c.o] Error code 1
[ 5%] Built target comp_sql
1 error
*** [vio/CMakeFiles/vio.dir/all] Error code 2

Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :

Looks like a regression from the proxy protocol support patch. FreeBSD is not one of our supported platforms but if someone sends us a patch that adds proper in6_addr there, we could apply it.

Revision history for this message
Valerii Kravchuk (valerii-kravchuk) wrote :

On FreeBSD the structure is defined like this in netinet6/in6.h:

   92 /*
   93 * IPv6 address
   94 */
   95 struct in6_addr {
   96 union {
   97 uint8_t __u6_addr8[16];
   98 uint16_t __u6_addr16[8];
   99 uint32_t __u6_addr32[4];
  100 } __u6_addr; /* 128-bit IP6 address */
  101 };
  102
  103 #define s6_addr __u6_addr.__u6_addr8
  104 #ifdef _KERNEL /* XXX nonstandard */
  105 #define s6_addr8 __u6_addr.__u6_addr8
  106 #define s6_addr16 __u6_addr.__u6_addr16
  107 #define s6_addr32 __u6_addr.__u6_addr32
  108 #endif

Revision history for this message
Ceyu (cemil) wrote :

Put the "#define" directives within struct in netinet6/in6.h like this:

 /*
   * IPv6 address
   */
    struct in6_addr {
   union {
   uint8_t __u6_addr8[16];
   uint16_t __u6_addr16[8];
   uint32_t __u6_addr32[4];
  } __u6_addr; /* 128-bit IP6 address */

#define s6_addr __u6_addr.__u6_addr8
#ifdef _KERNEL /* XXX nonstandard */
#define s6_addr8 __u6_addr.__u6_addr8
#define s6_addr16 __u6_addr.__u6_addr16
#define s6_addr32 __u6_addr.__u6_addr32
#endif

};

Revision history for this message
Thomas Babut (thbabut) wrote :

Although I'm not a developer at all, I've created a patch that apparently works. I am testing a slave with this patch without any problems so far. But I cannot say anything about the functionality of the ipv6/proxy part. There is certainly a better place for the additional code also. Perhaps it is a only starting point. Thanks in advance.

Revision history for this message
Ceyu (cemil) wrote :

Addition to #3
I forgot to comment out the following:

/* #ifdef _KERNEL */
..
..
/* #endif */

tags: added: contribution
Revision history for this message
Thomas Babut (thbabut) wrote :
tags: added: proxy-protocol
Revision history for this message
Alexander Pyhalov (alp-rsu) wrote :

Please, note that second patch should be modified to work on illumos (it should look like the first one).

Revision history for this message
Shahriyar Rzayev (rzayev-sehriyar) wrote :

Percona now uses JIRA for bug reports so this bug report is migrated to: https://jira.percona.com/browse/PS-2124

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.