Merge remote-tracking branch 'app4triqs-remote/3.0.x' into unstable

This commit is contained in:
Nils Wentzell 2020-08-08 16:23:28 -04:00
commit de8b2bd95e
19 changed files with 323 additions and 88 deletions

89
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,89 @@
name: build
on:
push:
branches: [ unstable ]
pull_request:
branches: [ unstable ]
jobs:
build:
strategy:
matrix:
include:
- {os: ubuntu-20.04, cc: gcc-10, cxx: g++-10}
- {os: ubuntu-20.04, cc: clang-10, cxx: clang++-10}
- {os: macos-10.15, cc: gcc-10, cxx: g++-10}
- {os: macos-10.15, cc: /usr/local/opt/llvm/bin/clang, cxx: /usr/local/opt/llvm/bin/clang++}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- name: Install ubuntu dependencies
if: matrix.os == 'ubuntu-20.04'
run: >
sudo apt-get install
clang-10
g++-10
gfortran
hdf5-tools
libblas-dev
libboost-dev
libclang-10-dev
libc++-10-dev
libc++abi-10-dev
libfftw3-dev
libgfortran4
libgmp-dev
libhdf5-dev
liblapack-dev
libopenmpi-dev
openmpi-bin
openmpi-common
openmpi-doc
python3-clang-10
python3-dev
python3-mako
python3-matplotlib
python3-mpi4py
python3-numpy
python3-pip
python3-scipy
python3-sphinx
python3-nbsphinx
- name: Install homebrew dependencies
if: matrix.os == 'macos-10.15'
run: |
brew install gcc@10 llvm@10 boost fftw hdf5 open-mpi openblas numpy scipy mpi4py
pip3 install mako
pip3 install -r requirements.txt
- name: Build & Install TRIQS
env:
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
run: |
git clone https://github.com/TRIQS/triqs --branch unstable
mkdir triqs/build && cd triqs/build
cmake .. -DBuild_Tests=OFF -DCMAKE_INSTALL_PREFIX=$HOME/install
make -j1 install VERBOSE=1
cd ../
- name: Build dft_tools
env:
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
run: |
source $HOME/install/share/triqsvars.sh
mkdir build && cmake -B build
cmake --build build -j2
- name: Test dft_tools
run: |
source $HOME/install/share/triqsvars.sh
cd build
ctest -j2 --output-on-failure

View File

@ -1,34 +0,0 @@
language: cpp
sudo: required
dist: bionic
compiler:
- gcc
- clang
before_install:
- sudo apt-get update
- sudo apt-get install -y --allow-unauthenticated libblas-dev libboost-all-dev libfftw3-dev libgfortran3 libhdf5-serial-dev libgmp-dev liblapack-dev libopenmpi-dev libclang-dev python-clang-6.0 python-dev python-h5py python-mako python-matplotlib python-mpi4py python-numpy python-scipy python-sphinx libjs-mathjax libnfft3-dev
install: true
script:
- export INSTALL_DIR=$HOME/root_install # We install outside the repository
# ===== Set up TRIQS
- cd $TRAVIS_BUILD_DIR
- git clone https://github.com/TRIQS/triqs --branch unstable
- mkdir triqs/build && cd triqs/build
- cmake .. -DBuild_Tests=OFF -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR
- make -j2 install
- source $INSTALL_DIR/share/triqsvars.sh
# ===== Set up triqs_dft_tools and test
- cd $TRAVIS_BUILD_DIR
- mkdir build && cd build
- cmake .. -DASAN=ON -DUBSAN=ON
- export UBSAN_SYMBOLIZER_PATH=$(which llvm-symbolizer)
- export ASAN_SYMBOLIZER_PATH=$(which llvm-symbolizer)
- export UBSAN_OPTIONS=symbolize=1:print_stacktrace=1
- export ASAN_OPTIONS=symbolize=1:detect_leaks=0
- export CTEST_OUTPUT_ON_FAILURE=1
- make -j2 && make test

11
Jenkinsfile vendored
View File

