Convert the script to a Python package

It can now be invoked via `python -m msys2_autobuild` or
by installing it, which adds a "msys2-autobuild" script.

This is a first step towards splitting up the code.

The HTTP cache is now stored in the working directory
instead of the source directory.
This commit is contained in:
Christoph Reiter 2023-03-19 15:20:11 +01:00
parent d0ddf60737
commit 0d25d51a04
9 changed files with 24 additions and 17 deletions

View File

@ -16,6 +16,9 @@ on:
schedule: schedule:
- cron: '0 0/3 * * *' - cron: '0 0/3 * * *'
env:
PYTHONUNBUFFERED: 1
permissions: permissions:
contents: write contents: write
@ -66,7 +69,7 @@ jobs:
GITHUB_TOKEN_READONLY: ${{ secrets.GITHUBTOKENREADONLY }} GITHUB_TOKEN_READONLY: ${{ secrets.GITHUBTOKENREADONLY }}
OPTIONAL_DEPS: ${{ github.event.inputs.optional_deps }} OPTIONAL_DEPS: ${{ github.event.inputs.optional_deps }}
run: | run: |
python -u autobuild.py write-build-plan --optional-deps "$OPTIONAL_DEPS" build_plan.json python -m msys2_autobuild write-build-plan --optional-deps "$OPTIONAL_DEPS" build_plan.json
buildPlan="$(cat build_plan.json)" buildPlan="$(cat build_plan.json)"
echo "build-plan=$buildPlan" >> $GITHUB_OUTPUT echo "build-plan=$buildPlan" >> $GITHUB_OUTPUT
@ -76,7 +79,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN_READONLY: ${{ secrets.GITHUBTOKENREADONLY }} GITHUB_TOKEN_READONLY: ${{ secrets.GITHUBTOKENREADONLY }}
run: | run: |
python -u autobuild.py clean-assets python -m msys2_autobuild clean-assets
- name: Show build queue - name: Show build queue
if: steps.check.outputs.build-plan != '[]' if: steps.check.outputs.build-plan != '[]'
@ -85,7 +88,7 @@ jobs:
GITHUB_TOKEN_READONLY: ${{ secrets.GITHUBTOKENREADONLY }} GITHUB_TOKEN_READONLY: ${{ secrets.GITHUBTOKENREADONLY }}
OPTIONAL_DEPS: ${{ github.event.inputs.optional_deps }} OPTIONAL_DEPS: ${{ github.event.inputs.optional_deps }}
run: | run: |
python -u autobuild.py show --optional-deps "$OPTIONAL_DEPS" python -m msys2_autobuild show --optional-deps "$OPTIONAL_DEPS"
build: build:
needs: schedule needs: schedule
@ -171,4 +174,4 @@ jobs:
$env:VCPKG_ROOT='' $env:VCPKG_ROOT=''
$BUILD_ROOT='C:\' $BUILD_ROOT='C:\'
$MSYS2_ROOT=(msys2 -c 'cygpath -w /') $MSYS2_ROOT=(msys2 -c 'cygpath -w /')
python -u autobuild.py build ${{ matrix.build-args }} "$MSYS2_ROOT" "$BUILD_ROOT" python -m msys2_autobuild build ${{ matrix.build-args }} "$MSYS2_ROOT" "$BUILD_ROOT"

View File

