hobbes: Build fails on ignored return value

I’m stuck building hobbes outside of the Ubuntu Linux CI environment. I’m also running Linux but using the Nix package manager. Nix builds software in isolate which helps with reliability and reproducibility. It’s available on Linux and macOS.

I can test multiple combinations of GCC and LLVM versions in Nix, but most of them fail on db/signals.C where a return vaule is being ignored according to the compiler. Here is the verbose output for GCC 5.5 and LLVM 3.5:

these derivations will be built:
  /nix/store/qyvypzxa995560zgccn2r07f1d9psmm5-hobbes.drv
building '/nix/store/qyvypzxa995560zgccn2r07f1d9psmm5-hobbes.drv'...
unpacking sources
unpacking source archive /nix/store/j2wn47ky8zb1lnxvgagp4f58zfqs65ia-hobbes
source root is hobbes
patching sources
configuring
Re-run cmake no build system arguments
-- The C compiler identification is GNU 5.5.0
-- The CXX compiler identification is GNU 5.5.0
-- Check for working C compiler: /nix/store/6ivqy3cygxpn3nbwm6isx80hgcbk2dh6-gcc-wrapper-5.5.0/bin/gcc
-- Check for working C compiler: /nix/store/6ivqy3cygxpn3nbwm6isx80hgcbk2dh6-gcc-wrapper-5.5.0/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /nix/store/6ivqy3cygxpn3nbwm6isx80hgcbk2dh6-gcc-wrapper-5.5.0/bin/g++
-- Check for working CXX compiler: /nix/store/6ivqy3cygxpn3nbwm6isx80hgcbk2dh6-gcc-wrapper-5.5.0/bin/g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found ZLIB: /nix/store/ylpi31dwsgm9c9rndp0j5b4na749d97z-zlib-1.2.11/lib/libz.so (found version "1.2.11")
-- Found readline: /nix/store/y5w0ifg4kqskzqx958bhyhqcdfglzfrq-readline-6.3p08-dev/include
-- Looking for cbreak in /nix/store/3cz3xgnghkpy41ab9hcj7011sqbrpg4n-ncurses-6.1-20190112/lib/libncurses.so
-- Looking for cbreak in /nix/store/3cz3xgnghkpy41ab9hcj7011sqbrpg4n-ncurses-6.1-20190112/lib/libncurses.so - found
-- Found Curses: /nix/store/3cz3xgnghkpy41ab9hcj7011sqbrpg4n-ncurses-6.1-20190112/lib/libncurses.so
-- llvm libs: /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMJIT.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMExecutionEngine.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMipo.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMVectorize.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMX86Disassembler.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMX86AsmParser.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMX86CodeGen.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMSelectionDAG.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMAsmPrinter.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMCodeGen.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMScalarOpts.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMInstCombine.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMTransformUtils.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMipa.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMAnalysis.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMTarget.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMX86Desc.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMObject.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMMCParser.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMBitReader.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMCore.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMX86Info.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMX86AsmPrinter.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMMC.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMX86Utils.so /nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib/libLLVMSupport.so
-- llvm ldflags: -L/nix/store/gpla85b2p4y6lk0dvwywcl5xahpjimzx-llvm-3.5.2/lib
-- llvm syslibs: -lrt -ldl -ltinfo -lpthread -lz
-- Found PythonInterp: /nix/store/gk0lrrvqz491xn0mgrshzgvazx4rghl2-python-2.7.17/bin/python (found version "2.7.17")
-- Configuring done
-- Generating done
-- Build files have been written to: /build/hobbes
building
build flags: SHELL=/nix/store/xb062l4b76zyhq6grqf4iyfdikkpg8fl-bash-4.4-p23/bin/bash
/nix/store/af4js9rv5cnxs0ig0vfqbb0arh2n0bfy-cmake-3.15.5/bin/cmake -S/build/hobbes -B/build/hobbes --check-build-system CMakeFiles/Makefile.cmake 0
/nix/store/af4js9rv5cnxs0ig0vfqbb0arh2n0bfy-cmake-3.15.5/bin/cmake -E cmake_progress_start /build/hobbes/CMakeFiles /build/hobbes/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/build/hobbes'
make -f CMakeFiles/hobbes-pic.dir/build.make CMakeFiles/hobbes-pic.dir/depend
make[2]: Entering directory '/build/hobbes'
cd /build/hobbes && /nix/store/af4js9rv5cnxs0ig0vfqbb0arh2n0bfy-cmake-3.15.5/bin/cmake -E cmake_depends "Unix Makefiles" /build/hobbes /build/hobbes /build/hobbes /build/hobbes /build/hobbes/CMakeFiles/hobbes-pic.dir/DependInfo.cmake --color=
Dependee "/build/hobbes/CMakeFiles/hobbes-pic.dir/DependInfo.cmake" is newer than depender "/build/hobbes/CMakeFiles/hobbes-pic.dir/depend.internal".
Dependee "/build/hobbes/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/build/hobbes/CMakeFiles/hobbes-pic.dir/depend.internal".
Scanning dependencies of target hobbes-pic
make[2]: Leaving directory '/build/hobbes'
make -f CMakeFiles/hobbes-pic.dir/build.make CMakeFiles/hobbes-pic.dir/build
make[2]: Entering directory '/build/hobbes'
[  0%] Building CXX object CMakeFiles/hobbes-pic.dir/lib/hobbes/boot/gen/boot.C.o
/nix/store/6ivqy3cygxpn3nbwm6isx80hgcbk2dh6-gcc-wrapper-5.5.0/bin/g++  -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I/build/hobbes/include  -Werror=old-style-cast -Werror -Wall -Wextra -Winit-self -Wreturn-type -Wunused-variable -Wsign-compare -Warray-bounds -Wunknown-pragmas -Wuninitialized -Wstrict-aliasing -Wunused-value -Wunused-label -Wswitch -Wcast-align -Wctor-dtor-privacy -Wmissing-noreturn -Wunused-parameter -Wreorder -fPIC   -std=gnu++11 -o CMakeFiles/hobbes-pic.dir/lib/hobbes/boot/gen/boot.C.o -c /build/hobbes/lib/hobbes/boot/gen/boot.C
[  1%] Building CXX object CMakeFiles/hobbes-pic.dir/lib/hobbes/db/bindings.C.o
/nix/store/6ivqy3cygxpn3nbwm6isx80hgcbk2dh6-gcc-wrapper-5.5.0/bin/g++  -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I/build/hobbes/include  -Werror=old-style-cast -Werror -Wall -Wextra -Winit-self -Wreturn-type -Wunused-variable -Wsign-compare -Warray-bounds -Wunknown-pragmas -Wuninitialized -Wstrict-aliasing -Wunused-value -Wunused-label -Wswitch -Wcast-align -Wctor-dtor-privacy -Wmissing-noreturn -Wunused-parameter -Wreorder -fPIC   -std=gnu++11 -o CMakeFiles/hobbes-pic.dir/lib/hobbes/db/bindings.C.o -c /build/hobbes/lib/hobbes/db/bindings.C
[  1%] Building CXX object CMakeFiles/hobbes-pic.dir/lib/hobbes/db/cbindings.C.o
/nix/store/6ivqy3cygxpn3nbwm6isx80hgcbk2dh6-gcc-wrapper-5.5.0/bin/g++  -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I/build/hobbes/include  -Werror=old-style-cast -Werror -Wall -Wextra -Winit-self -Wreturn-type -Wunused-variable -Wsign-compare -Warray-bounds -Wunknown-pragmas -Wuninitialized -Wstrict-aliasing -Wunused-value -Wunused-label -Wswitch -Wcast-align -Wctor-dtor-privacy -Wmissing-noreturn -Wunused-parameter -Wreorder -fPIC   -std=gnu++11 -o CMakeFiles/hobbes-pic.dir/lib/hobbes/db/cbindings.C.o -c /build/hobbes/lib/hobbes/db/cbindings.C
[  2%] Building CXX object CMakeFiles/hobbes-pic.dir/lib/hobbes/db/file.C.o
/nix/store/6ivqy3cygxpn3nbwm6isx80hgcbk2dh6-gcc-wrapper-5.5.0/bin/g++  -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I/build/hobbes/include  -Werror=old-style-cast -Werror -Wall -Wextra -Winit-self -Wreturn-type -Wunused-variable -Wsign-compare -Warray-bounds -Wunknown-pragmas -Wuninitialized -Wstrict-aliasing -Wunused-value -Wunused-label -Wswitch -Wcast-align -Wctor-dtor-privacy -Wmissing-noreturn -Wunused-parameter -Wreorder -fPIC   -std=gnu++11 -o CMakeFiles/hobbes-pic.dir/lib/hobbes/db/file.C.o -c /build/hobbes/lib/hobbes/db/file.C
[  2%] Building CXX object CMakeFiles/hobbes-pic.dir/lib/hobbes/db/series.C.o
/nix/store/6ivqy3cygxpn3nbwm6isx80hgcbk2dh6-gcc-wrapper-5.5.0/bin/g++  -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I/build/hobbes/include  -Werror=old-style-cast -Werror -Wall -Wextra -Winit-self -Wreturn-type -Wunused-variable -Wsign-compare -Warray-bounds -Wunknown-pragmas -Wuninitialized -Wstrict-aliasing -Wunused-value -Wunused-label -Wswitch -Wcast-align -Wctor-dtor-privacy -Wmissing-noreturn -Wunused-parameter -Wreorder -fPIC   -std=gnu++11 -o CMakeFiles/hobbes-pic.dir/lib/hobbes/db/series.C.o -c /build/hobbes/lib/hobbes/db/series.C
[  3%] Building CXX object CMakeFiles/hobbes-pic.dir/lib/hobbes/db/signals.C.o
/nix/store/6ivqy3cygxpn3nbwm6isx80hgcbk2dh6-gcc-wrapper-5.5.0/bin/g++  -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I/build/hobbes/include  -Werror=old-style-cast -Werror -Wall -Wextra -Winit-self -Wreturn-type -Wunused-variable -Wsign-compare -Warray-bounds -Wunknown-pragmas -Wuninitialized -Wstrict-aliasing -Wunused-value -Wunused-label -Wswitch -Wcast-align -Wctor-dtor-privacy -Wmissing-noreturn -Wunused-parameter -Wreorder -fPIC   -std=gnu++11 -o CMakeFiles/hobbes-pic.dir/lib/hobbes/db/signals.C.o -c /build/hobbes/lib/hobbes/db/signals.C
/build/hobbes/lib/hobbes/db/signals.C: In lambda function:
/build/hobbes/lib/hobbes/db/signals.C:105:47: error: ignoring return value of 'ssize_t read(int, void*, size_t)', declared with attribute warn_unused_result [-Werror=unused-result]
         read(fd, event, sizeof(inotify_event));
                                               ^
