carla-simulator / carla

Open-source simulator for autonomous driving research.
http://carla.org
MIT License
11.12k stars 3.58k forks source link

[v0.9.14, Ubuntu 20.04] `make setup` fails on libproj build #6776

Closed jimmysoda closed 11 months ago

jimmysoda commented 1 year ago

CARLA version: 0.9.14

Platform/OS: Ubuntu 20.04

Problem you have experienced:

make setup fails when building libproj. It appears that the standard library cannot be found. There are also errors about an Add method being redeclared, but I don't know if those are derived from the previous errors.

[45/205] Building CXX object src/CMakeFiles/proj.dir/proj_json_streaming_writer.cpp.o
FAILED: src/CMakeFiles/proj.dir/proj_json_streaming_writer.cpp.o
/usr/bin/clang++-10 -DMUTEX_pthread -DPROJ_LIB=\"/home/jsoto/workspace/SyntheticSensorSuite/platforms/CARLA/adapter/carla-luminar/Build/proj-install/share/proj\" -I/home/jsoto/workspace/SyntheticSensorSuite/platforms/CARLA/adapter/carla-luminar/Build/proj-src/src -I/home/jsoto/workspace/SyntheticSensorSuite/platforms/CARLA/adapter/carla-luminar/Build/proj-src/include -I/home/jsoto/workspace/SyntheticSensorSuite/platforms/CARLA/adapter/carla-luminar/Build/proj-src/build/src -I/home/jsoto/workspace/SyntheticSensorSuite/platforms/CARLA/adapter/carla-luminar/Build/sqlite-install/include -std=c++14 -fPIC -O3 -DNDEBUG -fvisibility=hidden -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-declarations -Wformat -Wformat-security -Wfloat-conversion -std=c++11 -MD -MT src/CMakeFiles/proj.dir/proj_json_streaming_writer.cpp.o -MF src/CMakeFiles/proj.dir/proj_json_streaming_writer.cpp.o.d -o src/CMakeFiles/proj.dir/proj_json_streaming_writer.cpp.o -c /home/jsoto/workspace/SyntheticSensorSuite/platforms/CARLA/adapter/carla-luminar/Build/proj-src/src/proj_json_streaming_writer.cpp
In file included from /home/jsoto/workspace/SyntheticSensorSuite/platforms/CARLA/adapter/carla-luminar/Build/proj-src/src/proj_json_streaming_writer.cpp:34:
/home/jsoto/workspace/SyntheticSensorSuite/platforms/CARLA/adapter/carla-luminar/Build/proj-src/src/proj_json_streaming_writer.hpp:42:9: error: no type named 'int64_t' in namespace 'std'; did you mean simply 'int64_t'?
typedef std::int64_t GIntBig;
        ^~~~~~~~~~~~
        int64_t
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h:27:19: note: 'int64_t' declared here
typedef __int64_t int64_t;
                  ^
In file included from /home/jsoto/workspace/SyntheticSensorSuite/platforms/CARLA/adapter/carla-luminar/Build/proj-src/src/proj_json_streaming_writer.cpp:34:
/home/jsoto/workspace/SyntheticSensorSuite/platforms/CARLA/adapter/carla-luminar/Build/proj-src/src/proj_json_streaming_writer.hpp:43:9: error: no type named 'uint64_t' in namespace 'std'; did you mean simply 'uint64_t'?
typedef std::uint64_t GUInt64;
        ^~~~~~~~~~~~~
        uint64_t
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:27:20: note: 'uint64_t' declared here
typedef __uint64_t uint64_t;
                   ^
In file included from /home/jsoto/workspace/SyntheticSensorSuite/platforms/CARLA/adapter/carla-luminar/Build/proj-src/src/proj_json_streaming_writer.cpp:34:
/home/jsoto/workspace/SyntheticSensorSuite/platforms/CARLA/adapter/carla-luminar/Build/proj-src/src/proj_json_streaming_writer.hpp:93:10: error: class member cannot be redeclared
    void Add(GIntBig nVal);
         ^
/home/jsoto/workspace/SyntheticSensorSuite/platforms/CARLA/adapter/carla-luminar/Build/proj-src/src/proj_json_streaming_writer.hpp:91:10: note: previous definition is here
    void Add(int nVal) { Add(static_cast<GIntBig>(nVal)); }
         ^
/home/jsoto/workspace/SyntheticSensorSuite/platforms/CARLA/adapter/carla-luminar/Build/proj-src/src/proj_json_streaming_writer.hpp:94:10: error: class member cannot be redeclared
    void Add(GUInt64 nVal);
         ^
