-
-
Notifications
You must be signed in to change notification settings - Fork 12.5k
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
pyoxidizer 0.24.0 #136910
pyoxidizer 0.24.0 #136910
Conversation
7daf7a9
to
d6e592d
Compare
d6e592d
to
691568d
Compare
f33eb42
to
93dab29
Compare
The underlying problem is described in python/cpython#97897 -- $ curl -fsL https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.10.9+20221220-aarch64-apple-darwin-pgo-full.tar.zst | tar --use-compress-program=`which unzstd` -x
$ head python/PYTHON.json
{
"apple_sdk_canonical_name": "macosx13.1",
"apple_sdk_deployment_target": "11.0",
"apple_sdk_platform": "macosx",
"apple_sdk_version": "13.1",
"build_info": {
"core": {
"links": [
{
"name": "dl",
$ grep -E 'HAVE_MK(FIFOAT|NODAT)' python/PYTHON.json
"HAVE_MKFIFOAT": "1",
"HAVE_MKNODAT": "1",
$ nm python/install/lib/libpython3.10.dylib | grep -E 'mk(fifoat|nodat)'
U _mkfifoat
U _mknodat
00000000002b1a28 t _probe_mkfifoat
00000000002b1a54 t _probe_mknodat When you do so with an SDK where $ cat test.c
#include <sys/types.h>
#include <sys/stat.h>
int main() {
mkfifoat(42, "/dummy/argument", 0777);
mknodat(42, "/dummy/argument", 0777, 42);
}
$ /usr/bin/cc test.c -target aarch64-apple-macos11
test.c:4:3: warning: 'mkfifoat' is only available on macOS 13.0 or newer [-Wunguarded-availability-new]
mkfifoat(42, "/dummy/argument", 0777);
^~~~~~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stat.h:394:9: note: 'mkfifoat' has been marked as being introduced in macOS 13.0 here, but the deployment target is macOS 11.0.0
int mkfifoat(int, const char *, mode_t) __API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), watchos(9.0));
^
test.c:4:3: note: enclose 'mkfifoat' in a __builtin_available check to silence this warning
mkfifoat(42, "/dummy/argument", 0777);
^~~~~~~~
test.c:5:3: warning: 'mknodat' is only available on macOS 13.0 or newer [-Wunguarded-availability-new]
mknodat(42, "/dummy/argument", 0777, 42);
^~~~~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stat.h:395:9: note: 'mknodat' has been marked as being introduced in macOS 13.0 here, but the deployment target is macOS 11.0.0
int mknodat(int, const char *, mode_t, dev_t) __API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), watchos(9.0));
^
test.c:5:3: note: enclose 'mknodat' in a __builtin_available check to silence this warning
mknodat(42, "/dummy/argument", 0777, 42);
^~~~~~~
2 warnings generated. So the symbols slipped into the Python binaries even though the target may not have it. The pre-built x86_64 binaries, however, did not have this issue, because the 11.1 SDK was used: $ curl -fsL https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.10.9+20221220-x86_64-apple-darwin-lto-full.tar.zst | tar --use-compress-program=`which unzstd` -x
$ head python/PYTHON.json
{
"apple_sdk_canonical_name": "macosx11.1",
"apple_sdk_deployment_target": "10.9",
"apple_sdk_platform": "macosx",
"apple_sdk_version": "11.1",
"build_info": {
"core": {
"links": [
{
"name": "dl",
$ grep -E 'HAVE_MK(FIFOAT|NODAT)' python/PYTHON.json
"HAVE_MKFIFOAT": "0",
"HAVE_MKNODAT": "0",
$ nm python/install/lib/libpython3.10.dylib | grep -E 'mk(fifoat|nodat)'
[empty] So, the test failure should be unrelated to pyoxidizer. And we can probably work around that with the default Python 3.9 distribution, which explicitly disables these two symbols; or non-PGO builds, which are cross-built for arm64 on x86_64 (using GitHub-hosted runners) using the 11.3 SDK. indygreg/python-build-standalone#161 proposed to disable |
b76e8e8
to
e6db617
Compare
Co-authored-by: Ruoyu Zhong <[email protected]>
e6db617
to
f973be4
Compare
🤖 An automated task has requested bottles to be published to this PR. |
brew install --build-from-source <formula>
, where<formula>
is the name of the formula you're submitting?brew test <formula>
, where<formula>
is the name of the formula you're submitting?brew audit --strict <formula>
(after doingbrew install --build-from-source <formula>
)? If this is a new formula, does it passbrew audit --new <formula>
?previously