blob: 5387d2a3ee5f5f5559c7bc9a6c2bef07a3ef00fd [file] [log] [blame]
Jean-Paul Calderonecf20dd62008-06-12 16:38:38 -04001#!/usr/bin/env python
Jean-Paul Calderone0db6cdb2008-04-11 11:52:15 -04002# -*- coding: utf-8 -*-
Jean-Paul Calderone897bc252008-02-18 20:50:23 -05003#
Hynek Schlawack76ecf942015-04-14 11:09:44 -04004# Copyright (C) Jean-Paul Calderone 2008-2015, All rights reserved
Jean-Paul Calderone897bc252008-02-18 20:50:23 -05005#
Jean-Paul Calderonee53ccf72008-04-11 11:40:39 -04006
Jean-Paul Calderone897bc252008-02-18 20:50:23 -05007"""
Hynek Schlawackf90e3682016-03-11 11:21:13 +01008Installation script for the OpenSSL package.
Jean-Paul Calderone897bc252008-02-18 20:50:23 -05009"""
10
Hynek Schlawack5bc17cb2015-04-30 19:21:40 +020011import codecs
12import os
13import re
Hynek Schlawackf982efd2015-04-15 12:08:54 -040014
Hynek Schlawackf0e66852015-10-16 20:18:38 +020015from setuptools import setup, find_packages
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050016
Hynek Schlawack76ecf942015-04-14 11:09:44 -040017
Hynek Schlawack5bc17cb2015-04-30 19:21:40 +020018HERE = os.path.abspath(os.path.dirname(__file__))
Hynek Schlawackf0e66852015-10-16 20:18:38 +020019META_PATH = os.path.join("src", "OpenSSL", "version.py")
Hynek Schlawack5bc17cb2015-04-30 19:21:40 +020020
21
22def read_file(*parts):
23 """
24 Build an absolute path from *parts* and and return the contents of the
25 resulting file. Assume UTF-8 encoding.
26 """
27 with codecs.open(os.path.join(HERE, *parts), "rb", "ascii") as f:
28 return f.read()
29
30
31META_FILE = read_file(META_PATH)
32
33
34def find_meta(meta):
35 """
36 Extract __*meta*__ from META_FILE.
37 """
38 meta_match = re.search(
39 r"^__{meta}__ = ['\"]([^'\"]*)['\"]".format(meta=meta),
40 META_FILE, re.M
41 )
42 if meta_match:
43 return meta_match.group(1)
44 raise RuntimeError("Unable to find __{meta}__ string.".format(meta=meta))
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050045
Hynek Schlawackf982efd2015-04-15 12:08:54 -040046
Hynek Schlawack65e4def2016-03-13 15:07:52 +010047URI = find_meta("uri")
48LONG = (
49 read_file("README.rst") + "\n\n" +
50 "Release Information\n" +
51 "===================\n\n" +
Paul Kehrer7d5a3bf2019-01-21 12:24:02 -060052 re.search(r"(\d{2}.\d.\d \(.*?\)\n.*?)\n\n\n----\n",
Hynek Schlawack65e4def2016-03-13 15:07:52 +010053 read_file("CHANGELOG.rst"), re.S).group(1) +
54 "\n\n`Full changelog " +
55 "<{uri}en/stable/changelog.html>`_.\n\n"
56).format(uri=URI)
57
58
Hynek Schlawackf0e66852015-10-16 20:18:38 +020059if __name__ == "__main__":
60 setup(
61 name=find_meta("title"),
62 version=find_meta("version"),
63 description=find_meta("summary"),
Hynek Schlawack65e4def2016-03-13 15:07:52 +010064 long_description=LONG,
Hynek Schlawackf0e66852015-10-16 20:18:38 +020065 author=find_meta("author"),
66 author_email=find_meta("email"),
67 maintainer="Hynek Schlawack",
68 maintainer_email="hs@ox.cx",
Hynek Schlawack65e4def2016-03-13 15:07:52 +010069 url=URI,
Hynek Schlawackf0e66852015-10-16 20:18:38 +020070 license=find_meta("license"),
71 classifiers=[
72 'Development Status :: 6 - Mature',
73 'Intended Audience :: Developers',
74 'License :: OSI Approved :: Apache Software License',
75 'Operating System :: MacOS :: MacOS X',
76 'Operating System :: Microsoft :: Windows',
77 'Operating System :: POSIX',
Hynek Schlawackf982efd2015-04-15 12:08:54 -040078
Hynek Schlawackf0e66852015-10-16 20:18:38 +020079 'Programming Language :: Python :: 2',
Hynek Schlawackf0e66852015-10-16 20:18:38 +020080 'Programming Language :: Python :: 2.7',
81 'Programming Language :: Python :: 3',
Hynek Schlawackf0e66852015-10-16 20:18:38 +020082 'Programming Language :: Python :: 3.4',
83 'Programming Language :: Python :: 3.5',
Hynek Schlawack1089ed22017-01-30 12:11:14 +010084 'Programming Language :: Python :: 3.6',
Alex Gaynor0f82c1f2018-07-04 11:34:20 -040085 'Programming Language :: Python :: 3.7',
Hynek Schlawackf982efd2015-04-15 12:08:54 -040086
Hynek Schlawackf0e66852015-10-16 20:18:38 +020087 'Programming Language :: Python :: Implementation :: CPython',
88 'Programming Language :: Python :: Implementation :: PyPy',
89 'Topic :: Security :: Cryptography',
90 'Topic :: Software Development :: Libraries :: Python Modules',
91 'Topic :: System :: Networking',
92 ],
Hynek Schlawackf982efd2015-04-15 12:08:54 -040093
Hynek Schlawackf0e66852015-10-16 20:18:38 +020094 packages=find_packages(where="src"),
95 package_dir={"": "src"},
96 install_requires=[
Hynek Schlawack73412e52016-03-16 13:37:05 +010097 # Fix cryptographyMinimum in tox.ini when changing this!
Alex Gaynor178d04d2018-08-10 10:18:30 -040098 "cryptography>=2.3",
Hynek Schlawackf0e66852015-10-16 20:18:38 +020099 "six>=1.5.2"
100 ],
Paul Kehrer4fbc11d2017-07-06 23:00:14 -0500101 extras_require={
102 "test": [
103 "flaky",
104 "pretend",
Jeremy Lainé1ae7cb62018-03-21 14:49:42 +0100105 "pytest>=3.0.1",
Paul Kehrer4fbc11d2017-07-06 23:00:14 -0500106 ],
107 "docs": [
108 "sphinx",
109 "sphinx_rtd_theme",
110 ]
111 },
Hynek Schlawackf0e66852015-10-16 20:18:38 +0200112 )