fixed broken v1 networking

This commit is contained in:
Eric 2023-09-06 11:44:12 -07:00
parent 183c5abf60
commit cd098866ea
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
12 changed files with 447 additions and 315 deletions

288
.efrocachemap generated
View File

@ -2594,14 +2594,14 @@
"build/assets/pylib-android/_pyio.py": "a6e88d66fbca88b13213cdd2177390b8",
"build/assets/pylib-android/_sitebuiltins.py": "8b5e3f6e73917962fa014ad2c4a55e61",
"build/assets/pylib-android/_strptime.py": "ff699c3f7647db7621bb88c43cc282d3",
"build/assets/pylib-android/_sysconfigdata__linux_aarch64-linux-android.py": "3d0400e723f4dad156512d4229270993",
"build/assets/pylib-android/_sysconfigdata__linux_arm-linux-androideabi.py": "506b3106270f7f7ae33e195d1f5caa55",
"build/assets/pylib-android/_sysconfigdata__linux_i686-linux-android.py": "f38a2b60f9cbf0524885e5c1c99164c1",
"build/assets/pylib-android/_sysconfigdata__linux_x86_64-linux-android.py": "d67f056bcaf3d491d68254c206067d19",
"build/assets/pylib-android/_sysconfigdata_d_linux_aarch64-linux-android.py": "e4322948686ce1d4b37a1a3f8000e2dc",
"build/assets/pylib-android/_sysconfigdata_d_linux_arm-linux-androideabi.py": "a4d14baa8cfc0019363742349449942b",
"build/assets/pylib-android/_sysconfigdata_d_linux_i686-linux-android.py": "2ad6c96209fd69a4eef4a7d730cd16e8",
"build/assets/pylib-android/_sysconfigdata_d_linux_x86_64-linux-android.py": "bf6ce8f2788661352014e973351f35cf",
"build/assets/pylib-android/_sysconfigdata__linux_aarch64-linux-android.py": "cb9a77b04173c8776365999b57186e36",
"build/assets/pylib-android/_sysconfigdata__linux_arm-linux-androideabi.py": "6d50596ec7f4858a0c6a5edefde21f7a",
"build/assets/pylib-android/_sysconfigdata__linux_i686-linux-android.py": "bf9358a2243aa7884b8e80d85c969fa5",
"build/assets/pylib-android/_sysconfigdata__linux_x86_64-linux-android.py": "45eee0efbc2441535b94a8ad5acf4d2e",
"build/assets/pylib-android/_sysconfigdata_d_linux_aarch64-linux-android.py": "f8ff271cf6df0b5b4d46d9c548abb84e",
"build/assets/pylib-android/_sysconfigdata_d_linux_arm-linux-androideabi.py": "da171b290c06a34d6a5cfbb296c22c34",
"build/assets/pylib-android/_sysconfigdata_d_linux_i686-linux-android.py": "dde2516b5ac29412dfbebaa7b3de0d0d",
"build/assets/pylib-android/_sysconfigdata_d_linux_x86_64-linux-android.py": "7df452144c6630afb96951487c1257a0",
"build/assets/pylib-android/_threading_local.py": "4a9688e3987d7d692db46feb9214945e",
"build/assets/pylib-android/_weakrefset.py": "e4fa8532ace46dfbc35149c41ea497f7",
"build/assets/pylib-android/abc.py": "a0daa1ed187eee8690c1e8438b97da90",
@ -2612,13 +2612,13 @@
"build/assets/pylib-android/asynchat.py": "2ef3a0ce322332fabbf8fad4e133c6a3",
"build/assets/pylib-android/asyncio/__init__.py": "edf0e79e2b8b85c08f09fd14668e4822",
"build/assets/pylib-android/asyncio/__main__.py": "8e391b47f448ad922dc2614dbd93011e",
"build/assets/pylib-android/asyncio/base_events.py": "9f7758e7f013043a50c693e5e8d068b5",
"build/assets/pylib-android/asyncio/base_events.py": "8494c7bc5f5fe98fd64d882ed4cc4722",
"build/assets/pylib-android/asyncio/base_futures.py": "d2502e045d28ea562e1a82ddb162b4f0",
"build/assets/pylib-android/asyncio/base_subprocess.py": "8a805e04a2911b2d8e297f0029def4b1",
"build/assets/pylib-android/asyncio/base_tasks.py": "f4388c294f4cf805a6f1e4ed12a5a3aa",
"build/assets/pylib-android/asyncio/constants.py": "13f733940667d1f81cf83adc6e5b2a5b",
"build/assets/pylib-android/asyncio/coroutines.py": "fb3e431df7d09ed38d7fa76385e9bb52",
"build/assets/pylib-android/asyncio/events.py": "07c04d04b5e255fc5b79698715f4dc4e",
"build/assets/pylib-android/asyncio/events.py": "3063d6b0d1fcbb50f8142f8ce58531fb",
"build/assets/pylib-android/asyncio/exceptions.py": "db8d3794a37d50a433d13c1eacf0d333",
"build/assets/pylib-android/asyncio/format_helpers.py": "b0447581eff1bc759da16d512155c72a",
"build/assets/pylib-android/asyncio/futures.py": "297232981f201edac774ec3a49a0845b",
@ -2632,7 +2632,7 @@
"build/assets/pylib-android/asyncio/selector_events.py": "a108fbd3a49f967da245f39cebf7694e",
"build/assets/pylib-android/asyncio/sslproto.py": "2ec1b21e523055147d94c8c634154aab",
"build/assets/pylib-android/asyncio/staggered.py": "f5056f0a56b73b477a9fa65e71145366",
"build/assets/pylib-android/asyncio/streams.py": "e9c609b92b4e9bd3383cf4004c6186c6",
"build/assets/pylib-android/asyncio/streams.py": "f00ddd2b2fd74554ae1d3088bd9d2bfd",
"build/assets/pylib-android/asyncio/subprocess.py": "edb8d98278300b6c99f36cd08643c743",
"build/assets/pylib-android/asyncio/taskgroups.py": "5162e5b1806d9b647383d34ba1b21b56",
"build/assets/pylib-android/asyncio/tasks.py": "234550593cd4928e6ee2c9591b6928ca",
@ -2657,16 +2657,16 @@
"build/assets/pylib-android/code.py": "5d47099984013b933c96b02ef16981b8",
"build/assets/pylib-android/codecs.py": "6fac5e2969e98ceaba92d3b8e42cb2ec",
"build/assets/pylib-android/codeop.py": "d375467fb29fccd43ab94d15a2e63085",
"build/assets/pylib-android/collections/__init__.py": "44999193e5c3d379e3feaa50ddf5147d",
"build/assets/pylib-android/collections/__init__.py": "dcffbb6ee2cadd0c05ad22f2ef41f89b",
"build/assets/pylib-android/collections/abc.py": "15f410d3821352033a90a04539c99060",
"build/assets/pylib-android/colorsys.py": "1452923f15188287bc677e7128cb6b31",
"build/assets/pylib-android/colorsys.py": "ca8f117785bf7606c3919ef0f4b828ae",
"build/assets/pylib-android/compileall.py": "eb3f6d92f020ebec3f3f5bffc8a4dd4b",
"build/assets/pylib-android/concurrent/__init__.py": "aa990702e8f3a7af205efb5ae23a7c85",
"build/assets/pylib-android/concurrent/futures/__init__.py": "3e46fadb9de9c995c37dca4311641d6a",
"build/assets/pylib-android/concurrent/futures/_base.py": "a1cd37aea6fe0efff1bc00a39543609e",
"build/assets/pylib-android/concurrent/futures/process.py": "4725abe3e780075ac264da12a1db5714",
"build/assets/pylib-android/concurrent/futures/process.py": "a44e8618e158f8f351dafcb566a02544",
"build/assets/pylib-android/concurrent/futures/thread.py": "e63753b8201f1392dbebc84a15054a13",
"build/assets/pylib-android/configparser.py": "a6b19c20d70861eea310e5504621e562",
"build/assets/pylib-android/configparser.py": "914afd2b2cec90bbca0b94fd176b5176",
"build/assets/pylib-android/contextlib.py": "6f52eac914e438ef54407760def8305f",
"build/assets/pylib-android/contextvars.py": "ddf2ae9be02601bd8fc9c2cb8a51c04e",
"build/assets/pylib-android/copy.py": "e7c43b1ec5f81ef36486ad8b49ed7f74",
@ -2692,33 +2692,33 @@
"build/assets/pylib-android/decimal.py": "f57d255d45b5d1d7d8e13c41a283c3e4",
"build/assets/pylib-android/difflib.py": "6b3c8fd541b2b8d0320727025cd25275",
"build/assets/pylib-android/dis.py": "cecdc0c02aa3d70a7f550e60ebc9b3ba",
"build/assets/pylib-android/doctest.py": "eb60b2b39e0deb976ecbc69a8c2392ee",
"build/assets/pylib-android/email/__init__.py": "7ebfab5c51b6bc698aca92ad4903346c",
"build/assets/pylib-android/doctest.py": "8a18c35f3aa66130955a6a3bf1bfead4",
"build/assets/pylib-android/email/__init__.py": "4ff603eeeb4ce0302c8bd1b220fc5e13",
"build/assets/pylib-android/email/_encoded_words.py": "d7b77501689dd1ce32da789b46264a6a",
"build/assets/pylib-android/email/_header_value_parser.py": "982718787815084548747d4b078902e6",
"build/assets/pylib-android/email/_parseaddr.py": "a6d2999aeed17f060be8797e761a01aa",
"build/assets/pylib-android/email/_policybase.py": "09b0c21693ac080c52c52f5daab616aa",
"build/assets/pylib-android/email/base64mime.py": "a1ac31203212f2963b4c07629a3b919c",
"build/assets/pylib-android/email/charset.py": "7bb5baa9bbd627097d1f32f1a3b503c8",
"build/assets/pylib-android/email/base64mime.py": "d3e4fc07d04833487677dd2a888c3826",
"build/assets/pylib-android/email/charset.py": "1d101758464f75bf2b93fb17fec9542f",
"build/assets/pylib-android/email/contentmanager.py": "e88780ef1d37a11ff216060f740f2572",
"build/assets/pylib-android/email/encoders.py": "f1c581f5c146c31168f6ff4a2a6591f7",
"build/assets/pylib-android/email/encoders.py": "d401cf76e52f0205393dd8bb1ae28b46",
"build/assets/pylib-android/email/errors.py": "afd6b5e8f8baa701baaae14e736ddca0",
"build/assets/pylib-android/email/feedparser.py": "88d35aee820e997f40f6c28cf930979b",
"build/assets/pylib-android/email/generator.py": "e0cc1d119427110da5de96a4e7b6bb5b",
"build/assets/pylib-android/email/header.py": "f72b2b6140c11b89c0ae3f7b24b0a861",
"build/assets/pylib-android/email/feedparser.py": "623788306ab3b5d75df1145484045edc",
"build/assets/pylib-android/email/generator.py": "073bac3c4874c3ab74d4e6a9e9317fb2",
"build/assets/pylib-android/email/header.py": "09923b7b77bf91bed41a71b6e3c6e4d9",
"build/assets/pylib-android/email/headerregistry.py": "dfd48f9c41454d5bc2355cb1762fb869",
"build/assets/pylib-android/email/iterators.py": "9b67a6ab50d2bdbdbc4588e10ea1c64a",
"build/assets/pylib-android/email/iterators.py": "752ece28a18545e70fa67a7cf2fe3ef3",
"build/assets/pylib-android/email/message.py": "5b198b0cf1095ba5a3faccdd28310f28",
"build/assets/pylib-android/email/mime/__init__.py": "340c83beff7dcff8f5c7b87cd43cedaf",
"build/assets/pylib-android/email/mime/application.py": "4ce678512f30cac9fd95993186d2eef7",
"build/assets/pylib-android/email/mime/audio.py": "4073e45bda9524e3cbe29374951fdc16",
"build/assets/pylib-android/email/mime/base.py": "e4ac5d17e69e73a2cb4cc873474991c2",
"build/assets/pylib-android/email/mime/base.py": "3b9c795fe3b6e9d3f7b6dda3e1c8e1ea",
"build/assets/pylib-android/email/mime/image.py": "6322b8269e8efe61d3ead57f2aa6cdef",
"build/assets/pylib-android/email/mime/message.py": "72935a387c0c12840359c2b0b8f588ac",
"build/assets/pylib-android/email/mime/multipart.py": "8157be08dbd84825bf2abaefa39dc3a0",
"build/assets/pylib-android/email/mime/nonmultipart.py": "1187993d0366b808a3afea751cd37d81",
"build/assets/pylib-android/email/mime/text.py": "eb387b8f3a686bc7587b860782761a52",
"build/assets/pylib-android/email/parser.py": "19466563eaac6984c48f734a8f2cf3fc",
"build/assets/pylib-android/email/mime/message.py": "0bf18b4f07a68b646e45b10d7e31c6c7",
"build/assets/pylib-android/email/mime/multipart.py": "69577df977b7b36f5e175661dd7095bc",
"build/assets/pylib-android/email/mime/nonmultipart.py": "a96d8d31156781a7511cec04e46a95f6",
"build/assets/pylib-android/email/mime/text.py": "21928b3afec29cb55ae1ae7682b8fbe1",
"build/assets/pylib-android/email/parser.py": "f0cdd5c8491cbff0948672784fca1e8f",
"build/assets/pylib-android/email/policy.py": "69a5f116b77b6a70e7761309c5592557",
"build/assets/pylib-android/email/quoprimime.py": "c5e54c3f0e70d55145517382d4455765",
"build/assets/pylib-android/email/utils.py": "145a606aaa3cbad40c68054ebbf4efa6",
@ -2844,7 +2844,7 @@
"build/assets/pylib-android/encodings/utf_8_sig.py": "8f3542863ef311d8b970a37c0d66b0de",
"build/assets/pylib-android/encodings/uu_codec.py": "4ef8a65413574c017a96b97fc1638ba6",
"build/assets/pylib-android/encodings/zlib_codec.py": "1388fb103fdf395451bfc8a2d60933a9",
"build/assets/pylib-android/enum.py": "62a341268ae3fef3c4affc625c2e68d2",
"build/assets/pylib-android/enum.py": "73b214a43ceef88aff7098b83623ed09",
"build/assets/pylib-android/filecmp.py": "7648fdc6d0fc8bae7429d5e4081cf353",
"build/assets/pylib-android/fileinput.py": "c3def1041e6b12dd5f1906c9dbbd1101",
"build/assets/pylib-android/fnmatch.py": "a1bc67633695d4defd4c0886428c5363",
@ -2854,7 +2854,7 @@
"build/assets/pylib-android/genericpath.py": "5e991b8dd73dd4a05571b73ac532988a",
"build/assets/pylib-android/getopt.py": "d630bf22334ba037143a3dca69088ee1",
"build/assets/pylib-android/getpass.py": "c19e383e949c147a30ecc554b8598e91",
"build/assets/pylib-android/gettext.py": "6e24985f9e985660751c70436cfefa75",
"build/assets/pylib-android/gettext.py": "245a4d4c7ba79febb5423a49ebdc019a",
"build/assets/pylib-android/glob.py": "0607521b67b32c59f30a9e1b238d5c1a",
"build/assets/pylib-android/graphlib.py": "156d50d67d92c1917cf910dfce9cecc9",
"build/assets/pylib-android/gzip.py": "296ba9c497e9c0cc4a97b82dcb02d780",
@ -2908,7 +2908,7 @@
"build/assets/pylib-android/locale.py": "42f3f48fed6a16da350de46aa85b446a",
"build/assets/pylib-android/logging/__init__.py": "6e5d6f80af880857f5eb29b038512c6d",
"build/assets/pylib-android/logging/config.py": "f811372496ec5ae34e8047f0280686be",
"build/assets/pylib-android/logging/handlers.py": "ab3881444783ab84f3859e022b356989",
"build/assets/pylib-android/logging/handlers.py": "55d604de088570f8bd5edb62f64682fb",
"build/assets/pylib-android/lzma.py": "d7388640aa6af4c64fdc821471930f57",
"build/assets/pylib-android/mailbox.py": "d9db3c7510e38484ade3d88446b8f231",
"build/assets/pylib-android/mailcap.py": "c61462a36d20d79a0f4e37717f957bf6",
@ -2916,7 +2916,7 @@
"build/assets/pylib-android/modulefinder.py": "3fc074c018de1dd15ab2e309be199dea",
"build/assets/pylib-android/netrc.py": "9a869ca83b316ab5a19a0a2cf22efaf3",
"build/assets/pylib-android/nntplib.py": "4926aa991bd4b96b9318d6242135abf9",
"build/assets/pylib-android/ntpath.py": "57eacdf2824f306ae2b03d5818294c94",
"build/assets/pylib-android/ntpath.py": "d53ff21dc0ef0cd939cc865ae1fb011e",
"build/assets/pylib-android/nturl2path.py": "937624c4b6f213b652addea66296ccc4",
"build/assets/pylib-android/numbers.py": "0cdcb42317422500d514ec67d496a06e",
"build/assets/pylib-android/opcode.py": "18cba8b1d09ec6fcccfe20e5b13db980",
@ -2939,7 +2939,7 @@
"build/assets/pylib-android/pty.py": "c97b51147360cf7fd92c364ab8068a2b",
"build/assets/pylib-android/py_compile.py": "772b429c589d2e005e8bd79b12f55a92",
"build/assets/pylib-android/pyclbr.py": "bf1989a2c73108005e874a640760476a",
"build/assets/pylib-android/pydoc.py": "0f8a4b2f4a9d23e429c01660a4290bd8",
"build/assets/pylib-android/pydoc.py": "b17a6d227db749f91434253248fa6384",
"build/assets/pylib-android/queue.py": "1e90a0b87965a2642946621db162f441",
"build/assets/pylib-android/quopri.py": "5d58010dd1f96b37a167c6d305372881",
"build/assets/pylib-android/random.py": "9ec8461bc4d5b072e3fc1f65aafccf2f",
@ -2947,7 +2947,7 @@
"build/assets/pylib-android/re/_casefix.py": "106514c6c6bb479fa2691423a61c8938",
"build/assets/pylib-android/re/_compiler.py": "d38bbefe652b6bfff2bb30459436f112",
"build/assets/pylib-android/re/_constants.py": "99b8d7dba7fb50be8fb435dcefcd2989",
"build/assets/pylib-android/re/_parser.py": "df712815c6dba2e12c1875ca1bc02400",
"build/assets/pylib-android/re/_parser.py": "1afe14ae4219eadb32ba0fd3ac1b921a",
"build/assets/pylib-android/reprlib.py": "a129eeeaf66fbd9591d2da242ce23a1a",
"build/assets/pylib-android/rlcompleter.py": "9e57bb7030b57c4ec82eba9e09852414",
"build/assets/pylib-android/runpy.py": "3a2dd98314791c7e36b6bd3585f6ad82",
@ -2956,7 +2956,7 @@
"build/assets/pylib-android/selectors.py": "98e0d83849452cbc2cc1381555bd5024",
"build/assets/pylib-android/shelve.py": "3e569c07c863ecbd7f35a6c382d1785a",
"build/assets/pylib-android/shlex.py": "0873fac90a491702950816ead0e59dd0",
"build/assets/pylib-android/shutil.py": "ed25b38eacc66c9059651e6666ec1869",
"build/assets/pylib-android/shutil.py": "a5d0ee9f28244b42a06e682312d0e3fa",
"build/assets/pylib-android/signal.py": "114ef47b1798fca6f56ac8a250974b3e",
"build/assets/pylib-android/site.py": "2a99f7de2702aa8411d35acbb91fe926",
"build/assets/pylib-android/smtpd.py": "0602b6a39c4e37133303bee16c3e28a4",
@ -2970,18 +2970,18 @@
"build/assets/pylib-android/sre_compile.py": "a1784e9ccbea7d9963cab75b536b40c8",
"build/assets/pylib-android/sre_constants.py": "5c5be32a5334d9b0a848dad520746a63",
"build/assets/pylib-android/sre_parse.py": "cca15b9ab31509e6642f9d2fd4fb9d91",
"build/assets/pylib-android/ssl.py": "3c4c838c1c298d69871154e80f45cad1",
"build/assets/pylib-android/ssl.py": "ed512664b82e23aa157fc69f97df9d01",
"build/assets/pylib-android/stat.py": "185f17736cdb40bd3e7400ad8cedef84",
"build/assets/pylib-android/statistics.py": "9807c60eb942bf320ee85a2016ba4516",
"build/assets/pylib-android/string.py": "c072d3a2d0337386d3235ba72f292752",
"build/assets/pylib-android/stringprep.py": "6a5635711a838f76fee7b52537bf8b45",
"build/assets/pylib-android/struct.py": "4fd288bd6537effd1d5edbba9d44dde2",
"build/assets/pylib-android/subprocess.py": "4d6522342cab21c558e60b2f50c5cedc",
"build/assets/pylib-android/subprocess.py": "4932fae7e87da40d7661100b6871a005",
"build/assets/pylib-android/sunau.py": "a034779289fef0b2221345f40e042680",
"build/assets/pylib-android/symtable.py": "0cd4a624b2e3304664f43189ed9e3bf7",
"build/assets/pylib-android/sysconfig.py": "9ffad6cfff49bc09fe36a33a5446c59d",
"build/assets/pylib-android/tabnanny.py": "84614c63ead0ab71527cecdf3de68f1a",
"build/assets/pylib-android/tarfile.py": "a6dfd478cf3917a29020944bff1a6f2d",
"build/assets/pylib-android/tarfile.py": "e2fc4eca5c2d39b6f44b9e622a32f602",
"build/assets/pylib-android/telnetlib.py": "1a746e1fc988b9f5c12b9fd5a97c00ea",
"build/assets/pylib-android/tempfile.py": "436007fbe6821c864a53861bd73b4d43",
"build/assets/pylib-android/textwrap.py": "3eb16a40553205dc96be5cb9039f3c8c",
@ -2999,10 +2999,10 @@
"build/assets/pylib-android/tracemalloc.py": "e4d10d2bee7773566e46797a939e5cbf",
"build/assets/pylib-android/tty.py": "271c7d61005a0a3c2c0952efc60dcb6d",
"build/assets/pylib-android/types.py": "78f8942c08dbfc9c582f1bb8d5206639",
"build/assets/pylib-android/typing.py": "89e0654fda4fd2a09e93391179859cf0",
"build/assets/pylib-android/typing.py": "17aaeea16cbfdb93cb4c5b87f535e341",
"build/assets/pylib-android/urllib/__init__.py": "340c83beff7dcff8f5c7b87cd43cedaf",
"build/assets/pylib-android/urllib/error.py": "b7dde0483ff647eb87162d6e19c04fa0",
"build/assets/pylib-android/urllib/parse.py": "dc735bb3e0b069762ad988c1b55ce6e3",
"build/assets/pylib-android/urllib/parse.py": "28e09ecc3b696bae8ac5589b9cd64f63",
"build/assets/pylib-android/urllib/request.py": "09b8666fe8319542f7247bb9f8573806",
"build/assets/pylib-android/urllib/response.py": "c8537707a4b1e493c0ec4489ab523c93",
"build/assets/pylib-android/urllib/robotparser.py": "5a7616bdf398c166f953ad48c25506eb",
@ -3039,7 +3039,7 @@
"build/assets/pylib-android/xmlrpc/client.py": "8f2cad71c1c87031be073184e71aa405",
"build/assets/pylib-android/xmlrpc/server.py": "3147663bd28b952eef0e1316b94bacc6",
"build/assets/pylib-android/zipapp.py": "d92ea793f092af6383a6383678cf7b73",
"build/assets/pylib-android/zipfile.py": "2cd1a57574daf0ec6456dc2d0858952d",
"build/assets/pylib-android/zipfile.py": "00671f5cdb9a5ad667efa1dccf0129d3",
"build/assets/pylib-android/zipimport.py": "6d3b32a7258f670eb71daf3a8492a4f1",
"build/assets/pylib-android/zoneinfo/__init__.py": "0df5e8a66015e2fe2d77f2e4a5dea1ff",
"build/assets/pylib-android/zoneinfo/_common.py": "5b52bdac4156dcbac96743fa99468bf2",
@ -3060,45 +3060,45 @@
"build/assets/pylib-apple/_pyio.py": "a6e88d66fbca88b13213cdd2177390b8",
"build/assets/pylib-apple/_sitebuiltins.py": "8b5e3f6e73917962fa014ad2c4a55e61",
"build/assets/pylib-apple/_strptime.py": "ff699c3f7647db7621bb88c43cc282d3",
"build/assets/pylib-apple/_sysconfigdata__darwin_darwin.py": "1deb8b4ea385ac52e2fc30eb5b7486d9",
"build/assets/pylib-apple/_sysconfigdata__darwin_darwin.py": "851eda9bce1b25dcba0ed272da9a25c1",
"build/assets/pylib-apple/_sysconfigdata__ios_iphoneos.py": "5bfced73a12261ecc310bffce6786cd2",
"build/assets/pylib-apple/_sysconfigdata__ios_iphoneos_arm64.py": "13cdaf0612cecdfdea79507be605b5fa",
"build/assets/pylib-apple/_sysconfigdata__ios_iphoneos_arm64.py": "b323d9e0ce8d23039fe55a55a85a7f03",
"build/assets/pylib-apple/_sysconfigdata__ios_iphonesimulator.py": "f9c955d9c5c9cf5a0a026d084a1f9519",
"build/assets/pylib-apple/_sysconfigdata__ios_iphonesimulator_arm64.py": "1fd694958588a382f0e872584c66123e",
"build/assets/pylib-apple/_sysconfigdata__ios_iphonesimulator_x86_64.py": "0be4ff9720b1366519a2acc44bde9564",
"build/assets/pylib-apple/_sysconfigdata__ios_iphonesimulator_arm64.py": "a546cdaf5cd7c96b7494ea604ba7ce43",
"build/assets/pylib-apple/_sysconfigdata__ios_iphonesimulator_x86_64.py": "56abcd261de3ab910cf340623328a7c0",
"build/assets/pylib-apple/_sysconfigdata__tvos_appletvos.py": "6882eb86d192411b9e85c8b59252c719",
"build/assets/pylib-apple/_sysconfigdata__tvos_appletvos_arm64.py": "798569299d9edde6167a23741c9239fb",
"build/assets/pylib-apple/_sysconfigdata__tvos_appletvos_arm64.py": "aca63835009f6ddd207d25fac7af21f9",
"build/assets/pylib-apple/_sysconfigdata__tvos_appletvsimulator.py": "a3c88367fb568e377ef2a72f0e9c2394",
"build/assets/pylib-apple/_sysconfigdata__tvos_appletvsimulator_arm64.py": "bf5e3b80c0bd0f6e8d00372d4f6f1ae5",
"build/assets/pylib-apple/_sysconfigdata__tvos_appletvsimulator_x86_64.py": "4828cee78f35df83a94a308919080918",
"build/assets/pylib-apple/_sysconfigdata_d_darwin_darwin.py": "9eb91d9cd5328d59ceb9047d210beaba",
"build/assets/pylib-apple/_sysconfigdata__tvos_appletvsimulator_arm64.py": "f3fbbf1e8541363be49ddfe5b7f42a5c",
"build/assets/pylib-apple/_sysconfigdata__tvos_appletvsimulator_x86_64.py": "8af232f8b1f956a2ec0bad2dc44f1f59",
"build/assets/pylib-apple/_sysconfigdata_d_darwin_darwin.py": "7b82990a773d8bfdc56a4d0587e767dc",
"build/assets/pylib-apple/_sysconfigdata_d_ios_iphoneos.py": "5bfced73a12261ecc310bffce6786cd2",
"build/assets/pylib-apple/_sysconfigdata_d_ios_iphoneos_arm64.py": "11622b9e1d51ef4a4225099acb1e8200",
"build/assets/pylib-apple/_sysconfigdata_d_ios_iphoneos_arm64.py": "8d5c7003e7ebc454dc0919524c643b81",
"build/assets/pylib-apple/_sysconfigdata_d_ios_iphonesimulator.py": "f9c955d9c5c9cf5a0a026d084a1f9519",
"build/assets/pylib-apple/_sysconfigdata_d_ios_iphonesimulator_arm64.py": "54a8feabddfe2d0cc7a28db1d4ebd881",
"build/assets/pylib-apple/_sysconfigdata_d_ios_iphonesimulator_x86_64.py": "f86a4410017799af3c0297cd8786058a",
"build/assets/pylib-apple/_sysconfigdata_d_ios_iphonesimulator_arm64.py": "4fcbe87958cfa21d5bba4fc96dd8514e",
"build/assets/pylib-apple/_sysconfigdata_d_ios_iphonesimulator_x86_64.py": "038f6c0ae9ebd4585ba3d71ac9a6f46b",
"build/assets/pylib-apple/_sysconfigdata_d_tvos_appletvos.py": "6882eb86d192411b9e85c8b59252c719",
"build/assets/pylib-apple/_sysconfigdata_d_tvos_appletvos_arm64.py": "72e93b38c02e8d9cae4fbf5fb66ebf3d",
"build/assets/pylib-apple/_sysconfigdata_d_tvos_appletvos_arm64.py": "370c439fe07fbf0d11a00654eee2cab0",
"build/assets/pylib-apple/_sysconfigdata_d_tvos_appletvsimulator.py": "a3c88367fb568e377ef2a72f0e9c2394",
"build/assets/pylib-apple/_sysconfigdata_d_tvos_appletvsimulator_arm64.py": "a395bfca36c03e6e77af0c0ca58c148d",
"build/assets/pylib-apple/_sysconfigdata_d_tvos_appletvsimulator_x86_64.py": "77074e38c080ebf0f969c62f5dab628e",
"build/assets/pylib-apple/_sysconfigdata_d_tvos_appletvsimulator_arm64.py": "35c66716d8e2d2c93a4fffd7fd6143e2",
"build/assets/pylib-apple/_sysconfigdata_d_tvos_appletvsimulator_x86_64.py": "3b59c71925adf541ceaccb165cd57067",
"build/assets/pylib-apple/_threading_local.py": "4a9688e3987d7d692db46feb9214945e",
"build/assets/pylib-apple/_weakrefset.py": "e4fa8532ace46dfbc35149c41ea497f7",
"build/assets/pylib-apple/abc.py": "a9661fcfe6c12211ec1b16391247947c",
"build/assets/pylib-apple/abc.py": "a0daa1ed187eee8690c1e8438b97da90",
"build/assets/pylib-apple/aifc.py": "1b9134c72b1e542417bee5bf345a1d0a",
"build/assets/pylib-apple/antigravity.py": "6d56bedf73be574cb6d7117caf5d334c",
"build/assets/pylib-apple/argparse.py": "2dc7f53a0390532cfabb416e25e72035",
"build/assets/pylib-apple/argparse.py": "e22cac9b12c09592929d57eb982fc554",
"build/assets/pylib-apple/ast.py": "3aaa1b0e56b21b28155707c54bc225a8",
"build/assets/pylib-apple/asynchat.py": "2ef3a0ce322332fabbf8fad4e133c6a3",
"build/assets/pylib-apple/asyncio/__init__.py": "edf0e79e2b8b85c08f09fd14668e4822",
"build/assets/pylib-apple/asyncio/__main__.py": "8e391b47f448ad922dc2614dbd93011e",
"build/assets/pylib-apple/asyncio/base_events.py": "9f7758e7f013043a50c693e5e8d068b5",
"build/assets/pylib-apple/asyncio/base_events.py": "8494c7bc5f5fe98fd64d882ed4cc4722",
"build/assets/pylib-apple/asyncio/base_futures.py": "d2502e045d28ea562e1a82ddb162b4f0",
"build/assets/pylib-apple/asyncio/base_subprocess.py": "8a805e04a2911b2d8e297f0029def4b1",
"build/assets/pylib-apple/asyncio/base_tasks.py": "f4388c294f4cf805a6f1e4ed12a5a3aa",
"build/assets/pylib-apple/asyncio/constants.py": "13f733940667d1f81cf83adc6e5b2a5b",
"build/assets/pylib-apple/asyncio/coroutines.py": "fb3e431df7d09ed38d7fa76385e9bb52",
"build/assets/pylib-apple/asyncio/events.py": "07c04d04b5e255fc5b79698715f4dc4e",
"build/assets/pylib-apple/asyncio/events.py": "3063d6b0d1fcbb50f8142f8ce58531fb",
"build/assets/pylib-apple/asyncio/exceptions.py": "db8d3794a37d50a433d13c1eacf0d333",
"build/assets/pylib-apple/asyncio/format_helpers.py": "b0447581eff1bc759da16d512155c72a",
"build/assets/pylib-apple/asyncio/futures.py": "297232981f201edac774ec3a49a0845b",
@ -3109,26 +3109,26 @@
"build/assets/pylib-apple/asyncio/protocols.py": "b8aa105b79d24f88c7a2c2cdbc8e7814",
"build/assets/pylib-apple/asyncio/queues.py": "f63be54780730992e2377c51ac373126",
"build/assets/pylib-apple/asyncio/runners.py": "f184754fba961e4ea6e77a9aec633afc",
"build/assets/pylib-apple/asyncio/selector_events.py": "f7ee7809d8b807ccda22db7870f508ac",
"build/assets/pylib-apple/asyncio/sslproto.py": "3a639532c92e12c9bf06fd131a6fc419",
"build/assets/pylib-apple/asyncio/selector_events.py": "a108fbd3a49f967da245f39cebf7694e",
"build/assets/pylib-apple/asyncio/sslproto.py": "2ec1b21e523055147d94c8c634154aab",
"build/assets/pylib-apple/asyncio/staggered.py": "f5056f0a56b73b477a9fa65e71145366",
"build/assets/pylib-apple/asyncio/streams.py": "e9c609b92b4e9bd3383cf4004c6186c6",
"build/assets/pylib-apple/asyncio/subprocess.py": "a5ff69004c02e2f47d0077a77803c06b",
"build/assets/pylib-apple/asyncio/streams.py": "f00ddd2b2fd74554ae1d3088bd9d2bfd",
"build/assets/pylib-apple/asyncio/subprocess.py": "edb8d98278300b6c99f36cd08643c743",
"build/assets/pylib-apple/asyncio/taskgroups.py": "5162e5b1806d9b647383d34ba1b21b56",
"build/assets/pylib-apple/asyncio/tasks.py": "234550593cd4928e6ee2c9591b6928ca",
"build/assets/pylib-apple/asyncio/threads.py": "7bbf81d424901524510e07b5d20e4a50",
"build/assets/pylib-apple/asyncio/timeouts.py": "c7cb81c7ee938bc47ff75342befc872a",
"build/assets/pylib-apple/asyncio/transports.py": "04598090d813bb363cea9bf714b97c3f",
"build/assets/pylib-apple/asyncio/trsock.py": "305d016a93b3e5224cb45af43fdc52b9",
"build/assets/pylib-apple/asyncio/unix_events.py": "9ce0da3a12b544df9c10fd3b3e0b2f37",
"build/assets/pylib-apple/asyncio/unix_events.py": "cbb968f7c1e4f87f23b187d7140839f1",
"build/assets/pylib-apple/asyncio/windows_events.py": "954637d8416216d656011178dbcedbb4",
"build/assets/pylib-apple/asyncio/windows_utils.py": "4efbef16e6692c9424804d9bdc496761",
"build/assets/pylib-apple/asyncore.py": "af21d495fa6ccc47b51ca8a8a382ea1c",
"build/assets/pylib-apple/base64.py": "5f8bbbfda4b9145b1968cb9badf8325b",
"build/assets/pylib-apple/bdb.py": "aecf5370ea25c5decdf8dfa07caf0bfc",
"build/assets/pylib-apple/bdb.py": "1e26c626405bfc06b1e7231183eb928a",
"build/assets/pylib-apple/bisect.py": "9b70437e327d5176da41192567ad0064",
"build/assets/pylib-apple/bz2.py": "cd6a5f2491bc52afd8fc180097371473",
"build/assets/pylib-apple/cProfile.py": "d5ef924a68c0f747ad727a6326ad8e5a",
"build/assets/pylib-apple/cProfile.py": "9e9c07ac3b9e4195a62b74e4f2b9489f",
"build/assets/pylib-apple/calendar.py": "4ef3d6d85d44e36212e5d784051c80b6",
"build/assets/pylib-apple/cgi.py": "090c5cfc8b4b92a730beec975159bd2a",
"build/assets/pylib-apple/cgitb.py": "2bcff1cec7f3a3a9c96de7a55ebb4ea3",
@ -3137,16 +3137,16 @@
"build/assets/pylib-apple/code.py": "5d47099984013b933c96b02ef16981b8",
"build/assets/pylib-apple/codecs.py": "6fac5e2969e98ceaba92d3b8e42cb2ec",
"build/assets/pylib-apple/codeop.py": "d375467fb29fccd43ab94d15a2e63085",
"build/assets/pylib-apple/collections/__init__.py": "44999193e5c3d379e3feaa50ddf5147d",
"build/assets/pylib-apple/collections/__init__.py": "dcffbb6ee2cadd0c05ad22f2ef41f89b",
"build/assets/pylib-apple/collections/abc.py": "15f410d3821352033a90a04539c99060",
"build/assets/pylib-apple/colorsys.py": "1452923f15188287bc677e7128cb6b31",
"build/assets/pylib-apple/colorsys.py": "ca8f117785bf7606c3919ef0f4b828ae",
"build/assets/pylib-apple/compileall.py": "eb3f6d92f020ebec3f3f5bffc8a4dd4b",
"build/assets/pylib-apple/concurrent/__init__.py": "aa990702e8f3a7af205efb5ae23a7c85",
"build/assets/pylib-apple/concurrent/futures/__init__.py": "3e46fadb9de9c995c37dca4311641d6a",
"build/assets/pylib-apple/concurrent/futures/_base.py": "a1cd37aea6fe0efff1bc00a39543609e",
"build/assets/pylib-apple/concurrent/futures/process.py": "4725abe3e780075ac264da12a1db5714",
"build/assets/pylib-apple/concurrent/futures/process.py": "a44e8618e158f8f351dafcb566a02544",
"build/assets/pylib-apple/concurrent/futures/thread.py": "e63753b8201f1392dbebc84a15054a13",
"build/assets/pylib-apple/configparser.py": "a6b19c20d70861eea310e5504621e562",
"build/assets/pylib-apple/configparser.py": "914afd2b2cec90bbca0b94fd176b5176",
"build/assets/pylib-apple/contextlib.py": "6f52eac914e438ef54407760def8305f",
"build/assets/pylib-apple/contextvars.py": "ddf2ae9be02601bd8fc9c2cb8a51c04e",
"build/assets/pylib-apple/copy.py": "e7c43b1ec5f81ef36486ad8b49ed7f74",
@ -3167,38 +3167,38 @@
"build/assets/pylib-apple/curses/has_key.py": "c74b8d6db329fbbd872b7b91bfa94624",
"build/assets/pylib-apple/curses/panel.py": "8f36fdade9588f8a4362d2cc057a6eff",
"build/assets/pylib-apple/curses/textpad.py": "94aa9ebc47a6068d4461652346646dbb",
"build/assets/pylib-apple/dataclasses.py": "1328e12f8255b856ced026e75a623671",
"build/assets/pylib-apple/dataclasses.py": "febeea138bff21dbed88762be772514e",
"build/assets/pylib-apple/datetime.py": "5dcfd7f3b1a4db8214c1442164ac999c",
"build/assets/pylib-apple/decimal.py": "f57d255d45b5d1d7d8e13c41a283c3e4",
"build/assets/pylib-apple/difflib.py": "6b3c8fd541b2b8d0320727025cd25275",
"build/assets/pylib-apple/dis.py": "cecdc0c02aa3d70a7f550e60ebc9b3ba",
"build/assets/pylib-apple/doctest.py": "eb60b2b39e0deb976ecbc69a8c2392ee",
"build/assets/pylib-apple/email/__init__.py": "7ebfab5c51b6bc698aca92ad4903346c",
"build/assets/pylib-apple/doctest.py": "8a18c35f3aa66130955a6a3bf1bfead4",
"build/assets/pylib-apple/email/__init__.py": "4ff603eeeb4ce0302c8bd1b220fc5e13",
"build/assets/pylib-apple/email/_encoded_words.py": "d7b77501689dd1ce32da789b46264a6a",
"build/assets/pylib-apple/email/_header_value_parser.py": "982718787815084548747d4b078902e6",
"build/assets/pylib-apple/email/_parseaddr.py": "a6d2999aeed17f060be8797e761a01aa",
"build/assets/pylib-apple/email/_policybase.py": "09b0c21693ac080c52c52f5daab616aa",
"build/assets/pylib-apple/email/base64mime.py": "a1ac31203212f2963b4c07629a3b919c",
"build/assets/pylib-apple/email/charset.py": "7bb5baa9bbd627097d1f32f1a3b503c8",
"build/assets/pylib-apple/email/base64mime.py": "d3e4fc07d04833487677dd2a888c3826",
"build/assets/pylib-apple/email/charset.py": "1d101758464f75bf2b93fb17fec9542f",
"build/assets/pylib-apple/email/contentmanager.py": "e88780ef1d37a11ff216060f740f2572",
"build/assets/pylib-apple/email/encoders.py": "f1c581f5c146c31168f6ff4a2a6591f7",
"build/assets/pylib-apple/email/encoders.py": "d401cf76e52f0205393dd8bb1ae28b46",
"build/assets/pylib-apple/email/errors.py": "afd6b5e8f8baa701baaae14e736ddca0",
"build/assets/pylib-apple/email/feedparser.py": "88d35aee820e997f40f6c28cf930979b",
"build/assets/pylib-apple/email/generator.py": "e0cc1d119427110da5de96a4e7b6bb5b",
"build/assets/pylib-apple/email/header.py": "f72b2b6140c11b89c0ae3f7b24b0a861",
"build/assets/pylib-apple/email/feedparser.py": "623788306ab3b5d75df1145484045edc",
"build/assets/pylib-apple/email/generator.py": "073bac3c4874c3ab74d4e6a9e9317fb2",
"build/assets/pylib-apple/email/header.py": "09923b7b77bf91bed41a71b6e3c6e4d9",
"build/assets/pylib-apple/email/headerregistry.py": "dfd48f9c41454d5bc2355cb1762fb869",
"build/assets/pylib-apple/email/iterators.py": "9b67a6ab50d2bdbdbc4588e10ea1c64a",
"build/assets/pylib-apple/email/iterators.py": "752ece28a18545e70fa67a7cf2fe3ef3",
"build/assets/pylib-apple/email/message.py": "5b198b0cf1095ba5a3faccdd28310f28",
"build/assets/pylib-apple/email/mime/__init__.py": "340c83beff7dcff8f5c7b87cd43cedaf",
"build/assets/pylib-apple/email/mime/application.py": "4ce678512f30cac9fd95993186d2eef7",
"build/assets/pylib-apple/email/mime/audio.py": "4073e45bda9524e3cbe29374951fdc16",
"build/assets/pylib-apple/email/mime/base.py": "e4ac5d17e69e73a2cb4cc873474991c2",
"build/assets/pylib-apple/email/mime/base.py": "3b9c795fe3b6e9d3f7b6dda3e1c8e1ea",
"build/assets/pylib-apple/email/mime/image.py": "6322b8269e8efe61d3ead57f2aa6cdef",
"build/assets/pylib-apple/email/mime/message.py": "72935a387c0c12840359c2b0b8f588ac",
"build/assets/pylib-apple/email/mime/multipart.py": "8157be08dbd84825bf2abaefa39dc3a0",
"build/assets/pylib-apple/email/mime/nonmultipart.py": "1187993d0366b808a3afea751cd37d81",
"build/assets/pylib-apple/email/mime/text.py": "eb387b8f3a686bc7587b860782761a52",
"build/assets/pylib-apple/email/parser.py": "19466563eaac6984c48f734a8f2cf3fc",
"build/assets/pylib-apple/email/mime/message.py": "0bf18b4f07a68b646e45b10d7e31c6c7",
"build/assets/pylib-apple/email/mime/multipart.py": "69577df977b7b36f5e175661dd7095bc",
"build/assets/pylib-apple/email/mime/nonmultipart.py": "a96d8d31156781a7511cec04e46a95f6",
"build/assets/pylib-apple/email/mime/text.py": "21928b3afec29cb55ae1ae7682b8fbe1",
"build/assets/pylib-apple/email/parser.py": "f0cdd5c8491cbff0948672784fca1e8f",
"build/assets/pylib-apple/email/policy.py": "69a5f116b77b6a70e7761309c5592557",
"build/assets/pylib-apple/email/quoprimime.py": "c5e54c3f0e70d55145517382d4455765",
"build/assets/pylib-apple/email/utils.py": "145a606aaa3cbad40c68054ebbf4efa6",
@ -3324,7 +3324,7 @@
"build/assets/pylib-apple/encodings/utf_8_sig.py": "8f3542863ef311d8b970a37c0d66b0de",
"build/assets/pylib-apple/encodings/uu_codec.py": "4ef8a65413574c017a96b97fc1638ba6",
"build/assets/pylib-apple/encodings/zlib_codec.py": "1388fb103fdf395451bfc8a2d60933a9",
"build/assets/pylib-apple/enum.py": "93e4c39acfbbebdc9c4f3d204f17e496",
"build/assets/pylib-apple/enum.py": "73b214a43ceef88aff7098b83623ed09",
"build/assets/pylib-apple/filecmp.py": "7648fdc6d0fc8bae7429d5e4081cf353",
"build/assets/pylib-apple/fileinput.py": "c3def1041e6b12dd5f1906c9dbbd1101",
"build/assets/pylib-apple/fnmatch.py": "a1bc67633695d4defd4c0886428c5363",
@ -3334,7 +3334,7 @@
"build/assets/pylib-apple/genericpath.py": "5e991b8dd73dd4a05571b73ac532988a",
"build/assets/pylib-apple/getopt.py": "d630bf22334ba037143a3dca69088ee1",
"build/assets/pylib-apple/getpass.py": "c19e383e949c147a30ecc554b8598e91",
"build/assets/pylib-apple/gettext.py": "6e24985f9e985660751c70436cfefa75",
"build/assets/pylib-apple/gettext.py": "245a4d4c7ba79febb5423a49ebdc019a",
"build/assets/pylib-apple/glob.py": "0607521b67b32c59f30a9e1b238d5c1a",
"build/assets/pylib-apple/graphlib.py": "156d50d67d92c1917cf910dfce9cecc9",
"build/assets/pylib-apple/gzip.py": "296ba9c497e9c0cc4a97b82dcb02d780",
@ -3345,15 +3345,15 @@
"build/assets/pylib-apple/html/entities.py": "8561b405414160a08f613bdfd89e161b",
"build/assets/pylib-apple/html/parser.py": "c2ff6801a3ef6a2863d37b899615efb8",
"build/assets/pylib-apple/http/__init__.py": "1dab578aab89ead7171ef10638e88a5d",
"build/assets/pylib-apple/http/client.py": "d0b37013d5f9794a8311c3545ee5416d",
"build/assets/pylib-apple/http/client.py": "a3f2cd21f8ce7a4ee1b47f0b19fb57f7",
"build/assets/pylib-apple/http/cookiejar.py": "f324a21e7c17f40e4d5c78139875811c",
"build/assets/pylib-apple/http/cookies.py": "9319b95b505a644b9a112b4c7a7678c3",
"build/assets/pylib-apple/http/server.py": "a06b26669fc0eb0ef81b819fe8a6602d",
"build/assets/pylib-apple/http/server.py": "4b286e2b5e6112af17e097539eadd9d7",
"build/assets/pylib-apple/imghdr.py": "011d27a98acf3774279a584525614ba3",
"build/assets/pylib-apple/imp.py": "34bd1d1620eb0d42f9ef9bbbb11cafae",
"build/assets/pylib-apple/importlib/__init__.py": "2f6c1fb453d61417245cd196311a9b52",
"build/assets/pylib-apple/importlib/_abc.py": "720f8056e5cd852156378b532ddbbb7c",
"build/assets/pylib-apple/importlib/_bootstrap.py": "da9de7a6d6839a7185147f35f2040de7",
"build/assets/pylib-apple/importlib/_bootstrap.py": "6f4819e9443e3fda3c28c62f15a8238c",
"build/assets/pylib-apple/importlib/_bootstrap_external.py": "c22f4fa4086742713c2071db7de7726c",
"build/assets/pylib-apple/importlib/abc.py": "c9697e928ff17089dc6aea96f5b33003",
"build/assets/pylib-apple/importlib/machinery.py": "6a056c561b4ea8eb5457761c8a9fd704",
@ -3375,7 +3375,7 @@
"build/assets/pylib-apple/importlib/resources/simple.py": "ae95788edf31cbfffd53db748d76f0b9",
"build/assets/pylib-apple/importlib/simple.py": "f34f28cd359ecaf9fd6cf18a4dca2c33",
"build/assets/pylib-apple/importlib/util.py": "09c3a96d1265db211f32b73a5f76e1ac",
"build/assets/pylib-apple/inspect.py": "5a321fd388139d2beff15f4306b1fb95",
"build/assets/pylib-apple/inspect.py": "365d413e26b3a77118e51987cfd2eb1f",
"build/assets/pylib-apple/io.py": "4a3ab68b3f38d3dcf9282f4839fe5d84",
"build/assets/pylib-apple/ipaddress.py": "b9831cf9058885b35a2411b4cbada972",
"build/assets/pylib-apple/json/__init__.py": "e8b000d2bf8c53b55a72bc3053800596",
@ -3387,8 +3387,8 @@
"build/assets/pylib-apple/linecache.py": "2712c31a3a6d7625d437029a6b7470c9",
"build/assets/pylib-apple/locale.py": "42f3f48fed6a16da350de46aa85b446a",
"build/assets/pylib-apple/logging/__init__.py": "6e5d6f80af880857f5eb29b038512c6d",
"build/assets/pylib-apple/logging/config.py": "ff0697c60f90420c32c697a30bfdfe90",
"build/assets/pylib-apple/logging/handlers.py": "ab3881444783ab84f3859e022b356989",
"build/assets/pylib-apple/logging/config.py": "f811372496ec5ae34e8047f0280686be",
"build/assets/pylib-apple/logging/handlers.py": "55d604de088570f8bd5edb62f64682fb",
"build/assets/pylib-apple/lzma.py": "d7388640aa6af4c64fdc821471930f57",
"build/assets/pylib-apple/mailbox.py": "d9db3c7510e38484ade3d88446b8f231",
"build/assets/pylib-apple/mailcap.py": "c61462a36d20d79a0f4e37717f957bf6",
@ -3396,30 +3396,30 @@
"build/assets/pylib-apple/modulefinder.py": "3fc074c018de1dd15ab2e309be199dea",
"build/assets/pylib-apple/netrc.py": "9a869ca83b316ab5a19a0a2cf22efaf3",
"build/assets/pylib-apple/nntplib.py": "4926aa991bd4b96b9318d6242135abf9",
"build/assets/pylib-apple/ntpath.py": "36557dc9fdcd9eeeab4d46c1a364bd5a",
"build/assets/pylib-apple/ntpath.py": "d53ff21dc0ef0cd939cc865ae1fb011e",
"build/assets/pylib-apple/nturl2path.py": "937624c4b6f213b652addea66296ccc4",
"build/assets/pylib-apple/numbers.py": "0cdcb42317422500d514ec67d496a06e",
"build/assets/pylib-apple/opcode.py": "18cba8b1d09ec6fcccfe20e5b13db980",
"build/assets/pylib-apple/operator.py": "61e197bc43df97ec39ae3e5e59b11c19",
"build/assets/pylib-apple/optparse.py": "5f65f891612b68c71a2846da86254285",
"build/assets/pylib-apple/os.py": "36f9692131ffb9ba4db510de31afc651",
"build/assets/pylib-apple/pathlib.py": "3e8b893cbe95729cdb6d0cc796e89e19",
"build/assets/pylib-apple/pdb.py": "da4c484348d4b2009479dadd878f20b0",
"build/assets/pylib-apple/pathlib.py": "095ec821fec243124d0a286b4de3848a",
"build/assets/pylib-apple/pdb.py": "117b0d24ccb89edc5f183c94f6722f70",
"build/assets/pylib-apple/pickle.py": "e6f9f53d29988454690ccde3279c7c38",
"build/assets/pylib-apple/pickletools.py": "85b30fba86d32dfc4a588300dedf5f01",
"build/assets/pylib-apple/pipes.py": "2dd796bdbb87982034234fec50d4526c",
"build/assets/pylib-apple/pkgutil.py": "372a540a2f2f3a324d5ff8e137579aad",
"build/assets/pylib-apple/pkgutil.py": "8e3fdfcb6c90dc50245aee89c49eb515",
"build/assets/pylib-apple/platform.py": "ee86bbf8ce5fbe11cd285600ecf4aecd",
"build/assets/pylib-apple/plistlib.py": "8aa9836b7a69628873b25811c4d5fffa",
"build/assets/pylib-apple/poplib.py": "829dc4df5d8e082ad414d499ec4678bd",
"build/assets/pylib-apple/posixpath.py": "2a6b3f940f89b0819ee002b6b82b0318",
"build/assets/pylib-apple/pprint.py": "b4e9efe35d05b6126d41da36eda47754",
"build/assets/pylib-apple/profile.py": "4c0816d9278d2a33e28835fcd291fb62",
"build/assets/pylib-apple/profile.py": "a9f11f8aa6a2905706a5fc9273d6c981",
"build/assets/pylib-apple/pstats.py": "c5884aaae199265ab0c3849d053bc996",
"build/assets/pylib-apple/pty.py": "1de2d1bfbdc54a770de7b3010d322620",
"build/assets/pylib-apple/pty.py": "c97b51147360cf7fd92c364ab8068a2b",
"build/assets/pylib-apple/py_compile.py": "772b429c589d2e005e8bd79b12f55a92",
"build/assets/pylib-apple/pyclbr.py": "bf1989a2c73108005e874a640760476a",
"build/assets/pylib-apple/pydoc.py": "0f8a4b2f4a9d23e429c01660a4290bd8",
"build/assets/pylib-apple/pydoc.py": "b17a6d227db749f91434253248fa6384",
"build/assets/pylib-apple/queue.py": "1e90a0b87965a2642946621db162f441",
"build/assets/pylib-apple/quopri.py": "5d58010dd1f96b37a167c6d305372881",
"build/assets/pylib-apple/random.py": "9ec8461bc4d5b072e3fc1f65aafccf2f",
@ -3427,7 +3427,7 @@
"build/assets/pylib-apple/re/_casefix.py": "106514c6c6bb479fa2691423a61c8938",
"build/assets/pylib-apple/re/_compiler.py": "d38bbefe652b6bfff2bb30459436f112",
"build/assets/pylib-apple/re/_constants.py": "99b8d7dba7fb50be8fb435dcefcd2989",
"build/assets/pylib-apple/re/_parser.py": "df712815c6dba2e12c1875ca1bc02400",
"build/assets/pylib-apple/re/_parser.py": "1afe14ae4219eadb32ba0fd3ac1b921a",
"build/assets/pylib-apple/reprlib.py": "a129eeeaf66fbd9591d2da242ce23a1a",
"build/assets/pylib-apple/rlcompleter.py": "9e57bb7030b57c4ec82eba9e09852414",
"build/assets/pylib-apple/runpy.py": "3a2dd98314791c7e36b6bd3585f6ad82",
@ -3436,7 +3436,7 @@
"build/assets/pylib-apple/selectors.py": "98e0d83849452cbc2cc1381555bd5024",
"build/assets/pylib-apple/shelve.py": "3e569c07c863ecbd7f35a6c382d1785a",
"build/assets/pylib-apple/shlex.py": "0873fac90a491702950816ead0e59dd0",
"build/assets/pylib-apple/shutil.py": "651be1edc2110d483c96fbe26f40665d",
"build/assets/pylib-apple/shutil.py": "a5d0ee9f28244b42a06e682312d0e3fa",
"build/assets/pylib-apple/signal.py": "114ef47b1798fca6f56ac8a250974b3e",
"build/assets/pylib-apple/site.py": "c2bb58a3e8fe69733a28b56d04b47e50",
"build/assets/pylib-apple/smtpd.py": "0602b6a39c4e37133303bee16c3e28a4",
@ -3450,18 +3450,18 @@
"build/assets/pylib-apple/sre_compile.py": "a1784e9ccbea7d9963cab75b536b40c8",
"build/assets/pylib-apple/sre_constants.py": "5c5be32a5334d9b0a848dad520746a63",
"build/assets/pylib-apple/sre_parse.py": "cca15b9ab31509e6642f9d2fd4fb9d91",
"build/assets/pylib-apple/ssl.py": "3c4c838c1c298d69871154e80f45cad1",
"build/assets/pylib-apple/ssl.py": "ed512664b82e23aa157fc69f97df9d01",
"build/assets/pylib-apple/stat.py": "185f17736cdb40bd3e7400ad8cedef84",
"build/assets/pylib-apple/statistics.py": "9807c60eb942bf320ee85a2016ba4516",
"build/assets/pylib-apple/string.py": "c072d3a2d0337386d3235ba72f292752",
"build/assets/pylib-apple/stringprep.py": "6a5635711a838f76fee7b52537bf8b45",
"build/assets/pylib-apple/struct.py": "4fd288bd6537effd1d5edbba9d44dde2",
"build/assets/pylib-apple/subprocess.py": "c696ea6bad77404821e3643a5a8f1189",
"build/assets/pylib-apple/subprocess.py": "71393ec8cfd7da74691d932dd1861992",
"build/assets/pylib-apple/sunau.py": "a034779289fef0b2221345f40e042680",
"build/assets/pylib-apple/symtable.py": "0cd4a624b2e3304664f43189ed9e3bf7",
"build/assets/pylib-apple/sysconfig.py": "e14e3272debfcb60192898d131712bad",
"build/assets/pylib-apple/tabnanny.py": "84614c63ead0ab71527cecdf3de68f1a",
"build/assets/pylib-apple/tarfile.py": "76bf209364cd327ee75e9dac3211c882",
"build/assets/pylib-apple/tarfile.py": "e2fc4eca5c2d39b6f44b9e622a32f602",
"build/assets/pylib-apple/telnetlib.py": "1a746e1fc988b9f5c12b9fd5a97c00ea",
"build/assets/pylib-apple/tempfile.py": "436007fbe6821c864a53861bd73b4d43",
"build/assets/pylib-apple/textwrap.py": "3eb16a40553205dc96be5cb9039f3c8c",
@ -3474,22 +3474,22 @@
"build/assets/pylib-apple/tomllib/_parser.py": "f9a4dc92c44403f970e94c2e494a7358",
"build/assets/pylib-apple/tomllib/_re.py": "0e509117e16c41c491615e06bb98861d",
"build/assets/pylib-apple/tomllib/_types.py": "07be9616d6f5e401fd31fbeea619fc97",
"build/assets/pylib-apple/trace.py": "c860164b4f4317299db04e29070a163d",
"build/assets/pylib-apple/traceback.py": "bb2dc63a0bcd438697904573807bd392",
"build/assets/pylib-apple/trace.py": "3d8698a2c3ec03dc0f394a2f48c2ffbc",
"build/assets/pylib-apple/traceback.py": "91f67818e621e3b2f5bf583ed6863ef8",
"build/assets/pylib-apple/tracemalloc.py": "e4d10d2bee7773566e46797a939e5cbf",
"build/assets/pylib-apple/tty.py": "271c7d61005a0a3c2c0952efc60dcb6d",
"build/assets/pylib-apple/types.py": "78f8942c08dbfc9c582f1bb8d5206639",
"build/assets/pylib-apple/typing.py": "c07fa037183494716cd57a7c9ac05d78",
"build/assets/pylib-apple/typing.py": "17aaeea16cbfdb93cb4c5b87f535e341",
"build/assets/pylib-apple/urllib/__init__.py": "340c83beff7dcff8f5c7b87cd43cedaf",
"build/assets/pylib-apple/urllib/error.py": "b7dde0483ff647eb87162d6e19c04fa0",
"build/assets/pylib-apple/urllib/parse.py": "d47283907682d432b511b85dd1e32572",
"build/assets/pylib-apple/urllib/request.py": "e89a853d76344f1ca197926d49b3b9e6",
"build/assets/pylib-apple/urllib/parse.py": "28e09ecc3b696bae8ac5589b9cd64f63",
"build/assets/pylib-apple/urllib/request.py": "09b8666fe8319542f7247bb9f8573806",
"build/assets/pylib-apple/urllib/response.py": "c8537707a4b1e493c0ec4489ab523c93",
"build/assets/pylib-apple/urllib/robotparser.py": "5a7616bdf398c166f953ad48c25506eb",
"build/assets/pylib-apple/uu.py": "93268d78026ebde74a1ccd14024ae59f",
"build/assets/pylib-apple/uu.py": "7cb795ca0c9e914550e6245dfe53c53e",
"build/assets/pylib-apple/uuid.py": "755d75cad456d0c3ab0c67f0276cca32",
"build/assets/pylib-apple/warnings.py": "e5f0b4cbc35aae8d4b89a856b189b626",
"build/assets/pylib-apple/wave.py": "cb125197ba1b7955bbee4ebde9f385ce",
"build/assets/pylib-apple/wave.py": "727a8dacad95625ea14554b7d655ce2e",
"build/assets/pylib-apple/weakref.py": "dd14612f02ca8acd723f633b6fff0adf",
"build/assets/pylib-apple/webbrowser.py": "7356fd255ec3bdfef98349a9c9d2b563",
"build/assets/pylib-apple/xdrlib.py": "ee12e9067ab4904da935b8d2213426d8",
@ -3519,7 +3519,7 @@
"build/assets/pylib-apple/xmlrpc/client.py": "8f2cad71c1c87031be073184e71aa405",
"build/assets/pylib-apple/xmlrpc/server.py": "3147663bd28b952eef0e1316b94bacc6",
"build/assets/pylib-apple/zipapp.py": "d92ea793f092af6383a6383678cf7b73",
"build/assets/pylib-apple/zipfile.py": "21cdb798a8f660aa3ec322ce59bddac9",
"build/assets/pylib-apple/zipfile.py": "00671f5cdb9a5ad667efa1dccf0129d3",
"build/assets/pylib-apple/zipimport.py": "6d3b32a7258f670eb71daf3a8492a4f1",
"build/assets/pylib-apple/zoneinfo/__init__.py": "0df5e8a66015e2fe2d77f2e4a5dea1ff",
"build/assets/pylib-apple/zoneinfo/_common.py": "5b52bdac4156dcbac96743fa99468bf2",
@ -4064,26 +4064,26 @@
"build/assets/windows/Win32/ucrtbased.dll": "2def5335207d41b21b9823f6805997f1",
"build/assets/windows/Win32/vc_redist.x86.exe": "b08a55e2e77623fe657bea24f223a3ae",
"build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599",
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "ca001c9f2b4edf8d4918c1bcaf0cb561",
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "fcb58aae4535a761be49420f4e4a7711",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "8f453b8193ba06a3cc59374cdd2a1c09",
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "7c389cb83619516ce96118227668500e",
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "2ffcc486e9ba8f0fd5279083a2e54aff",
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "366bab5bff3ff9344e54bf7492f4d7c3",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "78277cc1bd40ba88fd1475f8755e0721",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "5f063e4d45e40ade22f1bad63658752e",
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "f7114c78146f22e89143218c9930b43e",
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "90c0ea0ce7a35d8f15b2a29bef704819",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "e1b4932fd7f359404c979604a1e33444",
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "28ab454f71dfecd1986a245eb4a732e7",
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "7b1a4db9c3f36fd428cdafbc1459bc1b",
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "bc5a48ff49975901f212d18b1dbbb6f5",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "7742db7c9555907fc7b2d5c89d48dfd0",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "d81bc55d666f630a14de90f30be29fb4",
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "5ab68bfee69a6fe07b5b8a68938220e6",
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "59a2b3cb2c1dde98c6aedf72aa9fdbfb",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "2199e800eb102d56197e11782b7adf12",
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "3193300cf9927276893960698d8246f6",
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "2ceb16e09034aa4e3213e8fb69dd209b",
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "7ecdc512653325abef8e66e9c3e0e479",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "70a1c3300cb0610a85449d08b3483a54",
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "000738cc726938ff5282d211629739e3",
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "e4d0b9fdcb16f2bef3891f28b950daac",
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "9cc960c0de9e10dd300561dc9ae045e2",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "be453afedfb331abe39e4940755b34e7",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "d478af40d922a68e4deab6dd452b0e51",
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "5fdb7d8752f9a8315a5f94a32b5db368",
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "433dae3372f05c7faf75658c6f962be1",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "d66d0201decc90f677520f41ac227a71",
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "37efebdbd1866b71ac324f5ca949151a",
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "5ccfadd91168c07956328dd11b118b28",
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "404d9db4de7089346264f3f62dbb6d88",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "ef3dda575b711a0fa515f93ebd0a7379",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "8ee2be9a35e12158c0ace56b04a3ea99",
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "1c305bde639f5fc76e908a3a3fb9203f",
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "e58ce9a499068e682295dd3d88a0801d",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "38a2c503c8d892d7e94cd53fb4da5b48",
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "deea2cf3afb5598ed9eb6ce4798b1cef",
"build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "a3607fd941915ab11503f82acfc392b5",
"build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "b5a129d83796c9e7015ab5e319d2c22f",
"build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "a3607fd941915ab11503f82acfc392b5",
@ -4100,14 +4100,14 @@
"build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "c5c40967e63471c9c4abd6dfbef892df",
"build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "d34c0a142e7d391a109a33ea3cc77c08",
"build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "c5c40967e63471c9c4abd6dfbef892df",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "13a3bb41dda8cfdb3ffdbc57a0390275",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "042ff1129bab0def6bf90250b5c08a32",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "699ab8e6fd3e8517acac76cd5b40dfbc",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "5b53317f8900cab59288be44b353dffc",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "978ea0ba60c026efd45729cd48c0feba",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "1fb524f11277090440cda18bfc3ee3a0",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "91452d47e879acd0d7fdd06a44fbcfed",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "7e9469f3cac9ab85c5e9d1256679604c",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "9d23a52a0c270710332bf35297db9f36",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "61d84134e4088e5138ceb200ba20960b",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "a7a9854fb6f114ac3f3f35c451170328",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "f5a2d196943141917b1ee0f3beb1f5eb",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "ec0052c95df6ea5cb3bdcaabcb1ea55c",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "d21984e95164c4e7df91b35a60828fc7",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "b613c7699c66c9a2a17bf9360015ade0",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "6f907f7940d2f5e44874e24f9a1856a0",
"src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c",
"src/assets/ba_data/python/babase/_mgen/enums.py": "f8cd3af311ac63147882590123b78318",
"src/ballistica/base/mgen/pyembed/binding_base.inc": "ad347097a38e0d7ede9eb6dec6a80ee9",

