Closed Tectu closed 3 years ago
@Tectu I got something. I can't compile if I use msys2's boost package installed via pacman, I get the file too big error (the boost installed via msys is 1.75.0 not sure if that matters). If I just set BOOST_ROOT env variable to point to an extracted version of one of these (which is also what the CI does) then it works (on my machine :p).
I gave this a try. Results:
boost 1.74.0
: build successfulboost 1.75.0
: build failed with problem indicated in this issueboost 1.76.0
: build successfulWell that's weird because the CI can build it even with 1.75.0. Must be something up with msys2's packaging of that version?
Shouldn't be related to the msys2 package. With all three versions I downloaded the archives from boost.org
and used BOOST_ROOT
accordingly. I verified each time that the output of cmake
reports back the expected boost version.
Is it acceptable for the library not to build with boost 1.75.0 on mingw? Can msys2 install a later version currently, since if not I guess thats a no
No problem for my side not to support boost 1.75.0
. However, I see two issues with that:
find_package()
does not seem to allow specifying invalid/non-supported versions. Only required minimum or exact versions.1.75.0
or whether we're just "lucky" because the file structuring or some default options changed and future boost versions might trigger the same problem.We can always add custom logic to the cmake scripts to error when boost 1.75.0
is found but that would be specific to the MinGW/Msys2 situation. Given that the build simply fails we might just document this accordingly instead. Might be the more proper solution.
In general this situation just triggers some alarm bells. What do you think?
Agreed, it could very easily be a coincidental fix. Especially since I can't find anything in the changelogs to suggest this was an issue they specifically addressed (although it might be buried somewhere in a boost lib other than beast). I don't like it but I'm not sure we can fix this since I don't even know what causes the issue in the first place, other than its probably something to do with the template stuff introduced in #14.
I did look at the diffs between 1.75 and 1.76 for beast and they did change a bunch of stuff around tls, that might've simplified the templates a bit and allowed it to build but thats just guesswork.
Could connection
be implemented without CRTP? I'm wondering if connection_t
(variant of all the derivatives of connection) might've caused this. Might be worth trying it if it can be simply done just to see. We do need to pin the type down somewhere so it can be passed across the inheritance boundry of endpoint_http
and/or stored somewhere to actually send messages with
As discussed, the best thing would be to add CI capabilities for building this library with MinGW to catch problems like this. I've created #27 for that.
Since merging #14 I am unable to build using MinGW.
Environment:
malloy-example-server-session
(with added-> std::variant<response<>>
return type on router handlers)It seems like @0x00002a is able to build according to https://github.com/Tectu/malloy/pull/18#issuecomment-867245169
Using
make
:Using
ninja
:As @0x00002a mentioned it might be worth separating things out into dedicated libraries for server & client. I fully agree that this should be done in the future. However, as I understand, the problem is based on the resulting translation unit(s) exceeding limits and I don't think that separating the resulting library components will affect that?