@ -102,6 +102,7 @@ for (int i = 0; i < osxPlatforms.size(); i++) {
}
/****************** wrap-up */
def error = null
try {
parallel platforms
if (keepInstall) { node("docker") {
@ -150,13 +151,13 @@ try {
} }
} }
} catch (err) {
error = err
} finally {
/* send email on build failure (declarative pipeline's post section would work better) */
if (env.BRANCH_NAME != "jenkins") emailext(
if ((error != null || currentBuild.currentResult != 'SUCCESS') && env.BRANCH_NAME != "jenkins") emailext(
subject: "\$PROJECT_NAME - Build # \$BUILD_NUMBER - FAILED",
body: """\$PROJECT_NAME - Build # \$BUILD_NUMBER - FAILED
$err
Check console output at \$BUILD_URL to view full results.
Building \$BRANCH_NAME for \$CAUSE
@ -168,11 +169,11 @@ Changes:
End of build log:
\${BUILD_LOG,maxLines=60}
""",
to: 'mzingl@flatironinstitute.org, hstrand@flatironinstitute.org, nwentzell@flatironinstitute.org, dsimon@flatironinstitute.org',
to: 'mzingl@flatironinstitute.org, ahampel@flatironinstitute.org, nwentzell@flatironinstitute.org, dsimon@flatironinstitute.org',
recipientProviders: [
[$class: 'DevelopersRecipientProvider'],
],
replyTo: '$DEFAULT_REPLYTO'
)
throw err
if (error != null) throw error
}

5
deps/CMakeLists.txt vendored
View File

@ -17,7 +17,8 @@ include(external_dependency.cmake)
# to locate the package in the system.
# Skip this step if Build_Deps option is set.
# 2. Try to find a directory containing the sources
# at ${PROJECT_SOURCE_DIR}/deps/name. If found
# at ${CMAKE_CURRENT_SOURCE_DIR}/name and
# ${CMAKE_SOURCE_DIR}/deps/name. If found
# build it as a cmake sub-project.
# 3. If GIT_REPO is provided, git clone the sources,
# and build them as a cmake sub-project.
@ -34,7 +35,7 @@ include(external_dependency.cmake)
# In particular the dependency will not be installed.
if(NOT DEFINED Build_Deps)
set(Build_Deps "Never" CACHE STRING "Do we build dependencies from source? [Never/Always/IfNotFound]")
set(Build_Deps "IfNotFound" CACHE STRING "Do we build dependencies from source? [Never/Always/IfNotFound]")
else()
set(Build_Deps_Opts "Never" "Always" "IfNotFound")
if(NOT ${Build_Deps} IN_LIST Build_Deps_Opts)

View File

@ -1,25 +1,38 @@
###################################################################################
# Copyright (c) 2020 Simons Foundation
#
# TRIQS_DFT_TOOLS: a Toolbox for Research in Interacting Quantum Systems
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Copyright (C) 2020 Simons Foundation
# authors: N. Wentzell
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# TRIQS_DFT_TOOLS is free software: you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation, either version 3 of the License, or (at your option) any later
# version.
#
# TRIQS_DFT_TOOLS is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# TRIQS_DFT_TOOLS. If not, see <http://www.gnu.org/licenses/>.
#
###################################################################################
# You may obtain a copy of the License at
# https://www.gnu.org/licenses/gpl-3.0.txt
# Consider ROOT env variables in find_package
if(POLICY CMP0074)
cmake_policy(SET CMP0074 NEW)
endif()
# Make sure that imported targets are always global
get_property(IMPORTED_ALWAYS_GLOBAL GLOBAL PROPERTY IMPORTED_ALWAYS_GLOBAL)
if(NOT IMPORTED_ALWAYS_GLOBAL)
function(add_library)
set(_args ${ARGN})
if ("${_args}" MATCHES ";IMPORTED")
list(APPEND _args GLOBAL)
endif()
_add_library(${_args})
endfunction()
set_property(GLOBAL PROPERTY IMPORTED_ALWAYS_GLOBAL TRUE)
endif()
# Define External Dependency Function
function(external_dependency)
cmake_parse_arguments(ARG "EXCLUDE_FROM_ALL;BUILD_ALWAYS" "VERSION;GIT_REPO;GIT_TAG" "" ${ARGN})
@ -51,6 +64,9 @@ function(external_dependency)
if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${ARGV0})
message(STATUS "Found sources for dependency ${ARGV0} at ${CMAKE_CURRENT_SOURCE_DIR}/${ARGV0}")
add_subdirectory(${ARGV0} ${subdir_opts})
elseif(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/deps/${ARGV0})
message(STATUS "Found sources for dependency ${ARGV0} at ${CMAKE_SOURCE_DIR}/deps/${ARGV0}")
add_subdirectory(${ARGV0} ${subdir_opts})
elseif(ARG_GIT_REPO)
set(bin_dir ${CMAKE_CURRENT_BINARY_DIR}/${ARGV0})
set(src_dir ${bin_dir}_src)

