-
Notifications
You must be signed in to change notification settings - Fork 37
Update to cmake 3.23.3 #253
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
Conversation
CMakeLists.txt
Outdated
| string(STRIP "${GLIBC_MINOR_}" GLIBC_MINOR) | ||
| if("${GLIBC_MAJOR}.${GLIBC_MINOR}" VERSION_LESS "2.12") | ||
| set(UseCustomLibUV ON) | ||
| # set(UseCustomLibUV ON) |
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.
The UseCustomLibUV code path is still there. It could probably be cleaned up ?
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.
now cleaned up
| # Note: This is a bare exception that re-raises so that we don't interfere | ||
| # with anything the installation machinery might want to do. Because we | ||
| # print this for any exception this msg can appear (e.g. in verbose logs) | ||
| # even if there's no failure. For example, SetupRequirementsError is raised | ||
| # during PEP517 building and prints this text. setuptools raises SystemExit | ||
| # when compilation fails right now, but it's possible this isn't stable | ||
| # or a public API commitment so we'll remain ultra conservative. | ||
| import platform | ||
| try: | ||
| import pkg_resources | ||
| except ImportError: | ||
| pass | ||
|
|
||
| print( | ||
| """ | ||
| =============================DEBUG ASSISTANCE============================= | ||
| If you are seeing a compilation error please try the following steps to | ||
| successfully install cryptography: | ||
| 1) Upgrade to the latest pip and try again. This will fix errors for most | ||
| users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip | ||
| 2) If on Linux, with glibc < 2.12, you can set PIP_ONLY_BINARY=cmake in | ||
| order to retrieve the last manylinux1 compatible wheel. | ||
| 3) If on Linux, with glibc < 2.12, you can cap "cmake<3.23" in your | ||
| requirements in order to retrieve the last manylinux1 compatible wheel. | ||
| 4) Open an issue with the debug information that follows at | ||
| https://github.com/scikit-build/cmake-python-distributions/issues | ||
| """ | ||
| ) | ||
| print(" Python: %s" % '.'.join(str(v) for v in sys.version_info[:3])) | ||
| print(" platform: %s" % platform.platform()) | ||
| if sys.platform.startswith("linux"): | ||
| try: | ||
| print(" glibc: %s" % os.confstr("CS_GNU_LIBC_VERSION")) | ||
| except: | ||
| try: | ||
| import ctypes | ||
| process_namespace = ctypes.CDLL(None) | ||
| gnu_get_libc_version = process_namespace.gnu_get_libc_version | ||
| gnu_get_libc_version.restype = ctypes.c_char_p | ||
| glibc_version = gnu_get_libc_version() | ||
| if not isinstance(glibc_version, str): | ||
| glibc_version = glibc_version.decode("ascii") | ||
| print(" glibc: %s" % glibc_version) | ||
| except: | ||
| pass | ||
| if sys.platform.startswith("darwin"): | ||
| try: | ||
| macos_ver = subprocess.check_output( | ||
| [ | ||
| sys.executable, | ||
| "-sS", | ||
| "-c", | ||
| "import platform; print(platform.mac_ver()[0])", | ||
| ], | ||
| universal_newlines=True, | ||
| env={"SYSTEM_VERSION_COMPAT": "0"}, | ||
| ).strip() | ||
| print(" macos: %s" % macos_ver) | ||
| except: | ||
| try: | ||
| print(" macos: %s" % platform.mac_ver()[0]) | ||
| except: | ||
| pass | ||
| print(" machine: %s" % platform.machine()) | ||
| print(" bits: %d" % (64 if sys.maxsize > 2**32 else 32)) | ||
| for dist in ["pip", "setuptools", "scikit-build"]: | ||
| try: | ||
| version = pkg_resources.get_distribution(dist).version | ||
| except pkg_resources.DistributionNotFound: | ||
| version = "n/a" | ||
| print(" {}: {}".format(dist, version)) | ||
| for key in ["PEP517_BUILD_BACKEND"]: | ||
| if key in os.environ: | ||
| print(" {}={}".format(key, os.environ[key])) | ||
| print( | ||
| """\ | ||
| =============================DEBUG ASSISTANCE============================= | ||
| """ | ||
| ) | ||
| raise |
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.
This mostly comes from cryptography with a bit of rework on the information being dumped.
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.
scikit-build-core can provide a similar dump I think, with a configurable message. I'll keep it in mind when designing it.
54db4a6 to
9e742fe
Compare
|
The actual message that gets printed on manylinux1 can be seen in this action run. Here are the stats for last week glibc focused only:
manylinux focused:
|
9940f0d to
02510da
Compare
|
The problem is that every manylinux1 usage will break1 when this gets merged. That's 17k users, or 11% of our users according to the above numbers. Only 0.26% actually are stuck on old systems (and I'd rather bet they are mostly building manuylinux1 wheels too), the others are due to using the old pip version packaged on their system; but still, that's a lot of breakage. One idea could be to drop Python 2 support. That would keep 2.7 users happy. But a lot of them are on 3.6, maybe drop that too? It's irritating because we trivially can support those versions, but not the old Pip's they tend to have. I guess I'd be biased to a breakage a user can fix with a limit / pin over making valid usage break (with an artificial lower limit from us). I guess there may not be much we can do about it, save to add a note to the readme to cap <3.23 if you need to support manylinux1 (usually due to pip version). Footnotes |
|
I like the error message, quite helpful! |
02510da to
1955c08
Compare
|
Hi there! |
e480970 to
caf051d
Compare
cmake >= 3.23 requires a version of libuv that can't be built on manylinux1. This drops manylinux1 wheels in favor of manylinux2010 wheels.
No need to build a custom libuv anymore, remove dead code.
a568eba to
5c3dc76
Compare
same here, I don't want to introduce an artificial limit on cmake when 95% of breakage can be solved by a pip update. For the other 5% of breakage, users can pin.
I don't think we need to wait for that (and I'm not clear on how to implement that either). The only thing that might be worth adding is to repeat points 1, 2 & 3 of the debug message in the README file |
|
I think it's time to do this, and see how much trouble it causes. We can still go back and release I do want to get this out before 2.24 lands, which looks like it could happen any day, and before manylinux2010 is dropped, which is something like tomorrow. ;) |
cmake >= 3.23 requires a version of libuv that can't be built on manylinux1.
This drops manylinux1 wheels in favor of manylinux2010 wheels.