[ 
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

Reply via email to