PrincetonUniversity / STELLOPT

This is the GitHub repository for STELLOPT, the state-of-the-art stellarator optimization code.
https://princetonuniversity.github.io/STELLOPT/
MIT License
63 stars 18 forks source link

Cannot build STELLOPT `develop` branch anymore #279

Open eguiraud opened 3 weeks ago

eguiraud commented 3 weeks ago

Hello,

I just noticed that current develop branch does not build correctly anymore with the following make.inc, that used to work until recently on Ubuntu 22.04.

git-bisecting I found the last working commit was 9b630f938ebb49f94e53bd38a291ba0fb9a6ab42, although I do not understand at all how the next commit broke compilation.

make.inc ``` ####################################################################### # System-specific path and binary definitions ####################################################################### FC = gfortran BLASHOME = /usr BLACS_HOME = /usr SCALAPACK_HOME = /usr MPIHOME = /usr NETCDF_HOME = /usr HDF5_HOME = /usr PGPLOT_DIR = /usr SILOHOME = /usr COILOPT_PATH = GSLHOME = /usr GCC49_HOME=/usr/lib/gcc/x86_64-linux-gnu/4.9 ####################################################################### # Define Basic Utilities ####################################################################### SHELL = /bin/sh PWD1 = `pwd` MYHOME = $(HOME)/bin PRECOMP:= /usr/bin/cpp -traditional -DLINUX COMPILE = $(FC) COMPILE_FREE = $(FC) -ffree-form -ffree-line-length-none -ffixed-line-length-none LINK = ld $(FLAGS) -o LINK_AR = ar -ruv LINK_C = $(CC) -shared -Wl,-z-defs ####################################################################### # Define Compiler Flags ####################################################################### # FLAGS_R = -O2 -g -fexternal-blas -fbacktrace -fcheck=all FLAGS_R = -g -O2 -fexternal-blas -fbacktrace -fallow-argument-mismatch FLAGS_D = -g -O0 -fexternal-blas -fcheck=all LIBS = -L$(SCALAPACK_HOME)/lib -llapack -lscalapack-openmpi \ -L$(BLASHOME)/lib/libblas -lblas ####################################################################### # MPI Options ####################################################################### LMPI = T MPI_COMPILE = $(MPIHOME)/bin/mpif90 MPI_COMPILE_FREE = $(MPIHOME)/bin/mpif90 -ffree-form \ -ffree-line-length-none -ffixed-line-length-none MPI_COMPILE_C = $(MPIHOME)/bin/mpicc MPI_LINK = $(MPIHOME)/bin/mpif90 # For GCC6 #MPI_COMPILE = mpif90 #MPI_COMPILE_FREE = mpif90 -ffree-form \ # -ffree-line-length-none -ffixed-line-length-none #MPI_COMPILE_C = mpicc #MPI_LINK = mpif90 ####################################################################### # NAG Options ####################################################################### LNAG = F NAG_LIB = -L$(NAG_ROOT)/lib -lnag_nag ####################################################################### # NETCDF Options ####################################################################### LNETCDF = T NETCDF_INC = -I$(NETCDF_HOME)/include NETCDF_LIB = -L$(NETCDF_HOME)/lib/x86_64-linux-gnu -lnetcdf -lnetcdff # FOR GCC6 #NETCDF_LIB = -L$(NETCDF_HOME)/lib -lnetcdff ####################################################################### # NTCC Options ####################################################################### LNTCC = F NTCC_INC = -I$(NTCCHOME)/mod NTCC_LIB = -L$(NTCCHOME)/lib -laladdinsub -lr8slatec -ladpak\ -lcppsub -lcomput -lpspline -lportlib -lezcdf -lmds_sub \ -lmdstransp -lvaxonly ####################################################################### # HDF5 Options ####################################################################### LHDF5 = F HDF5_INC = -I$(HDF5_HOME)/include/hdf5/serial HDF5_LIB = -L$(HDF5_HOME)/lib/x86_64-linux-gnu -L$(HDF5_HOME)/lib/x86_64-linux-gnu/hdf5/serial -lhdf5_hl -lhdf5_fortran -lhdf5 \ -lhdf5hl_fortran -lpthread -lz -lm ####################################################################### # PGPLOT Options ####################################################################### LPGPLOT = F PGPLOT_INC = -I$(PGPLOT_DIR) PGPLOT_LIB = -L$(PGPLOT_DIR) -lpgplot -L/usr/lib/x86_64-linux-gnu -lX11 ####################################################################### # SILO Options ####################################################################### LSILO = F SILO_INC = -I$(SILOHOME)/include SILO_LIB = -L$(SILOHOME)/lib/x86_64-linux-gnu -lsiloh5 ####################################################################### # GENE Options ####################################################################### LGENE = F GENE_INC = -I$(GENE_PATH) GENE_DIR = $(GENE_PATH) LIB_GENE = libgene.a GENE_LIB = $(GENE_DIR)/$(LIB_GENE) \ -L/u/slazerso/src/GENE17_2016/external/pppl_cluster/futils/src -lfutils \ -L$(FFTWHOME)/lib -lfftw3 \ -L$(SLEPC_DIR)/$(PETSC_ARCH)/lib -lslepc \ -L$(PETSC_DIR)/$(PETSC_ARCH)/lib -lpetsc -lX11 ####################################################################### # COILOPT++ Options ####################################################################### LCOILOPT = F COILOPT_INC = -I$(COILOPT_PATH) COILOPTPP_DIR = $(COILOPT_PATH) LIB_COILOPTPP = libcoilopt++.a COILOPT_LIB = $(COILOPT_PATH)/$(LIB_COILOPTPP) \ -L$(GSLHOME)/lib/x86_64-linux-gnu -lgsl -lgslcblas -lstdc++ -lmpi_cxx ####################################################################### # TERPSICHORE Options ####################################################################### LTERPSICHORE= F TERPSICHORE_INC = -I$(TERPSICHORE_PATH) TERPSICHORE_DIR = $(TERPSICHORE_PATH) LIB_TERPSICHORE = libterpsichore.a TERPSICHORE_LIB = $(TERPSICHORE_DIR)/$(LIB_TERPSICHORE) ####################################################################### # TRAVIS Options ####################################################################### LTRAVIS= F TRAVIS_DIR = $(TRAVIS_PATH) LIB_TRAVIS = libtravis64_sopt.a LIB_MCONF = libmconf64.a TRAVIS_LIB = $(TRAVIS_DIR)/lib/$(LIB_TRAVIS) \ $(TRAVIS_DIR)/mag_conf/lib/$(LIB_MCONF) -lstdc++ ####################################################################### # LIBSTELL Shared Options ####################################################################### #LIB_SHARE = $(BLASHOME)/lib/libblas.so \ $(SCALAPACK_HOME)/lib/libscalapack-openmpi.so \ $(BLACS_HOME)/lib/libblacs-openmpi.so $(BLACS_HOME)/lib/libblacsCinit-openmpi.so $(BLACS_HOME)/lib/libblacsF77init-openmpi.so \ $(HDF5_HOME)/lib/x86_64-linux-gnu/libhdf5_hl.so $(HDF5_HOME)/lib/x86_64-linux-gnu/libhdf5_fortran.so $(HDF5_HOME)/lib/x86_64-linux-gnu/libhdf5hl_fortran.so $(HDF5_HOME)/lib/x86_64-linux-gnu/libhdf5.so \ $(HDF5_HOME)/lib/x86_64-linux-gnu/libmpi_usempif08.so $(HDF5_HOME)/lib/x86_64-linux-gnu/libhdf5_openmpi_fortran.so \ $(NETCDF_HOME)/lib/x86_64-linux-gnu/libnetcdf.so $(NETCDF_HOME)/lib/x86_64-linux-gnu/libnetcdff.so $(NETCDF_HOME)/lib/x86_64-linux-gnu/libnetcdf_c++.so \ $(SILOHOME)/lib/x86_64-linux-gnu/libsiloh5.so \ $(GSLHOME)/lib/x86_64-linux-gnu/libgsl.so \ $(GCC6_HOME)/libgfortran.so $(GCC6_HOME)/libstdc++.so \ $(MPIHOME)/lib/x86_64-linux-gnu/libmpi.so $(MPIHOME)/lib/x86_64-linux-gnu/libmpi_mpifh.so \ /usr/lib/x86_64-linux-gnu/libm.so /usr/lib/liblapack.so /usr/lib/x86_64-linux-gnu/libdl.so LIB_SHARE = $(BLASHOME)/lib/libblas.so \ $(SCALAPACK_HOME)/lib/libscalapack-openmpi.so.1 \ $(BLACS_HOME)/lib/libblacs-openmpi.so.1 \ $(BLACS_HOME)/lib/libblacsCinit-openmpi.so.1 \ $(BLACS_HOME)/lib/libblacsF77init-openmpi.so.1 \ $(HDF5_HOME)/lib/x86_64-linux-gnu/libhdf5_openmpi_fortran.so \ $(NETCDF_HOME)/lib/libnetcdf.so \ $(NETCDF_HOME)/lib/libnetcdff.so \ $(NETCDF_HOME)/lib/libnetcdf_c++.so \ $(SILOHOME)/lib/x86_64-linux-gnu/libsiloh5.so \ $(GSLHOME)/lib/x86_64-linux-gnu/libgsl.so \ $(GCC49_HOME)/libgfortran.so \ $(GCC49_HOME)/libstdc++.so \ $(MPIHOME)/lib/libmpi.so \ $(MPIHOME)/lib/libmpif77.so \ /usr/lib/x86_64-linux-gnu/libm.so \ /usr/lib/liblapack.so \ /usr/lib/x86_64-linux-gnu/libdl.so ####################################################################### ####################################################################### ####################################################################### ####################################################################### ####################################################################### ####################################################################### ####################################################################### ####################################################################### # DO NOT EDIT BELOW HERE DO NOT EDIT BELOW HERE ####################################################################### ####################################################################### ####################################################################### ####################################################################### ####################################################################### ####################################################################### ####################################################################### ####################################################################### # Some Initial stuff # HOME_BIN = $(MYHOME) HOME_BIN = ../../ MOD1_PATH = -I$(MYHOME)/libstell_dir MOD_PATH = CLEAN_ARCH = LIB_DIR = ../../LIBSTELL LIB = libstell.a # Handle Which Code is being CALLED ifeq ($(MAKECMDGOALS),xstelloptv2) PRECOMP += -DBNORM -DDKES_OPT -DBEAMS3D_OPT -DJINV_OPT -DNEO_OPT -DTXPORT_OPT -DDIAGNO_OPT -DDKES_OPT -DNEO_OPT -DSKS -DSKS2 VMEC_DIR ?= ../../VMEC2000 LIB_VMEC= libvmec.a MOD_PATH+= -I$(VMEC_DIR)/$(LOCTYPE) BEAMS3D_DIR = ../../BEAMS3D LIB_BEAMS3D = libbeams3d.a MOD_PATH+= -I$(BEAMS3D_DIR)/$(LOCTYPE) BOOTSJ_DIR = ../../BOOTSJ LIB_BOOTSJ = libbootsj.a MOD_PATH+= -I$(BOOTSJ_DIR)/$(LOCTYPE) BNORM_DIR = ../../BNORM LIB_BNORM = libbnorm.a MOD_PATH+= -I$(BNORM_DIR)/$(LOCTYPE) BOOZ_DIR = ../../BOOZ_XFORM LIB_BOOZ= libbooz.a MOD_PATH+= -I$(BOOZ_DIR)/$(LOCTYPE) COBRA_DIR = ../../COBRAVMEC LIB_COBRA = libcobra.a MOD_PATH+= -I$(COBRA_DIR)/$(LOCTYPE) DIAGNO_DIR = ../../DIAGNO LIB_DIAGNO= libdiagno.a MOD_PATH+= -I$(DIAGNO_DIR)/$(LOCTYPE) DKES_DIR= ../../DKES LIB_DKES= libdkes.a MOD_PATH+= -I$(DKES_DIR)/$(LOCTYPE) JINV_DIR = ../../J_INVARIANT LIB_JINV = libjinv.a MOD_PATH+= -I$(JINV_DIR)/$(LOCTYPE) MGRID_DIR= ../../MAKEGRID LIB_MGRID= libmakegrid.a MOD_PATH+= -I$(MGRID_DIR)/$(LOCTYPE) NEO_DIR = ../../NEO LIB_NEO = libneo.a MOD_PATH+= -I$(NEO_DIR)/$(LOCTYPE) LIB_LINK= $(VMEC_DIR)/$(LOCTYPE)/$(LIB_VMEC) \ $(BEAMS3D_DIR)/$(LOCTYPE)/$(LIB_BEAMS3D) \ $(BOOTSJ_DIR)/$(LOCTYPE)/$(LIB_BOOTSJ) \ $(BNORM_DIR)/$(LOCTYPE)/$(LIB_BNORM) \ $(BOOZ_DIR)/$(LOCTYPE)/$(LIB_BOOZ) \ $(COBRA_DIR)/$(LOCTYPE)/$(LIB_COBRA) \ $(DIAGNO_DIR)/$(LOCTYPE)/$(LIB_DIAGNO) \ $(DKES_DIR)/$(LOCTYPE)/$(LIB_DKES) \ $(JINV_DIR)/$(LOCTYPE)/$(LIB_JINV) \ $(MGRID_DIR)/$(LOCTYPE)/$(LIB_MGRID) \ $(NEO_DIR)/$(LOCTYPE)/$(LIB_NEO) else LGENE = F LCOILOPT = F LTERPSICHORE = F LTRAVIS = F endif ifeq ($(MAKECMDGOALS),xanimec) PRECOMP += -D_ANIMEC endif ifeq ($(MAKECMDGOALS),xparvmec) PRECOMP += -DSKS -DSKS2 endif ifeq ($(MAKECMDGOALS),xsiesta) PRECOMP += -DSKS -DSKS2 endif ifeq ($(MAKECMDGOALS),xgtovmi) ifeq ($(LPGPLOT),T) MOD1_PATH += $(PGPLOT_INC) LIB_LINK += $(PGPLOT_LIB) endif endif ifeq ($(MAKECMDGOALS),xdes_plot) ifeq ($(LPGPLOT),T) MOD1_PATH += $(PGPLOT_INC) LIB_LINK += $(PGPLOT_LIB) endif endif # Other Codes ifeq ($(LGENE),T) MOD1_PATH += $(GENE_INC) PRECOMP += -DGENE MOD_PATH += -I$(GENE_DIR) else GENE_LIB = GENE_DIR = LIB_GENE = endif ifeq ($(LCOILOPT),T) MOD1_PATH += $(COILOPT_INC) PRECOMP += -DCOILOPTPP MOD_PATH += -I$(COILOPTPP_DIR) else COILOPT_LIB = COILOPTPP_DIR = LIB_COILOPTPP = endif ifeq ($(LTERPSICHORE),T) MOD1_PATH += $(TERPSICHORE_INC) PRECOMP += -DTERPSICHORE MOD_PATH += -I$(TERPSICHORE_DIR) else TERPSICHORE_LIB = TERPSICHORE_DIR = LIB_TERPSICHORE = endif ifeq ($(LTRAVIS),T) PRECOMP += -DTRAVIS else TRAVIS_LIB = TRAVIS_DIR = LIB_TRAVIS = endif # Handle other codes LIB_LINK += $(GENE_LIB) $(COILOPT_LIB) $(TERPSICHORE_LIB) $(TRAVIS_LIB) # Add libraries to LIB_LINK # LIB_LINK+= $(MYHOME)/libstell.a $(LIBS) # This version avoids referencing the bin directory for the symbolic link to lib. # Which we can't reference since we now have the awk file in the main directory. LIB_LINK+= $(LIB_DIR)/$(LOCTYPE)/$(LIB) $(LIBS) # 3rd Party Libs ifeq ($(LMPI),T) PRECOMP += -DMPI_OPT VMEC_DIR = ../../PARVMEC COMPILE = $(MPI_COMPILE) COMPILE_FREE = $(MPI_COMPILE_FREE) LINK = $(MPI_COMPILE) $(FLAGS) -o LINK_C = $(MPI_COMPILE_C) -shared -Wl,-z,defs endif ifeq ($(LNETCDF),T) MOD1_PATH += $(NETCDF_INC) PRECOMP += -DNETCDF LIB_LINK += $(NETCDF_LIB) MOD_PATH += $(NETCDF_INC) endif ifeq ($(LHDF5),T) MOD1_PATH += $(HDF5_INC) PRECOMP += -DLHDF5 -DH5_USE_16_API LIB_LINK += $(HDF5_LIB) MOD_PATH += $(HDF5_INC) endif ifeq ($(LNAG),T) PRECOMP += -DNAG LIB_LINK += $(NAG_LIB) endif ifeq ($(LNTCC),T) MOD1_PATH += $(NTCC_INC) PRECOMP += -DLADAS -DNTCC LIB_LINK += $(NTCC_LIB) MOD_PATH += $(NTCC_INC) endif ifeq ($(LSILO),T) MOD1_PATH += $(SILO_INC) PRECOMP += -DSILO_AVAI LIB_LINK += $(SILO_LIB) endif # This is hear because of MPI above resetting LINK ifeq ($(MAKECMDGOALS),libstell.a) LINK = $(LINK_AR) COMPILE += -fPIC COMPILE_FREE += -fPIC INC_PATH = endif ifeq ($(MAKECMDGOALS),libstell.so) LIB_LINK = $(LIB_SHARE) COMPILE += -fPIC COMPILE_FREE += -fPIC INC_PATH = endif #This must come here MOD_PATH+= -I ```

build error with current develop branch (although unfortunately build_all returns with exit code 0 anyways):

make: *** [makefile:36: clean_release] Error 2
Beginning release compilation and archiving of shared libstell
make[1]: Entering directory '/home/devuser/STELLOPT/LIBSTELL/Release'
make[1]: *** No rule to make target 'libstell'.  Stop.
make[1]: Leaving directory '/home/devuser/STELLOPT/LIBSTELL/Release'
make: *** [makefile:59: shared_release] Error 2
lazersos commented 3 weeks ago

@eguiraud Can you pleas upload the log file produced by the following command?

./build_all > log.txt

You probably need to set MACHINE=debian but the log file will help us to confirm what is going wrong. The make.inc you've posted is VERY old and should no longer be used. Currently the code uses the MACHINE variable to determin which SHARE/make_machine.inc file to use to build the code.