From 23022a5a7f608efc604100ec3c811d6e80f6b6fa Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Wed, 29 Dec 2021 14:33:45 -0600 Subject: [PATCH 1/4] Add, use tools/describe script This isn't intended to make any overt behavioral change, but there is a slight one in the value of CP_VERSION that will be used during CI, because it will now include `--always --match "..."`, so there could be a change to the uploaded name of the mpy-cross artifacts on s3. --- .github/workflows/build.yml | 16 +++++++++------- .github/workflows/create_website_pr.yml | 4 +++- .github/workflows/ports_windows.yml | 4 ++-- conf.py | 5 ++++- py/makeversionhdr.py | 14 +++++--------- tools/describe | 2 ++ 6 files changed, 25 insertions(+), 20 deletions(-) create mode 100755 tools/describe diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 38d86bae0f..8714958065 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,8 +38,8 @@ jobs: run: python tools/ci_fetch_deps.py test ${{ github.sha }} - name: CircuitPython version run: | - git describe --dirty --tags || git log --parents HEAD~4.. - echo >>$GITHUB_ENV CP_VERSION=$(git describe --dirty --tags) + tools/describe || git log --parents HEAD~4.. + echo >>$GITHUB_ENV CP_VERSION=$(tools/describe) - name: Install dependencies run: | sudo apt-get update @@ -144,8 +144,8 @@ jobs: run: python tools/ci_fetch_deps.py mpy-cross-mac ${{ github.sha }} - name: CircuitPython version run: | - git describe --dirty --tags - echo >>$GITHUB_ENV CP_VERSION=$(git describe --dirty --tags) + tools/describe || git log --parents HEAD~4.. + echo >>$GITHUB_ENV CP_VERSION=$(tools/describe) - name: Install dependencies run: | brew install gettext @@ -200,8 +200,8 @@ jobs: run: python tools/ci_fetch_deps.py docs ${{ github.sha }} - name: CircuitPython version run: | - git describe --dirty --tags - echo >>$GITHUB_ENV CP_VERSION=$(git describe --dirty --tags) + tools/describe || git log --parents HEAD~4.. + echo >>$GITHUB_ENV CP_VERSION=$(tools/describe) - name: Set up Python 3 uses: actions/setup-python@v2 with: @@ -375,7 +375,9 @@ jobs: - name: Get CP deps run: python tools/ci_fetch_deps.py ${{ matrix.board }} ${{ github.sha }} - name: CircuitPython version - run: git describe --dirty --tags + run: | + tools/describe || git log --parents HEAD~4.. + echo >>$GITHUB_ENV CP_VERSION=$(tools/describe) - uses: actions/cache@v2 name: Fetch IDF tool cache id: idf-cache diff --git a/.github/workflows/create_website_pr.yml b/.github/workflows/create_website_pr.yml index dc987f0989..2f171fe054 100644 --- a/.github/workflows/create_website_pr.yml +++ b/.github/workflows/create_website_pr.yml @@ -34,7 +34,9 @@ jobs: gcc --version python3 --version - name: CircuitPython version - run: git describe --dirty --tags + run: | + tools/describe || git log --parents HEAD~4.. + echo >>$GITHUB_ENV CP_VERSION=$(tools/describe) - name: Website run: python3 build_board_info.py working-directory: tools diff --git a/.github/workflows/ports_windows.yml b/.github/workflows/ports_windows.yml index 6339746066..5651735cec 100644 --- a/.github/workflows/ports_windows.yml +++ b/.github/workflows/ports_windows.yml @@ -73,8 +73,8 @@ jobs: run: python tools/ci_fetch_deps.py windows ${{ github.sha }} - name: CircuitPython version run: | - git describe --dirty --tags - echo >>$GITHUB_ENV CP_VERSION=$(git describe --dirty --tags) + tools/describe || git log --parents HEAD~4.. + echo >>$GITHUB_ENV CP_VERSION=$(tools/describe) - name: build mpy-cross run: make -j2 -C mpy-cross diff --git a/conf.py b/conf.py index fd92a3cc93..e4c29fb88c 100644 --- a/conf.py +++ b/conf.py @@ -24,12 +24,15 @@ import subprocess import sys import urllib.parse import time +import pathlib from collections import defaultdict from sphinx.transforms import SphinxTransform from docutils import nodes from sphinx import addnodes +tools_describe = (pathlib.Path(__file__).parent / "tools/describe").str() + # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. @@ -129,7 +132,7 @@ copyright = f'2014-{current_date.tm_year}, MicroPython & CircuitPython contribut final_version = "" git_describe = subprocess.run( - ["git", "describe", "--dirty", "--tags"], + [tools_describe], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, encoding="utf-8" diff --git a/py/makeversionhdr.py b/py/makeversionhdr.py index 12eaa3d3f1..da6f7c9f59 100644 --- a/py/makeversionhdr.py +++ b/py/makeversionhdr.py @@ -1,29 +1,25 @@ """ Generate header file with macros defining MicroPython version info. -This script works with Python 2.6, 2.7, 3.3 and 3.4. +This script works with Python 3.7 and newer """ from __future__ import print_function import sys import os +import pathlib import datetime import subprocess +tools_describe = str(pathlib.Path(__file__).parent.parent / "tools/describe") + def get_version_info_from_git(): - # Python 2.6 doesn't have check_output, so check for that - try: - subprocess.check_output - subprocess.check_call - except AttributeError: - return None - # Note: git describe doesn't work if no tag is available try: git_tag = subprocess.check_output( - ["git", "describe", "--tags", "--dirty", "--always", "--match", "[1-9].*"], + [tools_describe], stderr=subprocess.STDOUT, universal_newlines=True, ).strip() diff --git a/tools/describe b/tools/describe new file mode 100755 index 0000000000..c4dcf8bb9d --- /dev/null +++ b/tools/describe @@ -0,0 +1,2 @@ +#!/bin/sh +git describe --dirty --tags --always --match "[1-9].*" From 4a23742100d958d7dc53f0b89b3b93c6447276c9 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 4 Jan 2022 11:14:26 -0600 Subject: [PATCH 2/4] Use the first-parent heuristic for describing the version --- tools/describe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/describe b/tools/describe index c4dcf8bb9d..becdc1e5bd 100755 --- a/tools/describe +++ b/tools/describe @@ -1,2 +1,2 @@ #!/bin/sh -git describe --dirty --tags --always --match "[1-9].*" +git describe --first-parent --dirty --tags --always --match "[1-9].*" From c4c7a6ff62491626d312891d27b1c73c126434f4 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Mon, 14 Feb 2022 16:58:29 -0600 Subject: [PATCH 3/4] use describe program during building stubs Closes: #5793 --- setup.py-stubs | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py-stubs b/setup.py-stubs index 3604ee973e..b09c47f739 100644 --- a/setup.py-stubs +++ b/setup.py-stubs @@ -43,6 +43,7 @@ setup( "root": "..", "relative_to": __file__, "local_scheme": local_scheme, + "git_describe_command": "tools/describe", }, zip_safe=False, ) From 27f2c450ba4b2d37a130bdaa1f934e5fd247552c Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 15 Feb 2022 09:06:27 -0600 Subject: [PATCH 4/4] fix finding the describe script during the doc build --- conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf.py b/conf.py index e4c29fb88c..7818d78917 100644 --- a/conf.py +++ b/conf.py @@ -31,7 +31,7 @@ from sphinx.transforms import SphinxTransform from docutils import nodes from sphinx import addnodes -tools_describe = (pathlib.Path(__file__).parent / "tools/describe").str() +tools_describe = str(pathlib.Path(__file__).parent / "tools/describe") # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the