Pastix4calculix installation error ~/build.make:64: *** missing separator. Stop

I encounter error messages when trying to install pastix4calculix.

blockquote
– Generate precision dependencies in /usr/local/PaStiX/pastix_src/test - Done
– — Python wrapper is disabled with static libraries
– Configuring done
– Generating done
– Build files have been written to: /usr/local/PaStiX/pastix_src/build
sopalin/parsec/CMakeFiles/parsec_headers_tgt.dir/build.make:64: *** missing separator. Stop.
CMakeFiles/bcsc_headers_tgt.dir/build.make:63: *** missing separator. Stop.
CMakeFiles/sopalin_headers.dir/build.make:63: *** missing separator. Stop.
make[1]: *** [CMakeFiles/Makefile2:1717: sopalin/parsec/CMakeFiles/parsec_headers_tgt.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs…
make[1]: *** [CMakeFiles/Makefile2:566: CMakeFiles/bcsc_headers_tgt.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:1006: CMakeFiles/sopalin_headers.dir/all] Error 2
spm/CMakeFiles/spm_headers_tgt.dir/build.make:66: *** missing separator. Stop.
make[1]: *** [CMakeFiles/Makefile2:1330: spm/CMakeFiles/spm_headers_tgt.dir/all] Error 2
kernels/gpus/CMakeFiles/pastix_kernels_cuda.dir/build.make:117: *** missing separator. Stop.
make[1]: *** [CMakeFiles/Makefile2:1633: kernels/gpus/CMakeFiles/pastix_kernels_cuda.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
sopalin/parsec/CMakeFiles/parsec_headers_tgt.dir/build.make:64: *** missing separator. Stop.
make[1]: *** [CMakeFiles/Makefile2:1717: sopalin/parsec/CMakeFiles/parsec_headers_tgt.dir/all] Error 2
make: *** [Makefile:141: all] Error 2

Looking at “*** missing separator”, thought it might due to vim indent setting? One of the generated build.make files looks like this,

	62	
	63	sopalin/parsec/pastix_sparsec.h: ../sopalin/parsec/Bad\ replacement\ pair\ \ 8\ in\ normal
	64	pastix_zparsec.h
	65	sopalin/parsec/pastix_sparsec.h: ../cmake_modules/morse_cmake/modules/precision_generator/codegen.py
	66	sopalin/parsec/pastix_sparsec.h: ../cmake_modules/morse_cmake/modules/precision_generator/subs.py
	67		@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold --progress-dir=/usr/local/PaStiX/pastix_src/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Generating pastix_sparsec.h"

or does it have anything to do with word wrap setting? Thanks for your advice.

Seems that using python2.7 instead of python3.8 solved the above issue.
However, I got another error about MPI_Status.

[ 73%] Building C object CMakeFiles/pastix.dir/sopalin/coeftab.c.o
[ 75%] Building C object CMakeFiles/pastix.dir/sopalin/schur.c.o
In file included from /usr/local/PaStiX/pastix_src/include/pastix.h:39:0,
from /usr/local/PaStiX/pastix_src/common/common.h:22,
from /usr/local/PaStiX/pastix_src/bcsc/bvec.c:15:
/usr/local/PaStiX/pastix_src/include/pastix/nompi.h:21:22: error: two or more data types in declaration specifiers
#define MPI_Datatype int
^
/usr/local/PaStiX/pastix_src/include/pastix/nompi.h:25:22: error: two or more data types in declaration specifiers
#define MPI_Comm int
^
/usr/local/PaStiX/pastix_src/include/pastix/nompi.h:22:22: error: two or more data types in declaration specifiers
#define MPI_Op int
^
/usr/local/PaStiX/pastix_src/include/pastix/nompi.h:23:22: error: two or more data types in declaration specifiers
#define MPI_Request int
^
/usr/local/PaStiX/pastix_src/include/pastix/nompi.h:26:22: error: two or more data types in declaration specifiers
#define MPI_Fint int
^
In file included from /usr/local/include/parsec/datatype.h:13:0,
from /usr/local/include/parsec.h:16,
from /usr/local/PaStiX/pastix_src/bcsc/bvec.c:19:
/usr/local/include/mpi.h:587:16: error: redefinition of ‘struct MPI_Status’
typedef struct MPI_Status {
^~~~~~~~~~
In file included from /usr/local/PaStiX/pastix_src/include/pastix.h:39:0,
from /usr/local/PaStiX/pastix_src/common/common.h:22,
from /usr/local/PaStiX/pastix_src/bcsc/bvec.c:15:
/usr/local/PaStiX/pastix_src/include/pastix/nompi.h:88:16: note: originally defined here
typedef struct MPI_Status{
^~~~~~~~~~

I installed openmpi before installing parsec.

With adding -DPASTIX_WITH_MPI=ON in make_pastix.sh, it seems OK.
Then when compiling ccx_2.19 with pastix, same error as kmallick had.

/usr/bin/ld: …/…/…/PaStiX/pastix_i8/lib/libpastix.a(isched_hwloc.c.o): undefined reference to symbol ‘hwloc_bitmap_iszero’
/usr/bin/ld: …/…/…/PaStiX/hwloc_i8/lib/libhwloc.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [Makefile_i8:39: ccx_2.19_i8] Error 1

Unfortunately, I didn’t get succeed when adding …/…/…/PaStiX/hwloc_i8/lib/libhwloc.so to the end as Kmallick did.

Do you have a powerful GPU? With a lot of trial and error I got some version working, but speedup was rather slow using older K80 gpu.

Finally, I got succeed with a bit modification in Makefile_i8.
The error seemed to be caused by circular dependency among libraries.

LIBS = \
       $(DIR)/spooles.a \
       ../../../ARPACK/libarpack_INTEL.a \
       $(PASTIX_LIBS) \
#       -lpthread -lm -lc

ccx_2.19_i8: $(OCCXMAIN) ccx_2.19.a $(LIBS)
	$(FC) -Wall -O2 -o $@ \
	$(OCCXMAIN) ccx_2.19.a -Wl,--start-group $(LIBS) -Wl,--end-group -lpthread -lm -lc

There was an error when I tried to run ccx_2.19_i8, missing libparsec.so.2, which was solved by adding its path to the environment variable.