From f6a5e40b6ea595c114c3db07bbbda16f179bbd18 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 16 Jan 2015 00:48:09 +0100 Subject: [PATCH] Added /home/scemama/quantum_package/scripts/make_binary.sh make[1]: Entering directory `/home/scemama/quantum_package/src' cd AOs ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[2]: Entering directory `/home/scemama/quantum_package/src/AOs' make[3]: Entering directory `/home/scemama/quantum_package/src/AOs' make[3]: Leaving directory `/home/scemama/quantum_package/src/AOs' make[2]: Leaving directory `/home/scemama/quantum_package/src/AOs' cd BiInts ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[2]: Entering directory `/home/scemama/quantum_package/src/BiInts' make[3]: Entering directory `/home/scemama/quantum_package/src/BiInts' make[3]: Leaving directory `/home/scemama/quantum_package/src/BiInts' make[2]: Leaving directory `/home/scemama/quantum_package/src/BiInts' cd Bitmask ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[2]: Entering directory `/home/scemama/quantum_package/src/Bitmask' make[3]: Entering directory `/home/scemama/quantum_package/src/Bitmask' make[3]: Leaving directory `/home/scemama/quantum_package/src/Bitmask' make[2]: Leaving directory `/home/scemama/quantum_package/src/Bitmask' cd Dets ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[2]: Entering directory `/home/scemama/quantum_package/src/Dets' make[3]: Entering directory `/home/scemama/quantum_package/src/Dets' make[3]: Leaving directory `/home/scemama/quantum_package/src/Dets' make[2]: Leaving directory `/home/scemama/quantum_package/src/Dets' cd Electrons ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[2]: Entering directory `/home/scemama/quantum_package/src/Electrons' make[3]: Entering directory `/home/scemama/quantum_package/src/Electrons' make[3]: Leaving directory `/home/scemama/quantum_package/src/Electrons' make[2]: Leaving directory `/home/scemama/quantum_package/src/Electrons' cd Ezfio_files ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[2]: Entering directory `/home/scemama/quantum_package/src/Ezfio_files' make[3]: Entering directory `/home/scemama/quantum_package/src/Ezfio_files' make[3]: Leaving directory `/home/scemama/quantum_package/src/Ezfio_files' make[2]: Leaving directory `/home/scemama/quantum_package/src/Ezfio_files' cd Full_CI ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[2]: Entering directory `/home/scemama/quantum_package/src/Full_CI' make[3]: Entering directory `/home/scemama/quantum_package/src/Full_CI' make[3]: Leaving directory `/home/scemama/quantum_package/src/Full_CI' make[2]: Leaving directory `/home/scemama/quantum_package/src/Full_CI' cd Generators_full ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[2]: Entering directory `/home/scemama/quantum_package/src/Generators_full' make[3]: Entering directory `/home/scemama/quantum_package/src/Generators_full' make[3]: Leaving directory `/home/scemama/quantum_package/src/Generators_full' make[2]: Leaving directory `/home/scemama/quantum_package/src/Generators_full' cd Hartree_Fock ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[2]: Entering directory `/home/scemama/quantum_package/src/Hartree_Fock' make[3]: Entering directory `/home/scemama/quantum_package/src/Hartree_Fock' make[3]: Leaving directory `/home/scemama/quantum_package/src/Hartree_Fock' make[2]: Leaving directory `/home/scemama/quantum_package/src/Hartree_Fock' cd MOGuess ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[2]: Entering directory `/home/scemama/quantum_package/src/MOGuess' make[3]: Entering directory `/home/scemama/quantum_package/src/MOGuess' make[3]: Leaving directory `/home/scemama/quantum_package/src/MOGuess' make[2]: Leaving directory `/home/scemama/quantum_package/src/MOGuess' cd MonoInts ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[2]: Entering directory `/home/scemama/quantum_package/src/MonoInts' make[3]: Entering directory `/home/scemama/quantum_package/src/MonoInts' make[3]: Leaving directory `/home/scemama/quantum_package/src/MonoInts' make[2]: Leaving directory `/home/scemama/quantum_package/src/MonoInts' cd MOs ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[2]: Entering directory `/home/scemama/quantum_package/src/MOs' make[3]: Entering directory `/home/scemama/quantum_package/src/MOs' make[3]: Leaving directory `/home/scemama/quantum_package/src/MOs' make[2]: Leaving directory `/home/scemama/quantum_package/src/MOs' cd Nuclei ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[2]: Entering directory `/home/scemama/quantum_package/src/Nuclei' make[3]: Entering directory `/home/scemama/quantum_package/src/Nuclei' make[3]: Leaving directory `/home/scemama/quantum_package/src/Nuclei' make[2]: Leaving directory `/home/scemama/quantum_package/src/Nuclei' cd Output ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[2]: Entering directory `/home/scemama/quantum_package/src/Output' make[3]: Entering directory `/home/scemama/quantum_package/src/Output' make[3]: Leaving directory `/home/scemama/quantum_package/src/Output' make[2]: Leaving directory `/home/scemama/quantum_package/src/Output' cd Selectors_full ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[2]: Entering directory `/home/scemama/quantum_package/src/Selectors_full' make[3]: Entering directory `/home/scemama/quantum_package/src/Selectors_full' make[3]: Leaving directory `/home/scemama/quantum_package/src/Selectors_full' make[2]: Leaving directory `/home/scemama/quantum_package/src/Selectors_full' cd Utils ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[2]: Entering directory `/home/scemama/quantum_package/src/Utils' make[3]: Entering directory `/home/scemama/quantum_package/src/Utils' make[3]: Leaving directory `/home/scemama/quantum_package/src/Utils' make[2]: Leaving directory `/home/scemama/quantum_package/src/Utils' cd Molden ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[2]: Entering directory `/home/scemama/quantum_package/src/Molden' make[3]: Entering directory `/home/scemama/quantum_package/src/Molden' make[3]: Leaving directory `/home/scemama/quantum_package/src/Molden' make[2]: Leaving directory `/home/scemama/quantum_package/src/Molden' make[1]: Leaving directory `/home/scemama/quantum_package/src' make[1]: Entering directory `/home/scemama/quantum_package/ocaml' rm -f -- test_atom ocamlbuild -j 0 -syntax camlp4o -cflags "-g -warn-error A" -lflags "-g -warn-error A" -ocamlopt ocamlc.opt test_atom.byte -use-ocamlfind # No parallelism done ln -s test_atom.byte test_atom rm -f -- test_basis ocamlbuild -j 0 -syntax camlp4o -cflags "-g -warn-error A" -lflags "-g -warn-error A" -ocamlopt ocamlc.opt test_basis.byte -use-ocamlfind # No parallelism done ln -s test_basis.byte test_basis rm -f -- test_bitlist ocamlbuild -j 0 -syntax camlp4o -cflags "-g -warn-error A" -lflags "-g -warn-error A" -ocamlopt ocamlc.opt test_bitlist.byte -use-ocamlfind # No parallelism done ln -s test_bitlist.byte test_bitlist rm -f -- test_determinants ocamlbuild -j 0 -syntax camlp4o -cflags "-g -warn-error A" -lflags "-g -warn-error A" -ocamlopt ocamlc.opt test_determinants.byte -use-ocamlfind # No parallelism done ln -s test_determinants.byte test_determinants rm -f -- test_elements ocamlbuild -j 0 -syntax camlp4o -cflags "-g -warn-error A" -lflags "-g -warn-error A" -ocamlopt ocamlc.opt test_elements.byte -use-ocamlfind # No parallelism done ln -s test_elements.byte test_elements rm -f -- test_excitation ocamlbuild -j 0 -syntax camlp4o -cflags "-g -warn-error A" -lflags "-g -warn-error A" -ocamlopt ocamlc.opt test_excitation.byte -use-ocamlfind # No parallelism done ln -s test_excitation.byte test_excitation rm -f -- test_gto ocamlbuild -j 0 -syntax camlp4o -cflags "-g -warn-error A" -lflags "-g -warn-error A" -ocamlopt ocamlc.opt test_gto.byte -use-ocamlfind # No parallelism done ln -s test_gto.byte test_gto rm -f -- test_input ocamlbuild -j 0 -syntax camlp4o -cflags "-g -warn-error A" -lflags "-g -warn-error A" -ocamlopt ocamlc.opt test_input.byte -use-ocamlfind # No parallelism done ln -s test_input.byte test_input rm -f -- test_mo_label ocamlbuild -j 0 -syntax camlp4o -cflags "-g -warn-error A" -lflags "-g -warn-error A" -ocamlopt ocamlc.opt test_mo_label.byte -use-ocamlfind # No parallelism done ln -s test_mo_label.byte test_mo_label rm -f -- test_molecule ocamlbuild -j 0 -syntax camlp4o -cflags "-g -warn-error A" -lflags "-g -warn-error A" -ocamlopt ocamlc.opt test_molecule.byte -use-ocamlfind # No parallelism done ln -s test_molecule.byte test_molecule rm -f -- test_point3d ocamlbuild -j 0 -syntax camlp4o -cflags "-g -warn-error A" -lflags "-g -warn-error A" -ocamlopt ocamlc.opt test_point3d.byte -use-ocamlfind # No parallelism done ln -s test_point3d.byte test_point3d make -C /home/scemama/quantum_package/data executables make[2]: Entering directory `/home/scemama/quantum_package/data' cd /home/scemama/quantum_package/src ; make executables make[3]: Entering directory `/home/scemama/quantum_package/src' cd AOs ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[4]: Entering directory `/home/scemama/quantum_package/src/AOs' make[5]: Entering directory `/home/scemama/quantum_package/src/AOs' make[5]: Leaving directory `/home/scemama/quantum_package/src/AOs' make[4]: Leaving directory `/home/scemama/quantum_package/src/AOs' cd BiInts ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[4]: Entering directory `/home/scemama/quantum_package/src/BiInts' make[5]: Entering directory `/home/scemama/quantum_package/src/BiInts' make[5]: Leaving directory `/home/scemama/quantum_package/src/BiInts' make[4]: Leaving directory `/home/scemama/quantum_package/src/BiInts' cd Bitmask ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[4]: Entering directory `/home/scemama/quantum_package/src/Bitmask' make[5]: Entering directory `/home/scemama/quantum_package/src/Bitmask' make[5]: Leaving directory `/home/scemama/quantum_package/src/Bitmask' make[4]: Leaving directory `/home/scemama/quantum_package/src/Bitmask' cd Dets ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[4]: Entering directory `/home/scemama/quantum_package/src/Dets' make[5]: Entering directory `/home/scemama/quantum_package/src/Dets' make[5]: Leaving directory `/home/scemama/quantum_package/src/Dets' make[4]: Leaving directory `/home/scemama/quantum_package/src/Dets' cd Electrons ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[4]: Entering directory `/home/scemama/quantum_package/src/Electrons' make[5]: Entering directory `/home/scemama/quantum_package/src/Electrons' make[5]: Leaving directory `/home/scemama/quantum_package/src/Electrons' make[4]: Leaving directory `/home/scemama/quantum_package/src/Electrons' cd Ezfio_files ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[4]: Entering directory `/home/scemama/quantum_package/src/Ezfio_files' make[5]: Entering directory `/home/scemama/quantum_package/src/Ezfio_files' make[5]: Leaving directory `/home/scemama/quantum_package/src/Ezfio_files' make[4]: Leaving directory `/home/scemama/quantum_package/src/Ezfio_files' cd Full_CI ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[4]: Entering directory `/home/scemama/quantum_package/src/Full_CI' make[5]: Entering directory `/home/scemama/quantum_package/src/Full_CI' make[5]: Leaving directory `/home/scemama/quantum_package/src/Full_CI' make[4]: Leaving directory `/home/scemama/quantum_package/src/Full_CI' cd Generators_full ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[4]: Entering directory `/home/scemama/quantum_package/src/Generators_full' make[5]: Entering directory `/home/scemama/quantum_package/src/Generators_full' make[5]: Leaving directory `/home/scemama/quantum_package/src/Generators_full' make[4]: Leaving directory `/home/scemama/quantum_package/src/Generators_full' cd Hartree_Fock ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[4]: Entering directory `/home/scemama/quantum_package/src/Hartree_Fock' make[5]: Entering directory `/home/scemama/quantum_package/src/Hartree_Fock' make[5]: Leaving directory `/home/scemama/quantum_package/src/Hartree_Fock' make[4]: Leaving directory `/home/scemama/quantum_package/src/Hartree_Fock' cd MOGuess ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[4]: Entering directory `/home/scemama/quantum_package/src/MOGuess' make[5]: Entering directory `/home/scemama/quantum_package/src/MOGuess' make[5]: Leaving directory `/home/scemama/quantum_package/src/MOGuess' make[4]: Leaving directory `/home/scemama/quantum_package/src/MOGuess' cd MonoInts ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[4]: Entering directory `/home/scemama/quantum_package/src/MonoInts' make[5]: Entering directory `/home/scemama/quantum_package/src/MonoInts' make[5]: Leaving directory `/home/scemama/quantum_package/src/MonoInts' make[4]: Leaving directory `/home/scemama/quantum_package/src/MonoInts' cd MOs ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[4]: Entering directory `/home/scemama/quantum_package/src/MOs' make[5]: Entering directory `/home/scemama/quantum_package/src/MOs' make[5]: Leaving directory `/home/scemama/quantum_package/src/MOs' make[4]: Leaving directory `/home/scemama/quantum_package/src/MOs' cd Nuclei ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[4]: Entering directory `/home/scemama/quantum_package/src/Nuclei' make[5]: Entering directory `/home/scemama/quantum_package/src/Nuclei' make[5]: Leaving directory `/home/scemama/quantum_package/src/Nuclei' make[4]: Leaving directory `/home/scemama/quantum_package/src/Nuclei' cd Output ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[4]: Entering directory `/home/scemama/quantum_package/src/Output' make[5]: Entering directory `/home/scemama/quantum_package/src/Output' make[5]: Leaving directory `/home/scemama/quantum_package/src/Output' make[4]: Leaving directory `/home/scemama/quantum_package/src/Output' cd Selectors_full ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[4]: Entering directory `/home/scemama/quantum_package/src/Selectors_full' make[5]: Entering directory `/home/scemama/quantum_package/src/Selectors_full' make[5]: Leaving directory `/home/scemama/quantum_package/src/Selectors_full' make[4]: Leaving directory `/home/scemama/quantum_package/src/Selectors_full' cd Utils ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[4]: Entering directory `/home/scemama/quantum_package/src/Utils' make[5]: Entering directory `/home/scemama/quantum_package/src/Utils' make[5]: Leaving directory `/home/scemama/quantum_package/src/Utils' make[4]: Leaving directory `/home/scemama/quantum_package/src/Utils' cd Molden ; make -j $(cat /proc/cpuinfo | grep MHz | wc -l) make[4]: Entering directory `/home/scemama/quantum_package/src/Molden' make[5]: Entering directory `/home/scemama/quantum_package/src/Molden' make[5]: Leaving directory `/home/scemama/quantum_package/src/Molden' make[4]: Leaving directory `/home/scemama/quantum_package/src/Molden' rm -f executables ; \ for EXE in $(find /home/scemama/quantum_package/src -perm /u+x -type f | grep -e "/home/scemama/quantum_package/src/[^/]*/[^/]*$" |sort ) ; \ do printf "%-30s %s\n" $(basename $EXE) $EXE | sed "s|/home/scemama/quantum_package|\$QPACKAGE_ROOT|g" >> executables ;\ done make[3]: Leaving directory `/home/scemama/quantum_package/src' mv /home/scemama/quantum_package/src/executables . make[2]: Leaving directory `/home/scemama/quantum_package/data' rm -f -- qp_basis_clean ocamlbuild -j 0 -syntax camlp4o -cflags "-g -warn-error A" -lflags "-g -warn-error A" -ocamlopt ocamlc.opt qp_basis_clean.native -use-ocamlfind # No parallelism done ln -s qp_basis_clean.native qp_basis_clean rm -f -- qp_create_ezfio_from_xyz ocamlbuild -j 0 -syntax camlp4o -cflags "-g -warn-error A" -lflags "-g -warn-error A" -ocamlopt ocamlc.opt qp_create_ezfio_from_xyz.native -use-ocamlfind # No parallelism done ln -s qp_create_ezfio_from_xyz.native qp_create_ezfio_from_xyz rm -f -- qp_edit ocamlbuild -j 0 -syntax camlp4o -cflags "-g -warn-error A" -lflags "-g -warn-error A" -ocamlopt ocamlc.opt qp_edit.native -use-ocamlfind # No parallelism done ln -s qp_edit.native qp_edit rm -f -- qp_print ocamlbuild -j 0 -syntax camlp4o -cflags "-g -warn-error A" -lflags "-g -warn-error A" -ocamlopt ocamlc.opt qp_print.native -use-ocamlfind # No parallelism done ln -s qp_print.native qp_print rm -f -- qp_run ocamlbuild -j 0 -syntax camlp4o -cflags "-g -warn-error A" -lflags "-g -warn-error A" -ocamlopt ocamlc.opt qp_run.native -use-ocamlfind # No parallelism done ln -s qp_run.native qp_run rm -f -- qp_set_ddci ocamlbuild -j 0 -syntax camlp4o -cflags "-g -warn-error A" -lflags "-g -warn-error A" -ocamlopt ocamlc.opt qp_set_ddci.native -use-ocamlfind # No parallelism done ln -s qp_set_ddci.native qp_set_ddci rm -f -- qp_set_mo_class ocamlbuild -j 0 -syntax camlp4o -cflags "-g -warn-error A" -lflags "-g -warn-error A" -ocamlopt ocamlc.opt qp_set_mo_class.native -use-ocamlfind # No parallelism done ln -s qp_set_mo_class.native qp_set_mo_class make[1]: Leaving directory `/home/scemama/quantum_package/ocaml' Creating root of static directory Copying binary files /home/scemama/quantum_package Copying dynamic libraries Copying EMSL_Basis directory Copying scripts directory Creating quantum_package.rc Creating the archive Done : /home/scemama/quantum_package/quantum_package_static.tar.gz --- Makefile | 12 +- ocaml/qp_create_ezfio_from_xyz.ml | 10 +- scripts/get_basis.sh | 5 +- scripts/make_binary.sh | 184 ++++++++++++++++++++++++++++++ setup_environment.sh | 32 +++--- 5 files changed, 219 insertions(+), 24 deletions(-) create mode 100755 scripts/make_binary.sh diff --git a/Makefile b/Makefile index 4f58eb9a..3086d370 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ BLUE= BLACK=(B -.PHONY: doc src curl m4 ocaml irpf90 emsl +.PHONY: doc src curl m4 ocaml irpf90 emsl build binary default: @echo ----------------------------------------------- @@ -16,6 +16,9 @@ default: @echo @echo To compile everything, run @echo make build + @echo + @echo To compile a binary distribution for export, run + @echo make binary @echo ----------------------------------------------- ifndef QPACKAGE_ROOT @@ -29,8 +32,8 @@ build: @echo ----------------------------------------------- else build: - $(MAKE) -C src - $(MAKE) -C ocaml + $(MAKE) -C src + $(MAKE) -C ocaml endif curl: bin/curl @@ -38,6 +41,9 @@ m4: bin/m4 irpf90: bin/irpf90 emsl: EMSL_Basis +binary: + $(QPACKAGE_ROOT)/scripts/make_binary.sh + EZFIO: bin/irpf90 $(info $(BLUE)===== Fetching EZFIO from the web ===== $(BLACK)) @sleep 1 diff --git a/ocaml/qp_create_ezfio_from_xyz.ml b/ocaml/qp_create_ezfio_from_xyz.ml index 84763c0f..f3cebe32 100644 --- a/ocaml/qp_create_ezfio_from_xyz.ml +++ b/ocaml/qp_create_ezfio_from_xyz.ml @@ -49,6 +49,9 @@ let run ?o b c m xyz_file = end in + let temp_filename = + Filename.temp_file "qp_create_" ".basis" + in let rec build_basis = function | [] -> () | elem_and_basis_name :: rest -> @@ -66,7 +69,8 @@ let run ?o b c m xyz_file = apply new_accu rest in let accu = - Qpackage.root ^ "/scripts/get_basis.sh \"" ^ basis ^"\"" + Qpackage.root ^ "/scripts/get_basis.sh \"" ^ temp_filename + ^ "\" " ^ basis in List.map nuclei ~f:(fun x -> x.Atom.element) |> apply accu @@ -97,8 +101,8 @@ let run ?o b c m xyz_file = let key = Element.to_string elem in let command = - Qpackage.root ^ "/scripts/get_basis.sh \"" ^ basis ^ "\"" - ^ " " ^ key + Qpackage.root ^ "/scripts/get_basis.sh \"" ^ temp_filename ^ + "\" " ^ basis ^ " " ^ key in begin let filename = diff --git a/scripts/get_basis.sh b/scripts/get_basis.sh index 9e5c0420..0a21a2bf 100755 --- a/scripts/get_basis.sh +++ b/scripts/get_basis.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# get_basis.sh +# get_basis.sh ... # # Uses the EMSL_api.py to get the basis set: # https://github.com/TApplencourt/EMSL_Basis_Set_Exchange_Local @@ -11,6 +11,8 @@ export EMSL_API_ROOT="${QPACKAGE_ROOT}"/EMSL_Basis/ export PYTHONPATH="${EMSL_API_ROOT}":${PYTHONPATH} +tmpfile="$1" +shift basis="$1" shift atoms="" @@ -20,7 +22,6 @@ do atoms+="--atom ${atom} " done -tmpfile=$(tempfile) if [[ $? -ne 0 ]] then echo "==================================================" 1>& 2 diff --git a/scripts/make_binary.sh b/scripts/make_binary.sh new file mode 100755 index 00000000..ffbcd28c --- /dev/null +++ b/scripts/make_binary.sh @@ -0,0 +1,184 @@ +#!/bin/bash +# +# Creates a self-contained binary distribution in the form of a tar.gz file +# +# Tue Jan 13 14:06:25 CET 2015 +# + + +# Check the QPACKAGE_ROOT directory +if [[ -z ${QPACKAGE_ROOT} ]] +then + echo "The QPACKAGE_ROOT environment variable is not set." + echo "Please reload the quantum_package.rc file." + exit 1 +fi + +cd ${QPACKAGE_ROOT} +if [[ -f quantum_package.rc \ + && -f README.md \ + && -d src \ + && -d bin \ + && -d ocaml \ + && -d scripts ]] +then + head -1 README.md | grep "Quantum package" > /dev/null + if [[ $? -ne 0 ]] + then + echo "This doesn't look like a quantum_package directory (README.md)" + exit 1 + fi +else + echo "This doesn't look like a quantum_package directory" + exit 1 +fi + + +# Build all sources +for dir in ${QPACKAGE_ROOT}/{src,ocaml} +do + make -C ${dir} + if [[ $? -ne 0 ]] + then + echo "Error building ${dir}" + fi +done + + +# Copy the files in the static directory +QPACKAGE_STATIC=${QPACKAGE_ROOT}/quantum_package_static + +function find_libs () +{ + for i in $@ + do + ldd $i + done | sort | grep '/' | cut -d ' ' -f 3 | uniq +} + +function find_exec () +{ + find ${QPACKAGE_ROOT}/$1 -perm /u+x -type f +} + + + +# +echo "Creating root of static directory" +# --------------------------------- + +rm -rf -- ${QPACKAGE_STATIC} +mkdir -p -- ${QPACKAGE_STATIC}/{bin,lib,data} +if [[ $? -ne 0 ]] ; +then + echo "Error creating ${QPACKAGE_STATIC}/{bin,lib,data,scripts}" + exit 1 +fi + + +# +echo "Copying binary files" +# -------------------- + +FORTRAN_EXEC=$(find_exec src) +if [[ -z $FORTRAN_EXEC ]] ; +then + echo 'Error : No Fortran binaries found.' + exit 1 +fi + +OCAML_EXEC=$(find_exec ocaml | grep .native ) +if [[ -z $OCAML_EXEC ]] ; +then + echo 'Error : No ocaml binaries found.' + exit 1 +fi + +cp -- ${FORTRAN_EXEC} ${OCAML_EXEC} ${QPACKAGE_STATIC}/bin +if [[ $? -ne 0 ]] ; +then + echo 'cp -- ${FORTRAN_EXEC} ${OCAML_EXEC} ${QPACKAGE_STATIC}/bin' + exit 1 +fi + +cd ${QPACKAGE_STATIC}/bin + for i in *.native + do + mv "$i" $(basename "$i" .native) + done +cd - + +for i in ${FORTRAN_EXEC} +do + i=$(basename $i) + echo $i \$QPACKAGE_ROOT/bin/$i +done >> ${QPACKAGE_STATIC}/data/executables + +# +echo "Copying dynamic libraries" +# -------------------------- + +MKL_LIBS=$(find_libs ${FORTRAN_EXEC} | grep libmkl | head -1) +MKL_LIBS=$(dirname ${MKL_LIBS}) +MKL_LIBS=$(ls ${MKL_LIBS}/libmkl_{def,avx,avx2}.so) +ALL_LIBS=$(find_libs ${OCAML_EXEC} ${FORTRAN_EXEC}) +cp -- ${ALL_LIBS} ${MKL_LIBS} ${QPACKAGE_STATIC}/lib +if [[ $? -ne 0 ]] ; +then + echo 'cp -- ${ALL_LIBS} ${MKL_LIBS} ${QPACKAGE_STATIC}/lib' + exit 1 +fi + + +# +echo "Copying EMSL_Basis directory" +# ---------------------------- + +cp -r -- ${QPACKAGE_ROOT}/EMSL_Basis ${QPACKAGE_STATIC}/ +if [[ $? -ne 0 ]] ; +then + echo 'cp -r -- ${QPACKAGE_ROOT}/EMSL_Basis ${QPACKAGE_STATIC}/' + exit 1 +fi + + +# +echo "Copying scripts directory" +# ------------------------- + +cp -r -- ${QPACKAGE_ROOT}/scripts ${QPACKAGE_STATIC}/ +if [[ $? -ne 0 ]] ; +then + echo 'cp -r -- ${QPACKAGE_ROOT}/scripts ${QPACKAGE_STATIC}/' + exit 1 +fi + + +# +echo "Creating quantum_package.rc" +# --------------------------- + +cat << EOF > ${QPACKAGE_STATIC}/quantum_package.rc +export QPACKAGE_ROOT=\$( cd \$(dirname "\${BASH_SOURCE}") ; pwd -P ) +export LD_LIBRARY_PATH="\${QPACKAGE_ROOT}"/lib:\${LD_LIBRARY_PATH} +export LIBRARY_PATH="\${QPACKAGE_ROOT}"/lib:\${LIBRARY_PATH} +export PYTHONPATH="\${QPACKAGE_ROOT}"/scripts:\${PYTHONPATH} +export PATH="\${QPACKAGE_ROOT}"/scripts:\${PATH} +export PATH="\${QPACKAGE_ROOT}"/bin:\${PATH} +export PATH="\${QPACKAGE_ROOT}"/ocaml:\${PATH} +EOF + +#exit 0 +# +echo "Creating the archive" +# -------------------- + +tar -zcf "${QPACKAGE_STATIC}".tar.gz quantum_package_static && rm -rf -- "${QPACKAGE_STATIC}" +if [[ $? -ne 0 ]] ; +then + echo 'tar -zcf "${QPACKAGE_STATIC}".tar.gz "${QPACKAGE_STATIC}" && rm -rf -- "${QPACKAGE_STATIC}"' + exit 1 +fi + +echo "Done : ${QPACKAGE_STATIC}.tar.gz" + diff --git a/setup_environment.sh b/setup_environment.sh index 06a4959c..4fbcf977 100755 --- a/setup_environment.sh +++ b/setup_environment.sh @@ -8,13 +8,14 @@ BLUE="" RED="" BLACK="(B" -QPACKAGE_ROOT=${PWD} +QPACKAGE_ROOT="$( cd "$(dirname "$BASH_SOURCE")" ; pwd -P )" -if [[ -z ${IRPF90} ]] ; + +if [[ -z "${IRPF90}" ]] ; then make irpf90 - IRPF90=${QPACKAGE_ROOT}/bin/irpf90 - if [[ ! -x ${IRPF90} ]] + IRPF90="${QPACKAGE_ROOT}"/bin/irpf90 + if [[ ! -x "${IRPF90}" ]] then echo $RED "Error in IRPF90 installation" $BLACK exit 1 @@ -28,18 +29,17 @@ then fi cat << EOF > quantum_package.rc -export IRPF90=${IRPF90} -export OCAMLBREW_BASE=${OCAMLBREW_BASE} -export QPACKAGE_ROOT=${QPACKAGE_ROOT} -export LD_LIBRARY_PATH="\${QPACKAGE_ROOT}/lib":\${LD_LIBRARY_PATH} -export LIBRARY_PATH="\${QPACKAGE_ROOT}/lib":\${LIBRARY_PATH} -export C_INCLUDE_PATH=\${QPACKAGE_ROOT}/include:\${C_INCLUDE_PATH} -export PYTHONPATH=\${PYTHONPATH}:\${QPACKAGE_ROOT}/scripts -export PATH=\${PATH}:\${QPACKAGE_ROOT}/scripts -export PATH=\${PATH}:\${QPACKAGE_ROOT}/bin -export PATH=\${PATH}:\${QPACKAGE_ROOT}/ocaml -export QPACKAGE_CACHE_URL="http://qmcchem.ups-tlse.fr/files/scemama/quantum_package/cache" -source "\${QPACKAGE_ROOT}/bin/irpman" &> /dev/null +export IRPF90="${IRPF90}" +export OCAMLBREW_BASE="${OCAMLBREW_BASE}" +export QPACKAGE_ROOT=\$( cd \$(dirname "\${BASH_SOURCE}") ; pwd -P ) +export LD_LIBRARY_PATH="\${QPACKAGE_ROOT}"/lib:\${LD_LIBRARY_PATH} +export LIBRARY_PATH="\${QPACKAGE_ROOT}"/lib:\${LIBRARY_PATH} +export C_INCLUDE_PATH="\${QPACKAGE_ROOT}"/include:\${C_INCLUDE_PATH} +export PYTHONPATH=\${PYTHONPATH}:"\${QPACKAGE_ROOT}"/scripts +export PATH=\${PATH}:"\${QPACKAGE_ROOT}"/scripts +export PATH=\${PATH}:"\${QPACKAGE_ROOT}"/bin +export PATH=\${PATH}:"\${QPACKAGE_ROOT}"/ocaml +source "\${QPACKAGE_ROOT}"/bin/irpman" &> /dev/null source "\${OCAMLBREW_BASE}"/ocaml-4*/etc/ocamlbrew.bashrc &> /dev/null EOF