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

error: implicitly-declared ‘constexpr rocksdb::FileDescriptor::FileDescriptor(const rocksdb::FileDescriptor&)’ is deprecated [-Werror=deprecated-copy] #484

Closed
juju4 opened this issue May 4, 2020 · 3 comments

Comments

@juju4
Copy link

juju4 commented May 4, 2020

Trying to compile ardb on latest Ubuntu 20.04

quick jmalloc ownership fix

--- src/Makefile.orig   2020-05-04 22:39:25.611484510 +0000
+++ src/Makefile        2020-05-04 22:40:27.072414086 +0000
@@ -317,7 +317,7 @@
 $(JEMALLOC_PATH): ${JEMALLOC_FILE}
        echo ">>>>> Unpacking JEMALLOC" && \
        cd ${LIB_PATH} && \
-       tar jxf ${JEMALLOC_FILE} && \
+       tar jxf ${JEMALLOC_FILE} --no-same-owner && \
        echo "<<<<< Done unpacking JEMALLOC"
 
 ${JEMALLOC_FILE}:

after

$ make
[...]
libtool: link: (cd ".libs" && rm -f "libsnappy.so.1" && ln -s "libsnappy.so.1.3.1" "libsnappy.so.1")
libtool: link: (cd ".libs" && rm -f "libsnappy.so" && ln -s "libsnappy.so.1.3.1" "libsnappy.so")
libtool: link: ar cru .libs/libsnappy.a  snappy.o snappy-sinksource.o snappy-stubs-internal.o snappy-c.o
ar: `u' modifier ignored since `D' is the default (see `U')
libtool: link: ranlib .libs/libsnappy.a
libtool: link: ( cd ".libs" && rm -f "libsnappy.la" && ln -s "../libsnappy.la" "libsnappy.la" )
make[2]: Leaving directory '/var/_ail/ARDB/deps/snappy-1.1.4'
<<<<< Done building SNAPPY
>>>>> Building ROCKSDB
make[2]: Entering directory '/var/_ail/ARDB/deps/rocksdb-5.14.2'
  GEN      util/build_version.cc
  GEN      util/build_version.cc
  CC       db/builder.o
In file included from ./db/range_del_aggregator.h:16,
                 from ./db/memtable.h:19,
                 from ./db/memtable_list.h:17,
                 from ./db/column_family.h:17,
                 from ./db/version_set.h:31,
                 from ./db/compaction.h:11,
                 from ./db/compaction_iterator.h:12,
                 from db/builder.cc:16:
./db/version_edit.h: In instantiation of ‘constexpr std::pair<_T1, _T2>::pair(_U1&&, const _T2&) [with _U1 = int&; typename std::enable_if<std::_PCC<true, _T1, _T2>::_MoveCopyPair<true, _U1, _T2>(), bool>::type <anonymous> = true; _T1 = int; _T2 = rocksdb::FileMetaData]’:
/usr/include/c++/9/ext/new_allocator.h:147:4:   required from ‘void __gnu_cxx::new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = std::pair<int, rocksdb::FileMetaData>; _Args = {int&, const rocksdb::FileMetaData&}; _Tp = std::pair<int, rocksdb::FileMetaData>]’
/usr/include/c++/9/bits/alloc_traits.h:484:4:   required from ‘static void std::allocator_traits<std::allocator<_CharT> >::construct(std::allocator_traits<std::allocator<_CharT> >::allocator_type&, _Up*, _Args&& ...) [with _Up = std::pair<int, rocksdb::FileMetaData>; _Args = {int&, const rocksdb::FileMetaData&}; _Tp = std::pair<int, rocksdb::FileMetaData>; std::allocator_traits<std::allocator<_CharT> >::allocator_type = std::allocator<std::pair<int, rocksdb::FileMetaData> >]’
/usr/include/c++/9/bits/vector.tcc:115:30:   required from ‘void std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {int&, const rocksdb::FileMetaData&}; _Tp = std::pair<int, rocksdb::FileMetaData>; _Alloc = std::allocator<std::pair<int, rocksdb::FileMetaData> >]’
./db/version_edit.h:232:37:   required from here
./db/version_edit.h:76:8: error: implicitly-declared ‘constexpr rocksdb::FileDescriptor::FileDescriptor(const rocksdb::FileDescriptor&)’ is deprecated [-Werror=deprecated-copy]
   76 | struct FileMetaData {
      |        ^~~~~~~~~~~~
./db/version_edit.h:47:19: note: because ‘rocksdb::FileDescriptor’ has user-provided ‘rocksdb::FileDescriptor& rocksdb::FileDescriptor::operator=(const rocksdb::FileDescriptor&)’
   47 |   FileDescriptor& operator=(const FileDescriptor& fd) {
      |                   ^~~~~~~~
In file included from /usr/include/c++/9/bits/stl_algobase.h:64,
                 from /usr/include/c++/9/bits/char_traits.h:39,
                 from /usr/include/c++/9/string:40,
                 from ./db/builder.h:9,
                 from db/builder.cc:10:
/usr/include/c++/9/bits/stl_pair.h:312:51: note: synthesized method ‘rocksdb::FileMetaData::FileMetaData(const rocksdb::FileMetaData&)’ first required here
  312 |        : first(std::forward<_U1>(__x)), second(__y) { }
      |                                                   ^
cc1plus: all warnings being treated as errors
make[2]: *** [Makefile:1879: db/builder.o] Error 1
make[2]: Leaving directory '/var/_ail/ARDB/deps/rocksdb-5.14.2'
make[1]: *** [Makefile:401: /var/_ail/ARDB/src/../deps/rocksdb-5.14.2/librocksdb.a] Error 2
make[1]: Leaving directory '/var/_ail/ARDB/src'
make: *** [Makefile:4: all] Error 2
$  gcc --version
gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

seems related to a gcc-9 change
https://gcc.gnu.org/gcc-9/changes.html
grpc/grpc#19570
GPUOpen-Drivers/AMDVLK#131

@juju4
Copy link
Author

juju4 commented May 6, 2020

Found workaround upstream
facebook/rocksdb#5303
facebook/rocksdb#6715

need
CXXFLAGS='-Wno-error=deprecated-copy -Wno-error=pessimizing-move -Wno-error=class-memaccess'

should be fully addressed with current 6.8.1 rocksdb release

@juju4 juju4 closed this as completed May 6, 2020
@juju4
Copy link
Author

juju4 commented May 6, 2020

not fully complete...
compilation fails at the end

  CCLD     column_aware_encoding_exp
collect2: error: ld returned 1 exit status
make: *** [Makefile:1467: column_aware_encoding_exp] Error 1

@juju4
Copy link
Author

juju4 commented May 10, 2020

correction.
with clean environment and few more unrelated fix, it works
https://travis-ci.org/github/juju4/ansible-ail-framework/jobs/685295595

kaij added a commit to kaij/outbackcdx that referenced this issue Nov 3, 2020
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

1 participant