Navigation Menu

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

Unbreak build against Boost 1.68 #4682

Closed
wants to merge 1 commit into from
Closed

Unbreak build against Boost 1.68 #4682

wants to merge 1 commit into from

Conversation

jbeich
Copy link

@jbeich jbeich commented Aug 5, 2018

After boostorg/multiprecision@06d03409c048 build fails. See error log. CC @alexdupre (downstream maintainer).

I don't use Solidity.

@codecov
Copy link

codecov bot commented Aug 5, 2018

Codecov Report

Merging #4682 into develop will increase coverage by 0.25%.
The diff coverage is 100%.

Impacted file tree graph

@@             Coverage Diff             @@
##           develop    #4682      +/-   ##
===========================================
+ Coverage    87.57%   87.82%   +0.25%     
===========================================
  Files          313      313              
  Lines        30813    30968     +155     
  Branches      3662     3626      -36     
===========================================
+ Hits         26984    27198     +214     
+ Misses        2577     2537      -40     
+ Partials      1252     1233      -19
Flag Coverage Δ
#all 87.82% <100%> (+0.25%) ⬆️
#syntax ?
#type_checker 28.14% <0%> (?)
Impacted Files Coverage Δ
libevmasm/Assembly.cpp 90.38% <100%> (+0.25%) ⬆️
libjulia/optimiser/ExpressionSimplifier.cpp 80% <0%> (-20%) ⬇️
libdevcore/CommonIO.cpp 30% <0%> (-9.73%) ⬇️
libsolidity/ast/AST.cpp 80% <0%> (-3.04%) ⬇️
libsolidity/analysis/ReferencesResolver.cpp 86.6% <0%> (-1.5%) ⬇️
solc/CommandLineInterface.cpp 61.48% <0%> (-0.85%) ⬇️
libsolidity/codegen/CompilerUtils.cpp 90.77% <0%> (-0.41%) ⬇️
libsolidity/analysis/TypeChecker.cpp 83.83% <0%> (-0.4%) ⬇️
libsolidity/ast/ASTJsonConverter.cpp 92.22% <0%> (-0.35%) ⬇️
libsolidity/ast/Types.cpp 85.95% <0%> (-0.27%) ⬇️
... and 32 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 551343a...0b31055. Read the comment docs.

@@ -264,7 +264,7 @@ Json::Value Assembly::assemblyJSON(StringMap const& _sourceCodes) const
createJsonValue("PUSH [ErrorTag]", i.location().start, i.location().end, ""));
else
collection.append(
createJsonValue("PUSH [tag]", i.location().start, i.location().end, string(i.data())));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think your version creates a hex string while it previously created a decimal string, so I think this should either use i.data().str() or to_string(i.data()) whichever works.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is also showing there are no tests against this piece of code.

Copy link
Contributor

@chriseth chriseth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use a different function.

@chriseth
Copy link
Contributor

chriseth commented Aug 6, 2018

@jbeich could you tell us how to test this build against your environment - perhaps with an appropriate docker image? Thanks!

@axic axic self-assigned this Aug 8, 2018
libevmasm/Assembly.cpp:267:74: error: no matching conversion for functional-style cast from 'const dev::u256' (aka 'const number<boost::multiprecision::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >') to 'std::__1::string' (aka 'basic_string<char, char_traits<char>, allocator<char> >')
                                        createJsonValue("PUSH [tag]", i.location().start, i.location().end, string(i.data())));
                                                                                                            ^~~~~~~~~~~~~~~
/usr/include/c++/v1/string:760:40: note: candidate constructor not viable: no known conversion from 'const dev::u256' (aka 'const number<boost::multiprecision::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >') to 'const std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::allocator_type' (aka 'const std::__1::allocator<char>') for 1st argument
    _LIBCPP_INLINE_VISIBILITY explicit basic_string(const allocator_type& __a)
                                       ^
/usr/include/c++/v1/string:767:5: note: candidate constructor not viable: no known conversion from 'const dev::u256' (aka 'const number<boost::multiprecision::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >') to 'const std::__1::basic_string<char>' for 1st argument
    basic_string(const basic_string& __str);
    ^
/usr/include/c++/v1/string:772:5: note: candidate constructor not viable: no known conversion from 'const dev::u256' (aka 'const number<boost::multiprecision::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >') to 'std::__1::basic_string<char>' for 1st argument
    basic_string(basic_string&& __str)
    ^