@ -59,8 +59,8 @@ jobs:
GITHUB_TOKEN_READONLY: ${{ secrets.GITHUBTOKENREADONLY }} GITHUB_TOKEN_READONLY: ${{ secrets.GITHUBTOKENREADONLY }}
CLEAR_FAILED_BUILD_TYPES: ${{ github.event.inputs.clear_failed_build_types }} CLEAR_FAILED_BUILD_TYPES: ${{ github.event.inputs.clear_failed_build_types }}
run: | run: |
python -u autobuild.py clear-failed --build-types "$CLEAR_FAILED_BUILD_TYPES" python -m msys2_autobuild clear-failed --build-types "$CLEAR_FAILED_BUILD_TYPES"
python -u autobuild.py update-status python -m msys2_autobuild update-status
- name: Clear failed packages - name: Clear failed packages
if: ${{ github.event.inputs.clear_failed_packages != '' }} if: ${{ github.event.inputs.clear_failed_packages != '' }}
@ -69,5 +69,5 @@ jobs:
GITHUB_TOKEN_READONLY: ${{ secrets.GITHUBTOKENREADONLY }} GITHUB_TOKEN_READONLY: ${{ secrets.GITHUBTOKENREADONLY }}
CLEAR_FAILED_PACKAGES: ${{ github.event.inputs.clear_failed_packages }} CLEAR_FAILED_PACKAGES: ${{ github.event.inputs.clear_failed_packages }}
run: | run: |
python -u autobuild.py clear-failed --packages "$CLEAR_FAILED_PACKAGES" python -m msys2_autobuild clear-failed --packages "$CLEAR_FAILED_PACKAGES"
python -u autobuild.py update-status python -m msys2_autobuild update-status

View File

@ -1,6 +1,6 @@
# msys2-autobuild # msys2-autobuild
## autobuild.py ## CLI
```console ```console
$ pacman -S mingw-w64-x86_64-python-tabulate mingw-w64-x86_64-python-pygithub mingw-w64-x86_64-python-requests $ pacman -S mingw-w64-x86_64-python-tabulate mingw-w64-x86_64-python-pygithub mingw-w64-x86_64-python-requests
@ -11,7 +11,7 @@ $ python -m pip install --user -r requirements.txt
``` ```
```console ```console
$ ./autobuild.py --help $ python -m msys2_autobuild --help
usage: autobuild.py [-h] usage: autobuild.py [-h]
{build,show,should-run,update-status,fetch-assets,upload-assets,clean-assets} {build,show,should-run,update-status,fetch-assets,upload-assets,clean-assets}
... ...

View File

@ -1,5 +1,3 @@
#!/usr/bin/env python3
import sys import sys
import os import os
import argparse import argparse
@ -1671,7 +1669,7 @@ def install_requests_cache() -> Generator:
# Monkey patch globally, so pygithub uses it as well. # Monkey patch globally, so pygithub uses it as well.
# Only do re-validation with etag/date etc and ignore the cache-control headers that # Only do re-validation with etag/date etc and ignore the cache-control headers that
# github sends by default with 60 seconds. # github sends by default with 60 seconds.
cache_dir = os.path.join(SCRIPT_DIR, '.autobuild_cache') cache_dir = os.path.join(os.getcwd(), '.autobuild_cache')
os.makedirs(cache_dir, exist_ok=True) os.makedirs(cache_dir, exist_ok=True)
requests_cache.install_cache( requests_cache.install_cache(
always_revalidate=True, always_revalidate=True,
@ -1786,5 +1784,5 @@ def main(argv: List[str]) -> None:
args.func(args) args.func(args)
if __name__ == "__main__": def run() -> None:
main(sys.argv) return main(sys.argv)

View File

@ -0,0 +1,3 @@
from . import run
run()

2
poetry.lock generated
View File

@ -769,4 +769,4 @@ files = [
[metadata] [metadata]
lock-version = "2.0" lock-version = "2.0"
python-versions = "^3.8.1" python-versions = "^3.8.1"
content-hash = "9ef21636afb4a916efb9a6b2a646f317a0e854c793cadb72c737d4ab77a0046b" content-hash = "eb5347d2acbf38939ee4195dbfe6df3397d58bfedee304099bd295bea938800a"

View File

@ -17,6 +17,9 @@ flake8 = "^6.0.0"
types-tabulate = "^0.9.0.0" types-tabulate = "^0.9.0.0"
types-requests = "^2.25.0" types-requests = "^2.25.0"
[tool.poetry.scripts]
msys2-autobuild = 'msys2_autobuild:run'
[build-system] [build-system]
requires = ["poetry-core>=1.0.0"] requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api" build-backend = "poetry.core.masonry.api"