From 532f0fdc3a8a2deb655182b4acf946f715f8e636 Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Sat, 12 Feb 2022 16:29:12 -0500 Subject: Various Build System Improvements (#971) * Convert workflow from flit to twine for publishing * This could be split into two different tasks * Change build-system toml block to setuptools * Switch to standardized project block * Some corrections * Add build module * Remove symlinks * Move example and profiles folders to archinstall * Create symlinks outside of the archinstall folder * Add new workflow to build archinstall but not publish for regular commits * Add build artifacts * Rename, so it's just archinstall.zip * Replace symlinks with copies * Also replace symlinks with copies in python-build.yml * Revert "Create symlinks outside of the archinstall folder" This reverts commit d76cf18eaa9a5916178cda13df3258db678159c8. * Revert "Move example and profiles folders to archinstall" This reverts commit c41c1c9102129970f747a3b532cdf2b426a62a53. * Revert "Remove symlinks" This reverts commit fd959e32305edf4f1c13d90891eb13c6b2d41f79. * Switch up how I'm replacing symlinks with copies * Explore using flit as the build backend still * Drop tools.flit.metadata block * tool.flit.scripts is incompatible with project block * Remove symlink copy workaround * This seems to cause an error, until I figure it out, license is specified in classifiers. * Make authors a list of dicts * URL correction * Use more of the new style metadata for flit * This is redundant; build downloads these in a venv * project.scripts replaces tool.flit.scripts * whitespace * Try explicitly adding symlinks as includes * Minor whitespacce tweaks * Add newer build packages to ISO * Update comment on python-build.yml --- .github/workflows/iso-build.yaml | 2 +- .github/workflows/python-build.yml | 26 +++++++++++++++++++ .github/workflows/python-publish.yml | 13 ++++++---- pyproject.toml | 49 ++++++++++++++++++++---------------- 4 files changed, 63 insertions(+), 27 deletions(-) create mode 100644 .github/workflows/python-build.yml diff --git a/.github/workflows/iso-build.yaml b/.github/workflows/iso-build.yaml index d603cdcb..29178ad8 100644 --- a/.github/workflows/iso-build.yaml +++ b/.github/workflows/iso-build.yaml @@ -38,7 +38,7 @@ jobs: - run: cat /tmp/archlive/airootfs/root/.zprofile - run: pacman -Sy; pacman --noconfirm -S git archiso - run: cp -r /usr/share/archiso/configs/releng/* /tmp/archlive - - run: echo -e "git\npython\npython-pip\npython-setuptools" >> /tmp/archlive/packages.x86_64 + - run: echo -e "git\npython\npython-pip\npython-build\npython-flit\npython-setuptools\npython-wheel" >> /tmp/archlive/packages.x86_64 - run: find /tmp/archlive - run: cd /tmp/archlive; mkarchiso -v -w work/ -o out/ ./ - uses: actions/upload-artifact@v2 diff --git a/.github/workflows/python-build.yml b/.github/workflows/python-build.yml new file mode 100644 index 00000000..6196f9d8 --- /dev/null +++ b/.github/workflows/python-build.yml @@ -0,0 +1,26 @@ +# This workflow will build Python packages on every commit. + +name: Build archinstall + +on: [ push, pull_request ] + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.x' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install build twine + - name: Build archinstall + run: | + python -m build + - uses: actions/upload-artifact@v2 + with: + name: archinstall + path: dist/* diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 2a261618..3d0ec253 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -21,10 +21,13 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install setuptools wheel flit - - name: Build and publish + pip install build twine + - name: Build archinstall + run: | + python -m build + - name: Publish archinstall to PyPi env: - FLIT_USERNAME: ${{ secrets.PYPI_USERNAME }} - FLIT_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} + TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} run: | - flit publish + twine upload dist/* diff --git a/pyproject.toml b/pyproject.toml index ede37542..cc73b65e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,35 +1,42 @@ [build-system] -requires = ["flit_core >=2,<4"] +requires = ["flit_core >=3.6.0,<4", "setuptools>=45", "wheel"] build-backend = "flit_core.buildapi" -[tool.flit.metadata] -module = "archinstall" -author = "Anton Hvornum" -author-email = "anton@hvornum.se" -home-page = "https://archlinux.org" -classifiers = [ "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", -"Programming Language :: Python :: 3.8", -"Programming Language :: Python :: 3.9", -"License :: OSI Approved :: GNU General Public License v3 (GPLv3)", -"Operating System :: POSIX :: Linux", +[project] +name = "archinstall" +version = "2.4.0" +description = "Arch Linux installer - guided, templates etc." +authors = [ + {name = "Anton Hvornum", email = "anton@hvornum.se"}, ] -description-file = "README.md" -requires-python=">=3.8" +readme = "README.md" +requires-python = ">=3.10" -[tool.flit.metadata.urls] -Source = "https://github.com/archlinux/archinstall" +keywords = ["linux", "arch", "archinstall", "installer"] + +classifiers = [ + "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", + "Operating System :: POSIX :: Linux", +] + +[project.urls] +Home = "https://archlinux.org" Documentation = "https://archinstall.readthedocs.io/" +Source = "https://github.com/archlinux/archinstall" -[tool.flit.scripts] +[project.scripts] archinstall = "archinstall:run_as_a_module" -[tool.flit.sdist] -include = ["docs/","profiles"] -exclude = ["docs/*.html", "docs/_static","docs/*.png","docs/*.psd"] - -[tool.flit.metadata.requires-extra] +[project.optional-dependencies] doc = ["sphinx"] +[tool.flit.sdist] +include = ["docs/", "profiles", "examples", "archinstall/profiles", "archinstall/examples"] +exclude = ["docs/*.html", "docs/_static", "docs/*.png", "docs/*.psd"] + [tool.mypy] python_version = "3.10" exclude = "tests" -- cgit v1.2.3-70-g09d2