/home/jsoto/workspace/SyntheticSensorSuite/platforms/CARLA/adapter/carla-luminar/Build/proj-src/src/proj_json_streaming_writer.hpp:91:10: note: previous definition is here
    void Add(int nVal) { Add(static_cast<GIntBig>(nVal)); }
         ^
/home/jsoto/workspace/SyntheticSensorSuite/platforms/CARLA/adapter/carla-luminar/Build/proj-src/src/proj_json_streaming_writer.cpp:45:9: error: no type named 'uint64_t' in namespace 'std'; did you mean simply 'uint64_t'?
typedef std::uint64_t GUIntBig;
        ^~~~~~~~~~~~~
        uint64_t
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:27:20: note: 'uint64_t' declared here
typedef __uint64_t uint64_t;
                   ^
/home/jsoto/workspace/SyntheticSensorSuite/platforms/CARLA/adapter/carla-luminar/Build/proj-src/src/proj_json_streaming_writer.cpp:238:30: error: redefinition of 'Add'
void CPLJSonStreamingWriter::Add(GIntBig nVal)
                             ^
/home/jsoto/workspace/SyntheticSensorSuite/platforms/CARLA/adapter/carla-luminar/Build/proj-src/src/proj_json_streaming_writer.hpp:91:10: note: previous definition is here
    void Add(int nVal) { Add(static_cast<GIntBig>(nVal)); }
         ^
6 errors generated.
[62/205] Generating proj.db
ninja: build stopped: subcommand failed.
make: *** [Util/BuildTools/Linux.mk:137: setup] Error 1

What you expected to happen:

make setup succeeds after installing the software build requirements for Ubuntu 20.04 from the CARLA 0.9.14 documentation.

Steps to reproduce:

Install software build requirements for Ubuntu 20.04 from the CARLA 0.9.14 documentation.

sudo apt-add-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal main"
sudo apt-get install build-essential clang-10 lld-10 g++-7 cmake ninja-build libvulkan1 python python-dev python3-dev python3-pip libpng-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync libxml2-dev git
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-10/bin/clang++ 180 &&
sudo update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-10/bin/clang 180

Call make setup.

make setup

Other information (documentation you consulted, workarounds you tried):

Remove LLVM xenial repository from /etc/sources.list

I had previously run the following commands from the CARLA 0.9.14 software build requirements, but overlooked that the added repository was for xenial.

sudo apt-get update &&
sudo apt-get install wget software-properties-common &&
sudo add-apt-repository ppa:ubuntu-toolchain-r/test &&
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - &&
sudo apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main" &&
sudo apt-get update

This resulted in an uncommented xenial entry between two focal entries in my /etc/sources.list. I commented out this xenial entry:

deb http://apt.llvm.org/focal/ llvm-toolchain-focal-15 main
# deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-15 main
#deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main
# deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main
deb http://apt.llvm.org/focal/ llvm-toolchain-focal main
# deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal main

and ran the install again:

sudo apt update
sudo apt-get install build-essential clang-10 lld-10 g++-7 cmake ninja-build libvulkan1 python python-dev python3-dev python3-pip libpng-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync libxml2-dev git

Install newer libstdc++ to enable libc++ build

This is my current clang++ -v output:

$ clang++ -v
clang version 10.0.0-4ubuntu1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/10
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/13
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/9
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/13
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/13
Candidate multilib: .;@m64
Selected multilib: .;@m64
Found CUDA installation: /usr/local/cuda-11.4, version 7.0

I overcame an earlier problem with the libc++ build by installing libstdc++13-dev based on the comments from #6139.

Installed packages

This is not a fresh Ubuntu 20.04 install. I've used this machine to build other software projects, so some of their dependencies may be interfering with the CARLA 0.9.14 dependencies build (make setup).

These are the clang apt packages that I currently have installed in my Ubuntu 20.04 system:

$ apt list --installed | grep "clang"

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

