Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Building ZeroMQ 4.1.3 with libsodium 1.0.6 fails due to unused value #1637

Closed
ikirker opened this issue Nov 5, 2015 · 10 comments
Closed

Building ZeroMQ 4.1.3 with libsodium 1.0.6 fails due to unused value #1637

ikirker opened this issue Nov 5, 2015 · 10 comments

Comments

@ikirker
Copy link

ikirker commented Nov 5, 2015

Apologies if this is a duplicate: I had a quick search and didn't see any related issues.

I'm trying to build release 4.1.3, with libsodium 1.0.6, using GCC 4.9.2, and it appears that an attribute set on the sodium_init() function is causing compilation to fail, as ZeroMQ appears not to assign or check the value (I saw a few TODO comments mentioning that the value should be assigned, too).

sodium_init() is now prototyped as:

SODIUM_EXPORT
int sodium_init(void)
            __attribute__ ((warn_unused_result));

whereas in 1.0.5, it was just:

SODIUM_EXPORT
int sodium_init(void);

So, now, when building, I get this error:

$ ./configure --with-libsodium
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking how to create a ustar tar archive... gnutar
checking whether make supports nested variables... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for gcc option to accept ISO C99... -std=gnu99
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking whether gcc -std=gnu99 and cc understand -c and -o together... yes
checking for a sed that does not truncate output... /usr/bin/sed
checking for gawk... (cached) gawk
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for xmlto... no
checking for asciidoc... no
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... (cached) /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc -std=gnu99... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... dlltool
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc -std=gnu99 object... ok
checking for sysroot... no
checking for mt... no
checking if : is a manifest tool... no
checking how to run the C preprocessor... gcc -std=gnu99 -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc -std=gnu99 supports -fno-rtti -fno-exceptions... no
checking for gcc -std=gnu99 option to produce PIC... -fPIC -DPIC
checking if gcc -std=gnu99 PIC flag -fPIC -DPIC works... yes
checking if gcc -std=gnu99 static flag -static works... yes
checking if gcc -std=gnu99 supports -c -o file.o... yes
checking if gcc -std=gnu99 supports -c -o file.o... (cached) yes
checking whether the gcc -std=gnu99 linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether the C compiler works... yes
checking whether we are using Intel C compiler... no
checking whether we are using Sun Studio C compiler... no
checking whether we are using clang C compiler... no
checking whether we are using gcc >= 4 C compiler... yes
checking whether the C++ compiler works... yes
checking whether we are using Intel C++ compiler... no
checking whether we are using Sun Studio C++ compiler... no
checking whether we are using clang C++ compiler... no
checking whether we are using gcc >= 4 C++ compiler... yes
checking whether to enable debugging information... no
checking whether to enable code coverage... no
checking if TIPC is available and supports nonblocking connect... no
checking for pthread_create in -lpthread... yes
checking for clock_gettime in -lrt... yes
checking whether C++ compiler supports -fvisibility=hidden... yes
checking whether C++ compiler supports dso visibility... yes
checking for asciidoc... no
checking for xmlto... no
checking whether to build documentation... no
checking whether to install manpages... yes
checking for suitable polling system... using epoll
checking for ANSI C header files... (cached) yes
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking time.h usability... yes
checking time.h presence... yes
checking for time.h... yes
checking for unistd.h... (cached) yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking stddef.h usability... yes
checking stddef.h presence... yes
checking for stddef.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking netinet/tcp.h usability... yes
checking netinet/tcp.h presence... yes
checking for netinet/tcp.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking ifaddrs.h usability... yes
checking ifaddrs.h presence... yes
checking for ifaddrs.h... yes
checking sys/uio.h usability... yes
checking sys/uio.h presence... yes
checking for sys/uio.h... yes
checking sys/eventfd.h usability... yes
checking sys/eventfd.h presence... yes
checking for sys/eventfd.h... yes
checking whether SO_PEERCRED is declared... yes
checking whether LOCAL_PEERCRED is declared... no
checking for stdbool.h that conforms to C99... yes
checking for _Bool... no
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking for size_t... yes
checking for ssize_t... yes
checking whether time.h and sys/time.h may both be included... yes
checking for uint32_t... yes
checking for working volatile... yes
checking for sodium... yes
checking "with_norm_ext = no"... checking how to enable additional warnings for C++ compiler... -Wall
checking how to turn warnings to errors in C++ compiler... -Werror
checking how to enable strict standards compliance in C++ compiler... -pedantic
checking return type of signal handlers... void
checking for perror... yes
checking for gettimeofday... yes
checking for clock_gettime... yes
checking for memset... yes
checking for socket... yes
checking for getifaddrs... yes
checking for freeifaddrs... yes
checking for fork... yes
checking alloca.h usability... yes
checking alloca.h presence... yes
checking for alloca.h... yes
checking whether SOCK_CLOEXEC is supported... yes
checking whether SO_KEEPALIVE is supported... yes
checking whether TCP_KEEPCNT is supported... yes
checking whether TCP_KEEPIDLE is supported... yes
checking whether TCP_KEEPINTVL is supported... yes
checking whether TCP_KEEPALIVE is supported... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/libzmq.pc
config.status: creating doc/Makefile
config.status: creating builds/msvc/Makefile
config.status: creating builds/redhat/zeromq.spec
config.status: creating src/platform.hpp
config.status: src/platform.hpp is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
$ make
Making all in doc
make[1]: Entering directory `/tmp/zeromq-build.aEGmvWZP/zeromq-4.1.3/doc'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/tmp/zeromq-build.aEGmvWZP/zeromq-4.1.3/doc'
make[1]: Entering directory `/tmp/zeromq-build.aEGmvWZP/zeromq-4.1.3'
  CXX    src/libzmq_la-address.lo
  CXX    src/libzmq_la-clock.lo
  CXX    src/libzmq_la-ctx.lo
  CXX    src/libzmq_la-curve_client.lo
  CXX    src/libzmq_la-curve_server.lo
