mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-12-22 12:23:43 +01:00
Added instal instruction and etc file
This commit is contained in:
parent
6d2f444536
commit
91d97e3f57
93
INSTALL.rst
93
INSTALL.rst
@ -10,6 +10,62 @@ repository <https://github.com/QuantumPackage/qp2>`_.
|
||||
|
||||
git clone https://github.com/QuantumPackage/qp2
|
||||
|
||||
QP has a long list of dependencies:
|
||||
|
||||
- GNU Linux OS
|
||||
- Fortran compiler : GNU Fortran, Intel Fortran or IBM XL Fortran
|
||||
- `GNU make`_
|
||||
- `Autoconf`_
|
||||
- `Python`_ > 3.7
|
||||
- |IRPF90| : Fortran code generator
|
||||
- |EZFIO| : Easy Fortran Input/Output library generator
|
||||
- |BLAS| and |LAPACK|
|
||||
- `Zlib`_
|
||||
- `GNU Patch`_
|
||||
- |ZeroMQ| : networking library
|
||||
- `GMP <https://gmplib.org/>`_ : Gnu Multiple Precision Arithmetic Library
|
||||
- |OCaml| compiler with |OPAM| package manager
|
||||
- |Ninja| : a parallel build system
|
||||
- |pkg-config| : a tool which returns information about installed libraries
|
||||
|
||||
so we don't recommend the installation of all the dependencies by hand.
|
||||
|
||||
Preferred installation method: Guix
|
||||
===================================
|
||||
|
||||
|qp| is very easy to install on systems that have
|
||||
access to `Guix <https://guix.gnu.org/en>`_. To install Guix
|
||||
on your system, follow the `Guix installation instructions
|
||||
<https://guix.gnu.org/manual/en/html_node/Binary-Installation.html>`_.
|
||||
|
||||
One Guix is installed, all the dependencies required for compiling
|
||||
and running |qp| can be installed using:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
guix package -L guix -m guix/manifest.scm
|
||||
|
||||
in the :file:`qp2` root directory.
|
||||
|
||||
Installation on a x86_64 system without network access
|
||||
======================================================
|
||||
|
||||
Fetch the :file:`qp2-environment.tar.gz` archive containing all the
|
||||
dependencies `here <http://localhost>`_. Unpack the archive in the
|
||||
:file:`guix` directory:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
$ cd qp2/guix
|
||||
$ wget qp2-environment.tar.gz
|
||||
$ tar -zxf qp2-environment.tar.gz
|
||||
$ ls
|
||||
gnu manifest.scm qp2-environment.tar.gz qp2.scm
|
||||
|
||||
That's it!
|
||||
|
||||
Compilation
|
||||
===========
|
||||
|
||||
Before anything, go into your :file:`quantum_package` directory and run
|
||||
|
||||
@ -37,34 +93,6 @@ Now all the requirements are met, you can compile the programs using
|
||||
make
|
||||
|
||||
|
||||
Installation of dependencies via a Conda environment
|
||||
====================================================
|
||||
|
||||
.. code:: bash
|
||||
|
||||
conda env create -f qp2.yml
|
||||

|
||||
|
||||
|
||||
Requirements
|
||||
============
|
||||
|
||||
- Linux OS
|
||||
- Fortran compiler : GNU Fortran, Intel Fortran or IBM XL Fortran
|
||||
- `GNU make`_
|
||||
- `Autoconf`_
|
||||
- `Python`_ > 3.7
|
||||
- |IRPF90| : Fortran code generator
|
||||
- |EZFIO| : Easy Fortran Input/Output library generator
|
||||
- |BLAS| and |LAPACK|
|
||||
- `Zlib`_
|
||||
- `GNU Patch`_
|
||||
- |ZeroMQ| : networking library
|
||||
- `GMP <https://gmplib.org/>`_ : Gnu Multiple Precision Arithmetic Library
|
||||
- |OCaml| compiler with |OPAM| package manager
|
||||
- |Ninja| : a parallel build system
|
||||
- |pkg-config| : a tool which returns information about installed libraries
|
||||
|
||||
|
||||
When all the dependencies have been installed, go into the :file:`config`
|
||||
directory, and copy the configuration file that corresponds to your
|
||||
@ -354,3 +382,12 @@ If you have *pip* for Python3, you can do
|
||||
|
||||
|
||||
|
||||
Installation of dependencies via a Conda environment
|
||||
====================================================
|
||||
|
||||
.. code:: bash
|
||||
|
||||
conda env create -f qp2.yml
|
||||

