diff --git a/lib/Install.py b/lib/Install.py index e1e6fc9a0a..e0ceacb220 100644 --- a/lib/Install.py +++ b/lib/Install.py @@ -7,33 +7,46 @@ from __future__ import print_function import sys,os,subprocess sys.path.append('..') -from install_helpers import error,get_cpus +from install_helpers import get_cpus,fullpath +from argparse import ArgumentParser -# parse args +parser = ArgumentParser(prog='Install.py', + description="LAMMPS library build wrapper script") -args = sys.argv[1:] -nargs = len(args) -if nargs == 0: error() +help = """ +Syntax from src dir: make lib-libname args="-m machine -e suffix" +Syntax from lib dir: python Install.py -m machine -e suffix -machine = None -extraflag = 0 +libname = name of lib dir (e.g. atc, h5md, meam, poems, etc) +specify -m and optionally -e, order does not matter -iarg = 0 -while iarg < nargs: - if args[iarg] == "-m": - if iarg+2 > nargs: error() - machine = args[iarg+1] - iarg += 2 - elif args[iarg] == "-e": - if iarg+2 > nargs: error() - extraflag = 1 - suffix = args[iarg+1] - iarg += 2 - else: error() +Examples: + +make lib-poems args="-m serial" # build POEMS lib with same settings as in the serial Makefile in src +make lib-colvars args="-m mpi" # build USER-COLVARS lib with same settings as in the mpi Makefile in src +make lib-meam args="-m ifort" # build MEAM lib with custom Makefile.ifort (using Intel Fortran) +""" + +# parse and process arguments + +parser.add_argument("-m", "--machine", + help="suffix of a /Makefile.* file used for compiling this library") +parser.add_argument("-e", "--extramake", + help="set EXTRAMAKE variable in /Makefile. to Makefile.lammps.") + +args = parser.parse_args() + +# print help message and exit, if neither build nor path options are given +if not args.machine and not args.extramake: + parser.print_help() + sys.exit(help) + +machine = args.machine +extraflag = args.extramake # set lib from working dir -cwd = os.getcwd() +cwd = fullpath('.') lib = os.path.basename(cwd) # create Makefile.auto as copy of Makefile.machine @@ -65,10 +78,11 @@ try: txt = subprocess.check_output(cmd,shell=True,stderr=subprocess.STDOUT) print(txt.decode('UTF-8')) except subprocess.CalledProcessError as e: - print("Make failed with:\n %s" % e.output.decode('UTF-8')) - sys.exit(1) + print("Make failed with:\n %s" % e.output.decode('UTF-8')) + sys.exit(1) if os.path.exists("lib%s.a" % lib): print("Build was successful") else: error("Build of lib/%s/lib%s.a was NOT successful" % (lib,lib)) + if has_extramake and not os.path.exists("Makefile.lammps"): - print("lib/%s/Makefile.lammps was NOT created" % lib) + print("WARNING: lib/%s/Makefile.lammps was NOT created" % lib) diff --git a/lib/install_helpers.py b/lib/install_helpers.py index 428b801502..7990463736 100644 --- a/lib/install_helpers.py +++ b/lib/install_helpers.py @@ -1,36 +1,5 @@ import hashlib,os,subprocess,sys -# default help message - -defhelp = """ -Syntax from src dir: make lib-libname args="-m machine -e suffix" -Syntax from lib dir: python Install.py -m machine -e suffix - -libname = name of lib dir (e.g. atc, h5md, meam, poems, etc) -specify -m and optionally -e, order does not matter - - -m = peform a clean followed by "make -f Makefile.machine" - machine = suffix of a lib/Makefile.* file - -e = set EXTRAMAKE variable in Makefile.machine to Makefile.lammps.suffix - does not alter existing Makefile.machine - -Examples: - -make lib-poems args="-m serial" # build POEMS lib with same settings as in the serial Makefile in src -make lib-colvars args="-m mpi" # build USER-COLVARS lib with same settings as in the mpi Makefile in src -make lib-meam args="-m ifort" # build MEAM lib with custom Makefile.ifort (using Intel Fortran) -""" - -# print error message or help -def error(str=None,help=None): - if not str: - if not help: - print(defhelp) - else: - print(help) - else: print("ERROR",str) - sys.exit() - # try to auto-detect the maximum number of available CPUs def get_cpus(): try: diff --git a/lib/voronoi/Install.py b/lib/voronoi/Install.py index 1199c25f71..4f906cf6f2 100644 --- a/lib/voronoi/Install.py +++ b/lib/voronoi/Install.py @@ -6,8 +6,7 @@ from __future__ import print_function import sys,os,re,subprocess,shutil sys.path.append('..') -from install_helpers import error,get_cpus,fullpath,which,geturl - +from install_helpers import get_cpus,fullpath,geturl from argparse import ArgumentParser parser = ArgumentParser(prog='Install.py',