src/curve_server.cpp: In constructor 'zmq::curve_server_t::curve_server_t(zmq::session_base_t*, const string&, const zmq::options_t&)':
src/curve_server.cpp:64:18: error: ignoring return value of 'int sodium_init()', declared with attribute warn_unused_result [-Werror=unused-result]
     sodium_init();
                  ^
cc1plus: all warnings being treated as errors
make[1]: *** [src/libzmq_la-curve_server.lo] Error 1
make[1]: Leaving directory `/tmp/zeromq-build.aEGmvWZP/zeromq-4.1.3'
make: *** [all-recursive] Error 1

I guess I'll try building with 1.0.5 for now.

@xaqq
Copy link
Member

xaqq commented Nov 5, 2015

This has been fixed in libzmq master, and has been backported to zeromq4.1.

It should work fine if you use the code from
https://github.com/zeromq/zeromq4-1

On Thu, Nov 5, 2015 at 7:12 PM, Ian Kirker notifications@github.com wrote:

Apologies if this is a duplicate: I had a quick search and didn't see any
related issues.

I'm trying to build release 4.1.3, with libsodium 1.0.6, using GCC 4.9.2,
and it appears that an attribute set on the sodium_init() function is
causing compilation to fail, as ZeroMQ appears not to assign or check the
value (I saw a few TODO comments mentioning that the value should be
assigned, too).

sodium_init() is now prototyped as:

SODIUM_EXPORTint sodium_init(void)
attribute ((warn_unused_result));

whereas in 1.0.5, it was just:

SODIUM_EXPORTint sodium_init(void);

So, now, when building, I get this error:

$ ./configure --with-libsodium
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking how to create a ustar tar archive... gnutar
checking whether make supports nested variables... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for gcc option to accept ISO C99... -std=gnu99
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking whether gcc -std=gnu99 and cc understand -c and -o together... yes
checking for a sed that does not truncate output... /usr/bin/sed
checking for gawk... (cached) gawk
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for xmlto... no
checking for asciidoc... no
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... (cached) /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc -std=gnu99... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... dlltool
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @file support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc -std=gnu99 object... ok
checking for sysroot... no
checking for mt... no
checking if : is a manifest tool... no
checking how to run the C preprocessor... gcc -std=gnu99 -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc -std=gnu99 supports -fno-rtti -fno-exceptions... no
checking for gcc -std=gnu99 option to produce PIC... -fPIC -DPIC
checking if gcc -std=gnu99 PIC flag -fPIC -DPIC works... yes
checking if gcc -std=gnu99 static flag -static works... yes
checking if gcc -std=gnu99 supports -c -o file.o... yes
checking if gcc -std=gnu99 supports -c -o file.o... (cached) yes
checking whether the gcc -std=gnu99 linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether the C compiler works... yes
checking whether we are using Intel C compiler... no
checking whether we are using Sun Studio C compiler... no
checking whether we are using clang C compiler... no
checking whether we are using gcc >= 4 C compiler... yes
checking whether the C++ compiler works... yes
checking whether we are using Intel C++ compiler... no
checking whether we are using Sun Studio C++ compiler... no
checking whether we are using clang C++ compiler... no
checking whether we are using gcc >= 4 C++ compiler... yes
checking whether to enable debugging information... no
checking whether to enable code coverage... no
checking if TIPC is available and supports nonblocking connect... no
checking for pthread_create in -lpthread... yes
checking for clock_gettime in -lrt... yes
checking whether C++ compiler supports -fvisibility=hidden... yes
checking whether C++ compiler supports dso visibility... yes
checking for asciidoc... no
checking for xmlto... no
checking whether to build documentation... no
checking whether to install manpages... yes
checking for suitable polling system... using epoll
checking for ANSI C header files... (cached) yes
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking time.h usability... yes
checking time.h presence... yes
checking for time.h... yes
checking for unistd.h... (cached) yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking stddef.h usability... yes
checking stddef.h presence... yes
checking for stddef.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking netinet/tcp.h usability... yes
checking netinet/tcp.h presence... yes
checking for netinet/tcp.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking ifaddrs.h usability... yes
checking ifaddrs.h presence... yes
checking for ifaddrs.h... yes
checking sys/uio.h usability... yes
checking sys/uio.h presence... yes
checking for sys/uio.h... yes
checking sys/eventfd.h usability... yes
checking sys/eventfd.h presence... yes
checking for sys/eventfd.h... yes
checking whether SO_PEERCRED is declared... yes
checking whether LOCAL_PEERCRED is declared... no
checking for stdbool.h that conforms to C99... yes
checking for Bool... no
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking for size_t... yes
checking for ssize_t... yes
checking whether time.h and sys/time.h may both be included... yes
checking for uint32_t... yes
checking for working volatile... yes
checking for sodium... yes
checking "with_norm_ext = no"... checking how to enable additional warnings for C++ compiler... -Wall
checking how to turn warnings to errors in C++ compiler... -Werror
checking how to enable strict standards compliance in C++ compiler... -pedantic
checking return type of signal handlers... void
checking for perror... yes
checking for gettimeofday... yes
checking for clock_gettime... yes
checking for memset... yes
checking for socket... yes
checking for getifaddrs... yes
checking for freeifaddrs... yes
checking for fork... yes
checking alloca.h usability... yes
checking alloca.h presence... yes
checking for alloca.h... yes
checking whether SOCK_CLOEXEC is supported... yes
checking whether SO_KEEPALIVE is supported... yes
checking whether TCP_KEEPCNT is supported... yes
checking whether TCP_KEEPIDLE is supported... yes
checking whether TCP_KEEPINTVL is supported... yes
checking whether TCP_KEEPALIVE is supported... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/libzmq.pc
config.status: creating doc/Makefile
config.status: creating builds/msvc/Makefile
config.status: creating builds/redhat/zeromq.spec
config.status: creating src/platform.hpp
config.status: src/platform.hpp is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
$ make
Making all in doc
make[1]: Entering directory /tmp/zeromq-build.aEGmvWZP/zeromq-4.1.3/doc' make[1]: Nothing to be done forall'.
make[1]: Leaving directory /tmp/zeromq-build.aEGmvWZP/zeromq-4.1.3/doc' make[1]: Entering directory/tmp/zeromq-build.aEGmvWZP/zeromq-4.1.3'
CXX src/libzmq_la-address.lo
CXX src/libzmq_la-clock.lo
CXX src/libzmq_la-ctx.lo
CXX src/libzmq_la-curve_client.lo
CXX src/libzmq_la-curve_server.lo
src/curve_server.cpp: In constructor 'zmq::curve_server_t::curve_server_t(zmq::session_base_t
, const string&, const zmq::options_t&)':
src/curve_server.cpp:64:18: error: ignoring return value of 'int sodium_init()', declared with attribute warn_unused_result [-Werror=unused-result]
sodium_init();
^
cc1plus: all warnings being treated as errors
make[1]: *_* [src/libzmq_la-curve_server.lo] Error 1
make[1]: Leaving directory `/tmp/zeromq-build.aEGmvWZP/zeromq-4.1.3'
make: *** [all-recursive] Error 1

