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

wt config fails #626

Closed
Shadowrom2020 opened this issue Feb 2, 2017 · 3 comments
Closed

wt config fails #626

Shadowrom2020 opened this issue Feb 2, 2017 · 3 comments
Labels
category:port-bug The issue is with a library, which is something the port should already support

Comments

@Shadowrom2020
Copy link
Contributor

Package: wt:x64-windows
Vcpkg version: 0.0.71-1888c7294fb5323acef33dae26f39bf7c2d4dfa7

wt config fails due to not found boost libraries. Boost installed without error.

Find Boost patch was applied sucessfully.

config-x64-windows-rel-err.txt
patch-x64-windows-0-err.txt

@Shadowrom2020
Copy link
Contributor Author

Seems to be related to #601

@ras0219-msft
Copy link
Contributor

wt config now finds the boost libraries, but it fails due to a compilation error [1]. A string literal is being passed to a pile of templates that eventually want a char * const, not a char const *. The compiler says "no, you can't modify a string literal" and fails to compile the code.

I believe this is an upstream issue with either boost 1.63 or wt. I'm currently trying out a build using boost 1.62 & VS2017 to isolate the problem. Regardless, we will probably want to locally solve this issue by either performing a const_cast<> to remove the const-ness of the literal (not great) or to allocate a temporary array on the stack that is mutable (I'm not sure of the lifetime consequences).

[1] The relevant section:

