Opened 3 years ago
Closed 3 years ago
#64941 closed defect (fixed)
usbredir @0.9.0: error: ‘TCP_KEEPINTVL’ undeclared
Reported by: | barracuda156 | Owned by: | ryandesign (Ryan Carsten Schmidt) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.7.2 |
Keywords: | tiger leopard snowleopard lion mountainlion | Cc: | |
Port: | usbredir |
Description (last modified by ryandesign (Ryan Carsten Schmidt))
This is a separate issue from #64940.
When restricted to ppc32, usbredir
still fails on Leopard and Snow Leopard Rosetta due to undeclared TCP_KEEPINTVL
and TCP_KEEPCNT
.
This is on 10.5.8:
Making all in usbredirserver make[2]: Entering directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_usbredir/usbredir/work/usbredir-0.9.0/usbredirserver' /usr/bin/gcc-4.2 -std=gnu99 -DHAVE_CONFIG_H -I. -I.. -I/opt/local/include -I/opt/local/include/libusb-1.0 -I../usbredirhost -I../usbredirparser -pipe -Os -arch ppc -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -MT usbredirserver-usbredirserver.o -MD -MP -MF .deps/usbredirserver-usbredirserver.Tpo -c -o usbredirserver-usbredirserver.o `test -f 'usbredirserver.c' || echo './'`usbredirserver.c usbredirserver.c: In function ‘main’: usbredirserver.c:390: error: ‘TCP_KEEPINTVL’ undeclared (first use in this function) usbredirserver.c:390: error: (Each undeclared identifier is reported only once usbredirserver.c:390: error: for each function it appears in.) usbredirserver.c:397: error: ‘TCP_KEEPCNT’ undeclared (first use in this function) make[2]: *** [usbredirserver-usbredirserver.o] Error 1 make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_usbredir/usbredir/work/usbredir-0.9.0/usbredirserver' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_usbredir/usbredir/work/usbredir-0.9.0' make: *** [all] Error 2 make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_usbredir/usbredir/work/usbredir-0.9.0' Command failed: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_usbredir/usbredir/work/usbredir-0.9.0" && /usr/bin/make -j4 -w all Exit code: 2 Error: Failed to build usbredir: command execution failed
And on 10.6.8 with gcc10
:
Making all in usbredirserver make[2]: Entering directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_usbredir/usbredir/work/usbredir-0.9.0/usbredirserver' /opt/local/bin/gcc-mp-10 -DHAVE_CONFIG_H -I. -I.. -I/opt/local/include -I/opt/local/include/libusb-1.0 -I../usbredirhost -I../usbredirparser -pipe -Os -arch ppc -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -MT usbredirserver-usbredirserver.o -MD -MP -MF .deps/usbredirserver-usbredirserver.Tpo -c -o usbredirserver-usbredirserver.o `test -f 'usbredirserver.c' || echo './'`usbredirserver.c usbredirserver.c: In function 'main': usbredirserver.c:390:48: error: 'TCP_KEEPINTVL' undeclared (first use in this function); did you mean 'TCP_KEEPALIVE'? 390 | if (setsockopt(client_fd, SOL_TCP, TCP_KEEPINTVL, &optval, optlen) == -1) { | ^~~~~~~~~~~~~ | TCP_KEEPALIVE usbredirserver.c:390:48: note: each undeclared identifier is reported only once for each function it appears in usbredirserver.c:397:48: error: 'TCP_KEEPCNT' undeclared (first use in this function); did you mean 'TCP_KEEPIDLE'? 397 | if (setsockopt(client_fd, SOL_TCP, TCP_KEEPCNT, &optval, optlen) == -1) { | ^~~~~~~~~~~ | TCP_KEEPIDLE make[2]: *** [usbredirserver-usbredirserver.o] Error 1 make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_usbredir/usbredir/work/usbredir-0.9.0/usbredirserver' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_usbredir/usbredir/work/usbredir-0.9.0' make: *** [all] Error 2 make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_usbredir/usbredir/work/usbredir-0.9.0' Command failed: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_usbredir/usbredir/work/usbredir-0.9.0" && /usr/bin/make -j4 -w all Exit code: 2 Error: Failed to build usbredir: command execution failed
Attachments (3)
Change History (10)
Changed 3 years ago by barracuda156
Attachment: | main_10.5.8.log added |
---|
Changed 3 years ago by barracuda156
Attachment: | main_10.6.8_gcc42.log added |
---|
Changed 3 years ago by barracuda156
Attachment: | main_10.6.8_gcc10.log added |
---|
comment:1 Changed 3 years ago by barracuda156
Summary: | usbredir fails to build for PowerPC → usbredir fails to build for PowerPC: error: ‘TCP_KEEPINTVL’ undeclared |
---|
comment:2 follow-up: 3 Changed 3 years ago by ryandesign (Ryan Carsten Schmidt)
Keywords: | tiger lion mountainlion added; powerpc rosetta removed |
---|---|
Summary: | usbredir fails to build for PowerPC: error: ‘TCP_KEEPINTVL’ undeclared → usbredir @0.9.0: error: ‘TCP_KEEPINTVL’ undeclared |
comment:3 Changed 3 years ago by barracuda156
Replying to ryandesign:
Yes, this problem affects Mountain Lion and earlier. I guess
TCP_KEEPINTVL
andTCP_KEEPCNT
aren't declared by the system headers on those OS versions. I haven't investigated whether upstream has already fixed this (we are not using the latest version yet because that would require switching to the meson build system and I didn't feel like dealing with that yet) or, if not, what the solution would be.
Yeah, these appear from 10.9 onwards:
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) … #define TCP_KEEPINTVL 0x101 /* interval between keepalives */ #define TCP_KEEPCNT 0x102 /* number of keepalives before close */
UPD: Well, just adding these two lines to usbredirserver.c solved the problem:
36-109% port -v installed usbredir The following ports are currently installed: usbredir @0.9.0_0 (active) requested_variants='' platform='darwin 10' archs='ppc' date='2022-04-06T08:39:45+0800'
comment:4 Changed 3 years ago by ryandesign (Ryan Carsten Schmidt)
While that may compile, just defining those values may not do anything useful. The program will be passing those constants to the OS, or comparing those values against something returned by the OS. If the OS didn't define those constants, likely the OS is not prepared to accept or return those values.
The error is occurring in usbredirserver.c; upstream has removed usbredirserver in the latest not-yet-released version. Maybe we can instruct the port not to build that component.
comment:5 Changed 3 years ago by ryandesign (Ryan Carsten Schmidt)
Status: | assigned → accepted |
---|
comment:6 Changed 3 years ago by ryandesign (Ryan Carsten Schmidt)
Description: | modified (diff) |
---|
comment:7 Changed 3 years ago by ryandesign (Ryan Carsten Schmidt)
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
Yes, this problem affects Mountain Lion and earlier. I guess
TCP_KEEPINTVL
andTCP_KEEPCNT
aren't declared by the system headers on those OS versions. I haven't investigated whether upstream has already fixed this (we are not using the latest version yet because that would require switching to the meson build system and I didn't feel like dealing with that yet) or, if not, what the solution would be.