diff --git a/LICENSE b/LICENSE index 5da6a779e90d698196ac711077f9bc32c5a3a163..fa803215468a3b4de6120d53e0db46cbff6a2405 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,19 @@ -fslpy library, (c) 2016, The University of Oxford (the "Software") +The fslpy library + + +Part of FSL - FMRIB's Software Library +http://www.fmrib.ox.ac.uk/fsl +fsl@fmrib.ox.ac.uk + +Developed at FMRIB (Oxford Centre for Functional Magnetic Resonance +Imaging of the Brain), Department of Clinical Neurology, Oxford +University, Oxford, UK + + +LICENCE + +FMRIB Software Library, Release 5.0 (c) 2012, The University of +Oxford (the "Software") The Software remains the property of the University of Oxford ("the University"). @@ -46,4 +61,4 @@ external organisation for which payment is received. If you are interested in using the Software commercially, please contact Isis Innovation Limited ("Isis"), the technology transfer company of the University, to negotiate a licence. Contact details are: -innovation@isis.ox.ac.uk quoting reference BS/9564. +Innovation@innovation.ox.ac.uk quoting reference DE/9564. diff --git a/MANIFEST.in b/MANIFEST.in index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fe793041abe0cc5eb6de8008d98ebf65e1b5b1b9 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -0,0 +1,4 @@ +include LICENSE +include README.md +include requirements.txt +recursive-include doc * diff --git a/fsl/__init__.py b/fsl/__init__.py index bc20138709a3d7c993a572a816dbc64c3dffcf02..696e4ba25b2f086910d9acc83a2916c3b59a3063 100644 --- a/fsl/__init__.py +++ b/fsl/__init__.py @@ -1,7 +1,6 @@ #!/usr/bin/env python # -# __init__.py - Front end to fslpy. The entry point is main(), defined -# at the bottom. +# __init__.py - The fslpy library. # # Author: Paul McCarthy <pauldmccarthy@gmail.com> # diff --git a/setup.py b/setup.py index 3b86a76c02001d495ceb05bb68a680a6a51d062d..fa59aa80c280edaca9d69e0f816c44967f170f60 100644 --- a/setup.py +++ b/setup.py @@ -5,13 +5,91 @@ # Author: Paul McCarthy <pauldmccarthy@gmail.com> # +import os import os.path as op -from setuptools import setup -from setuptools import find_packages +from setuptools import setup +from setuptools import find_packages +from setuptools.command.sdist import sdist -# The directory in whihc this setup.py file is contained. +class fsl_sdist(sdist): + """Custom sdist command which inserts the LICENSE text at the + beginning of every source file. + """ + + def make_distribution(self): + + # Force distutils.command.sdist to copy + # files instead of hardlinking them. This + # hack is performed by setuptools >= 24.3.0, + # but is not done by earlier versions. + link = getattr(os, 'link', None) + try: + del(os.link) + except: + pass + + sdist.make_distribution(self) + + if link is not None: + os.link = link + + + def make_release_tree(self, base_dir, files): + + # Make the release tree + sdist.make_release_tree(self, base_dir, files) + + licence = op.abspath('LICENSE') + + if not op.exists(licence): + return + + with open(licence, 'rt') as f: + licence = f.read() + + patchfuncs = { + + '.py' : self.__patch_py_file, + } + + # Walk through the release + # tree, and patch the license + # into every relevant file. + for root, dirs, files in os.walk(base_dir): + for filename in files: + + filename = op.join(root, filename) + ext = op.splitext(filename)[1] + patchfunc = patchfuncs.get(ext) + + if patchfunc is not None: + patchfunc(filename, licence) + + + def __patch_py_file(self, filename, licence): + + licence = licence.split('\n') + licence = ['# {}'.format(l) for l in licence] + + with open(filename, 'rt') as f: + lines = f.read().split('\n') + + # Remove any existing hashbang line + if len(lines) > 0 and lines[0].startswith('#!'): + lines = lines[1:] + + # Insert the fsl hashbang and the licence + lines = ['#!/usr/bin/env fslpython'] + ['#'] + licence + lines + lines = ['{}\n'.format(l) for l in lines] + + with open(filename, 'wt') as f: + f.writelines(lines) + + + +# The directory in which this setup.py file is contained. basedir = op.dirname(__file__) @@ -21,7 +99,10 @@ basedir = op.dirname(__file__) # version number. version = {} with open(op.join(basedir, "fsl", "version.py")) as f: - exec(f.read(), version) + for line in f: + if line.startswith('__version__'): + exec(line, version) + break install_requires = open(op.join(basedir, 'requirements.txt'), 'rt').readlines() @@ -60,6 +141,9 @@ setup( tests_require=['pytest', 'pytest-runner'], test_suite='tests', + + cmdclass={'fsl_sdist' : fsl_sdist}, + entry_points={ 'console_scripts' : [ 'fslpy_imcp = fsl.scripts.imcp:main',