-
-
Notifications
You must be signed in to change notification settings - Fork 21.4k
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SCons: Bump min version to 3.1.2, test it on CI with one Linux job #92043
SCons: Bump min version to 3.1.2, test it on CI with one Linux job #92043
Conversation
2be3045
to
10d518d
Compare
shell: bash | ||
run: | | ||
python -c "import sys; print(sys.version)" | ||
python -m pip install scons==4.7.0 | ||
python -m pip install wheel |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Had to install wheel
before scons
, otherwise it failed with this error:
3.6.15 (default, Sep 6 2021, 07:07:23)
[GCC 9.3.0]
Collecting scons==3.0.0
Downloading scons-3.0.0.tar.gz (630 kB)
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status 'done'
Using legacy 'setup.py install' for scons, since package 'wheel' is not installed.
Installing collected packages: scons
Running setup.py install for scons: started
Running setup.py install for scons: finished with status 'error'
ERROR: Command errored out with exit status 1:
command: /opt/hostedtoolcache/Python/3.6.15/x64/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-c84v8i3g/scons_e21b17358cca4fa0a6913eec3e36b727/setup.py'"'"'; __file__='"'"'/tmp/pip-install-c84v8i3g/scons_e21b17358cca4fa0a6913eec3e36b727/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-9y39lo61/install-record.txt --single-version-externally-managed --compile --install-headers /opt/hostedtoolcache/Python/3.6.15/x64/include/python3.6m/scons
cwd: /tmp/pip-install-c84v8i3g/scons_e21b17358cca4fa0a6913eec3e36b727/
Complete output (6 lines):
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: setup.py --help [cmd1 cmd2 ...]
or: setup.py --help-commands
or: setup.py cmd --help
error: option --single-version-externally-managed not recognized
----------------------------------------
ERROR: Command errored out with exit status 1: /opt/hostedtoolcache/Python/3.6.15/x64/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-c84v8i3g/scons_e21b17358cca4fa0a6913eec3e36b727/setup.py'"'"'; __file__='"'"'/tmp/pip-install-c84v8i3g/scons_e21b17358cca4fa0a6913eec3e36b727/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-9y39lo61/install-record.txt --single-version-externally-managed --compile --install-headers /opt/hostedtoolcache/Python/3.6.15/x64/include/python3.6m/scons Check the logs for full command output.
Confirmed that the build fails as expected without #92041: https://github.com/godotengine/godot/actions/runs/9124804393/job/25089728389?pr=92043
I'll rebase to include that PR. |
10d518d
to
d294d8d
Compare
Looks great and very helpful, approving on principle but needs to pass compilation, something with the configuration fixes if the environment I suspect Could be specific to 3.0.0, might be worth trying with 3.1.2 which has some changes, like python dependencies, unsure |
Indeed, that's a weird error:
https://github.com/godotengine/godot/actions/runs/9124860447/job/25089907695?pr=92043 I can't reproduce it locally with a I'll throw a few tests on GitHub actions in my fork to see if newer Python or SCons solves it.
So in short, we could makek SCons 3.0.3 the min supported version to work around this bug. Based on https://repology.org/project/scons/versions, that would exclude Debian 10 and derivatives which have SCons 3.0.1, but I think it's fine by now. Debian 10 will be EOL in a month: https://wiki.debian.org/LTS We don't gain much from supporting 3.0.3-3.0.5 though, hardly any distro provides it. |
I think it'd be worth raising the minimum version, unless that excludes a large number of environments, like automated tools somewhere, but otherwise I'd say it isn't worth the hassle to plug holes and provide workarounds I think large distros like LTS Ubuntu etc. are a good reference especially when automatic configuration etc. is involved like CI and containers |
d294d8d
to
07458d7
Compare
I bumped the minimum SCons version to 3.1.0 as described above. |
Could be worth considering bumping to 3.1.2 given the note in the build instructions (they will also need updating, with 3.1.0 at least):
|
The min SCons version had to be bumped as SCons 3.0 before 3.0.3 seems broken (see godotengine#92043), and there's little gain from supporting 3.0.3-3.0.5. 3.1.2 is also the first version to avoid ambiguities between Python 2 and Python 3 usage, so we finally use it as the minimum baseline. Also test against Python 3.6 which is also our minimum supported version. This should help prevent regressions whenever we modernize the build scripts.
07458d7
to
a63c37d
Compare
Bumped to 3.1.2 in the end. |
That sounds reasonable I think, it'll be 5 years old by then and I think we can treat that as a reasonable backwards range |
The min SCons version had to be bumped as SCons 3.0 before 3.0.3 seems broken (see godotengine#92043), and there's little gain from supporting 3.0.3-3.0.5. 3.1.2 is also the first version to avoid ambiguities between Python 2 and Python 3 usage, so we finally use it as the minimum baseline. Also test against Python 3.6 which is also our minimum supported version. This should help prevent regressions whenever we modernize the build scripts.
The min SCons version had to be bumped as SCons 3.0 before 3.0.3 seems broken (see godotengine#92043), and there's little gain from supporting 3.0.3-3.0.5. 3.1.2 is also the first version to avoid ambiguities between Python 2 and Python 3 usage, so we finally use it as the minimum baseline. Also test against Python 3.6 which is also our minimum supported version. This should help prevent regressions whenever we modernize the build scripts.
The min SCons version had to be bumped as SCons 3.0 before 3.0.3 seems broken (see below), and there's little gain from supporting 3.0.3-3.0.5.
3.1.2 is also the first version to avoid ambiguities between Python 2 and Python 3 usage, so we finally use it as the minimum baseline.
Also test against Python 3.6 which is also our minimum supported version.
This should help prevent regressions whenever we modernize the build scripts.
Also a bunch of cosmetic changes, got carried away :P
This should fail initially because of #91986, so I will rebase after #92041 is merged.Confirmed, so #92041 is now included in this PR.
CC @Repiteo @AThousandShips