I guess I'll try building with 1.0.5 for now.


Reply to this email directly or view it on GitHub
#1637.

Kapp Arnaud - Xaqq

@ikirker
Copy link
Author

ikirker commented Nov 5, 2015

@xaqq : Thanks, that does indeed build without problems. (I'm still getting a failure in the test test_filter_ipc but that's unrelated to this.)

Presumably there'll be a new point-release with the update soon?

@hintjens
Copy link
Member

hintjens commented Nov 5, 2015

Yes, I'll make a new release asap. You're not the first person to report
this. :)
On 5 Nov 2015 19:27, "Ian Kirker" notifications@github.com wrote:

@xaqq https://github.com/xaqq : Thanks, that does indeed build without
problems. (I'm still getting a failure in the test test_filter_ipc but
that's unrelated to this.

Presumably there'll be a new point-release with the update soon?


Reply to this email directly or view it on GitHub
#1637 (comment).

@mdrescher
Copy link

When is ASAP? ;-)

Same happens with zeroMQ and libSodium 1.0.7.

@hintjens
Copy link
Member

Ah, sorry, things came up. I'm putting it back on my planning.

On Thu, Dec 17, 2015 at 8:59 PM, mdrescher notifications@github.com wrote:

When is ASAP? ;-)

Same happens with zeroMQ and libSodium 1.0.7.