View File

@ -48,13 +48,6 @@ Installation steps
$ git clone https://github.com/TRIQS/dft_tools dft_tools.src
#. Make sure that all additional dependencies are installed on your system and available in your environment.
Alternatively build the dependencies from source instead with::
$ (cd deps && ./download.sh)
In this case they will be installed together with your application.
#. Create and move to a new directory where you will compile the code::
$ mkdir dft_tools.build && cd dft_tools.build

BIN
doc/themes/agogo/static/bgfooter.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 B

BIN
doc/themes/agogo/static/bgtop.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

BIN
doc/themes/triqs/static/bodybg.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 602 B

BIN
doc/themes/triqs/static/footerbg.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 B

BIN
doc/themes/triqs/static/headerbg.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 B

BIN
doc/themes/triqs/static/listitem.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

BIN
doc/themes/triqs/static/relbg.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 B

View File

@ -0,0 +1,70 @@
easyblock = 'CMakeMake'
name = 'TRIQS-dft_tools'
version = '3.0.0'
versionsuffix = '-Python-%(pyver)s'
homepage = 'https://triqs.github.io/dft_tools/'
description = """
TRIQS (Toolbox for Research on Interacting Quantum Systems) is a
scientific project providing a set of C++ and Python libraries to
develop new tools for the study of interacting quantum systems.
This TRIQS-based-based application is aimed at ab-initio calculations
for correlated materials, combining realistic DFT band-structure calculation
with the dynamical mean-field theory. Together with the necessary tools to
perform the DMFT self-consistency loop for realistic multi-band problems,
the package provides a full-fledged charge self-consistent interface to the
Wien2K package. In addition, if Wien2k is not available, it provides a generic
interface for one-shot DFT+DMFT calculations, where only the single-particle
Hamiltonian in orbital space has to be provided.
"""
docurls = ['https://triqs.github.io/dft_tools/%(version_major_minor)s.x/']
software_license = 'LicenseGPLv3'
toolchain = {'name': 'foss', 'version': '2019a'}
toolchainopts = {'pic': True, 'usempi': True}
source_urls = ['https://github.com/TRIQS/dft_tools/releases/download/%(version)s/']
sources = ['dft_tools-%(version)s.tar.gz']
checksums = ['PUT HERE THE SHA256 OF THE RELEASE TARBALL']
dependencies = [
('Python', '3.7.2'),
('SciPy-bundle', '2019.03'),
('Boost', '1.70.0'),
('Clang', '8.0.0'),
('GMP', '6.1.2'),
('Mako', '1.0.8'),
('h5py', '2.9.0'),
('TRIQS', '3.0.0', versionsuffix),
]
builddependencies = [
('CMake', '3.13.3')
]
separate_build_dir = True
runtest = 'test'
sanity_check_paths = {
'files': ['bin/dmftproj', 'lib/libtriqs_dft_tools_c.%s' % SHLIB_EXT],
'dirs': ['include/triqs_dft_tools', 'bin', 'lib', 'share',
'lib/python%(pyshortver)s/site-packages/triqs_dft_tools'],
}
sanity_check_commands = ["python -c 'import triqs_dft_tools'"]
modextrapaths = {
'CPLUS_INCLUDE_PATH': 'include',
'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages',
'CMAKE_PREFIX_PATH': 'lib/cmake/triqs_dft_tools',
}
modextravars = {
'TRIQS_DFT_TOOLS_ROOT': '%(installdir)s',
'TRIQS_DFT_TOOLS_VERSION': '%(version)s',
}
moduleclass = 'phys'

