Compiling gnudatalanguage (gdl) on opensuse leap 15.1

I have been unsuccessfully trying to compile gnudatalanguage, known as gdl, (an opensource alternative to idl commercial code) for several days. I am hung up on a myriad of issues that challenge my capilities to deal with cmake and make for large assemblies of code.

I would like to know if anyone has compiled gdl to run on opensuse leap 15.1. What was the source of your code? I have been unsucessfully trying to compile the current gdl code from git. How did you tweak the cmake files? Did you use clang compiler rather than gcc? Did you incorporate openmpi? Did you use hdf4 or not?

I compiled an old version of gdl on opensuse 13.2, back 5 or 6 years ago I think, with no issues at all. Now I am unable to get it compiled.
I see compiled packages for debian and other linuxes. I see evidence of successful compilations on fedora, debian, and other linuxes but no references to any successes on opensuse.

Thanks, Tom Kosvic

Hi
I imagine a newer version than this one: https://build.opensuse.org/package/view_file/science/gdl-language/gdl-language.spec?expand=1

Is this where you are getting your source: https://github.com/gnudatalanguage/gdl

Do you know if it’s python3 ready?

Malcolm,

I am cloning latest source files from github.

Latest version notes of gdl says it is tied to python. You can call python functions from within gdl or python can call gdl. I have no evidence of that yet since I cant compile.

Tom Kosvic

I found much earlier version of gdl on github from 5 or 6 years ago. That too would not compile to make executibles. It fails in the linking just as the current version does.
I am sure that this version compiled completely on older versions of opensuse. Thus, something has changed in the dozens of files within opensuse involved in this compilation and not with gdl source code.

tom kosvic

For anyone who can figure out what my compile problem is, I am including the linker text. Compilation now goes to 100%. The linker errors out on undefined references of various ompi files… Due to these errors, I am compiling cmake with -DOPENMP=OFF on the cmake commandline. This turns off openmpi. I have also set openmpi to off manually in the CMakeLists.txt file. So why is it looking for ompi files that are turned off in two places. Openmpi is installed on my system through package manager.