4>D:\src\vcpkg\installed\x86-windows\include\boost/phoenix/function/detail/cpp03/preprocessed/function_operator_10.hpp(91): error C2664: 'boost::phoenix::actor<boost::proto::exprns_::basic_expr<Tag,Args,6>> boost::phoenix::expr_ext<boost::phoenix::actor,Tag,H,boost::phoenix::actor<boost::spirit::argument<1>>,boost::phoenix::actor<boost::spirit::argument<2>>,boost::phoenix::actor<boost::spirit::argument<3>>,char *,fs_error_tag>::make(const ErrorReporting<Iterator> &,const boost::phoenix::actor<boost::spirit::argument<1>> &,const boost::phoenix::actor<boost::spirit::argument<2>> &,const boost::phoenix::actor<boost::spirit::argument<3>> &,char *const ,const fs_error_tag &)': cannot convert argument 5 from 'const char [17]' to 'char *const ' [D:\src\vcpkg\buildtrees\wt\x86-windows-rel\src\wt.vcxproj]
                 with
                 [
                     Tag=boost::phoenix::detail::tag::function_eval,
                     Args=boost::proto::argsns_::list6<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<ErrorReporting<std::_String_const_iterator<std::_String_val<std::_Simple_types<char>>>>>,0>,boost::phoenix::actor<boost::spirit::argument<1>>,boost::phoenix::actor<boost::spirit::argument<2>>,boost::phoenix::actor<boost::spirit::argument<3>>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<char *>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<fs_error_tag>,0>>,
                     H=ErrorReporting<std::_String_const_iterator<std::_String_val<std::_Simple_types<char>>>>,
                     Iterator=std::_String_const_iterator<std::_String_val<std::_Simple_types<char>>>
                 ] (compiling source file D:\src\vcpkg\buildtrees\wt\src\wt-3.3.6\src\Wt\Render\CssParser.C)
         D:\src\vcpkg\installed\x86-windows\include\boost/phoenix/function/detail/cpp03/preprocessed/function_operator_10.hpp(91): note: Conversion loses qualifiers (compiling source file D:\src\vcpkg\buildtrees\wt\src\wt-3.3.6\src\Wt\Render\CssParser.C)
         D:\src\vcpkg\buildtrees\wt\src\wt-3.3.6\src\Wt\Render\CssParser.C(375): note: see reference to function template instantiation 'const boost::phoenix::actor<boost::proto::exprns_::basic_expr<Tag,Args,6>> boost::phoenix::function<ErrorReporting<Iterator>>::operator ()<boost::spirit::_2_type,boost::spirit::_3_type,boost::phoenix::actor<boost::spirit::argument<3>>,char[17],fs_error_tag>(const A0 &,const A1 &,const A2 &,const A3 (&),const A4 &) const' being compiled
                 with
                 [
                     Tag=boost::phoenix::detail::tag::function_eval,
                     Args=boost::proto::argsns_::list6<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<ErrorReporting<std::_String_const_iterator<std::_String_val<std::_Simple_types<char>>>>>,0>,boost::phoenix::actor<boost::spirit::argument<1>>,boost::phoenix::actor<boost::spirit::argument<2>>,boost::phoenix::actor<boost::spirit::argument<3>>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<char *>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<fs_error_tag>,0>>,
                     Iterator=std::_String_const_iterator<std::_String_val<std::_Simple_types<char>>>,
                     A0=boost::spirit::_2_type,
                     A1=boost::spirit::_3_type,
                     A2=boost::phoenix::actor<boost::spirit::argument<3>>,
                     A3=char [17],
                     A4=fs_error_tag
                 ]
         D:\src\vcpkg\buildtrees\wt\src\wt-3.3.6\src\Wt\Render\CssParser.C(373): note: see reference to function template instantiation 'const boost::phoenix::actor<boost::proto::exprns_::basic_expr<Tag,Args,6>> boost::phoenix::function<ErrorReporting<Iterator>>::operator ()<boost::spirit::_2_type,boost::spirit::_3_type,boost::phoenix::actor<boost::spirit::argument<3>>,char[17],fs_error_tag>(const A0 &,const A1 &,const A2 &,const A3 (&),const A4 &) const' being compiled
                 with
                 [
                     Tag=boost::phoenix::detail::tag::function_eval,
                     Args=boost::proto::argsns_::list6<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<ErrorReporting<std::_String_const_iterator<std::_String_val<std::_Simple_types<char>>>>>,0>,boost::phoenix::actor<boost::spirit::argument<1>>,boost::phoenix::actor<boost::spirit::argument<2>>,boost::phoenix::actor<boost::spirit::argument<3>>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<char *>,0>,boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term<fs_error_tag>,0>>,
                     Iterator=std::_String_const_iterator<std::_String_val<std::_Simple_types<char>>>,
                     A0=boost::spirit::_2_type,
                     A1=boost::spirit::_3_type,
                     A2=boost::phoenix::actor<boost::spirit::argument<3>>,
                     A3=char [17],
                     A4=fs_error_tag
                 ]
         D:\src\vcpkg\buildtrees\wt\src\wt-3.3.6\src\Wt\Render\CssParser.C(215): note: while compiling class template member function 'CssGrammer<std::_String_const_iterator<std::_String_val<std::_Simple_types<char>>>>::CssGrammer(void)'
         D:\src\vcpkg\buildtrees\wt\src\wt-3.3.6\src\Wt\Render\CssParser.C(449): note: see reference to function template instantiation 'CssGrammer<std::_String_const_iterator<std::_String_val<std::_Simple_types<char>>>>::CssGrammer(void)' being compiled
         D:\src\vcpkg\buildtrees\wt\src\wt-3.3.6\src\Wt\Render\CssParser.C(449): note: see reference to class template instantiation 'CssGrammer<std::_String_const_iterator<std::_String_val<std::_Simple_types<char>>>>' being compiled

@ras0219-msft
Copy link
Contributor

Ok, I was able to build wt 3.3.6 successfully against boost 1.62 using VS2017. Therefore, it was probably a change in Boost phoenix that has caused the problem; perhaps some function that previously accepted string constants was changed.

An lo! It has been already found and fixed upstream: emweb/wt@b944cdc.

We therefore just need to download this commit as a patch and apply it to 3.3.6.

@ras0219-msft ras0219-msft added the category:port-bug The issue is with a library, which is something the port should already support label Feb 3, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category:port-bug The issue is with a library, which is something the port should already support
Projects
None yet
Development

No branches or pull requests

2 participants