[ https://issues.apache.org/jira/browse/IMPALA-5490?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17036533#comment-17036533 ]
Joe McDonnell edited comment on IMPALA-5490 at 2/14/20 1:30 AM: ---------------------------------------------------------------- I spent a few cycles trying an approach where I continued to build the toolchain with gcc-4.9.2 and then added a standalone build of gcc-7.4. This lets you build Impala with gcc-7.4 (specifying the old ABI) without needing a full toolchain rebuild. This works, up to a point. Here is my experience with it: # On Ubuntu16, we suggest prepending /usr/lib/x86_64-linux-gnu/ to LD_LIBRARY_PATH. This will need to change, because our libstdc++ is now newer than the one on Ubuntu16. We need to be our libstdc++, not the system one. This is true for other approaches. # With some minor changes, everything compiles and links with gcc 7.4 when it is the only compiler. # The build on gcc-7.4 breaks if gcc-4.9.2 is present. This is because the native toolchain components have relative symlinks to gcc-4.9.2's libstdc++. For example, we put snappy on the LD_LIBRARY_PATH, and it has a symlink to gcc-4.9.2's libraries. When gcc-4.9.2 is not in the toolchain, the symlink doesn't matter, but the moment we download gcc-4.9.2, it causes havoc. There may be some workarounds. Given #3, this approach is not significantly better than alternative approaches given that we would still need to switch to the new ABI. was (Author: joemcdonnell): I spent a few cycles trying an approach where I continued to build the toolchain with gcc-4.9.2 and then added a standalone build of gcc-7.4. This lets you build Impala with gcc-7.4 (specifying the old ABI) without needing a full toolchain rebuild. This works, up to a point. Here is my experience with it: # On Ubuntu16, we suggest prepending /usr/lib/x86_64-linux-gnu/ to LD_LIBRARY_PATH. This will need to change, because our libstdc++ is now newer than the one on Ubuntu16. We need to be our libstdc++, not the system one. This is true for other approaches. # With some minor changes, everything compiles and links with gcc 7.4 when it is the only compiler. # The build on gcc-7.4 breaks if gcc-4.9.2 is present. This is because the native toolchain components have relative symlinks to gcc-4.9.2's libstdc++. For example, we put snappy on the LD_LIBRARY_PATH, and it has a symlink to gcc-4.9.2's libstdc. When gcc-4.9.2 is not in the toolchain, the symlink doesn't matter, but the moment we download gcc-4.9.2, it causes havoc. There may be some workarounds (put libstdc+ early in the LD_LIBRARY_PATH?). Given #3, this approach is not significantly better than alternative approaches given that we would still need to switch to the new ABI. > Upgrade to GCC 7.x or greater > ----------------------------- > > Key: IMPALA-5490 > URL: https://issues.apache.org/jira/browse/IMPALA-5490 > Project: IMPALA > Issue Type: Improvement > Components: Infrastructure > Reporter: Tim Armstrong > Priority: Minor > Attachments: 0001-Switch-to-gcc7.patch > > > This has some nice features like the [[nodiscard]] annotation. -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-all-unsubscr...@impala.apache.org For additional commands, e-mail: issues-all-h...@impala.apache.org