velox: Build errors: error: unknown type name 'StringPiece'

Problem description

Seeing build errors on latest main. CC: @pedroerp @majetideepak @kgpai

In file included from /Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-build/src/planner/binder/tableref/ub_duckdb_bind_tableref.cpp:8:
In file included from /Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/src/planner/binder/tableref/bind_table_function.cpp:22:
In file included from /Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/src/include/duckdb/function/table/read_csv.hpp:13:
In file included from /Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp:18:
In file included from /Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/src/include/duckdb/common/multi_file_reader_options.hpp:12:
/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/src/include/duckdb/common/hive_partitioning.hpp:28:75: error: use of undeclared identifier 'duckdb_re2'; did you mean 'duckdb_hll'?
        DUCKDB_API static std::map<string, string> Parse(const string &filename, duckdb_re2::RE2 &regex);
                                                                                 ^~~~~~~~~~
                                                                                 duckdb_hll
/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/src/include/duckdb/common/types/hyperloglog.hpp:15:11: note: 'duckdb_hll' declared here
namespace duckdb_hll {
          ^
In file included from /Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-build/src/planner/binder/tableref/ub_duckdb_bind_tableref.cpp:8:
In file included from /Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/src/planner/binder/tableref/bind_table_function.cpp:22:
In file included from /Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/src/include/duckdb/function/table/read_csv.hpp:13:
In file included from /Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp:18:
In file included from /Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/src/include/duckdb/common/multi_file_reader_options.hpp:12:
/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/src/include/duckdb/common/hive_partitioning.hpp:28:75: error: no type named 'RE2' in namespace 'duckdb_hll'; did you mean simply 'RE2'?
        DUCKDB_API static std::map<string, string> Parse(const string &filename, duckdb_re2::RE2 &regex);
                                                                                 ^~~~~~~~~~~~~~~
                                                                                 RE2
/usr/local/include/re2/re2.h:1011:12: note: 'RE2' declared here
using re2::RE2;
           ^
2 errors generated.

System information

Velox System Info v0.0.2 Commit: 6d4b6ebecc16415c071008b7655a7c8abe6a7ddc CMake Version: 3.26.4 System: Darwin-23.1.0 Arch: x86_64 C++ Compiler: /Library/Developer/CommandLineTools/usr/bin/c++ C++ Compiler Version: 15.0.0.15000040 C Compiler: /Library/Developer/CommandLineTools/usr/bin/cc C Compiler Version: 15.0.0.15000040 CMake Prefix Path: /Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk/usr;/usr/local;/usr;/;/usr/local/Cellar/cmake/3.26.4;/usr/local;/usr/X11R6;/usr/pkg;/opt;/sw;/opt/local

Conda Env

# packages in environment at /usr/local/Caskroom/miniconda/base:
#
# Name                    Version                   Build  Channel
brotlipy                  0.7.0           py310hca72f7f_1002
bzip2                     1.0.8                h1de35cc_0
ca-certificates           2023.01.10           hecd8cb5_0
certifi                   2022.12.7       py310hecd8cb5_0
cffi                      1.15.1          py310h6c40b1e_3
charset-normalizer        2.0.4              pyhd3eb1b0_0
chevron                   0.14.0                   pypi_0    pypi
conda                     23.1.0          py310hecd8cb5_0
conda-content-trust       0.1.3           py310hecd8cb5_0
conda-package-handling    2.0.2           py310hecd8cb5_0
conda-package-streaming   0.7.0           py310hecd8cb5_0
cryptography              38.0.4          py310hf6deb26_0
idna                      3.4             py310hecd8cb5_0
libffi                    3.4.2                hecd8cb5_6
ncurses                   6.4                  hcec6c5f_0
openssl                   1.1.1s               hca72f7f_0
pip                       22.3.1          py310hecd8cb5_0
pluggy                    1.0.0           py310hecd8cb5_1
pycosat                   0.6.4           py310hca72f7f_0
pycparser                 2.21               pyhd3eb1b0_0
pyopenssl                 22.0.0             pyhd3eb1b0_0
pysocks                   1.7.1           py310hecd8cb5_0
python                    3.10.9               h218abb5_0
python.app                3               py310hca72f7f_0
pyyaml                    6.0                      pypi_0    pypi
readline                  8.2                  hca72f7f_0
regex                     2022.10.31               pypi_0    pypi
requests                  2.28.1          py310hecd8cb5_0
ruamel.yaml               0.17.21         py310hca72f7f_0
ruamel.yaml.clib          0.2.6           py310hca72f7f_1
setuptools                65.6.3          py310hecd8cb5_0
six                       1.16.0             pyhd3eb1b0_1
sqlite                    3.40.1               h880c91c_0
tk                        8.6.12               h5d9f67b_0
toolz                     0.12.0          py310hecd8cb5_0
tqdm                      4.64.1          py310hecd8cb5_0
tzdata                    2022g                h04d1e81_0
urllib3                   1.26.14         py310hecd8cb5_0
wheel                     0.37.1             pyhd3eb1b0_0
xz                        5.2.10               h6c40b1e_1
zlib                      1.2.13               h4dc903c_0
zstandard                 0.18.0          py310hca72f7f_0

CMake log

-- Build files have been written to: /Users/mbasmanova/cpp/velox-1/_build/debug
/Library/Developer/CommandLineTools/usr/bin/make build BUILD_DIR=debug -j 16
cmake --build _build/debug -j 16
[7/1484] Building CXX object _deps/duckdb-build/src/optimizer/rule/CMakeFiles/duckdb_optimizer_rules.dir/ub_duckdb_optimizer_rules.cpp.o
FAILED: _deps/duckdb-build/src/optimizer/rule/CMakeFiles/duckdb_optimizer_rules.dir/ub_duckdb_optimizer_rules.cpp.o
ccache /Library/Developer/CommandLineTools/usr/bin/c++ -DDUCKDB -DDUCKDB_MAIN_LIBRARY -DFOLLY_HAVE_INT128_T=1 -I/usr/local/include -I/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/src/include -I/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/third_party/fsst -I/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/third_party/fmt/include -I/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/third_party/hyperloglog -I/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/third_party/fastpforlib -I/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/third_party/fast_float -I/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/third_party/re2 -I/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/third_party/miniz -I/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/third_party/utf8proc/include -I/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/third_party/miniparquet -I/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/third_party/concurrentqueue -I/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/third_party/pcg -I/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/third_party/tdigest -I/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/third_party/mbedtls/include -I/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/third_party/jaro_winkler -mavx2 -mfma -mavx -mf16c -mlzcnt -std=c++17 -mbmi2 -fvisibility=hidden -fvisibility-inlines-hidden -D USE_VELOX_COMMON_BASE -D HAS_UNCAUGHT_EXCEPTIONS -Wall -Wextra -Wno-unused        -Wno-unused-parameter        -Wno-sign-compare        -Wno-ignored-qualifiers        -Wno-range-loop-analysis          -Wno-mismatched-tags          -Wno-nullability-completeness -g -g -O0 -DDEBUG -Wall   -Werror  -Wunused -Werror=vla -Wnarrowing -pedantic -Wextra -Wno-unused-parameter -Wno-redundant-move -Wexit-time-destructors -std=c++11 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk -fPIC -fcolor-diagnostics -MD -MT _deps/duckdb-build/src/optimizer/rule/CMakeFiles/duckdb_optimizer_rules.dir/ub_duckdb_optimizer_rules.cpp.o -MF _deps/duckdb-build/src/optimizer/rule/CMakeFiles/duckdb_optimizer_rules.dir/ub_duckdb_optimizer_rules.cpp.o.d -o _deps/duckdb-build/src/optimizer/rule/CMakeFiles/duckdb_optimizer_rules.dir/ub_duckdb_optimizer_rules.cpp.o -c /Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-build/src/optimizer/rule/ub_duckdb_optimizer_rules.cpp
In file included from /Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-build/src/optimizer/rule/ub_duckdb_optimizer_rules.cpp:16:
In file included from /Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/src/optimizer/rule/regex_optimizations.cpp:8:
/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/third_party/re2/re2/regexp.h:196:28: error: unknown type name 'StringPiece'; did you mean 're2::StringPiece'?
  void set_error_arg(const StringPiece& error_arg) { error_arg_ = error_arg; }
                           ^~~~~~~~~~~
                           re2::StringPiece
/usr/local/include/re2/stringpiece.h:39:7: note: 're2::StringPiece' declared here
class StringPiece {
      ^
In file included from /Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-build/src/optimizer/rule/ub_duckdb_optimizer_rules.cpp:16:
In file included from /Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/src/optimizer/rule/regex_optimizations.cpp:8:
/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/third_party/re2/re2/regexp.h:199:9: error: unknown type name 'StringPiece'; did you mean 're2::StringPiece'?
  const StringPiece& error_arg() const { return error_arg_; }
        ^~~~~~~~~~~
        re2::StringPiece
/usr/local/include/re2/stringpiece.h:39:7: note: 're2::StringPiece' declared here
class StringPiece {
      ^
In file included from /Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-build/src/optimizer/rule/ub_duckdb_optimizer_rules.cpp:16:
In file included from /Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/src/optimizer/rule/regex_optimizations.cpp:8:
/Users/mbasmanova/cpp/velox-1/_build/debug/_deps/duckdb-src/third_party/re2/re2/regexp.h:215:3: error: unknown type name 'StringPiece'; did you mean 're2::StringPiece'?
  StringPiece error_arg_;  // Piece of regexp containing syntax error.
  ^~~~~~~~~~~
  re2::StringPiece
/usr/local/include/re2/stringpiece.h:39:7: note: 're2::StringPiece' declared here
class StringPiece {
      ^

About this issue

  • Original URL
  • State: open
  • Created 7 months ago
  • Comments: 44 (28 by maintainers)

Most upvoted comments

I followed Deepak’s advice to build and install newer folly. That solved the problem.

https://github.com/facebookincubator/velox/issues/7235#issuecomment-1823121838

@mbasmanova With the Folly upgrade, we likely have to upgrade fmt as well. We currently use fmt 8.0.1 an ancient version. There is an issue open to upgrade https://github.com/facebookincubator/velox/issues/7896 I believe you should be able to fix your issue by upgrading to fmt 8.1.0. But this is not tested. I commented on the issue above.

There is a safe way: You can specify re2_SOURCE=BUNDLED in the environment and run CMake again.

I am taking a look as well.