Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#2880 closed defect (fixed)

GCC 7.3 breaks ISOLDE

Reported by: Tristan Croll Owned by: Greg Couch
Priority: normal Milestone:
Component: Build System Version:
Keywords: Cc: Conrad Huang, Tom Goddard
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Linux-5.4.13-201.fc31.x86_64-x86_64-with-fedora-31-Thirty_One
ChimeraX Version: 0.92 (2020-02-23)
Description
Looks like the recent generic-Linux daily builds are now using GCC 7.3:

strings -a libmolc.so |grep "GCC: ("
GCC: (GNU) 7.3.1 20180303 (Red Hat 7.3.1-5)

This will leave ISOLDE broken for all ChimeraX builds except RedHat-7, until there's either an OpenMM plugin built with the same compiler or I can work out some dual-compiler build pipeline.

Log:
Startup Messages  
---  
warning | 'clip' is a prefix of an existing command 'clipper'  
  
UCSF ChimeraX version: 0.92 (2020-02-23)  
© 2016-2020 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  
Traceback (most recent call last):  
File "/opt/UCSF/chimerax-2020.02.23/lib/python3.7/site-
packages/chimerax/core/toolshed/info.py", line 297, in _register_cmd  
api._api_caller.register_command(api, self, ci, logger)  
File "/opt/UCSF/chimerax-2020.02.23/lib/python3.7/site-
packages/chimerax/core/toolshed/__init__.py", line 1616, in register_command  
return cls._get_func(api, "register_command")(ci.name, logger)  
File "/home/tic20/.local/share/ChimeraX/0.92/site-
packages/chimerax/isolde/__init__.py", line 137, in register_command  
cmd.register_isolde(logger)  
File "/home/tic20/.local/share/ChimeraX/0.92/site-
packages/chimerax/isolde/cmd.py", line 259, in register_isolde  
from chimerax.isolde.restraints.cmd import register_isolde_restrain  
File "/home/tic20/.local/share/ChimeraX/0.92/site-
packages/chimerax/isolde/restraints/__init__.py", line 11, in <module>  
from ..molobject import RestraintChangeTracker  
File "/home/tic20/.local/share/ChimeraX/0.92/site-
packages/chimerax/isolde/molobject.py", line 41, in <module>  
_c_functions = CFunctions(os.path.splitext(libfile)[0])  
File "/opt/UCSF/chimerax-2020.02.23/lib/python3.7/site-
packages/chimerax/atomic/molc.py", line 23, in __init__  
self._c_lib = ctypes_open(library_path)  
File "/opt/UCSF/chimerax-2020.02.23/lib/python3.7/site-
packages/chimerax/atomic/molc.py", line 261, in ctypes_open  
lib = ctypes.PyDLL(lib_path)  
File "/opt/UCSF/chimerax-2020.02.23/lib/python3.7/ctypes/__init__.py", line
364, in __init__  
self._handle = _dlopen(self._name, mode)  
OSError: /home/tic20/.local/share/ChimeraX/0.92/site-
packages/chimerax/isolde/libmolc.so: undefined symbol:
_ZNK10atomstruct7Residue9find_atomERKN6chutil7CStringILi5EILc65ELc116ELc111ELc109ELc32ELc78ELc97ELc109ELc101EEEE  
  
During handling of the above exception, another exception occurred:  
  
Traceback (most recent call last):  
File "/opt/UCSF/chimerax-2020.02.23/lib/python3.7/site-
packages/chimerax/core/commands/cli.py", line 2125, in lazy_register  
deferred.call()  
File "/opt/UCSF/chimerax-2020.02.23/lib/python3.7/site-
packages/chimerax/core/commands/cli.py", line 2056, in call  
return self.proxy()  
File "/opt/UCSF/chimerax-2020.02.23/lib/python3.7/site-
packages/chimerax/core/toolshed/info.py", line 287, in cb  
s._register_cmd(ci, l)  
File "/opt/UCSF/chimerax-2020.02.23/lib/python3.7/site-
packages/chimerax/core/toolshed/info.py", line 300, in _register_cmd  
"register_command() failed for command %s in bundle %s:\n%s" % (ci.name,
self.name, str(e)))  
chimerax.core.toolshed.ToolshedError: register_command() failed for command
isolde in bundle ChimeraX-ISOLDE:  
/home/tic20/.local/share/ChimeraX/0.92/site-
packages/chimerax/isolde/libmolc.so: undefined symbol:
_ZNK10atomstruct7Residue9find_atomERKN6chutil7CStringILi5EILc65ELc116ELc111ELc109ELc32ELc78ELc97ELc109ELc101EEEE  
  