%] Linking CXX executable gdl
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/gdl.dir/hdf5_fun.cpp.o: in function `MPI::Op::Init(void (*)(void const*, void*, int, MPI::Datatype const&), bool)':
hdf5_fun.cpp:(.text._ZN3MPI2Op4InitEPFvPKvPviRKNS_8DatatypeEEb[_ZN3MPI2Op4InitEPFvPKvPviRKNS_8DatatypeEEb]+0x15): undefined reference to `ompi_mpi_cxx_op_intercept'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: hdf5_fun.cpp:(.text._ZN3MPI2Op4InitEPFvPKvPviRKNS_8DatatypeEEb[_ZN3MPI2Op4InitEPFvPKvPviRKNS_8DatatypeEEb]+0x30): undefined reference to `ompi_op_set_cxx_callback'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/gdl.dir/hdf5_fun.cpp.o: in function `MPI::Intracomm::Clone() const':
hdf5_fun.cpp:(.text._ZNK3MPI9Intracomm5CloneEv[_ZNK3MPI9Intracomm5CloneEv]+0x2c): undefined reference to `MPI::Comm::Comm()'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: hdf5_fun.cpp:(.text._ZNK3MPI9Intracomm5CloneEv[_ZNK3MPI9Intracomm5CloneEv]+0x56): undefined reference to `ompi_mpi_comm_null'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/gdl.dir/hdf5_fun.cpp.o: in function `MPI::Graphcomm::Clone() const':
hdf5_fun.cpp:(.text._ZNK3MPI9Graphcomm5CloneEv[_ZNK3MPI9Graphcomm5CloneEv]+0x25): undefined reference to `MPI::Comm::Comm()'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: hdf5_fun.cpp:(.text._ZNK3MPI9Graphcomm5CloneEv[_ZNK3MPI9Graphcomm5CloneEv]+0x54): undefined reference to `ompi_mpi_comm_null'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/gdl.dir/hdf5_fun.cpp.o: in function `MPI::Cartcomm::Sub(bool const*) const':
hdf5_fun.cpp:(.text._ZNK3MPI8Cartcomm3SubEPKb[_ZNK3MPI8Cartcomm3SubEPKb]+0x8e): undefined reference to `MPI::Comm::Comm()'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: hdf5_fun.cpp:(.text._ZNK3MPI8Cartcomm3SubEPKb[_ZNK3MPI8Cartcomm3SubEPKb]+0xbf): undefined reference to `ompi_mpi_comm_null'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/gdl.dir/hdf5_fun.cpp.o: in function `MPI::Intracomm::Create_graph(int, int const*, int const*, bool) const':
hdf5_fun.cpp:(.text._ZNK3MPI9Intracomm12Create_graphEiPKiS2_b[_ZNK3MPI9Intracomm12Create_graphEiPKiS2_b]+0x29): undefined reference to `MPI::Comm::Comm()'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: hdf5_fun.cpp:(.text._ZNK3MPI9Intracomm12Create_graphEiPKiS2_b[_ZNK3MPI9Intracomm12Create_graphEiPKiS2_b]+0x58): undefined reference to `ompi_mpi_comm_null'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/gdl.dir/hdf5_fun.cpp.o: in function `MPI::Cartcomm::Clone() const':
hdf5_fun.cpp:(.text._ZNK3MPI8Cartcomm5CloneEv[_ZNK3MPI8Cartcomm5CloneEv]+0x25): undefined reference to `MPI::Comm::Comm()'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: hdf5_fun.cpp:(.text._ZNK3MPI8Cartcomm5CloneEv[_ZNK3MPI8Cartcomm5CloneEv]+0x54): undefined reference to `ompi_mpi_comm_null'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/gdl.dir/hdf5_fun.cpp.o: in function `MPI::Intracomm::Create_cart(int, int const*, bool const*, bool) const':
hdf5_fun.cpp:(.text._ZNK3MPI9Intracomm11Create_cartEiPKiPKbb[_ZNK3MPI9Intracomm11Create_cartEiPKiPKbb]+0x98): undefined reference to `MPI::Comm::Comm()'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: hdf5_fun.cpp:(.text._ZNK3MPI9Intracomm11Create_cartEiPKiPKbb[_ZNK3MPI9Intracomm11Create_cartEiPKiPKbb]+0xc9): undefined reference to `ompi_mpi_comm_null'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/gdl.dir/hdf5_fun.cpp.o: in function `MPI::Intercomm::Merge(bool) const':
hdf5_fun.cpp:(.text._ZNK3MPI9Intercomm5MergeEb[_ZNK3MPI9Intercomm5MergeEb]+0x29): undefined reference to `MPI::Comm::Comm()'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: hdf5_fun.cpp:(.text._ZNK3MPI9Intercomm5MergeEb[_ZNK3MPI9Intercomm5MergeEb]+0x53): undefined reference to `ompi_mpi_comm_null'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/gdl.dir/hdf5_fun.cpp.o: in function `MPI::Intracomm::Create(MPI::Group const&) const':
hdf5_fun.cpp:(.text._ZNK3MPI9Intracomm6CreateERKNS_5GroupE[_ZNK3MPI9Intracomm6CreateERKNS_5GroupE]+0x2c): undefined reference to `MPI::Comm::Comm()'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: hdf5_fun.cpp:(.text._ZNK3MPI9Intracomm6CreateERKNS_5GroupE[_ZNK3MPI9Intracomm6CreateERKNS_5GroupE]+0x56): undefined reference to `ompi_mpi_comm_null'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/gdl.dir/hdf5_fun.cpp.o: in function `MPI::Intracomm::Split(int, int) const':
hdf5_fun.cpp:(.text._ZNK3MPI9Intracomm5SplitEii[_ZNK3MPI9Intracomm5SplitEii]+0x28): undefined reference to `MPI::Comm::Comm()'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: hdf5_fun.cpp:(.text._ZNK3MPI9Intracomm5SplitEii[_ZNK3MPI9Intracomm5SplitEii]+0x52): undefined reference to `ompi_mpi_comm_null'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/mpi/gcc/openmpi/lib64/libhdf5.so: undefined reference to `ompi_mpi_unsigned'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/mpi/gcc/openmpi/lib64/libhdf5.so: undefined reference to `ompi_mpi_op_bor'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/mpi/gcc/openmpi/lib64/libhdf5.so: undefined reference to `ompi_mpi_unsigned_long_long'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/mpi/gcc/openmpi/lib64/libhdf5.so: undefined reference to `ompi_mpi_op_max'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/mpi/gcc/openmpi/lib64/libhdf5.so: undefined reference to `ompi_mpi_byte'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/mpi/gcc/openmpi/lib64/libhdf5.so: undefined reference to `ompi_mpi_errors_return'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/mpi/gcc/openmpi/lib64/libhdf5.so: undefined reference to `ompi_mpi_c_bool'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/mpi/gcc/openmpi/lib64/libhdf5.so: undefined reference to `ompi_mpi_int'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/mpi/gcc/openmpi/lib64/libhdf5.so: undefined reference to `ompi_mpi_datatype_null'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/mpi/gcc/openmpi/lib64/libhdf5.so: undefined reference to `ompi_mpi_comm_self'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/mpi/gcc/openmpi/lib64/libhdf5.so: undefined reference to `OMPI_C_MPI_COMM_NULL_COPY_FN'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/mpi/gcc/openmpi/lib64/libhdf5.so: undefined reference to `ompi_mpi_info_null'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/mpi/gcc/openmpi/lib64/libhdf5.so: undefined reference to `ompi_mpi_comm_world'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/mpi/gcc/openmpi/lib64/libhdf5.so: undefined reference to `ompi_mpi_long_long_int'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/mpi/gcc/openmpi/lib64/libhdf5.so: undefined reference to `ompi_mpi_op_sum'
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/gdl.dir/build.make:4059: src/gdl] Error 1
make[1]: *** [CMakeFiles/Makefile2:125: src/CMakeFiles/gdl.dir/all] Error 2
make: *** [Makefile:141: all] Error 2

Has anyone solved this? I notice that GDL (gnu data language) is on the science repo “wish list.” The language GDL is a clone of is an important research language.