/usr/include/c++/v1/string:782:31: note: candidate constructor not viable: no known conversion from 'const dev::u256' (aka 'const number<boost::multiprecision::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >') to 'const char *' for 1st argument
    _LIBCPP_INLINE_VISIBILITY basic_string(const _CharT* __s);
                              ^
/usr/include/c++/v1/string:804:5: note: candidate constructor not viable: no known conversion from 'const dev::u256' (aka 'const number<boost::multiprecision::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >') to 'std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__self_view' (aka 'basic_string_view<char, std::__1::char_traits<char> >') for 1st argument
    basic_string(__self_view __sv);
    ^
/usr/include/c++/v1/string:815:5: note: candidate constructor not viable: no known conversion from 'const dev::u256' (aka 'const number<boost::multiprecision::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >') to 'initializer_list<char>' for 1st argument
    basic_string(initializer_list<_CharT> __il);
    ^
/usr/include/c++/v1/string:800:9: note: candidate constructor template not viable: requires at least 3 arguments, but 1 was provided
        basic_string(const _Tp& __t, size_type __pos, size_type __n,
        ^
/usr/include/c++/v1/string:809:9: note: candidate constructor template not viable: requires 2 arguments, but 1 was provided
        basic_string(_InputIterator __first, _InputIterator __last);
        ^
/usr/include/c++/v1/string:812:9: note: candidate constructor template not viable: requires 3 arguments, but 1 was provided
        basic_string(_InputIterator __first, _InputIterator __last, const allocator_type& __a);
        ^
/usr/include/c++/v1/string:757:31: note: candidate constructor not viable: requires 0 arguments, but 1 was provided
    _LIBCPP_INLINE_VISIBILITY basic_string()
                              ^
/usr/include/c++/v1/string:768:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
    basic_string(const basic_string& __str, const allocator_type& __a);
    ^
/usr/include/c++/v1/string:780:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
    basic_string(basic_string&& __str, const allocator_type& __a);
    ^
/usr/include/c++/v1/string:784:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
    basic_string(const _CharT* __s, const _Allocator& __a);
    ^
/usr/include/c++/v1/string:786:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
    basic_string(const _CharT* __s, size_type __n);
    ^
/usr/include/c++/v1/string:790:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
    basic_string(size_type __n, _CharT __c);
    ^
/usr/include/c++/v1/string:806:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
    basic_string(__self_view __sv, const _Allocator& __a);
    ^
/usr/include/c++/v1/string:817:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
    basic_string(initializer_list<_CharT> __il, const _Allocator& __a);
    ^
/usr/include/c++/v1/string:788:5: note: candidate constructor not viable: requires 3 arguments, but 1 was provided
    basic_string(const _CharT* __s, size_type __n, const _Allocator& __a);
    ^
/usr/include/c++/v1/string:792:5: note: candidate constructor not viable: requires 3 arguments, but 1 was provided
    basic_string(size_type __n, _CharT __c, const _Allocator& __a);
    ^
/usr/include/c++/v1/string:796:5: note: candidate constructor not viable: requires at least 2 arguments, but 1 was provided
    basic_string(const basic_string& __str, size_type __pos,
    ^
/usr/include/c++/v1/string:793:5: note: candidate constructor not viable: requires at least 3 arguments, but 1 was provided
    basic_string(const basic_string& __str, size_type __pos, size_type __n,
    ^
libevmasm/Assembly.cpp:293:66: error: no matching conversion for functional-style cast from 'const dev::u256' (aka 'const number<boost::multiprecision::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >') to 'std::__1::string' (aka 'basic_string<char, char_traits<char>, allocator<char> >')
                                createJsonValue("tag", i.location().start, i.location().end, string(i.data())));
                                                                                             ^~~~~~~~~~~~~~~
/usr/include/c++/v1/string:760:40: note: candidate constructor not viable: no known conversion from 'const dev::u256' (aka 'const number<boost::multiprecision::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >') to 'const std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::allocator_type' (aka 'const std::__1::allocator<char>') for 1st argument
    _LIBCPP_INLINE_VISIBILITY explicit basic_string(const allocator_type& __a)
                                       ^
/usr/include/c++/v1/string:767:5: note: candidate constructor not viable: no known conversion from 'const dev::u256' (aka 'const number<boost::multiprecision::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >') to 'const std::__1::basic_string<char>' for 1st argument
    basic_string(const basic_string& __str);
    ^
/usr/include/c++/v1/string:772:5: note: candidate constructor not viable: no known conversion from 'const dev::u256' (aka 'const number<boost::multiprecision::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >') to 'std::__1::basic_string<char>' for 1st argument
    basic_string(basic_string&& __str)
    ^
/usr/include/c++/v1/string:782:31: note: candidate constructor not viable: no known conversion from 'const dev::u256' (aka 'const number<boost::multiprecision::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >') to 'const char *' for 1st argument
    _LIBCPP_INLINE_VISIBILITY basic_string(const _CharT* __s);
                              ^
/usr/include/c++/v1/string:804:5: note: candidate constructor not viable: no known conversion from 'const dev::u256' (aka 'const number<boost::multiprecision::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >') to 'std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__self_view' (aka 'basic_string_view<char, std::__1::char_traits<char> >') for 1st argument
    basic_string(__self_view __sv);
    ^
/usr/include/c++/v1/string:815:5: note: candidate constructor not viable: no known conversion from 'const dev::u256' (aka 'const number<boost::multiprecision::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >') to 'initializer_list<char>' for 1st argument
    basic_string(initializer_list<_CharT> __il);
    ^
/usr/include/c++/v1/string:800:9: note: candidate constructor template not viable: requires at least 3 arguments, but 1 was provided
        basic_string(const _Tp& __t, size_type __pos, size_type __n,
        ^
/usr/include/c++/v1/string:809:9: note: candidate constructor template not viable: requires 2 arguments, but 1 was provided
        basic_string(_InputIterator __first, _InputIterator __last);
        ^
/usr/include/c++/v1/string:812:9: note: candidate constructor template not viable: requires 3 arguments, but 1 was provided
        basic_string(_InputIterator __first, _InputIterator __last, const allocator_type& __a);
        ^
/usr/include/c++/v1/string:757:31: note: candidate constructor not viable: requires 0 arguments, but 1 was provided
    _LIBCPP_INLINE_VISIBILITY basic_string()
                              ^
/usr/include/c++/v1/string:768:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
    basic_string(const basic_string& __str, const allocator_type& __a);
    ^
/usr/include/c++/v1/string:780:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
    basic_string(basic_string&& __str, const allocator_type& __a);
    ^
/usr/include/c++/v1/string:784:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
    basic_string(const _CharT* __s, const _Allocator& __a);
    ^
/usr/include/c++/v1/string:786:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
    basic_string(const _CharT* __s, size_type __n);
    ^
/usr/include/c++/v1/string:790:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
    basic_string(size_type __n, _CharT __c);
    ^
/usr/include/c++/v1/string:806:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
    basic_string(__self_view __sv, const _Allocator& __a);
    ^
/usr/include/c++/v1/string:817:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
    basic_string(initializer_list<_CharT> __il, const _Allocator& __a);
    ^
/usr/include/c++/v1/string:788:5: note: candidate constructor not viable: requires 3 arguments, but 1 was provided
    basic_string(const _CharT* __s, size_type __n, const _Allocator& __a);
    ^
/usr/include/c++/v1/string:792:5: note: candidate constructor not viable: requires 3 arguments, but 1 was provided
    basic_string(size_type __n, _CharT __c, const _Allocator& __a);
    ^
/usr/include/c++/v1/string:796:5: note: candidate constructor not viable: requires at least 2 arguments, but 1 was provided
    basic_string(const basic_string& __str, size_type __pos,
    ^
/usr/include/c++/v1/string:793:5: note: candidate constructor not viable: requires at least 3 arguments, but 1 was provided
    basic_string(const basic_string& __str, size_type __pos, size_type __n,
    ^
2 errors generated.
@jbeich
Copy link
Author

jbeich commented Aug 8, 2018

@jbeich could you tell us how to test this build against your environment - perhaps with an appropriate docker image? Thanks!

FreeBSD jail with Boost 1.68.0 update applied. Solidity is built via poudriere i.e., like a regular downstream package.

I'm not familar with Linux or macOS.

@axic
Copy link
Member

axic commented Aug 8, 2018

Created tests and added this change to #4772. Thank you for reporting this problem and creating a PR.

@axic axic closed this in #4772 Aug 8, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants