Build ROOT without zstd


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.


ROOT Version: 6.19.02 or newer
Platform: RHEL 6
Compiler: GCC 6.3.0, 8.1.0
Processor: nahalem

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 for tested platforms.

Thanks for the quick response. I will try to locate a RHEL7 machine to test the build on. I’ve opened a bug report at

Also, this means that offline builds are nearly impossible now without first building zstd?

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.

I saw your ticket, looks like your binutils are broken.

BTW, there is available zstd packaged for epel6:

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.

I just attempted to build ROOT 6.20.00 using GCC 6.3.0 on the same machine and receive the same error messages as above.

I moved discussion in Jira ticket

Things that are downloaded are documented with (requires network) in the respective build option.

Thanks for the information, I should reread the Building ROOT page from time to time.

Does the fail-on-missing options fail for missing packages that need to be downloaded or for any package that is a “builtin”?

fail-on-missing 	OFF 	Fail the configure step if a required external package is missing

For any package that is enabled, but not found in the system.

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.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.