forked from samuel/python-ping
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup.py
executable file
·129 lines (110 loc) · 3.93 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/usr/bin/env python
# coding: utf-8
"""
distutils setup
~~~~~~~~~~~~~~~
:homepage: https://github.com/jedie/python-ping/
:copyleft: 1989-2011 by the python-ping team, see AUTHORS for more details.
:license: GNU GPL v2, see LICENSE for more details.
"""
import os
import subprocess
import sys
import time
import warnings
from setuptools import setup, find_packages, Command
PACKAGE_ROOT = os.path.dirname(os.path.abspath(__file__))
#VERBOSE = True
VERBOSE = False
def _error(msg):
if VERBOSE:
warnings.warn(msg)
return ""
def get_version_from_git():
try:
process = subprocess.Popen(
# %ct: committer date, UNIX timestamp
["/usr/bin/git", "log", "--pretty=format:%ct-%h", "-1", "HEAD"],
shell=False, cwd=PACKAGE_ROOT,
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
)
except Exception, err:
return _error("Can't get git hash: %s" % err)
process.wait()
returncode = process.returncode
if returncode != 0:
return _error(
"Can't get git hash, returncode was: %r"
" - git stdout: %r"
" - git stderr: %r"
% (returncode, process.stdout.readline(), process.stderr.readline())
)
output = process.stdout.readline().strip()
try:
raw_timestamp, hash = output.split("-", 1)
timestamp = int(raw_timestamp)
except Exception, err:
return _error("Error in git log output! Output was: %r" % output)
try:
timestamp_formatted = time.strftime("%Y.%m.%d", time.gmtime(timestamp))
except Exception, err:
return _error("can't convert %r to time string: %s" % (timestamp, err))
return "%s.%s" % (timestamp_formatted, hash)
# convert creole to ReSt on-the-fly, see also:
# https://code.google.com/p/python-creole/wiki/UseInSetup
try:
from creole.setup_utils import get_long_description
except ImportError:
if "register" in sys.argv or "sdist" in sys.argv or "--long-description" in sys.argv:
etype, evalue, etb = sys.exc_info()
evalue = etype("%s - Please install python-creole >= v0.8 - e.g.: pip install python-creole" % evalue)
raise etype, evalue, etb
long_description = None
else:
long_description = get_long_description(PACKAGE_ROOT)
def get_authors():
authors = []
try:
f = file(os.path.join(PACKAGE_ROOT, "AUTHORS"), "r")
for line in f:
if not line.strip().startswith("*"):
continue
if "--" in line:
line = line.split("--", 1)[0]
authors.append(line.strip(" *\r\n"))
f.close()
authors.sort()
except Exception, err:
authors = "[Error: %s]" % err
return authors
setup(
name='python-ping',
version=get_version_from_git(),
description='A pure python ICMP ping implementation using raw sockets.',
long_description=long_description,
author=get_authors(),
maintainer="Jens Diemer",
maintainer_email="python-ping@jensdiemer.de",
url='https://github.com/jedie/python-ping/',
keywords="ping icmp network latency",
packages=find_packages(),
include_package_data=True, # include package data under svn source control
zip_safe=False,
scripts=["ping.py"],
classifiers=[
# http://pypi.python.org/pypi?%3Aaction=list_classifiers
# "Development Status :: 4 - Beta",
"Development Status :: 5 - Production/Stable",
"Environment :: Web Environment",
"Intended Audience :: Developers",
"Intended Audience :: Education",
"Intended Audience :: End Users/Desktop",
"License :: OSI Approved :: GNU General Public License (GPL)",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Topic :: Internet",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: System :: Networking :: Monitoring",
],
test_suite="tests",
)