What is the build option requirement of CGNS for pyfr 1.5.0?

I am running into some confusions about the CGNS lib.
The CGNS 3.3.0 is too much newer than my CentOS 6. So I have to compile it with hdf5 (and szip, I am not sure if it is necessary). However, after that, when I tried to import CGNS grid.

wget http://cgns.sourceforge.net/CGNSFiles/Chris/bump.cgns.gz
gunzip bump.cgns.gz
pyfr import -t cgns bump.cgns bump.pyfrm

I got this error:

Traceback (most recent call last):
File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/ctypesutil.py", line 22, in load_library
File "/op/anaconda3/lib/python3.5/ctypes/__init__.py", line 347, in __init__
self._handle = _dlopen(self._name, mode)
OSError: /usr/local/lib/libcgns.so: undefined symbol: H5T_NATIVE_SCHAR_g

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/op/anaconda3/bin/pyfr", line 11, in <module>
load_entry_point('pyfr==1.5.0', 'console_scripts', 'pyfr')()
File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/__main__.py", line 110, in main
File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/__main__.py", line 118, in process_import
File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/readers/__init__.py", line 11, in get_reader_by_name
File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/readers/cgns.py", line 374, in __init__
File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/readers/cgns.py", line 34, in __init__
File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/ctypesutil.py", line 31, in load_library
OSError: Unable to load cgns

I googled “H5T_NATIVE_SCHAR_g”, and I found the description at H5T: Datatype Interface. It seems a fundamental part of hdf5.

My compilation of CGNS is as follows:

#szip
wget https://support.hdfgroup.org/ftp/lib-external/szip/2.1/src/szip-2.1.tar.gz
tar xf szip-2.1.tar.gz
cd szip-2.1
./configure --prefix=/usr/local
make
make install
cd

#hdf5

wget -b https://support.hdfgroup.org/ftp/HDF5/current18/src/hdf5-1.8.18.tar
tar xf hdf5-1.8.18.tar
cd hdf5-1.8.18
./configure --prefix=/usr/local --enable-parallel --with-szlib
make
make install
cd

#CGNS

wget https://github.com/CGNS/CGNS/archive/v3.3.0.tar.gz
tar xf v3.3.0.tar.gz
cd CGNS-3.3.0/src
export FC=gfortran
export FCFLAGS=-fPIC
#"--with-hdf5=/usr/local" in order to avoid "-I" flag.
./configure --prefix=/usr/local --with-mpi --with-szip --with-hdf5=/usr/local --enable-64bit --enable-shared=all --enable-parallel
make
make install
cd

I am using GCC 4.9.2 and CentOS 6 with OpenMPI

[root@localhost cgns_file]# mpicc --version
gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[root@localhost cgns_file]# uname -a
Linux localhost.localdomain 2.6.32-042stab120.11 #1 SMP Wed Nov 16 12:05:45 MSK 2016 x86_64 x86_64 x86_64 GNU/Linux

[root@localhost cgns_file]# mpiexec --version
mpiexec (OpenRTE) 2.0.1

Report bugs to http://www.open-mpi.org/community/help/

Additionally, I want to know how important the threadsafety is to pyfr when I need to use OpenMP? I found there is an threadsafety configure option in HDF5 but I did not select it.

I just found the following phenomena:

[root@localhost cgns_file]# nm -g /usr/local/lib/libcgns.so
nm: /usr/local/lib/libcgns.so: no symbols
[root@localhost cgns_file]# nm -gC /usr/local/lib/libcgns.so
nm: /usr/local/lib/libcgns.so: no symbols
[root@localhost cgns_file]# objdump -T /usr/local/lib/libcgns.so

/usr/local/lib/libcgns.so: file format elf64-x86-64

DYNAMIC SYMBOL TABLE:
0000000000017848 l d .init 0000000000000000 .init
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.3 __ctype_toupper_loc
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 getenv
0000000000000000 D *UND* 0000000000000000 **H5T_NATIVE_SCHAR_g**
0000000000000000 D *UND* 0000000000000000 H5Tget_native_type
0000000000000000 D *UND* 0000000000000000 ompi_mpi_comm_world
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 free
0000000000000000 D *UND* 0000000000000000 H5Pset_link_creation_order
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 putchar
0000000000000000 D *UND* 0000000000000000 H5Sget_simple_extent_npoints
0000000000000000 D *UND* 0000000000000000 H5Fget_access_plist
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 __errno_location
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 unlink
0000000000000000 D *UND* 0000000000000000 H5T_IEEE_F64LE_g
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 strncpy
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 strncmp
0000000000000000 w D *UND* 0000000000000000 _ITM_deregisterTMCloneTable
0000000000000000 DO *UND* 0000000000000000 GLIBC_2.2.5 stdout
0000000000000000 D *UND* 0000000000000000 H5Tcopy
0000000000000000 D *UND* 0000000000000000 H5Fopen
0000000000000000 D *UND* 0000000000000000 H5Gunlink
0000000000000000 D *UND* 0000000000000000 H5Awrite
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 strcpy
...

