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

Ubuntu 18.04 needs llvm to build mozjs_sys #22267

Closed
GPHemsley opened this issue Nov 25, 2018 · 3 comments
Closed

Ubuntu 18.04 needs llvm to build mozjs_sys #22267

GPHemsley opened this issue Nov 25, 2018 · 3 comments
Labels

Comments

@GPHemsley
Copy link

@GPHemsley GPHemsley commented Nov 25, 2018

When attempting to compile servo on Ubuntu 18.04, I encountered a number of errors when it reached the step of building mozjs_sys:

backend.mk:2160: warning: overriding recipe for target '../dist/system_wrappers/pixman.h'
backend.mk:1278: warning: ignoring old recipe for target '../dist/system_wrappers/pixman.h'
error: unknown argument: '-fno-sized-deallocation'
error: invalid value 'gnu++14' in '-std=gnu++14'
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:190:15: error: unknown type name 'char16_t'
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:194:1: error: C++ requires a type specifier for all declarations
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:194:22: error: use of undeclared identifier 'char16_t'
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:195:1: error: C++ requires a type specifier for all declarations
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:195:15: error: use of undeclared identifier 'char16_t'
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:195:30: error: use of undeclared identifier 'char16_t'
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:196:1: error: C++ requires a type specifier for all declarations
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:196:22: error: use of undeclared identifier 'u'
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:197:1: error: C++ requires a type specifier for all declarations
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:197:22: error: use of undeclared identifier 'u'
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_abs.h:101:3: error: unknown type name '__float128'
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_abs.h:102:7: error: unknown type name '__float128'
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/stdlib.h:54:12: error: target of using declaration conflicts with declaration already in scope
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_abs.h:102:3: note: target of using declaration
/usr/include/stdlib.h:837:12: note: conflicting declaration
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/TypeTraits.h:49:10: error: unknown type name 'constexpr'
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/TypeTraits.h:49:21: error: expected ';' at end of declaration list
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/TypeTraits.h:50:11: error: unknown type name 'T'
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/TypeTraits.h:101:36: error: use of undeclared identifier 'char16_t'
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/TypeTraits.h:182:35: warning: variadic templates are a C++11 extension [-Wc++11-extensions]
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/TypeTraits.h:267:27: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
fatal error: too many errors emitted, stopping now [-ferror-limit=]
error: unknown argument: '-fno-sized-deallocation', err: true
error: invalid value 'gnu++14' in '-std=gnu++14', err: true
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:190:15: error: unknown type name 'char16_t', err: true
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:194:1: error: C++ requires a type specifier for all declarations, err: true
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:194:22: error: use of undeclared identifier 'char16_t', err: true
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:195:1: error: C++ requires a type specifier for all declarations, err: true
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:195:15: error: use of undeclared identifier 'char16_t', err: true
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:195:30: error: use of undeclared identifier 'char16_t', err: true
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:196:1: error: C++ requires a type specifier for all declarations, err: true
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:196:22: error: use of undeclared identifier 'u', err: true
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:197:1: error: C++ requires a type specifier for all declarations, err: true
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/Char16.h:197:22: error: use of undeclared identifier 'u', err: true
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_abs.h:101:3: error: unknown type name '__float128', err: true
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_abs.h:102:7: error: unknown type name '__float128', err: true
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/stdlib.h:54:12: error: target of using declaration conflicts with declaration already in scope, err: true
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/TypeTraits.h:49:10: error: unknown type name 'constexpr', err: true
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/TypeTraits.h:49:21: error: expected ';' at end of declaration list, err: true
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/TypeTraits.h:50:11: error: unknown type name 'T', err: true
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/TypeTraits.h:101:36: error: use of undeclared identifier 'char16_t', err: true
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/TypeTraits.h:182:35: warning: variadic templates are a C++11 extension [-Wc++11-extensions], err: false
/home/gphemsley/Development/Servo/servo/servo/target/debug/build/mozjs_sys-efce9ed11fb4e734/out/dist/include/mozilla/TypeTraits.h:267:27: warning: rvalue references are a C++11 extension [-Wc++11-extensions], err: false
fatal error: too many errors emitted, stopping now [-ferror-limit=], err: true
thread 'main' panicked at 'Should generate JSAPI bindings OK: ()', libcore/result.rs:1009:5
note: Run with `RUST_BACKTRACE=1` for a backtrace.

One of the pages I found while searching (which I've now misplaced) was about encountering a similar error on macOS, and the apparent fix involved installing llvm through brew.

After finding no other useful solution, I decided to attempt sudo apt-get install llvm-dev. When rerunning the build, I was able to get past the point I used to error at. This seems to suggest that llvm or llvm-dev is a prerequisite for building servo, at least on Ubuntu 18.04. (I didn't have llvm installed, either, so I can't say for sure which one is the dependency.)

The bootstrap and/or README should probably be updated to indicate that.

@CYBAI
Copy link
Collaborator

@CYBAI CYBAI commented Nov 25, 2018

Maybe it's good to send a PR to update the README :)

Ref: https://github.com/servo/servo#on-debian-based-linuxes

@dralley
Copy link
Contributor

@dralley dralley commented Mar 31, 2020

This looks like it has been done, https://github.com/servo/servo#on-debian-based-linuxes

Can be closed.

@CYBAI
Copy link
Collaborator

@CYBAI CYBAI commented Mar 31, 2020

Thanks! llvm-dev is added in the readme now!

@CYBAI CYBAI closed this Mar 31, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
3 participants
You can’t perform that action at this time.