Work on install script
This commit is contained in:
		
							parent
							
								
									4807474889
								
							
						
					
					
						commit
						59c43395c2
					
				|  | @ -3,3 +3,4 @@ __pycache__ | |||
| *.so | ||||
| *.bak | ||||
| package/ | ||||
| src/msspec/results.txt | ||||
|  |  | |||
							
								
								
									
										78
									
								
								CI/CI.bash
								
								
								
								
							
							
						
						
									
										78
									
								
								CI/CI.bash
								
								
								
								
							|  | @ -51,52 +51,26 @@ activate_msspec_python3_virtualenv() { | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| make_pymsspec_package() { | ||||
| 	echo "Running setuptools for pymsspec, please wait... " | ||||
| 	VERSION=$(get_package_version) | ||||
| 	DEST=${TOPLEVEL}/install_resources/packages/${VERSION} | ||||
| 	mkdir -p $DEST | ||||
| 	cd ${TOPLEVEL}/src/python/pymsspec && python setup.py sdist 2>&1 > /dev/null | ||||
| 	cp ${TOPLEVEL}/src/python/pymsspec/dist/pymsspec-${VERSION}.tar.gz ${DEST}/ | ||||
| 	rm -rf ${TOPLEVEL}/src/python/pymsspec/{*.egg-info,dist} | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| make_pybinding() { | ||||
| 	echo "Creating Python library for Fortran code, please wait... " | ||||
| 	activate_msspec_python3_virtualenv | ||||
| 	cd ${TOPLEVEL}/src/ && make pybinding | ||||
| 	activate_msspec_python3_virtualenv "$1" | ||||
| 	cd ${TOPLEVEL}/src/  | ||||
| 	make pybinding || exit 1 | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| make_selfex() { | ||||
| 	echo "Creating the self-extractible setup program... " | ||||
| 	VERSION=$(get_package_version) | ||||
| 	DEST=${TOPLEVEL}/install_resources/packages/${VERSION} | ||||
| 	LICENSE="${TOPLEVEL}/src/CI/license.txt" | ||||
| 	REQUIREMENTS="${TOPLEVEL}/src/CI/requirements" | ||||
| 	SETUPFILE="MsSpec-${VERSION}.setup" | ||||
| 	MAKESELF=${TOPLEVEL}/src/CI/makeself/makeself.sh | ||||
| 	#pip freeze > "${REQUIREMENTS}" | ||||
| 	mkdir -p $DEST | ||||
| 	cp "${TOPLEVEL}/src/CI/install.sh" "${DEST}" | ||||
| 	chmod u+x "${DEST}/install.sh" | ||||
| 	cp "${TOPLEVEL}/src/CI/uninstall.sh" "${DEST}" | ||||
| 	cp "${TOPLEVEL}/src/CI/msspec" "${DEST}" | ||||
| 	cp "${TOPLEVEL}/src/CI/requirements" "${DEST}" | ||||
| 	cp "${TOPLEVEL}/src/CI/distro-requirements" "${DEST}" | ||||
| 	get_makeself | ||||
| 	cd "${DEST}/../" && ${MAKESELF} --license ${LICENSE} --quiet ${VERSION} ${SETUPFILE} "MsSpec - pymsspec"  ./install.sh | ||||
| 	rm -rf ${SETUPFILE}.bak | ||||
| 	rm -rf "${DEST}" | ||||
| 	#rm -rf "${REQUIREMENTS}" | ||||
| 	cd ${TOPLEVEL} | ||||
|         make selfex || exit 1 | ||||
|         mv pymsspec-${VERSION}.setup package/ | ||||
| } | ||||
| 
 | ||||
| make_pdf() { | ||||
|     DEST=${TOPLEVEL}/package | ||||
|     mkdir -p ${DEST} | ||||
|     # first activate the virtual environment | ||||
|     activate_msspec_python3_virtualenv | ||||
|     activate_msspec_python3_virtualenv "$1" | ||||
|     # then build the documentation. | ||||
|     cd "${TOPLEVEL}/doc" | ||||
|     make --no-print-directory latexpdf || exit 1 | ||||
|  | @ -107,9 +81,9 @@ make_pdf() { | |||
| } | ||||
| 
 | ||||
| make_html () { | ||||
|     make_pdf | ||||
|     make_pdf "$1" | ||||
|     # first activate the virtual environment | ||||
|     activate_msspec_python3_virtualenv | ||||
|     activate_msspec_python3_virtualenv "$1" | ||||
|     # then build the documentation. | ||||
|     cd "${TOPLEVEL}/doc" | ||||
|     make --no-print-directory html || exit 1 | ||||
|  | @ -117,33 +91,23 @@ make_html () { | |||
| 
 | ||||
| make_tests() { | ||||
|     echo "generate results for unit tests..." | ||||
|     activate_msspec_python3_virtualenv | ||||
|     python -c "from msspec.tests import create_tests_results; create_tests_results()" | ||||
|     activate_msspec_python3_virtualenv "$1" | ||||
|     make_pybinding | ||||
|     python -c "from msspec.tests import create_tests_results; create_tests_results()" || exit 1 | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| create_package() { | ||||
|     VENV_PATH="$1" | ||||
|     source "$VENV_PATH/bin/activate" | ||||
| 
 | ||||
|     #update_version | ||||
|     #make_tests | ||||
|     #make_pdf | ||||
|     #make_pymsspec_package | ||||
|     #make_msspecgui_package | ||||
|     #make_fortran_package | ||||
|     #make_selfex | ||||
|     #cleanup | ||||
|      | ||||
|     deactivate | ||||
|     echo "Creating the package..." | ||||
|     #make_tests "$1" | ||||
|     make_selfex "$1" | ||||
|     cleanup | ||||
| } | ||||
| 
 | ||||
| cleanup() { | ||||
|     echo "cleaning up..." | ||||
|    # remove results.txt file | ||||
|     python -c "from msspec.tests import delete_results_file; delete_results_file()" | ||||
|     VERSION=$(get_package_version) | ||||
|     rm -f ${TOPLEVEL}/guide/MsSpec-${VERSION}.pdf | ||||
|     rm -rf ${TOPLEVEL}/src/msspec/results.txt | ||||
| } | ||||
| 
 | ||||
| show_help () { | ||||
|  | @ -158,13 +122,15 @@ show_help () { | |||
| 
 | ||||
| if [ "$sourced" == 0 ]; then | ||||
| 
 | ||||
| 	while getopts "hi:dt" option; do | ||||
| 	while getopts "hi:d:t:p:" option; do | ||||
| 	    case $option in | ||||
| 		i) setup_virtualenv "$OPTARG" | ||||
| 		   ;; | ||||
| 		d) make_html | ||||
| 		d) make_html "$OPTARG" | ||||
| 		   ;; | ||||
| 		t) make_tests | ||||
| 		t) make_tests "$OPTARG" | ||||
| 		   ;; | ||||
| 		p) create_package "$OPTARG" | ||||
| 		   ;; | ||||
| 		h) show_help | ||||
| 		   ;; | ||||
|  |  | |||
|  | @ -4,7 +4,38 @@ pipeline { | |||
|         stage('Initial setup...') { | ||||
|             steps { | ||||
|                 echo 'Create or update the virtual Python environment' | ||||
| 		sh '/bin/bash ./CI/CI.bash -i ci_venv' | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         stage('Testing the package...') { | ||||
|             steps { | ||||
|                 sh '/bin/bash ./CI/CI.bash -t ci_venv' | ||||
|             } | ||||
|         } | ||||
|         stage('Creatin a setup file and test installation...') { | ||||
|             steps { | ||||
|                 sh '/bin/bash ./CI/CI.bash -p ci_venv' | ||||
|                 sh '/bin/bash ./package/MsSpec*.setup --accept -- -p ./ci_venv -y' | ||||
|             } | ||||
|         } | ||||
|         stage('Building HTML documentation...') { | ||||
|             steps { | ||||
|                 sh '/bin/bash ./CI/CI.bash -d ci_venv' | ||||
|             } | ||||
|         } | ||||
|         stage('Syncing website...') { | ||||
|             steps { | ||||
|                 echo 'Updating the website files' | ||||
|             } | ||||
|         } | ||||
|         stage('Cleaning up...') { | ||||
|             steps { | ||||
|                 echo 'Cleaning artifacts...' | ||||
|                 sh 'rm -rf ./package' | ||||
|                 sh 'cd ./doc && make clean' | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| } | ||||
|  |  | |||
							
								
								
									
										44
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										44
									
								
								Makefile
								
								
								
								
							|  | @ -1,16 +1,16 @@ | |||
| MAKESELF:=makeself | ||||
| LICENSE:=$(shell cat ./license.txt) | ||||
| #LICENSE:=$(cat ./license.txt)
 | ||||
| #VERSION:=$(shell cd src && python -c "import msspec; print(msspec.__version__)")
 | ||||
| VERSION:=$(shell git describe|sed 's/-\([[:digit:]]\+\)-.*/\.post\1/') | ||||
| SETUPFILE:=pymsspec-$(VERSION).setup | ||||
| SETUPFILE:=MsSpec-$(VERSION).setup | ||||
| 
 | ||||
| .PHONY: clean purge version | ||||
| .PHONY: clean purge version selfex | ||||
| 
 | ||||
| 
 | ||||
| clean: | ||||
| 	@echo "Cleaning all..." | ||||
| 	@find ./src -type f -name '*.pyc' -exec rm {} + | ||||
| 	@find ./src -type d -name '__pycache__' -exec rm -r {} + | ||||
| 	@find ./src -type f -name '*.pyc' -exec rm -f {} + | ||||
| 	@find ./src -type d -name '__pycache__' -exec rm -rf {} + | ||||
| 	+$(MAKE) -C src/ clean | ||||
| 	+$(MAKE) -C doc/ clean | ||||
| 
 | ||||
|  | @ -23,27 +23,27 @@ purge: clean | |||
| 	@rm -rf *.setup | ||||
| 	+$(MAKE) -C src/ purge | ||||
| 
 | ||||
| selfex: purge | ||||
| selfex: | ||||
| 	@echo "Creating the self-extractible setup program... " | ||||
| 	# update the version | ||||
| 	@cp ./src/msspec/version.py ./src/msspec/version.py.bak | ||||
| 	@echo "__version__ = \"$(VERSION)\"" > ./src/msspec/version.py | ||||
| 	# create the *.lsm file | ||||
| 	@echo "Begin4" > pymsspec.lsm | ||||
| 	@echo "Title: Python MsSpec" >> pymsspec.lsm | ||||
| 	@echo "Version: $(VERSION)" >> pymsspec.lsm | ||||
| 	@echo "Entered-date: `date +%Y-%m-%d`" >> pymsspec.lsm | ||||
| 	@echo "Description: A multiple scattering package for spectroscopies using electrons to probe materials" >> pymsspec.lsm | ||||
| 	@echo "Keywords: " >> pymsspec.lsm | ||||
| 	@echo "Author: sylvain.tricot@univ-rennes1.fr (Sylvain Tricot), didier.sebilleau@univ-rennes1.fr (Didier Sébilleau)" >> pymsspec.lsm | ||||
| 	@echo "Maintained-by: sylvain.tricot@univ-rennes1.fr (Sylvain Tricot)" >> pymsspec.lsm | ||||
| 	@echo "Primary-site: https://msspec.cnrs.fr" >> pymsspec.lsm | ||||
| 	@echo "Alternate-site:" >> pymsspec.lsm | ||||
| 	@echo "Original-site:" >> pymsspec.lsm | ||||
| 	@echo "Platforms:" >> pymsspec.lsm | ||||
| 	@echo "Copying-policy: Gnu Library General Public License (GLPL) 2.0" >> pymsspec.lsm | ||||
| 	@echo "End" >> pymsspec.lsm | ||||
| 	$(MAKESELF) --license ./license.txt --lsm ./pymsspec.lsm ./src $(SETUPFILE) "Python MsSpec"  ./install.sh | ||||
| 	@echo "Begin4" > msspec.lsm | ||||
| 	@echo "Title: Python MsSpec" >> msspec.lsm | ||||
| 	@echo "Version: $(VERSION)" >> msspec.lsm | ||||
| 	@echo "Entered-date: `date +%Y-%m-%d`" >> msspec.lsm | ||||
| 	@echo "Description: A multiple scattering package for spectroscopies using electrons to probe materials" >> msspec.lsm | ||||
| 	@echo "Keywords: " >> msspec.lsm | ||||
| 	@echo "Author: sylvain.tricot@univ-rennes1.fr (Sylvain Tricot), didier.sebilleau@univ-rennes1.fr (Didier Sébilleau)" >> msspec.lsm | ||||
| 	@echo "Maintained-by: sylvain.tricot@univ-rennes1.fr (Sylvain Tricot)" >> msspec.lsm | ||||
| 	@echo "Primary-site: https://msspec.cnrs.fr" >> msspec.lsm | ||||
| 	@echo "Alternate-site:" >> msspec.lsm | ||||
| 	@echo "Original-site:" >> msspec.lsm | ||||
| 	@echo "Platforms:" >> msspec.lsm | ||||
| 	@echo "Copying-policy: Gnu Library General Public License (GLPL) 2.0" >> msspec.lsm | ||||
| 	@echo "End" >> msspec.lsm | ||||
| 	$(MAKESELF) --license "./license.txt" --lsm ./msspec.lsm ./src $(SETUPFILE) "Python MsSpec"  ./install.sh | ||||
| 	@mv ./src/msspec/version.py.bak ./src/msspec/version.py | ||||
| 	@rm ./pymsspec.lsm | ||||
| 	@rm ./msspec.lsm | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,2 +1,3 @@ | |||
| include msspec/spec/*.so | ||||
| include msspec/phagen/*.so | ||||
| include msspec/results.txt | ||||
|  |  | |||
|  | @ -1,17 +1,16 @@ | |||
| #!/bin/bash | ||||
| # vim: set ts=4 sw=4 sts noet mouse=a fdm=indent: | ||||
| 
 | ||||
| SCRIPT_NAME=$(basename "$0") | ||||
| PYTHON=python3 | ||||
| VERSION=$(cat ./msspec/version.py|cut -d\" -f2) | ||||
| DEFAULT_DEST="${HOME}/.local/share" | ||||
| DEFAULT_BIN="${HOME}/.local/bin" | ||||
| BYPASS="n" | ||||
| DEBUG="n" | ||||
| TIMEOUT=0 | ||||
| 
 | ||||
| SCRIPT_NAME=$(basename "$0") | ||||
| PYTHON=python3 | ||||
| VERSION=$(cat ./msspec/version.py|cut -d\" -f2) | ||||
| TIMEOUT=5 | ||||
| DEST_ALREADY_EXISTS="n" | ||||
| 
 | ||||
| 
 | ||||
| ECHO="/bin/echo -e" | ||||
| DATE=$(date +%Y%m%d_%H%M%S) | ||||
| LOGFILE="${HOME}/msspec_install_${DATE}.log" | ||||
|  | @ -29,7 +28,6 @@ init_install () { | |||
| 	get_os | ||||
| 
 | ||||
| 	if [ "$BYPASS" = "n" ]; then | ||||
| 		${ECHO} "Thanks for choosing MsSpec" | ||||
| 		${ECHO} "" | ||||
| 		${ECHO} "This program will install the MsSpec distribution on your computer" | ||||
| 		${ECHO} -n "Press C^c to cancel now...  " | ||||
|  | @ -73,6 +71,9 @@ error_exit () { | |||
| 	printf "\n" | ||||
| 	tail -v -n 10 "${LOGFILE}" | ||||
| 
 | ||||
| 	# uninstall if needed | ||||
| 	pip uninstall -y msspec | ||||
| 
 | ||||
| 	# if the DEST_FOLDER existed before, do NOT delete it | ||||
| 	if [ x"$DEST_ALREADY_EXISTS" = "xn" ]; then | ||||
| 		rm -rf ${DEST_FOLDER} 2>/dev/null | ||||
|  | @ -238,21 +239,66 @@ show_help () { | |||
|     echo "    -d          Debug mode." | ||||
|     echo "    -h          Show this message." | ||||
| 	exit 0 | ||||
| }                                                                                   | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| check_dependencies () { | ||||
| 	# we need make | ||||
| 	log_message "Checking if make is installed..." | ||||
| 	command -V make || return 1 | ||||
| 	log_message "Ok\n" | ||||
| 
 | ||||
| 	# we need gfortran | ||||
|     gcc_ver_min=7 | ||||
| 	log_message "Checking if gfortran >= $gcc_ver_min is installed..." | ||||
| 	command -V gfortran || return 1 | ||||
| 	gcc_ver=$(gcc -dumpversion) | ||||
| 	echo "You have gfortran version $gcc_ver installed" | ||||
|     test $gcc_ver -ge $gcc_ver_min || return 1 | ||||
| 	log_message "Ok\n" | ||||
| 
 | ||||
| 	# we need libcairo and dev files | ||||
| 	log_message "Checking if libcairo is installed..." | ||||
| 	pkg-config --exists cairo || return 1 | ||||
| 	log_message "Ok\n" | ||||
| 
 | ||||
| 	# we need Python 3 | ||||
| 	py_ver_major_min=3 | ||||
| 	py_ver_minor_min=0 | ||||
| 	log_message "Checking if Python >= ${py_ver_major_min}.${py_ver_minor_min}..." | ||||
| 	message="You need Python version ${py_ver_major_min}.${py_ver_minor_min}" | ||||
|     python --version|cut -d" " -f2 || return 1 | ||||
|     py_ver=$(python --version | cut -d" " -f2) | ||||
| 	echo "You have Python version $py_ver installed" | ||||
| 	py_ver_major=$(echo $py_ver|cut -d. -f1) | ||||
| 	py_ver_minor=$(echo $py_ver|cut -d. -f2) | ||||
| 	test $py_ver_major -ge $py_ver_major_min || return 1 | ||||
| 	test $py_ver_minor -ge $py_ver_minor_min || return 1 | ||||
| 	log_message "Ok\n" | ||||
| 
 | ||||
| 	# we need virtualenv | ||||
| 	log_message "Checking if virtualenv is installed..." | ||||
| 	command -V virtualenv || return 1 | ||||
| 	log_message "Ok\n" | ||||
| 	 | ||||
| } | ||||
| 
 | ||||
| local_install () { | ||||
| 	# Initialize the install process | ||||
| 	init_install | ||||
| 
 | ||||
| 	# check dependencies | ||||
| 	wrap "check_dependencies" "Checking dependencies" | ||||
| 
 | ||||
| 	# ask for a place to put the binary | ||||
| 	read_folder "Please, type in the folder where to place the binary" "${DEFAULT_BIN}" | ||||
| 	BIN_FOLDER=${FOLDER} | ||||
| 	create_folder "${BIN_FOLDER}" || error_exit | ||||
| 	export BIN_FOLDER | ||||
| 	#read_folder "Please, type in the folder where to place the binary" "${DEFAULT_BIN}" | ||||
| 	#BIN_FOLDER=${FOLDER} | ||||
| 	#create_folder "${BIN_FOLDER}" || error_exit | ||||
| 	#export BIN_FOLDER | ||||
| 
 | ||||
| 	# If in a virtualenv, ask if we should install inside | ||||
| 	if [ x"$VIRTUAL_ENV" != x ]; then | ||||
| 		read_yes_no "You are running a Python virtual environment.\ Do you wish to install msspec inside ?" "y" | ||||
| 		read_yes_no "You are running a Python virtual environment. Do you wish to install msspec inside ?" "y" | ||||
| 		case ${ANSWER} in | ||||
| 			y)	# get the python version of this venv... | ||||
| 				v=$(python -V 2>&1 | cut -d" " -f2 | cut -d. -f1) | ||||
|  | @ -318,6 +364,14 @@ local_install () { | |||
| ## move the uninstal script | ||||
| #wrap "cp ./uninstall.sh ${DEST}" "Moving the uninstall script" | ||||
| # | ||||
| 	# Run unit tests ? | ||||
| 	read_yes_no "Do you wish to run unit tests (${LOGFILE})" "y" | ||||
| 	if [ x"${ANSWER}" = "xy" ]; then | ||||
|     	wrap "python -c \"from msspec.tests import run_tests; run_tests()\"" \ | ||||
|              "Runing test suite" | ||||
| 	fi | ||||
| 
 | ||||
| 
 | ||||
| 	# installation was a succes so ask if we keep the log file | ||||
| 	read_yes_no "Do you wish to keep the log file (${LOGFILE})" "n" | ||||
| 	if [ x"${ANSWER}" = "xn" ]; then | ||||
|  |  | |||
|  | @ -16,6 +16,5 @@ CF2PY   INTEGER, INTENT(IN,COPY) :: N_TILT_M_, N_ORD_M_, NPATH_M_, NGR_M_ | |||
|      &  N_TILT_M_, N_ORD_M_, NPATH_M_, NGR_M_) | ||||
| 
 | ||||
|         CALL DO_MAIN() | ||||
|         PRINT *, "BEFORE END IN SPEC" | ||||
| 
 | ||||
|       END SUBROUTINE RUN | ||||
|  |  | |||
|  | @ -121,7 +121,8 @@ def run_tests(): | |||
|     suite.addTest(PEDCopperTestCase('test_theta_scan')) | ||||
|     runner = unittest.TextTestRunner(verbosity=2) | ||||
|     rc = runner.run(suite) | ||||
|     exit(rc) | ||||
|     #print("rc = ", rc) | ||||
|     exit(not(rc.wasSuccessful())) | ||||
| 
 | ||||
| def create_tests_results(): | ||||
|     with open(RESULTS_FILENAME, 'w') as fd: | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue