Skip to content

Commit 6733dcb

Browse files
committed
cpython: add patches for 3.13.12 and 3.14.3
Version-specific patches adapted from existing ones: - relocatable-python-config: same change as 3.x-0001 but adjusted for line offset in 3.13+ python-config.sh.in (shared between 3.13 and 3.14 since the file is identical) - remove-module-deps: removes ProjectDependencies from the python project in PCbuild/pcbuild.sln (separate patches for 3.13 and 3.14 due to different GUID sets) - _ctypes-ffi (3.13 only): converts static formattable[] array to dynamic initialization for shared libffi compatibility. Not needed for 3.14 where this was fixed upstream by restructuring cfield.c into a named struct (python/cpython#117671) The _msi-vcxproj patch is no longer needed since msilib was removed in 3.13 per PEP 594 (python/cpython#104911).
1 parent 22db155 commit 6733dcb

5 files changed

Lines changed: 160 additions & 0 deletions

File tree

‎recipes/cpython/all/conandata.yml‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,23 @@ sources:
2424
url: "https://www.python.org/ftp/python/3.8.19/Python-3.8.19.tgz"
2525
sha256: "c7fa55a36e5c7a19ec37d8f90f60a2197548908c9ac8b31e7c0dbffdd470eeac"
2626
patches:
27+
"3.14.3":
28+
- patch_file: "patches/3.13/3.13.12-0001-relocatable-python-config.patch"
29+
patch_description: "Allow package to be relocatable"
30+
patch_type: "conan"
31+
- patch_file: "patches/3.14/3.14.3-0001-remove-module-deps.patch"
32+
patch_description: "Remove section of solution file forcing projects to be built that might not be used for this recipe"
33+
patch_type: "conan"
34+
"3.13.12":
35+
- patch_file: "patches/3.13/3.13.12-0001-_ctypes-ffi.patch"
36+
patch_description: "Support shared libffi"
37+
patch_type: "portability"
38+
- patch_file: "patches/3.13/3.13.12-0001-relocatable-python-config.patch"
39+
patch_description: "Allow package to be relocatable"
40+
patch_type: "conan"
41+
- patch_file: "patches/3.13/3.13.12-0002-remove-module-deps.patch"
42+
patch_description: "Remove section of solution file forcing projects to be built that might not be used for this recipe"
43+
patch_type: "conan"
2744
"3.12.7":
2845
- patch_file: "patches/3.9/3.9.7-0002-_msi-vcxproj.patch"
2946
patch_description: "Fix ARM/ARM64 mismatch in project file"
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
--- a/Modules/_ctypes/cfield.c
2+
+++ b/Modules/_ctypes/cfield.c
3+
@@ -1462,7 +1462,11 @@
4+
return PyLong_FromVoidPtr(*(void **)ptr);
5+
}
6+
7+
-static struct fielddesc formattable[] = {
8+
+#define FORMATTABLE_SIZE 30
9+
+static struct fielddesc formattable[FORMATTABLE_SIZE];
10+
+
11+
+static void formattable_init(void) {
12+
+struct fielddesc my_formattable[] = {
13+
{ 's', s_set, s_get, NULL},
14+
{ 'b', b_set, b_get, NULL},
15+
{ 'B', B_set, B_get, NULL},
16+
@@ -1499,6 +1503,11 @@
17+
{ 'O', O_set, O_get, NULL},
18+
{ 0, NULL, NULL, NULL},
19+
};
20+
+ size_t nb = 1;
21+
+ for (struct fielddesc *pos = my_formattable; pos->code; ++pos, ++nb);
22+
+ if (FORMATTABLE_SIZE < nb) abort();
23+
+ memcpy(formattable, my_formattable, nb * sizeof(struct fielddesc));
24+
+}
25+
26+
/*
27+
Ideas: Implement VARIANT in this table, using 'V' code.
28+
@@ -1586,6 +1595,7 @@
29+
30+
if (!initialized) {
31+
initialized = 1;
32+
+ formattable_init();
33+
_ctypes_init_fielddesc();
34+
}
35+
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
--- a/Misc/python-config.sh.in
2+
+++ b/Misc/python-config.sh.in
3+
@@ -36,7 +36,7 @@
4+
# locations. Keep prefix & exec_prefix using their original values in case
5+
# they are referenced in other configure variables, to prevent double
6+
# substitution, issue #22140.
7+
-prefix="@prefix@"
8+
+prefix="$PYTHON_ROOT"
9+
exec_prefix="@exec_prefix@"
10+
exec_prefix_real=${prefix_real}
11+
includedir=$(echo "@includedir@" | sed "s#$prefix#$prefix_real#")
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
--- a/PCbuild/pcbuild.sln 2026-03-30 11:34:07.658276559 +0000
2+
+++ b/PCbuild/pcbuild.sln 2026-03-30 11:34:49.638000084 +0000
3+
@@ -9,45 +9,6 @@
4+
EndProjectSection
5+
EndProject
6+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python", "python.vcxproj", "{B11D750F-CD1F-4A96-85CE-E69A5C5259F9}"
7+
- ProjectSection(ProjectDependencies) = postProject
8+
- {01FDF29A-40A1-46DF-84F5-85EBBD2A2410} = {01FDF29A-40A1-46DF-84F5-85EBBD2A2410}
9+
- {0E9791DB-593A-465F-98BC-681011311617} = {0E9791DB-593A-465F-98BC-681011311617}
10+
- {0E9791DB-593A-465F-98BC-681011311618} = {0E9791DB-593A-465F-98BC-681011311618}
11+
- {12728250-16EC-4DC6-94D7-E21DD88947F8} = {12728250-16EC-4DC6-94D7-E21DD88947F8}
12+
- {13CECB97-4119-4316-9D42-8534019A5A44} = {13CECB97-4119-4316-9D42-8534019A5A44}
13+
- {16BFE6F0-22EF-40B5-B831-7E937119EF10} = {16BFE6F0-22EF-40B5-B831-7E937119EF10}
14+
- {17E1E049-C309-4D79-843F-AE483C264AEA} = {17E1E049-C309-4D79-843F-AE483C264AEA}
15+
- {18CAE28C-B454-46C1-87A0-493D91D97F03} = {18CAE28C-B454-46C1-87A0-493D91D97F03}
16+
- {2097F1C1-597C-4167-93E3-656A7D6339B2} = {2097F1C1-597C-4167-93E3-656A7D6339B2}
17+
- {28B5D777-DDF2-4B6B-B34F-31D938813856} = {28B5D777-DDF2-4B6B-B34F-31D938813856}
18+
- {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781} = {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}
19+
- {384C224A-7474-476E-A01B-750EA7DE918C} = {384C224A-7474-476E-A01B-750EA7DE918C}
20+
- {447F05A8-F581-4CAC-A466-5AC7936E207E} = {447F05A8-F581-4CAC-A466-5AC7936E207E}
21+
- {4946ECAC-2E69-4BF8-A90A-F5136F5094DF} = {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}
22+
- {494BAC80-A60C-43A9-99E7-ACB691CE2C4D} = {494BAC80-A60C-43A9-99E7-ACB691CE2C4D}
23+
- {54B1431F-B86B-4ACB-B28C-88BCF93191D8} = {54B1431F-B86B-4ACB-B28C-88BCF93191D8}
24+
- {6901D91C-6E48-4BB7-9FEC-700C8131DF1D} = {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}
25+
- {6DAC66D9-E703-4624-BE03-49112AB5AA62} = {6DAC66D9-E703-4624-BE03-49112AB5AA62}
26+
- {73FCD2BD-F133-46B7-8EC1-144CD82A59D5} = {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}
27+
- {78D80A15-BD8C-44E2-B49E-1F05B0A0A687} = {78D80A15-BD8C-44E2-B49E-1F05B0A0A687}
28+
- {86937F53-C189-40EF-8CE8-8759D8E7D480} = {86937F53-C189-40EF-8CE8-8759D8E7D480}
29+
- {885D4898-D08D-4091-9C40-C700CFE3FC5A} = {885D4898-D08D-4091-9C40-C700CFE3FC5A}
30+
- {900342D7-516A-4469-B1AD-59A66E49A25F} = {900342D7-516A-4469-B1AD-59A66E49A25F}
31+
- {9E48B300-37D1-11DD-8C41-005056C00008} = {9E48B300-37D1-11DD-8C41-005056C00008}
32+
- {9EC7190A-249F-4180-A900-548FDCF3055F} = {9EC7190A-249F-4180-A900-548FDCF3055F}
33+
- {A2697BD3-28C1-4AEC-9106-8B748639FD16} = {A2697BD3-28C1-4AEC-9106-8B748639FD16}
34+
- {A840DDFB-ED50-484B-B527-B32E7CF90FD5} = {A840DDFB-ED50-484B-B527-B32E7CF90FD5}
35+
- {B244E787-C445-441C-BDF4-5A4F1A3A1E51} = {B244E787-C445-441C-BDF4-5A4F1A3A1E51}
36+
- {C6E20F84-3247-4AD6-B051-B073268F73BA} = {C6E20F84-3247-4AD6-B051-B073268F73BA}
37+
- {CB435430-EBB1-478B-8F4E-C256F6838F55} = {CB435430-EBB1-478B-8F4E-C256F6838F55}
38+
- {D06B6426-4762-44CC-8BAD-D79052507F2F} = {D06B6426-4762-44CC-8BAD-D79052507F2F}
39+
- {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E} = {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}
40+
- {ECC7CEAC-A5E5-458E-BB9E-2413CC847881} = {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}
41+
- {F749B822-B489-4CA5-A3AD-CE078F5F338A} = {F749B822-B489-4CA5-A3AD-CE078F5F338A}
42+
- {F9D71780-F393-11E0-BE50-0800200C9A66} = {F9D71780-F393-11E0-BE50-0800200C9A66}
43+
- {FCBE1EF2-E0F0-40B1-88B5-00A35D378742} = {FCBE1EF2-E0F0-40B1-88B5-00A35D378742}
44+
- {FDB84CBB-2FB6-47C8-A2D6-091E0833239D} = {FDB84CBB-2FB6-47C8-A2D6-091E0833239D}
45+
- EndProjectSection
46+
EndProject
47+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythoncore", "pythoncore.vcxproj", "{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}"
48+
ProjectSection(ProjectDependencies) = postProject
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
--- a/PCbuild/pcbuild.sln 2026-03-30 11:34:08.294292271 +0000
2+
+++ b/PCbuild/pcbuild.sln 2026-03-30 11:35:01.115597212 +0000
3+
@@ -9,46 +9,6 @@
4+
EndProjectSection
5+
EndProject
6+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python", "python.vcxproj", "{B11D750F-CD1F-4A96-85CE-E69A5C5259F9}"
7+
- ProjectSection(ProjectDependencies) = postProject
8+
- {01FDF29A-40A1-46DF-84F5-85EBBD2A2410} = {01FDF29A-40A1-46DF-84F5-85EBBD2A2410}
9+
- {07029B86-F3E9-443E-86FB-78AA6D47FED1} = {07029B86-F3E9-443E-86FB-78AA6D47FED1}
10+
- {0E9791DB-593A-465F-98BC-681011311617} = {0E9791DB-593A-465F-98BC-681011311617}
11+
- {0E9791DB-593A-465F-98BC-681011311618} = {0E9791DB-593A-465F-98BC-681011311618}
12+
- {12728250-16EC-4DC6-94D7-E21DD88947F8} = {12728250-16EC-4DC6-94D7-E21DD88947F8}
13+
- {13CECB97-4119-4316-9D42-8534019A5A44} = {13CECB97-4119-4316-9D42-8534019A5A44}
14+
- {16BFE6F0-22EF-40B5-B831-7E937119EF10} = {16BFE6F0-22EF-40B5-B831-7E937119EF10}
15+
- {17E1E049-C309-4D79-843F-AE483C264AEA} = {17E1E049-C309-4D79-843F-AE483C264AEA}
16+
- {18CAE28C-B454-46C1-87A0-493D91D97F03} = {18CAE28C-B454-46C1-87A0-493D91D97F03}
17+
- {2097F1C1-597C-4167-93E3-656A7D6339B2} = {2097F1C1-597C-4167-93E3-656A7D6339B2}
18+
- {28B5D777-DDF2-4B6B-B34F-31D938813856} = {28B5D777-DDF2-4B6B-B34F-31D938813856}
19+
- {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781} = {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}
20+
- {384C224A-7474-476E-A01B-750EA7DE918C} = {384C224A-7474-476E-A01B-750EA7DE918C}
21+
- {447F05A8-F581-4CAC-A466-5AC7936E207E} = {447F05A8-F581-4CAC-A466-5AC7936E207E}
22+
- {4946ECAC-2E69-4BF8-A90A-F5136F5094DF} = {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}
23+
- {494BAC80-A60C-43A9-99E7-ACB691CE2C4D} = {494BAC80-A60C-43A9-99E7-ACB691CE2C4D}
24+
- {54B1431F-B86B-4ACB-B28C-88BCF93191D8} = {54B1431F-B86B-4ACB-B28C-88BCF93191D8}
25+
- {6901D91C-6E48-4BB7-9FEC-700C8131DF1D} = {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}
26+
- {6DAC66D9-E703-4624-BE03-49112AB5AA62} = {6DAC66D9-E703-4624-BE03-49112AB5AA62}
27+
- {73FCD2BD-F133-46B7-8EC1-144CD82A59D5} = {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}
28+
- {78D80A15-BD8C-44E2-B49E-1F05B0A0A687} = {78D80A15-BD8C-44E2-B49E-1F05B0A0A687}
29+
- {86937F53-C189-40EF-8CE8-8759D8E7D480} = {86937F53-C189-40EF-8CE8-8759D8E7D480}
30+
- {885D4898-D08D-4091-9C40-C700CFE3FC5A} = {885D4898-D08D-4091-9C40-C700CFE3FC5A}
31+
- {900342D7-516A-4469-B1AD-59A66E49A25F} = {900342D7-516A-4469-B1AD-59A66E49A25F}
32+
- {9E48B300-37D1-11DD-8C41-005056C00008} = {9E48B300-37D1-11DD-8C41-005056C00008}
33+
- {9EC7190A-249F-4180-A900-548FDCF3055F} = {9EC7190A-249F-4180-A900-548FDCF3055F}
34+
- {A2697BD3-28C1-4AEC-9106-8B748639FD16} = {A2697BD3-28C1-4AEC-9106-8B748639FD16}
35+
- {A840DDFB-ED50-484B-B527-B32E7CF90FD5} = {A840DDFB-ED50-484B-B527-B32E7CF90FD5}
36+
- {B244E787-C445-441C-BDF4-5A4F1A3A1E51} = {B244E787-C445-441C-BDF4-5A4F1A3A1E51}
37+
- {C6E20F84-3247-4AD6-B051-B073268F73BA} = {C6E20F84-3247-4AD6-B051-B073268F73BA}
38+
- {CB435430-EBB1-478B-8F4E-C256F6838F55} = {CB435430-EBB1-478B-8F4E-C256F6838F55}
39+
- {D06B6426-4762-44CC-8BAD-D79052507F2F} = {D06B6426-4762-44CC-8BAD-D79052507F2F}
40+
- {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E} = {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}
41+
- {ECC7CEAC-A5E5-458E-BB9E-2413CC847881} = {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}
42+
- {F749B822-B489-4CA5-A3AD-CE078F5F338A} = {F749B822-B489-4CA5-A3AD-CE078F5F338A}
43+
- {F9D71780-F393-11E0-BE50-0800200C9A66} = {F9D71780-F393-11E0-BE50-0800200C9A66}
44+
- {FCBE1EF2-E0F0-40B1-88B5-00A35D378742} = {FCBE1EF2-E0F0-40B1-88B5-00A35D378742}
45+
- {FDB84CBB-2FB6-47C8-A2D6-091E0833239D} = {FDB84CBB-2FB6-47C8-A2D6-091E0833239D}
46+
- EndProjectSection
47+
EndProject
48+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythoncore", "pythoncore.vcxproj", "{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}"
49+
ProjectSection(ProjectDependencies) = postProject

0 commit comments

Comments
 (0)