diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8b7626b..61ab393 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,13 +2,18 @@ name: build on: push: - branches: [ main ] + branches: + - main + - 'dev/**' pull_request: branches: [ main ] release: types: - published + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + jobs: test: strategy: @@ -58,7 +63,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: 3.8 + python-version: "3.10" - name: Install dependencies run: | @@ -73,11 +78,11 @@ jobs: pylint --rcfile test/pylint.rc peakrdl_uvm #------------------------------------------------------------------------------- - build_sdist: + build: needs: - test - lint - name: Build source distribution + name: Build distributions runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -85,21 +90,30 @@ jobs: - uses: actions/setup-python@v4 name: Install Python with: - python-version: 3.8 + python-version: "3.10" + + - name: Install dependencies + run: | + python -m pip install -U build - - name: Build sdist - run: python setup.py sdist + - name: Build + run: python -m build - uses: actions/upload-artifact@v3 with: - path: dist/*.tar.gz + path: | + dist/*.tar.gz + dist/*.whl #------------------------------------------------------------------------------- deploy: needs: - - build_sdist + - build runs-on: ubuntu-latest + environment: release + permissions: + id-token: write # Only publish when a GitHub Release is created. if: github.event_name == 'release' @@ -110,6 +124,3 @@ jobs: path: dist - uses: pypa/gh-action-pypi-publish@release/v1 - with: - user: __token__ - password: ${{ secrets.pypi_password }} diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..f406a37 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,52 @@ +[build-system] +requires = ["setuptools", "setuptools-scm"] +build-backend = "setuptools.build_meta" + +[project] +name = "peakrdl-uvm" +dynamic = ["version"] +requires-python = ">=3.5.2" +dependencies = [ + "systemrdl-compiler >= 1.27.0, < 2", + "jinja2>=2.9", +] + +authors = [ + {name="Alex Mykyta"}, +] +description = "Generate UVM register model from compiled SystemRDL input" +readme = "README.md" +license = {file = "LICENSE"} +keywords = [ + "SystmRDL", "PeakRDL", "CSR", "compiler", "tool", "registers", "generator", + "UVM", +] +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "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", + "Programming Language :: Python :: 3 :: Only", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", + "Operating System :: OS Independent", + "Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)", + "Topic :: Software Development :: Documentation", +] + +[project.urls] +Source = "https://github.com/SystemRDL/PeakRDL-uvm" +Tracker = "https://github.com/SystemRDL/PeakRDL-uvm/issues" +Changelog = "https://github.com/SystemRDL/PeakRDL-uvm/releases" + +[tool.setuptools.dynamic] +version = {attr = "peakrdl_uvm.__about__.__version__"} + +[project.entry-points."peakrdl.exporters"] +uvm = "peakrdl_uvm.__peakrdl__:Exporter" diff --git a/setup.py b/setup.py deleted file mode 100644 index c566a9e..0000000 --- a/setup.py +++ /dev/null @@ -1,59 +0,0 @@ -import os -import setuptools - -with open("README.md", "r", encoding='utf-8') as fh: - long_description = fh.read() - - -with open(os.path.join("src/peakrdl_uvm", "__about__.py"), encoding='utf-8') as f: - v_dict = {} - exec(f.read(), v_dict) - version = v_dict['__version__'] - -setuptools.setup( - name="peakrdl-uvm", - version=version, - author="Alex Mykyta, Jude Zhang", - description="Generate UVM register model from compiled SystemRDL input", - long_description=long_description, - long_description_content_type="text/markdown", - url="https://github.com/SystemRDL/PeakRDL-uvm", - package_dir={'': 'src'}, - packages=[ - 'peakrdl_uvm', - ], - include_package_data=True, - python_requires='>=3.5.2', - install_requires=[ - "systemrdl-compiler >= 1.27.0, < 2", - "jinja2", - ], - entry_points = { - "peakrdl.exporters": [ - 'uvm = peakrdl_uvm.__peakrdl__:Exporter' - ] - }, - classifiers=( - "Development Status :: 5 - Production/Stable", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.5", - "Programming Language :: Python :: 3.6", - "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", - "Programming Language :: Python :: 3 :: Only", - "Intended Audience :: Developers", - "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", - "Operating System :: OS Independent", - "Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)", - ), - project_urls={ - "Source": "https://github.com/SystemRDL/PeakRDL-uvm", - "Tracker": "https://github.com/SystemRDL/PeakRDL-uvm/issues", - "Changelog": "https://github.com/SystemRDL/PeakRDL-uvm/releases", - }, -)