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 d76cf18eaa.

* Revert "Move example and profiles folders to archinstall"

This reverts commit c41c1c9102.

* Revert "Remove symlinks"

This reverts commit fd959e3230.

* 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
This commit is contained in:
Dylan M. Taylor 2022-02-12 16:29:12 -05:00 committed by GitHub
parent c3310d01b7
commit 532f0fdc3a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 64 additions and 28 deletions

View File

@ -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

26
.github/workflows/python-build.yml vendored Normal file
View File

@ -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/*

View File

@ -21,10 +21,13 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools wheel flit
- name: Build and publish
env:
FLIT_USERNAME: ${{ secrets.PYPI_USERNAME }}
FLIT_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
pip install build twine
- name: Build archinstall
run: |
flit publish
python -m build
- name: Publish archinstall to PyPi
env:
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: |
twine upload dist/*

View File

@ -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"