Reply to this email directly or view it on GitHub
#1637 (comment).

@mdrescher
Copy link

Great! Any idea on a release date for ZeroMQ 4.1.4?

I am in the meantime hacking the source code in curve_client.cpp and curve_server.cpp to handle the return value so that the compiler doesn't nag - not that that would be in any way an appropriate return value handling... :-)

@hintjens
Copy link
Member

I'll (aim to) make the 4.1.4 release this weekend.

On Thu, Dec 17, 2015 at 10:11 PM, mdrescher notifications@github.com
wrote:

Great! Any idea on a release date for ZeroMQ 4.1.4?

I am in the meantime hacking the source code in curve_client.cpp and
curve_server.cpp to handle the return value so that the compiler doesn't
nag - not that that would be in any way an appropriate return value
handling... :-)


Reply to this email directly or view it on GitHub
#1637 (comment).

@hintjens
Copy link
Member

OK, made a 4.1.4 release...

On Fri, Dec 18, 2015 at 9:06 AM, Barnie notifications@github.com wrote:

Until then...
ZeroMQ-4.1.3 + libsodium-1.0.5 = OK


Reply to this email directly or view it on GitHub
#1637 (comment).

@mdrescher
Copy link

Compiles perfectly well, installs well, and hwClient and hwServer work in harmony. :-)

Thanks!

@ikirker
Copy link
Author

ikirker commented Dec 18, 2015

Yep, that all seems to work. Thanks @hintjens. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants