diff -r 000000000000 -r 6474c204b198 python/psutil/setup.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/python/psutil/setup.py Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,196 @@ +#!/usr/bin/env python + +# Copyright (c) 2009 Giampaolo Rodola'. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import sys +import os +import shutil +import fnmatch +try: + from setuptools import setup, Extension +except ImportError: + from distutils.core import setup, Extension + + +def clean(): + """'python setup.py clean' custom command.""" + def rglob(path, pattern): + return [os.path.join(dirpath, f) + for dirpath, dirnames, files in os.walk(path) + for f in fnmatch.filter(files, pattern)] + + for dirname in ('build', 'dist'): + if os.path.isdir(dirname): + sys.stdout.write('removing directory: %s\n' % dirname) + shutil.rmtree(dirname) + + for dirpath, dirnames, files in os.walk('.'): + if dirpath.endswith(('__pycache__', '.egg-info')): + sys.stdout.write('removing directory %s\n' % dirpath) + shutil.rmtree(dirpath) + + for pattern in ['*.py[co]', '*.s[ol]', '*~', '*.orig', '*.rej', '*.swp']: + for x in rglob('.', pattern): + sys.stdout.write('removing file %s\n' % x) + os.remove(x) + +def get_version(): + INIT = os.path.abspath(os.path.join(os.path.dirname(__file__), + 'psutil', '__init__.py')) + f = open(INIT, 'r') + try: + for line in f: + if line.startswith('__version__'): + ret = eval(line.strip().split(' = ')[1]) + assert ret.count('.') == 2, ret + for num in ret.split('.'): + assert num.isdigit(), ret + return ret + else: + raise ValueError("couldn't find version string") + finally: + f.close() + +def get_description(): + README = os.path.abspath(os.path.join(os.path.dirname(__file__), 'README')) + f = open(README, 'r') + try: + return f.read() + finally: + f.close() + +VERSION = get_version() + + +# POSIX +if os.name == 'posix': + posix_extension = Extension('_psutil_posix', + sources = ['psutil/_psutil_posix.c']) +# Windows +if sys.platform.startswith("win32"): + + def get_winver(): + maj, min = sys.getwindowsversion()[0:2] + return '0x0%s' % ((maj * 100) + min) + + extensions = [Extension('_psutil_mswindows', + sources=['psutil/_psutil_mswindows.c', + 'psutil/_psutil_common.c', + 'psutil/arch/mswindows/process_info.c', + 'psutil/arch/mswindows/process_handles.c', + 'psutil/arch/mswindows/security.c'], + define_macros=[('_WIN32_WINNT', get_winver()), + ('_AVAIL_WINVER_', get_winver())], + libraries=["psapi", "kernel32", "advapi32", + "shell32", "netapi32", "iphlpapi", + "wtsapi32"], + #extra_compile_args=["/Z7"], + #extra_link_args=["/DEBUG"] + )] +# OS X +elif sys.platform.startswith("darwin"): + extensions = [Extension('_psutil_osx', + sources = ['psutil/_psutil_osx.c', + 'psutil/_psutil_common.c', + 'psutil/arch/osx/process_info.c'], + extra_link_args=['-framework', 'CoreFoundation', + '-framework', 'IOKit'] + ), + posix_extension] +# FreeBSD +elif sys.platform.startswith("freebsd"): + extensions = [Extension('_psutil_bsd', + sources = ['psutil/_psutil_bsd.c', + 'psutil/_psutil_common.c', + 'psutil/arch/bsd/process_info.c'], + libraries=["devstat"], + ), + posix_extension] +# Linux +elif sys.platform.startswith("linux"): + extensions = [Extension('_psutil_linux', + sources=['psutil/_psutil_linux.c'], + ), + posix_extension] +# Solaris +elif sys.platform.lower().startswith('sunos'): + extensions = [Extension('_psutil_sunos', + sources=['psutil/_psutil_sunos.c'], + libraries=['kstat', 'nsl'], + ), + posix_extension] +else: + sys.exit('platform %s is not supported' % sys.platform) + + +def main(): + # "python setup.py clean" custom command + if len(sys.argv) > 1 and sys.argv[1] == 'clean': + return clean() + + setup_args = dict( + name='psutil', + version=VERSION, + download_url="http://psutil.googlecode.com/files/psutil-%s.tar.gz" \ + % VERSION, + description='A process and system utilities module for Python', + long_description=get_description(), + keywords=['ps', 'top', 'kill', 'free', 'lsof', 'netstat', 'nice', + 'tty', 'ionice', 'uptime', 'taskmgr', 'process', 'df', + 'iotop', 'iostat', 'ifconfig', 'taskset', 'who', 'pidof', + 'pmap', 'smem', 'monitoring',], + author='Giampaolo Rodola', + author_email='psutil@googlegroups.com', + maintainer='Giampaolo Rodola', + maintainer_email='g.rodola gmail com', + url='http://code.google.com/p/psutil/', + platforms='Platform Independent', + license='License :: OSI Approved :: BSD License', + packages=['psutil'], + test_suite='test.test_psutil', + # see: python setup.py register --list-classifiers + classifiers=[ + 'Development Status :: 5 - Production/Stable', + 'Environment :: Console', + 'Operating System :: MacOS :: MacOS X', + 'Operating System :: Microsoft', + 'Operating System :: Microsoft :: Windows :: Windows NT/2000', + 'Operating System :: POSIX', + 'Operating System :: POSIX :: Linux', + 'Operating System :: POSIX :: BSD :: FreeBSD', + 'Operating System :: POSIX :: SunOS/Solaris', + 'Operating System :: OS Independent', + 'Programming Language :: C', + 'Programming Language :: Python', + 'Programming Language :: Python :: 2', + 'Programming Language :: Python :: 2.4', + 'Programming Language :: Python :: 2.5', + 'Programming Language :: Python :: 2.6', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.0', + 'Programming Language :: Python :: 3.1', + 'Programming Language :: Python :: 3.2', + 'Programming Language :: Python :: 3.3', + 'Topic :: System :: Monitoring', + 'Topic :: System :: Networking', + 'Topic :: System :: Networking :: Monitoring', + 'Topic :: System :: Benchmark', + 'Topic :: System :: Hardware', + 'Topic :: System :: Systems Administration', + 'Topic :: Utilities', + 'Topic :: Software Development :: Libraries', + 'Topic :: Software Development :: Libraries :: Python Modules', + 'Intended Audience :: Developers', + 'Intended Audience :: System Administrators', + 'License :: OSI Approved :: BSD License', + ], + ) + if extensions is not None: + setup_args["ext_modules"] = extensions + setup(**setup_args) + +if __name__ == '__main__': + main()