22
packaging/conda/build.sh Normal file
View File

@ -0,0 +1,22 @@
#!/usr/bin/env bash
mkdir build
cd build
# Openmpi Specific environment setup - Cf. https://github.com/conda-forge/libnetcdf-feedstock/pull/80
export OMPI_MCA_btl=self,tcp
export OMPI_MCA_plm=isolated
export OMPI_MCA_rmaps_base_oversubscribe=yes
export OMPI_MCA_btl_vader_single_copy_mechanism=none
mpiexec="mpiexec --allow-run-as-root"
source $PREFIX/share/triqsvars.sh
cmake \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DCMAKE_BUILD_TYPE=Release \
..
make -j${CPU_COUNT} VERBOSE=1
CTEST_OUTPUT_ON_FAILURE=1 ctest
make install

View File

@ -0,0 +1,3 @@
mpi:
- mpich
- openmpi

55
packaging/conda/meta.yaml Normal file
View File

@ -0,0 +1,55 @@
{% set version = "3.0.0" %}
package:
name: triqs_dft_tools
version: {{ version }}
source:
url: https://github.com/TRIQS/dft_tools/releases/download/{{ version }}/dft_tools-{{ version }}.tar.gz
sha256: PUT HERE THE SHA256 OF YOUR RELEASE TARBALL
build:
number: 0
skip: True # [win or py<30]
requirements:
build:
- cmake
- make
- {{ compiler('c') }}
- {{ compiler('cxx') }}
- {{ compiler('fortran') }}
host:
- triqs {{ '.'.join(version.split('.')[:2]) }}
- boost-cpp
- {{ mpi }}
- libblas
- liblapack
- python
run:
- {{ pin_compatible("triqs", max_pin="x.x") }}
- {{ mpi }}
- libblas
- liblapack
- python
test:
commands:
- export OMPI_MCA_btl=self,tcp
- export OMPI_MCA_plm=isolated
- export OMPI_MCA_rmaps_base_oversubscribe=yes
- export OMPI_MCA_btl_vader_single_copy_mechanism=none
- export mpiexec="mpiexec --allow-run-as-root"
- python -c "import triqs_dft_tools"
about:
home: https://triqs.github.io/dft_tools
license: GPL-3.0-or-later
license_family: GPL
license_file: LICENSE.txt
summary: 'Toolbox for ab initio calculations of correlated materials'
extra:
recipe-maintainers:
- wentzell
- pgunn

View File

