Work on Makefiles to make install easier...
epsi-builds/msspec_python3/pipeline/head This commit looks good
Details
epsi-builds/msspec_python3/pipeline/head This commit looks good
Details
This commit is contained in:
parent
3834f38aec
commit
d4ed926e55
23
Makefile
23
Makefile
|
@ -1,6 +1,6 @@
|
||||||
include src/options.mk
|
include src/options.mk
|
||||||
|
|
||||||
PYTHON = python3
|
PYTHON = python
|
||||||
|
|
||||||
# Checking Python version
|
# Checking Python version
|
||||||
PYTHON_EXE := $(shell command -v $(PYTHON) 2> /dev/null)
|
PYTHON_EXE := $(shell command -v $(PYTHON) 2> /dev/null)
|
||||||
|
@ -17,21 +17,30 @@ ifneq ($(shell test $(PYTHON_VERSION_MAJOR) -ge 3 -a $(PYTHON_VERSION_MINOR) -ge
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
.PHONY: pybinding venv doc
|
.PHONY: pybinding venv doc clean
|
||||||
|
|
||||||
|
|
||||||
pybinding:
|
pybinding:
|
||||||
@+$(MAKE) -C src pybinding
|
@+$(MAKE) -C src pybinding
|
||||||
|
|
||||||
|
|
||||||
|
install: venv
|
||||||
|
@+$(MAKE) -C src sdist
|
||||||
|
@+$(MAKE) -C src frontend
|
||||||
|
@. $(VENV_PATH)/bin/activate && pip install src/dist/msspec-$(VERSION).tar.gz
|
||||||
|
|
||||||
venv:
|
venv:
|
||||||
virtualenv --python=$(PYTHON_EXE) --prompt="(msspec-$(VERSION)) " venv
|
virtualenv --python=$(PYTHON_EXE) --prompt="(msspec-$(VERSION)) " $(VENV_PATH)
|
||||||
. ./venv/bin/activate && pip install --upgrade pip && pip install -r src/pip.freeze
|
. $(VENV_PATH)/bin/activate && pip install --upgrade pip && pip install -r src/pip.freeze
|
||||||
|
|
||||||
doc:
|
doc:
|
||||||
@echo "Building pdf and html documentation..."
|
@echo "Building pdf and html documentation..."
|
||||||
@mkdir -p package/
|
@mkdir -p package/
|
||||||
@+$(MAKE) -C doc/ latexpdf $(SUPPRESS_OUPUT)
|
@+$(MAKE) -C doc/ latexpdf
|
||||||
@rm -rf package/*.pdf
|
@rm -rf package/*.pdf
|
||||||
@cp "doc/build/latex/MsSpec-python.pdf" "./package/MsSpec-${VERSION}.pdf"
|
@cp "doc/build/latex/MsSpec-python.pdf" "./package/MsSpec-$(VERSION).pdf"
|
||||||
@+$(MAKE) -C doc/ html $(SUPPRESS_OUPUT)
|
@+$(MAKE) -C doc/ html
|
||||||
|
|
||||||
|
clean::
|
||||||
|
@+$(MAKE) -C src/ clean
|
||||||
|
|
||||||
|
|
|
@ -83,8 +83,9 @@ html0: banner images
|
||||||
@echo
|
@echo
|
||||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
||||||
|
|
||||||
html: html0 ownership $(BUILDDIR)/html/sitemap.xml coverage_report
|
#html: html0 ownership $(BUILDDIR)/html/sitemap.xml coverage_report
|
||||||
@echo
|
|
||||||
|
html: html0 ownership $(BUILDDIR)/html/sitemap.xml
|
||||||
|
|
||||||
coverage_report:
|
coverage_report:
|
||||||
@echo "Generating coverage report..."
|
@echo "Generating coverage report..."
|
||||||
|
|
22
src/Makefile
22
src/Makefile
|
@ -1,20 +1,31 @@
|
||||||
include options.mk
|
include options.mk
|
||||||
|
|
||||||
.PHONY: sdist pybinding results clean
|
.PHONY: sdist frontend pybinding results clean
|
||||||
|
|
||||||
install: sdist
|
|
||||||
@echo "Installing msspec python package"
|
|
||||||
@pip install dist/msspec-*.tar.gz
|
|
||||||
|
|
||||||
sdist: pybinding
|
foo:
|
||||||
|
echo $(VERSION)
|
||||||
|
|
||||||
|
sdist: dist/msspec-$(VERSION).tar.gz
|
||||||
|
|
||||||
|
|
||||||
|
frontend: $(INSTALL_PREFIX)/bin/msspec
|
||||||
|
|
||||||
|
|
||||||
|
dist/msspec-$(VERSION).tar.gz: pybinding
|
||||||
@echo "Creating Python source distribution..."
|
@echo "Creating Python source distribution..."
|
||||||
@python setup.py sdist
|
@python setup.py sdist
|
||||||
|
|
||||||
|
$(INSTALL_PREFIX)/bin/msspec:
|
||||||
|
@cat msspec.sh.template | sed 's/__VERSION__/$(VERSION)/' > $@
|
||||||
|
@chmod u+x $@
|
||||||
|
|
||||||
|
|
||||||
pybinding:
|
pybinding:
|
||||||
@echo "Building Python binding for phagen and spec..."
|
@echo "Building Python binding for phagen and spec..."
|
||||||
@+$(MAKE) -C msspec/phagen/fortran all
|
@+$(MAKE) -C msspec/phagen/fortran all
|
||||||
@+$(MAKE) -C msspec/spec/fortran all
|
@+$(MAKE) -C msspec/spec/fortran all
|
||||||
|
@echo "$(VERSION)" > VERSION
|
||||||
|
|
||||||
results: msspec/results.txt
|
results: msspec/results.txt
|
||||||
|
|
||||||
|
@ -38,6 +49,7 @@ clean::
|
||||||
# remove previous sdist
|
# remove previous sdist
|
||||||
@rm -rf dist
|
@rm -rf dist
|
||||||
@rm -rf *.egg*
|
@rm -rf *.egg*
|
||||||
|
@rm VERSION
|
||||||
|
|
||||||
|
|
||||||
help:
|
help:
|
||||||
|
|
|
@ -0,0 +1,100 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
SCRIPT_NAME="$0"
|
||||||
|
VERSION="__VERSION__"
|
||||||
|
VENV_PATH="$HOME/.local/src/msspec_venv_$VERSION"
|
||||||
|
|
||||||
|
# Check venv path
|
||||||
|
if ! [ -d "$VENV_PATH" ]; then
|
||||||
|
echo "ERROR: Unable to find version $VERSION of msspec!!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
launch_script() {
|
||||||
|
. "$VENV_PATH/bin/activate" && python $@
|
||||||
|
}
|
||||||
|
|
||||||
|
show_help () {
|
||||||
|
echo "Usage: 1) $SCRIPT_NAME -p [PYTHON OPTIONS] SCRIPT [ARGUMENTS...]"
|
||||||
|
echo " 2) $SCRIPT_NAME [-l FILE | -i | -h]"
|
||||||
|
echo " 3) eval \$($SCRIPT_NAME -e)"
|
||||||
|
echo ""
|
||||||
|
echo "Form (1) is used to launch a script"
|
||||||
|
echo "Form (2) is used to load a hdf5 data file"
|
||||||
|
echo "Form (3) is used to activate the msspec virtual environment"
|
||||||
|
echo ""
|
||||||
|
echo "List of possible options:"
|
||||||
|
echo " -p Pass every arguments after this option to the msspec"
|
||||||
|
echo " virtual environment Python interpreter."
|
||||||
|
echo " -i Run the interactive Python interpreter within msspec"
|
||||||
|
echo " virtual environment."
|
||||||
|
echo " -l Load and display a *.hdf5 data file in a graphical"
|
||||||
|
echo " window."
|
||||||
|
echo " -h Show this help message."
|
||||||
|
}
|
||||||
|
|
||||||
|
launch_interpreter() {
|
||||||
|
source $VENV_PATH/bin/activate
|
||||||
|
echo "Python interpreter of the MsSpec virtual environment."
|
||||||
|
echo ""
|
||||||
|
echo "This environment includes the following packages:"
|
||||||
|
pip list
|
||||||
|
echo ""
|
||||||
|
echo "Type in <CTRL>+D to exit."
|
||||||
|
echo ""
|
||||||
|
ipython --profile=msspec
|
||||||
|
}
|
||||||
|
|
||||||
|
load_data() {
|
||||||
|
. "$VENV_PATH/bin/activate" && python -m msspec.iodata $1
|
||||||
|
}
|
||||||
|
|
||||||
|
read_yes_no () {
|
||||||
|
PROMPT="$1"
|
||||||
|
DEFAULT="$2"
|
||||||
|
BYPASS="$3"
|
||||||
|
|
||||||
|
ANSWER=""
|
||||||
|
RESPONSE=""
|
||||||
|
|
||||||
|
VALID=1
|
||||||
|
while test $VALID -ne 0; do
|
||||||
|
test "$BYPASS" = "y" || read -p "${PROMPT} (y/n) [${DEFAULT}]? " "RESPONSE"
|
||||||
|
ANSWER="${RESPONSE:-${DEFAULT}}"
|
||||||
|
case "${ANSWER}" in
|
||||||
|
y|n) VALID=0 ;;
|
||||||
|
*) echo "Invalid choice, please answer \"y\" or \"n\"."; VALID=1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
uninstall() {
|
||||||
|
read_yes_no "This will completely remove msspec from your computer. Are you sure" "n" "$BYPASS"
|
||||||
|
case "${ANSWER}" in
|
||||||
|
y) rm -rv "$VENV_PATH" && rm "$SCRIPT_NAME" && echo "MsSpec successfully uninstalled." ;;
|
||||||
|
n) echo "Uninstallation aborted." ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
while getopts "hil:p:eu" option; do
|
||||||
|
case $option in
|
||||||
|
p) shift; launch_script "$@"
|
||||||
|
;;
|
||||||
|
i) launch_interpreter
|
||||||
|
;;
|
||||||
|
l) load_data "$OPTARG"; shift
|
||||||
|
;;
|
||||||
|
e) echo ". $VENV_PATH/bin/activate"
|
||||||
|
;;
|
||||||
|
u) uninstall
|
||||||
|
;;
|
||||||
|
*|h) show_help
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $OPTIND -eq 1 ]; then
|
||||||
|
show_help
|
||||||
|
fi
|
|
@ -44,7 +44,10 @@ except Exception as err:
|
||||||
__version__ = get_distribution(__name__.strip('.version')).version
|
__version__ = get_distribution(__name__.strip('.version')).version
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
try:
|
try:
|
||||||
with open("../VERSION", "r") as fd:
|
thisfile_path = os.path.abspath(__file__)
|
||||||
|
thisfile_dir = os.path.dirname(thisfile_path)
|
||||||
|
versionfile = os.path.join(thisfile_dir, "../VERSION")
|
||||||
|
with open(versionfile, "r") as fd:
|
||||||
__version__ = fd.readline()
|
__version__ = fd.readline()
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
print("Unable to get the version number!")
|
print("Unable to get the version number!")
|
||||||
|
|
|
@ -4,6 +4,7 @@ F2PY = f2py3
|
||||||
DEBUG = 0
|
DEBUG = 0
|
||||||
VERBOSE = 0
|
VERBOSE = 0
|
||||||
BUILDDIR = ./build
|
BUILDDIR = ./build
|
||||||
|
INSTALL_PREFIX = $(HOME)/.local
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -37,6 +38,7 @@ F2PYFLAGS_DBG = --debug-capi --debug
|
||||||
################################################################################
|
################################################################################
|
||||||
#VERSION:=$(shell python -c "import msspec; print(msspec.__version__)")
|
#VERSION:=$(shell python -c "import msspec; print(msspec.__version__)")
|
||||||
VERSION:=$(shell git describe|sed 's/-\([[:digit:]]\+\)-.*/\.post\1/')
|
VERSION:=$(shell git describe|sed 's/-\([[:digit:]]\+\)-.*/\.post\1/')
|
||||||
|
VENV_PATH := $(INSTALL_PREFIX)/src/msspec_venv_$(VERSION)
|
||||||
|
|
||||||
ifeq ($(VERBOSE),0)
|
ifeq ($(VERBOSE),0)
|
||||||
OUPUT_REDIRECTION := 1>/dev/null 2>/dev/null
|
OUPUT_REDIRECTION := 1>/dev/null 2>/dev/null
|
||||||
|
@ -81,18 +83,10 @@ obj: $(OBJS)
|
||||||
|
|
||||||
|
|
||||||
clean::
|
clean::
|
||||||
@for objfile in $(OBJS); do \
|
|
||||||
if test -f $$objfile; then \
|
|
||||||
echo "Removing $$objfile..."; \
|
|
||||||
rm $$objfile; \
|
|
||||||
fi;\
|
|
||||||
done
|
|
||||||
@if test -d $(abspath $(BUILDDIR)); then \
|
@if test -d $(abspath $(BUILDDIR)); then \
|
||||||
if test `find $(abspath $(BUILDDIR)) -type f|wc -l` -eq 0; then \
|
echo "Removing $(abspath $(BUILDDIR))..."; \
|
||||||
echo "Removing empty folder $(abspath $(BUILDDIR))..."; \
|
rm -r $(abspath $(BUILDDIR)); \
|
||||||
rm -r $(abspath $(BUILDDIR)); \
|
fi
|
||||||
fi; \
|
|
||||||
fi
|
|
||||||
@if test x$(SO) != x; then \
|
@if test x$(SO) != x; then \
|
||||||
if test -f $(SO); then \
|
if test -f $(SO); then \
|
||||||
echo "Removing $(SO)..."; rm $(SO); \
|
echo "Removing $(SO)..."; rm $(SO); \
|
||||||
|
|
|
@ -73,6 +73,6 @@ if __name__ == "__main__":
|
||||||
],
|
],
|
||||||
keywords='spectroscopy atom electron photon multiple scattering',
|
keywords='spectroscopy atom electron photon multiple scattering',
|
||||||
license='GPL',
|
license='GPL',
|
||||||
entry_points={
|
#entry_points={
|
||||||
'console_scripts': ['msspec=msspec.cli:main']}
|
# 'console_scripts': ['msspec=msspec.cli:main']}
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue