Commit 0598cde6 authored by Marco Govoni's avatar Marco Govoni
Browse files

Merge branch 'pysetup' into 'develop'

Pysetup

See merge request west-devel/West!24
parents 9ebc944a 87274b11
......@@ -7,8 +7,9 @@
*.UPF
*.dSYM
*.a
*.in
*.out
doc/_build/
Modules/west_version.f90
Pytools/setup.py
west_make.inc
*/__pycache__
......@@ -26,13 +26,14 @@ stages:
- git clone -b 'qe-6.1.0' --single-branch --depth 1 https://gitlab.com/QEF/q-e.git QEDIR
- cd QEDIR
- git describe
- ./configure LD_LIBS="`python3-config --ldflags`"
- ./configure
- make -j pw
- ls bin
- git clone -b $CI_COMMIT_REF_NAME $CI_REPOSITORY_URL West
- cd West
- git describe
- make
- make conf PYT=python3
- make all
- ls ../bin
.template_test:
......@@ -41,12 +42,13 @@ stages:
- git clone -b 'qe-6.1.0' --single-branch --depth 1 https://gitlab.com/QEF/q-e.git QEDIR
- cd QEDIR
- git describe
- ./configure LD_LIBS="`python3-config --ldflags`"
- ./configure
- make -j pw
- ls bin
- git clone -b $CI_COMMIT_REF_NAME $CI_REPOSITORY_URL West
- cd West
- make > /dev/null
- make conf PYT=python3
- make all > /dev/null
- useradd -m qe
- cp -r test-suite /home/qe
- su - qe
......
Change Log
==========
vX.X.X (XXXX/XX/XX)
v4.2.0p (XXXX/XX/XX)
-------------------
- Introduced automatic installation of missing python packages
- Introduced the conf layer in the Makefile to ease installation
- Updated manual
v4.1.0 (2019/10/18)
......
# Makefile for the WEST software
include ./VERSION
include ../make.inc
default: all
conf:
@[ "${PYT}" ] || ( echo ">> PYT is not set. Ex: make conf PYT=python3"; exit 1 )
@echo "# WEST_VERSION_NUMBER : ${WEST_VERSION_NUMBER}"
@echo " " > west_make.inc
@echo WESTDIR=`pwd` >> west_make.inc
@echo PYT=${PYT} >> west_make.inc
@if [ -z "${PYT_LDFLAGS}" ] ; then echo PYT_LDFLAGS="`${PYT}-config --ldflags`" >> west_make.inc ; else echo PYT_LDFLAGS=${PYT_LDFLAGS} >> west_make.inc ; fi
@echo " "
@echo "Generated file: west_make.inc"
@cat west_make.inc
@echo " "
check_conf:
@[ -f "west_make.inc" ] || ( echo ">> Cannot find west_make.inc. Run: make conf PYT=python3"; exit 1 )
$(eval include ./west_make.inc)
report_build_vars :
@echo " "
@echo "##############"
@echo "# Build vars #"
@echo "##############"
@echo " "
@[ "${MPIF90}" ] || ( echo ">> MPIF90 is not set."; exit 1 )
@[ "${CC}" ] || ( echo ">> CC is not set."; exit 1 )
@echo "# WEST_VERSION_NUMBER : ${WEST_VERSION_NUMBER}"
@echo "# WESTDIR : ${WESTDIR}"
@echo "# FDFLAGS : ${FDFLAGS}"
@echo "# IFLAGS : ${IFLAGS}"
@echo "# MOD_FLAG : ${MOD_FLAG}"
@echo "# MPIF90 : ${MPIF90}"
@echo "# CC : ${CC}"
@echo "# F77 : ${F77}"
@echo "# CPP : ${CPP}"
@echo "# CPPFLAGS : ${CPPFLAGS}"
@echo "# CFLAGS : ${CFLAGS}"
@echo "# F90FLAGS : ${F90FLAGS}"
@echo "# FFLAGS : ${FFLAGS}"
@echo "# FFLAGS_NOOPT : ${FFLAGS_NOOPT}"
@echo "# LD : ${LD}"
@echo "# LDFLAGS : ${LDFLAGS}"
@echo "# LD_LIBS : ${LD_LIBS}"
@echo "# BLAS_LIBS : ${BLAS_LIBS}"
@echo "# BLAS_LIBS_SWITCH : ${BLAS_LIBS_SWITCH}"
@echo "# LAPACK_LIBS : ${LAPACK_LIBS}"
@echo "# LAPACK_LIBS_SWITCH : ${LAPACK_LIBS_SWITCH}"
@echo "# SCALAPACK_LIBS : ${SCALAPACK_LIBS}"
@echo "# FFT_LIBS : ${FFT_LIBS}"
@echo "# MPI_LIBS : ${MPI_LIBS}"
@echo "# MASS_LIBS : ${MASS_LIBS}"
@echo "# AR : ${AR}"
@echo "# ARFLAGS : ${ARFLAGS}"
@echo "# RANLIB : ${RANLIB}"
@echo "# FLIB_TARGETS : ${FLIB_TARGETS}"
@echo "# LIBOBJS : ${LIBOBJS}"
@echo "# LIBS : ${LIBS}"
@echo "# WGET : ${WGET}"
@echo "# PYT : ${PYT}"
@echo "# PYT_LDFLAGS : ${PYT_LDFLAGS}"
@echo " "
pytools: \
check_conf \
report_build_vars \
pytools_do
wstat: \
libraries_do \
modules_do \
......@@ -15,19 +84,27 @@ io_kernel_do \
wstat_do
wfreq: \
pytools \
wstat \
wfreq_do
westpp: \
pytools \
wstat \
wfreq \
westpp_do
all: \
pytools \
wstat \
wfreq \
westpp
pytools_do:
if test -d Pytools ; then \
( cd Pytools ; if test "$(MAKE)" = "" ; then make $(MFLAGS) all; \
else $(MAKE) $(MFLAGS) all ; fi ) ; fi
libraries_do:
if test -d Libraries ; then \
( cd Libraries ; if test "$(MAKE)" = "" ; then make $(MFLAGS) all; \
......@@ -35,7 +112,8 @@ libraries_do:
modules_do:
if test -d Modules ; then \
( cd Modules ; sh update_west_version; if test "$(MAKE)" = "" ; then make $(MFLAGS) all; \
( cd Modules ; sh ./update_west_version ${WESTDIR} ${WEST_VERSION_NUMBER}; \
if test "$(MAKE)" = "" ; then make $(MFLAGS) all; \
else $(MAKE) $(MFLAGS) all ; fi ) ; fi
tools_do:
......@@ -75,20 +153,21 @@ io_kernel_do:
wstat_do:
if test -d Wstat ; then \
( cd Wstat ; if test "$(MAKE)" = "" ; then make $(MFLAGS) all; \
else $(MAKE) $(MFLAGS) all ; fi ) ; fi
( cd Wstat ; if test "$(MAKE)" = "" ; then make $(MFLAGS) all PYT_LDFLAGS="${PYT_LDFLAGS}"; \
else $(MAKE) $(MFLAGS) all PYT_LDFLAGS="${PYT_LDFLAGS}"; fi ) ; fi
wfreq_do:
if test -d Wfreq ; then \
( cd Wfreq ; if test "$(MAKE)" = "" ; then make $(MFLAGS) all; \
else $(MAKE) $(MFLAGS) all ; fi ) ; fi
( cd Wfreq ; if test "$(MAKE)" = "" ; then make $(MFLAGS) all PYT_LDFLAGS="${PYT_LDFLAGS}"; \
else $(MAKE) $(MFLAGS) all PYT_LDFLAGS="${PYT_LDFLAGS}"; fi ) ; fi
westpp_do:
if test -d Westpp ; then \
( cd Westpp ; if test "$(MAKE)" = "" ; then make $(MFLAGS) all; \
else $(MAKE) $(MFLAGS) all ; fi ) ; fi
( cd Westpp ; if test "$(MAKE)" = "" ; then make $(MFLAGS) all PYT_LDFLAGS="${PYT_LDFLAGS}"; \
else $(MAKE) $(MFLAGS) all PYT_LDFLAGS="${PYT_LDFLAGS}"; fi ) ; fi
clean: \
pytools_undo \
libraries_undo \
modules_undo \
tools_undo \
......@@ -102,6 +181,11 @@ wstat_undo \
wfreq_undo \
westpp_undo
pytools_undo:
if test -d Pytools ; then \
( cd Pytools ; if test "$(MAKE)" = "" ; then make clean ; \
else $(MAKE) clean ; fi ) ; fi
libraries_undo:
if test -d Libraries ; then \
( cd Libraries ; if test "$(MAKE)" = "" ; then make clean ; \
......@@ -162,4 +246,8 @@ westpp_undo:
( cd Westpp ; if test "$(MAKE)" = "" ; then make clean ; \
else $(MAKE) clean ; fi ) ; fi
distclean: clean
unconf:
[ -f "west_make.inc" ] && ( rm west_make.inc )
veryclean: clean \
unconf
# Makefile for Modules
include ../VERSION
include ../west_make.inc
include ../../make.inc
# location of needed modules
......@@ -12,18 +14,20 @@ IFLAGS=
MODULES_OBJS = \
west_version.o \
westcom.o
westcom.o \
PWOBJS = ../../PW/src/libpw.a
QEMODS = ../../Modules/libqemod.a ../../FFTXlib/libqefft.a ../../LAXlib/libqela.a ../Libraries/Forpy/libforpy.a
TLDEPS= bindir mods libs pw
all : title tldeps libmodules.a
all: title tldeps update libmodules.a
tldeps:
test -n "$(TLDEPS)" && ( cd ../.. ; $(MAKE) $(MFLAGS) $(TLDEPS) || exit 1) || :
./update_west_version ${TOPDIR}
update:
./update_west_version ${WESTDIR} ${WEST_VERSION_NUMBER}
libmodules.a : $(MODULES_OBJS)
$(AR) $(ARFLAGS) $@ $?
......
#!/bin/sh
top_dir=$1
echo "TOPDIR = " $top_dir
westdir_=$1
echo "WESTDIR = " $westdir_
west_version_number_=$2
echo "WEST_VERSION_NUMBER = " $west_version_number_
# check if svn info available (do not write anything)
git remote -v 2> /dev/null > /dev/null
......@@ -16,7 +19,7 @@ fi
echo "GITREV = " $git_rev
# write svn into file version_tmp.f90
cat west_version.f90.in | sed "s/unknown/$git_rev/;s&unset&$top_dir&" > west_version.f90.tmp
cat west_version.f90.in | sed "s,checkit,${west_version_number_},;s/unknown/$git_rev/;s&unset&${westdir_}&" > west_version.f90.tmp
# check if a previous version.f90 file exists
if test -f west_version.f90 ; then
......
......@@ -20,9 +20,9 @@ MODULE west_version
!
SAVE
!
CHARACTER (LEN=6) :: west_version_number = '4.1.0'
CHARACTER (LEN=6) :: west_version_number = 'checkit'
CHARACTER (LEN=512) :: west_git_revision = 'unknown'
CHARACTER (LEN=512) :: west_forpy_path = 'unset'
CHARACTER (LEN=512) :: west_topdir = 'unset'
TYPE(list) :: paths
!
CONTAINS
......@@ -38,7 +38,7 @@ MODULE west_version
IERR = get_sys_path(paths)
IF(IERR/=0) CALL errore('forpy','Err: cannot get_sys_path',1)
!
IERR = paths%append(TRIM(ADJUSTL(west_forpy_path))//"West/Pytools")
IERR = paths%append(TRIM(ADJUSTL(west_topdir))//"/Pytools")
IF(IERR/=0) CALL errore('forpy','Err: cannot append paths',1)
END SUBROUTINE
!
......
#PYT=python3
include ../west_make.inc
include ../VERSION
all: \
title \
install
install:
cat setup.py.in | sed "s,checkit,${WEST_VERSION_NUMBER}," > setup.py
- ${PYT} setup.py install --user --prefix= --record files.txt
clean:
- rm -rf west.egg-info
- rm -rf build
- rm -rf dist
- rm files.txt
title :
@echo " "
@echo "##############"
@echo "### Pytools ##"
@echo "##############"
@echo " "
from setuptools import setup
from setuptools import find_packages
setup(name="west",
version="checkit",
packages=find_packages(),
description='installation script for WEST',
url='https://west-code.org',
author='Marco Govoni',
author_email='mgovoni@anl.gov',
license='GPLv3',
install_requires=[
'numpy',
'scipy',
'matplotlib',
'pyyaml',
'datetime',
'setuptools'
],
python_requires='>=3.6, <4',
zip_safe=True)
WEST_VERSION_NUMBER=4.2.0p
......@@ -51,7 +51,7 @@ all : title tldeps westpp.x
westpp.x : $(PWOBJS) $(WESTPP_OBJS) $(QEMODS) $(LIBOBJS)
$(LD) $(LDFLAGS) -o westpp.x \
$(WESTPP_OBJS) $(WESTLIBS) $(PWOBJS) $(QEMODS) $(LIBOBJS) $(LIBS)
$(WESTPP_OBJS) $(WESTLIBS) $(PWOBJS) $(QEMODS) $(LIBOBJS) $(LIBS) ${PYT_LDFLAGS}
- ( cd ../../bin ; ln -fs ../West/Westpp/westpp.x . )
tldeps:
test -n "$(TLDEPS)" && ( cd ../.. ; $(MAKE) $(MFLAGS) $(TLDEPS) || exit 1) || :
......
......@@ -100,7 +100,7 @@ all : title tldeps wfreq.x
wfreq.x : $(PWOBJS) $(WFREQ_OBJS) $(QEMODS) $(LIBOBJS)
$(LD) $(LDFLAGS) -o wfreq.x \
$(WFREQ_OBJS) $(WESTLIBS) $(PWOBJS) $(QEMODS) $(LIBOBJS) $(LIBS)
$(WFREQ_OBJS) $(WESTLIBS) $(PWOBJS) $(QEMODS) $(LIBOBJS) $(LIBS) ${PYT_LDFLAGS}
- ( cd ../../bin ; ln -fs ../West/Wfreq/wfreq.x . )
tldeps:
test -n "$(TLDEPS)" && ( cd ../.. ; $(MAKE) $(MFLAGS) $(TLDEPS) || exit 1) || :
......
......@@ -49,7 +49,7 @@ all : title tldeps wstat.x
wstat.x : $(PWOBJS) $(WSTAT_OBJS) $(QEMODS) $(LIBOBJS)
$(LD) $(LDFLAGS) -o wstat.x \
$(WSTAT_OBJS) $(WESTLIBS) $(PWOBJS) $(QEMODS) $(LIBOBJS) $(LIBS)
$(WSTAT_OBJS) $(WESTLIBS) $(PWOBJS) $(QEMODS) $(LIBOBJS) $(LIBS) $(PYT_LDFLAGS)
- ( cd ../../bin ; ln -fs ../West/Wstat/wstat.x . )
tldeps:
test -n "$(TLDEPS)" && ( cd ../.. ; $(MAKE) $(MFLAGS) $(TLDEPS) || exit 1) || :
......
......@@ -14,7 +14,7 @@ Configure QuantumEspresso by running the ``configure`` script that comes with th
$ git clone -b 'qe-6.1.0' --single-branch --depth 1 https://gitlab.com/QEF/q-e.git QEdir
$ cd QEdir
$ git clone -b 'v4.1.0' --single-branch --depth 1 http://greatfire.uchicago.edu/west-public/West.git West
$ ./configure LD_LIBS="`python3-config --ldflags`"
$ ./configure
.. note::
Note that since v4.0.0 WEST requires dynamic linking and python3.
......@@ -26,7 +26,8 @@ It's now time to create the ``pw.x``, ``wstat.x``, ``wfreq.x``, and ``westpp.x``
$ cd QEdir
$ make pw
$ cd QEdir/West
$ make
$ make conf PYT=python3
$ make all
You have succefully installed QuantumEspresso and WEST if you see the executables ``pw.x``, ``wstat.x``, ``wfreq.x``, and ``westpp.x`` created in the QEdir/bin directory.
......
......@@ -38,13 +38,14 @@ WEST executables can be compiled using the following script:
export LAPACK_LIBS=${MY_LIB_PATH}/LAPACK/liblapack.a
export SCALAPACK_LIBS=${MY_LIB_PATH}/SCALAPACK/libscalapack.a
export FFT_LIBS="${MY_LIB_PATH}/FFTW3/lib/libfftw3.a ${MY_LIB_PATH}/FFTW3/lib/libfftw3_omp.a"
./configure --with-scalapack --enable-openmp LD_LIBS="`python3-config --ldflags`"
./configure --with-scalapack --enable-openmp
make -j 4 pw
cd West
make
make conf PYT=python3
make all
To use the script do:
......
......@@ -34,11 +34,12 @@ WEST executables can be compiled using the following script:
export LAPACK_LIBS=" "
export SCALAPACK_LIBS=" -lmkl_scalapack_lp64 -Wl,--start-group -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lmkl_blacs_intelmpi_lp64 -Wl,--end-group"
./configure --enable-parallel --with-scalapack --enable-openmp LD_LIBS="`python3-config --ldflags`"
./configure --enable-parallel --with-scalapack --enable-openmp
make -j 6 pw
cd West
make
make conf PYT=python3
make all
To use the script do:
......
......@@ -27,12 +27,13 @@ WEST executables can be compiled using the following script:
export LD_LIBRARY_PATH=/opt/intel/compilers_and_libraries_2018.0.128/linux/compiler/lib/intel64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/opt/python/3.6.5.3/lib:$LD_LIBRARY_PATH
./configure MPIF90=ftn CC=cc CXX=CC --enable-openmp=yes --enable-parallel=yes --enable-shared=yes --with-scalapack=intel SCALAPACK_LIBS="${MKLROOT}/lib/intel64/libmkl_scalapack_lp64.so -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.so ${MKLROOT}/lib/intel64/libmkl_intel_thread.so ${MKLROOT}/lib/intel64/libmkl_core.so ${MKLROOT}/lib/intel64/libmkl_blacs_intelmpi_lp64.so -Wl,--end-group" FFLAGS=" -xMIC-AVX512 -qopenmp -align array64byte -fp-model fast=2 -no-prec-div -assume byterecl" --with-hdf5=no CFLAGS=" -xMIC-AVX512" LDFLAGS=" -shared-intel -qopenmp" LD_LIBS="`python3-config --ldflags`"
./configure MPIF90=ftn CC=cc CXX=CC --enable-openmp=yes --enable-parallel=yes --enable-shared=yes --with-scalapack=intel SCALAPACK_LIBS="${MKLROOT}/lib/intel64/libmkl_scalapack_lp64.so -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.so ${MKLROOT}/lib/intel64/libmkl_intel_thread.so ${MKLROOT}/lib/intel64/libmkl_core.so ${MKLROOT}/lib/intel64/libmkl_blacs_intelmpi_lp64.so -Wl,--end-group" FFLAGS=" -xMIC-AVX512 -qopenmp -align array64byte -fp-model fast=2 -no-prec-div -assume byterecl" --with-hdf5=no CFLAGS=" -xMIC-AVX512" LDFLAGS=" -shared-intel -qopenmp"
make pw -j 16
cd West
make
make conf PYT=python3
make all
To use the script do:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment