diff --git a/.ci_support/linux_64_mpimpich.yaml b/.ci_support/linux_64_mpimpich.yaml index e51ed00..13665e6 100644 --- a/.ci_support/linux_64_mpimpich.yaml +++ b/.ci_support/linux_64_mpimpich.yaml @@ -7,7 +7,7 @@ cdt_name: channel_sources: - conda-forge channel_targets: -- conda-forge main +- conda-forge siesta_rc docker_image: - quay.io/condaforge/linux-anvil-cos7-x86_64 fortran_compiler: diff --git a/.ci_support/linux_64_mpinompi.yaml b/.ci_support/linux_64_mpinompi.yaml index 13d314f..8c18fce 100644 --- a/.ci_support/linux_64_mpinompi.yaml +++ b/.ci_support/linux_64_mpinompi.yaml @@ -7,7 +7,7 @@ cdt_name: channel_sources: - conda-forge channel_targets: -- conda-forge main +- conda-forge siesta_rc docker_image: - quay.io/condaforge/linux-anvil-cos7-x86_64 fortran_compiler: diff --git a/.ci_support/linux_64_mpiopenmpi.yaml b/.ci_support/linux_64_mpiopenmpi.yaml index b6afefd..ca66028 100644 --- a/.ci_support/linux_64_mpiopenmpi.yaml +++ b/.ci_support/linux_64_mpiopenmpi.yaml @@ -7,7 +7,7 @@ cdt_name: channel_sources: - conda-forge channel_targets: -- conda-forge main +- conda-forge siesta_rc docker_image: - quay.io/condaforge/linux-anvil-cos7-x86_64 fortran_compiler: diff --git a/.ci_support/osx_64_mpimpich.yaml b/.ci_support/osx_64_mpimpich.yaml index 8a4bb32..3c16177 100644 --- a/.ci_support/osx_64_mpimpich.yaml +++ b/.ci_support/osx_64_mpimpich.yaml @@ -7,7 +7,7 @@ c_compiler_version: channel_sources: - conda-forge channel_targets: -- conda-forge main +- conda-forge siesta_rc fortran_compiler: - gfortran fortran_compiler_version: diff --git a/.ci_support/osx_64_mpinompi.yaml b/.ci_support/osx_64_mpinompi.yaml index 35de905..86277f4 100644 --- a/.ci_support/osx_64_mpinompi.yaml +++ b/.ci_support/osx_64_mpinompi.yaml @@ -7,7 +7,7 @@ c_compiler_version: channel_sources: - conda-forge channel_targets: -- conda-forge main +- conda-forge siesta_rc fortran_compiler: - gfortran fortran_compiler_version: diff --git a/.ci_support/osx_64_mpiopenmpi.yaml b/.ci_support/osx_64_mpiopenmpi.yaml index 60a4d42..d73b766 100644 --- a/.ci_support/osx_64_mpiopenmpi.yaml +++ b/.ci_support/osx_64_mpiopenmpi.yaml @@ -7,7 +7,7 @@ c_compiler_version: channel_sources: - conda-forge channel_targets: -- conda-forge main +- conda-forge siesta_rc fortran_compiler: - gfortran fortran_compiler_version: diff --git a/README.md b/README.md index 1158a19..0690524 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ About siesta-feedstock ====================== -Feedstock license: [BSD-3-Clause](https://github.com/conda-forge/feedstock-siesta-feedstock/blob/main/LICENSE.txt) +Feedstock license: [BSD-3-Clause](https://github.com/conda-forge/siesta-feedstock/blob/main/LICENSE.txt) Home: https://gitlab.com/siesta-project @@ -33,8 +33,8 @@ Current build status
- - + + @@ -42,43 +42,43 @@ Current build status diff --git a/conda-forge.yml b/conda-forge.yml index a90798d..4752e40 100644 --- a/conda-forge.yml +++ b/conda-forge.yml @@ -8,3 +8,8 @@ github: tooling_branch_name: main conda_build: pkg_format: '2' +bot: + abi_migration_branches: + - main + - v4.1.x + # no v4.0.x diff --git a/recipe/arch.make.MPI b/recipe/arch.make.MPI deleted file mode 100644 index 5bd8d81..0000000 --- a/recipe/arch.make.MPI +++ /dev/null @@ -1,57 +0,0 @@ -.SUFFIXES: -.SUFFIXES: .f .F .o .c .a .f90 .F90 - -SIESTA_ARCH = unknown - -CC = %CC% -FC = mpifort -FC_SERIAL = %FC% -FPP := $(FC_SERIAL) -E -P -x c - -CFLAGS = %CFLAGS% -FFLAGS = %FFLAGS% - -AR = %AR% -RANLIB = %RANLIB% - -SYS = nag - -SP_KIND = 4 -DP_KIND = 8 -KINDS = $(SP_KIND) $(DP_KIND) - -COMP_LIBS = - -FPPFLAGS = -DFC_HAVE_ABORT -DCDF -DMPI -DSIESTA__MRRR - -LIBS = -lscalapack -llapack -lblas -LIBS += -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz - -INCFLAGS = %INCFLAGS% - -LDFLAGS = %LDFLAGS% - -MPI_INTERFACE=libmpi_f90.a -MPI_INCLUDE=. - -# Dependency rules --------- - -# -g -O1 # your appropriate flags here... -FFLAGS_DEBUG = %FFLAGS_DEBUG% - -# The atom.f code is very vulnerable. Particularly the Intel compiler -# will make an erroneous compilation of atom.f with high optimization -# levels. -atom.o: atom.F - $(FC) -c $(FFLAGS_DEBUG) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_fixed_F) $< - -.c.o: - $(CC) -c $(CFLAGS) $(INCFLAGS) $(CPPFLAGS) $< -.F.o: - $(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_fixed_F) $< -.F90.o: - $(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_free_F90) $< -.f.o: - $(FC) -c $(FFLAGS) $(INCFLAGS) $(FCFLAGS_fixed_f) $< -.f90.o: - $(FC) -c $(FFLAGS) $(INCFLAGS) $(FCFLAGS_free_f90) $< diff --git a/recipe/arch.make.SEQ b/recipe/arch.make.SEQ deleted file mode 100644 index 07938f3..0000000 --- a/recipe/arch.make.SEQ +++ /dev/null @@ -1,54 +0,0 @@ -.SUFFIXES: -.SUFFIXES: .f .F .o .c .a .f90 .F90 - -SIESTA_ARCH = unknown - -CC = %CC% -FC = %FC% -FC_SERIAL = %FC% -FPP := $(FC_SERIAL) -E -P -x c - -CFLAGS = %CFLAGS% -FFLAGS = %FFLAGS% - -AR = %AR% -RANLIB = %RANLIB% - -SYS = nag - -SP_KIND = 4 -DP_KIND = 8 -KINDS = $(SP_KIND) $(DP_KIND) - -COMP_LIBS = - -FPPFLAGS = -DFC_HAVE_ABORT -DCDF - -LIBS = -llapack -lblas -LIBS += -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz - -INCFLAGS = %INCFLAGS% - -LDFLAGS = %LDFLAGS% - -# Dependency rules --------- - -# -g -O1 # your appropriate flags here... -FFLAGS_DEBUG = %FFLAGS_DEBUG% - -# The atom.f code is very vulnerable. Particularly the Intel compiler -# will make an erroneous compilation of atom.f with high optimization -# levels. -atom.o: atom.F - $(FC) -c $(FFLAGS_DEBUG) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_fixed_F) $< - -.c.o: - $(CC) -c $(CFLAGS) $(INCFLAGS) $(CPPFLAGS) $< -.F.o: - $(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_fixed_F) $< -.F90.o: - $(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_free_F90) $< -.f.o: - $(FC) -c $(FFLAGS) $(INCFLAGS) $(FCFLAGS_fixed_f) $< -.f90.o: - $(FC) -c $(FFLAGS) $(INCFLAGS) $(FCFLAGS_free_f90) $< diff --git a/recipe/build.sh b/recipe/build.sh index ddb7e31..1ea4654 100644 --- a/recipe/build.sh +++ b/recipe/build.sh @@ -3,21 +3,15 @@ # error on faulty execution set -ex -# Remove __FILE__ lines in utils file. -sed -i -e "s:__FILE__:'fdf/utils.F90':g" Src/fdf/utils.F90 - echo "Runing with mpi=$mpi and blas=$blas_impl" echo "Build on target_platform=$target_platform" echo "Build on uname=$(uname)" -# Use the default utilities, for now. -cd Obj -../Src/obj_setup.sh +# OpenMPI has the *.mod files in /lib +export FFLAGS="$FFLAGS -I$PREFIX/lib" #if [[ "$target_platform" == linux-* || "$target_platform" == "osx-arm64" ]]; then # Workaround for https://github.com/conda-forge/scalapack-feedstock/pull/30#issuecomment-1061196317 - export FFLAGS="$FFLAGS -fallow-argument-mismatch" - export DEBUG_FFLAGS="$DEBUG_FFLAGS -fallow-argument-mismatch" export OMPI_FCFLAGS="$FFLAGS" #fi @@ -36,123 +30,76 @@ if [[ "$(uname)" == "Darwin" ]]; then # (for architecture x86_64) because larger updated load commands do not fit (the program must be relinked, and you may need to use -headerpad or -headerpad_max_install_names) export SONAME="-Wl,-install_name,@rpath/" export LDFLAGS="${LDFLAGS} -headerpad_max_install_names" + + # Currently there is a problem with the compiler on Mac + # The version-info will be created in a wrong setup... + # So we have to do something else... + # This will just mean we won't parse the flags etc. + # Should not be a problem. + sed -i -e 's:@:#:g' Src/version-info-template.inc else export SONAME="-Wl,-soname," fi if [[ "$mpi" != "nompi" ]]; then - # This is not necessary as the arch.make files - # handles this correctly echo "passing on setting CC and FC for non-mpi" - #export CC=mpicc - #export FC=mpifort + export CC=mpicc + export FC=mpifort fi # Get the version echo "CC version string: $($CC --version | head -1)" if [[ -n "$GCC_AR" ]]; then - repl="$repl;s:%AR%:$GCC_AR:g" -else - repl="$repl;s:%AR%:$AR:g" + export AR=$GCC_AR fi if [[ -n "$GCC_RANLIB" ]]; then - repl="$repl;s:%RANLIB%:$GCC_RANLIB:g" -else - repl="$repl;s:%RANLIB%:$RANLIB:g" + export RANLIB=$GCC_RANLIB fi -repl="$repl;s:%CC%:$CC:g" -repl="$repl;s:%FC%:$FC:g" -# No OpenMP! -repl="$repl;s:%CFLAGS%:${CFLAGS//-fopenmp/}:g" -repl="$repl;s:%FFLAGS%:${FFLAGS//-fopenmp/}:g" -repl="$repl;s:%FFLAGS_DEBUG%:${DEBUG_FFLAGS//-fopenmp/}:g" -repl="$repl;s:%INCFLAGS%:-I$PREFIX/include:g" -repl="$repl;s:%LDFLAGS%:-L$PREFIX/lib $LDFLAGS:g" +export LDFLAGS="-L$PREFIX/lib $LDFLAGS" if [[ "$mpi" == "nompi" ]]; then - sed -e "$repl" $RECIPE_DIR/arch.make.SEQ > arch.make + MPI=OFF else - sed -e "$repl" $RECIPE_DIR/arch.make.MPI > arch.make + MPI=ON fi -echo "<<< arch.make >>>" -cat arch.make -echo "<<< arch.make done >>>" - -function mkcp { - local target=$1 - shift - local exe=$target - if [ $# -ge 1 ]; then - exe=$1 - shift - fi - echo "RUNNING: make $target" - make $target - cp -av $target $PREFIX/bin/$exe - make clean -} - -# First make a few of the libraries to check that they work! -make libxmlparser.a -# Try and build FoX to catch any debugs -# make FoX/.config || cat FoX/config.log - -ls -l -make version -cat compinfo.F90 -mkcp siesta -make version -mkcp transiesta - -cd ../Util/Bands -mkcp eigfat2plot -mkcp gnubands - -cd ../COOP -mkcp mprop -mkcp fat - -cd ../Denchar/Src -mkcp denchar - -cd ../../Eig2DOS -mkcp Eig2DOS - -# Apparently the NetCDF module can *only* be found in Siesta compilation -# ??? -#cd ../Gen-basis -# mkcp gen-basis -# mkcp ioncat - -cd ../Grid -mkcp grid2cube -# mkcp cdf2xsf -# mkcp cdf2grid -mkcp grid_rotate -mkcp grid_supercell - -cd ../Optical -mkcp optical -mkcp optical_input - -cd ../TBTrans -mkcp tbtrans tbtrans_old -cd ../TBTrans_rep -mkcp tbtrans - -cd ../Vibra/Src -mkcp fcbuild -mkcp vibra - -cd ../../VCA -mkcp mixps -mkcp fractional - -cd ../WFS -mkcp readwf -mkcp readwfx -mkcp info_wfsx -mkcp wfs2wfsx -mkcp wfsx2wfs -# mkcp wfsnc2fsx + +cmake_opts=( + # Add NetCDF + "-DWITH_LIBXC=on" + "-DWITH_NCDF=on" + + # Disable flook + "-DWITH_FLOOK=off" + + # MPI + "-DWITH_MPI=${MPI}" + + # We will fetch the compatible versions + "-DLIBFDF_FIND_METHOD=fetch" + "-DLIBGRIDXC_FIND_METHOD=fetch" + "-DLIBPSML_FIND_METHOD=fetch" + "-DXMLF90_FIND_METHOD=fetch" + + "-DCMAKE_BUILD_TYPE=Release" + "-DCMAKE_INSTALL_LIBDIR=lib" + + # Request that the makefile is verbose + "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON" + + # I don't think these are required. + # They are intended to omit linking to direct + "-DCMAKE_FIND_FRAMEWORK=NEVER" + "-DCMAKE_FIND_APPBUNDLE=NEVER" + + # To not clutter things + "-DCMAKE_INSTALL_PREFIX=$PREFIX" +) + +cmake -S. -Bobj_cmake "${cmake_opts[@]}" + +echo ">>>>>>>" +echo "Showing version-info.inc: " +cat obj_cmake/Src/version-info.inc +echo ">>>>>>>" +cmake --build obj_cmake --target install diff --git a/recipe/conda_build_config.yaml b/recipe/conda_build_config.yaml index b883e82..8dfeb13 100644 --- a/recipe/conda_build_config.yaml +++ b/recipe/conda_build_config.yaml @@ -2,3 +2,7 @@ mpi: - nompi - mpich # [unix] - openmpi # [unix] + +channel_targets: + # Remove this for proper releases + - conda-forge siesta_rc diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 5e5c1af..387df05 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -1,22 +1,20 @@ {% set name = "siesta" %} -{% set siesta_version = "4.0.2" %} -{% set version = siesta_version.split("-b")[0] %} -{% set sha256 = "04300ba77a32d0ba2844d704e1c404d1417bd8c1ab76dba9d19f074076d9bc18" %} +{% set siesta_version = "5.0.0-beta1" %} +# This changes the X.Y.Z-betaW to X.Y.ZrcW +{% set version = "rc".join(siesta_version.replace("beta", "b").split("-b")) %} +{% set sha256 = "fdc03d224b07c55cfad629958901e7008bc3a1973c3ee7749bc2310671f49ac2" %} package: name: {{ name }} version: {{ version }} source: - fn: {{ name }}-v{{ siesta_version }}.tar.bz2 - url: https://gitlab.com/siesta-project/{{ name }}/-/archive/v{{ siesta_version }}/siesta-v{{ siesta_version }}.tar.bz2 + fn: {{ name }}-{{ siesta_version }}.tar.gz + url: https://gitlab.com/siesta-project/siesta/-/releases/{{ siesta_version }}/downloads/siesta-{{ siesta_version }}.tar.gz sha256: {{ sha256 }} - patches: - # make version.o a phony target - - patches/makefile_conda-clean.patch # Default build version to be stepped with every new build! -{% set build = 13 %} +{% set build = 0 %} # Define build matrix for MPI vs. non-mpi ## ensure mpi is defined (needed for conda-smithy recipe-lint) @@ -42,13 +40,16 @@ requirements: build: - {{ compiler('fortran') }} - {{ compiler('c') }} - - openmpi-mpifort # [mpi == 'openmpi'] - make # [not win] + - git + - cmake + - pkg-config host: - libblas - liblapack - {{ mpi }} # [mpi != 'nompi'] - scalapack # [mpi != 'nompi'] + - libxc >6.0 # need to list hdf5, libnetcdf and netcdf-fortran twice to get version # pinning from conda_build_config and build pinning from {{ mpi_prefix }} - hdf5 @@ -60,6 +61,7 @@ requirements: run: - {{ mpi }} # [mpi != 'nompi'] - scalapack # [mpi != 'nompi'] + - libxc >6.0 - hdf5 * {{ mpi_prefix }}_* - libnetcdf * {{ mpi_prefix }}_* - netcdf-fortran * {{ mpi_prefix }}_* diff --git a/recipe/patches/makefile_conda-clean.patch b/recipe/patches/makefile_conda-clean.patch deleted file mode 100644 index f19ab51..0000000 --- a/recipe/patches/makefile_conda-clean.patch +++ /dev/null @@ -1,32 +0,0 @@ -diff --git a/Src/Makefile b/Src/Makefile -index a61b65a8..127d2c9c 100644 ---- a/Src/Makefile -+++ b/Src/Makefile -@@ -290,18 +290,25 @@ ifeq ($(COMPILER_VERSION),) - COMPILER_VERSION := Unknown version - endif - -+.PHONY: version version.o -+version.o: version - version: version.F90 - @echo - @echo "==> Incorporating information about present compilation (compiler and flags)" -- @sed "s'SIESTA_ARCH'${SIESTA_ARCH}'g;s'FFLAGS'${FC} ${FFLAGS}'g;\ -+ @sed "s'SIESTA_ARCH'${SIESTA_ARCH}'g;s'FFLAGS'$(shell basename ${FC}) ${FFLAGS}'g;\ - s^COMPILER_VERSION^$(COMPILER_VERSION)^;\ - s'SIESTA_VERSION'$$(cat ${ tmp.F90 -+ s'FPPFLAGS'$(FPPFLAGS) $(DEFS)'g;s' -fdebug-prefix-map=[^[:space:]\"]*''g;\ -+ s'-isystem [^[:space:]\"]*''g" $< > tmp.F90 -+ @echo "after sed" -+ @cat tmp.F90 - @awk '{if (length>80) { cur=78; \ - printf "%s&\n",substr($$0,0,78); \ - while(length-cur>78){ cur=cur+76 ; \ - printf "&%s&\n",substr($$0,cur-76,76) \ - } printf "&%s\n",substr($$0,cur)} else { print $$0 }}' tmp.F90 > compinfo.F90 -+ @echo "after awk" -+ @cat compinfo.F90 - @($(MAKE) "FPPFLAGS=$(FPPFLAGS)" "DEFS=$(DEFS)" compinfo.o) - @mv compinfo.o version.o - @echo diff --git a/recipe/run_test.sh b/recipe/run_test.sh index 5a92570..f3b6014 100644 --- a/recipe/run_test.sh +++ b/recipe/run_test.sh @@ -4,13 +4,13 @@ set -e echo "Running tests" ls -l -for cmd in siesta transiesta tbtrans \ +for cmd in siesta tbtrans phtrans \ eigfat2plot gnubands mprop fat \ denchar Eig2DOS \ grid2cube grid_rotate grid_supercell \ fcbuild vibra \ mixps fractional \ - readwf readwfx info_wfsx wfs2wfsx wfsx2wfs + readwf readwfx wfs2wfsx wfsx2wfs do echo "checking cmd = $cmd" command -v $cmd @@ -23,21 +23,25 @@ export OMPI_MCA_plm=isolated export OMPI_MCA_btl_vader_single_copy_mechanism=none export OMPI_MCA_rmaps_base_oversubscribe=yes -# Run H2O system -echo "Running h2o test" -mkdir h2o +# Run CG system +echo "Running CG test" +mkdir cg -pushd h2o -cp ../Tests/Pseudos/H.psf . -cp ../Tests/Pseudos/O.psf . -cp ../Tests/h2o/h2o.fdf . +pushd cg + +cp -av ../Tests/08.GeometryOptimization/basejob.fdf cg.fdf +echo "SystemLabel cg" >> cg.fdf +echo "MD.TypeOfRun cg" >> cg.fdf +cp -av ../Tests/Pseudos/Mg.psf . +cp -av ../Tests/Pseudos/C.psf . +cp -av ../Tests/Pseudos/O.psf . if [[ "$mpi" == "nompi" ]]; then - siesta < h2o.fdf > h2o.out + siesta cg.fdf > cg.out else - mpirun siesta < h2o.fdf > h2o.out + mpirun siesta cg.fdf > cg.out fi -echo "TEST START : h2o" -cat h2o.out -echo "TEST END : h2o" +echo "TEST START : cg" +cat cg.out +echo "TEST END : cg" popd
linux_64_mpimpich - - variant + + variant
linux_64_mpinompi - - variant + + variant
linux_64_mpiopenmpi - - variant + + variant
osx_64_mpimpich - - variant + + variant
osx_64_mpinompi - - variant + + variant
osx_64_mpiopenmpi - - variant + + variant