mongofill / mongofill-hhvm

A mix of the original Mongofill extension + BSON implementation in C++
MIT License
32 stars 19 forks source link

Build fails with '_Decimal128' does not name a type #54

Open slashmili opened 8 years ago

slashmili commented 8 years ago

Testing on Ubuntu 14.04.3 LTS, HHVM 3.13.1 and the master of libbson

root@e347410b8ada:/tmp/mongofill-hhvm# ./build.sh

git submodule update --init
hhvm tools/merge.php
hphpize
** hphpize complete, now run `cmake . && make` to build, `make test` to test
cmake .
-- The C compiler identification is GNU 4.8.4
-- The CXX compiler identification is GNU 4.8.4
-- The ASM compiler identification is GNU
-- Found assembler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring for HHVM API version 20150212
-- bson Include dir: /usr/local/include/libbson-1.0
-- libbson library: /usr/local/lib/libbson-1.0.so
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/mongofill-hhvm
make
Scanning dependencies of target mongo
[ 33%] Building CXX object CMakeFiles/mongo.dir/src/bson.cpp.o
In file included from /usr/local/include/libbson-1.0/bson.h:33:0,
                 from /tmp/mongofill-hhvm/src/bson.cpp:3:
/usr/local/include/libbson-1.0/bson-decimal128.h:61:8: error: '_Decimal128' does not name a type
 static _Decimal128 BSON_INLINE
        ^
/usr/local/include/libbson-1.0/bson-decimal128.h:71:32: error: variable or field 'bson_Decimal128_to_decimal128' declared void
 bson_Decimal128_to_decimal128 (_Decimal128        decimal128,
                                ^
/usr/local/include/libbson-1.0/bson-decimal128.h:71:32: error: '_Decimal128' was not declared in this scope
/usr/local/include/libbson-1.0/bson-decimal128.h:72:50: error: expected primary-expression before '*' token
                                bson_decimal128_t *dec)
                                                  ^
/usr/local/include/libbson-1.0/bson-decimal128.h:72:51: error: 'dec' was not declared in this scope
                                bson_decimal128_t *dec)
                                                   ^
/usr/local/include/libbson-1.0/bson-decimal128.h:72:51: note: suggested alternative:
In file included from /usr/include/c++/4.8/ios:42:0,
                 from /usr/include/c++/4.8/istream:38,
                 from /usr/include/c++/4.8/sstream:38,
                 from /usr/include/c++/4.8/complex:45,
                 from /usr/include/boost/type_traits/is_complex.hpp:12,
                 from /usr/include/boost/type_traits.hpp:49,
                 from /usr/include/hphp/third-party/folly/Portability.h:300,
                 from /usr/include/hphp/third-party/folly/FBString.h:53,
                 from /usr/include/hphp/third-party/folly/Conv.h:27,
                 from /usr/include/hphp/third-party/folly/Format.h:24,
                 from /usr/include/hphp/util/assertions.h:28,
                 from /usr/include/hphp/runtime/base/countable.h:23,
                 from /usr/include/hphp/runtime/base/req-ptr.h:20,
                 from /usr/include/hphp/runtime/base/type-string.h:20,
                 from /usr/include/hphp/runtime/base/debuggable.h:19,
                 from /usr/include/hphp/runtime/ext/extension.h:21,
                 from /tmp/mongofill-hhvm/src/bson.cpp:1:
/usr/include/c++/4.8/bits/ios_base.h:939:3: note:   'std::dec'
   dec(ios_base& __base)
   ^
make[2]: *** [CMakeFiles/mongo.dir/src/bson.cpp.o] Error 1
make[1]: *** [CMakeFiles/mongo.dir/all] Error 2
make: *** [all] Error 2
gui-com-pt commented 8 years ago

I've it building including the typedefs for _Decimal128. You can check it here:https://github.com/mongofill/mongofill-hhvm/commit/ca7d944aa2bd03dcc13090745c650c86e6125840

Should this be a temporary fix or something required as it's from libbson and not the extension code itself?