New port: science/cp2k: Quantum chemistry and solid state physics software package

This commit is contained in:
Yuri Victorovich 2018-09-04 21:28:27 +00:00
parent 2c6b7d5626
commit e11a6df6cf
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=478991
5 changed files with 167 additions and 0 deletions

View file

@ -49,6 +49,7 @@
SUBDIR += clipper
SUBDIR += colt
SUBDIR += coot
SUBDIR += cp2k
SUBDIR += crf++
SUBDIR += dalton
SUBDIR += datawarrior

55
science/cp2k/Makefile Normal file
View file

@ -0,0 +1,55 @@
# $FreeBSD$
PORTNAME= cp2k
DISTVERSION= 6.1
CATEGORIES= science
MASTER_SITES= SF/${PORTNAME}/
MAINTAINER= yuri@FreeBSD.org
COMMENT= Quantum chemistry and solid state physics software package
LICENSE= GPLv2+
LIB_DEPENDS= libblas.so:math/blas \
libfftw3.so:math/fftw3 \
liblapack.so:math/lapack
USES= fortran gmake python:build tar:bz2
MAKEFILE= ${WRKSRC}/makefiles/Makefile
MAKE_ARGS= XARCH=FreeBSD-${NOLIBINT}libint-gfortran VERSION=${VERSION} FC=gfortran${GCC_DEFAULT} CC=${CC} LD=gfortran${GCC_DEFAULT}
BUILD_WRKSRC= ${WRKSRC}/.build
INSTALL_WRKSRC= ${BUILD_WRKSRC}
BINARY_ALIAS= python=${PYTHON_CMD}
OPTIONS_DEFINE= LIBINT
OPTIONS_SINGLE= MULTIPROCESSING
OPTIONS_SINGLE_MULTIPROCESSING= SERIAL OPENMP # for the complete list see "3a. ARCH files" in https://www.cp2k.org/howto:compile
OPTIONS_DEFAULT= LIBINT SERIAL
MULTIPROCESSING_DESC= Multiprocessing
LIBINT_DESC= Use libint to evaluate integrals
LIBINT_VARS_OFF= NOLIBINT=no
LIBINT_LIB_DEPENDS= libint.so:science/libint
SERIAL_DESC= Single core (no multiprocessing)
SERIAL_VARS= VERSION=sopt
OPENMP_VARS= VERSION=ssmp
OPENMP_LIB_DEPENDS= libomp.so:devel/openmp
OPENMP_BROKEN= undefined reference to `dfftw_plan_with_nthreads_': https://github.com/cp2k/cp2k/issues/12 (need OPENMP=on in math/fftw3 ?)
PLIST_FILES= bin/${PORTNAME}
post-patch:
@${REINPLACE_CMD} 's|^LIBS.*=.*|& ${LDFLAGS}|' ${WRKSRC}/arch/FreeBSD-*
pre-build:
@${MKDIR} ${BUILD_WRKSRC}
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/exe/*/${PORTNAME}.* ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
.include <bsd.port.mk>

3
science/cp2k/distinfo Normal file
View file

@ -0,0 +1,3 @@
TIMESTAMP = 1536086561
SHA256 (cp2k-6.1.tar.bz2) = af803558e0a6b9e9d9ce8a3ab955ba32bacd179922455424e061c82c9fefa34b
SIZE (cp2k-6.1.tar.bz2) = 55139278

View file

@ -0,0 +1,96 @@
--- makefiles/Makefile.orig 2018-09-04 19:11:12 UTC
+++ makefiles/Makefile
@@ -11,7 +11,7 @@ SHELL = /bin/sh
# also works fine
#
CP2KHOME := $(abspath $(PWD)/..)
-ARCH := local
+XARCH := local
export VERSION=sopt
MAKEFILE := $(CP2KHOME)/makefiles/Makefile
@@ -25,7 +25,7 @@ PRETTYOBJDIR := $(CP2KHOME)/obj/prettifi
DOXIFYOBJDIR := $(CP2KHOME)/obj/doxified
TOOLSRC := $(CP2KHOME)/tools
SRCDIR := $(CP2KHOME)/src
-EXEDIR := $(MAINEXEDIR)/$(ARCH)
+EXEDIR := $(MAINEXEDIR)/$(XARCH)
REVISION := $(shell $(CP2KHOME)/tools/build_utils/get_revision_number $(SRCDIR))
@@ -39,10 +39,10 @@ EXE_NAMES := $(basename $(notdir $(ALL_E
# this only happens on stage 3 and 4
ifneq ($(ONEVERSION),)
MODDEPS = "lower"
-include $(CP2KHOME)/arch/$(ARCH).$(ONEVERSION)
-LIBDIR := $(MAINLIBDIR)/$(ARCH)/$(ONEVERSION)
-OBJDIR := $(MAINOBJDIR)/$(ARCH)/$(ONEVERSION)
-TSTDIR := $(MAINTSTDIR)/$(ARCH)/$(ONEVERSION)
+include $(CP2KHOME)/arch/$(XARCH).$(ONEVERSION)
+LIBDIR := $(MAINLIBDIR)/$(XARCH)/$(ONEVERSION)
+OBJDIR := $(MAINOBJDIR)/$(XARCH)/$(ONEVERSION)
+TSTDIR := $(MAINTSTDIR)/$(XARCH)/$(ONEVERSION)
ifeq ($(NVCC),)
EXE_NAMES := $(basename $(notdir $(filter-out %.cu, $(ALL_EXE_FILES))))
endif
@@ -130,7 +130,7 @@ all: dirs makedep
# foreground testing, compilation happens in do_regtest
test: dirs
- cd $(TSTDIR); $(TOOLSRC)/regtesting/do_regtest -nosvn -quick -arch $(ARCH) -version $(ONEVERSION) -cp2kdir ../../../ $(TESTOPTS)
+ cd $(TSTDIR); $(TOOLSRC)/regtesting/do_regtest -nosvn -quick -arch $(XARCH) -version $(ONEVERSION) -cp2kdir ../../../ $(TESTOPTS)
# background testing, compilation happens here
testbg: dirs makedep all
@@ -191,7 +191,7 @@ $(LIBDIR)/libcp2k$(ARCHIVE_EXT) : $(ALL_
testbg:
@echo "testing: $(ONEVERSION) : full log in $(TSTDIR)/regtest.log "
- @$(TOOLSRC)/regtesting/do_regtest -nobuild -nosvn -arch $(ARCH) -version $(ONEVERSION) -cp2kdir ../../../ $(TESTOPTS) >& $(TSTDIR)/regtest.log
+ @$(TOOLSRC)/regtesting/do_regtest -nobuild -nosvn -arch $(XARCH) -version $(ONEVERSION) -cp2kdir ../../../ $(TESTOPTS) >& $(TSTDIR)/regtest.log
@cat `grep 'regtesting location error_summary file:' $(TSTDIR)/regtest.log | awk '{print $$NF}'`
@cat `grep 'regtesting location summary file:' $(TSTDIR)/regtest.log | awk '{print $$NF}'`
@grep "Number of FAILED tests 0" $(TSTDIR)/regtest.log >& /dev/null
@@ -244,9 +244,9 @@ define get_extensions
endef
clean:
rm -rf $(LIBCUSMM_ABS_DIR)/libcusmm.cu $(LIBCUSMM_ABS_DIR)/libcusmm_part*.cu
- @echo rm -rf $(foreach v, $(VERSION), $(MAINOBJDIR)/$(ARCH)/$(v))
- @$(foreach v, $(VERSION), $(foreach ext, $(call get_extensions, $(MAINOBJDIR)/$(ARCH)/$(v)/), $(shell rm -rf $(MAINOBJDIR)/$(ARCH)/$(v)/*.$(ext))))
- rm -rf $(foreach v, $(VERSION), $(MAINLIBDIR)/$(ARCH)/$(v))
+ @echo rm -rf $(foreach v, $(VERSION), $(MAINOBJDIR)/$(XARCH)/$(v))
+ @$(foreach v, $(VERSION), $(foreach ext, $(call get_extensions, $(MAINOBJDIR)/$(XARCH)/$(v)/), $(shell rm -rf $(MAINOBJDIR)/$(XARCH)/$(v)/*.$(ext))))
+ rm -rf $(foreach v, $(VERSION), $(MAINLIBDIR)/$(XARCH)/$(v))
OTHER_HELP += "clean : Remove intermediate object and mod files, but not the libraries and executables, for given ARCH and VERSION"
execlean:
@@ -258,16 +258,16 @@ OTHER_HELP += "execlean : Remove the exe
# Use this if you want to fully rebuild an executable (for a given compiler and or VERSION)
#
realclean: clean execlean
- rm -rf $(foreach v, $(VERSION), $(MAINOBJDIR)/$(ARCH)/$(v))
- rm -rf $(foreach v, $(VERSION), $(MAINLIBDIR)/$(ARCH)/$(v))
+ rm -rf $(foreach v, $(VERSION), $(MAINOBJDIR)/$(XARCH)/$(v))
+ rm -rf $(foreach v, $(VERSION), $(MAINLIBDIR)/$(XARCH)/$(v))
OTHER_HELP += "realclean : Remove all files for given ARCH and VERSION"
testclean:
- rm -rf $(foreach v, $(VERSION), $(MAINTSTDIR)/$(ARCH)/$(v)/TEST-*)
+ rm -rf $(foreach v, $(VERSION), $(MAINTSTDIR)/$(XARCH)/$(v)/TEST-*)
OTHER_HELP += "testclean : Remove all TEST-* files for given ARCH and VERSION"
testrealclean: testclean
- rm -rf $(foreach v, $(VERSION), $(MAINTSTDIR)/$(ARCH)/$(v)/LAST-*)
+ rm -rf $(foreach v, $(VERSION), $(MAINTSTDIR)/$(XARCH)/$(v)/LAST-*)
OTHER_HELP += "testrealclean : Remove all LAST-* and TEST-* files for given ARCH and VERSION"
#
@@ -426,7 +426,7 @@ endif
# some practical variables for the build
ifeq ($(CPPSHELL),)
-CPPSHELL := -D__COMPILE_ARCH="\"$(ARCH)\""\
+CPPSHELL := -D__COMPILE_ARCH="\"$(XARCH)\""\
-D__COMPILE_DATE="\"$(shell date)\""\
-D__COMPILE_HOST="\"$(shell hostname)\""\
-D__COMPILE_REVISION="\"$(strip $(REVISION))\""\

12
science/cp2k/pkg-descr Normal file
View file

@ -0,0 +1,12 @@
CP2K is a quantum chemistry and solid state physics software package that can
perform atomistic simulations of solid state, liquid, molecular, periodic,
material, crystal, and biological systems. CP2K provides a general framework for
different modeling methods such as DFT using the mixed Gaussian and plane waves
approaches GPW and GAPW. Supported theory levels include DFTB, LDA, GGA, MP2,
RPA, semi-empirical methods (AM1, PM3, PM6, RM1, MNDO, ...), and classical force
fields (AMBER, CHARMM, ...). CP2K can do simulations of molecular dynamics,
metadynamics, Monte Carlo, Ehrenfest dynamics, vibrational analysis, core level
spectroscopy, energy minimization, and transition state optimization using NEB
or dimer method.
WWW: https://www.cp2k.org/