|
||||
|
||||
|
||||
|
17
etc/zz.guix.rc
Normal file
17
etc/zz.guix.rc
Normal file
@ -0,0 +1,17 @@
|
||||
# Default flags for Guix
|
||||
|
||||
export GUIX_BUILD_OPTIONS="-L $QP_ROOT/guix"
|
||||
|
||||
export QP_GUIX_ROOT=$(ls -d $QP_ROOT/guix/gnu/store/*profile)
|
||||
|
||||
if [[ -d "$QP_GUIX_ROOT" ]] ;
|
||||
then
|
||||
export PATH=$QP_GUIX_ROOT/bin:$PATH
|
||||
unset LD_LIBRARY_PATH=
|
||||
export LIBRARY_PATH=$LIBRARY_PATH:$QP_GUIX_ROOT/lib
|
||||
export C_INCLUDE_PATH=$C_INCLUDE_PATH:$QP_GUIX_ROOT/include
|
||||
export CPATH=$CPATH:$QP_GUIX_ROOT/include
|
||||
fi
|
||||
|
||||
|
||||
|
36
guix/manifest.scm
Normal file
36
guix/manifest.scm
Normal file
@ -0,0 +1,36 @@
|
||||
;; This "manifest" file can be passed to 'guix package -m' to reproduce
|
||||
;; the content of your profile. This is "symbolic": it only specifies
|
||||
;; package names. To reproduce the exact same profile, you also need to
|
||||
;; capture the channels being used, as returned by "guix describe".
|
||||
;; See the "Replicating Guix" section in the manual.
|
||||
;;
|
||||
;; guix shell --load-path="guix/" \
|
||||
;; --manifest="manifest.scm"
|
||||
|
||||
(specifications->manifest
|
||||
(list "nss-certs"
|
||||
"ocaml-cryptokit"
|
||||
"ocaml-zmq"
|
||||
"git"
|
||||
"ocaml-sexplib"
|
||||
"ocaml-ppx-sexp-conv"
|
||||
"ocaml-ppx-deriving"
|
||||
"ocaml-getopt"
|
||||
"ocamlbuild"
|
||||
"python-resultsfile"
|
||||
"f77_zmq"
|
||||
"bubblewrap"
|
||||
"ocaml-findlib"
|
||||
"ocaml"
|
||||
"bash"
|
||||
"glibc-locales"
|
||||
"python-docopt"
|
||||
"bats"
|
||||
"python"
|
||||
"gmp"
|
||||
"zeromq"
|
||||
"zlib"
|
||||
"ninja"
|
||||
"openblas"
|
||||
"gfortran-toolchain"
|
||||
"gcc-toolchain"))
|
216
guix/qp2.scm
Normal file
216
guix/qp2.scm
Normal file
@ -0,0 +1,216 @@
|
||||
;; Custom Guix module definitions for dependencies of QP
|
||||
|
||||
(define-module (qp2)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system dune)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system ocaml)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (guix build-system copy)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages certs)
|
||||
#:use-module (gnu packages commencement)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages gcc)
|
||||
#:use-module (gnu packages maths)
|
||||
#:use-module (gnu packages multiprecision)
|
||||
#:use-module (gnu packages networking)
|
||||
#:use-module (gnu packages ninja)
|
||||
#:use-module (gnu packages ocaml)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages python-xyz)
|
||||
#:use-module (gnu packages version-control)
|
||||
#:use-module (gnu packages virtualization))
|
||||
|
||||
(define-public ocaml-cryptokit
|
||||
(package
|
||||
(name "ocaml-cryptokit")
|
||||
(version "1.17")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
"https://github.com/xavierleroy/cryptokit/archive/release117.tar.gz")
|
||||
(sha256
|
||||
(base32
|
||||
"0gsgb4bwy389ndkribgk5fmzjp3fgml0xi8sd9amx3krwd1k1qak"))))
|
||||
(build-system dune-build-system)
|
||||
(propagated-inputs (list zlib ocaml-zarith gmp))
|
||||
(home-page "https://github.com/xavierleroy/cryptokit")
|
||||
(synopsis "A library of cryptographic primitives")
|
||||
(description
|
||||
"Cryptokit includes authenticated encryption (AES-GCM, Chacha20-Poly1305), block
|
||||
ciphers (AES, DES, 3DES), stream ciphers (Chacha20, ARCfour), public-key
|
||||
cryptography (RSA, DH), hashes (SHA-256, SHA-512, SHA-3, Blake2), MACs,
|
||||
compression, random number generation -- all presented with a compositional,
|
||||
extensible interface.")
|
||||
(license license:lgpl2.0+)))
|
||||
|
||||
(define-public ocaml-getopt
|
||||
(package
|
||||
(name "ocaml-getopt")
|
||||
(version "20120615")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
"https://download.ocamlcore.org/ocaml-getopt/ocaml-getopt/20120615/ocaml-getopt-20120615.tar.gz")
|
||||
(sha256
|
||||
(base32
|
||||
"1rz2mi3gddwpd249bvz6h897swiajk4d6cczrsscibwpkmdvrfwa"))))
|
||||
(build-system ocaml-build-system)
|
||||
(native-inputs (list ocamlbuild))
|
||||
(home-page #f)
|
||||
(synopsis
|
||||
"Parsing of command line arguments (similar to GNU GetOpt) for OCaml")
|
||||
(description
|
||||
"General command line syntax of GNU getopt and getopt_long, but is close to the
|
||||
spirit of the Arg module.")
|
||||
(license license:expat)))
|
||||
|
||||
|
||||
(define-public ocaml-stdint
|
||||
(package
|
||||
(name "ocaml-stdint")
|
||||
(version "0.7.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
"https://github.com/andrenth/ocaml-stdint/releases/download/0.7.2/stdint-0.7.2.tbz")
|
||||
(sha256
|
||||
(base32
|
||||
"1rkpx48k5d7ypgwzvhzc2116jri6x2mhvi2jm4zaziy9if6ijq0m"))))
|
||||
(build-system dune-build-system)
|
||||
(arguments `(#:tests? #f))
|
||||
(propagated-inputs (list ocaml-odoc ocaml-base))
|
||||
(native-inputs (list ocaml-qcheck))
|
||||
(home-page "https://github.com/andrenth/ocaml-stdint")
|
||||
(synopsis "Signed and unsigned integer types having specified widths")
|
||||
(description
|
||||
"The stdint library provides signed and unsigned integer types of various fixed
|
||||
widths: 8, 16, 24, 32, 40, 48, 56, 64 and 128 bit. This interface is similar to
|
||||
Int32 and Int64 from the base library but provides more functions and constants
|
||||
like arithmetic and bit-wise operations, constants like maximum and minimum
|
||||
values, infix operators conversion to and from every other integer type
|
||||
(including int, float and nativeint), parsing from and conversion to readable
|
||||
strings (binary, octal, decimal, hexademical), conversion to and from buffers in
|
||||
both big endian and little endian byte order.")
|
||||
(license license:expat)))
|
||||
|
||||
|
||||
(define-public ocaml-zmq
|
||||
(package
|
||||
(name "ocaml-zmq")
|
||||
(version "5.1.5")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
"https://github.com/issuu/ocaml-zmq/releases/download/5.1.5/zmq-lwt-5.1.5.tbz")
|
||||
(sha256
|
||||
(base32
|
||||
"0mkvlrr9ykmaidwch39gb7jpqnb90n50iw30rn95fg2bmcyx2iwr"))))
|
||||
(build-system dune-build-system)
|
||||
(arguments
|
||||
`(#:package "zmq"
|
||||
#:test-target "."))
|
||||
(propagated-inputs (list zeromq ocaml-stdint))
|
||||
(native-inputs (list ocaml-ounit2))
|
||||
(home-page "https://github.com/issuu/ocaml-zmq")
|
||||
(synopsis "OCaml bindings for ZeroMQ 4.x")
|
||||
(description
|
||||
"This library contains basic bindings for ZMQ.")
|
||||
(license license:expat)))
|
||||
|
||||
|
||||
(define-public f77_zmq
|
||||
(package
|
||||
(name "f77_zmq")
|
||||
(version "4.3.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://github.com/zeromq/f77_zmq/releases/download/v"
|
||||
version
|
||||
"/f77-zmq-"
|
||||
version
|
||||
".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0k70riil3fczymp17184rzfvzfvy0k8a6s9yfwyrrh2qyrz797hf"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments '(#:configure-flags '("--enable-silent-rules")))
|
||||
(inputs `(
|
||||
("gcc", gcc)
|
||||
("gfortran", gfortran)
|
||||
("python", python)
|
||||
("zeromq", zeromq)
|
||||
))
|
||||
(synopsis "ZeroMQ Fortran77 binding")
|
||||
(description "Fortran77 binding for the ZeroMQ lightweight messaging library.")
|
||||
(home-page "https://github.com/zeromq/f77_zmq")
|
||||
(license license:lgpl2.1+)))
|
||||
|
||||
|
||||
(define-public python-resultsfile
|
||||
(package
|
||||
(name "python-resultsfile")
|
||||
(version "2.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "resultsFile" version))
|
||||
(sha256
|
||||
(base32
|
||||
"199agrkihv3vh0y4h0gpsa5w2d24q991k4sgxmscs75nl3z8sx90"))))
|
||||
(build-system python-build-system)
|
||||
(home-page "https://gitlab.com/scemama/resultsFile")
|
||||
(synopsis "Module for reading output files of quantum chemistry codes.")
|
||||
(description "Module for reading output files of quantum chemistry codes.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
|
||||
|
||||
;(define-public qp2-environment
|
||||
; (package
|
||||
; (name "qp2-environment")
|
||||
; (version "2.0")
|
||||
; (source #f)
|
||||
; (build-system copy-build-system)
|
||||
; (arguments
|
||||
; '(#:install-plan #f))
|
||||
; (inputs
|
||||
; (list nss-certs
|
||||
; ocaml-cryptokit
|
||||
; ocaml-zmq
|
||||
; git
|
||||
; ocaml-sexplib
|
||||
; ocaml-ppx-sexp-conv
|
||||
; ocaml-ppx-deriving
|
||||
; ocaml-getopt
|
||||
; ocamlbuild
|
||||
; python-resultsfile
|
||||
; f77_zmq
|
||||
; bubblewrap
|
||||
; ocaml-findlib
|
||||
; ocaml
|
||||
; bash
|
||||
; glibc-locales
|
||||
; python-docopt
|
||||
; bats
|
||||
; python
|
||||
; gmp
|
||||
; zeromq
|
||||
; zlib
|
||||
; ninja
|
||||
; openblas
|
||||
; gfortran-toolchain
|
||||
; gcc-toolchain))
|
||||
; (home-page "https://quantumpackage.github.io/qp2/")
|
||||
; (synopsis "A programming environment for wave function methods")
|
||||
; (description "Quantum Package is an open-source programming environment for
|
||||
; quantum chemistry specially designed for wave function methods. Its main
|
||||
; goal is the development of determinant-driven selected configuration
|
||||
; interaction (sCI) methods and multi-reference second-order perturbation
|
||||
; theory (PT2).")
|
||||
; (license license:agpl3+)))
|
||||
|
Loading…
Reference in New Issue
Block a user