aboutsummaryrefslogtreecommitdiffstats
path: root/setup.py
diff options
context:
space:
mode:
authorPatrick Lehmann <Patrick.Lehmann@plc2.de>2021-06-23 00:38:41 +0200
committerPatrick Lehmann <Patrick.Lehmann@plc2.de>2021-06-23 00:38:41 +0200
commit513ee743a2f633ed01486621b4684c0608d34219 (patch)
tree541c86d28d1e7b73be1e33d4f4e65b4670d11a70 /setup.py
parentab736d2fd0259d3c674882296b8c233c25dc848a (diff)
downloadghdl-513ee743a2f633ed01486621b4684c0608d34219.tar.gz
ghdl-513ee743a2f633ed01486621b4684c0608d34219.tar.bz2
ghdl-513ee743a2f633ed01486621b4684c0608d34219.zip
pyGHDL: handle requirements files with comments and/or git URLs
(cherry picked from commit 8bb020fb4481e1d21ccf64470ddf1838024732cb)
Diffstat (limited to 'setup.py')
-rw-r--r--setup.py159
1 files changed, 91 insertions, 68 deletions
diff --git a/setup.py b/setup.py
index 75e04bb3a..26bd54181 100644
--- a/setup.py
+++ b/setup.py
@@ -33,89 +33,112 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# ============================================================================
-from pathlib import Path
-from re import compile as re_compile
-from setuptools import setup as setuptools_setup, find_packages as setuptools_find_packages
+from pathlib import Path
+from re import compile as re_compile
+from setuptools import (
+ setup as setuptools_setup,
+ find_packages as setuptools_find_packages,
+)
gitHubNamespace = "ghdl"
projectName = "ghdl"
packageName = "pyGHDL"
packagePath = Path(packageName)
-# Read (local) README for upload to PyPI
readmeFile = packagePath / "README.md"
-with readmeFile.open("r") as file:
- long_description = file.read()
+requirementsFile = packagePath / "requirements.txt"
+
+# Read (local) README for upload to PyPI
+def get_description(file: Path) -> str:
+ with file.open("r") as fh:
+ description = fh.read()
+ return description
+
# Read requirements file and add them to package dependency list
-requirementsFile = packagePath / "requirements.txt"
-with requirementsFile.open("r") as file:
- requirements = [line for line in file.readlines()]
+def get_requirements(file: Path) -> List[str]:
+ requirements = []
+ with file.open("r") as fh:
+ for line in fh.readlines():
+ if line.startswith("#"):
+ continue
+ elif line.startswith("git+"):
+ _splitItems = line.split("#")
+ requirements.append(
+ "{} @ {}".format(_splitItems[1].strip(), _splitItems[0])
+ )
+ else:
+ requirements.append(line.strip())
+ return requirements
+
def get_version():
- # Try from version.py. Reads it to avoid loading the shared library.
- pattern = re_compile('^__version__ = "(.*)"\n')
- try:
- line = open("pyGHDL/libghdl/version.py").read()
- match = pattern.match(line)
- if match:
- return match.group(1)
- except:
- pass
+ # Try from version.py. Reads it to avoid loading the shared library.
+ pattern = re_compile('^__version__ = "(.*)"\n')
+ try:
+ line = open("pyGHDL/libghdl/version.py").read()
+ match = pattern.match(line)
+ if match:
+ return match.group(1)
+ except:
+ pass
+
+ raise Exception("Cannot find version")
- raise Exception("Cannot find version")
# Derive URLs
-sourceCodeURL = "https://github.com/{namespace}/{projectName}".format(namespace=gitHubNamespace, projectName=projectName)
-documentationURL = "https://{namespace}.github.io/{projectName}/using/py/index.html".format(namespace=gitHubNamespace, projectName=projectName)
+sourceCodeURL = "https://github.com/{namespace}/{projectName}".format(
+ namespace=gitHubNamespace, projectName=projectName
+)
+documentationURL = (
+ "https://{namespace}.github.io/{projectName}/using/py/index.html".format(
+ namespace=gitHubNamespace, projectName=projectName
+ )
+)
# Assemble all package information
setuptools_setup(
- name=packageName,
- version=get_version(),
-
- author="Tristan Gingold",
- author_email="tgingold@free.fr",
- license="GPL-2.0-or-later",
- description="Python binding for GHDL and high-level APIs (incl. LSP).",
- long_description=long_description,
- long_description_content_type="text/markdown",
-
- url=sourceCodeURL,
- project_urls={
- 'Documentation': documentationURL,
- 'Source Code': sourceCodeURL,
- 'Issue Tracker': sourceCodeURL + "/issues"
- },
-
- python_requires='>=3.6',
- install_requires=requirements,
- packages=setuptools_find_packages(exclude=("tests",)),
- entry_points={
- 'console_scripts': [
- "ghdl-ls = pyGHDL.cli.lsp:main",
- "ghdl-dom = pyGHDL.cli.DOM:main"
- ]
- },
-
- keywords="Python3 VHDL Parser Compiler Simulator GHDL",
- classifiers=[
- "License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)",
- "Operating System :: MacOS",
- "Operating System :: Microsoft :: Windows :: Windows 10",
- "Operating System :: POSIX :: Linux",
- "Programming Language :: Python :: 3 :: Only",
- "Programming Language :: Python :: 3.6",
- "Programming Language :: Python :: 3.7",
- "Programming Language :: Python :: 3.8",
- "Programming Language :: Python :: 3.9",
- "Development Status :: 4 - Beta",
-# "Development Status :: 5 - Production/Stable",
- "Intended Audience :: Developers",
- "Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)",
- "Topic :: Software Development :: Code Generators",
- "Topic :: Software Development :: Compilers",
- "Topic :: Software Development :: Testing",
- "Topic :: Utilities",
- ]
+ name=packageName,
+ version=get_version(),
+ author="Tristan Gingold",
+ author_email="tgingold@free.fr",
+ license="GPL-2.0-or-later",
+ description="Python binding for GHDL and high-level APIs (incl. LSP).",
+ long_description=get_description(readmeFile),
+ long_description_content_type="text/markdown",
+ url=sourceCodeURL,
+ project_urls={
+ "Documentation": documentationURL,
+ "Source Code": sourceCodeURL,
+ "Issue Tracker": sourceCodeURL + "/issues",
+ },
+ python_requires=">=3.6",
+ install_requires=get_requirements(requirementsFile),
+ packages=setuptools_find_packages(exclude=("tests",)),
+ entry_points={
+ "console_scripts": [
+ "ghdl-ls = pyGHDL.cli.lsp:main",
+ "ghdl-dom = pyGHDL.cli.DOM:main",
+ ]
+ },
+ keywords="Python3 VHDL Parser Compiler Simulator GHDL",
+ classifiers=[
+ "License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)",
+ "Operating System :: MacOS",
+ "Operating System :: Microsoft :: Windows :: Windows 10",
+ "Operating System :: POSIX :: Linux",
+ "Programming Language :: Python :: 3 :: Only",
+ "Programming Language :: Python :: 3.6",
+ "Programming Language :: Python :: 3.7",
+ "Programming Language :: Python :: 3.8",
+ "Programming Language :: Python :: 3.9",
+ "Development Status :: 4 - Beta",
+ # "Development Status :: 5 - Production/Stable",
+ "Intended Audience :: Developers",
+ "Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)",
+ "Topic :: Software Development :: Code Generators",
+ "Topic :: Software Development :: Compilers",
+ "Topic :: Software Development :: Testing",
+ "Topic :: Utilities",
+ ],
)