During handling of the above exception, another exception occurred:  
  
Traceback (most recent call last):  
File "/opt/UCSF/chimerax-2020.02.23/lib/python3.7/site-
packages/chimerax/cmd_line/tool.py", line 258, in execute  
cmd.run(cmd_text)  
File "/opt/UCSF/chimerax-2020.02.23/lib/python3.7/site-
packages/chimerax/core/commands/cli.py", line 2778, in run  
self._find_command_name(final, used_aliases=_used_aliases)  
File "/opt/UCSF/chimerax-2020.02.23/lib/python3.7/site-
packages/chimerax/core/commands/cli.py", line 2521, in _find_command_name  
what.lazy_register(cmd_name)  
File "/opt/UCSF/chimerax-2020.02.23/lib/python3.7/site-
packages/chimerax/core/commands/cli.py", line 2127, in lazy_register  
raise RuntimeError("delayed command registration for %r failed (%s)" %
(cmd_name, e))  
RuntimeError: delayed command registration for 'isolde' failed
(register_command() failed for command isolde in bundle ChimeraX-ISOLDE:  
/home/tic20/.local/share/ChimeraX/0.92/site-
packages/chimerax/isolde/libmolc.so: undefined symbol:
_ZNK10atomstruct7Residue9find_atomERKN6chutil7CStringILi5EILc65ELc116ELc111ELc109ELc32ELc78ELc97ELc109ELc101EEEE)  
  
RuntimeError: delayed command registration for 'isolde' failed
(register_command() failed for command isolde in bundle ChimeraX-ISOLDE:  
/home/tic20/.local/share/ChimeraX/0.92/site-
packages/chimerax/isolde/libmolc.so: undefined symbol:
_ZNK10atomstruct7Residue9find_atomERKN6chutil7CStringILi5EILc65ELc116ELc111ELc109ELc32ELc78ELc97ELc109ELc101EEEE)  
  
File "/opt/UCSF/chimerax-2020.02.23/lib/python3.7/site-
packages/chimerax/core/commands/cli.py", line 2127, in lazy_register  
raise RuntimeError("delayed command registration for %r failed (%s)" %
(cmd_name, e))  
  
See log for complete Python traceback.  
  




OpenGL version: 3.3.0 NVIDIA 440.44
OpenGL renderer: GeForce GTX 1070/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation

Attachments (1)

centos-7.def (1.7 KB ) - added by Greg Couch 6 years ago.
CentOS 7 singularity build script

Download all attachments as: .zip

Change History (24)

comment:1 by Eric Pettersen, 6 years ago

Cc: Conrad Huang Tom Goddard added
Component: UnassignedBuild System
Owner: set to Greg Couch
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionGCC 7.3 breaks ISOLDE

comment:2 by Greg Couch, 6 years ago

What do you consider the right solution? We get the OPenMM binaries from anaconda and the current build environment for anaconda appears to be CentOS 7 with devtoolset-7. Which is why I picked devtoolset-7 instead of devtoolset-8.

I see that OpenMM 7.4.1 is now available. Would switching to that version help? I only see cuda100 and cuda101 versions. And we can change the devtoolset version to match what OpenMM is compiled with if we knew what that was.

Last edited 6 years ago by Greg Couch (previous) (diff)

in reply to:  3 ; comment:3 by Tristan Croll, 6 years ago

Well if the latest OpenMM is using devtoolset-7, then that should be perfect (the one in ChimeraX until now was still using 4.8). Will test when I’m back home next week. I think the long-term plan should still be to make OpenMM into a bundle.
 

 


comment:4 by Greg Couch, 6 years ago

Since the devtoolset runtimes are statically layered upon the builtin version of gcc/g++, strings will still show the older GCC. For example, OpenMM 7.4.1 gives:

$ strings -a libOpenMM.so | grep "GCC: ("
GCC: (GNU) 4.4.7 20120313 (Red Hat 4.4.7-23)
GCC: (GNU) 4.8.2 20140120 (Red Hat 4.8.2-15)

Not sure how to detect which devtoolset was used.

comment:5 by Greg Couch, 6 years ago

I stand corrected. Compiling with devtoolset-7 on CentOS 7, I get:

GCC: (GNU) 4.8.5 20150623 (Red Hat 4.8.5-39)
GCC: (GNU) 7.3.1 20180303 (Red Hat 7.3.1-5)

So OpenMM must be compiled on CentOS 6 (GCC 4.4.7) with devtoolset-2 (GCC 4.8.2).

