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

[service] Installer packages can't be used in older enviroments #213

Closed
Croydon opened this issue Oct 21, 2019 · 17 comments · Fixed by #3328
Closed

[service] Installer packages can't be used in older enviroments #213

Croydon opened this issue Oct 21, 2019 · 17 comments · Fixed by #3328

Comments

@Croydon
Copy link
Contributor

Croydon commented Oct 21, 2019

For some reason installers build by CCI seems to use the new CXX11 ABI which then doesn't run in GCC 4.9 containers. Am I missing something here or is this effectively a bug? 🤔

https://travis-ci.com/bincrafters/conan-sdl2/jobs/247592499#L1801

// @ericLemanissier @SSE4

@Croydon
Copy link
Contributor Author

Croydon commented Oct 21, 2019

Discussion started here: #125 (comment)

@ericLemanissier
Copy link
Contributor

another occurrence of this problem: https://travis-ci.com/bincrafters/conan-xkbcommon/jobs/258981515#L1062
This happens probably because ninja recipe deletes self.info.settings.compiler. Maybe it it could be fixed by deleting all subkeys of self.settings.compiler except libcxx ?

@danimtb
Copy link
Member

danimtb commented Nov 25, 2019

I believe that's not going to solve the problem, as compiler.libcxx does not model glibc but the C++ standard library

@ericLemanissier
Copy link
Contributor

the missing symbol is _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEm which is demangled as std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::reserve(unsigned long) so it definitely looks like a c++ standard library issue to me. Platforms with gcc 4.9 cannot have C++11 version of the abi, because it was introduced in gcc 5.1

@uilianries
Copy link
Member

The installer packages should use the centos6 docker image... We need to check it.

@uilianries
Copy link
Member

I can't access ninja installer CI log, it's so old. Anyway, I think we are using conanio/gcc5

@ericLemanissier
Copy link
Contributor

another possibility is to compile ninja with -static-libstdc++ so that it does not depend on dynamic libraries at all. Would such a change be accepted ? Other installer packages using std library would still have the problem.

@SSE4
Copy link
Contributor

SSE4 commented Dec 6, 2019

unfortunately, -static-libstdc++ isn't enough :( still, glibc problem arises after that, which is not that easy to deal.

@ericLemanissier
Copy link
Contributor

so all installer packages should be built on the platform with oldest glibc right ? so CCI should use gcc4.9 image for these ?

@SSE4
Copy link
Contributor

SSE4 commented Dec 6, 2019

yeah, I believe so, it's the most simple solution. however, CCI doesn't have a concept of installer packages, and there is no way to specify such information that package must be built in a special way.

@SSE4
Copy link
Contributor

SSE4 commented May 4, 2020

@danimtb @uilianries we need to definitely make some action on this, as it blocks several recipes (e.g. fribidi).

@Croydon
Copy link
Contributor Author

Croydon commented May 4, 2020

If the CI system would be open sourced... 😉

Random wild guess: Maybe GCC 5 is the first compiler the CI compiles for and therefore uses it for installer packages? Maybe it would be enough to put GCC 4.9 first?

@ericLemanissier

This comment has been minimized.

@ericLemanissier

This comment has been minimized.

@ericLemanissier

This comment has been minimized.

@ericLemanissier ericLemanissier mentioned this issue Jun 15, 2020
4 tasks
This was referenced Jun 25, 2020
@danimtb
Copy link
Member

danimtb commented Sep 18, 2020

With the changes introduced in the latest deployment https://github.com/conan-io/conan-center-index/blob/master/docs/changelog.md#17-september-2020---1742-cest, the "installer" packages should be built now using the oldest gcc version in Linux (gcc 4.9 in our case), thus using the oldest glibc version possible right now.

  • This should unblock issues related to executables not running in CI for libraries that use those "installers" as build requires.
  • This should remove the need of adding the compiler setting for those "installer" recipes just to force them to build with gcc 4.9 to avoid this issue.

We hope this unblocks some of the PRs hit by this issue and we will continue working to improve the situation around it. Thank you!

artem-kamyshev pushed a commit to artem-kamyshev/conan-center-index that referenced this issue Sep 28, 2020
@danimtb
Copy link
Member

danimtb commented Oct 28, 2020

I'd consider this issue closed with the documentation in #3328

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants