#!/usr/bin/env python # # $Id: setup.py 1469 2012-07-18 16:00:39Z g.rodola $ # # Copyright (c) 2009, Jay Loden, 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 try: from setuptools import setup, Extension except ImportError: from distutils.core import setup, Extension 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] else: sys.exit('platform %s is not supported' % sys.platform) def main(): 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, Jay Loden', 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'], 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 :: 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', '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()