@ -1,24 +1,18 @@
###################################################################################
# Copyright (c) 2019-2020 Simons Foundation
#
# TRIQS: a Toolbox for Research in Interacting Quantum Systems
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Copyright (C) 2019-2020 Simons Foundation
# author: N. Wentzell
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# TRIQS is free software: you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation, either version 3 of the License, or (at your option) any later
# version.
#
# TRIQS is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# TRIQS. If not, see <http://www.gnu.org/licenses/>.
#
###################################################################################
# You may obtain a copy of the License at
# https://www.gnu.org/licenses/gpl-3.0.txt
# Recursively fetch all targets that the interface of a target depends upon
macro(get_all_interface_targets name target)
@ -89,7 +83,8 @@ macro(extract_flags)
endif()
endforeach()
# We have to replace generator expressions explicitly
# ==== We have to replace generator expressions explicitly ====
if(ARG_BUILD_INTERFACE)
string(REGEX REPLACE "\\$<BUILD_INTERFACE:([^ ]*)>" "\\1" ${target}_LDFLAGS "${${target}_LDFLAGS}")
string(REGEX REPLACE "\\$<BUILD_INTERFACE:([^ ]*)>" "\\1" ${target}_CXXFLAGS "${${target}_CXXFLAGS}")
@ -97,6 +92,25 @@ macro(extract_flags)
string(REGEX REPLACE "\\$<INSTALL_INTERFACE:([^ ]*)>" "\\1" ${target}_LDFLAGS "${${target}_LDFLAGS}")
string(REGEX REPLACE "\\$<INSTALL_INTERFACE:([^ ]*)>" "\\1" ${target}_CXXFLAGS "${${target}_CXXFLAGS}")
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
string(REGEX REPLACE "\\$<\\$<CXX_COMPILER_ID:GNU>:([^ ]*)>" "\\1" ${target}_LDFLAGS "${${target}_LDFLAGS}")
string(REGEX REPLACE "\\$<\\$<CXX_COMPILER_ID:GNU>:([^ ]*)>" "\\1" ${target}_CXXFLAGS "${${target}_CXXFLAGS}")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
string(REGEX REPLACE "\\$<\\$<CXX_COMPILER_ID:Clang>:([^ ]*)>" "\\1" ${target}_LDFLAGS "${${target}_LDFLAGS}")
string(REGEX REPLACE "\\$<\\$<CXX_COMPILER_ID:Clang>:([^ ]*)>" "\\1" ${target}_CXXFLAGS "${${target}_CXXFLAGS}")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
string(REGEX REPLACE "\\$<\\$<CXX_COMPILER_ID:AppleClang>:([^ ]*)>" "\\1" ${target}_LDFLAGS "${${target}_LDFLAGS}")
string(REGEX REPLACE "\\$<\\$<CXX_COMPILER_ID:AppleClang>:([^ ]*)>" "\\1" ${target}_CXXFLAGS "${${target}_CXXFLAGS}")
endif()
# Remove all remaining generator expressions
string(REGEX REPLACE " [^ ]*\\$<[^ ]*:[^>]*>" "" ${target}_LDFLAGS "${${target}_LDFLAGS}")
string(REGEX REPLACE " [^ ]*\\$<[^ ]*:[^>]*>" "" ${target}_CXXFLAGS "${${target}_CXXFLAGS}")
# Filter out system directories from LDFLAGS and CXXFLAGS
string(REGEX REPLACE " -L/usr/lib " " " ${target}_LDFLAGS "${${target}_LDFLAGS}")
string(REGEX REPLACE " -I/usr/include " " " ${target}_CXXFLAGS "${${target}_CXXFLAGS}")
string(REGEX REPLACE " -isystem/usr/include " " " ${target}_CXXFLAGS "${${target}_CXXFLAGS}")
endmacro()

View File

@ -15,13 +15,18 @@ set(@PROJECT_NAME@_GIT_HASH @PROJECT_GIT_HASH@ CACHE STRING "@PROJECT_NAME@ git
set(@PROJECT_NAME@_ROOT @CMAKE_INSTALL_PREFIX@ CACHE STRING "@PROJECT_NAME@ root directory")
## Find the target dependencies
#include(CMakeFindDependencyMacro)
#find_dependency(... HINTS @CMAKE_INSTALL_PREFIX@)
#function(find_dep)
# get_property(${ARGV0}_FOUND GLOBAL PROPERTY ${ARGV0}_FOUND)
# if(NOT ${ARGV0}_FOUND)
# find_package(${ARGN} REQUIRED HINTS @CMAKE_INSTALL_PREFIX@)
# endif()
#endfunction()
#find_dep(depname 1.0)
# Include the exported targets of this project
include(@CMAKE_INSTALL_PREFIX@/lib/cmake/@PROJECT_NAME@/@PROJECT_NAME@-targets.cmake)
message(STATUS "Found @PROJECT_NAME@-config.cmake with version @PROJECT_VERSION@, hash = @PROJECT_GIT_HASH@")
message(STATUS "Found @PROJECT_NAME@-config.cmake with version @PROJECT_VERSION@, hash = @PROJECT_GIT_HASH@, root = @CMAKE_INSTALL_PREFIX@")
# Was the Project built with Documentation?
set(@PROJECT_NAME@_WITH_DOCUMENTATION @Build_Documentation@ CACHE BOOL "Was @PROJECT_NAME@ build with documentation?")