aboutsummaryrefslogtreecommitdiff
path: root/python/esptool/setup.py.patch
blob: 54e8fddba4654c8a05861812e9419efba57fe42b (plain)
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
--- setup.py.orig	2024-09-18 14:35:46.000000000 +0100
+++ setup.py	2024-09-25 14:36:56.623686000 +0100
@@ -1,5 +1,40 @@
+# SPDX-FileCopyrightText: 2014-2023 Fredrik Ahlberg, Angus Gratton,
+# Espressif Systems (Shanghai) CO LTD, other contributors as noted.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+import io
 import os
-from setuptools import setup
+import re
+import sys
+
+try:
+    from setuptools import find_packages, setup
+except ImportError:
+    print(
+        "Package setuptools is missing from your Python installation. "
+        "Please see the installation section in the esptool documentation"
+        " for instructions on how to install it."
+    )
+    sys.exit(1)
+
+
+# Example code to pull version from esptool module with regex, taken from
+# https://packaging.python.org/en/latest/guides/single-sourcing-package-version/
+def read(*names, **kwargs):
+    with io.open(
+        os.path.join(os.path.dirname(__file__), *names),
+        encoding=kwargs.get("encoding", "utf8"),
+    ) as fp:
+        return fp.read()
+
+
+def find_version(*file_paths):
+    version_file = read(*file_paths)
+    version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", version_file, re.M)
+    if version_match:
+        return version_match.group(1)
+    raise RuntimeError("Unable to find version string.")
 
 if os.name != "nt":
     scripts = ["esptool.py", "espefuse.py", "espsecure.py", "esp_rfc2217_server.py"]
@@ -15,7 +50,83 @@
         ],
     }
 
+long_description = """
+==========
+esptool.py
+==========
+A Python-based, open-source, platform-independent utility to communicate with \
+the ROM bootloader in Espressif chips.
+The esptool.py project is `hosted on github <https://github.com/espressif/esptool>`_.
+Documentation
+-------------
+Visit online `esptool documentation <https://docs.espressif.com/projects/esptool/>`_ \
+or run ``esptool.py -h``.
+Contributing
+------------
+Please see the `contributions guide \
+<https://docs.espressif.com/projects/esptool/en/latest/contributing.html>`_.
+"""
+
 setup(
-    scripts=scripts,
+    name="esptool",
+    version=find_version("esptool/__init__.py"),
+    description="A serial utility to communicate & flash code to Espressif chips.",
+    long_description=long_description,
+    url="https://github.com/espressif/esptool/",
+    project_urls={
+        "Documentation": "https://docs.espressif.com/projects/esptool/",
+        "Source": "https://github.com/espressif/esptool/",
+        "Tracker": "https://github.com/espressif/esptool/issues/",
+    },
+    author="Fredrik Ahlberg (themadinventor) & Angus Gratton (projectgus) "
+    "& Espressif Systems",
+    author_email="",
+    license="GPLv2+",
+    classifiers=[
+        "Development Status :: 5 - Production/Stable",
+        "Intended Audience :: Developers",
+        "Natural Language :: English",
+        "Operating System :: POSIX",
+        "Operating System :: Microsoft :: Windows",
+        "Operating System :: MacOS :: MacOS X",
+        "Topic :: Software Development :: Embedded Systems",
+        "Environment :: Console",
+        "License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)",
+        "Programming Language :: Python :: 3.7",
+        "Programming Language :: Python :: 3.8",
+        "Programming Language :: Python :: 3.9",
+        "Programming Language :: Python :: 3.10",
+        "Programming Language :: Python :: 3.11",
+        "Programming Language :: Python :: 3.12",
+    ],
+    python_requires=">=3.7",
+    setup_requires=(["wheel"] if "bdist_wheel" in sys.argv else []),
+    extras_require={
+        "dev": [
+            "pyelftools",
+            "coverage~=6.0",
+            "pre-commit",
+            "pytest",
+            "pytest-rerunfailures",
+            "requests",
+            "commitizen",
+        ],
+        "hsm": [
+            "python-pkcs11",
+        ],
+    },
+    install_requires=[
+        "bitstring>=3.1.6",
+        "cryptography>=2.1.4",
+        "ecdsa>=0.16.0",
+        "pyserial>=3.3",
+        "reedsolo>=1.5.3,<1.8",
+        "PyYAML>=5.1",
+        "intelhex",
+    ],
+    packages=find_packages(),
+    include_package_data=True,
+    package_data={"": ["esptool/targets/stub_flasher/*.json"]},
     entry_points=entry_points,
+    scripts=scripts,
 )