Last edited 6 years ago by Greg Couch (previous) (diff)

in reply to:  6 ; comment:6 by Tristan Croll, 6 years ago

Looks like their continuous integration server is using 5.4 
(https://travis-ci.org/openmm/openmm/jobs/654643628?utm_medium=notification&utm_source=github_status). 
Not sure if this matches their release builds, but seems a reasonable 
bet.

On 2020-02-26 16:32, ChimeraX wrote:

comment:7 by Greg Couch, 6 years ago

The travis-ci output looks like it is on Ubuntu 16.04 with Python 3.8! There are no released versions of OpenMM for Python 3.8.

I'm going to revert the CentOS 7 singularity image to devtoolset-3, so tonight's builds will be with gcc 4.9.2 again.

in reply to:  8 ; comment:8 by Tristan Croll, 6 years ago

They have a few different Travis jobs (all currently broken for some 
reason, but that's beside the point): 
https://travis-ci.org/openmm/openmm/builds/654643624?utm_source=github_status&utm_medium=notification. 
Can ask them easily enough, I suppose.

On 2020-02-26 17:04, ChimeraX wrote:

comment:9 by Greg Couch, 6 years ago

If you look at https://github.com/openmm/openmm/blob/master/.travis.yml, it appears that the travis-ci is only done for macOS and Ubuntu 16.04. The Linux packaging is in https://github.com/openmm/openmm/tree/master/devtools/packaging/scripts/linux and does use devtoolset-2. gcc 4.8.2 is too old for the rest of ChimeraX to use, so I hope that the gcc 4.9.2 from devtoolset-3 works for you.

Would it be possible for ISOLDE to switch from OpenMM C++ API to the C API? That would insulate ISOLDE from C++ compiler issues.

in reply to:  10 ; comment:10 by Tristan Croll, 6 years ago

That’s an interesting option. I’m embarrassed to admit that I wasn’t aware they *had* a C API! Will get on it ASAP.

Their GCC 4.8 binaries have been playing happily with ChimeraX’s 4.9, no problem. But 7.4.x is the last OpenMM version that will use it. Beyond this point they’ll have to use at least GCC 5.x.
 

 


comment:11 by Greg Couch, 6 years ago

Should I update OpenMM to 7.4.1 on all platforms?

in reply to:  12 ; comment:12 by Tristan Croll, 6 years ago

I don’t think that would hurt anything, but I’m also not aware of it having anything new that I need right now. So... up to you, really.
 

 


comment:13 by Greg Couch, 6 years ago

Will OpenMM at 7.4 for now.

comment:14 by Tristan Croll, 6 years ago

Is there any way I can get my hands on a devtoolset-7 build to experiment on? I'll be back at work on Monday.

comment:15 by Greg Couch, 6 years ago

To get devtoolset-7, you need to enable software collections. So for CentOS, you would:

sudo yum install centos-release-scl
sudo yum-config-manager --enable rhel-server-rhscl-7-rpms
sudo yum install devtoolset-7 devtoolset-7-libstdc++-devel devtoolset-7-binutils-devel

and then to get the compilers create a subshell with:

scl enable devtoolset-7 bash

or change the environment of your current shell with:

source /opt/rh/devtoolset-7/enable

To enable software collections on RHEL is similar, but the first two commands might be different.

Last edited 6 years ago by Greg Couch (previous) (diff)

comment:16 by Greg Couch, 6 years ago

Resolution: fixed
Status: assignedclosed

comment:17 by Greg Couch, 6 years ago

Updated the instructions. Forgot a couple of sudo's.

in reply to:  18 ; comment:18 by Tristan Croll, 6 years ago

My question was more related to the fact that I haven’t attempted a complete build of ChimeraX for at least a year (and it didn’t go so well for me then). Can give it another try, though.
 

 


by Greg Couch, 6 years ago

Attachment: centos-7.def added

CentOS 7 singularity build script

comment:19 by Greg Couch, 6 years ago

I frequently rebuild all of ChimeraX, both on Linux and on Windows. I've attached centos-7.def to this ticket, which is the script for building the CentOS 7 singularity container that is used for the nightly builds. In it, you can see all of the system packages that need to be installed to build ChimeraX and maybe a couple more.

in reply to:  21 comment:20 by Tristan Croll, 6 years ago

I get most(?) of the way through the build using devtoolset-7, but fail 
at building Mesa (see below). Will try hacking the offending Makefile to 
--enable-llvm=no.

make -C mesa install
make[3]: Entering directory 
'/home/tic20/chimerax-git/chimerax/prereqs/mesa'
cd /home/tic20/chimerax-git/chimerax/build/tmp/mesa-19.0.8 && \
    ./configure --prefix=/home/tic20/chimerax-git/chimerax/build 
--enable-gallium-osmesa --with-gallium-drivers="swrast" 
--enable-llvm=yes --with-platforms= --with-dri-drivers= --disable-dri 
--disable-egl --disable-gbm --disable-gles1 --disable-gles2 
--disable-glx --disable-va --disable-vdpau --disable-xvmc 
--disable-shared-glapi --enable-autotools && make install
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether UID '484009799' is supported by ustar format... no
checking whether GID '484000513' is supported by ustar format... no
checking how to create a ustar tar archive... none
checking whether make supports nested variables... (cached) yes
checking whether make supports the include directive... yes (GNU style)
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for ar... ar
checking the archiver (ar) interface... ar
checking how to run the C preprocessor... gcc -E
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking dependency style of gcc... (cached) gcc3
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking for grep that handles long lines and -e... /usr/bin/grep
checking for BSD- or MS-compatible name lister (nm)... 
/opt/rh/devtoolset-7/root/usr/bin/nm -B
checking the name lister (/opt/rh/devtoolset-7/root/usr/bin/nm -B) 
interface... BSD nm
checking dependency style of gcc... gcc3
checking for GNU make... make
checking for a Python interpreter with version >= 2.7... python
checking for python... /home/tic20/anaconda3/bin/python
checking for python version... 3.6
checking for python platform... linux
checking for python script directory... 
${prefix}/lib/python3.6/site-packages
checking for python extension module directory... 
${exec_prefix}/lib/python3.6/site-packages
checking for a sed that does not truncate output... /usr/bin/sed
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking how to print strings... printf
checking for a sed that does not truncate output... (cached) 
/usr/bin/sed
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... 
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld
checking if the linker 
(/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld) is 
GNU ld... yes
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to 
x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain 
format... func_convert_file_noop
checking for 
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld 
option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /opt/rh/devtoolset-7/root/usr/bin/nm -B output 
from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... no
checking if : is a manifest tool... no
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... no
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker 
(/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld -m 
elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... 
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld -m 
elf_x86_64
checking if the linker 
(/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld -m 
elf_x86_64) is GNU ld... yes
checking whether the g++ linker 
(/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld -m 
elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... no
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker 
(/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld -m 
elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for rm... rm -f
checking for bison... bison -y
checking if bison is the parser generator... yes
checking for flex... flex
checking lex output file root... lex.yy
checking lex library... none needed
checking whether yytext is a pointer... no
checking if flex is the lexer generator... yes
checking for indent... indent
checking if module mako in python is installed... yes
checking if compiling with clang... no
checking whether gcc version is sufficient... yes
checking whether __SUNPRO_C is declared... no
checking for __builtin_bswap32... yes
checking for __builtin_bswap64... yes
checking for __builtin_clz... yes
checking for __builtin_clzll... yes
checking for __builtin_ctz... yes
checking for __builtin_expect... yes
checking for __builtin_ffs... yes
checking for __builtin_ffsll... yes
checking for __builtin_popcount... yes
checking for __builtin_popcountll... yes
checking for __builtin_unreachable... yes
checking for __attribute__((const))... yes
checking for __attribute__((flatten))... yes
checking for __attribute__((format))... yes
checking for __attribute__((malloc))... yes
checking for __attribute__((packed))... yes
checking for __attribute__((pure))... yes
checking for __attribute__((returns_nonnull))... yes
checking for __attribute__((unused))... yes
checking for __attribute__((visibility))... yes
checking for __attribute__((warn_unused_result))... yes
checking for __attribute__((weak))... yes
checking for __attribute__((alias))... yes
checking for __attribute__((noreturn))... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking whether C compiler accepts -Wall... yes
checking whether C compiler accepts 
-Werror=implicit-function-declaration... yes
checking whether C compiler accepts -Werror=missing-prototypes... yes
checking whether C compiler accepts -Wmissing-prototypes... yes
checking whether C compiler accepts -Wmissing-field-initializers... yes
checking whether C compiler accepts -Wformat-truncation... yes
checking whether C compiler accepts -fno-math-errno... yes
checking whether C compiler accepts -fno-trapping-math... yes
checking whether C compiler accepts -fvisibility=hidden... yes
checking whether C++ compiler accepts -Wall... yes
checking whether C++ compiler accepts -fno-math-errno... yes
checking whether C++ compiler accepts -fno-trapping-math... yes
checking whether C++ compiler accepts -fvisibility=hidden... yes
checking whether C++ compiler accepts -Wmissing-field-initializers... 
yes
checking whether C++ compiler accepts -Wformat-truncation... yes
checking whether C compiler accepts -Werror=pointer-arith... yes
checking whether C compiler accepts -Werror=vla... yes
checking whether C++ compiler accepts -Werror=pointer-arith... yes
checking whether C++ compiler accepts -Werror=vla... yes
checking whether c++11 is enabled by default... yes
checking whether C compiler accepts -Woverride-init... yes
checking whether C compiler accepts -Winitializer-overrides... no
checking whether __atomic_load_n is supported... yes
checking whether __sync_add_and_fetch_8 is supported... yes
checking whether byte ordering is bigendian... no
checking whether gcc supports -mpower8-vector... no
checking if ld supports -Bsymbolic... yes
checking whether ld supports --gc-sections... yes
checking if the linker supports version-scripts... yes
checking if the linker supports --dynamic-list... yes
checking whether to enable assembly... yes, x86_64
checking whether sys/types.h defines makedev... no
checking sys/mkdev.h usability... no
checking sys/mkdev.h presence... no
checking for sys/mkdev.h... no
checking sys/sysmacros.h usability... yes
checking sys/sysmacros.h presence... yes
checking for sys/sysmacros.h... yes
checking xlocale.h usability... yes
checking xlocale.h presence... yes
checking for xlocale.h... yes
checking sys/sysctl.h usability... yes
checking sys/sysctl.h presence... yes
checking for sys/sysctl.h... yes
checking endian.h usability... yes
checking endian.h presence... yes
checking for endian.h... yes
checking for dlfcn.h... (cached) yes
checking for strtof... yes
checking for mkostemp... yes
checking for timespec_get... yes
checking for memfd_create... no
checking whether strtod has locale support... yes
checking for dlopen... no
checking for dlopen in -ldl... yes
checking for dladdr... yes
checking for dl_iterate_phdr... yes
checking for clock_gettime... yes
checking for posix_memalign... yes
checking for ZLIB... yes
checking for the pthreads library -lpthreads... no
checking whether pthreads work without any flags... no
checking whether pthreads work with -Kthread... no
checking whether pthreads work with -kthread... no
checking for the pthreads library -llthread... no
checking whether pthreads work with -pthread... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking if more special flags are required for pthreads... no
checking for PTHREAD_PRIO_INHERIT... no
checking whether pthread_setaffinity_np is supported... yes
checking linux/futex.h usability... yes
checking linux/futex.h presence... yes
checking for linux/futex.h... yes
checking for LIBELF... yes
checking for llvm-config... no
checking for LIBDRM... yes
checking for EXPAT... yes
configure: error: --enable-llvm selected but llvm-config is not found
make[3]: *** [Makefile:46: install] Error 1
make[3]: Leaving directory 
'/home/tic20/chimerax-git/chimerax/prereqs/mesa'
make[2]: *** [/home/tic20/chimerax-git/chimerax/mk/subdir.make:25: 
mesa.install] Error 2
make[2]: Leaving directory '/home/tic20/chimerax-git/chimerax/prereqs'
make[1]: *** [Makefile:190: install-prebuilt] Error 2
make[1]: Leaving directory '/home/tic20/chimerax-git/chimerax/prereqs'
make: *** [Makefile:32: install] Error 2


On 2020-02-29 22:47, ChimeraX wrote:

in reply to:  22 ; comment:21 by Tristan Croll, 6 years ago

Yep - setting `--enable-llvm=no` got me past that point. Next failure 
was at building and installing the bundles - looks like the parallel 
build `make install -j32` was attempting to build the dicom bundle 
before its dependency chimerax.map. Dropping back to a single-threaded 
build seems to be going fine.

On 2020-03-02 10:44, ChimeraX wrote:

in reply to:  23 ; comment:22 by Tristan Croll, 6 years ago

... and I have a working build. Great! Now to get a matching OpenMM 
build...

On 2020-03-02 11:06, ChimeraX wrote:

comment:23 by Greg Couch, 6 years ago

To use llvm on CentOS 7, ChimeraX requires the mesa-private-llvm-devel package to be installed. It is needed for the offscreen rendering library, libosmesa.so, to support OpenGL 3.3+. Otherwise, we'd use the system's version of libosmesa.

Note: See TracTickets for help on using tickets.