I am attempting to build ROOT 6.19.02 and 6.20.00 on a RHEL 6 machine and receive errors when building the builtin zstd. I have attempted to set builtin_zstd to OFF, but it always turns itself back to ON. Is there anyway to disable building of this package?
Building C object builtins/zstd/CMakeFiles/zstd.dir/huf_compress.c.o
{standard input}: Assembler messages:
{standard input}:271: Error: no such instruction: `shlx %r13,%rax,%rax'
{standard input}:274: Error: no such instruction: `shlx %rcx,%r13,%rcx'
{standard input}:277: Error: no such instruction: `shlx %r12,%rcx,%r12'
{standard input}:280: Error: no such instruction: `shlx %rdx,%rcx,%rcx'
{standard input}:295: Error: no such instruction: `shrx %rdx,%rax,%rsi'
{standard input}:360: Error: no such instruction: `shlx %r9,%rsi,%rsi'
{standard input}:368: Error: no such instruction: `shrx %rax,%rsi,%rsi'
{standard input}:383: Error: no such instruction: `shlx %r9,%rcx,%rsi'
make[2]: *** [builtins/zstd/CMakeFiles/zstd.dir/huf_compress.c.o] Error 1
make[1]: *** [builtins/zstd/CMakeFiles/zstd.dir/all] Error 2
make: *** [all] Error 2
In general it is extremely frustrating to fight with these builtin_* flags that causes headaches and force a signifcant number of additional dependencies such as git and so forth. I came to this error after spending a day manually installing a new version of TBB as that builtin failed to compile as well.
Unfortunately, zstd is a required dependency in newer ROOT versions. You cannot disable it. You will only be able to disable the builtin if you can pick something up from the system. Please file a bug with the error you get, but I’m afraid that RHEL6 / SLC6 are not well supported anymore as they are no longer being tested. See http://cdash.cern.ch/index.php?project=ROOT for tested platforms.
I may be wrong about this. I always assume a “builtin” will be downloaded from the internet, but this may indeed be builtin and not require an additional download. Some clarification on what is downloaded and what is actually builtin would be nice.
Excuse my ignorance on the matter, would binutils be specific to the compiler? Can I build ROOT with GCC 6.3.0 instead of 8.1.0 on the same machine without issue then?
Thanks for the tip on the zstd package. These machines are maintained by an institution and getting additional packages installed can be difficult.
Another option to fail when a downloaded packages is required would be nice. I haven’t had much issue with the “builtin” packages that do not require download except for TBB.
I support @ksmith request. TBB is already installed on my system but ROOT compilation download it from internet. So, from my understanding, it is currently not possible to compile multithreaded ROOT without internect connection which is pity.