diff --git a/CMakeLists.txt b/CMakeLists.txt index a73455b2975e55069cfa2936dc2f7d2fc6bd2375..36f53b7a0c99eaddfec821ad2c2027515da4cba6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ set(CMAKE_LEGACY_CYGWIN_WIN32 0) cmake_minimum_required(VERSION 2.8 FATAL_ERROR) -project(moose-core) +project(pymoose) if(COMMAND cmake_policy) cmake_policy(SET CMP0003 NEW) @@ -29,7 +29,7 @@ endif() # If from command line, version info is not passed, use the git to generate a # version file. If GIT fails, use the previous known version. if(NOT VERSION_MOOSE) - set(VERSION_MOOSE "3.2.0rc1-${GIT_HEAD}") + set(VERSION_MOOSE "3.2.0-${GIT_HEAD}") endif( ) add_definitions( -DMOOSE_VERSION="${VERSION_MOOSE}") message( STATUS "MOOSE Version ${VERSION_MOOSE}" ) @@ -393,6 +393,7 @@ endif() ######################### BUILD PYMOOSE ######################################## add_subdirectory( pymoose ) + ######################### INSTALL ############################################## if(DEBUG) @@ -421,7 +422,9 @@ execute_process( message( STATUS "Platform ${_platform_desc}" ) -set(EXTRA_ARGS "--prefix ${CMAKE_INSTALL_PREFIX}") +# DISTUTILS_EXTRA_ARGS may come of top-level cmake script. On DEBIAN/UBUNTU, it +# is most likely to be --install-layout=deb . +set(EXTRA_ARGS "--prefix ${CMAKE_INSTALL_PREFIX} ${DISTUTILS_EXTRA_ARGS}") # On Debian/Ubuntu install using debian layout if( ${_platform_desc} MATCHES ".*(Ubuntu|Debian).*" ) @@ -432,7 +435,7 @@ endif( ) # --user to install in user home. install(CODE "execute_process( - COMMAND ${PYTHON_EXECUTABLE} setup.cmake.py install ${EXTRA_ARGS} ${PYMOOSE_EXTRA_INSTALL_ARGS} + COMMAND ${PYTHON_EXECUTABLE} setup.cmake.py install -f ${EXTRA_ARGS} ${PYMOOSE_EXTRA_INSTALL_ARGS} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/python )" ) @@ -447,6 +450,33 @@ if(${CMAKE_BUILD_TOOL} MATCHES "make") ) endif() +# Target for creating bdist. This is handy for creating bdist for packaging. +# Save the binary distribution (tar.gz) to PYMOOSE_BDIST_DIR. Note that this +# target is only useful when creating packages on Open Build Service i.e. if you +# use this target on distribution X, it may not work on distrbutions other than +# X. See python-wheels for making portable distributions. +if(NOT PYMOOSE_BDIST_DIR) + set(PYMOOSE_BDIST_DIR ${CMAKE_BINARY_DIR}/pymoose_bdist) +endif( ) +# get platform and arch using python. +find_package( PythonInterp REQUIRED) +execute_process( + COMMAND ${PYTHON_EXECUTABLE} -c "import sys;print('%s-%s'%(sys.platform,sys.arch))" + OUTPUT_VARIABLE PY_PLATFORM_ARCH + OUTPUT_STRIP_TRAILING_WHITESPACE + ) +# If not set, use default. +if(NOT PY_PLATFORM_ARCH) + message(PY_PLATFORM_ARCH "linux-x86_64") +endif( ) +message(STATUS "Building bdist for arch: ${PY_PLATFORM_ARCH}") +add_custom_target( bdist + COMMAND ${PYTHON_EXECUTABLE} setup.cmake.py bdist -p ${PY_PLATFORM_ARCH} -d ${PYMOOSE_BDIST_DIR} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/python + COMMENT "Genearating bdist using setup.cmake.py." + VERBATIM + ) + ############################ CTEST ###################################### include( CTest ) diff --git a/python/moose/moose_test.py b/python/moose/moose_test.py index 9cda2b80d81b4ffc20ff77bf0dae656c47763e7c..9d5ad2459ecf94e3a6b8b3d4c68d26b54c6c3475 100644 --- a/python/moose/moose_test.py +++ b/python/moose/moose_test.py @@ -26,11 +26,12 @@ import logging from collections import defaultdict import time +logfile_ = tempfile.NamedTemporaryFile( ) logging.basicConfig( level=logging.DEBUG, format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s', datefmt='%m-%d %H:%M', - filename='tests.log', + filename = logfile_.name, filemode='w' ) console = logging.StreamHandler() diff --git a/python/setup.cmake.py b/python/setup.cmake.py index ebce90693b110574df448678fab379642e644880..22da886d01bf295f75e044920edfebd1bcb410b6 100644 --- a/python/setup.cmake.py +++ b/python/setup.cmake.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- -"""setup.py: -Script to install python targets. +""" +setup.cmake.py: -NOTE: This script is to be called by CMake. Not intended to be used standalone. +Script to install python targets by cmake. +DO NOT USE IT DIRECTLY. Only `cmake` build system should use it directly. """ __author__ = "Dilawar Singh" @@ -20,33 +21,29 @@ import os import sys try: - from setuptools import setup + from setuptools import setup except Exception as e: - from distutils.core import setup + from distutils.core import setup +# Read version from VERSION created by cmake file. This file must be present for +# setup.cmake.py to work perfectly. script_dir = os.path.dirname( os.path.abspath( __file__ ) ) -version = '3.2pre1' - - -try: - with open( os.path.join( script_dir, 'VERSION'), 'r' ) as f: - version = f.read( ) -except Exception as e: - print( 'Failed to read VERSION %s' % e ) - print( 'Using default %s' % version ) +version = None +with open( os.path.join( script_dir, 'VERSION'), 'r' ) as f: + version = f.read( ) try: import importlib.machinery suffix = importlib.machinery.EXTENSION_SUFFIXES[0] except Exception as e: - print( '[WARN] Failed to determine importlib suffix' ) + print( '[WARN] Failed to determine importlib suffix due to %s' % e ) suffix = '.so' setup( name='pymoose', version=version, description='Python scripting interface of MOOSE Simulator (https://moose.ncbs.res.in)', - author='MOOSERes', + author='See AUTHORS.md at https://github.com/BhallaLab/moose', author_email='bhalla@ncbs.res.in', maintainer='Dilawar Singh', maintainer_email='dilawars@ncbs.res.in', @@ -61,9 +58,11 @@ setup( , 'moose.chemUtil' , 'moose.chemMerge' ], - install_requires = [ 'python-libsbml', 'numpy' ], + install_requires = [ 'python-libsbml', 'numpy' ], package_dir = { 'moose' : 'moose', 'rdesigneur' : 'rdesigneur' }, - package_data = { 'moose' : ['_moose' + suffix, 'neuroml2/schema/NeuroMLCoreDimensions.xml'] }, - ) + package_data = { + 'moose' : ['_moose' + suffix, 'neuroml2/schema/NeuroMLCoreDimensions.xml'] + }, + )