/build/hobbes/lib/hobbes/db/signals.C:107:44: error: ignoring return value of 'ssize_t read(int, void*, size_t)', declared with attribute warn_unused_result [-Werror=unused-result]
           read(fd, event->name, event->len);
                                            ^
cc1plus: all warnings being treated as errors
make[2]: *** [CMakeFiles/hobbes-pic.dir/build.make:128: CMakeFiles/hobbes-pic.dir/lib/hobbes/db/signals.C.o] Error 1
make[2]: Leaving directory '/build/hobbes'
make[1]: *** [CMakeFiles/Makefile2:80: CMakeFiles/hobbes-pic.dir/all] Error 2
make[1]: Leaving directory '/build/hobbes'
make: *** [Makefile:141: all] Error 2
builder for '/nix/store/qyvypzxa995560zgccn2r07f1d9psmm5-hobbes.drv' failed with exit code 2
error: build of '/nix/store/qyvypzxa995560zgccn2r07f1d9psmm5-hobbes.drv' failed

For those interested, this is the Nix derivation I’m using to build hobbes:

{ pkgs ? import (fetchTarball https://github.com/nixos/nixpkgs-channels/archive/nixos-unstable.tar.gz) {} }:

pkgs.stdenv.mkDerivation {
  name = "hobbes";
  src = ./.;

  nativeBuildInputs = with pkgs; [
    cmake
    gcc5
    llvm_35
    ncurses
    python27
    readline
    zlib
  ];

  configurePhase = ''
    cmake .
  '';

  VERBOSE = "1";
}

You can install Nix, add the contents above as a default.nix file in the root of the project, and then run nix-build.

If you can point me in the right direction, I’ll be more than happy to contribute with a fix. I’m currently using hobbes inside a docker container running Ubuntu which is not ideal.

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 18 (9 by maintainers)

Most upvoted comments

Weird that the build passed even with the flag.