clang-10/focal,now 1:10.0.0-4ubuntu1 amd64 [installed]
clang-15/unknown,now 1:15.0.7~++20230611095202+8dfdcc7b7bf6-1~exp1~20230611095247.111 amd64 [installed,automatic]
clang-8/focal,now 1:8.0.1-9 amd64 [installed]
libclang-common-10-dev/focal,now 1:10.0.0-4ubuntu1 amd64 [installed,automatic]
libclang-common-15-dev/unknown,unknown,now 1:15.0.7~++20230611095202+8dfdcc7b7bf6-1~exp1~20230611095247.111 all [installed,automatic]
libclang-common-8-dev/focal,now 1:8.0.1-9 amd64 [installed,automatic]
libclang-cpp10/focal,now 1:10.0.0-4ubuntu1 amd64 [installed,automatic]
libclang-cpp15/unknown,now 1:15.0.7~++20230611095202+8dfdcc7b7bf6-1~exp1~20230611095247.111 amd64 [installed,automatic]
libclang-rt-15-dev/unknown,now 1:15.0.7~++20230611095202+8dfdcc7b7bf6-1~exp1~20230611095247.111 amd64 [installed,automatic]
libclang1-10/focal,now 1:10.0.0-4ubuntu1 amd64 [installed]
libclang1-15/unknown,now 1:15.0.7~++20230611095202+8dfdcc7b7bf6-1~exp1~20230611095247.111 amd64 [installed,automatic]
libclang1-8/focal,now 1:8.0.1-9 amd64 [installed,automatic]

These are the apt packages for libc++:

$ apt list --installed | grep "libc++"

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libc++abi-10-dev/focal,now 1:10.0.0-4ubuntu1 amd64 [installed]
libc++abi1-10/focal,now 1:10.0.0-4ubuntu1 amd64 [installed,automatic]

These are the apt packages for libstdc++:

$ apt list --installed | grep "libstdc++"

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libstdc++-13-dev/focal,now 13.1.0-8ubuntu1~20.04.2 amd64 [installed]
libstdc++-7-dev/focal,now 7.5.0-6ubuntu2 amd64 [installed]
libstdc++-8-dev/focal,now 8.4.0-3ubuntu2 amd64 [installed]
libstdc++-9-dev/focal,now 9.3.0-10ubuntu2 amd64 [installed]
libstdc++6/focal,now 13.1.0-8ubuntu1~20.04.2 amd64 [installed,automatic]
libstdc++6/focal,now 13.1.0-8ubuntu1~20.04.2 i386 [installed,automatic]

And these are the apt packages for gcc:

 $ apt list --installed | grep "gcc"

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

gcc-10-base/focal-updates,focal-security,now 10.5.0-1ubuntu1~20.04 amd64 [installed,automatic]
gcc-10-base/focal-updates,focal-security,now 10.5.0-1ubuntu1~20.04 i386 [installed,automatic]
gcc-10/focal-updates,focal-security,now 10.5.0-1ubuntu1~20.04 amd64 [installed]
gcc-13-base/focal,now 13.1.0-8ubuntu1~20.04.2 amd64 [installed,automatic]
gcc-13-base/focal,now 13.1.0-8ubuntu1~20.04.2 i386 [installed,automatic]
gcc-7-base/focal,now 7.5.0-6ubuntu2 amd64 [installed,automatic]
gcc-7/focal,now 7.5.0-6ubuntu2 amd64 [installed,automatic]
gcc-8-base/focal,now 8.4.0-3ubuntu2 amd64 [installed,automatic]
gcc-9-base/focal,now 9.3.0-10ubuntu2 amd64 [installed]
gcc-9/focal,now 9.3.0-10ubuntu2 amd64 [installed]
gcc/focal,now 4:9.3.0-1ubuntu2 amd64 [installed,automatic]
lib32gcc-s1/focal,now 13.1.0-8ubuntu1~20.04.2 amd64 [installed,automatic]
libgcc-10-dev/focal-updates,focal-security,now 10.5.0-1ubuntu1~20.04 amd64 [installed,automatic]
libgcc-13-dev/focal,now 13.1.0-8ubuntu1~20.04.2 amd64 [installed,automatic]
libgcc-7-dev/focal,now 7.5.0-6ubuntu2 amd64 [installed,automatic]
libgcc-8-dev/focal,now 8.4.0-3ubuntu2 amd64 [installed,automatic]
libgcc-9-dev/focal,now 9.3.0-10ubuntu2 amd64 [installed]
libgcc-s1/focal,now 13.1.0-8ubuntu1~20.04.2 amd64 [installed,automatic]
libgcc-s1/focal,now 13.1.0-8ubuntu1~20.04.2 i386 [installed,automatic]

Any guidance will be greatly appreciated!

Edit: Fixed typo

Dragonking3x commented 11 months ago

Open the file Util/BuildTools/Setup.sh and change these 2 version lines

BOOST_VERSION=1.80.0
PROJ_VERSION=proj-9.3.0

No idea if it helps, but after changing these lines, I could use "make PythonAPI" without an error

jimmysoda commented 11 months ago

Thanks for the reply @Dragonking3x.

I suspect that the problem was in my system configuration. I bypassed the problem by using a VS Code devcontainer.

devcontainer.json

Dockerfile