Because there are two errors, I am not sure which one is the essential one, the OSError: Unable to load cgns or OSError: /usr/local/lib/libcgns.so: undefined symbol: H5T_NATIVE_SCHAR_g ?

And I think the libcgns.so is definitely compiled from the source code, no pollution or ambiguity

[root@localhost cgns_file]# ll ` find / -name libcgns.so`
-rwxr-xr-x 1 root root 715136 Jan 12 08:30 /root/CGNS-3.3.0/lib/libcgns.so
-rw-r--r-- 1 root root 715136 Jan 12 08:27 /usr/local/lib/libcgns.so

just found a permission problem, however, it seems irrelevant

[root@localhost cgns_file]# ldd /usr/local/lib/libcgns.so
ldd: warning: **you** **do not** **have execution permission** for `/usr/local/lib/libcgns.so'
linux-vdso.so.1 => (0x00007ffea41fc000)
libc.so.6 => /lib64/libc.so.6 (0x00007f7a8fbdc000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7a90241000)
[root@localhost cgns_file]# cd /usr/local/lib
[root@localhost lib]# **chmod 755 libcgns.so**
[root@localhost lib]# cd ~/cgns_file/
[root@localhost cgns_file]# pyfr import -t cgns bump.cgns bump.pyfrm
Traceback (most recent call last):
File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/ctypesutil.py", line 22, in load_library
File "/op/anaconda3/lib/python3.5/ctypes/__init__.py", line 347, in __init__
self._handle = _dlopen(self._name, mode)
OSError: /usr/local/lib/libcgns.so: undefined symbol: H5T_NATIVE_SCHAR_g

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/op/anaconda3/bin/pyfr", line 11, in <module>
load_entry_point('pyfr==1.5.0', 'console_scripts', 'pyfr')()
File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/__main__.py", line 110, in main
File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/__main__.py", line 118, in process_import
File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/readers/__init__.py", line 11, in get_reader_by_name
File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/readers/cgns.py", line 374, in __init__
File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/readers/cgns.py", line 34, in __init__
File "/op/anaconda3/lib/python3.5/site-packages/pyfr-1.5.0-py3.5.egg/pyfr/ctypesutil.py", line 31, in load_library
OSError: Unable to load cgns

It seems a compatibility problem about ctypes.CDLL and libcgns.so , I looked into the pyfr/ctypesutil.py, and test the following code in python

In [5]: ctypes.CDLL(r'/usr/local/lib/libhdf5.so')
Out[5]: <CDLL '/usr/local/lib/libhdf5.so', handle 153eb00 at 0x7fd343597518>

In [6]: ctypes.CDLL(r'/usr/local/lib/libcgns.so')

What is strip used for? It seems used to delete symbols. Here is the make output of my configuration:

mkdir lib
mpicc -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -o lib/cgns_error.o -c cgns_error.c
mpicc -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -I/usr/local/include -o lib/cgns_internals.o -c cgns_internals.c
mpicc -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -o lib/cgns_io.o -c cgns_io.c
mpicc -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -I/usr/local/include -I/usr/include -o lib/cgnslib.o -c cgnslib.c
gfortran -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -o lib/cgns_f.o -c cgns_f.F90
mpicc -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -Iadfh -I/usr/local/include -I/usr/include -o lib/ADFH.o -c adfh/ADFH.c
mpicc -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -I/usr/local/include -I/usr/include -o lib/pcgnslib.o -c pcgnslib.c
mpicc -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -Iadf -o lib/ADF_interface.o -c adf/ADF_interface.c
mpicc -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -Iadf -o lib/ADF_internals.o -c adf/ADF_internals.c
mpicc -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -I/usr/local/include -DLOWERCASE_ -o lib/cg_ftoc.o -c cg_ftoc.c
mpicc -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -I/usr/local/include -DLOWERCASE_ -o lib/cgio_ftoc.o -c cgio_ftoc.c
mpicc -shared -Wl,-rpath,/usr/local/lib:/root/CGNS-3.3.0/src/lib -o lib/libcgns.so lib/cgns_error.o lib/cgns_internals.o lib/cgns_io.o lib/cgnslib.o lib/cgns_f.o lib/ADFH.o lib/pcgnslib.o lib/ADF_interface.o lib/ADF_internals.o lib/cg_ftoc.o lib/cgio_ftoc.o
**strip lib/libcgns.so**

As per the user guide you need CGNS >= 3.3 (develop branch post commit
e0faea6). Please ensure that the version you are compiling is indeed
post commit e0faea6.

Regards, Freddie.

Your libcgns.so seems not to be linked to hdf5 library.

ldd libcgns.so should be like this:

linux-vdso.so.1 (0x00007ffd0a3d4000)
libhdf5.so.10 => /home/yoshiaki/local/installed/lib/libhdf5.so.100x00007f5c52e94000)
libz.so.1 => /usr/lib64/libz.so.1 (0x00007f5c52c7d000)
libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007f5c52a79000)
libm.so.6 => /usr/lib64/libm.so.6 (0x00007f5c52777000)
libc.so.6 => /usr/lib64/libc.so.6 (0x00007f5c523b5000)
/lib64/ld-linux-x86-64.so.2 (0x000055f95909c000)

Did you set the following flags for CGNS installation? (I recommend you to use cmake):
CGNS_ENABLE_HDF5 on

Then, path to HDF5 library should be specified:

HDF5_CXX_COMPILER_EXECUTABLE /usr/bin/h5c++
HDF5_C_COMPILER_EXECUTABLE /home/yoshiaki/local/installed/bin/h5cc
HDF5_C_INCLUDE_DIR /home/yoshiaki/local/installed/include
HDF5_DIFF_EXECUTABLE /home/yoshiaki/local/installed/bin/h5diff
HDF5_DIR HDF5_DIR-NOTFOUND
HDF5_Fortran_COMPILER_EXECUTAB /home/yoshiaki/local/installed/bin/h5fc

HDF5_hdf5_LIBRARY_RELEASE /home/yoshiaki/local/installed/lib/libhdf5.so

I have installed HDF5 at /home/yoshiaki/local/installed.
I hope that this is helpful for you.

Regards,
Yoshiaki

Sorry, I missed this line in the guide. But I still cannot get the right libcgns.so

I used the following command:

cd
git clone https://github.com/CGNS/CGNS.git
git checkout e0faea6
cd CGNS/src
export FC=mpifort
export CC=mpicc

./configure \
--prefix=/opt/cgns \
--with-hdf5=/opt/hdf5 \ # hdf5_1_8_18 installed here
--enable-lfs \
--enable-64bit \
--enable-shared \
--enable-parallel \
--enable-gcc \
--with-mpi

and here is part of the make output:

[root@localhost src]# make
mkdir lib
mpicc -g -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -o lib/cgns_error.o -c c gns_error.c
mpicc -g -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -I/opt/hdf5/include -o l ib/cgns_internals.o -c cgns_internals.c
mpicc -g -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -o lib/cgns_io.o -c cgns _io.c
mpicc -g -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -I/opt/hdf5/include -I/u sr/include -o lib/cgnslib.o -c cgnslib.c
mpifort -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -o lib/cgns_f.o -c cgns_f. F90
mpicc -g -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -Iadfh -I/opt/hdf5/inclu de -I/usr/include -o lib/ADFH.o -c adfh/ADFH.c
mpicc -g -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -I/opt/hdf5/include -I/u sr/include -o lib/pcgnslib.o -c pcgnslib.c
mpicc -g -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -Iadf -o lib/ADF_interfa ce.o -c adf/ADF_interface.c
mpicc -g -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -Iadf -o lib/ADF_interna ls.o -c adf/ADF_internals.c
mpicc -g -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -I/opt/hdf5/include -DLO WERCASE_ -o lib/cg_ftoc.o -c cg_ftoc.c
mpicc -g -O2 -fPIC -I. -DBUILD_HDF5 -DBUILD_PARALLEL -I/opt/hdf5/include -DLO WERCASE_ -o lib/cgio_ftoc.o -c cgio_ftoc.c
mpicc -shared -Wl,-rpath,/opt/cgns/lib:/root/CGNS/src/lib -o lib/libcgns.so lib /cgns_error.o lib/cgns_internals.o lib/cgns_io.o lib/cgnslib.o lib/cgns_f.o lib/ ADFH.o lib/pcgnslib.o lib/ADF_interface.o lib/ADF_internals.o lib/cg_ftoc.o lib/ cgio_ftoc.o
strip lib/libcgns.so
cd tools && make
...

However, linking to libhdf5.so is still missing:

[root@localhost src]# ldd ./lib/libcgns.so
linux-vdso.so.1 => (0x00007ffffb76c000)
libmpi.so.20 => /usr/lib64/libmpi.so.20 (0x00007fc0bcf07000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc0bcce5000)
libc.so.6 => /lib64/libc.so.6 (0x00007fc0bc951000)
libopen-rte.so.20 => /usr/lib64/libopen-rte.so.20 (0x00007fc0bc6d0000)
libopen-pal.so.20 => /usr/lib64/libopen-pal.so.20 (0x00007fc0bc3e5000)
librt.so.1 => /lib64/librt.so.1 (0x00007fc0bc1dd000)
libm.so.6 => /lib64/libm.so.6 (0x00007fc0bbf59000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007fc0bbd55000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fc0bbb51000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc0bd4b5000)

as Abe’s reply suggested, I have tried to use cmake and ccmake. It is not working because of missing HDF5_DIR which is required to find hdf5-config.cmake. (I have updated cmake/ccmake in CentOS 6 to latest)

Thanks a lot. However I just cannot use cmake to get things done. ccmake tells me it cannot find hdf5-config.cmake which is assumed to be in HDF5_DIR.
Could you tell me the version of your OS and cmake?

I am

Hi CatDog,

Could you please check the followings?:

  1. I am using Fedora23 and cmake3.4.3. I have also confirmed that CentOS6.2 with cmake2.8.12.2 works.
    However, cmake3.5, that is the latest version available from cmake website, seems not to work well in my environment. (I didn’t check this in detail, but the path to hdf5 library could not be specified correctly).

  2. Besides, you need not specify HDF5_DIR line on ccmake and ignore the message “cannot find the hdf5-config.cmake”.
    You can put “g” after setting correct hdf5 library path even if you do not specify HDF5_DIR.

  3. I have tried to use 64bit option in the latest CGNS3.3 develop branch (the latest commit “cc2d70” on last month), but the pyfr convert command fails with segmentation fault error.

I did not check this error in detail, but possibly due to my installation of hdf5, or bugs in the latest cgns.
I would like to know if you can run it correctly or not.
If you encounter this error, I recommend to turn off the 64bit option.

Cheers,
Yoshiaki

One more thing:
CGNS installation (commit cc2d70) using configure seems not to work.

I also experienced the compile error if turning on -with-hdf5 option.

Yoshiaki

Thanks a lot for your relpy.

I just tested the cgns without hdf5 support, the following commands works for pyfr at least for adf file format.

cd
cd CGNS/src/
FC="gfortran -g -O2 -fPIC" ./configure --enable-shared
make
cd ~/cgns_files
wget http://cgns.sourceforge.net/CGNSFiles/Bruce/yf17.cgns.gz
gunzip yf17.cgns.gz
LD_LIBRARY_PATH="$HOME/CGNS/src/lib:$LD_LIBRARY_PATH" pyfr import -t cgns yf17.cgns yf17.pyfrm

however, I found the bump file from CGNS website: http://cgns.sourceforge.net/CGNSFiles/Chris/bump.cgns.gz does report a segment fault for pyfr.

[root@localhost cgns_file]# LD_LIBRARY_PATH="$HOME/CGNS/src/lib:$LD_LIBRARY_PATH" pyfr import -t cgns bump.cgns bump.pyfrm
Traceback (most recent call last):
File "/opt/rh/rh-python34/root/usr/bin/pyfr", line 11, in <module>
sys.exit(main())
File "/opt/rh/rh-python34/root/usr/lib/python3.4/site-packages/pyfr/__main__.py", line 110, in main
args.process(args)
File "/opt/rh/rh-python34/root/usr/lib/python3.4/site-packages/pyfr/__main__.py", line 118, in process_import
reader = get_reader_by_name(args.type, args.inmesh)
File "/opt/rh/rh-python34/root/usr/lib/python3.4/site-packages/pyfr/readers/__init__.py", line 11, in get_reader_by_name
return subclass_where(BaseReader, name=name)(*args, **kwargs)
File "/opt/rh/rh-python34/root/usr/lib/python3.4/site-packages/pyfr/readers/cgns.py", line 384, in __init__
zone = CGNSZoneReader(cgns, base, 0)
File "/opt/rh/rh-python34/root/usr/lib/python3.4/site-packages/pyfr/readers/cgns.py", line 266, in __init__
zone = cgns.zone_read(base, idx)
File "/opt/rh/rh-python34/root/usr/lib/python3.4/site-packages/pyfr/readers/cgns.py", line 153, in zone_read
raise RuntimeError('**ReadCGNS_read: Incorrect zone type for file**')
RuntimeError: ReadCGNS_read: Incorrect zone type for file
Segmentation fault

Hi CatDog,

Currently, PyFR supports unstructured grid CGNS file only. The bump mesh you pointed is written in structured grid CGNS format.

If you make a mesh in Pointwise and written in unstructured grid CGNS format, it should work.

You can even point your CGNS library with ‘export PYFR_LIBRARY_PATH=(your CGNS library path)’, instead of LD_LIBRARY_PATH.

Recent CGNS (post commit e0faea6) fixed undefined H5 symbol issues. You can also get CGNS from develop branch of CGNS github.

The procedure Yoshiaki mentioned also works for me. Please use cmake to configure your CGNS build.

Regards,

Jin Seok

Hi, Dr. Jin Seok Park

Thanks a lot. But cgns with hdf5 still not working, I cannot figure out why.

I tried to use hdf5.1.10-patch1 and made a soft link to HDF5Config.cmake and let CGNS’s HDF5_DIR point to this folder.

wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.0-patch1/src/CMake-hdf5-1.10.0-patch1.tar.gz
tar xf CMake-hdf5-1.10.0-patch1.tar.gz
cd CMake-hdf5-1.10.0-patch1
#modify HDF5config.cmake to support some features as

However, it still not working.

I am using cmake 3.7.2 now. I am not sure if it is a problem of cmake.

I also tried commit “cc2d70”, which is green “2/2 checks OK” according to https://github.com/CGNS/CGNS/commits/develop.It still not working.

I think CMake make things complicated, CGNS core files are not very large, it only needs 9 files to compile and link. And I think libcgns.so is all what I need for pyfr. Here is some part of make output

### part of make output
mpicc -shared -Wl,-rpath,/opt/cgns/lib:/root/CGNS/src/lib -o lib/libcgns.so lib/cgns_error.o lib/cgns_internals.o lib/cgns_io.o lib/cgnslib.o lib/cgns_f.o lib/ADFH.o lib/ADF_interface.o lib/ADF_internals.o lib/cg_ftoc.o lib/cgio_ftoc.o
strip lib/libcgns.so

So I tried to modify it as this:

lib
At least it works without error using following commands:

cd
mkdir cgns_files
cd cgns_files
wget http://cgns.sourceforge.net/CGNSFiles/Bruce/yf17.cgns.gz
wget http://cgns.sourceforge.net/CGNSFiles/Bruce/yf17_hdf5.cgns.gz
gunzip yf17.cgns.gz
gunzip yf17_hdf5.cgns.gz
PYFR_LIBRARY_PATH="/root/CGNS/src/lib" pyfr import -t cgns yf17.cgns yf17.pyfrm
PYFR_LIBRARY_PATH="/root/CGNS/src/lib" pyfr import -t cgns yf17_hdf5.cgns yf17_hdf5.pyfrm

However, I did not compile it with parallel support yet. I am not familiar with ./configure kind of tools, but I think there must be a cleanner way to solve this problem.

The missing line is this

mpicc -shared -Wl,-rpath,/opt/cgns/lib:/root/CGNS/src/lib**:/opt/hdf5-1.8.18/lib** -o lib/libcgns.so **-L/opt/hdf5-1.8.18/lib -lhdf5** lib/cgns_error.o lib/cgns_internals.o lib/cgns_io.o lib/cgnslib.o lib/cgns_f.o lib/ADFH.o lib/ADF_interface.o lib/ADF_internals.o lib/cg_ftoc.o lib/cgio_ftoc.o

In future versions of PyFR it is planned that CGNS will not be supported.