mirror of
https://github.com/pyenv/pyenv.git
synced 2025-11-08 11:33:49 -05:00
Compare commits
654 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
20df064204 | ||
|
|
1cce1cadbd | ||
|
|
fc83d32317 | ||
|
|
cb0402214e | ||
|
|
35e0b0e24a | ||
|
|
57f1c3b5b4 | ||
|
|
637fd914dc | ||
|
|
d2bd4c06ef | ||
|
|
5f75198569 | ||
|
|
bbcecc7561 | ||
|
|
e154693dc6 | ||
|
|
1706436fae | ||
|
|
859b260764 | ||
|
|
fadb3f3389 | ||
|
|
f81bffc95e | ||
|
|
d517315d25 | ||
|
|
70934bd635 | ||
|
|
b8686ffdad | ||
|
|
c95b1f2b95 | ||
|
|
c878150dac | ||
|
|
6633382417 | ||
|
|
83056fc404 | ||
|
|
cb1390cb49 | ||
|
|
159327ff25 | ||
|
|
e2125b2750 | ||
|
|
adca14a910 | ||
|
|
fa7bb12221 | ||
|
|
fa384f134e | ||
|
|
ca2032452b | ||
|
|
713cfea475 | ||
|
|
d73ae603c7 | ||
|
|
84486ceb70 | ||
|
|
1270ca6b0b | ||
|
|
c8abcd23f0 | ||
|
|
748a1ff0ec | ||
|
|
20a146ed6e | ||
|
|
ac4de22265 | ||
|
|
d02b929d07 | ||
|
|
4ce52bd333 | ||
|
|
d576ac4c8c | ||
|
|
aa950f939a | ||
|
|
13e67a37ab | ||
|
|
750ccb1129 | ||
|
|
5cf4eeb5cb | ||
|
|
0dd61f8777 | ||
|
|
a7044d2c06 | ||
|
|
d010b4110a | ||
|
|
e5db32499c | ||
|
|
ddf952ab2d | ||
|
|
fdbcdd38f1 | ||
|
|
7b04d3a8e6 | ||
|
|
d9b9c4588d | ||
|
|
13ae1461ff | ||
|
|
b5d7216f5c | ||
|
|
bba1289e23 | ||
|
|
e0d109c227 | ||
|
|
0d07cda969 | ||
|
|
a7f3e3a5be | ||
|
|
0d2fb35cee | ||
|
|
fd3c891d76 | ||
|
|
da9392fd09 | ||
|
|
b4511f0787 | ||
|
|
f0a8e72c36 | ||
|
|
13deda8875 | ||
|
|
891dc31c92 | ||
|
|
debf1abd8b | ||
|
|
8bff74dbd4 | ||
|
|
37f6349b01 | ||
|
|
35795148fb | ||
|
|
a52e79856e | ||
|
|
fecb03fcb3 | ||
|
|
aab562c696 | ||
|
|
db308d830e | ||
|
|
73e41c250e | ||
|
|
a59430c7c4 | ||
|
|
328fd42c3a | ||
|
|
58b09b7461 | ||
|
|
92f7510b4b | ||
|
|
4464fda5af | ||
|
|
cf17d4a548 | ||
|
|
3e3f40fefc | ||
|
|
7838707595 | ||
|
|
b0b862ca64 | ||
|
|
5998f4f7ab | ||
|
|
1edded3426 | ||
|
|
e887a3d062 | ||
|
|
7355554fdc | ||
|
|
1146ce6e9c | ||
|
|
4e676667cf | ||
|
|
79d979f954 | ||
|
|
7ad2162004 | ||
|
|
6656066d4f | ||
|
|
9edeafbc77 | ||
|
|
54e58dc778 | ||
|
|
a9a3c96bbd | ||
|
|
b1d1ceba82 | ||
|
|
8dd8fa2d66 | ||
|
|
30ba8356bc | ||
|
|
e18620c0a7 | ||
|
|
6759b7cdf1 | ||
|
|
60dbcea612 | ||
|
|
2924886a77 | ||
|
|
58e3a0ce18 | ||
|
|
4cc08407ed | ||
|
|
526750e889 | ||
|
|
641916270b | ||
|
|
c010935abd | ||
|
|
fab0082bd5 | ||
|
|
0e1b1229ce | ||
|
|
4f93366be8 | ||
|
|
80067632b6 | ||
|
|
1c1df80e0e | ||
|
|
e18ea212e9 | ||
|
|
4ef6570781 | ||
|
|
35aa7e52ce | ||
|
|
2197566c42 | ||
|
|
32ba5d5e61 | ||
|
|
e2a1c77666 | ||
|
|
6889fbc147 | ||
|
|
5c8735cdbf | ||
|
|
132d546453 | ||
|
|
84cc7825da | ||
|
|
b5008ce74e | ||
|
|
61d702405d | ||
|
|
3086e6e790 | ||
|
|
5a122c6732 | ||
|
|
332772abc5 | ||
|
|
8ec4a60db1 | ||
|
|
80e418eca5 | ||
|
|
47ab85ccf7 | ||
|
|
afb14d2072 | ||
|
|
de17b20a88 | ||
|
|
3bdafde5bf | ||
|
|
1bacfa5445 | ||
|
|
f75e028401 | ||
|
|
23048b4f63 | ||
|
|
8ee5611755 | ||
|
|
45b99abec6 | ||
|
|
9212585098 | ||
|
|
5ca0900a23 | ||
|
|
6e74abc42a | ||
|
|
c20aad5ef9 | ||
|
|
9e4ead1f93 | ||
|
|
66ba35817b | ||
|
|
acb5f572b2 | ||
|
|
63a6f1bec4 | ||
|
|
abcbf6e112 | ||
|
|
ec2d2b970b | ||
|
|
338c3666de | ||
|
|
af5bc2bc97 | ||
|
|
b2f7629c56 | ||
|
|
a2634350f4 | ||
|
|
2fd00096de | ||
|
|
dde9a31f2e | ||
|
|
9ee109b661 | ||
|
|
16d0f50b37 | ||
|
|
4c4457b22f | ||
|
|
06e88164cc | ||
|
|
12e6f92a56 | ||
|
|
5ec5f9598f | ||
|
|
f86a799b5f | ||
|
|
1e4c759b7a | ||
|
|
8c0603acf2 | ||
|
|
61e2f742fc | ||
|
|
bc185d76cd | ||
|
|
b4a5bb3d85 | ||
|
|
36efced5b7 | ||
|
|
33335507b0 | ||
|
|
7c18f8a10c | ||
|
|
ee9c1d2b1c | ||
|
|
f06fb60b1f | ||
|
|
604cd77d26 | ||
|
|
c8bbc481ee | ||
|
|
ac198a66ae | ||
|
|
086f594b8c | ||
|
|
878e96978a | ||
|
|
390a1dd8c7 | ||
|
|
4be2dc685a | ||
|
|
170636769f | ||
|
|
f9a0bfbe91 | ||
|
|
d6b6e470b9 | ||
|
|
e702adaee1 | ||
|
|
79bdfce276 | ||
|
|
665f1f9aa4 | ||
|
|
b66160cc42 | ||
|
|
3fbbc155c7 | ||
|
|
f31a06dc19 | ||
|
|
1e5938a9d0 | ||
|
|
f34dbba9b5 | ||
|
|
4860b9a059 | ||
|
|
2c02f4f0f8 | ||
|
|
f1aab847e7 | ||
|
|
b0dc8b77ba | ||
|
|
666aceea6c | ||
|
|
d9cb389a46 | ||
|
|
32740a1e86 | ||
|
|
cc776ff875 | ||
|
|
2073e6d4ca | ||
|
|
5f62ad7680 | ||
|
|
5b49256330 | ||
|
|
d51999adf5 | ||
|
|
9f12152463 | ||
|
|
f0f2e626f4 | ||
|
|
c340532286 | ||
|
|
131e44afcb | ||
|
|
a6b0a2846e | ||
|
|
e44490c639 | ||
|
|
421ff608fc | ||
|
|
00f7d6249a | ||
|
|
a0b02db770 | ||
|
|
bd5274bbbe | ||
|
|
1158adbb2f | ||
|
|
9309050864 | ||
|
|
89d3d0c33d | ||
|
|
9e1bd80668 | ||
|
|
a2350d3d9d | ||
|
|
be9aa0c899 | ||
|
|
50a48764ff | ||
|
|
4c3f2cce3e | ||
|
|
4c302a022d | ||
|
|
c4e556eded | ||
|
|
a804887307 | ||
|
|
b7efafe599 | ||
|
|
982c5b36d3 | ||
|
|
e0886f552d | ||
|
|
cdecf14535 | ||
|
|
fdd61c29e6 | ||
|
|
09ca07981d | ||
|
|
6077d64b71 | ||
|
|
d40aa12a27 | ||
|
|
ef3b5072ce | ||
|
|
b938abdea1 | ||
|
|
c0ea15226d | ||
|
|
511756f0c7 | ||
|
|
c53cce21c3 | ||
|
|
136bfab5f7 | ||
|
|
93025e9aa4 | ||
|
|
189afa88c6 | ||
|
|
bfb5e0ec1e | ||
|
|
6c0f6e05e9 | ||
|
|
569992f25f | ||
|
|
f53aa3e64e | ||
|
|
b61536e9ee | ||
|
|
5b90e62984 | ||
|
|
5c5d647a06 | ||
|
|
01e5eaecf3 | ||
|
|
b103763fa8 | ||
|
|
553f9a4d26 | ||
|
|
d15b3674d8 | ||
|
|
90b68684ac | ||
|
|
a7f44c3955 | ||
|
|
c5d2050254 | ||
|
|
bb14f22522 | ||
|
|
ccd80a5b80 | ||
|
|
061afe00de | ||
|
|
7be79f36de | ||
|
|
852a50e9e0 | ||
|
|
bd5825e277 | ||
|
|
dc70546565 | ||
|
|
559cc59677 | ||
|
|
d589778b6b | ||
|
|
ebd4d98227 | ||
|
|
9e03d1b62e | ||
|
|
48f742446a | ||
|
|
82ef0424d6 | ||
|
|
c8aff5f1b7 | ||
|
|
d511f7ba88 | ||
|
|
fd003a8f06 | ||
|
|
973597d67d | ||
|
|
2bf6111fa0 | ||
|
|
db939bbcfc | ||
|
|
23677c5124 | ||
|
|
9052491a05 | ||
|
|
7307b185d2 | ||
|
|
5221c4aeea | ||
|
|
943015ebb2 | ||
|
|
3c51754e83 | ||
|
|
87c6fed697 | ||
|
|
7c0c3cc22b | ||
|
|
0129a87bd3 | ||
|
|
806b30d6ce | ||
|
|
a488feb9bf | ||
|
|
8ac91b4fd6 | ||
|
|
5d84eed869 | ||
|
|
c9eab47752 | ||
|
|
f44cb70d93 | ||
|
|
501c97aeea | ||
|
|
cadebd8e65 | ||
|
|
71d2e4549e | ||
|
|
592271b86f | ||
|
|
a992892225 | ||
|
|
898fe1bb9b | ||
|
|
8bf79eb44c | ||
|
|
1e3ee5e3aa | ||
|
|
dd62b0d155 | ||
|
|
f77c2d7eab | ||
|
|
d1ae4a1225 | ||
|
|
1ec3c6f177 | ||
|
|
34c0e60798 | ||
|
|
58c776a136 | ||
|
|
dc4e24e681 | ||
|
|
70635dade8 | ||
|
|
c52d26d8db | ||
|
|
6e9a763537 | ||
|
|
ea7b5c4aea | ||
|
|
af122400ed | ||
|
|
26b8ba1677 | ||
|
|
41210bb16f | ||
|
|
bdfed51d72 | ||
|
|
0164e2bd59 | ||
|
|
4d762bca7b | ||
|
|
366c980166 | ||
|
|
1bfb2d7607 | ||
|
|
d0b5ab6cde | ||
|
|
ece59ca827 | ||
|
|
86fbc6861d | ||
|
|
2a3b286b71 | ||
|
|
86497f72c2 | ||
|
|
cf81e5a0c4 | ||
|
|
31f1732fa2 | ||
|
|
2c32a6be15 | ||
|
|
cd2c26ef71 | ||
|
|
14feb59960 | ||
|
|
5a96d9f2cd | ||
|
|
ae3a61d8dd | ||
|
|
098227f26c | ||
|
|
a56bcf1015 | ||
|
|
be595ededa | ||
|
|
e394cb898d | ||
|
|
5e8719ab0e | ||
|
|
ae4d48932f | ||
|
|
a8f5fc13ee | ||
|
|
c3e29f08b3 | ||
|
|
5b009e8767 | ||
|
|
e49794521e | ||
|
|
3e0f5e798c | ||
|
|
0f2d659732 | ||
|
|
18fe640d29 | ||
|
|
1b6657e751 | ||
|
|
0255cfa8df | ||
|
|
30a0234ccb | ||
|
|
b1381d1d46 | ||
|
|
2a0d576681 | ||
|
|
8f82fc63e2 | ||
|
|
a8ca63fcc0 | ||
|
|
89786b909f | ||
|
|
3005c46643 | ||
|
|
a7afd20bfc | ||
|
|
df9fa1dc30 | ||
|
|
81e797be12 | ||
|
|
0d6cfcc1bd | ||
|
|
d1b7bd47a3 | ||
|
|
a9686fcae0 | ||
|
|
c0ebcd7228 | ||
|
|
1fb6e795b6 | ||
|
|
84f3f77a39 | ||
|
|
174b7e72a1 | ||
|
|
7cbaff3803 | ||
|
|
a0a1ae89ab | ||
|
|
df671621e9 | ||
|
|
7097f8204e | ||
|
|
1487135415 | ||
|
|
a72ea0abca | ||
|
|
36fc10fbfd | ||
|
|
4500a33c73 | ||
|
|
ce0be04ad4 | ||
|
|
4e0ba2f47d | ||
|
|
20a1f0cd7a | ||
|
|
ac246e160f | ||
|
|
25c9195b90 | ||
|
|
318f85162e | ||
|
|
c3b17c4bbb | ||
|
|
32663fb8a4 | ||
|
|
089b828b0f | ||
|
|
eacde87acf | ||
|
|
22c0202231 | ||
|
|
49bf595266 | ||
|
|
b5f69fe58a | ||
|
|
9c7ec0ce0a | ||
|
|
d389885466 | ||
|
|
0e7cfc3b3d | ||
|
|
69377c65de | ||
|
|
ddc56ebe3a | ||
|
|
68a77df0fd | ||
|
|
fcf539ecef | ||
|
|
8bf5d9d303 | ||
|
|
ebfba473cf | ||
|
|
9aa08ed763 | ||
|
|
d6d6bc8bb0 | ||
|
|
a0a5822785 | ||
|
|
3cfe81a3f8 | ||
|
|
f3d008fddd | ||
|
|
4039709dfe | ||
|
|
38de38e3d5 | ||
|
|
908d57d677 | ||
|
|
9fc7ef3a17 | ||
|
|
ecd67c8223 | ||
|
|
31b7e1c390 | ||
|
|
8a56fe641f | ||
|
|
b7f4ace335 | ||
|
|
a7cba17fb7 | ||
|
|
a71e590a44 | ||
|
|
3798638a6a | ||
|
|
e29d2b666b | ||
|
|
c9da22d559 | ||
|
|
8bebdb7f1a | ||
|
|
6563b64d0b | ||
|
|
eefdc57562 | ||
|
|
0aeeb6fdcb | ||
|
|
b5547afbc8 | ||
|
|
17f44b7cd6 | ||
|
|
10bf9d22c6 | ||
|
|
525dac36f6 | ||
|
|
d24bb6eb7e | ||
|
|
eb68ec9488 | ||
|
|
aed0c91d61 | ||
|
|
a10c787f9b | ||
|
|
4157973301 | ||
|
|
2350e57b00 | ||
|
|
2b174ab69f | ||
|
|
7dd50144d5 | ||
|
|
6103468023 | ||
|
|
0f596d2504 | ||
|
|
070e1c859f | ||
|
|
3faeda67bb | ||
|
|
ec220c4476 | ||
|
|
01f596e33c | ||
|
|
abd4469920 | ||
|
|
2891972d85 | ||
|
|
3895488c53 | ||
|
|
8523111193 | ||
|
|
02a4b33b62 | ||
|
|
70e173381e | ||
|
|
e7ed7fa27e | ||
|
|
b551fed8d5 | ||
|
|
6efe9d1f40 | ||
|
|
612dd5e2e8 | ||
|
|
3bb3de7529 | ||
|
|
79481d686f | ||
|
|
6d279501b5 | ||
|
|
0708c6c968 | ||
|
|
62395cabb5 | ||
|
|
78cecd2060 | ||
|
|
b531e0f420 | ||
|
|
e405c7898c | ||
|
|
3176c8b71c | ||
|
|
40a88f050b | ||
|
|
9a98bfae48 | ||
|
|
b610909314 | ||
|
|
333946b3f8 | ||
|
|
64c0828562 | ||
|
|
ee75a75385 | ||
|
|
377f6a13fe | ||
|
|
15543ba68b | ||
|
|
dae256f3e0 | ||
|
|
9305f1baf4 | ||
|
|
a9052c68e7 | ||
|
|
e1d83d1212 | ||
|
|
aefff77b4b | ||
|
|
a899d2507c | ||
|
|
53dc6b6891 | ||
|
|
5f46979079 | ||
|
|
5e9ef18002 | ||
|
|
6fa07b32e5 | ||
|
|
dda597efb3 | ||
|
|
3768f1d7db | ||
|
|
d352b4810d | ||
|
|
83e5459cfb | ||
|
|
7d02b2463b | ||
|
|
abc28d3a53 | ||
|
|
9baa6efeda | ||
|
|
fe04483773 | ||
|
|
8ed7912759 | ||
|
|
3018241aee | ||
|
|
99092d7fd1 | ||
|
|
7fa3a3f15c | ||
|
|
eb4c4c526a | ||
|
|
15d85a828c | ||
|
|
4de590433b | ||
|
|
bd4e24cc30 | ||
|
|
ddb335c197 | ||
|
|
1373ce433c | ||
|
|
6b0418226f | ||
|
|
9479db96fe | ||
|
|
6309aaf295 | ||
|
|
336cc885cf | ||
|
|
3f39e8a944 | ||
|
|
337b92d95d | ||
|
|
781db9bb8c | ||
|
|
775a4b6379 | ||
|
|
22b7de95d6 | ||
|
|
0e3e812aa8 | ||
|
|
962fdd974d | ||
|
|
f07184b34c | ||
|
|
b246ba437f | ||
|
|
bdd58ff278 | ||
|
|
ec9fb5492b | ||
|
|
cc35fbd0b8 | ||
|
|
dd523b706d | ||
|
|
0c69fc9501 | ||
|
|
e302f0d443 | ||
|
|
80414b1b5b | ||
|
|
e389c8d906 | ||
|
|
cd7c8af487 | ||
|
|
835707da22 | ||
|
|
ee7b974160 | ||
|
|
62213bbfff | ||
|
|
75ca7613ad | ||
|
|
21c75c19e3 | ||
|
|
99346da8eb | ||
|
|
1a276f2d78 | ||
|
|
650d9bd652 | ||
|
|
9be58802c1 | ||
|
|
4f21d9a2ea | ||
|
|
5603eb51c9 | ||
|
|
c6e3f95f67 | ||
|
|
7190216884 | ||
|
|
b7eea9003b | ||
|
|
1e96b2c321 | ||
|
|
0bdae9fd9d | ||
|
|
9c7bdbc5e2 | ||
|
|
97f244fbb5 | ||
|
|
c057a80c82 | ||
|
|
0e3f04c429 | ||
|
|
3de7c5f298 | ||
|
|
996a2d12a5 | ||
|
|
4812e0387b | ||
|
|
334e413722 | ||
|
|
2f1fb3a6e1 | ||
|
|
d48a954c6c | ||
|
|
d08c9cfb36 | ||
|
|
43235c2716 | ||
|
|
cbf3983ac5 | ||
|
|
9c1d677d23 | ||
|
|
eee72eecdf | ||
|
|
09494e3943 | ||
|
|
8eeddaebc1 | ||
|
|
dad0fc708a | ||
|
|
a2d51328ee | ||
|
|
3faba7d47c | ||
|
|
3f8ea04cc2 | ||
|
|
f7a3ffd2d8 | ||
|
|
df0437f111 | ||
|
|
d6ba379e08 | ||
|
|
47436606b5 | ||
|
|
b3ba0fd7e3 | ||
|
|
750c63c643 | ||
|
|
c8ad3385c7 | ||
|
|
11067155f4 | ||
|
|
18df84f535 | ||
|
|
098fb9f07a | ||
|
|
fc90785f75 | ||
|
|
1ec57a0c68 | ||
|
|
7973e59473 | ||
|
|
b1e3f13a85 | ||
|
|
a6c15fb242 | ||
|
|
63c4b7f45c | ||
|
|
20e4f53aac | ||
|
|
35f7ef8708 | ||
|
|
83429344ea | ||
|
|
83f97ef2b3 | ||
|
|
b960f863cc | ||
|
|
a41d7561d0 | ||
|
|
980b03b582 | ||
|
|
f3aba64a84 | ||
|
|
fc33f674b4 | ||
|
|
f5663f084a | ||
|
|
a1d39c1e25 | ||
|
|
90dfb261e2 | ||
|
|
367c6765ab | ||
|
|
abbb606041 | ||
|
|
359aa1f4c6 | ||
|
|
b95d0d9542 | ||
|
|
15ff779eb5 | ||
|
|
f35aea984f | ||
|
|
806b9384a1 | ||
|
|
5861aee062 | ||
|
|
967d9b6a1b | ||
|
|
ed2d2a921e | ||
|
|
143e0be9fc | ||
|
|
694b551935 | ||
|
|
59846ca9b1 | ||
|
|
adbb59ed2c | ||
|
|
05143526f4 | ||
|
|
296ce06d69 | ||
|
|
3daed2e517 | ||
|
|
a8e207f330 | ||
|
|
5f74547379 | ||
|
|
c8ba27fd07 | ||
|
|
9daf81f16e | ||
|
|
23e1c5049f | ||
|
|
7ca1923a44 | ||
|
|
445d59ae2e | ||
|
|
bc9687576e | ||
|
|
907a86b743 | ||
|
|
812f02662b | ||
|
|
5c0570cdc0 | ||
|
|
43c4063f51 | ||
|
|
aab718844a | ||
|
|
59050aa093 | ||
|
|
42349d9d24 | ||
|
|
2ba2d8797b | ||
|
|
04d9342f82 | ||
|
|
d85bc23592 | ||
|
|
f114557698 | ||
|
|
95ad305bcb | ||
|
|
6c0625710f | ||
|
|
86e1b9a8ad | ||
|
|
b64c445b61 | ||
|
|
1864fd7b93 | ||
|
|
6f27c91b5f | ||
|
|
b704c4242c | ||
|
|
978d8e0f9a | ||
|
|
65ddf84926 | ||
|
|
9a59c8490a | ||
|
|
4a14d2f62a | ||
|
|
66412f556d | ||
|
|
785738d5b3 | ||
|
|
71f09a6d71 | ||
|
|
9619e6bd53 | ||
|
|
2c3998f88b | ||
|
|
69d47d5fd7 | ||
|
|
dc145fa5a2 | ||
|
|
5149c53165 | ||
|
|
c5e4bab858 | ||
|
|
b943955dbf | ||
|
|
643023d98f | ||
|
|
af53c790cc | ||
|
|
6aa70b6541 | ||
|
|
5f8a4c4d62 | ||
|
|
eda952ab08 | ||
|
|
b80ea43e25 | ||
|
|
c310bc5f83 | ||
|
|
eab68688dc | ||
|
|
5183e32887 | ||
|
|
e2f469a7cd | ||
|
|
33a5c2495d | ||
|
|
66b9f6fb2b | ||
|
|
a9ca72ab8e | ||
|
|
1a8b5e04a9 | ||
|
|
2d7cefe782 | ||
|
|
650c9d3452 | ||
|
|
4ebd1bd12c | ||
|
|
dbaa8c83b6 | ||
|
|
615f8443fe | ||
|
|
fc706daf60 | ||
|
|
6cd487db81 | ||
|
|
e3e99cc906 | ||
|
|
95b1b05cbe | ||
|
|
9d93605e18 | ||
|
|
1f1e291385 | ||
|
|
db39044ef6 | ||
|
|
fab5cf912f | ||
|
|
9f52b56aa8 |
4
.dockerignore
Normal file
4
.dockerignore
Normal file
@@ -0,0 +1,4 @@
|
||||
.git/
|
||||
.python-version
|
||||
.vscode/
|
||||
.idea/
|
||||
21
.github/ISSUE_TEMPLATE.md
vendored
Normal file
21
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
Too many issues will kill our team's development velocity, drastically.
|
||||
Make sure you have checked all steps below.
|
||||
|
||||
### Prerequisite
|
||||
* [ ] Make sure your problem is not listed in [the common build problems](https://github.com/pyenv/pyenv/wiki/Common-build-problems).
|
||||
* [ ] Make sure no duplicated issue has already been reported in [the pyenv issues](https://github.com/pyenv/pyenv/issues). You should look for closed issues, too.
|
||||
* [ ] Make sure you are not asking us to help solving your specific issue.
|
||||
* GitHub issues is opened mainly for development purposes. If you want to ask someone to help solving your problem, go to some community site like [Gitter](https://gitter.im/yyuu/pyenv), [StackOverflow](https://stackoverflow.com/questions/tagged/pyenv), etc.
|
||||
* [ ] Make sure your problem is not derived from packaging (e.g. [Homebrew](https://brew.sh)).
|
||||
* Please refer to the package documentation for the installation issues, etc.
|
||||
* [ ] Make sure your problem is not derived from plugins.
|
||||
* This repository is maintaining `pyenv` and the default `python-build` plugin only. Please refrain from reporting issues of other plugins here.
|
||||
|
||||
### Description
|
||||
- [ ] Platform information (e.g. Ubuntu Linux 16.04):
|
||||
- [ ] OS architecture (e.g. amd64):
|
||||
- [ ] pyenv version:
|
||||
- [ ] Python version:
|
||||
- [ ] C Compiler information (e.g. gcc 7.3):
|
||||
- [ ] Please attach verbose build log as gist
|
||||
* You can turn on verbose debug logging using by setting `PYENV_DEBUG=1`, e.g. `env PYENV_DEBUG=1 pyenv install -v 3.6.4`
|
||||
16
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
16
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
Make sure you have checked all steps below.
|
||||
|
||||
### Prerequisite
|
||||
* [ ] Please consider implementing the feature as a hook script or plugin as a first step.
|
||||
* pyenv has some powerful support for plugins and hook scripts. Please refer to [Authoring plugins](https://github.com/pyenv/pyenv/wiki/Authoring-plugins) for details and try to implement it as a plugin if possible.
|
||||
* [ ] Please consider contributing the patch upstream to [rbenv](https://github.com/rbenv/rbenv), since we have borrowed most of the code from that project.
|
||||
* We occasionally import the changes from rbenv. In general, you can expect changes made in rbenv will be imported to pyenv too, eventually.
|
||||
* Generally speaking, we prefer not to make changes in the core in order to keep compatibility with rbenv.
|
||||
* [ ] My PR addresses the following pyenv issue (if any)
|
||||
- Closes https://github.com/pyenv/pyenv/issues/XXXX
|
||||
|
||||
### Description
|
||||
- [ ] Here are some details about my PR
|
||||
|
||||
### Tests
|
||||
- [ ] My PR adds the following unit tests (if any)
|
||||
13
.github/no-response.yml
vendored
Normal file
13
.github/no-response.yml
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
# Configuration for probot-no-response - https://github.com/probot/no-response
|
||||
|
||||
# Number of days of inactivity before an Issue is closed for lack of response
|
||||
daysUntilClose: 30
|
||||
# Label requiring a response
|
||||
responseRequiredLabel: need-feedback
|
||||
# Comment to post when closing an Issue for lack of response. Set to `false` to disable
|
||||
closeComment: >
|
||||
This issue has been automatically closed because there has been no response
|
||||
to our request for more information from the original author. With only the
|
||||
information that is currently in the issue, we don't have enough information
|
||||
to take action. Please reach out if you have or find the answers we need so
|
||||
that we can investigate further.
|
||||
42
.github/workflows/ubuntu_tests.yml
vendored
Normal file
42
.github/workflows/ubuntu_tests.yml
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
name: ubuntu_tests
|
||||
on: [pull_request, push]
|
||||
jobs:
|
||||
ubuntu_tests:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version:
|
||||
- 2.7.18
|
||||
- 3.5.10
|
||||
- 3.6.13
|
||||
- 3.7.10
|
||||
- 3.8.10
|
||||
- 3.9.5
|
||||
runs-on: Ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
# Normally, we would use the superbly maintained...
|
||||
# - uses: actions/setup-python@v2
|
||||
# with:
|
||||
# python-version: ${{ matrix.python-version }}
|
||||
# ... but in the repo, we want to test pyenv builds on Ubuntu
|
||||
- run: |
|
||||
sudo apt-get install -y build-essential libssl-dev zlib1g-dev libbz2-dev \
|
||||
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
|
||||
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git
|
||||
# https://github.com/pyenv/pyenv#installation
|
||||
- run: pwd
|
||||
- env:
|
||||
PYENV_ROOT: /home/runner/work/pyenv/pyenv
|
||||
run: |
|
||||
echo $PYENV_ROOT
|
||||
echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH
|
||||
bin/pyenv install ${{ matrix.python-version }}
|
||||
bin/pyenv global ${{ matrix.python-version }}
|
||||
bin/pyenv rehash
|
||||
- run: python --version
|
||||
- run: python -m pip --version
|
||||
- shell: python # Prove that actual Python == expected Python
|
||||
env:
|
||||
EXPECTED_PYTHON: ${{ matrix.python-version }}
|
||||
run: import os, sys ; assert sys.version.startswith(os.getenv("EXPECTED_PYTHON"))
|
||||
76
.travis.yml
76
.travis.yml
@@ -1,13 +1,79 @@
|
||||
sudo: false
|
||||
install: git clone --depth 1 https://github.com/sstephenson/bats.git
|
||||
script: make test
|
||||
# Two types of tests:
|
||||
#
|
||||
# 1. shell tests run using bats
|
||||
# 2. build tests also run using bats
|
||||
#
|
||||
# Shell tests are run unconditionally on Linux (see jobs.include).
|
||||
#
|
||||
# Build tests can be skipped by starting the commit message with
|
||||
# '[skip build]'.
|
||||
#
|
||||
# Build tests are run on platforms generated from all combinations
|
||||
# of keys below.
|
||||
language: c
|
||||
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
|
||||
dist:
|
||||
- focal
|
||||
|
||||
# https://docs.travis-ci.com/user/reference/osx/#macos-version
|
||||
osx_image:
|
||||
- xcode9.4.1 # macOS 10.13.6
|
||||
- xcode10.3 # macOS 10.14.4
|
||||
- xcode11.6 # macOS 10.15.7
|
||||
- xcode12.2 # macOS 10.15.7
|
||||
|
||||
env:
|
||||
- PYENV_NATIVE_EXT=
|
||||
- PYENV_NATIVE_EXT=1
|
||||
- PYTHON_BUILD_VERSION=3.9.1
|
||||
- PYTHON_BUILD_VERSION=3.7.5
|
||||
|
||||
before_install:
|
||||
- date +%Y-%m-%dT%H:%M:%S
|
||||
|
||||
install: git clone --depth 1 --branch v1.2.0 https://github.com/bats-core/bats-core.git bats
|
||||
|
||||
# Default for auto-generated jobs.
|
||||
script: make test-build
|
||||
|
||||
jobs:
|
||||
include:
|
||||
# Shell-based tests should execute every time.
|
||||
- stage: test shell
|
||||
script: make test
|
||||
env: PYENV_NATIVE_EXT=1
|
||||
after_script: []
|
||||
os: linux
|
||||
- stage: test shell
|
||||
script: make test
|
||||
env: PYENV_NATIVE_EXT=
|
||||
after_script: []
|
||||
os: linux
|
||||
|
||||
exclude:
|
||||
# For each osx_image but one there should be an entry in the exclude
|
||||
# list, to prevent duplicate Linux builds.
|
||||
- os: linux
|
||||
osx_image: xcode9.4
|
||||
- os: linux
|
||||
osx_image: xcode10
|
||||
|
||||
allow_failures:
|
||||
- env: PYTHON_BUILD_VERSION=3.9.1
|
||||
|
||||
stages:
|
||||
- test shell
|
||||
- name: test
|
||||
if: NOT (commit_message =~ /^\[skip build\]/)
|
||||
|
||||
# Default
|
||||
|
||||
notifications:
|
||||
email:
|
||||
on_success: never
|
||||
|
||||
deploy:
|
||||
provider: releases
|
||||
api_key:
|
||||
|
||||
280
CHANGELOG.md
280
CHANGELOG.md
@@ -1,5 +1,285 @@
|
||||
## Version History
|
||||
|
||||
## Release 2.0.2
|
||||
|
||||
* Miniforge minor update to 4.10.1-5 (#1992)
|
||||
* Suggest that fish users init in interactive mode (#1991)
|
||||
* Add 3.10.0b3 (#1988)
|
||||
* Revert "Drop inferring version to install from `pyenv local`" (#1984)
|
||||
* Use system Python3 for tests (#1979)
|
||||
* Check for shims in path with pure Bash (#1978)
|
||||
* Update setup instructions for debian, ubuntu etc. (#1977)
|
||||
|
||||
## Release 2.0.1
|
||||
|
||||
* Drop inferring version to install from `pyenv local` (#1907)
|
||||
* Create mambaforge-4.10.1-4 (#1971)
|
||||
* Add 3.10.0b2 recipe (#1966)
|
||||
* Fix .bashrc `echo` install syntax error (#1965)
|
||||
* Add explicit Zsh instructions for MacOS (#1964)
|
||||
* Install pip with pyston (#1955)
|
||||
* Mention log file if an error happened before building, too (#1537)
|
||||
* Add pypy3.7-7.3.5 (#1950)
|
||||
|
||||
## Release 2.0.0
|
||||
|
||||
* Support for CPython 3.9.5 has been added.
|
||||
* Support for CPython 3.8.10 has been added.
|
||||
* Support for CPython 3.10.0b1 has been added.
|
||||
* Support for GraalPython 21.1.0 has been added.
|
||||
* Support for Anaconda 2021.05 has been added.
|
||||
* Support for Miniforge3 4.10.1-1 has been added.
|
||||
* CPython 3.10-dev target branch renamed.
|
||||
* CPython 3.10-dev and 3.11-dev updated.
|
||||
* Bump OpenSSL to 1.1.1x for all Pythons that support MacOS 11
|
||||
* Update generated configuration files before run ./configure
|
||||
* Full shell configuration instructions placed into `pyenv init`
|
||||
* Prevent build from installing MacOS apps globally
|
||||
* ldflags_dirs is not needed for Python and causes failures
|
||||
* Report cache filename at download
|
||||
* Add micropython 1.15
|
||||
* Correct URLs for Stackless builds and add Stackless 2.7.16
|
||||
|
||||
## Breaking changes
|
||||
* Split startup logic into PATH and everything else (https://github.com/pyenv/pyenv/issues/1649#issuecomment-694388530)
|
||||
|
||||
## 1.2.27
|
||||
|
||||
* Add GraalPython 21.1.0 (#1882)
|
||||
* Add CPython 3.10.0a7 (#1880)
|
||||
* Docs(README): fix info about version-file separator (#1874)
|
||||
* List versions starting with a dot (#1350)
|
||||
* Feat: support (skip) commented lines in version-file (#1866)
|
||||
* pypy3.7-7.3.4 (#1873)
|
||||
* Create miniforge3-4.10 (#1868)
|
||||
* Add CPython 3.9.4 (#1865)
|
||||
|
||||
## 1.2.26
|
||||
|
||||
* Add CPython 3.9.4 (#1865)
|
||||
|
||||
## 1.2.25
|
||||
|
||||
* bpo-43631: update to openssl 1.1.1k (#1861)
|
||||
* Add CPython 3.9.3 and 3.8.9 (#1859)
|
||||
* Add micropython 1.14 (#1858)
|
||||
* Shell detect improvements (#1835)
|
||||
* Test(init): remove misleading detect from parent shell case arg (#1856)
|
||||
* Add GraalPython 21.0.0 (#1855)
|
||||
|
||||
## 1.2.24
|
||||
|
||||
* GitHub Actions: Add $PYENV_ROOT/shims to $PATH (#1838)
|
||||
* Add Python 3.10.0a6 (#1839)
|
||||
* Remove the "Using script's directory as PYENV_DIR if shim is invoked with a script argument" feature (#1814)
|
||||
* Update GET_PIP_URL (#1844)
|
||||
* GitHub Action to build Python versions on Ubuntu (#1794)
|
||||
* Make work in nounset (-u) mode (#1786)
|
||||
* Update miniforge3-4.9.2 (#1834)
|
||||
* Added aarch64 for Linux in anaconda_architecture() (#1833)
|
||||
* Hook script to add latest suffix for install command (#1831)
|
||||
* Fix error link (#1832)
|
||||
* Clarify proxy variable names in readme (#1830)
|
||||
* Travis CI: Add Xcode 12 on macOS 10.15.5 (#1708)
|
||||
* Added --nosystem argument (#1829)
|
||||
* Add CPython 3.8.8 (#1825)
|
||||
* Add CPython 3.9.2 (#1826)
|
||||
* Add manpage (#1790)
|
||||
|
||||
## 1.2.23
|
||||
|
||||
+ python-build: Add CPython v3.7.10 (#1818)
|
||||
+ python-build: Add CPython v3.6.13 (#1817)
|
||||
* python-build: Add PyPy 3.7-c-jit-latest (#1812)
|
||||
* python-build: Add PyPy 3.7 (#1718, #1726, #1780)
|
||||
* python-build: Add miniconda3 4.9.2 (#1763)
|
||||
* python-build: Add miniconda3 4.8.3 (#1763)
|
||||
* python-build: Add miniconda3 4.8.2 (#1763)
|
||||
* python-build: Add Miniforge3-4.9.2 (#1782)
|
||||
* python-build: Fix download links for some PyPy and Stackless versions (#1692)
|
||||
* python-build: Add PYENV_DEBUG option (#1806)
|
||||
* python-build: Fix get-pip which dropped support for legacy Python (#1793)
|
||||
* pyenv-help: Fix `sed: RE error: illegal byte sequence` (#1714)
|
||||
* pyenv-versions: Fix not printing asterisk for current version in Bash 3 (#1815)
|
||||
* pyenv-prefix: "system" python - support cases where python3 is in PATH but not python (#1655)
|
||||
* pyenv-which: Added fallback to system executable (#1797)
|
||||
* pyenv-rehash: Use associative arrays for better performance on bash >= 4 (#1749)
|
||||
* pyenv-rehash: Try to sleep in 0.1 sec steps when acquiring lock (#1798)
|
||||
* pyenv: Use a better PS4 as recommended by Bash Hackers Wiki (#1810)
|
||||
|
||||
## 1.2.22
|
||||
|
||||
+ python-build: Add LDFLAGS for zlib on macOS >= 1100 (#1711)
|
||||
+ python-build: Add the CPython 3.9.1 (#1752)
|
||||
+ python-build: Change order of LDFLAGS paths (#1754)
|
||||
+ python-build: Docker config for testing python-build (#1548)
|
||||
+ python-build: Put prerequisite for installation before install (#1750)
|
||||
+ python-build: Add GraalPython 20.3 (#1736)
|
||||
+ python-build: Add CPython 3.8.7
|
||||
+ python-build: Added anaconda3-2020.11 (#1774)
|
||||
+ python-build: Added arm64 architecture support in python-build for macOS (#1775)
|
||||
|
||||
## 1.2.21
|
||||
|
||||
* python-build: Add CPython 3.9.0 (#1706)
|
||||
* python-build: Add CPython 3.8.6 (#1698)
|
||||
* python-build: Add CPython 3.7.9 (#1680)
|
||||
* python-build: Add CPython 3.6.12 (#1680)
|
||||
* python-build: Add CPython 3.5.10 (#1690)
|
||||
* python-build: Add Jython 2.7.2 (#1672)
|
||||
* python-build: Add Graalpython 20.1.0 (#1594)
|
||||
* python-build: Add Graalpython 20.2.0 (#1594)
|
||||
* python-build: Add Anaconda3-2020.07 (#1684)
|
||||
* python-build: Add micropython-1.13 (#1704)
|
||||
* python-build: Fix PyPy download links (#1682)
|
||||
* python-build: Support for `PYTHON_BUILD_MIRROR_URL` when checksums do not exist (#1673)
|
||||
* pyenv: Search for plugins in `PYENV_DIR` and `PYENV_ROOT` (#1697)
|
||||
* pyenv-help: Fix 'sed: RE error: illegal byte sequence' (#1670)
|
||||
|
||||
## 1.2.20
|
||||
|
||||
* python-build: Add CPython 3.8.5 (#1667)
|
||||
* python-build: Add CPython 3.8.4 (#1658)
|
||||
* python-build: Add CPython 3.7.8
|
||||
* python-build: Add CPython 3.6.11
|
||||
* pyenv-install: Make grep detection more robust (#1663)
|
||||
* python-build: Fix has_tar_xz_support function on FreeBSD. (#1652)
|
||||
|
||||
## 1.2.19
|
||||
|
||||
* python-build: Add CPython 3.8.3 (#1612)
|
||||
* python-build: Add CPython 2.7.18 (#1593)
|
||||
* python-build: Add CPython 3.10-dev (#1619)
|
||||
* python-build: Add anaconda3-2020.02 (#1584)
|
||||
* python-build: Add stackless 3.7.5 (#1589)
|
||||
|
||||
## 1.2.18
|
||||
|
||||
* python-build: Update download URLs for old OpenSSL releases (#1578)
|
||||
* python-build: Prevent `brew: command not found` messages that are not errors (#1544)
|
||||
|
||||
## 1.2.17
|
||||
|
||||
* python-build: Add CPython 3.8.2
|
||||
* python-build: Add CPython 3.7.7 (#1553)
|
||||
* python-build: Add Miniconda versions newer than 4.3.30 (#1361)
|
||||
* python-build: Add Micropython 1.12 (#1542)
|
||||
* python-build: Add Add CPython 3.9.0a4
|
||||
* pyenv: Fix sed illegal byte sequence error (#1521)
|
||||
|
||||
## 1.2.16
|
||||
|
||||
* python-build: Add CPython 3.8.1 (#1497)
|
||||
* python-build: Add CPython 3.7.6 (#1498)
|
||||
* python-build: Add CPython 3.6.10 (#1499)
|
||||
* python-build: Add CPython 3.5.9 (#1448)
|
||||
* python-build: Add PyPy 7.3.0 (1502)
|
||||
|
||||
## 1.2.15
|
||||
|
||||
* python-build: Add CPython 3.7.5 (#1423)
|
||||
* python-build: Add CPython 2.7.17 (#1433)
|
||||
* python-build: Add CPython 3.5.8 (#1441)
|
||||
* python-build: Add PyPy 7.2.0 (#1418)
|
||||
* python-build: Add anaconda3-2019.10 (#1427)
|
||||
* pyenv-help: Show text for all pyenv commands in pyenv-help (#1421)
|
||||
|
||||
## 1.2.14
|
||||
|
||||
* python-build: Add CPython 3.8.0 (#1416)
|
||||
* python-build: Add Anaconda-2019.07 (#1382)
|
||||
* python-build: Add Micropython 1.11 (#1395)
|
||||
* python-build: Fix compatibility issues with Homebrew installed Tcl/Tk (#1397)
|
||||
* pyenv-exec: Do not use `exec -a`, do not mangle PATH for system Python (#1169)
|
||||
|
||||
## 1.2.13
|
||||
|
||||
* python-build: Add CPython 3.7.4
|
||||
* python-build: Add CPython 3.6.9
|
||||
|
||||
## 1.2.12
|
||||
|
||||
* python-build: Find zlib from Xcode or brew on Mojave (#1353)
|
||||
* python-build: Add PyPy 7.1.1 (#1335)
|
||||
* python-build: Add CPython 3.8.0b1
|
||||
|
||||
## 1.2.11
|
||||
|
||||
* python-build: Fix `posix_close` name collision in 2.4 builds (#1321)
|
||||
* python-build: Add CPython 3.4.10 (#1322)
|
||||
* python-build: Add Anaconda 2019.03
|
||||
* python-build: Allow overriding the preference of OpenSSL version per definition basis (#1302, #1325, #1326)
|
||||
* python-build: Imported changes from rbenv/ruby-build 20190401 (#1327)
|
||||
* python-build: Use GNU Readline 8.0 on macOS if brew's package isn't available (#1329)
|
||||
|
||||
## 1.2.10
|
||||
|
||||
* python-build: Force y, Y, yes or YES to confirm installation (#1217)
|
||||
* python-build: Add PyPy 7.0.0, 7.1.0
|
||||
* python-build: Add CPython 2.7.16, 3.5.7 and 3.7.3
|
||||
* python-build: Install `python-gdb.py` (#1190, #1289)
|
||||
* python-build: Add micropython 1.10
|
||||
* python-build: Prefer Homebrew's OpenSSL 1.1 over 1.0 (#839, #1302)
|
||||
|
||||
## 1.2.9
|
||||
|
||||
* python-build: Add CPython 3.7.2 and CPython 3.6.8 (#1256)
|
||||
* python-build: Add anaconda[23]-5.3.1 (#1246)
|
||||
* python-build: Add Anaconda 2018.12 (#1259)
|
||||
* python-build: Fix ironpython-dev git repo url (#1260)
|
||||
* python-build: Add `OPENSSL_NO_SSL3` patch for CPython 3.3.7 (#1263)
|
||||
|
||||
## 1.2.8
|
||||
|
||||
* python-build: Add CPython 3.7.1
|
||||
* python-build: Add CPython 3.6.7
|
||||
* python-build: Add anaconda[23]-5.3.0 (#1220)
|
||||
|
||||
## 1.2.7
|
||||
|
||||
* python-build: Add CPython 3.5.6 (#1199)
|
||||
* python-build: Add CPython 3.4.9
|
||||
|
||||
## 1.2.6
|
||||
|
||||
* python-build: Added CPython 3.6.6 (#1178)
|
||||
* python-build: Check wget version iff wget is going to be used (#1180)
|
||||
|
||||
## 1.2.5
|
||||
|
||||
* python-build: Add CPython 3.7.0 (#1177)
|
||||
* python-build: Add micropython 1.9.4 (#1160)
|
||||
* python-build: Add anaconda[23]-5.2.0 (#1165)
|
||||
* pyenv: Fix `seq(1)` is not available on OpenBSD (#1166)
|
||||
|
||||
## 1.2.4
|
||||
|
||||
* python-build: Add CPython 2.7.15
|
||||
* python-build: Add PyPy 6.0.0
|
||||
* python-build: Allow overriding HTTP client type based on environment variable `PYTHON_BUILD_HTTP_CLIENT` (#1126)
|
||||
* python-build: Use version-specific `get-pip.py` when installing 2.6 and 3.2 (#1131)
|
||||
* pyenv: Merge rbenv master (#1151)
|
||||
* pyenv: Make `pyenv-rehash` safer for multiple processes (#1092)
|
||||
|
||||
## 1.2.3
|
||||
|
||||
* python-build: Add CPython 3.6.5
|
||||
* python-build: Set openssl PKG_CONFIG_PATH for python 3.7 (#1117)
|
||||
* python-build: Add ActivePython versions 2.7.14, 3.5.4, 3.6.0 (#1113)
|
||||
* python-build: Unset `PIP_VERSION` before invoking `get-pip.py` as a workaround for `invalid truth value` error (#1124)
|
||||
|
||||
## 1.2.2
|
||||
|
||||
* python-build: Add PyPy3 5.10.1 (#1084)
|
||||
* python-build: Add CPython 3.5.5 (#1090)
|
||||
* python-build: Add Anaconda[23]-5.1.0 (#1100)
|
||||
* python-build: Fix checksum issue for CPython 3.4.8 (#1094)
|
||||
* python-build: Prevent Anaconda from installing a `clear` shim (#1084)
|
||||
## 1.2.1
|
||||
|
||||
* python-build: Add CPython 3.6.4
|
||||
* python-build: Add PyPy[23] 5.10
|
||||
|
||||
## 1.2.0
|
||||
|
||||
* python-build: Import changes from ruby-build v20171031 (#1026)
|
||||
|
||||
@@ -267,6 +267,8 @@ you run the given command.
|
||||
$ pyenv which python3.3
|
||||
/home/yyuu/.pyenv/versions/3.3.3/bin/python3.3
|
||||
|
||||
Use --nosystem argument in case when you don't need to search command in the
|
||||
system environment.
|
||||
|
||||
## `pyenv whence`
|
||||
|
||||
|
||||
@@ -67,9 +67,9 @@ members of the project's leadership.
|
||||
|
||||
## Project Maintainers
|
||||
|
||||
* Sam Stephenson <<sstephenson@gmail.com>>
|
||||
* Mislav Marohnić <<mislav.marohnic@gmail.com>>
|
||||
* Erik Michaels-Ober <<sferik@gmail.com>>
|
||||
* Yamashita, Yuu <<peek824545201@gmail.com>>
|
||||
* Daniel Hahler <<git@thequod.de>>
|
||||
* Josh Friend <<josh@fueledbycaffeine.com>>
|
||||
|
||||
## Attribution
|
||||
|
||||
|
||||
35
Dockerfile
Normal file
35
Dockerfile
Normal file
@@ -0,0 +1,35 @@
|
||||
FROM ubuntu:18.04
|
||||
|
||||
LABEL maintainer="Chris L. Barnes <chrislloydbarnes@gmail.com>"
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get update -y \
|
||||
&& apt-get install -y \
|
||||
make \
|
||||
build-essential \
|
||||
libssl-dev \
|
||||
zlib1g-dev \
|
||||
libbz2-dev \
|
||||
libreadline-dev \
|
||||
libsqlite3-dev \
|
||||
wget \
|
||||
curl \
|
||||
llvm \
|
||||
libncurses5-dev \
|
||||
libncursesw5-dev \
|
||||
xz-utils \
|
||||
tk-dev \
|
||||
libffi-dev \
|
||||
liblzma-dev \
|
||||
python-openssl \
|
||||
git \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
ENV PYENV_ROOT "/pyenv"
|
||||
ENV PATH "$PYENV_ROOT/bin:$PATH"
|
||||
|
||||
COPY . /pyenv
|
||||
|
||||
RUN eval "$(pyenv init -)"
|
||||
|
||||
17
Makefile
17
Makefile
@@ -1,4 +1,4 @@
|
||||
.PHONY: test
|
||||
.PHONY: test test-build
|
||||
|
||||
# Do not pass in user flags to build tests.
|
||||
unexport PYTHON_CFLAGS
|
||||
@@ -8,5 +8,18 @@ test: bats
|
||||
PATH="./bats/bin:$$PATH" test/run
|
||||
cd plugins/python-build && $(PWD)/bats/bin/bats $${CI:+--tap} test
|
||||
|
||||
PYTHON_BUILD_ROOT := $(CURDIR)/plugins/python-build
|
||||
PYTHON_BUILD_OPTS ?= --verbose
|
||||
PYTHON_BUILD_VERSION ?= 3.8-dev
|
||||
PYTHON_BUILD_TEST_PREFIX ?= $(PYTHON_BUILD_ROOT)/test/build/tmp/dist
|
||||
|
||||
test-build:
|
||||
$(RM) -r $(PYTHON_BUILD_TEST_PREFIX)
|
||||
$(PYTHON_BUILD_ROOT)/bin/python-build $(PYTHON_BUILD_OPTS) $(PYTHON_BUILD_VERSION) $(PYTHON_BUILD_TEST_PREFIX)
|
||||
[ -e $(PYTHON_BUILD_TEST_PREFIX)/bin/python ]
|
||||
$(PYTHON_BUILD_TEST_PREFIX)/bin/python -V
|
||||
[ -e $(PYTHON_BUILD_TEST_PREFIX)/bin/pip ]
|
||||
$(PYTHON_BUILD_TEST_PREFIX)/bin/pip -V
|
||||
|
||||
bats:
|
||||
git clone --depth 1 https://github.com/sstephenson/bats.git
|
||||
git clone --depth 1 --branch v1.2.0 https://github.com/bats-core/bats-core.git bats
|
||||
|
||||
314
README.md
314
README.md
@@ -11,7 +11,7 @@ tools that do one thing well.
|
||||
This project was forked from [rbenv](https://github.com/rbenv/rbenv) and
|
||||
[ruby-build](https://github.com/rbenv/ruby-build), and modified for Python.
|
||||
|
||||
<img src="https://i.gyazo.com/699a58927b77e46e71cd674c7fc7a78d.png" width="735" height="490" />
|
||||

|
||||
|
||||
|
||||
### pyenv _does..._
|
||||
@@ -48,7 +48,7 @@ This project was forked from [rbenv](https://github.com/rbenv/rbenv) and
|
||||
* **[Installation](#installation)**
|
||||
* [Basic GitHub Checkout](#basic-github-checkout)
|
||||
* [Upgrading](#upgrading)
|
||||
* [Homebrew on Mac OS X](#homebrew-on-mac-os-x)
|
||||
* [Homebrew on macOS](#homebrew-on-macos)
|
||||
* [Advanced Configuration](#advanced-configuration)
|
||||
* [Uninstalling Python Versions](#uninstalling-python-versions)
|
||||
* **[Command Reference](#command-reference)**
|
||||
@@ -135,7 +135,8 @@ global system 3.3.6 3.2 2.5`. At this point, one should be able to find the full
|
||||
executable path to each of these using `pyenv which`, e.g. `pyenv which python2.5`
|
||||
(should display `$(pyenv root)/versions/2.5/bin/python2.5`), or `pyenv which
|
||||
python3.4` (should display path to system Python3). You can also specify multiple
|
||||
versions in a `.python-version` file, separated by newlines or any whitespace.
|
||||
versions in a `.python-version` file, separated by newlines.
|
||||
Lines starting with a `#` are ignored.
|
||||
|
||||
### Locating the Python Installation
|
||||
|
||||
@@ -152,7 +153,7 @@ For example, you might have these versions installed:
|
||||
* `$(pyenv root)/versions/3.4.2/`
|
||||
* `$(pyenv root)/versions/pypy-2.4.0/`
|
||||
|
||||
As far as pyenv is concerned, version names are simply the directories in
|
||||
As far as Pyenv is concerned, version names are simply directories under
|
||||
`$(pyenv root)/versions`.
|
||||
|
||||
### Managing Virtual Environments
|
||||
@@ -167,94 +168,224 @@ We'd recommend to install pyenv-virtualenv as well if you have some plan to play
|
||||
|
||||
## Installation
|
||||
|
||||
If you're on Mac OS X, consider [installing with Homebrew](#homebrew-on-mac-os-x).
|
||||
### Prerequisites:
|
||||
|
||||
For pyenv to install python correctly you should [**install the Python build dependencies**](https://github.com/pyenv/pyenv/wiki#suggested-build-environment).
|
||||
|
||||
### Homebrew on macOS
|
||||
|
||||
1. Consider installing with [Homebrew](https://brew.sh):
|
||||
```sh
|
||||
brew update
|
||||
brew install pyenv
|
||||
```
|
||||
2. Then follow the rest of the post-installation steps under [Basic GitHub Checkout](https://github.com/pyenv/pyenv#basic-github-checkout), starting with #2 ("Configure your shell's environment for Pyenv").
|
||||
|
||||
If you're on Windows, consider using @kirankotari's [`pyenv-win`](https://github.com/pyenv-win/pyenv-win) fork. (Pyenv does not work in Windows outside the Windows Subsystem for Linux.)
|
||||
|
||||
### The automatic installer
|
||||
|
||||
Visit my other project:
|
||||
Visit our other project:
|
||||
https://github.com/pyenv/pyenv-installer
|
||||
|
||||
|
||||
### Basic GitHub Checkout
|
||||
|
||||
This will get you going with the latest version of pyenv and make it
|
||||
This will get you going with the latest version of Pyenv and make it
|
||||
easy to fork and contribute any changes back upstream.
|
||||
|
||||
1. **Check out pyenv where you want it installed.**
|
||||
A good place to choose is `$HOME/.pyenv` (but you can install it somewhere else).
|
||||
1. **Check out Pyenv where you want it installed.**
|
||||
A good place to choose is `$HOME/.pyenv` (but you can install it somewhere else):
|
||||
|
||||
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
|
||||
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
|
||||
|
||||
Optionally, try to compile a dynamic Bash extension to speed up Pyenv. Don't
|
||||
worry if it fails; Pyenv will still work normally:
|
||||
|
||||
2. **Define environment variable `PYENV_ROOT`** to point to the path where
|
||||
pyenv repo is cloned and add `$PYENV_ROOT/bin` to your `$PATH` for access
|
||||
to the `pyenv` command-line utility.
|
||||
cd ~/.pyenv && src/configure && make -C src
|
||||
|
||||
```sh
|
||||
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
|
||||
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
|
||||
```
|
||||
**Zsh note**: Modify your `~/.zshenv` file instead of `~/.bash_profile`.
|
||||
**Ubuntu and Fedora note**: Modify your `~/.bashrc` file instead of `~/.bash_profile`.
|
||||
**Proxy note**: If you use a proxy, export `http_proxy` and `HTTPS_PROXY` too.
|
||||
2. **Configure your shell's environment for Pyenv**
|
||||
|
||||
3. **Add `pyenv init` to your shell** to enable shims and autocompletion.
|
||||
Please make sure `eval "$(pyenv init -)"` is placed toward the end of the shell
|
||||
configuration file since it manipulates `PATH` during the initialization.
|
||||
```sh
|
||||
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
|
||||
```
|
||||
**Zsh note**: Modify your `~/.zshenv` file instead of `~/.bash_profile`.
|
||||
**Ubuntu and Fedora note**: Modify your `~/.bashrc` file instead of `~/.bash_profile`.
|
||||
**Note:** The below instructions for specific shells are designed for common shell setups.
|
||||
If you have an uncommon setup and they don't work for you,
|
||||
use the guidance text and the [Advanced Configuration](#advanced-configuration)
|
||||
section below to figure out what you need to do in your specific case.
|
||||
|
||||
1. **Adjust the session-wide environment for your account.** Define
|
||||
the `PYENV_ROOT` environment variable to point to the path where
|
||||
you cloned the Pyenv repo, add the `pyenv` command-line utility to your `PATH`,
|
||||
run the output of `pyenv init --path` to enable shims.
|
||||
|
||||
These commands need to be added into your shell startup files in such a way
|
||||
that _they are executed only once per session, by its login shell._
|
||||
This typically means they need to be added into a per-user shell-specific
|
||||
`~/.*profile` file, _and_ into `~/.profile`, too, so that they are also
|
||||
run by GUI managers (which typically act as a `sh` login shell).
|
||||
|
||||
**General warning**: There are some systems where the `BASH_ENV` variable is configured
|
||||
to point to `.bashrc`. On such systems you should almost certainly put the abovementioned line
|
||||
`eval "$(pyenv init -)"` into `.bash_profile`, and **not** into `.bashrc`. Otherwise you
|
||||
may observe strange behaviour, such as `pyenv` getting into an infinite loop.
|
||||
See [#264](https://github.com/pyenv/pyenv/issues/264) for details.
|
||||
**MacOS note:** If you installed Pyenv with Homebrew, you don't need
|
||||
to add the `PYENV_ROOT=` and `PATH=` lines.
|
||||
You also don't need to add commands into `~/.profile` if your shell doesn't use it.
|
||||
|
||||
- For **Bash**:
|
||||
|
||||
4. **Restart your shell so the path changes take effect.**
|
||||
You can now begin using pyenv.
|
||||
```sh
|
||||
$ exec "$SHELL"
|
||||
```
|
||||
5. **Install Python versions into `$(pyenv root)/versions`.**
|
||||
~~~ bash
|
||||
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
|
||||
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
|
||||
echo 'eval "$(pyenv init --path)"' >> ~/.profile
|
||||
~~~
|
||||
|
||||
- **If your `~/.profile` sources `~/.bashrc` (Debian, Ubuntu, Mint):**
|
||||
|
||||
Put these lines into `~/.profile` _before_ the part that sources `~/.bashrc`:
|
||||
~~~bash
|
||||
export PYENV_ROOT="$HOME/.pyenv"
|
||||
export PATH="$PYENV_ROOT/bin:$PATH"
|
||||
~~~
|
||||
|
||||
And put this line at the _bottom_ of `~/.profile`:
|
||||
~~~bash
|
||||
eval "$(pyenv init --path)"
|
||||
~~~
|
||||
|
||||
<!--This is an alternative option and needn't be replicated to `pyenv init`-->
|
||||
Alternatively, for an automated installation, you can run the following:
|
||||
~~~ bash
|
||||
echo -e 'if shopt -q login_shell; then' \
|
||||
'\n export PYENV_ROOT="$HOME/.pyenv"' \
|
||||
'\n export PATH="$PYENV_ROOT/bin:$PATH"' \
|
||||
'\n eval "$(pyenv init --path)"' \
|
||||
'\nfi' >> ~/.bashrc
|
||||
echo -e 'if [ -z "$BASH_VERSION" ]; then'\
|
||||
'\n export PYENV_ROOT="$HOME/.pyenv"'\
|
||||
'\n export PATH="$PYENV_ROOT/bin:$PATH"'\
|
||||
'\n eval "$(pyenv init --path)"'\
|
||||
'\nfi' >>~/.profile
|
||||
~~~
|
||||
|
||||
**Note:** If you have `~/.bash_profile`, make sure that it too executes the above-added commands,
|
||||
e.g. by copying them there or by `source`'ing `~/.profile`.
|
||||
|
||||
- For **Zsh**:
|
||||
|
||||
- **MacOS, if Pyenv is installed with Homebrew:**
|
||||
|
||||
~~~ zsh
|
||||
echo 'eval "$(pyenv init --path)"' >> ~/.zprofile
|
||||
~~~
|
||||
|
||||
- **MacOS, if Pyenv is installed with a Git checkout:**
|
||||
|
||||
~~~ zsh
|
||||
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zprofile
|
||||
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zprofile
|
||||
echo 'eval "$(pyenv init --path)"' >> ~/.zprofile
|
||||
~~~
|
||||
|
||||
- **Other OSes:**
|
||||
|
||||
Same as for Bash above, but add the commands into both `~/.profile`
|
||||
and `~/.zprofile`.
|
||||
|
||||
- For **Fish shell**:
|
||||
|
||||
Execute this interactively:
|
||||
~~~ fish
|
||||
set -Ux PYENV_ROOT $HOME/.pyenv
|
||||
set -U fish_user_paths $PYENV_ROOT/bin $fish_user_paths
|
||||
~~~
|
||||
|
||||
And add this to `~/.config/fish/config.fish`:
|
||||
~~~ fish
|
||||
status is-interactive; and pyenv init --path | source
|
||||
~~~
|
||||
|
||||
If Fish is not your login shell, also follow the Bash/Zsh instructions to add to `~/.profile`.
|
||||
|
||||
**Proxy note**: If you use a proxy, export `http_proxy` and `https_proxy`, too.
|
||||
|
||||
2. **Add `pyenv` into your shell** by running the output of `pyenv init -`
|
||||
to enable autocompletion and all subcommands.
|
||||
|
||||
This command needs to run at startup of any interactive shell instance.
|
||||
In an interactive login shell, it needs to run _after_ the commands
|
||||
from the previous step.
|
||||
|
||||
- For **bash**:
|
||||
~~~ bash
|
||||
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
|
||||
~~~
|
||||
|
||||
- **If your `/etc/profile` sources `~/.bashrc` (SUSE):**
|
||||
|
||||
~~~bash
|
||||
echo 'if command -v pyenv >/dev/null; then eval "$(pyenv init -)"; fi' >> ~/.bashrc
|
||||
~~~
|
||||
|
||||
- For **Zsh**:
|
||||
~~~ zsh
|
||||
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
|
||||
~~~
|
||||
|
||||
- For **Fish shell**:
|
||||
Add this to `~/.config/fish/config.fish`:
|
||||
~~~ fish
|
||||
pyenv init - | source
|
||||
~~~
|
||||
|
||||
**General warning**: There are some systems where the `BASH_ENV` variable is configured
|
||||
to point to `.bashrc`. On such systems you should almost certainly put the above-mentioned line
|
||||
`eval "$(pyenv init -)"` into `.bash_profile`, and **not** into `.bashrc`. Otherwise you
|
||||
may observe strange behaviour, such as `pyenv` getting into an infinite loop.
|
||||
See [#264](https://github.com/pyenv/pyenv/issues/264) for details.
|
||||
|
||||
4. **Restart your login session for the changes to take effect.**
|
||||
E.g. if you're in a GUI session, you need to fully log out and log back in.
|
||||
|
||||
In MacOS, restarting terminal windows is enough (because MacOS runs shells
|
||||
in them as login shells by default).
|
||||
|
||||
5. [**Install Python build dependencies**](https://github.com/pyenv/pyenv/wiki#suggested-build-environment) before attempting to install a new Python version.
|
||||
|
||||
6. **Install Python versions into `$(pyenv root)/versions`.**
|
||||
For example, to download and install Python 2.7.8, run:
|
||||
```sh
|
||||
$ pyenv install 2.7.8
|
||||
pyenv install 2.7.8
|
||||
```
|
||||
**NOTE:** If you need to pass configure option to build, please use
|
||||
**NOTE:** If you need to pass a `configure` option to a build, please use the
|
||||
```CONFIGURE_OPTS``` environment variable.
|
||||
|
||||
**NOTE:** If you want to use proxy to download, please use `http_proxy` and `https_proxy`
|
||||
environment variable.
|
||||
**NOTE:** If you want to use proxy to download, please set the `http_proxy` and `https_proxy`
|
||||
environment variables.
|
||||
|
||||
**NOTE:** If you are having trouble installing a python version,
|
||||
**NOTE:** If you are having trouble installing a Python version,
|
||||
please visit the wiki page about
|
||||
[Common Build Problems](https://github.com/pyenv/pyenv/wiki/Common-build-problems)
|
||||
[Common Build Problems](https://github.com/pyenv/pyenv/wiki/Common-build-problems).
|
||||
|
||||
|
||||
#### Upgrading
|
||||
|
||||
If you've installed pyenv using the instructions above, you can
|
||||
upgrade your installation at any time using git.
|
||||
If you've installed Pyenv using Homebrew, upgrade using:
|
||||
```sh
|
||||
brew upgrade pyenv
|
||||
```
|
||||
|
||||
If you've installed Pyenv using the instructions above, you can
|
||||
upgrade your installation at any time using Git.
|
||||
|
||||
To upgrade to the latest development version of pyenv, use `git pull`:
|
||||
|
||||
```sh
|
||||
$ cd $(pyenv root)
|
||||
$ git pull
|
||||
cd $(pyenv root)
|
||||
git pull
|
||||
```
|
||||
|
||||
To upgrade to a specific release of pyenv, check out the corresponding tag:
|
||||
To upgrade to a specific release of Pyenv, check out the corresponding tag:
|
||||
|
||||
```sh
|
||||
$ cd $(pyenv root)
|
||||
$ git fetch
|
||||
$ git tag
|
||||
v0.1.0
|
||||
$ git checkout v0.1.0
|
||||
cd $(pyenv root)
|
||||
git fetch
|
||||
git tag
|
||||
git checkout v0.1.0
|
||||
```
|
||||
|
||||
### Uninstalling pyenv
|
||||
@@ -262,37 +393,29 @@ $ git checkout v0.1.0
|
||||
The simplicity of pyenv makes it easy to temporarily disable it, or
|
||||
uninstall from the system.
|
||||
|
||||
1. To **disable** pyenv managing your Python versions, simply remove the
|
||||
`pyenv init` line from your shell startup configuration. This will
|
||||
remove pyenv shims directory from PATH, and future invocations like
|
||||
`python` will execute the system Python version, as before pyenv.
|
||||
1. To **disable** Pyenv managing your Python versions, simply remove the
|
||||
`pyenv init` invocations from your shell startup configuration. This will
|
||||
remove Pyenv shims directory from `PATH`, and future invocations like
|
||||
`python` will execute the system Python version, as it was before Pyenv.
|
||||
|
||||
`pyenv` will still be accessible on the command line, but your Python
|
||||
apps won't be affected by version switching.
|
||||
`pyenv` will still be accessible on the command line, but your Python
|
||||
apps won't be affected by version switching.
|
||||
|
||||
2. To completely **uninstall** pyenv, perform step (1) and then remove
|
||||
2. To completely **uninstall** Pyenv, remove _all_ configuration lines for it
|
||||
from your shell startup configuration, and then remove
|
||||
its root directory. This will **delete all Python versions** that were
|
||||
installed under `` $(pyenv root)/versions/ `` directory:
|
||||
```sh
|
||||
rm -rf $(pyenv root)
|
||||
```
|
||||
If you've installed pyenv using a package manager, as a final step
|
||||
perform the pyenv package removal. For instance, for Homebrew:
|
||||
|
||||
```sh
|
||||
rm -rf $(pyenv root)
|
||||
```
|
||||
|
||||
brew uninstall pyenv
|
||||
If you've installed Pyenv using a package manager, as a final step,
|
||||
perform the Pyenv package removal. For instance, for Homebrew:
|
||||
|
||||
### Homebrew on Mac OS X
|
||||
|
||||
You can also install pyenv using the [Homebrew](http://brew.sh)
|
||||
package manager for Mac OS X.
|
||||
|
||||
$ brew update
|
||||
$ brew install pyenv
|
||||
|
||||
|
||||
To upgrade pyenv in the future, use `upgrade` instead of `install`.
|
||||
|
||||
Then follow the rest of the post-installation steps under [Basic GitHub Checkout](https://github.com/pyenv/pyenv#basic-github-checkout) above, starting with #3 ("Add `pyenv init` to your shell to enable shims and autocompletion").
|
||||
```
|
||||
brew uninstall pyenv
|
||||
```
|
||||
|
||||
### Advanced Configuration
|
||||
|
||||
@@ -300,8 +423,11 @@ Skip this section unless you must know what every line in your shell
|
||||
profile is doing.
|
||||
|
||||
`pyenv init` is the only command that crosses the line of loading
|
||||
extra commands into your shell. Coming from rvm, some of you might be
|
||||
opposed to this idea. Here's what `pyenv init` actually does:
|
||||
extra commands into your shell. Coming from RVM, some of you might be
|
||||
opposed to this idea. Here's what `pyenv init` actually does.
|
||||
Step 1 is done by `eval "$(pyenv init --path)"`, the others are done by
|
||||
`eval "$(pyenv init -)"`.
|
||||
|
||||
|
||||
1. **Sets up your shims path.** This is the only requirement for pyenv to
|
||||
function properly. You can do this by hand by prepending
|
||||
@@ -323,8 +449,14 @@ opposed to this idea. Here's what `pyenv init` actually does:
|
||||
for some reason you need `pyenv` to be a real script rather than a
|
||||
shell function, you can safely skip it.
|
||||
|
||||
To see exactly what happens under the hood for yourself, run `pyenv init -`.
|
||||
To see exactly what happens under the hood for yourself, run `pyenv init -`
|
||||
or `pyenv init --path`.
|
||||
|
||||
If you don't want to use `pyenv init` and shims, you can still benefit
|
||||
from pyenv's ability to install Python versions for you. Just run
|
||||
`pyenv install` and you will find versions installed in
|
||||
`$(pyenv root)/versions`, which you can manually execute or symlink
|
||||
as required.
|
||||
|
||||
### Uninstalling Python Versions
|
||||
|
||||
@@ -360,7 +492,7 @@ name | default | description
|
||||
`PYENV_DEBUG` | | Outputs debug information.<br>Also as: `pyenv --debug <subcommand>`
|
||||
`PYENV_HOOK_PATH` | [_see wiki_][hooks] | Colon-separated list of paths searched for pyenv hooks.
|
||||
`PYENV_DIR` | `$PWD` | Directory to start searching for `.python-version` files.
|
||||
`PYTHON_BUILD_ARIA2_OPTS` | | Used to pass additional parameters to [`aria2`](https://aria2.github.io/).<br>if `aria2c` binary is available on PATH, pyenv use `aria2c` instead of `curl` or `wget` to download the Python Source code. If you have an unstable internet connection, you can use this variable to instruct `aria2` to accelerate the download.<br>In most cases, you will only need to use `-x 10 -k 1M` as value to `PYTHON_BUILD_ARIA2_OPTS` environment variable
|
||||
`PYTHON_BUILD_ARIA2_OPTS` | | Used to pass additional parameters to [`aria2`](https://aria2.github.io/).<br>If the `aria2c` binary is available on PATH, pyenv uses `aria2c` instead of `curl` or `wget` to download the Python Source code. If you have an unstable internet connection, you can use this variable to instruct `aria2` to accelerate the download.<br>In most cases, you will only need to use `-x 10 -k 1M` as value to `PYTHON_BUILD_ARIA2_OPTS` environment variable
|
||||
|
||||
|
||||
|
||||
@@ -370,10 +502,10 @@ The pyenv source code is [hosted on
|
||||
GitHub](https://github.com/pyenv/pyenv). It's clean, modular,
|
||||
and easy to understand, even if you're not a shell hacker.
|
||||
|
||||
Tests are executed using [Bats](https://github.com/sstephenson/bats):
|
||||
Tests are executed using [Bats](https://github.com/bats-core/bats-core):
|
||||
|
||||
$ bats test
|
||||
$ bats/test/<file>.bats
|
||||
bats test
|
||||
bats/test/<file>.bats
|
||||
|
||||
Please feel free to submit pull requests and file bugs on the [issue
|
||||
tracker](https://github.com/pyenv/pyenv/issues).
|
||||
@@ -381,3 +513,11 @@ tracker](https://github.com/pyenv/pyenv/issues).
|
||||
|
||||
[pyenv-virtualenv]: https://github.com/pyenv/pyenv-virtualenv#readme
|
||||
[hooks]: https://github.com/pyenv/pyenv/wiki/Authoring-plugins#pyenv-hooks
|
||||
|
||||
### Version History
|
||||
|
||||
See [CHANGELOG.md](CHANGELOG.md).
|
||||
|
||||
### License
|
||||
|
||||
[The MIT License](LICENSE)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
unset CDPATH
|
||||
|
||||
if [ "$1" = "--debug" ]; then
|
||||
export PYENV_DEBUG=1
|
||||
@@ -8,7 +7,8 @@ if [ "$1" = "--debug" ]; then
|
||||
fi
|
||||
|
||||
if [ -n "$PYENV_DEBUG" ]; then
|
||||
export PS4='+ [${BASH_SOURCE##*/}:${LINENO}] '
|
||||
# https://wiki-dev.bash-hackers.org/scripting/debuggingtips#making_xtrace_more_useful
|
||||
export PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
|
||||
set -x
|
||||
fi
|
||||
|
||||
@@ -22,13 +22,14 @@ abort() {
|
||||
|
||||
if enable -f "${BASH_SOURCE%/*}"/../libexec/pyenv-realpath.dylib realpath 2>/dev/null; then
|
||||
abs_dirname() {
|
||||
local path="$(realpath "$1")"
|
||||
local path
|
||||
path="$(realpath "$1")"
|
||||
echo "${path%/*}"
|
||||
}
|
||||
else
|
||||
[ -z "$PYENV_NATIVE_EXT" ] || abort "failed to load \`realpath' builtin"
|
||||
|
||||
READLINK=$(type -p greadlink readlink | head -1)
|
||||
READLINK=$(type -P greadlink readlink | head -1)
|
||||
[ -n "$READLINK" ] || abort "cannot find readlink - are you missing GNU coreutils?"
|
||||
|
||||
resolve_link() {
|
||||
@@ -41,12 +42,15 @@ else
|
||||
# Use a subshell to avoid changing the current path
|
||||
(
|
||||
while [ -n "$path" ]; do
|
||||
cd "${path%/*}"
|
||||
local name="${path##*/}"
|
||||
cd_path="${path%/*}"
|
||||
if [[ "$cd_path" != "$path" ]]; then
|
||||
cd "$cd_path"
|
||||
fi
|
||||
name="${path##*/}"
|
||||
path="$(resolve_link "$name" || true)"
|
||||
done
|
||||
|
||||
pwd
|
||||
echo "$PWD"
|
||||
)
|
||||
}
|
||||
fi
|
||||
@@ -58,19 +62,6 @@ else
|
||||
fi
|
||||
export PYENV_ROOT
|
||||
|
||||
# Transfer PYENV_FILE_ARG (from shims) into PYENV_DIR.
|
||||
if [ -z "${PYENV_DIR}" ]; then
|
||||
if [ -n "${PYENV_FILE_ARG}" ]; then
|
||||
if [ -L "${PYENV_FILE_ARG}" ]; then
|
||||
PYENV_DIR="$(abs_dirname "${PYENV_FILE_ARG}")"
|
||||
else
|
||||
PYENV_DIR="${PYENV_FILE_ARG%/*}"
|
||||
fi
|
||||
export PYENV_DIR
|
||||
unset PYENV_FILE_ARG
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "${PYENV_DIR}" ]; then
|
||||
PYENV_DIR="$PWD"
|
||||
fi
|
||||
@@ -86,7 +77,10 @@ export PYENV_DIR
|
||||
shopt -s nullglob
|
||||
|
||||
bin_path="$(abs_dirname "$0")"
|
||||
for plugin_bin in "${PYENV_ROOT}/plugins/"*/bin; do
|
||||
for plugin_bin in "${bin_path%/*}"/plugins/*/bin; do
|
||||
PATH="${plugin_bin}:${PATH}"
|
||||
done
|
||||
for plugin_bin in "${PYENV_ROOT}"/plugins/*/bin; do
|
||||
PATH="${plugin_bin}:${PATH}"
|
||||
done
|
||||
export PATH="${bin_path}:${PATH}"
|
||||
@@ -121,7 +115,13 @@ case "$command" in
|
||||
;;
|
||||
* )
|
||||
command_path="$(command -v "pyenv-$command" || true)"
|
||||
[ -n "$command_path" ] || abort "no such command \`$command'"
|
||||
if [ -z "$command_path" ]; then
|
||||
if [ "$command" == "shell" ]; then
|
||||
abort "shell integration not enabled. Run \`pyenv init' for instructions."
|
||||
else
|
||||
abort "no such command \`$command'"
|
||||
fi
|
||||
fi
|
||||
|
||||
shift 1
|
||||
if [ "$1" = --help ]; then
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
set -e
|
||||
[ -n "$PYENV_DEBUG" ] && set -x
|
||||
|
||||
version="1.2.0"
|
||||
version="2.0.2"
|
||||
git_revision=""
|
||||
|
||||
if cd "${BASH_SOURCE%/*}" 2>/dev/null && git remote -v 2>/dev/null | grep -q pyenv; then
|
||||
|
||||
@@ -28,15 +28,15 @@ shopt -s nullglob
|
||||
for command in "${path}/pyenv-"*; do
|
||||
command="${command##*pyenv-}"
|
||||
if [ -n "$sh" ]; then
|
||||
if [ ${command:0:3} = "sh-" ]; then
|
||||
echo ${command##sh-}
|
||||
if [ "${command:0:3}" = "sh-" ]; then
|
||||
echo "${command##sh-}"
|
||||
fi
|
||||
elif [ -n "$nosh" ]; then
|
||||
if [ ${command:0:3} != "sh-" ]; then
|
||||
echo ${command##sh-}
|
||||
if [ "${command:0:3}" != "sh-" ]; then
|
||||
echo "${command##sh-}"
|
||||
fi
|
||||
else
|
||||
echo ${command##sh-}
|
||||
echo "${command##sh-}"
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
@@ -41,7 +41,8 @@ for script in "${scripts[@]}"; do
|
||||
done
|
||||
|
||||
shift 1
|
||||
# CPython's `sys.executable` requires the `PYENV_BIN_PATH` to be at the top of the `PATH`.
|
||||
# https://github.com/pyenv/pyenv/issues/98
|
||||
export PATH="${PYENV_BIN_PATH}:${PATH}"
|
||||
exec -a "$PYENV_COMMAND" "$PYENV_COMMAND_PATH" "$@"
|
||||
if [ "${PYENV_BIN_PATH#${PYENV_ROOT}}" != "${PYENV_BIN_PATH}" ]; then
|
||||
# Only add to $PATH for non-system version.
|
||||
export PATH="${PYENV_BIN_PATH}:${PATH}"
|
||||
fi
|
||||
exec "$PYENV_COMMAND_PATH" "$@"
|
||||
|
||||
@@ -1,16 +1,24 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Summary: Set or show the global Python version
|
||||
# Summary: Set or show the global Python version(s)
|
||||
#
|
||||
# Usage: pyenv global <version>
|
||||
# Usage: pyenv global <version> <version2> <..>
|
||||
#
|
||||
# Sets the global Python version. You can override the global version at
|
||||
# Sets the global Python version(s). You can override the global version at
|
||||
# any time by setting a directory-specific version with `pyenv local'
|
||||
# or by setting the `PYENV_VERSION' environment variable.
|
||||
#
|
||||
# <version> should be a string matching a Python version known to pyenv.
|
||||
# The special version string `system' will use your default system Python.
|
||||
# Run `pyenv versions' for a list of available Python versions.
|
||||
# <version> can be specified multiple times and should be a version
|
||||
# tag known to pyenv. The special version string `system' will use
|
||||
# your default system Python. Run `pyenv versions' for a list of
|
||||
# available Python versions.
|
||||
#
|
||||
# Example: To enable the python2.7 and python3.7 shims to find their
|
||||
# respective executables you could set both versions with:
|
||||
#
|
||||
# 'pyenv global 3.7.0 2.7.15'
|
||||
#
|
||||
|
||||
|
||||
set -e
|
||||
[ -n "$PYENV_DEBUG" ] && set -x
|
||||
|
||||
@@ -27,6 +27,8 @@ command_path() {
|
||||
}
|
||||
|
||||
extract_initial_comment_block() {
|
||||
LC_ALL= \
|
||||
LC_CTYPE=C \
|
||||
sed -ne "
|
||||
/^#/ !{
|
||||
q
|
||||
@@ -42,7 +44,8 @@ extract_initial_comment_block() {
|
||||
}
|
||||
|
||||
collect_documentation() {
|
||||
$(type -p gawk awk | head -1) '
|
||||
# shellcheck disable=SC2016
|
||||
$(type -P gawk awk | head -1) '
|
||||
/^Summary:/ {
|
||||
summary = substr($0, 10)
|
||||
next
|
||||
@@ -86,7 +89,8 @@ collect_documentation() {
|
||||
}
|
||||
|
||||
documentation_for() {
|
||||
local filename="$(command_path "$1")"
|
||||
local filename
|
||||
filename="$(command_path "$1")"
|
||||
if [ -n "$filename" ]; then
|
||||
extract_initial_comment_block < "$filename" | collect_documentation
|
||||
fi
|
||||
@@ -114,7 +118,7 @@ print_help() {
|
||||
eval "$(documentation_for "$command")"
|
||||
[ -n "$help" ] || help="$summary"
|
||||
|
||||
if [ -n "$usage" -o -n "$summary" ]; then
|
||||
if [ -n "$usage" ] || [ -n "$summary" ]; then
|
||||
if [ -n "$usage" ]; then
|
||||
echo "$usage"
|
||||
else
|
||||
@@ -149,7 +153,7 @@ if [ -z "$1" ] || [ "$1" == "pyenv" ]; then
|
||||
[ -z "$usage" ] || exit
|
||||
echo
|
||||
echo "Some useful pyenv commands are:"
|
||||
print_summaries commands local global shell install uninstall rehash version versions which whence
|
||||
print_summaries $(exec pyenv-commands | sort -u)
|
||||
echo
|
||||
echo "See \`pyenv help <command>' for information on a specific command."
|
||||
echo "For full documentation, see: https://github.com/pyenv/pyenv#readme"
|
||||
|
||||
@@ -26,7 +26,7 @@ if ! enable -f "${BASH_SOURCE%/*}"/pyenv-realpath.dylib realpath 2>/dev/null; th
|
||||
echo "pyenv: failed to load \`realpath' builtin" >&2
|
||||
exit 1
|
||||
fi
|
||||
READLINK=$(type -p greadlink readlink | head -1)
|
||||
READLINK=$(type -P greadlink readlink | head -1)
|
||||
if [ -z "$READLINK" ]; then
|
||||
echo "pyenv: cannot find readlink - are you missing GNU coreutils?" >&2
|
||||
exit 1
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# Summary: Configure the shell environment for pyenv
|
||||
# Usage: eval "$(pyenv init - [--no-rehash] [<shell>])"
|
||||
# Usage: eval "$(pyenv init [-|--path] [--no-rehash] [<shell>])"
|
||||
|
||||
set -e
|
||||
[ -n "$PYENV_DEBUG" ] && set -x
|
||||
@@ -8,6 +8,7 @@ set -e
|
||||
# Provide pyenv completions
|
||||
if [ "$1" = "--complete" ]; then
|
||||
echo -
|
||||
echo --path
|
||||
echo --no-rehash
|
||||
echo bash
|
||||
echo fish
|
||||
@@ -16,15 +17,20 @@ if [ "$1" = "--complete" ]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
print=""
|
||||
mode="help"
|
||||
no_rehash=""
|
||||
for args in "$@"
|
||||
do
|
||||
if [ "$args" = "-" ]; then
|
||||
print=1
|
||||
mode="print"
|
||||
shift
|
||||
fi
|
||||
|
||||
if [ "$args" = "--path" ]; then
|
||||
mode="path"
|
||||
shift
|
||||
fi
|
||||
|
||||
if [ "$args" = "--no-rehash" ]; then
|
||||
no_rehash=1
|
||||
shift
|
||||
@@ -38,76 +44,171 @@ if [ -z "$shell" ]; then
|
||||
shell="${shell##-}"
|
||||
shell="${shell:-$SHELL}"
|
||||
shell="${shell##*/}"
|
||||
shell="${shell%%-*}"
|
||||
fi
|
||||
|
||||
root="${0%/*}/.."
|
||||
|
||||
if [ -z "$print" ]; then
|
||||
function main() {
|
||||
case "$mode" in
|
||||
"help")
|
||||
help_
|
||||
exit 1
|
||||
;;
|
||||
"path")
|
||||
print_path
|
||||
exit 0
|
||||
;;
|
||||
"print")
|
||||
init_dirs
|
||||
warn_path
|
||||
print_env
|
||||
print_completion
|
||||
print_shell_function
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
# should never get here
|
||||
exit 2
|
||||
}
|
||||
|
||||
function help_() {
|
||||
case "$shell" in
|
||||
bash )
|
||||
if [ -f "${HOME}/.bashrc" ] && [ ! -f "${HOME}/.bash_profile" ]; then
|
||||
profile='~/.bashrc'
|
||||
else
|
||||
profile='~/.bash_profile'
|
||||
fi
|
||||
profile='~/.bash_profile'
|
||||
rc='~/.bashrc'
|
||||
;;
|
||||
zsh )
|
||||
profile='~/.zshrc'
|
||||
profile='~/.zprofile'
|
||||
rc='~/.zshrc'
|
||||
;;
|
||||
ksh )
|
||||
profile='~/.profile'
|
||||
;;
|
||||
fish )
|
||||
profile='~/.config/fish/config.fish'
|
||||
rc='~/.profile'
|
||||
;;
|
||||
* )
|
||||
profile='your profile'
|
||||
profile='your shell'\''s login startup file'
|
||||
rc='your shell'\''s interactive startup file'
|
||||
;;
|
||||
esac
|
||||
|
||||
{ echo "# Load pyenv automatically by appending"
|
||||
echo "# the following to ${profile}:"
|
||||
{
|
||||
echo
|
||||
echo '# (The below instructions are intended for common'
|
||||
echo '# shell setups. See the README for more guidance'
|
||||
echo '# if they don'\''t apply and/or don'\''t work for you.)'
|
||||
echo
|
||||
case "$shell" in
|
||||
fish )
|
||||
echo 'status --is-interactive; and source (pyenv init -|psub)'
|
||||
echo "# Add pyenv executable to PATH by running"
|
||||
echo "# the following interactively:"
|
||||
echo
|
||||
echo 'set -Ux PYENV_ROOT $HOME/.pyenv'
|
||||
echo 'set -U fish_user_paths $PYENV_ROOT/bin $fish_user_paths'
|
||||
echo
|
||||
echo "# Load pyenv automatically by appending"
|
||||
echo "# the following to ~/.config/fish/config.fish:"
|
||||
echo
|
||||
echo 'status is-interactive; and pyenv init --path | source'
|
||||
echo 'pyenv init - | source'
|
||||
echo
|
||||
echo "# If fish is not your login shell,"
|
||||
echo "# add the following to ~/.profile:"
|
||||
echo
|
||||
echo 'export PYENV_ROOT="$HOME/.pyenv"'
|
||||
echo 'export PATH="$PYENV_ROOT/bin:$PATH"'
|
||||
echo 'eval "$(pyenv init --path)"'
|
||||
echo
|
||||
;;
|
||||
* )
|
||||
echo '# Add pyenv executable to PATH and'
|
||||
echo '# enable shims by adding the following'
|
||||
case "$shell" in
|
||||
bash|ksh )
|
||||
echo '# to ~/.profile:'
|
||||
;;
|
||||
* )
|
||||
echo '# to ~/.profile and '"${profile}"':'
|
||||
;;
|
||||
esac
|
||||
echo
|
||||
echo 'export PYENV_ROOT="$HOME/.pyenv"'
|
||||
echo 'export PATH="$PYENV_ROOT/bin:$PATH"'
|
||||
echo 'eval "$(pyenv init --path)"'
|
||||
echo
|
||||
if [[ $shell == "bash" ]]; then
|
||||
echo '# If your ~/.profile sources '"${rc}"','
|
||||
echo '# the lines need to be inserted before the part'
|
||||
echo '# that does that. See the README for another option.'
|
||||
echo
|
||||
echo '# If you have '"${profile}"', make sure that it'
|
||||
echo '# also executes the above lines -- e.g. by'
|
||||
echo '# copying them there or by sourcing ~/.profile'
|
||||
echo
|
||||
fi
|
||||
echo "# Load pyenv into the shell by adding"
|
||||
echo "# the following to ${rc}:"
|
||||
echo
|
||||
echo 'eval "$(pyenv init -)"'
|
||||
echo
|
||||
echo '# Make sure to restart your entire logon session'
|
||||
echo '# for changes to profile files to take effect.'
|
||||
echo
|
||||
;;
|
||||
esac
|
||||
echo
|
||||
} >&2
|
||||
}
|
||||
|
||||
exit 1
|
||||
fi
|
||||
function init_dirs() {
|
||||
mkdir -p "${PYENV_ROOT}/"{shims,versions}
|
||||
}
|
||||
|
||||
mkdir -p "${PYENV_ROOT}/"{shims,versions}
|
||||
function print_path() {
|
||||
# Need to use the login shell rather than the current one
|
||||
case "$shell" in
|
||||
fish )
|
||||
echo "set -gx PATH '${PYENV_ROOT}/shims' \$PATH"
|
||||
;;
|
||||
* )
|
||||
echo 'export PATH="'${PYENV_ROOT}'/shims:${PATH}"'
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
case "$shell" in
|
||||
fish )
|
||||
echo "set -gx PATH '${PYENV_ROOT}/shims' \$PATH"
|
||||
echo "set -gx PYENV_SHELL $shell"
|
||||
;;
|
||||
* )
|
||||
echo 'export PATH="'${PYENV_ROOT}'/shims:${PATH}"'
|
||||
echo "export PYENV_SHELL=$shell"
|
||||
;;
|
||||
esac
|
||||
function warn_path() {
|
||||
if ! [[ ":${PATH}:" == *":${PYENV_ROOT}/shims:"* ]] ; then
|
||||
echo 'echo '\''WARNING: `pyenv init -` no longer sets PATH.'\'
|
||||
echo 'echo '\''Run `pyenv init` to see the necessary changes to make to your configuration.'\'
|
||||
fi
|
||||
}
|
||||
|
||||
completion="${root}/completions/pyenv.${shell}"
|
||||
if [ -r "$completion" ]; then
|
||||
echo "source '$completion'"
|
||||
fi
|
||||
function print_env() {
|
||||
case "$shell" in
|
||||
fish )
|
||||
echo "set -gx PYENV_SHELL $shell"
|
||||
;;
|
||||
* )
|
||||
echo "export PYENV_SHELL=$shell"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
if [ -z "$no_rehash" ]; then
|
||||
echo 'command pyenv rehash 2>/dev/null'
|
||||
fi
|
||||
function print_completion() {
|
||||
completion="${root}/completions/pyenv.${shell}"
|
||||
if [ -r "$completion" ]; then
|
||||
echo "source '$completion'"
|
||||
fi
|
||||
|
||||
commands=(`pyenv-commands --sh`)
|
||||
case "$shell" in
|
||||
fish )
|
||||
cat <<EOS
|
||||
if [ -z "$no_rehash" ]; then
|
||||
echo 'command pyenv rehash 2>/dev/null'
|
||||
fi
|
||||
}
|
||||
|
||||
function print_shell_function() {
|
||||
commands=(`pyenv-commands --sh`)
|
||||
case "$shell" in
|
||||
fish )
|
||||
cat <<EOS
|
||||
function pyenv
|
||||
set command \$argv[1]
|
||||
set -e argv[1]
|
||||
@@ -120,35 +221,40 @@ function pyenv
|
||||
end
|
||||
end
|
||||
EOS
|
||||
;;
|
||||
ksh )
|
||||
cat <<EOS
|
||||
;;
|
||||
ksh )
|
||||
cat <<EOS
|
||||
function pyenv {
|
||||
typeset command
|
||||
EOS
|
||||
;;
|
||||
* )
|
||||
cat <<EOS
|
||||
;;
|
||||
* )
|
||||
cat <<EOS
|
||||
pyenv() {
|
||||
local command
|
||||
EOS
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "$shell" != "fish" ]; then
|
||||
IFS="|"
|
||||
cat <<EOS
|
||||
command="\$1"
|
||||
if [ "$shell" != "fish" ]; then
|
||||
IFS="|"
|
||||
cat <<EOS
|
||||
command="\${1:-}"
|
||||
if [ "\$#" -gt 0 ]; then
|
||||
shift
|
||||
fi
|
||||
|
||||
case "\$command" in
|
||||
${commands[*]})
|
||||
eval "\$(pyenv "sh-\$command" "\$@")";;
|
||||
eval "\$(pyenv "sh-\$command" "\$@")"
|
||||
;;
|
||||
*)
|
||||
command pyenv "\$command" "\$@";;
|
||||
command pyenv "\$command" "\$@"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
EOS
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
main
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Summary: Set or show the local application-specific Python version
|
||||
# Summary: Set or show the local application-specific Python version(s)
|
||||
#
|
||||
# Usage: pyenv local <version>
|
||||
# Usage: pyenv local <version> <version2> <..>
|
||||
# pyenv local --unset
|
||||
#
|
||||
# Sets the local application-specific Python version by writing the
|
||||
# Sets the local application-specific Python version(s) by writing the
|
||||
# version name to a file named `.python-version'.
|
||||
#
|
||||
# When you run a Python command, pyenv will look for a `.python-version'
|
||||
@@ -15,9 +15,16 @@
|
||||
# `PYENV_VERSION' environment variable takes precedence over local
|
||||
# and global versions.
|
||||
#
|
||||
# <version> should be a string matching a Python version known to pyenv.
|
||||
# The special version string `system' will use your default system Python.
|
||||
# Run `pyenv versions' for a list of available Python versions.
|
||||
# <version> can be specified multiple times and should be a version
|
||||
# tag known to pyenv. The special version string `system' will use
|
||||
# your default system Python. Run `pyenv versions' for a list of
|
||||
# available Python versions.
|
||||
#
|
||||
# Example: To enable the python2.7 and python3.7 shims to find their
|
||||
# respective executables you could set both versions with:
|
||||
#
|
||||
# 'pyenv local 3.7.0 2.7.15'
|
||||
|
||||
|
||||
set -e
|
||||
[ -n "$PYENV_DEBUG" ] && set -x
|
||||
|
||||
@@ -30,7 +30,9 @@ OLDIFS="$IFS"
|
||||
{ IFS=:
|
||||
for version in ${PYENV_VERSION}; do
|
||||
if [ "$version" = "system" ]; then
|
||||
if PYTHON_PATH="$(PYENV_VERSION="${version}" pyenv-which python 2>/dev/null)"; then
|
||||
if PYTHON_PATH="$(PYENV_VERSION="${version}" pyenv-which python 2>/dev/null)" || \
|
||||
PYTHON_PATH="$(PYENV_VERSION="${version}" pyenv-which python3 2>/dev/null)" || \
|
||||
PYTHON_PATH="$(PYENV_VERSION="${version}" pyenv-which python2 2>/dev/null)"; then
|
||||
PYENV_PREFIX_PATH="${PYTHON_PATH%/bin/*}"
|
||||
PYENV_PREFIX_PATH="${PYENV_PREFIX_PATH:-/}"
|
||||
else
|
||||
|
||||
@@ -10,30 +10,52 @@ PROTOTYPE_SHIM_PATH="${SHIM_PATH}/.pyenv-shim"
|
||||
# Create the shims directory if it doesn't already exist.
|
||||
mkdir -p "$SHIM_PATH"
|
||||
|
||||
# Ensure only one instance of pyenv-rehash is running at a time by
|
||||
# setting the shell's `noclobber` option and attempting to write to
|
||||
# the prototype shim file. If the file already exists, print a warning
|
||||
# to stderr and exit with a non-zero status.
|
||||
set -o noclobber
|
||||
{ echo > "$PROTOTYPE_SHIM_PATH"
|
||||
} 2>/dev/null ||
|
||||
{ if [ -w "$SHIM_PATH" ]; then
|
||||
echo "pyenv: cannot rehash: $PROTOTYPE_SHIM_PATH exists"
|
||||
else
|
||||
echo "pyenv: cannot rehash: $SHIM_PATH isn't writable"
|
||||
fi
|
||||
exit 1
|
||||
} >&2
|
||||
set +o noclobber
|
||||
acquire_lock() {
|
||||
# Ensure only one instance of pyenv-rehash is running at a time by
|
||||
# setting the shell's `noclobber` option and attempting to write to
|
||||
# the prototype shim file. If the file already exists, print a warning
|
||||
# to stderr and exit with a non-zero status.
|
||||
local ret
|
||||
set -o noclobber
|
||||
echo > "$PROTOTYPE_SHIM_PATH" 2>| /dev/null || ret=1
|
||||
set +o noclobber
|
||||
[ -z "${ret}" ]
|
||||
}
|
||||
|
||||
# If we were able to obtain a lock, register a trap to clean up the
|
||||
# prototype shim when the process exits.
|
||||
trap remove_prototype_shim EXIT
|
||||
trap release_lock EXIT
|
||||
|
||||
remove_prototype_shim() {
|
||||
rm -f "$PROTOTYPE_SHIM_PATH"
|
||||
}
|
||||
|
||||
release_lock() {
|
||||
remove_prototype_shim
|
||||
}
|
||||
|
||||
if [ ! -w "$SHIM_PATH" ]; then
|
||||
echo "pyenv: cannot rehash: $SHIM_PATH isn't writable"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
unset acquired
|
||||
start=$SECONDS
|
||||
while (( SECONDS <= start + ${PYENV_REHASH_TIMEOUT:-60} )); do
|
||||
if acquire_lock 2>/dev/null; then
|
||||
acquired=1
|
||||
break
|
||||
else
|
||||
# POSIX sleep(1) doesn't provide subsecond precision, but many others do
|
||||
sleep 0.1 2>/dev/null || sleep 1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "${acquired}" ]; then
|
||||
echo "pyenv: cannot rehash: $PROTOTYPE_SHIM_PATH exists"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# The prototype shim file is a script that re-execs itself, passing
|
||||
# its filename and any arguments to `pyenv exec`. This file is
|
||||
# hard-linked for every executable and then removed. The linking
|
||||
@@ -46,19 +68,6 @@ set -e
|
||||
[ -n "\$PYENV_DEBUG" ] && set -x
|
||||
|
||||
program="\${0##*/}"
|
||||
if [[ "\$program" = "python"* ]]; then
|
||||
for arg; do
|
||||
case "\$arg" in
|
||||
-c* | -- ) break ;;
|
||||
*/* )
|
||||
if [ -f "\$arg" ]; then
|
||||
export PYENV_FILE_ARG="\$arg"
|
||||
break
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
export PYENV_ROOT="$PYENV_ROOT"
|
||||
exec "$(command -v pyenv)" exec "\$program" "\$@"
|
||||
@@ -83,7 +92,7 @@ remove_outdated_shims() {
|
||||
list_executable_names() {
|
||||
local version file
|
||||
pyenv-versions --bare --skip-aliases | \
|
||||
while read version; do
|
||||
while read -r version; do
|
||||
for file in "${PYENV_ROOT}/versions/${version}/bin/"*; do
|
||||
echo "${file##*/}"
|
||||
done
|
||||
@@ -101,34 +110,62 @@ make_shims() {
|
||||
done
|
||||
}
|
||||
|
||||
registered_shims=" "
|
||||
if ((${BASH_VERSINFO[0]} > 3)); then
|
||||
|
||||
# Registers the name of a shim to be generated.
|
||||
register_shim() {
|
||||
registered_shims="${registered_shims}${1} "
|
||||
}
|
||||
declare -A registered_shims
|
||||
|
||||
# Install all the shims registered via `make_shims` or `register_shim` directly.
|
||||
install_registered_shims() {
|
||||
local shim file
|
||||
for shim in $registered_shims; do
|
||||
file="${SHIM_PATH}/${shim}"
|
||||
[ -e "$file" ] || cp "$PROTOTYPE_SHIM_PATH" "$file"
|
||||
done
|
||||
}
|
||||
# Registers the name of a shim to be generated.
|
||||
register_shim() {
|
||||
registered_shims["$1"]=1
|
||||
}
|
||||
|
||||
# Once the registered shims have been installed, we make a second pass
|
||||
# over the contents of the shims directory. Any file that is present
|
||||
# in the directory but has not been registered as a shim should be
|
||||
# removed.
|
||||
remove_stale_shims() {
|
||||
local shim
|
||||
for shim in "$SHIM_PATH"/*; do
|
||||
if [[ "$registered_shims" != *" ${shim##*/} "* ]]; then
|
||||
rm -f "$shim"
|
||||
fi
|
||||
done
|
||||
}
|
||||
# Install all shims registered via `make_shims` or `register_shim` directly.
|
||||
install_registered_shims() {
|
||||
local shim file
|
||||
for shim in "${!registered_shims[@]}"; do
|
||||
file="${SHIM_PATH}/${shim}"
|
||||
[ -e "$file" ] || cp "$PROTOTYPE_SHIM_PATH" "$file"
|
||||
done
|
||||
}
|
||||
|
||||
# Once the registered shims have been installed, we make a second pass
|
||||
# over the contents of the shims directory. Any file that is present
|
||||
# in the directory but has not been registered as a shim should be
|
||||
# removed.
|
||||
remove_stale_shims() {
|
||||
local shim
|
||||
for shim in "$SHIM_PATH"/*; do
|
||||
if [[ ! ${registered_shims["${shim##*/}"]} ]]; then
|
||||
rm -f "$shim"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
else # Same for bash < 4.
|
||||
|
||||
registered_shims=" "
|
||||
|
||||
register_shim() {
|
||||
registered_shims="${registered_shims}${1} "
|
||||
}
|
||||
|
||||
install_registered_shims() {
|
||||
local shim file
|
||||
for shim in $registered_shims; do
|
||||
file="${SHIM_PATH}/${shim}"
|
||||
[ -e "$file" ] || cp "$PROTOTYPE_SHIM_PATH" "$file"
|
||||
done
|
||||
}
|
||||
|
||||
remove_stale_shims() {
|
||||
local shim
|
||||
for shim in "$SHIM_PATH"/*; do
|
||||
if [[ "$registered_shims" != *" ${shim##*/} "* ]]; then
|
||||
rm -f "$shim"
|
||||
fi
|
||||
done
|
||||
}
|
||||
fi
|
||||
|
||||
shopt -s nullglob
|
||||
|
||||
@@ -136,6 +173,7 @@ shopt -s nullglob
|
||||
# executables.
|
||||
create_prototype_shim
|
||||
remove_outdated_shims
|
||||
# shellcheck disable=SC2046
|
||||
make_shims $(list_executable_names | sort -u)
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
#!/usr/bin/env bash
|
||||
# Summary: Display the root directory where versions and shims are kept
|
||||
echo $PYENV_ROOT
|
||||
echo "$PYENV_ROOT"
|
||||
|
||||
@@ -49,7 +49,7 @@ if [ "$versions" = "--unset" ]; then
|
||||
echo "set -e PYENV_VERSION"
|
||||
;;
|
||||
* )
|
||||
echo 'PYENV_VERSION_OLD="$PYENV_VERSION"'
|
||||
echo 'PYENV_VERSION_OLD="${PYENV_VERSION-}"'
|
||||
echo "unset PYENV_VERSION"
|
||||
;;
|
||||
esac
|
||||
@@ -110,7 +110,7 @@ if pyenv-prefix "${versions[@]}" >/dev/null; then
|
||||
echo "set -gx PYENV_VERSION \"$version\""
|
||||
;;
|
||||
* )
|
||||
echo 'PYENV_VERSION_OLD="$PYENV_VERSION"'
|
||||
echo 'PYENV_VERSION_OLD="${PYENV_VERSION-}"'
|
||||
echo "export PYENV_VERSION=\"${version}\""
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# Summary: Show the current Python version and its origin
|
||||
# Summary: Show the current Python version(s) and its origin
|
||||
#
|
||||
# Shows the currently selected Python version and how it was
|
||||
# Shows the currently selected Python version(s) and how it was
|
||||
# selected. To obtain only the version string, use `pyenv
|
||||
# version-name'.
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ if [ -e "$VERSION_FILE" ]; then
|
||||
# Read the first non-whitespace word from the specified version file.
|
||||
# Be careful not to load it whole in case there's something crazy in it.
|
||||
IFS="${IFS}"$'\r'
|
||||
words=($(cut -b 1-1024 "$VERSION_FILE" | sed 's/^\s*\(\S\+\).*/\1/'))
|
||||
words=($(cut -b 1-1024 "$VERSION_FILE" | sed -n 's/^[[:space:]]*\([^[:space:]#][^[:space:]]*\).*/\1/p'))
|
||||
versions=("${words[@]}")
|
||||
|
||||
if [ -n "$versions" ]; then
|
||||
|
||||
@@ -33,7 +33,7 @@ if ! enable -f "${BASH_SOURCE%/*}"/pyenv-realpath.dylib realpath 2>/dev/null; th
|
||||
exit 1
|
||||
fi
|
||||
|
||||
READLINK=$(type -p greadlink readlink | head -1)
|
||||
READLINK=$(type -P greadlink readlink | head -1)
|
||||
if [ -z "$READLINK" ]; then
|
||||
echo "pyenv: cannot find readlink - are you missing GNU coreutils?" >&2
|
||||
exit 1
|
||||
@@ -64,16 +64,27 @@ if [ -d "$versions_dir" ]; then
|
||||
versions_dir="$(realpath "$versions_dir")"
|
||||
fi
|
||||
|
||||
if ((${BASH_VERSINFO[0]} > 3)); then
|
||||
declare -A current_versions
|
||||
else
|
||||
current_versions=()
|
||||
fi
|
||||
if [ -n "$bare" ]; then
|
||||
hit_prefix=""
|
||||
miss_prefix=""
|
||||
current_versions=()
|
||||
include_system=""
|
||||
else
|
||||
hit_prefix="* "
|
||||
miss_prefix=" "
|
||||
OLDIFS="$IFS"
|
||||
IFS=: current_versions=($(pyenv-version-name || true))
|
||||
IFS=:
|
||||
if ((${BASH_VERSINFO[0]} > 3)); then
|
||||
for i in $(pyenv-version-name || true); do
|
||||
current_versions["$i"]="1"
|
||||
done
|
||||
else
|
||||
current_versions=($(pyenv-version-name || true))
|
||||
fi
|
||||
IFS="$OLDIFS"
|
||||
include_system="1"
|
||||
fi
|
||||
@@ -93,7 +104,9 @@ exists() {
|
||||
}
|
||||
|
||||
print_version() {
|
||||
if exists "$1" "${current_versions[@]}"; then
|
||||
if [[ ${BASH_VERSINFO[0]} -ge 4 && ${current_versions["$1"]} ]]; then
|
||||
echo "${hit_prefix}$1 (set by $(pyenv-version-origin))"
|
||||
elif (( ${BASH_VERSINFO[0]} <= 3 )) && exists "$1" "${current_versions[@]}"; then
|
||||
echo "${hit_prefix}$1 (set by $(pyenv-version-origin))"
|
||||
else
|
||||
echo "${miss_prefix}$1"
|
||||
@@ -102,11 +115,14 @@ print_version() {
|
||||
}
|
||||
|
||||
# Include "system" in the non-bare output, if it exists
|
||||
if [ -n "$include_system" ] && PYENV_VERSION=system pyenv-which python >/dev/null 2>&1; then
|
||||
if [ -n "$include_system" ] && \
|
||||
(PYENV_VERSION=system pyenv-which python >/dev/null 2>&1 || \
|
||||
PYENV_VERSION=system pyenv-which python3 >/dev/null 2>&1 || \
|
||||
PYENV_VERSION=system pyenv-which python2 >/dev/null 2>&1) ; then
|
||||
print_version system
|
||||
fi
|
||||
|
||||
shopt -s nullglob
|
||||
shopt -s dotglob nullglob
|
||||
for path in "$versions_dir"/*; do
|
||||
if [ -d "$path" ]; then
|
||||
if [ -n "$skip_aliases" ] && [ -L "$path" ]; then
|
||||
@@ -123,7 +139,7 @@ for path in "$versions_dir"/*; do
|
||||
done
|
||||
fi
|
||||
done
|
||||
shopt -u nullglob
|
||||
shopt -u dotglob nullglob
|
||||
|
||||
if [ "$num_versions" -eq 0 ] && [ -n "$include_system" ]; then
|
||||
echo "Warning: no Python detected on the system" >&2
|
||||
|
||||
@@ -20,7 +20,7 @@ fi
|
||||
|
||||
whence() {
|
||||
local command="$1"
|
||||
pyenv-versions --bare | while read version; do
|
||||
pyenv-versions --bare | while read -r version; do
|
||||
path="$(pyenv-prefix "$version")/bin/${command}"
|
||||
if [ -x "$path" ]; then
|
||||
[ "$print_paths" ] && echo "$path" || echo "$version"
|
||||
|
||||
@@ -2,10 +2,13 @@
|
||||
#
|
||||
# Summary: Display the full path to an executable
|
||||
#
|
||||
# Usage: pyenv which <command>
|
||||
# Usage: pyenv which <command> [--nosystem]
|
||||
#
|
||||
# Displays the full path to the executable that pyenv will invoke when
|
||||
# you run the given command.
|
||||
# Use --nosystem argument in case when you don't need to search command in the
|
||||
# system environment.
|
||||
#
|
||||
|
||||
set -e
|
||||
[ -n "$PYENV_DEBUG" ] && set -x
|
||||
@@ -15,6 +18,12 @@ if [ "$1" = "--complete" ]; then
|
||||
exec pyenv-shims --short
|
||||
fi
|
||||
|
||||
if [ "$2" = "--nosystem" ]; then
|
||||
system=""
|
||||
else
|
||||
system="system"
|
||||
fi
|
||||
|
||||
remove_from_path() {
|
||||
local path_to_remove="$1"
|
||||
local path_before
|
||||
@@ -38,7 +47,7 @@ OLDIFS="$IFS"
|
||||
IFS=: versions=(${PYENV_VERSION:-$(pyenv-version-name)})
|
||||
IFS="$OLDIFS"
|
||||
|
||||
for version in "${versions[@]}"; do
|
||||
for version in "${versions[@]}" "$system"; do
|
||||
if [ "$version" = "system" ]; then
|
||||
PATH="$(remove_from_path "${PYENV_ROOT}/shims")"
|
||||
PYENV_COMMAND_PATH="$(command -v "$PYENV_COMMAND" || true)"
|
||||
@@ -82,6 +91,8 @@ else
|
||||
echo "The \`$1' command exists in these Python versions:"
|
||||
echo "$versions" | sed 's/^/ /g'
|
||||
echo
|
||||
echo "Note: See 'pyenv help global' for tips on allowing both"
|
||||
echo " python2 and python3 to be found."
|
||||
} >&2
|
||||
fi
|
||||
|
||||
|
||||
@@ -15,8 +15,8 @@ for changes in each version.
|
||||
|
||||
### Installing as a pyenv plugin (recommended)
|
||||
|
||||
You need nothing to do since python-build is bundled with pyenv by
|
||||
default.
|
||||
Since python-build is bundled with pyenv by
|
||||
default, you do not need to do anything.
|
||||
|
||||
### Installing as a standalone program (advanced)
|
||||
|
||||
@@ -109,6 +109,8 @@ You can set certain environment variables to control the build process.
|
||||
downloaded package files.
|
||||
* `PYTHON_BUILD_MIRROR_URL` overrides the default mirror URL root to one of your
|
||||
choosing.
|
||||
* `PYTHON_BUILD_MIRROR_URL_SKIP_CHECKSUM`, if set, does not append the SHA2
|
||||
checksum of the file to the mirror URL.
|
||||
* `PYTHON_BUILD_SKIP_MIRROR`, if set, forces python-build to download packages from
|
||||
their original source URLs instead of using a mirror.
|
||||
* `PYTHON_BUILD_ROOT` overrides the default location from where build definitions
|
||||
@@ -182,6 +184,10 @@ You can point python-build to another mirror by specifying the
|
||||
own local mirror, for example. Package mirror URLs are constructed by joining
|
||||
this variable with the SHA2 checksum of the package file.
|
||||
|
||||
If the mirror being used does not have the same checksum (*e.g.* with a
|
||||
pull-through cache like Artifactory), you can set the
|
||||
`PYTHON_BUILD_MIRROR_URL_SKIP_CHECKSUM` environment variable.
|
||||
|
||||
If you don't have an SHA2 program installed, python-build will skip the download
|
||||
mirror and use official URLs instead. You can force python-build to bypass the
|
||||
mirror by setting the `PYTHON_BUILD_SKIP_MIRROR` environment variable.
|
||||
@@ -220,3 +226,51 @@ Please see the [pyenv wiki](https://github.com/pyenv/pyenv/wiki) for solutions t
|
||||
If you can't find an answer on the wiki, open an issue on the [issue
|
||||
tracker](https://github.com/pyenv/pyenv/issues). Be sure to include
|
||||
the full build log for build failures.
|
||||
|
||||
## Contributing
|
||||
|
||||
### Testing new python versions
|
||||
|
||||
If you are contributing a new python version for python-build,
|
||||
you can test the build in a [docker](https://www.docker.com/) container based on Ubuntu 18.04.
|
||||
|
||||
With docker installed:
|
||||
|
||||
```sh
|
||||
docker build -t my_container .
|
||||
docker run my_container pyenv install <my_version>
|
||||
```
|
||||
|
||||
To enter a shell which will allow you to build and then test a python version,
|
||||
replace the second line with
|
||||
|
||||
```sh
|
||||
docker run -it my_container
|
||||
```
|
||||
|
||||
The container will need to be rebuilt whenever you change the repo,
|
||||
but after the first build, this will be very fast,
|
||||
as the layer including the build dependencies will be cached.
|
||||
|
||||
Changes made inside the container will not be persisted.
|
||||
|
||||
To test *all* new versions since a particular revision (e.g. `master`), `cd` to the root of your `pyenv` repo, and run this script:
|
||||
|
||||
```sh
|
||||
set -e
|
||||
set -x
|
||||
|
||||
docker build -t pyenv-test-container .
|
||||
|
||||
git diff --name-only master \
|
||||
| grep '^plugins/python-build/share/python-build/' \
|
||||
| awk -F '/' '{print $NF}' \
|
||||
| xargs -I _ docker run pyenv-test-container pyenv install _
|
||||
```
|
||||
|
||||
- Build the docker image with the **t**ag pyenv-test-container
|
||||
- Look for the names files changed since revision `master`
|
||||
- Filter out any which don't live where python-build keeps its build scripts
|
||||
- Look only at the file name (i.e. the python version name)
|
||||
- Run a new docker container for each, building that version
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ usage() {
|
||||
|
||||
definitions() {
|
||||
local query="$1"
|
||||
python-build --definitions | $(type -p ggrep grep | head -1) -F "$query" || true
|
||||
python-build --definitions | $(type -P ggrep grep | head -1) -F "$query" || true
|
||||
}
|
||||
|
||||
indent() {
|
||||
@@ -160,7 +160,7 @@ if [ -d "${PREFIX}/bin" ]; then
|
||||
read -p "continue with installation? (y/N) "
|
||||
|
||||
case "$REPLY" in
|
||||
y* | Y* ) ;;
|
||||
y | Y | yes | YES ) ;;
|
||||
* ) exit 1 ;;
|
||||
esac
|
||||
elif [ -n "$SKIP_EXISTING" ]; then
|
||||
|
||||
@@ -69,9 +69,9 @@ if [ -z "$FORCE" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
read -p "pyenv: remove $PREFIX? "
|
||||
read -p "pyenv: remove $PREFIX? [y|N]"
|
||||
case "$REPLY" in
|
||||
y* | Y* ) ;;
|
||||
y | Y | yes | YES ) ;;
|
||||
* ) exit 1 ;;
|
||||
esac
|
||||
fi
|
||||
@@ -81,6 +81,7 @@ for hook in "${before_hooks[@]}"; do eval "$hook"; done
|
||||
if [ -d "$PREFIX" ]; then
|
||||
rm -rf "$PREFIX"
|
||||
pyenv-rehash
|
||||
echo "pyenv: $VERSION_NAME uninstalled"
|
||||
fi
|
||||
|
||||
for hook in "${after_hooks[@]}"; do eval "$hook"; done
|
||||
|
||||
@@ -14,11 +14,13 @@
|
||||
# -g/--debug Build a debug version
|
||||
#
|
||||
|
||||
PYTHON_BUILD_VERSION="20160602"
|
||||
PYTHON_BUILD_VERSION="20180424"
|
||||
|
||||
OLDIFS="$IFS"
|
||||
|
||||
set -E
|
||||
[ -n "$PYENV_DEBUG" ] && set -x
|
||||
|
||||
exec 3<&2 # preserve original stderr at fd 3
|
||||
|
||||
|
||||
@@ -56,21 +58,24 @@ lib "$1"
|
||||
|
||||
|
||||
resolve_link() {
|
||||
$(type -p greadlink readlink | head -1) "$1"
|
||||
$(type -P greadlink readlink | head -1) "$1"
|
||||
}
|
||||
|
||||
abs_dirname() {
|
||||
local path="$1"
|
||||
|
||||
# Use a subshell to avoid modifying the current path
|
||||
# Use a subshell to avoid changing the current path
|
||||
(
|
||||
while [ -n "$path" ]; do
|
||||
cd "${path%/*}"
|
||||
local name="${path##*/}"
|
||||
cd_path="${path%/*}"
|
||||
if [[ "$cd_path" != "$path" ]]; then
|
||||
cd "$cd_path"
|
||||
fi
|
||||
name="${path##*/}"
|
||||
path="$(resolve_link "$name" || true)"
|
||||
done
|
||||
|
||||
pwd
|
||||
echo "$PWD"
|
||||
)
|
||||
}
|
||||
|
||||
@@ -125,13 +130,13 @@ build_failed() {
|
||||
|
||||
if ! rmdir "${BUILD_PATH}" 2>/dev/null; then
|
||||
echo "Inspect or clean up the working tree at ${BUILD_PATH}"
|
||||
fi
|
||||
|
||||
if file_is_not_empty "$LOG_PATH"; then
|
||||
colorize 33 "Results logged to ${LOG_PATH}"
|
||||
printf "\n\n"
|
||||
echo "Last 10 log lines:"
|
||||
tail -n 10 "$LOG_PATH"
|
||||
fi
|
||||
if file_is_not_empty "$LOG_PATH"; then
|
||||
colorize 33 "Results logged to ${LOG_PATH}"
|
||||
printf "\n\n"
|
||||
echo "Last 10 log lines:"
|
||||
tail -n 10 "$LOG_PATH"
|
||||
fi
|
||||
} >&3
|
||||
exit 1
|
||||
@@ -155,6 +160,9 @@ num_cpu_cores() {
|
||||
Darwin | *BSD )
|
||||
num="$(sysctl -n hw.ncpu 2>/dev/null || true)"
|
||||
;;
|
||||
SunOS )
|
||||
num="$(getconf NPROCESSORS_ONLN 2>/dev/null || true)"
|
||||
;;
|
||||
* )
|
||||
num="$({ getconf _NPROCESSORS_ONLN ||
|
||||
grep -c ^processor /proc/cpuinfo; } 2>/dev/null)"
|
||||
@@ -321,25 +329,25 @@ verify_checksum() {
|
||||
|
||||
http() {
|
||||
local method="$1"
|
||||
local url="$2"
|
||||
local file="$3"
|
||||
[ -n "$url" ] || return 1
|
||||
[ -n "$2" ] || return 1
|
||||
shift 1
|
||||
|
||||
if type aria2c &>/dev/null; then
|
||||
"http_${method}_aria2c" "$url" "$file"
|
||||
elif type curl &>/dev/null; then
|
||||
"http_${method}_curl" "$url" "$file"
|
||||
elif type wget &>/dev/null; then
|
||||
# SSL Certificate error with older wget that does not support Server Name Indication (#60)
|
||||
if [[ "$(wget --version 2>/dev/null || true)" = "GNU Wget 1.1"[0-3]* ]]; then
|
||||
echo "python-build: wget (< 1.14) doesn't support Server Name Indication. Please install curl (>= 7.18.1) and try again" >&2
|
||||
return 1
|
||||
PYTHON_BUILD_HTTP_CLIENT="${PYTHON_BUILD_HTTP_CLIENT:-$(detect_http_client)}"
|
||||
[ -n "$PYTHON_BUILD_HTTP_CLIENT" ] || return 1
|
||||
|
||||
"http_${method}_${PYTHON_BUILD_HTTP_CLIENT}" "$@"
|
||||
}
|
||||
|
||||
detect_http_client() {
|
||||
local client
|
||||
for client in aria2c curl wget; do
|
||||
if type "$client" &>/dev/null; then
|
||||
echo "$client"
|
||||
return
|
||||
fi
|
||||
"http_${method}_wget" "$url" "$file"
|
||||
else
|
||||
echo "error: please install \`aria2c\`, \`curl\` or \`wget\` and try again" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo "error: please install \`aria2c\`, \`curl\`, or \`wget\` and try again" >&2
|
||||
return 1
|
||||
}
|
||||
|
||||
http_head_aria2c() {
|
||||
@@ -376,6 +384,7 @@ fetch_tarball() {
|
||||
local package_url="$2"
|
||||
local mirror_url
|
||||
local checksum
|
||||
local extracted_dir
|
||||
|
||||
if [ "$package_url" != "${package_url/\#}" ]; then
|
||||
checksum="${package_url#*#}"
|
||||
@@ -408,14 +417,19 @@ fetch_tarball() {
|
||||
fi
|
||||
|
||||
if ! reuse_existing_tarball "$package_filename" "$checksum"; then
|
||||
local tarball_filename=$(basename $package_url)
|
||||
echo "Downloading ${tarball_filename}..." >&2
|
||||
# Report the cached file name -- sometimes, it's useful to know (#1743)
|
||||
echo "Downloading ${package_filename}..." >&2
|
||||
http head "$mirror_url" &&
|
||||
download_tarball "$mirror_url" "$package_filename" "$checksum" ||
|
||||
download_tarball "$package_url" "$package_filename" "$checksum"
|
||||
fi
|
||||
|
||||
{ if tar $tar_args "$package_filename"; then
|
||||
if [ ! -d "$package_name" ]; then
|
||||
extracted_dir="$(find_extracted_directory)"
|
||||
mv "$extracted_dir" "$package_name"
|
||||
fi
|
||||
|
||||
if [ -z "$KEEP_BUILD_PATH" ]; then
|
||||
rm -f "$package_filename"
|
||||
else
|
||||
@@ -425,6 +439,17 @@ fetch_tarball() {
|
||||
} >&4 2>&1
|
||||
}
|
||||
|
||||
find_extracted_directory() {
|
||||
for f in *; do
|
||||
if [ -d "$f" ]; then
|
||||
echo "$f"
|
||||
return
|
||||
fi
|
||||
done
|
||||
echo "Extracted directory not found" >&2
|
||||
return 1
|
||||
}
|
||||
|
||||
fetch_nightly_tarball() {
|
||||
local package_name="$1"
|
||||
local package_url="$2"
|
||||
@@ -457,7 +482,12 @@ reuse_existing_tarball() {
|
||||
}
|
||||
|
||||
download_tarball() {
|
||||
local package_url="$1"
|
||||
local official_source="www.python.org/ftp/python"
|
||||
if [ -n "$PYTHON_BUILD_MIRROR_URL_SKIP_CHECKSUM" ]; then
|
||||
local package_url="$(echo "$1" | sed -e "s|.*//${URL_BASE:-$official_source}|$PYTHON_BUILD_MIRROR_URL|g")"
|
||||
else
|
||||
local package_url="$1"
|
||||
fi
|
||||
[ -n "$package_url" ] || return 1
|
||||
|
||||
local package_filename="$2"
|
||||
@@ -481,7 +511,7 @@ download_tarball() {
|
||||
}
|
||||
|
||||
has_tar_xz_support() {
|
||||
tar Jc /dev/null 1>/dev/null 2>&1
|
||||
tar Jcf - /dev/null 1>/dev/null 2>&1
|
||||
}
|
||||
|
||||
fetch_git() {
|
||||
@@ -736,7 +766,10 @@ build_package_standard_build() {
|
||||
local PACKAGE_CFLAGS="${package_var_name}_CFLAGS"
|
||||
|
||||
if [ "$package_var_name" = "PYTHON" ]; then
|
||||
use_homebrew_readline || use_freebsd_pkg ||true
|
||||
use_homebrew_readline || use_freebsd_pkg || true
|
||||
if is_mac -ge 1014; then
|
||||
use_xcode_sdk_zlib || use_homebrew_zlib || true
|
||||
fi
|
||||
fi
|
||||
|
||||
( if [ "${CFLAGS+defined}" ] || [ "${!PACKAGE_CFLAGS+defined}" ]; then
|
||||
@@ -765,29 +798,14 @@ build_package_standard_install() {
|
||||
} >&4 2>&1
|
||||
}
|
||||
|
||||
build_package_standard_install_with_bundled_gems() {
|
||||
{ "$MAKE" update-gems
|
||||
"$MAKE" extract-gems
|
||||
} >&4 2>&1
|
||||
|
||||
build_package_standard_install "$@"
|
||||
}
|
||||
|
||||
# Backword Compatibility for standard function
|
||||
# Backward Compatibility for standard function
|
||||
build_package_standard() {
|
||||
build_package_standard_build "$@"
|
||||
build_package_standard_install "$@"
|
||||
}
|
||||
|
||||
build_package_autoconf() {
|
||||
{ autoconf
|
||||
} >&4 2>&1
|
||||
}
|
||||
|
||||
build_package_ruby() {
|
||||
local package_name="$1"
|
||||
|
||||
{ "$RUBY_BIN" setup.rb
|
||||
{ autoreconf
|
||||
} >&4 2>&1
|
||||
}
|
||||
|
||||
@@ -798,125 +816,9 @@ build_package_python() {
|
||||
} >&4 2>&1
|
||||
}
|
||||
|
||||
build_package_ree_installer() {
|
||||
build_package_auto_tcltk
|
||||
|
||||
local options=""
|
||||
is_mac && options="--no-tcmalloc"
|
||||
|
||||
local option
|
||||
for option in $RUBY_CONFIGURE_OPTS ${RUBY_CONFIGURE_OPTS_ARRAY[@]}; do
|
||||
options="$options -c $option"
|
||||
done
|
||||
|
||||
# Work around install_useful_libraries crash with --dont-install-useful-gems
|
||||
mkdir -p "$PREFIX_PATH/lib/ruby/gems/1.8/gems"
|
||||
|
||||
{ ./installer --auto "$PREFIX_PATH" --dont-install-useful-gems $options $CONFIGURE_OPTS
|
||||
} >&4 2>&1
|
||||
}
|
||||
|
||||
build_package_rbx() {
|
||||
local package_name="$1"
|
||||
|
||||
{ [ ! -e "Gemfile" ] || bundle --path=vendor/bundle
|
||||
if [ -n "$RUBY_BUILD_CACHE_PATH" ]; then
|
||||
mkdir -p vendor
|
||||
ln -s "$RUBY_BUILD_CACHE_PATH" vendor/prebuilt
|
||||
fi
|
||||
|
||||
local opt
|
||||
local -a configure_opts
|
||||
for opt in "${RUBY_CONFIGURE_OPTS_ARRAY[@]}"; do
|
||||
if [[ $opt == --with-openssl-dir=* ]]; then
|
||||
local openssl_dir="${opt#*=}"
|
||||
configure_opts[${#configure_opts[@]}]="--with-lib-dir=${openssl_dir}/lib"
|
||||
configure_opts[${#configure_opts[@]}]="--with-include-dir=${openssl_dir}/include"
|
||||
else
|
||||
configure_opts[${#configure_opts[@]}]="$opt"
|
||||
fi
|
||||
done
|
||||
|
||||
RUBYOPT="-rrubygems $RUBYOPT" ./configure --prefix="$PREFIX_PATH" $RUBY_CONFIGURE_OPTS "${configure_opts[@]}"
|
||||
rake install
|
||||
fix_rbx_gem_binstubs "$PREFIX_PATH"
|
||||
fix_rbx_irb "$PREFIX_PATH"
|
||||
} >&4 2>&1
|
||||
}
|
||||
|
||||
build_package_mruby() {
|
||||
local package_name="$1"
|
||||
|
||||
{ rake
|
||||
mkdir -p "$PREFIX_PATH"
|
||||
cp -fR build/host/* "$PREFIX_PATH"
|
||||
cd "$PREFIX_PATH/bin"
|
||||
ln -fs mruby ruby
|
||||
ln -fs mirb irb
|
||||
} >&4 2>&1
|
||||
}
|
||||
|
||||
build_package_maglev() {
|
||||
build_package_copy
|
||||
|
||||
{ cd "${PREFIX_PATH}"
|
||||
./install.sh
|
||||
cd "${PREFIX_PATH}/bin"
|
||||
echo "Creating symlink for ruby*"
|
||||
ln -fs maglev-ruby ruby
|
||||
echo "Creating symlink for irb*"
|
||||
ln -fs maglev-irb irb
|
||||
} >&4 2>&1
|
||||
echo
|
||||
echo "Run 'maglev start' to start up the stone before using 'ruby' or 'irb'"
|
||||
}
|
||||
|
||||
build_package_topaz() {
|
||||
build_package_copy
|
||||
{ cd "${PREFIX_PATH}/bin"
|
||||
echo "Creating symlink for ruby*"
|
||||
ln -fs topaz ruby
|
||||
} >&4 2>&1
|
||||
}
|
||||
|
||||
topaz_architecture() {
|
||||
case "$(uname -s)" in
|
||||
"Darwin") echo "osx64";;
|
||||
"Linux") [[ "$(uname -m)" = "x86_64" ]] && echo "linux64" || echo "linux32";;
|
||||
*)
|
||||
echo "no nightly builds available" >&2
|
||||
exit 1;;
|
||||
esac
|
||||
}
|
||||
|
||||
build_package_jruby() {
|
||||
build_package_copy
|
||||
cd "${PREFIX_PATH}/bin"
|
||||
ln -fs jruby ruby
|
||||
chmod +x ruby
|
||||
install_jruby_launcher
|
||||
remove_windows_files
|
||||
fix_jruby_shebangs
|
||||
}
|
||||
|
||||
install_jruby_launcher() {
|
||||
cd "${PREFIX_PATH}/bin"
|
||||
{ ./ruby gem install jruby-launcher
|
||||
} >&4 2>&1
|
||||
}
|
||||
|
||||
fix_jruby_shebangs() {
|
||||
for file in "${PREFIX_PATH}/bin"/*; do
|
||||
if [ "$(head -c 20 "$file")" = "#!/usr/bin/env jruby" ]; then
|
||||
sed -i.bak "1 s:.*:#\!${PREFIX_PATH}\/bin\/jruby:" "$file"
|
||||
rm "$file".bak
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
remove_windows_files() {
|
||||
cd "$PREFIX_PATH"
|
||||
rm -f bin/*.exe bin/*.dll bin/*.bat bin/jruby.sh
|
||||
rm -f bin/*.exe bin/*.dll bin/*.bat
|
||||
}
|
||||
|
||||
build_package_jython() {
|
||||
@@ -949,12 +851,21 @@ build_package_jython_builder() {
|
||||
}
|
||||
|
||||
build_package_pyston() {
|
||||
mkdir -p "${PREFIX_PATH}/"
|
||||
cp -fR . "${PREFIX_PATH}/"
|
||||
chmod +x "${PREFIX_PATH}/"pyston
|
||||
# FIXME ugly hack below adapted from
|
||||
# https://github.com/dropbox/pyston/blob/master/docker/pyston/Dockerfile
|
||||
( cd "${PREFIX_PATH}/" && ./pyston virtualenv/virtualenv.py . )
|
||||
# currently supported version 2.2 and upper
|
||||
build_package_copy
|
||||
mkdir -p "${PREFIX_PATH}/bin" "${PREFIX_PATH}/lib"
|
||||
local bin
|
||||
shopt -s nullglob
|
||||
for bin in "bin/"*; do
|
||||
if [ -f "${bin}" ] && [ -x "${bin}" ] && [ ! -L "${bin}" ]; then
|
||||
case "${bin##*/}" in
|
||||
"pyston"* )
|
||||
( cd "${PREFIX_PATH}/bin" && ln -fs "${bin##*/}" "python" )
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
done
|
||||
shopt -u nullglob
|
||||
}
|
||||
|
||||
build_package_ironpython() {
|
||||
@@ -975,7 +886,9 @@ build_package_micropython() {
|
||||
elif [ -z "${MAKE_OPTS+defined}" ]; then
|
||||
MAKE_OPTS="-j $(num_cpu_cores)"
|
||||
fi
|
||||
{ cd ports/unix
|
||||
{ cd mpy-cross
|
||||
"$MAKE" $MAKE_OPTS
|
||||
cd ../ports/unix
|
||||
"$MAKE" $MAKE_OPTS axtls
|
||||
"$MAKE" $MAKE_OPTS CFLAGS_EXTRA="-DMICROPY_PY_SYS_PATH_DEFAULT='\"${PREFIX_PATH}/lib/micropython\"'"
|
||||
"$MAKE" install $MAKE_INSTALL_OPTS PREFIX="${PREFIX_PATH}"
|
||||
@@ -995,6 +908,7 @@ pypy_architecture() {
|
||||
"ppc64" ) echo "linux-ppc64" ;;
|
||||
"ppc64le" ) echo "linux-ppc64le" ;;
|
||||
"x86_64" ) echo "linux64" ;;
|
||||
"aarch64" ) echo "linux-aarch64" ;;
|
||||
* ) return 1 ;;
|
||||
esac
|
||||
;;
|
||||
@@ -1013,6 +927,11 @@ pyston_architecture() {
|
||||
pypy_architecture
|
||||
}
|
||||
|
||||
build_package_graalpython() {
|
||||
build_package_copy
|
||||
ln -fs "${PREFIX_PATH}/bin/graalpython" "${PREFIX_PATH}/bin/python"
|
||||
}
|
||||
|
||||
build_package_pypy() {
|
||||
build_package_copy
|
||||
mkdir -p "${PREFIX_PATH}/bin" "${PREFIX_PATH}/lib"
|
||||
@@ -1065,12 +984,38 @@ build_package_pypy_builder() {
|
||||
build_package_pypy
|
||||
}
|
||||
|
||||
activepython_architecture() {
|
||||
case "$(uname -s)" in
|
||||
"Darwin" ) echo "macosx10.9-i386-x86_64" ;;
|
||||
"Linux" )
|
||||
case "$(uname -m)" in
|
||||
"i386" | "i486" | "i586" | "i686" | "i786" ) echo "linux-x86" ;;
|
||||
"x86_64" ) echo "linux-x86_64" ;;
|
||||
* ) return 1 ;;
|
||||
esac
|
||||
;;
|
||||
* ) return 1 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
build_package_activepython() {
|
||||
local package_name="$1"
|
||||
{ bash "install.sh" --install-dir "${PREFIX_PATH}"
|
||||
} >&4 2>&1
|
||||
}
|
||||
|
||||
anaconda_architecture() {
|
||||
case "$(uname -s)" in
|
||||
"Darwin" ) echo "MacOSX-x86_64" ;;
|
||||
"Darwin" )
|
||||
case "$(uname -m)" in
|
||||
"arm64" ) echo "MacOSX-arm64" ;;
|
||||
* ) echo "MacOSX-x86_64" ;;
|
||||
esac
|
||||
;;
|
||||
"Linux" )
|
||||
case "$(uname -m)" in
|
||||
"armv7l" ) echo "Linux-armv7l" ;;
|
||||
"aarch64" ) echo "Linux-aarch64" ;;
|
||||
"i386" | "i486" | "i586" | "i686" | "i786" ) echo "Linux-x86" ;;
|
||||
"ppc64le" ) echo "Linux-ppc64le" ;;
|
||||
"x86_64" ) echo "Linux-x86_64" ;;
|
||||
@@ -1127,40 +1072,13 @@ cleanup_builtin_patches() {
|
||||
}
|
||||
|
||||
fix_directory_permissions() {
|
||||
# Ensure installed directories are not world-writable to avoid Bundler warnings
|
||||
# Ensure installed directories are not world-writable
|
||||
find "$PREFIX_PATH" -type d \( -perm -020 -o -perm -002 \) -exec chmod go-w {} \;
|
||||
}
|
||||
|
||||
fix_rbx_gem_binstubs() {
|
||||
local prefix="$1"
|
||||
local gemdir="${prefix}/gems/bin"
|
||||
local bindir="${prefix}/bin"
|
||||
local file binstub
|
||||
# Symlink Rubinius' `gems/bin/` into `bin/`
|
||||
if [ -d "$gemdir" ] && [ ! -L "$gemdir" ]; then
|
||||
for file in "$gemdir"/*; do
|
||||
binstub="${bindir}/${file##*/}"
|
||||
rm -f "$binstub"
|
||||
{ echo "#!${bindir}/ruby"
|
||||
grep -v '^#!' "$file"
|
||||
} > "$binstub"
|
||||
chmod +x "$binstub"
|
||||
done
|
||||
rm -rf "$gemdir"
|
||||
ln -s ../bin "$gemdir"
|
||||
fi
|
||||
}
|
||||
|
||||
fix_rbx_irb() {
|
||||
local prefix="$1"
|
||||
"${prefix}/bin/irb" --version &>/dev/null ||
|
||||
"${prefix}/bin/gem" install rubysl-tracer -v '~> 2.0' --no-rdoc --no-ri &>/dev/null ||
|
||||
true
|
||||
}
|
||||
|
||||
require_java7() {
|
||||
local version="$(java -version 2>&1 | grep '\(java\|openjdk\) version' | head -1)"
|
||||
if [[ $version != *1.[789]* ]]; then
|
||||
if [[ $version != *[789]* ]]; then
|
||||
colorize 1 "ERROR" >&3
|
||||
echo ": Java 7 required. Please install a 1.7-compatible JRE." >&3
|
||||
return 1
|
||||
@@ -1192,9 +1110,9 @@ require_gcc() {
|
||||
|
||||
colorize 1 "TO FIX THE PROBLEM"
|
||||
if type brew &>/dev/null; then
|
||||
echo ": Install Homebrew's apple-gcc42 package with this"
|
||||
echo ": Install Homebrew's GCC package with this"
|
||||
echo -n "command: "
|
||||
colorize 4 "brew tap homebrew/dupes ; brew install apple-gcc42"
|
||||
colorize 4 "brew install gcc@4.9"
|
||||
else
|
||||
echo ": Install the official GCC compiler using these"
|
||||
echo -n "packages: "
|
||||
@@ -1358,6 +1276,17 @@ require_distro() {
|
||||
return 1
|
||||
}
|
||||
|
||||
require_osx_version() {
|
||||
function version { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'; }
|
||||
|
||||
local required_version="$@"
|
||||
local osx_version="$(sw_vers -productVersion)"
|
||||
if [[ $(version $osx_version) -ge $(version $required_version) ]]; then
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
configured_with_package_dir() {
|
||||
local package_var_name="$(capitalize "$1")"
|
||||
shift 1
|
||||
@@ -1442,6 +1371,26 @@ use_homebrew_readline() {
|
||||
fi
|
||||
}
|
||||
|
||||
prefer_openssl11() {
|
||||
# Allow overriding the preference of OpenSSL version per definition basis (#1302, #1325, #1326)
|
||||
PYTHON_BUILD_HOMEBREW_OPENSSL_FORMULA="${PYTHON_BUILD_HOMEBREW_OPENSSL_FORMULA:-openssl@1.1 openssl}"
|
||||
export PYTHON_BUILD_HOMEBREW_OPENSSL_FORMULA
|
||||
}
|
||||
|
||||
build_package_mac_readline() {
|
||||
# Install to a subdirectory since we don't want shims for bin/readline.
|
||||
READLINE_PREFIX_PATH="${PREFIX_PATH}/readline"
|
||||
|
||||
# Tell Python to use this readline for its extension.
|
||||
export CPPFLAGS="-I${READLINE_PREFIX_PATH}/include ${CPPFLAGS}"
|
||||
export LDFLAGS="-L${READLINE_PREFIX_PATH}/lib ${LDFLAGS}"
|
||||
|
||||
# Make sure pkg-config finds our build first.
|
||||
export PKG_CONFIG_PATH="${READLINE_PREFIX_PATH}/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"
|
||||
|
||||
build_package_standard "$@"
|
||||
}
|
||||
|
||||
has_broken_mac_openssl() {
|
||||
is_mac || return 1
|
||||
local openssl_version="$(/usr/bin/openssl version 2>/dev/null || true)"
|
||||
@@ -1450,14 +1399,24 @@ has_broken_mac_openssl() {
|
||||
}
|
||||
|
||||
use_homebrew_openssl() {
|
||||
local ssldir="$(brew --prefix openssl 2>/dev/null || true)"
|
||||
if [ -d "$ssldir" ]; then
|
||||
echo "python-build: use openssl from homebrew"
|
||||
export CPPFLAGS="-I$ssldir/include ${CPPFLAGS}"
|
||||
export LDFLAGS="-L$ssldir/lib ${LDFLAGS}"
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
command -v brew >/dev/null || return 1
|
||||
for openssl in ${PYTHON_BUILD_HOMEBREW_OPENSSL_FORMULA:-openssl}; do
|
||||
local ssldir="$(brew --prefix "${openssl}" || true)"
|
||||
if [ -d "$ssldir" ]; then
|
||||
echo "python-build: use ${openssl} from homebrew"
|
||||
if [[ -n "${PYTHON_BUILD_CONFIGURE_WITH_OPENSSL:-}" ]]; then
|
||||
# configure script of newer CPython versions support `--with-openssl`
|
||||
# https://bugs.python.org/issue21541
|
||||
package_option python configure --with-openssl="${ssldir}"
|
||||
else
|
||||
export CPPFLAGS="-I$ssldir/include ${CPPFLAGS}"
|
||||
export LDFLAGS="-L$ssldir/lib ${LDFLAGS}"
|
||||
fi
|
||||
export PKG_CONFIG_PATH="$ssldir/lib/pkgconfig/:${PKG_CONFIG_PATH}"
|
||||
return
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
build_package_mac_openssl() {
|
||||
@@ -1468,15 +1427,27 @@ build_package_mac_openssl() {
|
||||
OPENSSLDIR="${OPENSSLDIR:-$OPENSSL_PREFIX_PATH/ssl}"
|
||||
|
||||
# Tell Python to use this openssl for its extension.
|
||||
export CPPFLAGS="-I${OPENSSL_PREFIX_PATH}/include ${CPPFLAGS}"
|
||||
export LDFLAGS="-L${OPENSSL_PREFIX_PATH}/lib ${LDFLAGS}"
|
||||
if [[ -n "${PYTHON_BUILD_CONFIGURE_WITH_OPENSSL:-}" ]]; then
|
||||
# configure script of newer CPython versions support `--with-openssl`
|
||||
# https://bugs.python.org/issue21541
|
||||
package_option python configure --with-openssl="${OPENSSL_PREFIX_PATH}"
|
||||
else
|
||||
export CPPFLAGS="-I${OPENSSL_PREFIX_PATH}/include ${CPPFLAGS}"
|
||||
export LDFLAGS="-L${OPENSSL_PREFIX_PATH}/lib ${LDFLAGS}"
|
||||
fi
|
||||
|
||||
# Make sure pkg-config finds our build first.
|
||||
export PKG_CONFIG_PATH="${OPENSSL_PREFIX_PATH}/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"
|
||||
|
||||
# Hint OpenSSL that we prefer a 64-bit build.
|
||||
export KERNEL_BITS="64"
|
||||
OPENSSL_CONFIGURE="${OPENSSL_CONFIGURE:-./config}"
|
||||
|
||||
# Compile a shared lib with zlib dynamically linked, no kerberos.
|
||||
package_option openssl configure --openssldir="$OPENSSLDIR" zlib-dynamic no-ssl2 no-ssl3 no-krb5 shared
|
||||
local nokerberos
|
||||
[[ "$1" != openssl-1.0.* ]] || nokerberos=1
|
||||
|
||||
# Compile a shared lib with zlib dynamically linked.
|
||||
package_option openssl configure --openssldir="$OPENSSLDIR" zlib-dynamic no-ssl3 shared ${nokerberos:+no-ssl2 no-krb5}
|
||||
|
||||
# Default MAKE_OPTS are -j 2 which can confuse the build. Thankfully, make
|
||||
# gives precedence to the last -j option, so we can override that.
|
||||
@@ -1492,30 +1463,57 @@ build_package_mac_openssl() {
|
||||
|
||||
# Post-install check that the openssl extension was built.
|
||||
build_package_verify_openssl() {
|
||||
"$RUBY_BIN" -e 'begin
|
||||
require "openssl"
|
||||
rescue LoadError
|
||||
$stderr.puts "The Ruby openssl extension was not compiled. Missing the OpenSSL lib?"
|
||||
$stderr.puts "Configure options used:"
|
||||
require "rbconfig"; require "shellwords"
|
||||
RbConfig::CONFIG.fetch("configure_args").shellsplit.each { |arg| $stderr.puts " #{arg}" }
|
||||
exit 1
|
||||
end' >&4 2>&1
|
||||
"$RUBY_BIN" -e '
|
||||
manager = ARGV[0]
|
||||
packages = {
|
||||
"apt-get" => Hash.new {|h,k| "lib#{k}-dev" }.update(
|
||||
"openssl" => "libssl-dev",
|
||||
"zlib" => "zlib1g-dev"
|
||||
),
|
||||
"yum" => Hash.new {|h,k| "#{k}-devel" }.update(
|
||||
"yaml" => "libyaml-devel"
|
||||
)
|
||||
}
|
||||
|
||||
failed = %w[openssl readline zlib yaml].reject do |lib|
|
||||
begin
|
||||
require lib
|
||||
rescue LoadError
|
||||
$stderr.puts "The Ruby #{lib} extension was not compiled."
|
||||
end
|
||||
end
|
||||
|
||||
if failed.size > 0
|
||||
$stderr.puts "ERROR: Ruby install aborted due to missing extensions"
|
||||
$stderr.print "Try running `%s install -y %s` to fetch missing dependencies.\n\n" % [
|
||||
manager,
|
||||
failed.map { |lib| packages.fetch(manager)[lib] }.join(" ")
|
||||
] unless manager.empty?
|
||||
$stderr.puts "Configure options used:"
|
||||
require "rbconfig"; require "shellwords"
|
||||
RbConfig::CONFIG.fetch("configure_args").shellsplit.each { |arg| $stderr.puts " #{arg}" }
|
||||
exit 1
|
||||
end
|
||||
' "$(basename "$(type -P yum apt-get | head -1)")" >&4 2>&1
|
||||
}
|
||||
|
||||
# Ensure that directories listed in LDFLAGS exist
|
||||
build_package_ldflags_dirs() {
|
||||
local arg dir
|
||||
set - $LDFLAGS
|
||||
while [ $# -gt 0 ]; do
|
||||
dir=""
|
||||
case "$1" in
|
||||
-L ) dir="$2" ;;
|
||||
-L* ) dir="${1#-L}" ;;
|
||||
esac
|
||||
[ -z "$dir" ] || mkdir -p "$dir"
|
||||
shift 1
|
||||
done
|
||||
use_homebrew_zlib() {
|
||||
local brew_zlib="$(brew --prefix zlib 2>/dev/null || true)"
|
||||
if [ -d "$brew_zlib" ]; then
|
||||
echo "python-build: use zlib from homebrew"
|
||||
export CFLAGS="-I${brew_zlib} ${CFLAGS}"
|
||||
fi
|
||||
}
|
||||
|
||||
use_xcode_sdk_zlib() {
|
||||
local xc_sdk_path="$(xcrun --show-sdk-path 2>/dev/null || true)"
|
||||
if [ -d "$xc_sdk_path" ]; then
|
||||
echo "python-build: use zlib from xcode sdk"
|
||||
export CFLAGS="-I${xc_sdk_path}/usr/include ${CFLAGS}"
|
||||
if is_mac -ge 1100; then
|
||||
export LDFLAGS="${LDFLAGS} -L${xc_sdk_path}/usr/lib"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
build_package_enable_shared() {
|
||||
@@ -1534,36 +1532,6 @@ build_package_auto_tcltk() {
|
||||
fi
|
||||
}
|
||||
|
||||
rake() {
|
||||
if [ -e "./Gemfile" ]; then
|
||||
bundle exec rake "$@"
|
||||
else
|
||||
isolated_gem_dependency "rake --version" rake -v '~> 10.1.0'
|
||||
command rake "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
bundle() {
|
||||
isolated_gem_dependency "bundle --version" bundler -v '~> 1.3.5'
|
||||
command bundle "$@"
|
||||
}
|
||||
|
||||
isolated_gem_dependency() {
|
||||
set +E
|
||||
( command $1 &>/dev/null ) || {
|
||||
set -E
|
||||
shift 1
|
||||
isolated_gem_install "$@"
|
||||
}
|
||||
set -E
|
||||
}
|
||||
|
||||
isolated_gem_install() {
|
||||
export GEM_HOME="${PWD}/.gem"
|
||||
export PATH="${GEM_HOME}/bin:${PATH}"
|
||||
gem install "$@"
|
||||
}
|
||||
|
||||
apply_python_patch() {
|
||||
local patchfile
|
||||
case "$1" in
|
||||
@@ -1586,7 +1554,7 @@ build_package_symlink_version_suffix() {
|
||||
mv -f "${PREFIX_PATH}/bin" "${PREFIX_PATH}/bin.orig"
|
||||
fi
|
||||
# Only symlinks are installed in ${PREFIX_PATH}/bin
|
||||
ln -fs "${PREFIX_PATH}/Python.framework/Versions/Current/bin" "${PREFIX_PATH}/bin"
|
||||
ln -fs "${PREFIX_PATH}/Library/Frameworks/Python.framework/Versions/Current/bin" "${PREFIX_PATH}/bin"
|
||||
fi
|
||||
|
||||
# Not create symlinks on `altinstall` (#255)
|
||||
@@ -1759,6 +1727,43 @@ build_package_verify_py37() {
|
||||
build_package_verify_py36 "$1" "${2:-3.7}"
|
||||
}
|
||||
|
||||
# Post-install check for Python 3.8.x
|
||||
build_package_verify_py38() {
|
||||
build_package_verify_py37 "$1" "${2:-3.8}"
|
||||
}
|
||||
|
||||
# Post-install check for Python 3.9.x
|
||||
build_package_verify_py39() {
|
||||
build_package_verify_py38 "$1" "${2:-3.9}"
|
||||
}
|
||||
|
||||
# Post-install check for Python 3.10.x
|
||||
build_package_verify_py310() {
|
||||
build_package_verify_py39 "$1" "${2:-3.10}"
|
||||
}
|
||||
|
||||
# Post-install check for Python 3.11.x
|
||||
build_package_verify_py311() {
|
||||
build_package_verify_py310 "$1" "${2:-3.11}"
|
||||
}
|
||||
|
||||
# Post-install check for Python 3.x rolling release scripts
|
||||
# XXX: Will need splitting into project-specific ones if there emerge
|
||||
# multiple rolling-release scripts with different checks needed
|
||||
build_package_verify_py3_latest() {
|
||||
build_package_verify_py311 "$1" "3"
|
||||
}
|
||||
|
||||
# Copy Tools/gdb/libpython.py to pythonX.Y-gdb.py (#1190)
|
||||
build_package_copy_python_gdb() {
|
||||
if [ -e "$BUILD_PATH/$1/Tools/gdb/libpython.py" ]; then
|
||||
local version_re='-([0-9]\.[0-9]+)'
|
||||
[[ "$1" =~ $version_re ]]
|
||||
local python_bin="$PREFIX_PATH/bin/python${BASH_REMATCH[1]}"
|
||||
cp "$BUILD_PATH/$1/Tools/gdb/libpython.py" "$python_bin-gdb.py"
|
||||
fi
|
||||
}
|
||||
|
||||
build_package_ez_setup() {
|
||||
local ez_setup="ez_setup.py"
|
||||
rm -f "${ez_setup}"
|
||||
@@ -1766,7 +1771,7 @@ build_package_ez_setup() {
|
||||
echo "Installing setuptools from ${EZ_SETUP}..." 1>&2
|
||||
cat "${EZ_SETUP}"
|
||||
else
|
||||
[ -n "${EZ_SETUP_URL}" ] || EZ_SETUP_URL="https://bootstrap.pypa.io/ez_setup.py"
|
||||
[ -n "${EZ_SETUP_URL}" ]
|
||||
echo "Installing setuptools from ${EZ_SETUP_URL}..." 1>&2
|
||||
http get "${EZ_SETUP_URL}"
|
||||
fi
|
||||
@@ -1785,7 +1790,7 @@ build_package_get_pip() {
|
||||
echo "Installing pip from ${GET_PIP}..." 1>&2
|
||||
cat "${GET_PIP}"
|
||||
else
|
||||
[ -n "${GET_PIP_URL}" ] || GET_PIP_URL="https://bootstrap.pypa.io/get-pip.py"
|
||||
[ -n "${GET_PIP_URL}" ]
|
||||
echo "Installing pip from ${GET_PIP_URL}..." 1>&2
|
||||
http get "${GET_PIP_URL}"
|
||||
fi
|
||||
@@ -1825,7 +1830,7 @@ usage() {
|
||||
|
||||
list_definitions() {
|
||||
{ for DEFINITION_DIR in "${PYTHON_BUILD_DEFINITIONS[@]}"; do
|
||||
[ -d "$DEFINITION_DIR" ] && find "$DEFINITION_DIR" -maxdepth 1 -type f -print0 | xargs -0 -n 1 basename 2>/dev/null
|
||||
[ -d "$DEFINITION_DIR" ] && ls "$DEFINITION_DIR" | grep -xv patches
|
||||
done
|
||||
} | sort_versions | uniq
|
||||
}
|
||||
@@ -1940,19 +1945,6 @@ if [ -n "$noexec" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
## Apply following work around, if gcc is not installed.
|
||||
#if [ -z "$(locate_gcc)" ]; then
|
||||
# # Work around warnings building Ruby 2.0 on Clang 2.x:
|
||||
# # pass -Wno-error=shorten-64-to-32 if the compiler accepts it.
|
||||
# #
|
||||
# # When we set CFLAGS, Ruby won't apply its default flags, though. Since clang
|
||||
# # builds 1.9.x and 2.x only, where -O3 is default, we can safely set that flag.
|
||||
# # Ensure it's the first flag since later flags take precedence.
|
||||
# if "${CC:-cc}" -x c /dev/null -E -Wno-error=shorten-64-to-32 &>/dev/null; then
|
||||
# RUBY_CFLAGS="-O3 -Wno-error=shorten-64-to-32 $RUBY_CFLAGS"
|
||||
# fi
|
||||
#fi
|
||||
|
||||
if [ -z "$MAKE" ]; then
|
||||
if [ "FreeBSD" = "$(uname -s)" ]; then
|
||||
if [ "$(echo $1 | sed 's/-.*$//')" = "jruby" ]; then
|
||||
@@ -1983,7 +1975,11 @@ else
|
||||
PYTHON_BUILD_DEFAULT_MIRROR=
|
||||
fi
|
||||
|
||||
if [ -n "$PYTHON_BUILD_SKIP_MIRROR" ] || ! has_checksum_support compute_sha2; then
|
||||
if [ -n "$PYTHON_BUILD_SKIP_MIRROR" ]; then
|
||||
unset PYTHON_BUILD_MIRROR_URL
|
||||
fi
|
||||
|
||||
if ! has_checksum_support compute_sha2 && ! [ -n "$PYTHON_BUILD_MIRROR_URL_SKIP_CHECKSUM" ] ; then
|
||||
unset PYTHON_BUILD_MIRROR_URL
|
||||
fi
|
||||
|
||||
@@ -2020,16 +2016,17 @@ if [[ "$PYTHON_CONFIGURE_OPTS" == *"--enable-framework"* ]]; then
|
||||
fi
|
||||
create_framework_dirs() {
|
||||
local version="$(echo "$1" | sed -E 's/^[^0-9]*([0-9]+\.[0-9]+).*$/\1/')"
|
||||
mkdir -p "${PREFIX_PATH}/Python.framework/Versions/${version}"
|
||||
( cd "${PREFIX_PATH}/Python.framework/Versions" && ln -fs "${version}" "Current")
|
||||
mkdir -p "${PREFIX_PATH}/Library/Frameworks/Python.framework/Versions/${version}"
|
||||
( cd "${PREFIX_PATH}/Library/Frameworks/Python.framework/Versions" && ln -fs "${version}" "Current")
|
||||
local path
|
||||
for path in include lib share; do
|
||||
mkdir -p "${PREFIX_PATH}/Python.framework/Versions/Current/${path}"
|
||||
ln -fs "${PREFIX_PATH}/Python.framework/Versions/Current/${path}" "${PREFIX_PATH}/${path}"
|
||||
mkdir -p "${PREFIX_PATH}/Library/Frameworks/Python.framework/Versions/Current/${path}"
|
||||
ln -fs "${PREFIX_PATH}/Library/Frameworks/Python.framework/Versions/Current/${path}" "${PREFIX_PATH}/${path}"
|
||||
done
|
||||
}
|
||||
create_framework_dirs "${DEFINITION_PATH##*/}"
|
||||
package_option python configure --enable-framework="${PREFIX_PATH}"
|
||||
# the `/Library/Frameworks` suffix makes CPython build install apps under prefix rather than into /Applications (#1003)
|
||||
package_option python configure --enable-framework="${PREFIX_PATH}/Library/Frameworks"
|
||||
fi
|
||||
|
||||
# Build against universal SDK (#219, #220)
|
||||
@@ -2056,6 +2053,19 @@ if [[ "$PYTHON_CONFIGURE_OPTS" != *"--enable-unicode="* ]]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# regex_to_match="(--with-tcltk-libs='([^']+)')"
|
||||
if [[ "$PYTHON_CONFIGURE_OPTS" =~ (--with-tcltk-libs=\'([^\']+)\') ]]; then
|
||||
tcltk_match="${BASH_REMATCH[1]}"
|
||||
tcltk_match_quoted="${tcltk_match//--with-tcltk-libs=/}"
|
||||
# remove it from PYTHON_CONFIGURE_OPTS since it will mess up compile
|
||||
PYTHON_CONFIGURE_OPTS="${PYTHON_CONFIGURE_OPTS//$tcltk_match/}"
|
||||
|
||||
# having issues passing the single quoted part, couldnt pass as single var and still work
|
||||
package_option python configure "--with-tcltk-libs='${tcltk_match_quoted}'"
|
||||
unset tcltk_match
|
||||
unset tcltk_match_quoted
|
||||
fi
|
||||
|
||||
# Unset `PIP_REQUIRE_VENV` during build (#216)
|
||||
unset PIP_REQUIRE_VENV
|
||||
unset PIP_REQUIRE_VIRTUALENV
|
||||
@@ -2068,11 +2078,48 @@ if [ -e "$HOME/.pydistutils.cfg" ]; then
|
||||
fi
|
||||
|
||||
# Download specified version of ez_setup.py/get-pip.py (#202)
|
||||
if [ -n "${SETUPTOOLS_VERSION}" ]; then
|
||||
EZ_SETUP_URL="https://bitbucket.org/pypa/setuptools/raw/${SETUPTOOLS_VERSION}/ez_setup.py"
|
||||
if [ -z "${EZ_SETUP_URL}" ]; then
|
||||
if [ -n "${SETUPTOOLS_VERSION}" ]; then
|
||||
EZ_SETUP_URL="https://bitbucket.org/pypa/setuptools/raw/${SETUPTOOLS_VERSION}/ez_setup.py"
|
||||
unset SETUPTOOLS_VERSION
|
||||
else
|
||||
EZ_SETUP_URL="https://bootstrap.pypa.io/ez_setup.py"
|
||||
fi
|
||||
fi
|
||||
if [ -n "${PIP_VERSION}" ]; then
|
||||
GET_PIP_URL="https://raw.githubusercontent.com/pypa/pip/${PIP_VERSION}/contrib/get-pip.py"
|
||||
if [ -z "${GET_PIP_URL}" ]; then
|
||||
if [ -n "${PIP_VERSION}" ]; then
|
||||
{ colorize 1 "WARNING"
|
||||
echo ": Setting PIP_VERSION=${PIP_VERSION} is no longer supported and may cause failures during the install process."
|
||||
} 1>&2
|
||||
GET_PIP_URL="https://raw.githubusercontent.com/pypa/pip/${PIP_VERSION}/contrib/get-pip.py"
|
||||
# Unset `PIP_VERSION` from environment before invoking `get-pip.py` to deal with "ValueError: invalid truth value" (pypa/pip#4528)
|
||||
unset PIP_VERSION
|
||||
else
|
||||
# Use custom get-pip URL based on the target version (#1127)
|
||||
case "${DEFINITION_PATH##*/}" in
|
||||
2.6 | 2.6.* )
|
||||
GET_PIP_URL="https://bootstrap.pypa.io/pip/2.6/get-pip.py"
|
||||
;;
|
||||
2.7 | 2.7.* )
|
||||
GET_PIP_URL="https://bootstrap.pypa.io/pip/2.7/get-pip.py"
|
||||
;;
|
||||
3.2 | 3.2.* )
|
||||
GET_PIP_URL="https://bootstrap.pypa.io/pip/3.2/get-pip.py"
|
||||
;;
|
||||
3.3 | 3.3.* )
|
||||
GET_PIP_URL="https://bootstrap.pypa.io/pip/3.3/get-pip.py"
|
||||
;;
|
||||
3.4 | 3.4.* )
|
||||
GET_PIP_URL="https://bootstrap.pypa.io/pip/3.4/get-pip.py"
|
||||
;;
|
||||
3.5 | 3.5.* )
|
||||
GET_PIP_URL="https://bootstrap.pypa.io/pip/3.5/get-pip.py"
|
||||
;;
|
||||
* )
|
||||
GET_PIP_URL="https://bootstrap.pypa.io/get-pip.py"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
# Set MACOSX_DEPLOYMENT_TARGET from the product version of OS X (#219, #220)
|
||||
|
||||
22
plugins/python-build/scripts/README.md
Normal file
22
plugins/python-build/scripts/README.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# Scripts for updating python-build
|
||||
|
||||
Install dependencies with `pip install -r requirements.txt`.
|
||||
|
||||
## add_miniconda.py
|
||||
|
||||
```_add_miniconda
|
||||
usage: add_miniconda.py [-h] [-d] [-v]
|
||||
|
||||
Script to add non-"latest" miniconda releases. Written for python 3.7. Checks
|
||||
the miniconda download archives for new versions, then writes a build script
|
||||
for any which do not exist locally, saving it to plugins/python-
|
||||
build/share/python-build. Ignores releases below 4.3.30. Also ignores sub-
|
||||
patch releases if that major.minor.patch already exists, but otherwise, takes
|
||||
the latest sub-patch release for given OS/arch. Assumes all miniconda3
|
||||
releases < 4.7 default to python 3.6, and anything else 3.7.
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
-d, --dry-run Do not write scripts, just report them to stdout
|
||||
-v, --verbose Increase verbosity of logging
|
||||
```
|
||||
294
plugins/python-build/scripts/add_miniconda.py
Executable file
294
plugins/python-build/scripts/add_miniconda.py
Executable file
@@ -0,0 +1,294 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Script to add non-"latest" miniconda releases.
|
||||
Written for python 3.7.
|
||||
|
||||
Checks the miniconda download archives for new versions,
|
||||
then writes a build script for any which do not exist locally,
|
||||
saving it to plugins/python-build/share/python-build.
|
||||
|
||||
Ignores releases below 4.3.30.
|
||||
Also ignores sub-patch releases if that major.minor.patch already exists,
|
||||
but otherwise, takes the latest sub-patch release for given OS/arch.
|
||||
Assumes all miniconda3 releases < 4.7 default to python 3.6, and anything else 3.7.
|
||||
"""
|
||||
import textwrap
|
||||
from argparse import ArgumentParser
|
||||
from collections import defaultdict
|
||||
from enum import Enum
|
||||
from functools import total_ordering
|
||||
from pathlib import Path
|
||||
from typing import NamedTuple, List, Optional, DefaultDict, Dict
|
||||
import logging
|
||||
|
||||
import requests_html
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
CONDA_REPO = "https://repo.anaconda.com"
|
||||
MINICONDA_REPO = CONDA_REPO + "/miniconda"
|
||||
# ANACONDA_REPO = CONDA_REPO + "/archive"
|
||||
|
||||
install_script_fmt = """
|
||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||
{install_lines}
|
||||
* )
|
||||
{{ echo
|
||||
colorize 1 "ERROR"
|
||||
echo ": The binary distribution of Miniconda is not available for $(anaconda_architecture 2>/dev/null || true)."
|
||||
echo
|
||||
}} >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
""".lstrip()
|
||||
|
||||
install_line_fmt = """
|
||||
"{os}-{arch}" )
|
||||
install_script "Miniconda{suffix}-{version_str}-{os}-{arch}" "{repo}/Miniconda{suffix}-{version_str}-{os}-{arch}.sh#{md5}" "miniconda" verify_{py_version}
|
||||
;;
|
||||
""".strip()
|
||||
|
||||
here = Path(__file__).resolve()
|
||||
out_dir: Path = here.parent.parent / "share" / "python-build"
|
||||
|
||||
|
||||
class StrEnum(str, Enum):
|
||||
"""Enum subclass whose members are also instances of str
|
||||
and directly comparable to strings. str type is forced at declaration.
|
||||
|
||||
Adapted from https://github.com/kissgyorgy/enum34-custom/blob/dbc89596761c970398701d26c6a5bbcfcf70f548/enum_custom.py#L100
|
||||
(MIT license)
|
||||
"""
|
||||
|
||||
def __new__(cls, *args):
|
||||
for arg in args:
|
||||
if not isinstance(arg, str):
|
||||
raise TypeError("Not text %s:" % arg)
|
||||
|
||||
return super(StrEnum, cls).__new__(cls, *args)
|
||||
|
||||
def __str__(self):
|
||||
return str(self.value)
|
||||
|
||||
|
||||
class SupportedOS(StrEnum):
|
||||
LINUX = "Linux"
|
||||
MACOSX = "MacOSX"
|
||||
|
||||
|
||||
class SupportedArch(StrEnum):
|
||||
PPC64LE = "ppc64le"
|
||||
X86_64 = "x86_64"
|
||||
X86 = "x86"
|
||||
|
||||
|
||||
class Suffix(StrEnum):
|
||||
TWO = "2"
|
||||
THREE = "3"
|
||||
|
||||
|
||||
class PyVersion(StrEnum):
|
||||
PY27 = "py27"
|
||||
PY36 = "py36"
|
||||
PY37 = "py37"
|
||||
PY38 = "py38"
|
||||
PY39 = "py39"
|
||||
|
||||
def version(self):
|
||||
first, *others = self.value[2:]
|
||||
return f"{first}.{''.join(others)}"
|
||||
|
||||
def version_info(self):
|
||||
return tuple(int(n) for n in self.version().split("."))
|
||||
|
||||
|
||||
@total_ordering
|
||||
class VersionStr(str):
|
||||
def info(self):
|
||||
return tuple(int(n) for n in self.split("."))
|
||||
|
||||
def __eq__(self, other):
|
||||
return str(self) == str(other)
|
||||
|
||||
def __lt__(self, other):
|
||||
if isinstance(other, VersionStr):
|
||||
return self.info() < other.info()
|
||||
raise ValueError("VersionStr can only be compared to other VersionStr")
|
||||
|
||||
@classmethod
|
||||
def from_info(cls, version_info):
|
||||
return VersionStr(".".join(str(n) for n in version_info))
|
||||
|
||||
def __hash__(self):
|
||||
return hash(str(self))
|
||||
|
||||
|
||||
class MinicondaVersion(NamedTuple):
|
||||
suffix: Suffix
|
||||
version_str: VersionStr
|
||||
|
||||
@classmethod
|
||||
def from_str(cls, s):
|
||||
miniconda_n, ver = s.split("-")
|
||||
return MinicondaVersion(Suffix(miniconda_n[-1]), VersionStr(ver))
|
||||
|
||||
def to_filename(self):
|
||||
return f"miniconda{self.suffix}-{self.version_str}"
|
||||
|
||||
def default_py_version(self):
|
||||
if self.suffix == Suffix.TWO:
|
||||
return PyVersion.PY27
|
||||
elif self.version_str.info() < (4, 7):
|
||||
# https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-python.html
|
||||
return PyVersion.PY36
|
||||
else:
|
||||
return PyVersion.PY37
|
||||
|
||||
def with_version_triple(self):
|
||||
return MinicondaVersion(
|
||||
self.suffix, VersionStr.from_info(self.version_str.info()[:3])
|
||||
)
|
||||
|
||||
|
||||
class MinicondaSpec(NamedTuple):
|
||||
version: MinicondaVersion
|
||||
os: SupportedOS
|
||||
arch: SupportedArch
|
||||
md5: str
|
||||
py_version: Optional[PyVersion] = None
|
||||
|
||||
@classmethod
|
||||
def from_filestem(cls, stem, md5, py_version=None):
|
||||
miniconda_n, ver, os, arch = stem.split("-")
|
||||
spec = MinicondaSpec(
|
||||
MinicondaVersion(Suffix(miniconda_n[-1]), VersionStr(ver)),
|
||||
SupportedOS(os),
|
||||
SupportedArch(arch),
|
||||
md5,
|
||||
)
|
||||
if py_version is None:
|
||||
spec = spec.with_py_version(spec.version.default_py_version())
|
||||
return spec
|
||||
|
||||
def to_install_lines(self):
|
||||
return install_line_fmt.format(
|
||||
repo=MINICONDA_REPO,
|
||||
suffix=self.version.suffix,
|
||||
version_str=self.version.version_str,
|
||||
os=self.os,
|
||||
arch=self.arch,
|
||||
md5=self.md5,
|
||||
py_version=self.py_version,
|
||||
)
|
||||
|
||||
def with_py_version(self, py_version: PyVersion):
|
||||
return MinicondaSpec(*self[:-1], py_version=py_version)
|
||||
|
||||
def with_version_triple(self):
|
||||
version, *others = self
|
||||
return MinicondaSpec(version.with_version_triple(), *others)
|
||||
|
||||
|
||||
def make_script(specs: List[MinicondaSpec]):
|
||||
install_lines = [s.to_install_lines() for s in specs]
|
||||
return install_script_fmt.format(install_lines="\n".join(install_lines))
|
||||
|
||||
|
||||
def get_existing_minicondas():
|
||||
logger.info("Getting known miniconda versions")
|
||||
for p in out_dir.iterdir():
|
||||
name = p.name
|
||||
if not p.is_file() or not name.startswith("miniconda"):
|
||||
continue
|
||||
try:
|
||||
v = MinicondaVersion.from_str(name)
|
||||
if v.version_str != "latest":
|
||||
logger.debug("Found existing miniconda version %s", v)
|
||||
yield v
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
||||
def get_available_minicondas():
|
||||
logger.info("Fetching remote miniconda versions")
|
||||
session = requests_html.HTMLSession()
|
||||
response = session.get(MINICONDA_REPO)
|
||||
page: requests_html.HTML = response.html
|
||||
table = page.find("table", first=True)
|
||||
rows = table.find("tr")[1:]
|
||||
for row in rows:
|
||||
f, size, date, md5 = row.find("td")
|
||||
fname = f.text
|
||||
md5 = md5.text
|
||||
|
||||
if not fname.endswith(".sh"):
|
||||
continue
|
||||
stem = fname[:-3]
|
||||
|
||||
try:
|
||||
s = MinicondaSpec.from_filestem(stem, md5)
|
||||
if s.version.version_str != "latest":
|
||||
logger.debug("Found remote miniconda version %s", s)
|
||||
yield s
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
||||
def key_fn(spec: MinicondaSpec):
|
||||
return (
|
||||
spec.version.version_str.info(),
|
||||
spec.version.suffix.value,
|
||||
spec.os.value,
|
||||
spec.arch.value,
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = ArgumentParser(description=__doc__)
|
||||
parser.add_argument(
|
||||
"-d", "--dry-run", action="store_true",
|
||||
help="Do not write scripts, just report them to stdout",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-v", "--verbose", action="count",
|
||||
help="Increase verbosity of logging",
|
||||
)
|
||||
parsed = parser.parse_args()
|
||||
|
||||
log_level = {
|
||||
0: logging.WARNING,
|
||||
1: logging.INFO,
|
||||
2: logging.DEBUG,
|
||||
}.get(parsed.verbose, logging.DEBUG)
|
||||
logging.basicConfig(level=log_level)
|
||||
if parsed.verbose < 3:
|
||||
logging.getLogger("requests").setLevel(logging.WARNING)
|
||||
|
||||
existing_versions = set(get_existing_minicondas())
|
||||
available_specs = set(get_available_minicondas())
|
||||
|
||||
# version triple to triple-ified spec to raw spec
|
||||
to_add: DefaultDict[
|
||||
MinicondaVersion, Dict[MinicondaSpec, MinicondaSpec]
|
||||
] = defaultdict(dict)
|
||||
|
||||
logger.info("Checking for new versions")
|
||||
for s in sorted(available_specs, key=key_fn):
|
||||
key = s.version.with_version_triple()
|
||||
if key in existing_versions or key.version_str.info() <= (4, 3, 30):
|
||||
logger.debug("Ignoring version %s (too old or already exists)", s)
|
||||
continue
|
||||
|
||||
to_add[key][s.with_version_triple()] = s
|
||||
|
||||
logger.info("Writing %s scripts", len(to_add))
|
||||
for ver, d in to_add.items():
|
||||
specs = list(d.values())
|
||||
fpath = out_dir / ver.to_filename()
|
||||
script_str = make_script(specs)
|
||||
logger.debug("Writing script for %s", ver)
|
||||
if parsed.dry_run:
|
||||
print(f"Would write spec to {fpath}:\n" + textwrap.indent(script_str, " "))
|
||||
else:
|
||||
with open(fpath, "w") as f:
|
||||
f.write(script_str)
|
||||
1
plugins/python-build/scripts/requirements.txt
Normal file
1
plugins/python-build/scripts/requirements.txt
Normal file
@@ -0,0 +1 @@
|
||||
requests-html
|
||||
@@ -1,5 +1,5 @@
|
||||
require_gcc
|
||||
install_package "readline-6.2" "https://ftpmirror.gnu.org/readline/readline-6.2.tar.gz#79a696070a058c233c72dd6ac697021cc64abd5ed51e59db867d66d196a89381" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.1.3" "https://www.python.org/ftp/python/2.1.3/Python-2.1.3.tgz#1bcb5bb587948bc38f36db60e15c376009c56c66570e563a08a82bf7f227afb9" ldflags_dirs standard verify_py21
|
||||
install_package "readline-6.2" "https://ftpmirror.gnu.org/readline/readline-6.2.tar.gz#79a696070a058c233c72dd6ac697021cc64abd5ed51e59db867d66d196a89381" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.1.3" "https://www.python.org/ftp/python/2.1.3/Python-2.1.3.tgz#1bcb5bb587948bc38f36db60e15c376009c56c66570e563a08a82bf7f227afb9" standard verify_py21
|
||||
#install_package "setuptools-1.4.2" "https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd" python
|
||||
#install_package "pip-1.1" "https://pypi.python.org/packages/source/p/pip/pip-1.1.tar.gz#993804bb947d18508acee02141281c77d27677f8c14eaa64d6287a1c53ef01c8" python
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
require_gcc
|
||||
install_package "readline-6.2" "https://ftpmirror.gnu.org/readline/readline-6.2.tar.gz#79a696070a058c233c72dd6ac697021cc64abd5ed51e59db867d66d196a89381" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.2.3" "https://www.python.org/ftp/python/2.2.3/Python-2.2.3.tgz#a8f92e6b89d47359fff0d1fbfe47f104afc77fd1cd5143e7332758b7bc100188" ldflags_dirs standard verify_py22
|
||||
install_package "readline-6.2" "https://ftpmirror.gnu.org/readline/readline-6.2.tar.gz#79a696070a058c233c72dd6ac697021cc64abd5ed51e59db867d66d196a89381" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.2.3" "https://www.python.org/ftp/python/2.2.3/Python-2.2.3.tgz#a8f92e6b89d47359fff0d1fbfe47f104afc77fd1cd5143e7332758b7bc100188" standard verify_py22
|
||||
#install_package "setuptools-1.4.2" "https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd" python
|
||||
#install_package "pip-1.1" "https://pypi.python.org/packages/source/p/pip/pip-1.1.tar.gz#993804bb947d18508acee02141281c77d27677f8c14eaa64d6287a1c53ef01c8" python
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
require_gcc
|
||||
install_package "readline-6.2" "https://ftpmirror.gnu.org/readline/readline-6.2.tar.gz#79a696070a058c233c72dd6ac697021cc64abd5ed51e59db867d66d196a89381" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.3.7" "https://www.python.org/ftp/python/2.3.7/Python-2.3.7.tgz#969a9891dce9f50b13e54f9890acaf2be66715a5895bf9b11111f320c205b90e" ldflags_dirs standard verify_py23
|
||||
install_package "readline-6.2" "https://ftpmirror.gnu.org/readline/readline-6.2.tar.gz#79a696070a058c233c72dd6ac697021cc64abd5ed51e59db867d66d196a89381" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.3.7" "https://www.python.org/ftp/python/2.3.7/Python-2.3.7.tgz#969a9891dce9f50b13e54f9890acaf2be66715a5895bf9b11111f320c205b90e" standard verify_py23
|
||||
#install_package "setuptools-1.4.2" "https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd" python
|
||||
#install_package "pip-1.1" "https://pypi.python.org/packages/source/p/pip/pip-1.1.tar.gz#993804bb947d18508acee02141281c77d27677f8c14eaa64d6287a1c53ef01c8" python
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
require_gcc
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.4" "https://www.python.org/ftp/python/2.4/Python-2.4.tgz#ff746de0fae8691c082414b42a2bb172da8797e6e8ff66c9a39d2e452f7034e9" ldflags_dirs standard verify_py24
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.4" "https://www.python.org/ftp/python/2.4/Python-2.4.tgz#ff746de0fae8691c082414b42a2bb172da8797e6e8ff66c9a39d2e452f7034e9" standard verify_py24
|
||||
install_package "setuptools-1.4.2" "https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd" python
|
||||
install_package "pip-1.1" "https://pypi.python.org/packages/source/p/pip/pip-1.1.tar.gz#993804bb947d18508acee02141281c77d27677f8c14eaa64d6287a1c53ef01c8" python
|
||||
@@ -1,5 +1,5 @@
|
||||
require_gcc
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.4.1" "https://www.python.org/ftp/python/2.4.1/Python-2.4.1.tgz#f449c3b167389324c525ad99d02376c518ac11e163dbbbc13bc88a5c7101fd00" ldflags_dirs standard verify_py24
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.4.1" "https://www.python.org/ftp/python/2.4.1/Python-2.4.1.tgz#f449c3b167389324c525ad99d02376c518ac11e163dbbbc13bc88a5c7101fd00" standard verify_py24
|
||||
install_package "setuptools-1.4.2" "https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd" python
|
||||
install_package "pip-1.1" "https://pypi.python.org/packages/source/p/pip/pip-1.1.tar.gz#993804bb947d18508acee02141281c77d27677f8c14eaa64d6287a1c53ef01c8" python
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
require_gcc
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.4.2" "https://www.python.org/ftp/python/2.4.2/Python-2.4.2.tgz#2653e1846e87fd9b3ee287fefc965c80c54646548b4913a22265b0dd54493adf" ldflags_dirs standard verify_py24
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.4.2" "https://www.python.org/ftp/python/2.4.2/Python-2.4.2.tgz#2653e1846e87fd9b3ee287fefc965c80c54646548b4913a22265b0dd54493adf" standard verify_py24
|
||||
install_package "setuptools-1.4.2" "https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd" python
|
||||
install_package "pip-1.1" "https://pypi.python.org/packages/source/p/pip/pip-1.1.tar.gz#993804bb947d18508acee02141281c77d27677f8c14eaa64d6287a1c53ef01c8" python
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
require_gcc
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.4.3" "https://www.python.org/ftp/python/2.4.3/Python-2.4.3.tgz#985a413932f5e31e6280b37da6b285a3a0b2748c6786643989ed9b23de97e2d5" ldflags_dirs standard verify_py24
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.4.3" "https://www.python.org/ftp/python/2.4.3/Python-2.4.3.tgz#985a413932f5e31e6280b37da6b285a3a0b2748c6786643989ed9b23de97e2d5" standard verify_py24
|
||||
install_package "setuptools-1.4.2" "https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd" python
|
||||
install_package "pip-1.1" "https://pypi.python.org/packages/source/p/pip/pip-1.1.tar.gz#993804bb947d18508acee02141281c77d27677f8c14eaa64d6287a1c53ef01c8" python
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
require_gcc
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.4.4" "https://www.python.org/ftp/python/2.4.4/Python-2.4.4.tgz#92be6e20cbc3111d9dd0c016d72ef7914c23b879dc52df7ba28df97afbf12e2e" ldflags_dirs standard verify_py24
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.4.4" "https://www.python.org/ftp/python/2.4.4/Python-2.4.4.tgz#92be6e20cbc3111d9dd0c016d72ef7914c23b879dc52df7ba28df97afbf12e2e" standard verify_py24
|
||||
install_package "setuptools-1.4.2" "https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd" python
|
||||
install_package "pip-1.1" "https://pypi.python.org/packages/source/p/pip/pip-1.1.tar.gz#993804bb947d18508acee02141281c77d27677f8c14eaa64d6287a1c53ef01c8" python
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
require_gcc
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.4.5" "https://www.python.org/ftp/python/2.4.5/Python-2.4.5.tgz#6ae6f67a388a7f70ed3a20eebab5aae995ee433089d1f1724095c62f4b7389a1" ldflags_dirs standard verify_py24
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.4.5" "https://www.python.org/ftp/python/2.4.5/Python-2.4.5.tgz#6ae6f67a388a7f70ed3a20eebab5aae995ee433089d1f1724095c62f4b7389a1" standard verify_py24
|
||||
install_package "setuptools-1.4.2" "https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd" python
|
||||
install_package "pip-1.1" "https://pypi.python.org/packages/source/p/pip/pip-1.1.tar.gz#993804bb947d18508acee02141281c77d27677f8c14eaa64d6287a1c53ef01c8" python
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
require_gcc
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.4.6" "https://www.python.org/ftp/python/2.4.6/Python-2.4.6.tgz#b03f269e826927f05c966cf4f4414f3c93ee2314960859e7f8375e24e82f8b02" ldflags_dirs standard verify_py24
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.4.6" "https://www.python.org/ftp/python/2.4.6/Python-2.4.6.tgz#b03f269e826927f05c966cf4f4414f3c93ee2314960859e7f8375e24e82f8b02" standard verify_py24
|
||||
install_package "setuptools-1.4.2" "https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd" python
|
||||
install_package "pip-1.1" "https://pypi.python.org/packages/source/p/pip/pip-1.1.tar.gz#993804bb947d18508acee02141281c77d27677f8c14eaa64d6287a1c53ef01c8" python
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#require_gcc
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.5" "https://www.python.org/ftp/python/2.5/Python-2.5.tgz#d7bbf42e36003c6065cd19f3e67d283521858515ee923220f654131cebe1d8f2" ldflags_dirs standard verify_py25
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.5" "https://www.python.org/ftp/python/2.5/Python-2.5.tgz#d7bbf42e36003c6065cd19f3e67d283521858515ee923220f654131cebe1d8f2" standard verify_py25
|
||||
install_package "setuptools-1.4.2" "https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd" python
|
||||
install_package "pip-1.3.1" "https://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz#145eaa5d1ea1b062663da1f3a97780d7edea4c63c68a37c463b1deedf7bb4957" python
|
||||
@@ -1,5 +1,5 @@
|
||||
#require_gcc
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.5.1" "https://www.python.org/ftp/python/2.5.1/Python-2.5.1.tgz#1f5caee846049ca30d996f9403eefdb996295c4af664867e35dcc5eb36e4e7e8" ldflags_dirs standard verify_py25
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.5.1" "https://www.python.org/ftp/python/2.5.1/Python-2.5.1.tgz#1f5caee846049ca30d996f9403eefdb996295c4af664867e35dcc5eb36e4e7e8" standard verify_py25
|
||||
install_package "setuptools-1.4.2" "https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd" python
|
||||
install_package "pip-1.3.1" "https://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz#145eaa5d1ea1b062663da1f3a97780d7edea4c63c68a37c463b1deedf7bb4957" python
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#require_gcc
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.5.2" "https://www.python.org/ftp/python/2.5.2/Python-2.5.2.tgz#834afe8a88adaf623b05ac5dd6700dd5bb5d0d5553fc74ad529359a3496e4ae3" ldflags_dirs standard verify_py25
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.5.2" "https://www.python.org/ftp/python/2.5.2/Python-2.5.2.tgz#834afe8a88adaf623b05ac5dd6700dd5bb5d0d5553fc74ad529359a3496e4ae3" standard verify_py25
|
||||
install_package "setuptools-1.4.2" "https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd" python
|
||||
install_package "pip-1.3.1" "https://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz#145eaa5d1ea1b062663da1f3a97780d7edea4c63c68a37c463b1deedf7bb4957" python
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#require_gcc
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.5.3" "https://www.python.org/ftp/python/2.5.3/Python-2.5.3.tgz#c3fee607d20a77dfb72ea2e627eb4d95d25c735603435abde62c57015a0445bd" ldflags_dirs standard verify_py25
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.5.3" "https://www.python.org/ftp/python/2.5.3/Python-2.5.3.tgz#c3fee607d20a77dfb72ea2e627eb4d95d25c735603435abde62c57015a0445bd" standard verify_py25
|
||||
install_package "setuptools-1.4.2" "https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd" python
|
||||
install_package "pip-1.3.1" "https://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz#145eaa5d1ea1b062663da1f3a97780d7edea4c63c68a37c463b1deedf7bb4957" python
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#require_gcc
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.5.4" "https://www.python.org/ftp/python/2.5.4/Python-2.5.4.tgz#3d3b205611ee503a38a9433d5645a571668420bb219242c7f51af85f05664da6" ldflags_dirs standard verify_py25
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.5.4" "https://www.python.org/ftp/python/2.5.4/Python-2.5.4.tgz#3d3b205611ee503a38a9433d5645a571668420bb219242c7f51af85f05664da6" standard verify_py25
|
||||
install_package "setuptools-1.4.2" "https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd" python
|
||||
install_package "pip-1.3.1" "https://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz#145eaa5d1ea1b062663da1f3a97780d7edea4c63c68a37c463b1deedf7bb4957" python
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#require_gcc
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.5.5" "https://www.python.org/ftp/python/2.5.5/Python-2.5.5.tgz#03be1019c4fe93daeb53ba9e4294bf22a8ed4cb854cbd57e24e16f6bf63e2392" ldflags_dirs standard verify_py25
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.5.5" "https://www.python.org/ftp/python/2.5.5/Python-2.5.5.tgz#03be1019c4fe93daeb53ba9e4294bf22a8ed4cb854cbd57e24e16f6bf63e2392" standard verify_py25
|
||||
install_package "setuptools-1.4.2" "https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd" python
|
||||
install_package "pip-1.3.1" "https://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz#145eaa5d1ea1b062663da1f3a97780d7edea4c63c68a37c463b1deedf7bb4957" python
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#require_gcc
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.5.6" "https://www.python.org/ftp/python/2.5.6/Python-2.5.6.tgz#c2e4377597241b1065677d23327c04d0f41945d370c61a491cc88be367234c5d" ldflags_dirs standard verify_py25
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.5.6" "https://www.python.org/ftp/python/2.5.6/Python-2.5.6.tgz#c2e4377597241b1065677d23327c04d0f41945d370c61a491cc88be367234c5d" standard verify_py25
|
||||
install_package "setuptools-1.4.2" "https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd" python
|
||||
install_package "pip-1.3.1" "https://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz#145eaa5d1ea1b062663da1f3a97780d7edea4c63c68a37c463b1deedf7bb4957" python
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.6.6" "https://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz#372f66db46d773214e4619df1794a26449158f626138d4d2141a64c2f017fae1" ldflags_dirs standard verify_py26 ensurepip
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.6.6" "https://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz#372f66db46d773214e4619df1794a26449158f626138d4d2141a64c2f017fae1" standard verify_py26 ensurepip
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.6.7" "https://www.python.org/ftp/python/2.6.7/Python-2.6.7.tgz#a8093eace4cfd3e06b05f0deb5d765e3c6cec65908048640a8cadd7a948b3826" ldflags_dirs standard verify_py26 ensurepip
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.6.7" "https://www.python.org/ftp/python/2.6.7/Python-2.6.7.tgz#a8093eace4cfd3e06b05f0deb5d765e3c6cec65908048640a8cadd7a948b3826" standard verify_py26 ensurepip
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.6.8" "https://www.python.org/ftp/python/2.6.8/Python-2.6.8.tgz#5bf02a75ffa2fcaa5a3cabb8201998519b045541975622316888ea468d9512f7" ldflags_dirs standard verify_py26 ensurepip
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.6.8" "https://www.python.org/ftp/python/2.6.8/Python-2.6.8.tgz#5bf02a75ffa2fcaa5a3cabb8201998519b045541975622316888ea468d9512f7" standard verify_py26 ensurepip
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.6.9" "https://www.python.org/ftp/python/2.6.9/Python-2.6.9.tgz#7277b1285d8a82f374ef6ebaac85b003266f7939b3f2a24a3af52f9523ac94db" ldflags_dirs standard verify_py26 ensurepip
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.6.9" "https://www.python.org/ftp/python/2.6.9/Python-2.6.9.tgz#7277b1285d8a82f374ef6ebaac85b003266f7939b3f2a24a3af52f9523ac94db" standard verify_py26 ensurepip
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.7" "https://www.python.org/ftp/python/2.7/Python-2.7.tgz#5670dd6c0c93b0b529781d070852f7b51ce6855615b16afcd318341af2910fb5" ldflags_dirs standard verify_py27 ensurepip
|
||||
@@ -1,4 +1,5 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_git "Python-2.7-dev" "https://github.com/python/cpython" "2.7" standard verify_py27 ensurepip
|
||||
prefer_openssl11
|
||||
install_package "openssl-1.1.0j" "https://www.openssl.org/source/old/1.1.0/openssl-1.1.0j.tar.gz#31bec6c203ce1a8e93d5994f4ed304c63ccf07676118b6634edded12ad1b3246" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_git "Python-2.7-dev" "https://github.com/python/cpython" "2.7" standard verify_py27 copy_python_gdb ensurepip
|
||||
|
||||
4
plugins/python-build/share/python-build/2.7.0
Normal file
4
plugins/python-build/share/python-build/2.7.0
Normal file
@@ -0,0 +1,4 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.7" "https://www.python.org/ftp/python/2.7/Python-2.7.tgz#5670dd6c0c93b0b529781d070852f7b51ce6855615b16afcd318341af2910fb5" standard verify_py27 copy_python_gdb ensurepip
|
||||
@@ -1,4 +1,4 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.7.1" "https://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz#ca13e7b1860821494f70de017202283ad73b1fb7bd88586401c54ef958226ec8" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.7.1" "https://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz#ca13e7b1860821494f70de017202283ad73b1fb7bd88586401c54ef958226ec8" standard verify_py27 copy_python_gdb ensurepip
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-2.7.10" "https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tar.xz#1cd3730781b91caf0fa1c4d472dc29274186480161a150294c42ce9b5c5effc0" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "Python-2.7.10" "https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tar.xz#1cd3730781b91caf0fa1c4d472dc29274186480161a150294c42ce9b5c5effc0" standard verify_py27 copy_python_gdb ensurepip
|
||||
else
|
||||
install_package "Python-2.7.10" "https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz#eda8ce6eec03e74991abb5384170e7c65fcd7522e409b8e83d7e6372add0f12a" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "Python-2.7.10" "https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz#eda8ce6eec03e74991abb5384170e7c65fcd7522e409b8e83d7e6372add0f12a" standard verify_py27 copy_python_gdb ensurepip
|
||||
fi
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-2.7.11" "https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tar.xz#962b4c45af50124ea61f11a30deb4342fc0bc21126790fa1d7f6c79809413f46" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "Python-2.7.11" "https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tar.xz#962b4c45af50124ea61f11a30deb4342fc0bc21126790fa1d7f6c79809413f46" standard verify_py27 copy_python_gdb ensurepip
|
||||
else
|
||||
install_package "Python-2.7.11" "https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz#82929b96fd6afc8da838b149107078c02fa1744b7e60999a8babbc0d3fa86fc6" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "Python-2.7.11" "https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz#82929b96fd6afc8da838b149107078c02fa1744b7e60999a8babbc0d3fa86fc6" standard verify_py27 copy_python_gdb ensurepip
|
||||
fi
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-2.7.12" "https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz#d7837121dd5652a05fef807c361909d255d173280c4e1a4ded94d73d80a1f978" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "Python-2.7.12" "https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz#d7837121dd5652a05fef807c361909d255d173280c4e1a4ded94d73d80a1f978" standard verify_py27 copy_python_gdb ensurepip
|
||||
else
|
||||
install_package "Python-2.7.12" "https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz#3cb522d17463dfa69a155ab18cffa399b358c966c0363d6c8b5b3bf1384da4b6" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "Python-2.7.12" "https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz#3cb522d17463dfa69a155ab18cffa399b358c966c0363d6c8b5b3bf1384da4b6" standard verify_py27 copy_python_gdb ensurepip
|
||||
fi
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-2.7.13" "https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz#35d543986882f78261f97787fd3e06274bfa6df29fac9b4a94f73930ff98f731" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "Python-2.7.13" "https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz#35d543986882f78261f97787fd3e06274bfa6df29fac9b4a94f73930ff98f731" standard verify_py27 copy_python_gdb ensurepip
|
||||
else
|
||||
install_package "Python-2.7.13" "https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz#a4f05a0720ce0fd92626f0278b6b433eee9a6173ddf2bced7957dfb599a5ece1" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "Python-2.7.13" "https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz#a4f05a0720ce0fd92626f0278b6b433eee9a6173ddf2bced7957dfb599a5ece1" standard verify_py27 copy_python_gdb ensurepip
|
||||
fi
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
prefer_openssl11
|
||||
install_package "openssl-1.1.0j" "https://www.openssl.org/source/old/1.1.0/openssl-1.1.0j.tar.gz#31bec6c203ce1a8e93d5994f4ed304c63ccf07676118b6634edded12ad1b3246" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-2.7.14" "https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tar.xz#71ffb26e09e78650e424929b2b457b9c912ac216576e6bd9e7d204ed03296a66" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "Python-2.7.14" "https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tar.xz#71ffb26e09e78650e424929b2b457b9c912ac216576e6bd9e7d204ed03296a66" standard verify_py27 copy_python_gdb ensurepip
|
||||
else
|
||||
install_package "Python-2.7.14" "https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz#304c9b202ea6fbd0a4a8e0ad3733715fbd4749f2204a9173a58ec53c32ea73e8" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "Python-2.7.14" "https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz#304c9b202ea6fbd0a4a8e0ad3733715fbd4749f2204a9173a58ec53c32ea73e8" standard verify_py27 copy_python_gdb ensurepip
|
||||
fi
|
||||
|
||||
9
plugins/python-build/share/python-build/2.7.15
Normal file
9
plugins/python-build/share/python-build/2.7.15
Normal file
@@ -0,0 +1,9 @@
|
||||
#require_gcc
|
||||
prefer_openssl11
|
||||
install_package "openssl-1.1.0j" "https://www.openssl.org/source/old/1.1.0/openssl-1.1.0j.tar.gz#31bec6c203ce1a8e93d5994f4ed304c63ccf07676118b6634edded12ad1b3246" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-2.7.15" "https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tar.xz#22d9b1ac5b26135ad2b8c2901a9413537e08749a753356ee913c84dbd2df5574" standard verify_py27 copy_python_gdb ensurepip
|
||||
else
|
||||
install_package "Python-2.7.15" "https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz#18617d1f15a380a919d517630a9cd85ce17ea602f9bbdc58ddc672df4b0239db" standard verify_py27 copy_python_gdb ensurepip
|
||||
fi
|
||||
8
plugins/python-build/share/python-build/2.7.16
Normal file
8
plugins/python-build/share/python-build/2.7.16
Normal file
@@ -0,0 +1,8 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2q" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2q.tar.gz#5744cfcbcec2b1b48629f7354203bc1e5e9b5466998bbccc5b5fcde3b18eb684" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-2.7.16" "https://www.python.org/ftp/python/2.7.16/Python-2.7.16.tar.xz#f222ef602647eecb6853681156d32de4450a2c39f4de93bd5b20235f2e660ed7" standard verify_py27 copy_python_gdb ensurepip
|
||||
else
|
||||
install_package "Python-2.7.16" "https://www.python.org/ftp/python/2.7.16/Python-2.7.16.tgz#01da813a3600876f03f46db11cc5c408175e99f03af2ba942ef324389a83bad5" standard verify_py27 copy_python_gdb ensurepip
|
||||
fi
|
||||
8
plugins/python-build/share/python-build/2.7.17
Normal file
8
plugins/python-build/share/python-build/2.7.17
Normal file
@@ -0,0 +1,8 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2q" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2q.tar.gz#5744cfcbcec2b1b48629f7354203bc1e5e9b5466998bbccc5b5fcde3b18eb684" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-2.7.17" "https://www.python.org/ftp/python/2.7.17/Python-2.7.17.tar.xz#4d43f033cdbd0aa7b7023c81b0e986fd11e653b5248dac9144d508f11812ba41" standard verify_py27 copy_python_gdb ensurepip
|
||||
else
|
||||
install_package "Python-2.7.17" "https://www.python.org/ftp/python/2.7.17/Python-2.7.17.tgz#f22059d09cdf9625e0a7284d24a13062044f5bf59d93a7f3382190dfa94cecde" standard verify_py27 copy_python_gdb ensurepip
|
||||
fi
|
||||
8
plugins/python-build/share/python-build/2.7.18
Normal file
8
plugins/python-build/share/python-build/2.7.18
Normal file
@@ -0,0 +1,8 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2q" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2q.tar.gz#5744cfcbcec2b1b48629f7354203bc1e5e9b5466998bbccc5b5fcde3b18eb684" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-2.7.18" "https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tar.xz#b62c0e7937551d0cc02b8fd5cb0f544f9405bafc9a54d3808ed4594812edef43" standard verify_py27 copy_python_gdb ensurepip
|
||||
else
|
||||
install_package "Python-2.7.18" "https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz#da3080e3b488f648a3d7a4560ddee895284c3380b11d6de75edb986526b9a814" standard verify_py27 copy_python_gdb ensurepip
|
||||
fi
|
||||
@@ -1,4 +1,4 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.7.2" "https://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz#1d54b7096c17902c3f40ffce7e5b84e0072d0144024184fff184a84d563abbb3" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.7.2" "https://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz#1d54b7096c17902c3f40ffce7e5b84e0072d0144024184fff184a84d563abbb3" standard verify_py27 copy_python_gdb ensurepip
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.7.3" "https://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz#d4c20f2b5faf95999fd5fecb3f7d32071b0820516224a6d2b72932ab47a1cb8e" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.7.3" "https://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz#d4c20f2b5faf95999fd5fecb3f7d32071b0820516224a6d2b72932ab47a1cb8e" standard verify_py27 copy_python_gdb ensurepip
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.7.4" "https://www.python.org/ftp/python/2.7.4/Python-2.7.4.tgz#98c5eb9c8e65effcc0122112ba17a0bce880aa23ecb560af56b55eb55632b81a" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.7.4" "https://www.python.org/ftp/python/2.7.4/Python-2.7.4.tgz#98c5eb9c8e65effcc0122112ba17a0bce880aa23ecb560af56b55eb55632b81a" standard verify_py27 copy_python_gdb ensurepip
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.7.5" "https://www.python.org/ftp/python/2.7.5/Python-2.7.5.tgz#8e1b5fa87b91835afb376a9c0d319d41feca07ffebc0288d97ab08d64f48afbf" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.7.5" "https://www.python.org/ftp/python/2.7.5/Python-2.7.5.tgz#8e1b5fa87b91835afb376a9c0d319d41feca07ffebc0288d97ab08d64f48afbf" standard verify_py27 copy_python_gdb ensurepip
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-2.7.6" "https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz#99c6860b70977befa1590029fae092ddb18db1d69ae67e8b9385b66ed104ba58" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-2.7.6" "https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz#99c6860b70977befa1590029fae092ddb18db1d69ae67e8b9385b66ed104ba58" standard verify_py27 copy_python_gdb ensurepip
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-2.7.7" "https://www.python.org/ftp/python/2.7.7/Python-2.7.7.tar.xz#2983e3cd089b30c50e2b2234f07c2ac4fb8a5df230ab8f2e1133a1d8b208da78" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "Python-2.7.7" "https://www.python.org/ftp/python/2.7.7/Python-2.7.7.tar.xz#2983e3cd089b30c50e2b2234f07c2ac4fb8a5df230ab8f2e1133a1d8b208da78" standard verify_py27 copy_python_gdb ensurepip
|
||||
else
|
||||
install_package "Python-2.7.7" "https://www.python.org/ftp/python/2.7.7/Python-2.7.7.tgz#7f49c0a6705ad89d925181e27d0aaa025ee4731ce0de64776c722216c3e66c42" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "Python-2.7.7" "https://www.python.org/ftp/python/2.7.7/Python-2.7.7.tgz#7f49c0a6705ad89d925181e27d0aaa025ee4731ce0de64776c722216c3e66c42" standard verify_py27 copy_python_gdb ensurepip
|
||||
fi
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-2.7.8" "https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tar.xz#edde10a0cb7d14e2735e682882d5b287028d1485c456758154c19573db68075a" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "Python-2.7.8" "https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tar.xz#edde10a0cb7d14e2735e682882d5b287028d1485c456758154c19573db68075a" standard verify_py27 copy_python_gdb ensurepip
|
||||
else
|
||||
install_package "Python-2.7.8" "https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz#74d70b914da4487aa1d97222b29e9554d042f825f26cb2b93abd20fdda56b557" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "Python-2.7.8" "https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz#74d70b914da4487aa1d97222b29e9554d042f825f26cb2b93abd20fdda56b557" standard verify_py27 copy_python_gdb ensurepip
|
||||
fi
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-2.7.9" "https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz#90d27e14ea7e03570026850e2e50ba71ad20b7eb31035aada1cf3def8f8d4916" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "Python-2.7.9" "https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz#90d27e14ea7e03570026850e2e50ba71ad20b7eb31035aada1cf3def8f8d4916" standard verify_py27 copy_python_gdb ensurepip
|
||||
else
|
||||
install_package "Python-2.7.9" "https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz#c8bba33e66ac3201dabdc556f0ea7cfe6ac11946ec32d357c4c6f9b018c12c5b" ldflags_dirs standard verify_py27 ensurepip
|
||||
install_package "Python-2.7.9" "https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz#c8bba33e66ac3201dabdc556f0ea7cfe6ac11946ec32d357c4c6f9b018c12c5b" standard verify_py27 copy_python_gdb ensurepip
|
||||
fi
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-3.0.1" "https://www.python.org/ftp/python/3.0.1/Python-3.0.1.tgz#7d5f2feae9035f1d3d9e6bb7f092dbf374d6bb4b25abd0d2d11f13bba1cb04de" ldflags_dirs standard verify_py30
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-3.0.1" "https://www.python.org/ftp/python/3.0.1/Python-3.0.1.tgz#7d5f2feae9035f1d3d9e6bb7f092dbf374d6bb4b25abd0d2d11f13bba1cb04de" standard verify_py30
|
||||
if [[ "Darwin" == "$(uname -s)" ]]; then
|
||||
# https://github.com/pyenv/pyenv/issues/456
|
||||
{ echo
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-3.1" "https://www.python.org/ftp/python/3.1/Python-3.1.tgz#99a034cf574ea3c26412b0a0728126d7fd6ea9593d099d807a25d216ed031e6a" ldflags_dirs standard verify_py31
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-3.1" "https://www.python.org/ftp/python/3.1/Python-3.1.tgz#99a034cf574ea3c26412b0a0728126d7fd6ea9593d099d807a25d216ed031e6a" standard verify_py31
|
||||
install_package "setuptools-17.1.1" "https://pypi.python.org/packages/source/s/setuptools/setuptools-17.1.1.tar.gz#5bf42dbf406fd58a41029f53cffff1c90db5de1c5e0e560b5545cf2ec949c431" python
|
||||
install_package "pip-1.5.6" "https://pypi.python.org/packages/source/p/pip/pip-1.5.6.tar.gz#b1a4ae66baf21b7eb05a5e4f37c50c2706fa28ea1f8780ce8efe14dcd9f1726c" python
|
||||
@@ -1,6 +1,6 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-3.1.1" "https://www.python.org/ftp/python/3.1.1/Python-3.1.1.tgz#5d85d7bff11c4db44920af99f64f4227c816f897f6bfa9dd8a2611165ca5f0a1" ldflags_dirs standard verify_py31
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-3.1.1" "https://www.python.org/ftp/python/3.1.1/Python-3.1.1.tgz#5d85d7bff11c4db44920af99f64f4227c816f897f6bfa9dd8a2611165ca5f0a1" standard verify_py31
|
||||
install_package "setuptools-17.1.1" "https://pypi.python.org/packages/source/s/setuptools/setuptools-17.1.1.tar.gz#5bf42dbf406fd58a41029f53cffff1c90db5de1c5e0e560b5545cf2ec949c431" python
|
||||
install_package "pip-1.5.6" "https://pypi.python.org/packages/source/p/pip/pip-1.5.6.tar.gz#b1a4ae66baf21b7eb05a5e4f37c50c2706fa28ea1f8780ce8efe14dcd9f1726c" python
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-3.1.2" "https://www.python.org/ftp/python/3.1.2/Python-3.1.2.tgz#dffbc0561a161a4a576c6059e6990a9859a0be16ba9b5736eabe4abbb2700d1c" ldflags_dirs standard verify_py31
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-3.1.2" "https://www.python.org/ftp/python/3.1.2/Python-3.1.2.tgz#dffbc0561a161a4a576c6059e6990a9859a0be16ba9b5736eabe4abbb2700d1c" standard verify_py31
|
||||
install_package "setuptools-17.1.1" "https://pypi.python.org/packages/source/s/setuptools/setuptools-17.1.1.tar.gz#5bf42dbf406fd58a41029f53cffff1c90db5de1c5e0e560b5545cf2ec949c431" python
|
||||
install_package "pip-1.5.6" "https://pypi.python.org/packages/source/p/pip/pip-1.5.6.tar.gz#b1a4ae66baf21b7eb05a5e4f37c50c2706fa28ea1f8780ce8efe14dcd9f1726c" python
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-3.1.3" "https://www.python.org/ftp/python/3.1.3/Python-3.1.3.tgz#6311823aeda8be6a7a2b67caaeff48abce6626c9940ba7ed81f9c978666a36bd" ldflags_dirs standard verify_py31
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-3.1.3" "https://www.python.org/ftp/python/3.1.3/Python-3.1.3.tgz#6311823aeda8be6a7a2b67caaeff48abce6626c9940ba7ed81f9c978666a36bd" standard verify_py31
|
||||
install_package "setuptools-17.1.1" "https://pypi.python.org/packages/source/s/setuptools/setuptools-17.1.1.tar.gz#5bf42dbf406fd58a41029f53cffff1c90db5de1c5e0e560b5545cf2ec949c431" python
|
||||
install_package "pip-1.5.6" "https://pypi.python.org/packages/source/p/pip/pip-1.5.6.tar.gz#b1a4ae66baf21b7eb05a5e4f37c50c2706fa28ea1f8780ce8efe14dcd9f1726c" python
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-3.1.4" "https://www.python.org/ftp/python/3.1.4/Python-3.1.4.tgz#fadc05ea6d05360cff189944a85ecd2180bbc308784d168b350450e70bbdd846" ldflags_dirs standard verify_py31
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-3.1.4" "https://www.python.org/ftp/python/3.1.4/Python-3.1.4.tgz#fadc05ea6d05360cff189944a85ecd2180bbc308784d168b350450e70bbdd846" standard verify_py31
|
||||
install_package "setuptools-17.1.1" "https://pypi.python.org/packages/source/s/setuptools/setuptools-17.1.1.tar.gz#5bf42dbf406fd58a41029f53cffff1c90db5de1c5e0e560b5545cf2ec949c431" python
|
||||
install_package "pip-1.5.6" "https://pypi.python.org/packages/source/p/pip/pip-1.5.6.tar.gz#b1a4ae66baf21b7eb05a5e4f37c50c2706fa28ea1f8780ce8efe14dcd9f1726c" python
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-3.1.5" "https://www.python.org/ftp/python/3.1.5/Python-3.1.5.tgz#d12dae6d06f52ef6bf1271db4d5b4d14b5dd39813e324314e72b648ef1bc0103" ldflags_dirs standard verify_py31
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-3.1.5" "https://www.python.org/ftp/python/3.1.5/Python-3.1.5.tgz#d12dae6d06f52ef6bf1271db4d5b4d14b5dd39813e324314e72b648ef1bc0103" standard verify_py31
|
||||
install_package "setuptools-17.1.1" "https://pypi.python.org/packages/source/s/setuptools/setuptools-17.1.1.tar.gz#5bf42dbf406fd58a41029f53cffff1c90db5de1c5e0e560b5545cf2ec949c431" python
|
||||
install_package "pip-1.5.6" "https://pypi.python.org/packages/source/p/pip/pip-1.5.6.tar.gz#b1a4ae66baf21b7eb05a5e4f37c50c2706fa28ea1f8780ce8efe14dcd9f1726c" python
|
||||
|
||||
6
plugins/python-build/share/python-build/3.10-dev
Normal file
6
plugins/python-build/share/python-build/3.10-dev
Normal file
@@ -0,0 +1,6 @@
|
||||
#require_gcc
|
||||
prefer_openssl11
|
||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
||||
install_package "openssl-1.1.1k" "https://www.openssl.org/source/openssl-1.1.1k.tar.gz#892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_git "Python-3.10-dev" "https://github.com/python/cpython" 3.10 standard verify_py310 copy_python_gdb ensurepip
|
||||
10
plugins/python-build/share/python-build/3.10.0b3
Normal file
10
plugins/python-build/share/python-build/3.10.0b3
Normal file
@@ -0,0 +1,10 @@
|
||||
#require_gcc
|
||||
prefer_openssl11
|
||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
||||
install_package "openssl-1.1.1k" "https://www.openssl.org/source/openssl-1.1.1k.tar.gz#892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-3.10.0b3" "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b3.tar.xz#2267aed4d01015176bcfe645ac6ca36e05f0c30a76f1f9973863692f6e25cc15" standard verify_py310 copy_python_gdb ensurepip
|
||||
else
|
||||
install_package "Python-3.10.0b3" "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b3.tgz#880f407e619aa92c831900a98c0793889c4b40008a0b5623fd829ef76c8d96be" standard verify_py310 copy_python_gdb ensurepip
|
||||
fi
|
||||
6
plugins/python-build/share/python-build/3.11-dev
Normal file
6
plugins/python-build/share/python-build/3.11-dev
Normal file
@@ -0,0 +1,6 @@
|
||||
#require_gcc
|
||||
prefer_openssl11
|
||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
||||
install_package "openssl-1.1.1k" "https://www.openssl.org/source/openssl-1.1.1k.tar.gz#892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_git "Python-3.11-dev" "https://github.com/python/cpython" main standard verify_py311 copy_python_gdb ensurepip
|
||||
@@ -1,6 +1,6 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-3.2" "https://www.python.org/ftp/python/3.2/Python-3.2.tgz#27b35bfcbbf01de9564c0265d72b58ba3ff3d56df0615765372f2aa09dc20da9" ldflags_dirs standard verify_py32
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-3.2" "https://www.python.org/ftp/python/3.2/Python-3.2.tgz#27b35bfcbbf01de9564c0265d72b58ba3ff3d56df0615765372f2aa09dc20da9" standard verify_py32
|
||||
install_package "setuptools-17.1.1" "https://pypi.python.org/packages/source/s/setuptools/setuptools-17.1.1.tar.gz#5bf42dbf406fd58a41029f53cffff1c90db5de1c5e0e560b5545cf2ec949c431" python
|
||||
install_package "pip-7.1.2" "https://pypi.python.org/packages/source/p/pip/pip-7.1.2.tar.gz#ca047986f0528cfa975a14fb9f7f106271d4e0c3fe1ddced6c1db2e7ae57a477" python
|
||||
@@ -1,6 +1,6 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-3.2.1" "https://www.python.org/ftp/python/3.2.1/Python-3.2.1.tgz#7cff29d984696d9fe8c7bea54da5b9ad36acef33ff5cf0d3e37e4d12fb21c572" ldflags_dirs standard verify_py32
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-3.2.1" "https://www.python.org/ftp/python/3.2.1/Python-3.2.1.tgz#7cff29d984696d9fe8c7bea54da5b9ad36acef33ff5cf0d3e37e4d12fb21c572" standard verify_py32
|
||||
install_package "setuptools-17.1.1" "https://pypi.python.org/packages/source/s/setuptools/setuptools-17.1.1.tar.gz#5bf42dbf406fd58a41029f53cffff1c90db5de1c5e0e560b5545cf2ec949c431" python
|
||||
install_package "pip-7.1.2" "https://pypi.python.org/packages/source/p/pip/pip-7.1.2.tar.gz#ca047986f0528cfa975a14fb9f7f106271d4e0c3fe1ddced6c1db2e7ae57a477" python
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-3.2.2" "https://www.python.org/ftp/python/3.2.2/Python-3.2.2.tgz#acc6a13cb4fed0b7e86716324a8437e326645b8076177eede5a0cad99ec0313c" ldflags_dirs standard verify_py32
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-3.2.2" "https://www.python.org/ftp/python/3.2.2/Python-3.2.2.tgz#acc6a13cb4fed0b7e86716324a8437e326645b8076177eede5a0cad99ec0313c" standard verify_py32
|
||||
install_package "setuptools-17.1.1" "https://pypi.python.org/packages/source/s/setuptools/setuptools-17.1.1.tar.gz#5bf42dbf406fd58a41029f53cffff1c90db5de1c5e0e560b5545cf2ec949c431" python
|
||||
install_package "pip-7.1.2" "https://pypi.python.org/packages/source/p/pip/pip-7.1.2.tar.gz#ca047986f0528cfa975a14fb9f7f106271d4e0c3fe1ddced6c1db2e7ae57a477" python
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-3.2.3" "https://www.python.org/ftp/python/3.2.3/Python-3.2.3.tgz#74c33e165edef7532cef95fd9a325a06878b5bfc8a5d038161573f283eaf9809" ldflags_dirs standard verify_py32
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-3.2.3" "https://www.python.org/ftp/python/3.2.3/Python-3.2.3.tgz#74c33e165edef7532cef95fd9a325a06878b5bfc8a5d038161573f283eaf9809" standard verify_py32
|
||||
install_package "setuptools-17.1.1" "https://pypi.python.org/packages/source/s/setuptools/setuptools-17.1.1.tar.gz#5bf42dbf406fd58a41029f53cffff1c90db5de1c5e0e560b5545cf2ec949c431" python
|
||||
install_package "pip-7.1.2" "https://pypi.python.org/packages/source/p/pip/pip-7.1.2.tar.gz#ca047986f0528cfa975a14fb9f7f106271d4e0c3fe1ddced6c1db2e7ae57a477" python
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-3.2.4" "https://www.python.org/ftp/python/3.2.4/Python-3.2.4.tgz#71c3139908ccc1c544ba1e331a3c22b3f1c09f562438a054fd6f4e2628de8b9a" ldflags_dirs standard verify_py32
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-3.2.4" "https://www.python.org/ftp/python/3.2.4/Python-3.2.4.tgz#71c3139908ccc1c544ba1e331a3c22b3f1c09f562438a054fd6f4e2628de8b9a" standard verify_py32
|
||||
install_package "setuptools-17.1.1" "https://pypi.python.org/packages/source/s/setuptools/setuptools-17.1.1.tar.gz#5bf42dbf406fd58a41029f53cffff1c90db5de1c5e0e560b5545cf2ec949c431" python
|
||||
install_package "pip-7.1.2" "https://pypi.python.org/packages/source/p/pip/pip-7.1.2.tar.gz#ca047986f0528cfa975a14fb9f7f106271d4e0c3fe1ddced6c1db2e7ae57a477" python
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-3.2.5" "https://www.python.org/ftp/python/3.2.5/Python-3.2.5.tgz#5eae0ab92a0bb9e3a1bf9c7cd046bc3de58996b049bd894d095978b6b085099f" ldflags_dirs standard verify_py32
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-3.2.5" "https://www.python.org/ftp/python/3.2.5/Python-3.2.5.tgz#5eae0ab92a0bb9e3a1bf9c7cd046bc3de58996b049bd894d095978b6b085099f" standard verify_py32
|
||||
install_package "setuptools-17.1.1" "https://pypi.python.org/packages/source/s/setuptools/setuptools-17.1.1.tar.gz#5bf42dbf406fd58a41029f53cffff1c90db5de1c5e0e560b5545cf2ec949c431" python
|
||||
install_package "pip-7.1.2" "https://pypi.python.org/packages/source/p/pip/pip-7.1.2.tar.gz#ca047986f0528cfa975a14fb9f7f106271d4e0c3fe1ddced6c1db2e7ae57a477" python
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-3.2.6" "https://www.python.org/ftp/python/3.2.6/Python-3.2.6.tar.xz#1d12b501819fd26afafbf8459be1aa279b56f032b4c15412de0a713ce0de7bdc" ldflags_dirs standard verify_py32
|
||||
install_package "Python-3.2.6" "https://www.python.org/ftp/python/3.2.6/Python-3.2.6.tar.xz#1d12b501819fd26afafbf8459be1aa279b56f032b4c15412de0a713ce0de7bdc" standard verify_py32
|
||||
else
|
||||
install_package "Python-3.2.6" "https://www.python.org/ftp/python/3.2.6/Python-3.2.6.tgz#fc1e41296e29d476f696303acae293ae7a2310f0f9d0d637905e722a3f16163e" ldflags_dirs standard verify_py32
|
||||
install_package "Python-3.2.6" "https://www.python.org/ftp/python/3.2.6/Python-3.2.6.tgz#fc1e41296e29d476f696303acae293ae7a2310f0f9d0d637905e722a3f16163e" standard verify_py32
|
||||
fi
|
||||
install_package "setuptools-17.1.1" "https://pypi.python.org/packages/source/s/setuptools/setuptools-17.1.1.tar.gz#5bf42dbf406fd58a41029f53cffff1c90db5de1c5e0e560b5545cf2ec949c431" python
|
||||
install_package "pip-7.1.2" "https://pypi.python.org/packages/source/p/pip/pip-7.1.2.tar.gz#ca047986f0528cfa975a14fb9f7f106271d4e0c3fe1ddced6c1db2e7ae57a477" python
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-3.3.0" "https://www.python.org/ftp/python/3.3.0/Python-3.3.0.tgz#cfe531eaace2503e13a74addc7f4a89482e99f8b8fca51b469ae5c83f450604e" ldflags_dirs standard verify_py33 ensurepip
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-3.3.0" "https://www.python.org/ftp/python/3.3.0/Python-3.3.0.tgz#cfe531eaace2503e13a74addc7f4a89482e99f8b8fca51b469ae5c83f450604e" standard verify_py33 ensurepip
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-3.3.1" "https://www.python.org/ftp/python/3.3.1/Python-3.3.1.tgz#671dc3632f311e63c6733703aa0a1ad90c99277ddc8299d39e487718a50319bd" ldflags_dirs standard verify_py33 ensurepip
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-3.3.1" "https://www.python.org/ftp/python/3.3.1/Python-3.3.1.tgz#671dc3632f311e63c6733703aa0a1ad90c99277ddc8299d39e487718a50319bd" standard verify_py33 ensurepip
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-3.3.2" "https://www.python.org/ftp/python/3.3.2/Python-3.3.2.tgz#de664fca3b8e0ab20fb42bfed1a36e26f116f1853e88ada12dbc938761036172" ldflags_dirs standard verify_py33 ensurepip
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-3.3.2" "https://www.python.org/ftp/python/3.3.2/Python-3.3.2.tgz#de664fca3b8e0ab20fb42bfed1a36e26f116f1853e88ada12dbc938761036172" standard verify_py33 ensurepip
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#require_gcc
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
|
||||
install_package "Python-3.3.3" "https://www.python.org/ftp/python/3.3.3/Python-3.3.3.tgz#30b60839bfe0ae8a2dba11e909328459bb8ee4a258afe7494b06b2ceda080efc" ldflags_dirs standard verify_py33 ensurepip
|
||||
install_package "openssl-1.0.2k" "https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz#6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_package "Python-3.3.3" "https://www.python.org/ftp/python/3.3.3/Python-3.3.3.tgz#30b60839bfe0ae8a2dba11e909328459bb8ee4a258afe7494b06b2ceda080efc" standard verify_py33 ensurepip
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user