View File

@ -1,4 +1,4 @@
### 1.7.28 (build 21303, api 8, 2023-09-01)
### 1.7.28 (build 21306, api 8, 2023-09-06)
- Added some high level functionality for copying and deleting feature-sets to
the `spinoff` tool. For example, to create your own `poo` feature-set based on
@ -14,6 +14,8 @@
prefab-server-release-build` you should see just a few file downloads
happening instead of the hundreds that would happen before, which should be
significantly faster & more efficient.
- Updated internal Python builds for Apple & iOS to 3.11.5, and updated a few
dependent libraries as well (OpenSSL bumped from 3.0.8 to 3.0.10, etc.).
### 1.7.27 (build 21282, api 8, 2023-08-30)

View File

@ -186,10 +186,10 @@ pcommandbatch_speed_test: prereqs
# Tell make which of these targets don't represent files.
.PHONY: help prereqs prereqs-pre-update prereqs-clean assets assets-cmake \
assets-cmake-scripts assets-windows assets-windows-Win32 assets-windows-x64 \
assets-mac assets-ios assets-android assets-clean resources resources-clean \
meta meta-clean clean clean-list dummymodules docs docs-pdoc \
pcommandbatch_speed_test
assets-cmake-scripts assets-windows assets-windows-Win32 \
assets-windows-x64 assets-mac assets-ios assets-android assets-clean \
resources resources-clean meta meta-clean clean clean-list \
dummymodules docs docs-pdoc pcommandbatch_speed_test
################################################################################
@ -585,31 +585,35 @@ build/prefab/lib/windows/Release_%/BallisticaKitHeadlessPlus.pdb: .efrocachemap
@$(PCOMMANDBATCH) efrocache_get $@
# Tell make which of these targets don't represent files.
.PHONY: prefab-gui-debug prefab-gui-release prefab-gui-debug-build \
prefab-gui-release-build prefab-server-debug prefab-server-release \
prefab-server-debug-build prefab-server-release-build prefab-clean \
_cmake_prefab_gui_binary _cmake_prefab_server_binary \
prefab-mac-x86-64-gui-debug prefab-mac-arm64-gui-debug \
prefab-mac-x86-64-gui-debug-build prefab-mac-arm64-gui-debug-build \
prefab-mac-x86-64-gui-release prefab-mac-arm64-gui-release \
prefab-mac-x86-64-gui-release-build prefab-mac-arm64-gui-release-build \
prefab-mac-x86-64-server-debug prefab-mac-arm64-server-debug \
prefab-mac-x86-64-server-debug-build prefab-mac-arm64-server-debug-build \
prefab-mac-x86-64-server-release prefab-mac-arm64-server-release \
prefab-mac-x86-64-server-release-build prefab-mac-arm64-server-release-build \
prefab-linux-x86-64-gui-debug prefab-linux-arm64-gui-debug \
prefab-linux-x86-64-gui-debug-build prefab-linux-arm64-gui-debug-build \
prefab-linux-x86-64-gui-release prefab-linux-arm64-gui-release \
prefab-linux-x86-64-gui-release-build prefab-linux-arm64-gui-release-build \
prefab-linux-x86-64-server-debug prefab-linux-arm64-server-debug \
prefab-linux-x86-64-server-debug-build prefab-linux-arm64-server-debug-build \
prefab-linux-x86-64-server-release prefab-linux-arm64-server-release \
prefab-linux-x86-64-server-release-build \
prefab-linux-arm64-server-release-build \
prefab-windows-x86-gui-debug prefab-windows-x86-gui-debug-build \
prefab-windows-x86-gui-release prefab-windows-x86-gui-release-build \
prefab-windows-x86-server-debug prefab-windows-x86-server-debug-build \
prefab-windows-x86-server-release prefab-windows-x86-server-release-build
.PHONY: prefab-gui-debug prefab-gui-release prefab-gui-debug-build \
prefab-gui-release-build prefab-server-debug prefab-server-release \
prefab-server-debug-build prefab-server-release-build prefab-clean \
_cmake_prefab_gui_binary _cmake_prefab_server_binary \
prefab-mac-x86-64-gui-debug prefab-mac-arm64-gui-debug \
prefab-mac-x86-64-gui-debug-build prefab-mac-arm64-gui-debug-build \
prefab-mac-x86-64-gui-release prefab-mac-arm64-gui-release \
prefab-mac-x86-64-gui-release-build \
prefab-mac-arm64-gui-release-build prefab-mac-x86-64-server-debug \
prefab-mac-arm64-server-debug prefab-mac-x86-64-server-debug-build \
prefab-mac-arm64-server-debug-build prefab-mac-x86-64-server-release \
prefab-mac-arm64-server-release \
prefab-mac-x86-64-server-release-build \
prefab-mac-arm64-server-release-build prefab-linux-x86-64-gui-debug \
prefab-linux-arm64-gui-debug prefab-linux-x86-64-gui-debug-build \
prefab-linux-arm64-gui-debug-build prefab-linux-x86-64-gui-release \
prefab-linux-arm64-gui-release prefab-linux-x86-64-gui-release-build \
prefab-linux-arm64-gui-release-build prefab-linux-x86-64-server-debug \
prefab-linux-arm64-server-debug \
prefab-linux-x86-64-server-debug-build \
prefab-linux-arm64-server-debug-build \
prefab-linux-x86-64-server-release prefab-linux-arm64-server-release \
prefab-linux-x86-64-server-release-build \
prefab-linux-arm64-server-release-build prefab-windows-x86-gui-debug \
prefab-windows-x86-gui-debug-build prefab-windows-x86-gui-release \
prefab-windows-x86-gui-release-build prefab-windows-x86-server-debug \
prefab-windows-x86-server-debug-build \
prefab-windows-x86-server-release \
prefab-windows-x86-server-release-build
################################################################################
@ -751,8 +755,8 @@ format-scripts-full: prereqs
format-makefile: prereqs
@$(PCOMMAND) formatmakefile
.PHONY: format format-full format-code format-code-full format-scripts \
format-scripts-full
.PHONY: format format-full format-code format-code-full format-scripts \
format-scripts-full
################################################################################
@ -841,9 +845,9 @@ pycharm-full: py_check_prereqs
py_check_prereqs: dummymodules
# Tell make which of these targets don't represent files.
.PHONY: check check-full check2 check2-full \
cpplint cpplint-full pylint pylint-full mypy \
mypy-full dmypy dmypy-stop pycharm pycharm-full py_check_prereqs
.PHONY: check check-full check2 check2-full cpplint cpplint-full pylint \
pylint-full mypy mypy-full dmypy dmypy-stop pycharm pycharm-full \
py_check_prereqs
################################################################################
@ -1137,10 +1141,11 @@ clion-staging: assets-cmake resources meta
$(STAGE_BUILD) -cmake -release build/clion_release
# Tell make which of these targets don't represent files.
.PHONY: cmake cmake-build cmake-clean cmake-server cmake-server-build \
cmake-server-clean cmake-modular-build cmake-modular cmake-modular-binary \
cmake-modular-clean cmake-modular-server cmake-modular-server-build \
cmake-modular-server-binary cmake-modular-server-clean clion-staging
.PHONY: cmake cmake-build cmake-clean cmake-server cmake-server-build \
cmake-server-clean cmake-modular-build cmake-modular \
cmake-modular-binary cmake-modular-clean cmake-modular-server \
cmake-modular-server-build cmake-modular-server-binary \
cmake-modular-server-clean clion-staging
################################################################################

View File

@ -18,6 +18,10 @@
"src/ballistica/base/platform/oculus/main_rift.cc",
"src/ballistica/core/platform/android/android_gl3.c"
],
"default_app_modes": [
"bascenev1.SceneV1AppMode",
"babase.EmptyAppMode"
],
"efrocache_repository_url": "https://files.ballistica.net/cache/ba1",
"name": "BallisticaKit",
"public": true,

View File

@ -97,19 +97,16 @@ class App:
SHUTTING_DOWN = 6
class DefaultAppModeSelector(AppModeSelector):
"""Decides which app modes to use to handle intents.
"""Decides which AppModes to use to handle AppIntents.
The behavior here is generated by the project updater based on
the feature-sets present in the project. Spinoff projects can
also inject their own behavior by replacing the text
'__GOOD_PLACE_FOR_CUSTOM_SPINOFF_LOGIC__' with their own code
through spinoff filtering.
This default version is generated by the project updater based
on the 'default_app_modes' value in the projectconfig.
It is also possible to modify mode selection behavior by writing
a custom AppModeSelector class and replacing app.mode_selector
with an instance of it. This is a good way to go if you are
modifying app behavior with a plugin instead of in a spinoff
project.
It is also possible to modify app mode selection behavior by
setting app.mode_selector to an instance of a custom
AppModeSelector subclass. This is a good way to go if you are
modifying app behavior dynamically via a plugin instead of
statically in a spinoff project.
"""
def app_mode_for_intent(
@ -117,16 +114,12 @@ class App:
) -> type[AppMode] | None:
# pylint: disable=cyclic-import
# __GOOD_PLACE_FOR_CUSTOM_SPINOFF_LOGIC__
# __DEFAULT_APP_MODE_SELECTION_BEGIN__
# This section generated by batools.appmodule; do not edit.
# Hmm; need to think about how we auto-construct this; how
# should we determine which app modes to check and in what
# order?
# Ask our default app modes to handle it.
# (based on 'default_app_modes' in projectconfig).
import bascenev1
import babase
if bascenev1.SceneV1AppMode.can_handle_intent(intent):
@ -135,7 +128,7 @@ class App:
if babase.EmptyAppMode.can_handle_intent(intent):
return babase.EmptyAppMode
raise RuntimeError(f'No handler found for intent {type(intent)}.')
return None
# __DEFAULT_APP_MODE_SELECTION_END__
@ -246,12 +239,6 @@ class App:
@mode_selector.setter
def mode_selector(self, selector: babase.AppModeSelector) -> None:
# Don't allow overriding this until after we've initially set it.
if self._mode_selector is None:
raise RuntimeError(
'mode_selector cannot be used until the app reaches'
' the running state.'
)
self._mode_selector = selector
# __FEATURESET_APP_SUBSYSTEM_PROPERTIES_BEGIN__
@ -332,10 +319,13 @@ class App:
_babase.run_app()
def threadpool_submit_no_wait(self, call: Callable[[], Any]) -> None:
"""Submit work to our threadpool and log any errors.
"""Submit a call to the app threadpool where result is not needed.
Use this when you want to run something asynchronously but don't
intend to call result() on it to handle errors/etc.
Normally, doing work in a thread-pool involves creating a future
and waiting for its result, which is an important step because it
propagates any Exceptions raised by the submitted work. When the
result in not important, however, this call can be used. The app
will log any exceptions that occur.
"""
fut = self.threadpool.submit(call)
fut.add_done_callback(self._threadpool_no_wait_done)
@ -635,9 +625,10 @@ class App:
# Let our native layer know.
_babase.on_app_running()
# Set a default app-mode-selector. Plugins can then override
# this if they want in the on_app_running callback below.
self._mode_selector = self.DefaultAppModeSelector()
# Set a default app-mode-selector if none has been set yet
# by a plugin or whatnot.
if self._mode_selector is None:
self._mode_selector = self.DefaultAppModeSelector()
# Inform all app subsystems in the same order they were
# registered. Operate on a copy here because subsystems can

View File

@ -52,7 +52,7 @@ if TYPE_CHECKING:
# Build number and version of the ballistica binary we expect to be
# using.
TARGET_BALLISTICA_BUILD = 21303
TARGET_BALLISTICA_BUILD = 21306
TARGET_BALLISTICA_VERSION = '1.7.28'

View File

@ -718,7 +718,10 @@ auto BaseFeatureSet::IsAppStarted() const -> bool { return app_started_; }
auto BaseFeatureSet::ShutdownSuppressBegin() -> bool {
std::scoped_lock lock(shutdown_suppress_lock_);
if (!shutdown_suppress_disallowed_) {
// Once shutdown has begun, we no longer allow things that would
// suppress it. Tell the caller to abort what they're trying to do.
if (shutdown_suppress_disallowed_) {
return false;
}
shutdown_suppress_count_++;

View File

@ -39,7 +39,7 @@ auto main(int argc, char** argv) -> int {
namespace ballistica {
// These are set automatically via script; don't modify them here.
const int kEngineBuildNumber = 21303;
const int kEngineBuildNumber = 21306;
const char* kEngineVersion = "1.7.28";
const int kEngineApiVersion = 8;

View File

@ -21,6 +21,7 @@ def generate_app_module(
# pylint: disable=too-many-locals
# pylint: disable=too-many-branches
# pylint: disable=too-many-statements
import textwrap
from efrotools import replace_section
@ -154,15 +155,21 @@ def generate_app_module(
)
# Generate default app-mode-selection logic.
# TODO - make this customizable via project settings or whatnot.
contents = (
'# Hmm; need to think about how we auto-construct this; how\n'
'# should we determine which app modes to check and in what\n'
'# order?\n'
'# Ask our default app modes to handle it.\n'
"# (based on 'default_app_modes' in projectconfig).\n"
)
imports: list[str] = []
if 'scene_v1' in fsets:
contents += 'import bascenev1\n\n'
imports.append('bascenev1')
if 'base' in fsets:
contents += 'import babase\n\n'
imports.append('babase')
for imp in imports:
contents += f'import {imp}\n'
contents += '\n'
if 'scene_v1' in fsets:
contents += (
@ -174,10 +181,7 @@ def generate_app_module(
'if babase.EmptyAppMode.can_handle_intent(intent):\n'
' return babase.EmptyAppMode\n\n'
)
contents += (
"raise RuntimeError(f'No handler found for"
" intent {type(intent)}.')\n"
)
contents += 'return None\n'
indent = ' '
out = replace_section(

View File

@ -563,58 +563,59 @@ def _print_available_commands() -> None:
print(
(
'Available commands:\n'
f' {bgn}status{end} '
f' {bgn}status{end} '
'Print list of files update would affect.\n'
f' {bgn}diff{end} '
f' {bgn}diff{end} '
'Print diffs for what update would do.\n'
f' {bgn}update{end} '
f' {bgn}update{end} '
'Sync all spinoff files from src project.\n'
f' {bgn}check{end} '
f' {bgn}check{end} '
'Make sure everything is kosher.\n'
f' {bgn}clean{end} '
f' {bgn}clean{end} '
'Remove all spinoff files'
' (minus a few exceptions such\n'
' as .gitignore).\n'
f' {bgn}cleanlist{end} '
' as .gitignore).\n'
f' {bgn}cleanlist{end} '
'Shows what clean would do.\n'
f' {bgn}override [file...]{end} '
f' {bgn}override [file...]{end} '
'Remove files from spinoff, leaving local copies in place.\n'
f' {bgn}backport [file]{end} '
f' {bgn}backport [file]{end} '
'Help get changes to spinoff dst files back to src.\n'
f' {bgn}create [name, path]{end} '
f' {bgn}create [name, path]{end} '
'Create a new spinoff project based on this src one.\n'
' Name should be passed in CamelCase form.\n'
' By default, includes all feature-sets from'
' Name should be passed in CamelCase form.\n'
' By default, includes all feature-sets from'
' src.\n'
' Pass --featuresets a,b to specify included'
' Pass --featuresets a,b to specify included'
' feature-sets.\n'
" Use 'none' or an empty string for no"
" Use 'none' or an empty string for no"
' featuresets.\n'
' Pass --noninteractive to suppress help'
' Pass --noninteractive to suppress help'
' messages.\n'
' By default, the spinoff project will'
' By default, the spinoff project will'
' directly access this\n'
' parent project via a local symlink. To'
' parent project via a local symlink. To'
' instead set up a\n'
' git submodule at \'submodules/ballistica\''
' git submodule at \'submodules/ballistica\''
' in the spinoff\n'
' project, pass --submodule-parent.\n'
f' {bgn}add-submodule-parent{end} Adds a git submodule parent'
' project, pass --submodule-parent.\n'
f' {bgn}add-submodule-parent{end} Adds a git submodule parent'
' to an already existing dst\n'
' project in the current directory.'
' project in the current directory.'
' The same can be\n'
' achieved by passing --submodule-parent to'
' achieved by passing --submodule-parent to'
' the \'create\'\n'
' command.\n'
f' {bgn}fset-list{end} '
' command.\n'
f' {bgn}fset-list{end} '
'List featuresets present in the current project.\n'
f' {bgn}fset-copy [src, dst]{end} Copy feature-set src to dst'
f' {bgn}fset-copy [src, dst]{end} Copy feature-set src to dst'
' in the current project.\n'
' Replaces variations of src feature-set'
' name with equivalent from dst, though may need\n'
' some manual correction afterwards to be'
' Replaces variations of src feature-set'
' name with\n'
' equivalent from dst, though may need\n'
' some manual correction afterwards to be'
' functional.\n'
f' {bgn}fset-delete [name]{end} Delete a feature-set from the'
f' {bgn}fset-delete [name]{end} Delete a feature-set from the'
' current project.'
),
file=sys.stderr,

View File

@ -183,13 +183,13 @@ def get_public_license(style: str) -> str:
def readfile(path: str | Path) -> str:
"""Read a text file and return a str."""
"""Read a utf-8 text file into a string."""
with open(path, encoding='utf-8') as infile:
return infile.read()
def writefile(path: str | Path, txt: str) -> None:
"""Write a string to a file."""
"""Write a string to a utf-8 text file."""
with open(path, 'w', encoding='utf-8') as outfile:
outfile.write(txt)

View File

@ -9,35 +9,55 @@ import os
import subprocess
from enum import Enum
from dataclasses import dataclass
from typing import TYPE_CHECKING
from efrotools import readfile, writefile, replace_exact
if TYPE_CHECKING:
pass
# Python version we build here (not necessarily same as we use in repo).
PY_VER_ANDROID = '3.11'
PY_VER_EXACT_ANDROID = '3.11.4'
PY_VER_EXACT_ANDROID = '3.11.5'
PY_VER_APPLE = '3.11'
PY_VER_EXACT_APPLE = '3.11.3'
PY_VER_EXACT_APPLE = '3.11.5'
# Can bump these up to whatever the min we need is. Though perhaps
# leaving them at what the repo uses would lead to fewer build issues.
VERSION_MIN_MACOS = '10.15'
VERSION_MIN_IOS = '12.0'
VERSION_MIN_TVOS = '9.0'
# I occasionally run into openssl problems (particularly on arm systems)
# so keeping exact control of the versions we're building here to try
# and minimize it.
#
# Earlier I ran into an issue with android builds testing while OpenSSL
# was probing for ARMV7_TICK instruction presence (see android_patch_ssl here),
# and more recently I'm seeing a similar thing in 3.1.0 with arm_v8_sve_probe
# on mac. Ugh.
# was probing for ARMV7_TICK instruction presence (see android_patch_ssl
# here), and more recently I'm seeing a similar thing in 3.1.0 with
# arm_v8_sve_probe on mac. Ugh.
#
# See https://stackoverflow.com/questions/74059978/
# why-is-lldb-generating-exc-bad-instruction-with-user-compiled-library-on-macos
OPENSSL_VER_APPLE = '3.0.8'
OPENSSL_VER_ANDROID = '3.0.8'
#
# For now will try to ride out this LTS version as long as possible.
OPENSSL_VER_APPLE = '3.0.10'
OPENSSL_VER_ANDROID = '3.0.10'
LIBFFI_VER_APPLE = '3.4.4'
BZIP2_VER_APPLE = '1.0.8'
XZ_VER_APPLE = '5.4.4'
# Android repo doesn't seem to be getting updated much so manually
# bumping various versions to keep things up to date.
ZLIB_VER_ANDROID = '1.3'
XZ_VER_ANDROID = '5.4.4'
BZIP2_VER_ANDROID = '1.0.8'
GDBM_VER_ANDROID = '1.23'
LIBFFI_VER_ANDROID = '3.4.4'
LIBUUID_VER_ANDROID = ('2.38', '2.38.1')
NCURSES_VER_ANDROID = '6.3'
READLINE_VER_ANDROID = '8.2'
SQLITE_VER_ANDROID = ('2023', '3430000')
# Filenames we prune from Python lib dirs in source repo to cut down on size.
# Filenames we prune from Python lib dirs in source repo to cut down on
# size.
PRUNE_LIB_NAMES = [
'msilib',
'__phello__',
@ -75,12 +95,13 @@ def build_apple(arch: str, debug: bool = False) -> None:
import platform
from efro.error import CleanError
# IMPORTANT; seems we currently wind up building against /usr/local gettext
# stuff. Hopefully the maintainer fixes this, but for now I need to
# remind myself to blow it away while building.
# (via brew remove gettext --ignore-dependencies)
# NOTE: Should check to see if this is still necessary on Apple silicon
# since homebrew stuff is no longer in /usr/local there.
# IMPORTANT; seems we currently wind up building against /usr/local
# gettext stuff. Hopefully the maintainer fixes this, but for now I
# need to remind myself to blow it away while building. (via brew
# remove gettext --ignore-dependencies)
#
# NOTE: Should check to see if this is still necessary on Apple
# silicon since homebrew stuff is no longer in /usr/local there.
if bool(False):
if (
'MacBook-Fro' in platform.node()
@ -96,7 +117,7 @@ def build_apple(arch: str, debug: bool = False) -> None:
'NEED TO TEMP-KILL GETTEXT (or set SKIP_GETTEXT_WARNING=1)'
)
builddir = 'build/python_apple_' + arch + ('_debug' if debug else '')
builddir = f'build/python_apple_{arch}' + ('_debug' if debug else '')
subprocess.run(['rm', '-rf', builddir], check=True)
subprocess.run(['mkdir', '-p', 'build'], check=True)
subprocess.run(
@ -110,10 +131,11 @@ def build_apple(arch: str, debug: bool = False) -> None:
)
os.chdir(builddir)
# TEMP: Check out a particular commit while the branch head is broken.
# We can actually fix this to use the current one, but something
# broke in the underlying build even on old commits so keeping it
# locked for now...
# TEMP: Check out a particular commit while the branch head is
# broken. We can actually fix this to use the current one, but
# something broke in the underlying build even on old commits so
# keeping it locked for now...
#
# run('git checkout bf1ed73d0d5ff46862ba69dd5eb2ffaeff6f19b6')
# Grab the branch corresponding to our target python version.
@ -121,30 +143,55 @@ def build_apple(arch: str, debug: bool = False) -> None:
txt = readfile('Makefile')
# Turn doc strings on; looks like it only adds a few hundred k.
# txt = replace_exact(
# txt, '--without-doc-strings', '--with-doc-strings', count=2
# )
# Sanity check; we don't actually change Python version for these
# builds but we need to make sure exactly what version the repo is
# building (for path purposes and whatnot).
if f'\nPYTHON_VERSION={PY_VER_EXACT_APPLE}\n' not in txt:
raise RuntimeError(
'Does not look like our PY_VER_EXACT_APPLE matches the repo;'
f' please update it in {__name__}.'
)
# Customize our minimum version requirements
# Same for ffi version.
if f'\nLIBFFI_VERSION={LIBFFI_VER_APPLE}\n' not in txt:
raise RuntimeError(
'Does not look like our LIBFFI_VER_APPLE matches the repo;'
f' please update it in {__name__}.'
)
# Same for bzip2 version.
if f'\nBZIP2_VERSION={BZIP2_VER_APPLE}\n' not in txt:
raise RuntimeError(
'Does not look like our BZIP2_VERSION matches the repo;'
f' please update it in {__name__}.'
)
# Same for xz version.
if f'\nXZ_VERSION={XZ_VER_APPLE}\n' not in txt:
raise RuntimeError(
'Does not look like our XZ_VER_APPLE matches the repo;'
f' please update it in {__name__}.'
)
# Customize our minimum OS version requirements.
txt = replace_exact(
txt,
'VERSION_MIN-macOS=10.15\n',
'VERSION_MIN-macOS=10.15\n',
f'VERSION_MIN-macOS={VERSION_MIN_MACOS}\n',
)
txt = replace_exact(
txt,
'VERSION_MIN-iOS=12.0\n',
'VERSION_MIN-iOS=12.0\n',
f'VERSION_MIN-iOS={VERSION_MIN_IOS}\n',
)
txt = replace_exact(
txt,
'VERSION_MIN-tvOS=9.0\n',
'VERSION_MIN-tvOS=9.0\n',
f'VERSION_MIN-tvOS={VERSION_MIN_TVOS}\n',
)
txt = replace_exact(
txt,
'OPENSSL_VERSION=3.1.0\n',
'OPENSSL_VERSION=3.1.2\n',
f'OPENSSL_VERSION={OPENSSL_VER_APPLE}\n',
)
@ -227,9 +274,10 @@ def build_apple(arch: str, debug: bool = False) -> None:
writefile('Makefile', txt)
# Ok; let 'er rip.
# (we run these in parallel so limit to 1 job a piece;
# otherwise they inherit the -j12 or whatever from the top level)
# (also this build seems to fail with multiple threads)
#
# (we run these in parallel so limit to 1 job a piece; otherwise
# they inherit the -j12 or whatever from the top level) (also this
# build seems to fail with multiple threads)
subprocess.run(
[
'make',
@ -249,7 +297,7 @@ def build_android(rootdir: str, arch: str, debug: bool = False) -> None:
(can be arm, arm64, x86, or x86_64)
"""
builddir = 'build/python_android_' + arch + ('_debug' if debug else '')
builddir = f'build/python_android_{arch}' + ('_debug' if debug else '')
subprocess.run(['rm', '-rf', builddir], check=True)
subprocess.run(['mkdir', '-p', 'build'], check=True)
subprocess.run(
@ -310,6 +358,72 @@ def build_android(rootdir: str, arch: str, debug: bool = False) -> None:
count=1,
)
# Set specific BZip2 version.
ftxt = replace_exact(
ftxt,
"source = 'https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz'",
f'source = '
f"'https://sourceware.org/pub/bzip2/bzip2-{BZIP2_VER_ANDROID}.tar.gz'",
count=1,
)
# Set specific GDBM version.
ftxt = replace_exact(
ftxt,
"source = 'https://ftp.gnu.org/gnu/gdbm/gdbm-1.23.tar.gz'",
"source = 'https://ftp.gnu.org/"
f"gnu/gdbm/gdbm-{GDBM_VER_ANDROID}.tar.gz'",
count=1,
)
# Set specific libffi version.
ftxt = replace_exact(
ftxt,
"source = 'https://github.com/libffi/libffi/releases/"
"download/v3.4.4/libffi-3.4.4.tar.gz'",
"source = 'https://github.com/libffi/libffi/releases/"
f"download/v{LIBFFI_VER_ANDROID}/libffi-{LIBFFI_VER_ANDROID}.tar.gz'",
)
# Set specific LibUUID version.
ftxt = replace_exact(
ftxt,
"source = 'https://mirrors.edge.kernel.org/pub/linux/utils/"
"util-linux/v2.38/util-linux-2.38.1.tar.xz'",
"source = 'https://mirrors.edge.kernel.org/pub/linux/utils/"
f'util-linux/v{LIBUUID_VER_ANDROID[0]}/'
f"util-linux-{LIBUUID_VER_ANDROID[1]}.tar.xz'",
count=1,
)
# Set specific NCurses version.
ftxt = replace_exact(
ftxt,
"source = 'https://ftp.gnu.org/gnu/ncurses/ncurses-6.3.tar.gz'",
"source = 'https://ftp.gnu.org/gnu/ncurses/"
f"ncurses-{NCURSES_VER_ANDROID}.tar.gz'",
count=1,
)
# Set specific ReadLine version.
ftxt = replace_exact(
ftxt,
"source = 'https://ftp.gnu.org/gnu/readline/readline-8.2.tar.gz'",
"source = 'https://ftp.gnu.org/gnu/readline/"
f"readline-{READLINE_VER_ANDROID}.tar.gz'",
count=1,
)
# Set specific SQLite version.
ftxt = replace_exact(
ftxt,
"source = 'https://sqlite.org/2022/sqlite-autoconf-3390400.tar.gz'",
"source = 'https://sqlite.org/"
f'{SQLITE_VER_ANDROID[0]}/'
f"sqlite-autoconf-{SQLITE_VER_ANDROID[1]}.tar.gz'",
count=1,
)
# Give ourselves a handle to patch the OpenSSL build.
ftxt = replace_exact(
ftxt,
@ -358,11 +472,11 @@ def patch_modules_setup(python_dir: str, baseplatform: str) -> None:
assert ' ' not in python_dir
# Use the shiny new Setup.stdlib setup (Sounds like this will be default
# in the future?). It looks like by mucking with Setup.stdlib.in we can
# make pretty minimal changes to get the results we want without having
# to inject platform-specific linker flags and whatnot like we had to
# previously.
# Use the shiny new Setup.stdlib setup (Sounds like this will be
# default in the future?). It looks like by mucking with
# Setup.stdlib.in we can make pretty minimal changes to get the
# results we want without having to inject platform-specific linker
# flags and whatnot like we had to previously.
subprocess.run(
f'cd {python_dir}/Modules && ln -sf ./Setup.stdlib ./Setup.local',
shell=True,
@ -384,6 +498,7 @@ def patch_modules_setup(python_dir: str, baseplatform: str) -> None:
# This list should contain all possible compiled modules to start.
# If any .so files are coming out of builds or anything unrecognized
# is showing up in the final Setup.local or the build, add it here.
#
# TODO(ericf): could automate a warning for at least the last part
# of that.
cmodules = {
@ -515,9 +630,9 @@ def patch_modules_setup(python_dir: str, baseplatform: str) -> None:
should_enable = cmodule in enables
if not should_enable:
# If something is enabled but we don't want it, comment it out.
# Also stick all disabled stuff in a *disabled* section at the
# bottom so it won't get built even as shared.
# If something is enabled but we don't want it, comment it
# out. Also stick all disabled stuff in a *disabled* section
# at the bottom so it won't get built even as shared.
if is_enabled:
lines[indices[0]] = f'#{line}'
disable_at_end.add(cmodule)
@ -525,8 +640,9 @@ def patch_modules_setup(python_dir: str, baseplatform: str) -> None:
# Ok; its enabled and shouldn't be. What to do...
if bool(False):
# Uncomment the line to enable it.
# UPDATE: Seems this doesn't work; will have to figure out
# the right way to get things like _ctypes compiling
#
# UPDATE: Seems this doesn't work; will have to figure
# out the right way to get things like _ctypes compiling
# statically.
lines[indices[0]] = replace_exact(
line, f'#{linebegin}', linebegin, count=1
@ -548,20 +664,23 @@ def patch_modules_setup(python_dir: str, baseplatform: str) -> None:
# '#*static*\n',
# )
# Now for the one remaining ULTRA-HACKY bit: getting _ctypes building
# statically.
# Now for the one remaining ULTRA-HACKY bit: getting _ctypes
# building statically.
#
# It seems that as of 3.11 it is not possible to do this through
# Setup.stdlib.in like we do with our other stuff, as the line is
# commented out and we get errors if we change that. Looks like
# its not commented out anymore in 3.12 so we'll have to revisit
# this next year, but for now... hacks!
# commented out and we get errors if we change that. Looks like its
# not commented out anymore in 3.12 so we'll have to revisit this
# next year, but for now... hacks!
# To get this working for now we can dump an exact set of build flags
# for _ctypes into the Setup.stdlib.in. We just need to provide those
# per-platform. So, to get those:
# To get this working for now we can dump an exact set of build
# flags for _ctypes into the Setup.stdlib.in. We just need to
# provide those per-platform. So, to get those:
#
# - Run 'vanilla' ios/android/etc Python builds which generate .so versions
# - Look for the flags in the compiler command lines for those .c files
# - Stuff those flags in here for the associated platform.
#
if baseplatform == 'android':
ftxt = replace_exact(
ftxt,
@ -620,9 +739,9 @@ def patch_modules_setup(python_dir: str, baseplatform: str) -> None:
' _ctypes/malloc_closure.c'
' -I_ctypes/darwin'
f' -I$(srcdir)/../../../../merge/{archos}'
f'/{archbase}/libffi-3.4.2/include'
f'/{archbase}/libffi-{LIBFFI_VER_APPLE}/include'
f' -L$(srcdir)/../../../../merge/{archos}'
f'/{archbase}/libffi-3.4.2/lib'
f'/{archbase}/libffi-{LIBFFI_VER_APPLE}/lib'
' -DUSING_MALLOC_CLOSURE_DOT_C'
' -DHAVE_FFI_PREP_CIF_VAR=1'
' -DHAVE_FFI_PREP_CLOSURE_LOC=1 -DHAVE_FFI_CLOSURE_ALLOC=1'
@ -636,6 +755,7 @@ def patch_modules_setup(python_dir: str, baseplatform: str) -> None:
# Seems makesetup still has a bug where *any* line containing an equals
# gets interpreted as a global DEF instead of a target, which means our
# custom _ctypes lines above get ignored. Ugh.
#
# To fix it we need to revert the *=* case to what it apparently used to
# be: [A-Z]*=*. I wonder why this got changed and how has it not broken
# tons of stuff? Maybe I'm missing something.
@ -1093,11 +1213,13 @@ def gather(do_android: bool, do_apple: bool) -> None:
),
f'{bases2[base]}/openssl-{OPENSSL_VER_APPLE}/lib/libssl.a',
f'{bases2[base]}/openssl-{OPENSSL_VER_APPLE}/lib/libcrypto.a',
f'{bases2[base]}/xz-5.4.2/lib/liblzma.a',
f'{bases2[base]}/bzip2-1.0.8/lib/libbz2.a',
f'{bases2[base]}/xz-{XZ_VER_APPLE}/lib/liblzma.a',
f'{bases2[base]}/bzip2-{BZIP2_VER_APPLE}/lib/libbz2.a',
]
if base != 'mac':
out.append(f'{bases2[base]}/libffi-3.4.2/lib/libffi.a')
out.append(
f'{bases2[base]}/libffi-{LIBFFI_VER_APPLE}/lib/libffi.a'
)
return out
def _android_libs(base: str) -> list[str]: