Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Fix up checks in Makefile and make them portable#1661

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
Byron merged 18 commits intogitpython-developers:mainfromEliahKagan:portable-makefile
Sep 15, 2023
Merged
Show file tree
Hide file tree
Changes fromall commits
Commits
Show all changes
18 commits
Select commitHold shift + click to select a range
6fb2318
Reference HEAD in Makefile (more portable than head)
EliahKaganSep 11, 2023
335d03b
Have Makefile use git tag to sort the tags
EliahKaganSep 11, 2023
b1c61d9
Make "git tag" sort our SemVer-ish tags correctly
EliahKaganSep 13, 2023
cc202cc
Improve when and how Makefile suggests virtual env
EliahKaganSep 13, 2023
b54c346
Use "python" in the virtual env, "python3" outside
EliahKaganSep 13, 2023
ae9405a
LF line endings for scripts that may need them
EliahKaganSep 13, 2023
f5da163
Have "make release" check other release preconditions
EliahKaganSep 13, 2023
5cf7f97
Fix non-venv branch always failing
EliahKaganSep 13, 2023
6495d84
Extract checks from release target to script
EliahKaganSep 14, 2023
4b1c564
Extract build from force_release target to script
EliahKaganSep 14, 2023
729372f
Prevent buggy interaction between MinGW and WSL
EliahKaganSep 14, 2023
ba84db4
Fix message wording that was opposite of intended
EliahKaganSep 14, 2023
de40e68
Ignore some other virtual environment directories
EliahKaganSep 14, 2023
693d041
make `.gitattributes` file more generic
ByronSep 15, 2023
962f747
submodules don't contribute to the release; ignore their changes
ByronSep 15, 2023
d18d90a
Use 'echo' where possible to avoid explicit newlines
ByronSep 15, 2023
5919f8d
Be explicit on how to interpret the data table
ByronSep 15, 2023
1e0b3f9
refinements to `build-reelase.sh`
ByronSep 15, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion.gitattributes
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
test/fixtures/*eol=lf
init-tests-after-clone.sh
*.sheol=lf
/Makefileeol=lf
2 changes: 2 additions & 0 deletions.gitignore
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
*.py[co]
*.swp
*~
.env/
env/
.venv/
venv/
/*.egg-info
Expand Down
10 changes: 2 additions & 8 deletionsMakefile
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,16 +7,10 @@ clean:
rm -rf build/ dist/ .eggs/ .tox/

release: clean
# Check if latest tag is the current head we're releasing
echo "Latest tag = $$(git tag | sort -nr | head -n1)"
echo "HEAD SHA = $$(git rev-parse head)"
echo "Latest tag SHA = $$(git tag | sort -nr | head -n1 | xargs git rev-parse)"
@test "$$(git rev-parse head)" = "$$(git tag | sort -nr | head -n1 | xargs git rev-parse)"
./check-version.sh
make force_release

force_release: clean
# IF we're in a virtual environment, add build tools
test -z "$$VIRTUAL_ENV" || pip install -U build twine
python3 -m build --sdist --wheel || echo "Use a virtual-env with 'python -m venv env && source env/bin/activate' instead"
./build-release.sh
twine upload dist/*
git push --tags origin main
26 changes: 26 additions & 0 deletionsbuild-release.sh
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
#!/bin/bash
#
# This script builds a release. If run in a venv, it auto-installs its tools.
# You may want to run "make release" instead of running this script directly.

set -eEu

function release_with() {
$1 -m build --sdist --wheel
}

if test -n "${VIRTUAL_ENV:-}"; then
deps=(build twine) # Install twine along with build, as we need it later.
echo "Virtual environment detected. Adding packages: ${deps[*]}"
pip install --quiet --upgrade "${deps[@]}"
echo 'Starting the build.'
release_with python
else
function suggest_venv() {
venv_cmd='python -m venv env && source env/bin/activate'
printf "HELP: To avoid this error, use a virtual-env with '%s' instead.\n" "$venv_cmd"
}
trap suggest_venv ERR # This keeps the original exit (error) code.
echo 'Starting the build.'
release_with python3 # Outside a venv, use python3.
fi
46 changes: 46 additions & 0 deletionscheck-version.sh
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
#!/bin/bash
#
# This script checks if we are in a consistent state to build a new release.
# See the release instructions in README.md for the steps to make this pass.
# You may want to run "make release" instead of running this script directly.

set -eEfuo pipefail
trap 'echo "$0: Check failed. Stopping." >&2' ERR

readonly version_path='VERSION'
readonly changes_path='doc/source/changes.rst'

echo 'Checking current directory.'
test "$(cd -- "$(dirname -- "$0")" && pwd)" = "$(pwd)" # Ugly, but portable.

echo "Checking that $version_path and $changes_path exist and have no uncommitted changes."
test -f "$version_path"
test -f "$changes_path"
git status -s -- "$version_path" "$changes_path"
test -z "$(git status -s -- "$version_path" "$changes_path")"

# This section can be commented out, if absolutely necessary.
echo 'Checking that ALL changes are committed.'
git status -s --ignore-submodules
test -z "$(git status -s --ignore-submodules)"

version_version="$(cat "$version_path")"
changes_version="$(awk '/^[0-9]/ {print $0; exit}' "$changes_path")"
config_opts="$(printf ' -c versionsort.suffix=-%s' alpha beta pre rc RC)"
latest_tag="$(git $config_opts tag -l '[0-9]*' --sort=-v:refname | head -n1)"
head_sha="$(git rev-parse HEAD)"
latest_tag_sha="$(git rev-parse "$latest_tag")"

# Display a table of all the current version, tag, and HEAD commit information.
echo $'\nThe VERSION must be the same in all locations, and so must the HEAD and tag SHA'
printf '%-14s = %s\n' 'VERSION file' "$version_version" \
'changes.rst' "$changes_version" \
'Latest tag' "$latest_tag" \
'HEAD SHA' "$head_sha" \
'Latest tag SHA' "$latest_tag_sha"

# Check that the latest tag and current version match the HEAD we're releasing.
test "$version_version" = "$changes_version"
test "$latest_tag" = "$version_version"
test "$head_sha" = "$latest_tag_sha"
echo 'OK, everything looks good.'

[8]ページ先頭

©2009-2025 Movatter.jp