1# coding: utf-8 2from __future__ import unicode_literals, division, absolute_import, print_function 3 4import imp 5import os 6import tarfile 7import zipfile 8 9import setuptools.sandbox 10 11from . import package_root, package_name, has_tests_package 12 13 14def _list_zip(filename): 15 """ 16 Prints all of the files in a .zip file 17 """ 18 19 zf = zipfile.ZipFile(filename, 'r') 20 for name in zf.namelist(): 21 print(' %s' % name) 22 23 24def _list_tgz(filename): 25 """ 26 Prints all of the files in a .tar.gz file 27 """ 28 29 tf = tarfile.open(filename, 'r:gz') 30 for name in tf.getnames(): 31 print(' %s' % name) 32 33 34def run(): 35 """ 36 Creates a sdist .tar.gz and a bdist_wheel --univeral .whl 37 38 :return: 39 A bool - if the packaging process was successful 40 """ 41 42 setup = os.path.join(package_root, 'setup.py') 43 tests_root = os.path.join(package_root, 'tests') 44 tests_setup = os.path.join(tests_root, 'setup.py') 45 46 # Trying to call setuptools.sandbox.run_setup(setup, ['--version']) 47 # resulted in a segfault, so we do this instead 48 module_info = imp.find_module('version', [os.path.join(package_root, package_name)]) 49 version_mod = imp.load_module('%s.version' % package_name, *module_info) 50 51 pkg_name_info = (package_name, version_mod.__version__) 52 print('Building %s-%s' % pkg_name_info) 53 54 sdist = '%s-%s.tar.gz' % pkg_name_info 55 whl = '%s-%s-py2.py3-none-any.whl' % pkg_name_info 56 setuptools.sandbox.run_setup(setup, ['-q', 'sdist']) 57 print(' - created %s' % sdist) 58 _list_tgz(os.path.join(package_root, 'dist', sdist)) 59 setuptools.sandbox.run_setup(setup, ['-q', 'bdist_wheel', '--universal']) 60 print(' - created %s' % whl) 61 _list_zip(os.path.join(package_root, 'dist', whl)) 62 setuptools.sandbox.run_setup(setup, ['-q', 'clean']) 63 64 if has_tests_package: 65 print('Building %s_tests-%s' % (package_name, version_mod.__version__)) 66 67 tests_sdist = '%s_tests-%s.tar.gz' % pkg_name_info 68 tests_whl = '%s_tests-%s-py2.py3-none-any.whl' % pkg_name_info 69 setuptools.sandbox.run_setup(tests_setup, ['-q', 'sdist']) 70 print(' - created %s' % tests_sdist) 71 _list_tgz(os.path.join(tests_root, 'dist', tests_sdist)) 72 setuptools.sandbox.run_setup(tests_setup, ['-q', 'bdist_wheel', '--universal']) 73 print(' - created %s' % tests_whl) 74 _list_zip(os.path.join(tests_root, 'dist', tests_whl)) 75 setuptools.sandbox.run_setup(tests_setup, ['-q', 'clean']) 76 77 dist_dir = os.path.join(package_root, 'dist') 78 tests_dist_dir = os.path.join(tests_root, 'dist') 79 os.rename( 80 os.path.join(tests_dist_dir, tests_sdist), 81 os.path.join(dist_dir, tests_sdist) 82 ) 83 os.rename( 84 os.path.join(tests_dist_dir, tests_whl), 85 os.path.join(dist_dir, tests_whl) 86 ) 87 os.rmdir(tests_dist_dir) 88 89 return True 90