mirror of
https://github.com/pyenv/pyenv.git
synced 2025-11-08 11:33:49 -05:00
Compare commits
1368 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b704c4242c | ||
|
|
978d8e0f9a | ||
|
|
65ddf84926 | ||
|
|
9a59c8490a | ||
|
|
4a14d2f62a | ||
|
|
66412f556d | ||
|
|
785738d5b3 | ||
|
|
71f09a6d71 | ||
|
|
9619e6bd53 | ||
|
|
2c3998f88b | ||
|
|
69d47d5fd7 | ||
|
|
dc145fa5a2 | ||
|
|
5149c53165 | ||
|
|
c5e4bab858 | ||
|
|
e71ac9e439 | ||
|
|
76655979f4 | ||
|
|
15ba0d9c3f | ||
|
|
364fa7f7c6 | ||
|
|
b6929531c6 | ||
|
|
4ebba7cd5f | ||
|
|
85a66a9640 | ||
|
|
435e362c60 | ||
|
|
afd0840836 | ||
|
|
19e2b9588a | ||
|
|
5b5df15eb7 | ||
|
|
428a94b3ed | ||
|
|
08bed5b7b1 | ||
|
|
fc4f496545 | ||
|
|
7ab48c47fd | ||
|
|
9ff06f61b6 | ||
|
|
ecc5ff5ead | ||
|
|
4521552662 | ||
|
|
2f396596d7 | ||
|
|
47c0db9dd8 | ||
|
|
ecc3100828 | ||
|
|
e77bdb2f0b | ||
|
|
4fb078c4c5 | ||
|
|
8d5ffcd082 | ||
|
|
eb70ee3e73 | ||
|
|
9d7a011f6e | ||
|
|
37299c8851 | ||
|
|
734c341c46 | ||
|
|
2d9779b60d | ||
|
|
71671df0e3 | ||
|
|
8aa1db2050 | ||
|
|
2998ebce87 | ||
|
|
2263fc883a | ||
|
|
6c24a5a88d | ||
|
|
968ecc10c9 | ||
|
|
0638a5a320 | ||
|
|
a2d00cb613 | ||
|
|
a070a395bf | ||
|
|
29e6f34174 | ||
|
|
9daffd3fcc | ||
|
|
7b9d1a40c2 | ||
|
|
af8cca9b31 | ||
|
|
656d7b15c0 | ||
|
|
ff47681966 | ||
|
|
34a5b7f56e | ||
|
|
d339fbdc53 | ||
|
|
19cdbc828d | ||
|
|
5af8d2fb12 | ||
|
|
18edb656f9 | ||
|
|
0c1edefe6a | ||
|
|
433e2d1f99 | ||
|
|
a3598423c1 | ||
|
|
f9183b5f8c | ||
|
|
d3c5b37b8a | ||
|
|
2178fb931c | ||
|
|
2ebab025f7 | ||
|
|
90ac836576 | ||
|
|
2f4caa83b7 | ||
|
|
fae20aece7 | ||
|
|
7478310c1b | ||
|
|
2a4b203312 | ||
|
|
48aa0c491b | ||
|
|
f6384fe8d4 | ||
|
|
839c9e5c76 | ||
|
|
2a2cbea951 | ||
|
|
bc58ab54f8 | ||
|
|
6485409a55 | ||
|
|
8297de9ee0 | ||
|
|
09bc868ea8 | ||
|
|
fd0b8fcfb3 | ||
|
|
33873e9b4d | ||
|
|
d92e190dc8 | ||
|
|
faaa2d587a | ||
|
|
005a2e8914 | ||
|
|
24a3108499 | ||
|
|
b1d32217c3 | ||
|
|
8b0ec441da | ||
|
|
41f00c639d | ||
|
|
bb352f8822 | ||
|
|
2158e8224a | ||
|
|
0fe7d78503 | ||
|
|
fc23323ed4 | ||
|
|
63c00d9989 | ||
|
|
98878e5d12 | ||
|
|
0cbfcf09d4 | ||
|
|
0c909f7457 | ||
|
|
7c9ebc2727 | ||
|
|
269a702321 | ||
|
|
adc0365923 | ||
|
|
7dae19765c | ||
|
|
ad5a7f0c17 | ||
|
|
e9ad498fe3 | ||
|
|
753a9e826b | ||
|
|
52d6acc3b0 | ||
|
|
0314de0c73 | ||
|
|
37e4c2094f | ||
|
|
5ab088c707 | ||
|
|
3e08d43fd9 | ||
|
|
8fa1f43856 | ||
|
|
e93b170fe1 | ||
|
|
7add7793cd | ||
|
|
7467eec9de | ||
|
|
e83168655c | ||
|
|
4a707c27de | ||
|
|
734e40d8a5 | ||
|
|
440f044f0b | ||
|
|
bd32d489c1 | ||
|
|
bed627addd | ||
|
|
29436ffe6d | ||
|
|
d82324ecf9 | ||
|
|
1910e8667f | ||
|
|
cb579583bc | ||
|
|
7a6cbbcd08 | ||
|
|
3314420f2e | ||
|
|
1f3b0ae017 | ||
|
|
d3e40c34bb | ||
|
|
38e2067ad6 | ||
|
|
e0b0147056 | ||
|
|
88e46c4b5a | ||
|
|
ca00b8e2e9 | ||
|
|
02001dbfb3 | ||
|
|
033dae622d | ||
|
|
0849776306 | ||
|
|
d5b193e5b0 | ||
|
|
01d39850b5 | ||
|
|
d461b5f1d8 | ||
|
|
3fd23431af | ||
|
|
acbd736eb3 | ||
|
|
fd1fb13016 | ||
|
|
3292200786 | ||
|
|
a91b36b236 | ||
|
|
d15f3888f0 | ||
|
|
1ec90481e8 | ||
|
|
95818ab802 | ||
|
|
bbd8f2c01e | ||
|
|
30212f0054 | ||
|
|
27a7466f15 | ||
|
|
23d819ed69 | ||
|
|
da80a3d3cc | ||
|
|
0a69dbd818 | ||
|
|
aad7c0e055 | ||
|
|
19e70e34a0 | ||
|
|
19048f1b60 | ||
|
|
7209cc490e | ||
|
|
f5e49fe6fa | ||
|
|
ff666ab489 | ||
|
|
bcc8ab231a | ||
|
|
29126e4965 | ||
|
|
ae11c56565 | ||
|
|
eef042ad89 | ||
|
|
bec978d0f6 | ||
|
|
b3efcc9d15 | ||
|
|
fe1bd31443 | ||
|
|
45f1d19240 | ||
|
|
cb2a5b3cea | ||
|
|
6404661372 | ||
|
|
69cfc1a3e2 | ||
|
|
00165f5796 | ||
|
|
acfbc96614 | ||
|
|
c148ac9f89 | ||
|
|
df52586134 | ||
|
|
e5d8edf1d9 | ||
|
|
030821e618 | ||
|
|
46a6adea6b | ||
|
|
cd22737d70 | ||
|
|
459a535228 | ||
|
|
cf38195541 | ||
|
|
98f40f6d6e | ||
|
|
a5619caf54 | ||
|
|
23f62aeb75 | ||
|
|
7625d20ee4 | ||
|
|
edd5b932d6 | ||
|
|
b7451d7280 | ||
|
|
81c2e4b32e | ||
|
|
250208261f | ||
|
|
d1ff898a2b | ||
|
|
d12120a4bf | ||
|
|
b1dd4a8130 | ||
|
|
f1a22c104c | ||
|
|
8b0de41c4a | ||
|
|
0e683164bd | ||
|
|
8ce9928819 | ||
|
|
d01fa09a7d | ||
|
|
3d36ee7227 | ||
|
|
98a879bdb0 | ||
|
|
4107496053 | ||
|
|
291b6fb2be | ||
|
|
7d50714105 | ||
|
|
ba620fd076 | ||
|
|
3cf9586b92 | ||
|
|
b7d89bacf3 | ||
|
|
3a4c7cf200 | ||
|
|
ad8f2886ae | ||
|
|
9a99d427ef | ||
|
|
6bb14c60da | ||
|
|
d9c933e0c0 | ||
|
|
19cb9f535a | ||
|
|
84c4ed5230 | ||
|
|
235eea3003 | ||
|
|
688c0af0cd | ||
|
|
c1af5ab0a9 | ||
|
|
e09d61780c | ||
|
|
4cef3d74ac | ||
|
|
f36d735e27 | ||
|
|
a6776562c1 | ||
|
|
9c4e489637 | ||
|
|
afbd54dd13 | ||
|
|
99b510859d | ||
|
|
2657f1049c | ||
|
|
99d16707e3 | ||
|
|
57f946550a | ||
|
|
ccaab86c4c | ||
|
|
db4cc6097f | ||
|
|
54e7796eee | ||
|
|
bf613e3d54 | ||
|
|
25c6817c48 | ||
|
|
0464221edb | ||
|
|
4d96271113 | ||
|
|
322aa82ae7 | ||
|
|
9833be730a | ||
|
|
e3c8a754a4 | ||
|
|
2d5fc1b749 | ||
|
|
001c824744 | ||
|
|
fa80772142 | ||
|
|
0c7d2205ff | ||
|
|
4f719b7909 | ||
|
|
134d38fc53 | ||
|
|
3531ad06b2 | ||
|
|
767bcae71c | ||
|
|
0256ff06e8 | ||
|
|
2552329dbd | ||
|
|
ac0dd36da8 | ||
|
|
095ca59878 | ||
|
|
fed6d25cb1 | ||
|
|
7203a96cd7 | ||
|
|
cf7fe1d87f | ||
|
|
1000c2fa99 | ||
|
|
fc7ceb4176 | ||
|
|
a73d90b9a0 | ||
|
|
c024fc8428 | ||
|
|
a08f82cab8 | ||
|
|
f39fc3a71a | ||
|
|
5826d4275b | ||
|
|
c930df95b2 | ||
|
|
dce5f750ce | ||
|
|
d72b977846 | ||
|
|
935fdb003b | ||
|
|
53cf2e3387 | ||
|
|
bde4786577 | ||
|
|
30baff8e5d | ||
|
|
0f6c5ac9b7 | ||
|
|
08fc271fca | ||
|
|
956b9efe0f | ||
|
|
1c63e733f8 | ||
|
|
b9d8a75c8b | ||
|
|
635d83e26c | ||
|
|
74ba392548 | ||
|
|
3ec652e0b1 | ||
|
|
c59b1d55c4 | ||
|
|
bfbc9e280b | ||
|
|
fb8801120b | ||
|
|
1ca671cc6a | ||
|
|
dffd62e2cb | ||
|
|
8f7fb57fbb | ||
|
|
6540dd7ca5 | ||
|
|
293ffb04a6 | ||
|
|
0d1a5b3030 | ||
|
|
41606c4307 | ||
|
|
114f4f6d49 | ||
|
|
a80f54307e | ||
|
|
709ff7fba7 | ||
|
|
0ba2cec70e | ||
|
|
eb2e5ac4c4 | ||
|
|
6e658f30a9 | ||
|
|
1dee022342 | ||
|
|
31a3aec870 | ||
|
|
22ab0f8b2f | ||
|
|
e04f2720b4 | ||
|
|
aa36a3f69c | ||
|
|
7718410061 | ||
|
|
d5f18d4d82 | ||
|
|
725ff0c5dd | ||
|
|
ddc9b4d861 | ||
|
|
bf0cdcf980 | ||
|
|
5fe403d7da | ||
|
|
77981bbf1a | ||
|
|
e198792df2 | ||
|
|
72d6b75b5c | ||
|
|
a87877c381 | ||
|
|
ff67dc7036 | ||
|
|
096f0e2ba6 | ||
|
|
35ecd398ac | ||
|
|
9f3f38d312 | ||
|
|
021b53f924 | ||
|
|
8f4a361414 | ||
|
|
e5ce793ad5 | ||
|
|
0e298b691d | ||
|
|
4336d8b43a | ||
|
|
46bc0b7558 | ||
|
|
858b318779 | ||
|
|
b662634abf | ||
|
|
7a957c5488 | ||
|
|
4e4bd42020 | ||
|
|
d24ce2494b | ||
|
|
8acb4ebaba | ||
|
|
4441eeada7 | ||
|
|
80e769e8d6 | ||
|
|
e48c2d2f66 | ||
|
|
7ee7eb108d | ||
|
|
800488bbc1 | ||
|
|
e03cb557b0 | ||
|
|
866dcd408e | ||
|
|
7890b27bcf | ||
|
|
7fed8c9c54 | ||
|
|
1f9eb6b25d | ||
|
|
ed1bcc755a | ||
|
|
7ac203bc11 | ||
|
|
53fd32c2b6 | ||
|
|
d74daad8f5 | ||
|
|
5be82cb363 | ||
|
|
89a150f434 | ||
|
|
7214f59385 | ||
|
|
1fc3b48907 | ||
|
|
47b6f545f3 | ||
|
|
ea7ae1ba1a | ||
|
|
8b982b1cd4 | ||
|
|
fe25b85982 | ||
|
|
a2298f7660 | ||
|
|
fd19e45fa9 | ||
|
|
7531e7779f | ||
|
|
9c78edcdaf | ||
|
|
8305eaefe3 | ||
|
|
bc4abf06bd | ||
|
|
36647a66de | ||
|
|
79fca42c35 | ||
|
|
9dcc477c3f | ||
|
|
5462e8df8c | ||
|
|
61ce66a7c6 | ||
|
|
bde78e83a0 | ||
|
|
a0c5fe42e9 | ||
|
|
3e433b2949 | ||
|
|
d3b71cfb0b | ||
|
|
ba945d229c | ||
|
|
4e192a6851 | ||
|
|
85354377dd | ||
|
|
654b645984 | ||
|
|
e44f7399f5 | ||
|
|
45173d1f67 | ||
|
|
baeecdfc7d | ||
|
|
b2ee05b931 | ||
|
|
6601c34408 | ||
|
|
7417b6d57f | ||
|
|
3d89369f50 | ||
|
|
c6ff64220f | ||
|
|
44df355099 | ||
|
|
414a512f47 | ||
|
|
165fbb2c1d | ||
|
|
11476f7a31 | ||
|
|
15b336da84 | ||
|
|
d15140fea6 | ||
|
|
955d517588 | ||
|
|
e7943da3f5 | ||
|
|
dcc109f8be | ||
|
|
778bb2e10f | ||
|
|
12447f67f5 | ||
|
|
e29dd67ce8 | ||
|
|
e23b9e90b4 | ||
|
|
7dd33c27c2 | ||
|
|
cbcf03d327 | ||
|
|
7fadd939ad | ||
|
|
4e10692a1e | ||
|
|
fb757053c8 | ||
|
|
949c1dab8d | ||
|
|
d8559b9749 | ||
|
|
4469d51ef7 | ||
|
|
4f76be6a12 | ||
|
|
81b89e16db | ||
|
|
a62f1a4423 | ||
|
|
a02f5dde4f | ||
|
|
cf1beda362 | ||
|
|
8aebe3b43d | ||
|
|
9a10674ab9 | ||
|
|
66c8ca6cff | ||
|
|
3a1379cb34 | ||
|
|
740fbe4bda | ||
|
|
93ece2ac16 | ||
|
|
bc8dba4bea | ||
|
|
1b35cfaa2c | ||
|
|
b8885e4fe2 | ||
|
|
5c83c4abb7 | ||
|
|
7da05ee964 | ||
|
|
21131ee493 | ||
|
|
ac07d63780 | ||
|
|
ad9805a455 | ||
|
|
e0fdded2cd | ||
|
|
4df7cf2dd6 | ||
|
|
e93ae00ca1 | ||
|
|
a761ff602d | ||
|
|
253d79503d | ||
|
|
f3e7005fb1 | ||
|
|
2ad9dfd217 | ||
|
|
9e8df34124 | ||
|
|
7a61486b5c | ||
|
|
c3cefd9588 | ||
|
|
4771e05c53 | ||
|
|
331f68260b | ||
|
|
c803130a9d | ||
|
|
24ba8ce904 | ||
|
|
727b8b02ac | ||
|
|
de4c2a91d4 | ||
|
|
aedbd8d046 | ||
|
|
25d3ca7fdf | ||
|
|
081f539cbc | ||
|
|
1e75a11d32 | ||
|
|
7d709586ee | ||
|
|
962c7827fb | ||
|
|
e8c1f0dccf | ||
|
|
0e698ffc4c | ||
|
|
5298c4bd1b | ||
|
|
9cd200b98c | ||
|
|
efef9d8c5c | ||
|
|
5e7bd78766 | ||
|
|
4967a7f495 | ||
|
|
803697feb2 | ||
|
|
fcbb1a24fd | ||
|
|
f22d0e969b | ||
|
|
3d263c8fa3 | ||
|
|
ae40042ff8 | ||
|
|
8579fd4567 | ||
|
|
c4e012d5e3 | ||
|
|
f64f7c7c49 | ||
|
|
0dcce750b9 | ||
|
|
a300254841 | ||
|
|
57df303a2c | ||
|
|
aed0eaeceb | ||
|
|
bbe84d0411 | ||
|
|
2145efec42 | ||
|
|
cd3ace7d97 | ||
|
|
8781d132e7 | ||
|
|
f66b8ead99 | ||
|
|
8b414ce31d | ||
|
|
aa7b6420ce | ||
|
|
216244fbac | ||
|
|
4c654d703e | ||
|
|
02c7589d2a | ||
|
|
69d5656311 | ||
|
|
4d64f84a25 | ||
|
|
42cffbc82d | ||
|
|
c8c40cff21 | ||
|
|
10957b786a | ||
|
|
9e07319cf9 | ||
|
|
03f8029c41 | ||
|
|
5f20bc258f | ||
|
|
75fd97803d | ||
|
|
9993d13996 | ||
|
|
c71cf59f50 | ||
|
|
8ea88dee1c | ||
|
|
97da7c40e7 | ||
|
|
1921dbef18 | ||
|
|
0a73b8f886 | ||
|
|
4a8947d1a6 | ||
|
|
e748c14db8 | ||
|
|
cd3103340c | ||
|
|
4543ff88bc | ||
|
|
2017dd0c25 | ||
|
|
24d05343f8 | ||
|
|
aa305d2c3d | ||
|
|
73ca25e49b | ||
|
|
25184d9fca | ||
|
|
d948274305 | ||
|
|
444bb360a8 | ||
|
|
d0fae57c4d | ||
|
|
37ad781061 | ||
|
|
a8664a2339 | ||
|
|
78b9cee98e | ||
|
|
f72fc8eabc | ||
|
|
180ff6c955 | ||
|
|
6a8003d56d | ||
|
|
739392a2e4 | ||
|
|
0a19b2fa02 | ||
|
|
d594bcadb3 | ||
|
|
eb6e24cef1 | ||
|
|
9c12b302eb | ||
|
|
cdf7e6c924 | ||
|
|
bd312d652e | ||
|
|
916d0eae8e | ||
|
|
23364549d7 | ||
|
|
e92a7de031 | ||
|
|
8ef30d9e4d | ||
|
|
74d5dba06a | ||
|
|
6bd7927333 | ||
|
|
4684507021 | ||
|
|
12069a1118 | ||
|
|
30538b0672 | ||
|
|
fd893ea3b0 | ||
|
|
be3fc6d8cb | ||
|
|
7467c88780 | ||
|
|
d75b1a12d7 | ||
|
|
7db657beb5 | ||
|
|
41ce3aade2 | ||
|
|
0c4392bf16 | ||
|
|
d2e2c61c51 | ||
|
|
e1aac2a12c | ||
|
|
b1cccdb24c | ||
|
|
a6f1f480eb | ||
|
|
d8fe9fd0cb | ||
|
|
dc97ef3dbe | ||
|
|
efb00b65bf | ||
|
|
5436020ec3 | ||
|
|
b37361b862 | ||
|
|
90e6e30d63 | ||
|
|
a0e0f1637a | ||
|
|
cd8f61b5e0 | ||
|
|
fbc40aae77 | ||
|
|
b116f341fe | ||
|
|
c8ab429d7b | ||
|
|
f2f703d6d9 | ||
|
|
2de5ca0846 | ||
|
|
425e44d064 | ||
|
|
b84b9ce532 | ||
|
|
dcec0cedf4 | ||
|
|
1dc9ef24df | ||
|
|
5c5205e172 | ||
|
|
4c06f23aaf | ||
|
|
046f5bde02 | ||
|
|
c678bb1eaa | ||
|
|
5e72a4c3e3 | ||
|
|
23669162c0 | ||
|
|
01835c2682 | ||
|
|
4243ac6ffc | ||
|
|
b0f29d511a | ||
|
|
3031cb9750 | ||
|
|
6bcb1d6211 | ||
|
|
3d1ba0c58c | ||
|
|
68e8945f74 | ||
|
|
3ddbb19663 | ||
|
|
763a30bb1d | ||
|
|
9a33ce643e | ||
|
|
b29c54ee0a | ||
|
|
58275fc52b | ||
|
|
dc4b355aad | ||
|
|
9f1daac9f7 | ||
|
|
471fa24531 | ||
|
|
f228825879 | ||
|
|
8c96897495 | ||
|
|
659e532701 | ||
|
|
5f0056886a | ||
|
|
bc322b0238 | ||
|
|
6251c3bad5 | ||
|
|
526fa03968 | ||
|
|
d6e0120cc8 | ||
|
|
66bd348600 | ||
|
|
03ece82197 | ||
|
|
e66dcf258c | ||
|
|
fab6a0fcd1 | ||
|
|
c4968f7a48 | ||
|
|
d0e9cd7d7e | ||
|
|
3185dee8a2 | ||
|
|
05615587d0 | ||
|
|
132179d0ca | ||
|
|
b6cdfcf5dc | ||
|
|
c78f079078 | ||
|
|
2767461235 | ||
|
|
20432dda88 | ||
|
|
f27e3ebb94 | ||
|
|
7718afbca2 | ||
|
|
28766056b2 | ||
|
|
dbf8b2fb65 | ||
|
|
aaec35859d | ||
|
|
54f7944ae2 | ||
|
|
96bfa1532d | ||
|
|
ebd6c1aee3 | ||
|
|
a8f8f0ae0c | ||
|
|
a50d0492b3 | ||
|
|
a6dbb11dca | ||
|
|
43abe13db9 | ||
|
|
465bd1f3e8 | ||
|
|
96be89835e | ||
|
|
3428431aef | ||
|
|
8841f7788d | ||
|
|
8da3749648 | ||
|
|
94bce8abf8 | ||
|
|
f62ee1a4db | ||
|
|
e7b0d99601 | ||
|
|
6e3dd80f15 | ||
|
|
d5a5cd1aae | ||
|
|
195942f22e | ||
|
|
daaa1aab6d | ||
|
|
9ca7de5b6c | ||
|
|
3d1c38f1a8 | ||
|
|
12ad6f670b | ||
|
|
9163c46568 | ||
|
|
204ded5a55 | ||
|
|
3937dc3618 | ||
|
|
8f25eabbbc | ||
|
|
cb65df8bec | ||
|
|
0daf04a71b | ||
|
|
52544e6956 | ||
|
|
39a6b097f7 | ||
|
|
f19ab5fea2 | ||
|
|
6c3dd0a24f | ||
|
|
155012911c | ||
|
|
bdfe6d383f | ||
|
|
efdba2d76b | ||
|
|
19c02bf39c | ||
|
|
d462e158e2 | ||
|
|
3ecc94fa38 | ||
|
|
53bc95314c | ||
|
|
db325cc66d | ||
|
|
28c40ece8d | ||
|
|
34f938fdb9 | ||
|
|
e034c80388 | ||
|
|
948d1f4ca7 | ||
|
|
438e828eb5 | ||
|
|
e52ed97fff | ||
|
|
43eb33e929 | ||
|
|
10ab381fb6 | ||
|
|
c452da8084 | ||
|
|
e6090f00f3 | ||
|
|
6868d3053a | ||
|
|
10d3123caa | ||
|
|
2d16c638e9 | ||
|
|
3ae068b492 | ||
|
|
824f7e6b21 | ||
|
|
5d247793e6 | ||
|
|
ed700c0185 | ||
|
|
193e64b6b2 | ||
|
|
5ba585769b | ||
|
|
5540e235ab | ||
|
|
c9268bb0dc | ||
|
|
5ddc14704c | ||
|
|
5fcb4cf0bf | ||
|
|
0f288f2462 | ||
|
|
0c81c97926 | ||
|
|
5ff089de9c | ||
|
|
459725df3c | ||
|
|
ec3b7d815d | ||
|
|
afe86aef52 | ||
|
|
461ae27a19 | ||
|
|
c0f691fc57 | ||
|
|
ffc899475a | ||
|
|
57d1c9d6be | ||
|
|
9d488c9760 | ||
|
|
3db1ac13d2 | ||
|
|
880fa46156 | ||
|
|
24ad375a35 | ||
|
|
7f32e96c28 | ||
|
|
294738842c | ||
|
|
ce671398f8 | ||
|
|
a3bea25ddc | ||
|
|
1a66a9141b | ||
|
|
78c1d7186d | ||
|
|
9b60d73ec8 | ||
|
|
8a9d2557a0 | ||
|
|
2a79db00b0 | ||
|
|
3e7839c5b7 | ||
|
|
493f036928 | ||
|
|
af438abeae | ||
|
|
36c5cbf74f | ||
|
|
608ad6f9d0 | ||
|
|
7a6eb38a36 | ||
|
|
cd40335ba4 | ||
|
|
26450fd0ab | ||
|
|
22ecefd572 | ||
|
|
abae52ae20 | ||
|
|
114063495f | ||
|
|
7b797c3797 | ||
|
|
8e276a009e | ||
|
|
4198280142 | ||
|
|
5cb9c9af2e | ||
|
|
d6230578ec | ||
|
|
62bf3d9b61 | ||
|
|
55e6e7143a | ||
|
|
1e78acb701 | ||
|
|
648afe05a9 | ||
|
|
9aee57d965 | ||
|
|
ed684c239c | ||
|
|
fe934642c5 | ||
|
|
7c4c1757f7 | ||
|
|
1b066598ce | ||
|
|
cc94ad39f1 | ||
|
|
c754efc44b | ||
|
|
46ffb0c8df | ||
|
|
70cce28ba3 | ||
|
|
9156191168 | ||
|
|
5402ce423b | ||
|
|
2ea2e7558d | ||
|
|
9d8da866f1 | ||
|
|
70fa356585 | ||
|
|
31fb290de2 | ||
|
|
e285f2e5b1 | ||
|
|
1d31529b46 | ||
|
|
6f40dae3d7 | ||
|
|
d2794f54e5 | ||
|
|
bc03106cee | ||
|
|
bf93b90282 | ||
|
|
7b8bd11416 | ||
|
|
f623231734 | ||
|
|
481198d255 | ||
|
|
50d5de4731 | ||
|
|
15977c852d | ||
|
|
10d5d9a24f | ||
|
|
be037932ca | ||
|
|
af95960960 | ||
|
|
17c153b1c1 | ||
|
|
065f5578b1 | ||
|
|
71c9ff565b | ||
|
|
88270e83e8 | ||
|
|
b09681c9fb | ||
|
|
80eef69c9a | ||
|
|
bc025641c2 | ||
|
|
5dc3ee95fd | ||
|
|
4903223f23 | ||
|
|
1aea75055a | ||
|
|
f30085eaf4 | ||
|
|
43d311ef58 | ||
|
|
239f4a6b51 | ||
|
|
1463968a3f | ||
|
|
97c6a4c932 | ||
|
|
5131ef521b | ||
|
|
1d7ce651b0 | ||
|
|
c335f96eac | ||
|
|
f0eeac63a3 | ||
|
|
4ebe18a273 | ||
|
|
ab2aa6d13b | ||
|
|
431761d125 | ||
|
|
e6e858c33b | ||
|
|
e9aa6cf649 | ||
|
|
4e30b1a5e1 | ||
|
|
2beef3c455 | ||
|
|
797975b742 | ||
|
|
527334b401 | ||
|
|
292813eca3 | ||
|
|
d935a2a994 | ||
|
|
d9a7117c3b | ||
|
|
6596657004 | ||
|
|
f48a5b11d7 | ||
|
|
efe461d2b4 | ||
|
|
4540967250 | ||
|
|
d14357f64c | ||
|
|
d6e1de3e2f | ||
|
|
063717e6b5 | ||
|
|
5a05788e61 | ||
|
|
48335302d9 | ||
|
|
9146f44db1 | ||
|
|
b9ae43a9df | ||
|
|
f6a77549eb | ||
|
|
cbd246acff | ||
|
|
9d21169ee0 | ||
|
|
7bceb85067 | ||
|
|
eeb69b1b79 | ||
|
|
8abefe1fcb | ||
|
|
b22fcd9759 | ||
|
|
45df273592 | ||
|
|
dbd50e7bd9 | ||
|
|
1c0a5d8264 | ||
|
|
7c7cca8a26 | ||
|
|
123b3af1a0 | ||
|
|
ba9c01ce77 | ||
|
|
7535efe031 | ||
|
|
995da2df89 | ||
|
|
f28b3ee123 | ||
|
|
97b957d5d5 | ||
|
|
fe2412c95d | ||
|
|
5114600c4d | ||
|
|
96d3bd6379 | ||
|
|
e8433cfeb3 | ||
|
|
7f88eabd0b | ||
|
|
d320d74a07 | ||
|
|
fc49f7e21e | ||
|
|
be4f5992d6 | ||
|
|
25a48694be | ||
|
|
9b7b2a6b40 | ||
|
|
f59729359a | ||
|
|
93ac0632c7 | ||
|
|
7a21cf9c10 | ||
|
|
720dee76af | ||
|
|
db6a41c90f | ||
|
|
bfddc69120 | ||
|
|
acce3744e7 | ||
|
|
5ca423c9f3 | ||
|
|
f0e852553a | ||
|
|
fc8597ca38 | ||
|
|
e7a68ad467 | ||
|
|
0fd1eaaeb5 | ||
|
|
b986f8f93f | ||
|
|
60e1abe7fa | ||
|
|
afcf4f0c7c | ||
|
|
c0aff27842 | ||
|
|
e172eb2818 | ||
|
|
3a5c2cabb1 | ||
|
|
871ec77795 | ||
|
|
8761ae8f7c | ||
|
|
3d401ebcd2 | ||
|
|
268f965421 | ||
|
|
ff0f8a140b | ||
|
|
6c2d234e55 | ||
|
|
c6dd3b9468 | ||
|
|
8fee82e456 | ||
|
|
7220044b49 | ||
|
|
a797bb6d88 | ||
|
|
665f9d9466 | ||
|
|
cb260fb9d0 | ||
|
|
4f0439cd12 | ||
|
|
2e387816f1 | ||
|
|
ee4182321e | ||
|
|
661a2b29d3 | ||
|
|
8c503c6e75 | ||
|
|
743a637b59 | ||
|
|
7fe78245d8 | ||
|
|
96c0362b53 | ||
|
|
2dae281201 | ||
|
|
4a52bfaff9 | ||
|
|
b26b83a11f | ||
|
|
35aed218cf | ||
|
|
38ab616344 | ||
|
|
720870011b | ||
|
|
b2ac5df98d | ||
|
|
d9e772eb6e | ||
|
|
eef8ac2701 | ||
|
|
45b45bcf25 | ||
|
|
ded98e11de | ||
|
|
dc1b5a197f | ||
|
|
79507fbadf | ||
|
|
de5c61cd59 | ||
|
|
8e657374a1 | ||
|
|
77bd5bc6c9 | ||
|
|
e82f943174 | ||
|
|
bbf8cb4a95 | ||
|
|
a1df551bcf | ||
|
|
fc41c87395 | ||
|
|
6e02ad2fe4 | ||
|
|
58e24a64a2 | ||
|
|
77d9e34a49 | ||
|
|
d7f4aa02ed | ||
|
|
42bb40a5d8 | ||
|
|
d38f00cd4a | ||
|
|
e9a6a2909c | ||
|
|
5f95ce1835 | ||
|
|
ff995b6654 | ||
|
|
4d15d21f0f | ||
|
|
6790e3e18a | ||
|
|
737e0f1b3f | ||
|
|
ab9ee414ad | ||
|
|
c3a755c853 | ||
|
|
9901c4b84d | ||
|
|
04ce9bcd5c | ||
|
|
4cf93df059 | ||
|
|
a43f7f5341 | ||
|
|
af2cb3f943 | ||
|
|
9b8b9c5205 | ||
|
|
b6aef96cea | ||
|
|
bc6be9ed9f | ||
|
|
2297bd3741 | ||
|
|
8595df4e18 | ||
|
|
200adac02f | ||
|
|
6509d318f4 | ||
|
|
474767618d | ||
|
|
82aaef7842 | ||
|
|
9df0a2916d | ||
|
|
f76309d419 | ||
|
|
29d3df661e | ||
|
|
96b4c0f7e7 | ||
|
|
f9053406c2 | ||
|
|
ae4659538d | ||
|
|
4159055117 | ||
|
|
aa62882347 | ||
|
|
b8a7de8a3c | ||
|
|
a661e14580 | ||
|
|
22f4218522 | ||
|
|
6f761f8159 | ||
|
|
0468ffdd49 | ||
|
|
352c8f49bd | ||
|
|
72eb7f5c32 | ||
|
|
59c796c138 | ||
|
|
a465cb808c | ||
|
|
ade2bf2a0d | ||
|
|
ed133866d7 | ||
|
|
f6a5eb90a1 | ||
|
|
d805ec19ca | ||
|
|
3ba7702602 | ||
|
|
887f2263f0 | ||
|
|
d215804fbe | ||
|
|
6697437d1a | ||
|
|
e9e151c89e | ||
|
|
0880a92a7f | ||
|
|
3169a4894b | ||
|
|
21c0d930e9 | ||
|
|
f470c80e5a | ||
|
|
2b5ee0c425 | ||
|
|
5931001cab | ||
|
|
5c91bc981c | ||
|
|
d496c03497 | ||
|
|
2ec8f0f0a4 | ||
|
|
00596b4b46 | ||
|
|
e9a8adb37f | ||
|
|
6efe6dafe7 | ||
|
|
a01a08c551 | ||
|
|
c2cc649cfa | ||
|
|
9dac275567 | ||
|
|
3290973990 | ||
|
|
d378b274d9 | ||
|
|
08b0d162b4 | ||
|
|
b9e698305e | ||
|
|
01f2a1d2ca | ||
|
|
4b8146f516 | ||
|
|
5a69204978 | ||
|
|
801b093b67 | ||
|
|
2cca695bed | ||
|
|
67324465fa | ||
|
|
7612f0391d | ||
|
|
21f44a130a | ||
|
|
033529915e | ||
|
|
e77e60206d | ||
|
|
d5506e1404 | ||
|
|
f512496588 | ||
|
|
27d4b9b6d2 | ||
|
|
ef8c8b8ef2 | ||
|
|
5998c4596b | ||
|
|
8851acda13 | ||
|
|
1ceb678e86 | ||
|
|
79e2c96a7e | ||
|
|
fa0442688a | ||
|
|
9e596d641d | ||
|
|
3ab6836c38 | ||
|
|
082c19f5a1 | ||
|
|
3f1a4d0ff9 | ||
|
|
0df94b1097 | ||
|
|
1e2979d101 | ||
|
|
72a480f298 | ||
|
|
9d74383461 | ||
|
|
2e737a80c0 | ||
|
|
d707546912 | ||
|
|
4501d90896 | ||
|
|
149a915770 | ||
|
|
0c81002220 | ||
|
|
fe87e44870 | ||
|
|
601ac4b3f3 | ||
|
|
60950d0082 | ||
|
|
cff2c4527d | ||
|
|
10e6dd8c2d | ||
|
|
18ecb4ffbb | ||
|
|
986db22da8 | ||
|
|
07037d9a5d | ||
|
|
8914be846f | ||
|
|
d1f1c4c61c | ||
|
|
6c70e2a997 | ||
|
|
3cde540ca0 | ||
|
|
83e820d869 | ||
|
|
8e60ad8c6d | ||
|
|
a841f42d53 | ||
|
|
08367dbb83 | ||
|
|
6222bb743d | ||
|
|
bce58e9d9a | ||
|
|
d4e6a4c3d3 | ||
|
|
9eef6c536b | ||
|
|
d737ae9f03 | ||
|
|
2da9bfd1f8 | ||
|
|
3136fce0c0 | ||
|
|
cce1960de0 | ||
|
|
6641e291ee | ||
|
|
f5fded3b9d | ||
|
|
cac8fd7f60 | ||
|
|
b55830fb01 | ||
|
|
5b9b3f742b | ||
|
|
34065dddbb | ||
|
|
ea9214bb2e | ||
|
|
d90cb0ec85 | ||
|
|
d75e12298a | ||
|
|
addec6339f | ||
|
|
abab44df80 | ||
|
|
4afa280066 | ||
|
|
5c6a812b86 | ||
|
|
650c9a3d6e | ||
|
|
0933c40179 | ||
|
|
2613e84447 | ||
|
|
d1f78c2716 | ||
|
|
cf89abaacf | ||
|
|
545052d5ca | ||
|
|
0d51899e9b | ||
|
|
fa32d81579 | ||
|
|
164f7bf4a6 | ||
|
|
7bdd097254 | ||
|
|
5ae1c803cb | ||
|
|
f536dca41f | ||
|
|
8d951d5025 | ||
|
|
5c31c45d05 | ||
|
|
0851436caa | ||
|
|
44c20af80e | ||
|
|
65ae0a3261 | ||
|
|
24df447e44 | ||
|
|
a380250881 | ||
|
|
ff38d6935d | ||
|
|
27e1c25cf7 | ||
|
|
a5c34a6c00 | ||
|
|
6e01f83742 | ||
|
|
47ce2155b4 | ||
|
|
0c6b28c9aa | ||
|
|
4d22259ac3 | ||
|
|
7ed908bad1 | ||
|
|
dcc7185ae1 | ||
|
|
cc423566a8 | ||
|
|
e488b31597 | ||
|
|
5bbfcf75f6 | ||
|
|
8164af44b4 | ||
|
|
a1ffc93372 | ||
|
|
9e1bbff8a1 | ||
|
|
6ee219b9c7 | ||
|
|
5f23e3d7b2 | ||
|
|
854f6f3a46 | ||
|
|
63ac2b717f | ||
|
|
81726b16be | ||
|
|
4acab71e1e | ||
|
|
8b8128e33b | ||
|
|
e835d447ed | ||
|
|
7f44afc1c0 | ||
|
|
f380967e8d | ||
|
|
d640941976 | ||
|
|
e58ac666c4 | ||
|
|
ce99decad5 | ||
|
|
719e6db358 | ||
|
|
e0547de922 | ||
|
|
4b9907af1c | ||
|
|
1d09851b2b | ||
|
|
800ccaa5e3 | ||
|
|
00da261211 | ||
|
|
b81d0ff0cd | ||
|
|
715a7789ba | ||
|
|
6aa6d6b026 | ||
|
|
62f9b7a731 | ||
|
|
cc967fddb7 | ||
|
|
27ebc8bab7 | ||
|
|
71db79eded | ||
|
|
3aa263b51f | ||
|
|
59fbf8d103 | ||
|
|
b21d2c7dea | ||
|
|
20e5404248 | ||
|
|
56c58e2778 | ||
|
|
3c6ecaf66a | ||
|
|
87ca55100b | ||
|
|
589872affb | ||
|
|
73d5ea7426 | ||
|
|
b992ffca1d | ||
|
|
9c82314570 | ||
|
|
403154e09e | ||
|
|
b44398e954 | ||
|
|
46a01b1643 | ||
|
|
bf94eb8cbe | ||
|
|
b225f2030d | ||
|
|
cbe7d0241b | ||
|
|
e65a10be51 | ||
|
|
badc8255ab | ||
|
|
385d3337ef | ||
|
|
558200285b | ||
|
|
2c26b0870a | ||
|
|
2cea06b88a | ||
|
|
c977774977 | ||
|
|
314937d599 | ||
|
|
07ae0d8e42 | ||
|
|
461c5bbc2d | ||
|
|
a7f5a19a24 | ||
|
|
f344731cf9 | ||
|
|
a3f35b7e0d | ||
|
|
b025dbfdab | ||
|
|
efd9c1cd48 | ||
|
|
38eb9fe948 | ||
|
|
6ee7aaf611 | ||
|
|
93ba3a4c51 | ||
|
|
34087d03ec | ||
|
|
f136b219db | ||
|
|
84705cfe61 | ||
|
|
2a9f6038e0 | ||
|
|
0e3e603429 | ||
|
|
71a916faf2 | ||
|
|
8e02b93e39 | ||
|
|
a7a99c75eb | ||
|
|
bb3b5de179 | ||
|
|
f956502fd8 | ||
|
|
4c5ffc8d99 | ||
|
|
8dc4e8d6f8 | ||
|
|
7edceff71c | ||
|
|
1587d8a03c | ||
|
|
5dea3c9e63 | ||
|
|
12d4fdb307 | ||
|
|
319721b380 | ||
|
|
3dd9332eee | ||
|
|
88922e2bc0 | ||
|
|
0965577b93 | ||
|
|
f538169992 | ||
|
|
d03f290b5d | ||
|
|
8ddf8760d5 | ||
|
|
8fa6b4a184 | ||
|
|
e1a5b326e4 | ||
|
|
8892f3735d | ||
|
|
9eedd4ef84 | ||
|
|
b70dcb9f2d | ||
|
|
008a5a1ff9 | ||
|
|
5b7eb42a9f | ||
|
|
35d4cd2259 | ||
|
|
5bff9c773a | ||
|
|
6efb3c327f | ||
|
|
1a05d9a8cd | ||
|
|
df51c13323 | ||
|
|
a025866bac | ||
|
|
2797f3d80e | ||
|
|
0d85193f39 | ||
|
|
4d534fed31 | ||
|
|
43212f64ed | ||
|
|
75559df89d | ||
|
|
3d5156ed1d | ||
|
|
aa76fd2f9c | ||
|
|
db141f66a4 | ||
|
|
fe07deb193 | ||
|
|
7159e24aa8 | ||
|
|
1cc90d31ae | ||
|
|
76bf3ee0d6 | ||
|
|
fd3dd225ba | ||
|
|
140808e3d4 | ||
|
|
edb5a32620 | ||
|
|
88e2d73d52 | ||
|
|
7b95fea77e | ||
|
|
20eb5c4913 | ||
|
|
bc2d2456ae | ||
|
|
064531ea1f | ||
|
|
80b8508dbc | ||
|
|
02e073a503 | ||
|
|
e094d683ed | ||
|
|
bd1454c69f | ||
|
|
b726d645c3 | ||
|
|
78441ce084 | ||
|
|
4953fa4034 | ||
|
|
1f76effbfb | ||
|
|
5e20237f5b | ||
|
|
dd44d0a713 | ||
|
|
a28c040eb9 | ||
|
|
6a787dd951 | ||
|
|
5d9132623f | ||
|
|
f7193b09fd | ||
|
|
498d226b2f | ||
|
|
ccc51244e3 | ||
|
|
516f49e913 | ||
|
|
a2ab3bc32c | ||
|
|
ab4a8396e1 | ||
|
|
733cb397b2 | ||
|
|
7f9a2325e5 | ||
|
|
625b3b7ec1 | ||
|
|
c95d446c53 | ||
|
|
6e749ef12f | ||
|
|
850dd87332 | ||
|
|
fb3e9b020e | ||
|
|
02a348b657 | ||
|
|
5c41dc3901 | ||
|
|
74a3c55623 | ||
|
|
bc8c8a6cd9 | ||
|
|
99bc72a908 | ||
|
|
aab8bb262d | ||
|
|
f14a4ef8e5 | ||
|
|
3bf50856ce | ||
|
|
c3e55aa5ae | ||
|
|
704548336a | ||
|
|
0ea5e12b4a | ||
|
|
28fd240de2 | ||
|
|
586c0e6d62 | ||
|
|
c920eaa9be | ||
|
|
d2f210d70d | ||
|
|
683036298e | ||
|
|
93b536863f | ||
|
|
403f4eb7a7 | ||
|
|
4c71f3c5cd | ||
|
|
106e4cae90 | ||
|
|
10221d51f1 | ||
|
|
aff87c3cb3 | ||
|
|
b0f640db61 | ||
|
|
af0fed2e34 | ||
|
|
e996f2f51a | ||
|
|
0fe18d0dc1 | ||
|
|
cc6c45d7fb | ||
|
|
2646c6c159 | ||
|
|
ce66352f6d | ||
|
|
9e133adf99 | ||
|
|
b1851f2aff | ||
|
|
b943e0abff | ||
|
|
d6d556911b | ||
|
|
b8ecd2d6dd | ||
|
|
1e5ef005fb | ||
|
|
d11db0f0f2 | ||
|
|
8e43e72082 | ||
|
|
ae86a253e2 | ||
|
|
0c38147fcb | ||
|
|
e1ea64b0b9 | ||
|
|
fa35e792c1 | ||
|
|
f5807424c2 | ||
|
|
4c006959fa | ||
|
|
f9a19e3f24 | ||
|
|
d5c24f5122 | ||
|
|
392e404cc6 | ||
|
|
b04e067c83 | ||
|
|
ed2937f4d1 | ||
|
|
8848006540 | ||
|
|
7a4fe458b8 | ||
|
|
f76faa88b8 | ||
|
|
9ce760c798 | ||
|
|
152ebe6e61 | ||
|
|
1a6eb80bcd | ||
|
|
745bceac22 | ||
|
|
583f3b0e21 | ||
|
|
cc9c72747a | ||
|
|
b473f7a271 | ||
|
|
b726ace943 | ||
|
|
499edda1d7 | ||
|
|
3bfd91de51 | ||
|
|
c7e139186b | ||
|
|
7c84490649 | ||
|
|
b75ef17db7 | ||
|
|
daa12e97c6 | ||
|
|
1c5eb82e93 | ||
|
|
ff387010b3 | ||
|
|
27dd805acb | ||
|
|
5f1761645f | ||
|
|
f8c9282e8c | ||
|
|
37f46df390 | ||
|
|
4f8138c70a | ||
|
|
db3b4773bc | ||
|
|
fe04103e24 | ||
|
|
7777bb6d58 | ||
|
|
e9bcd9e0bd | ||
|
|
2cc2c22094 | ||
|
|
319000b448 | ||
|
|
b4ba76a15a | ||
|
|
3ff0785fe7 | ||
|
|
1b7d3b0502 | ||
|
|
c43711a216 | ||
|
|
3c86d811c8 | ||
|
|
d94c1d2143 | ||
|
|
3fd475e1d5 | ||
|
|
309a6cd65e | ||
|
|
924f6dc76d | ||
|
|
56a9a7cebf | ||
|
|
b8cbb18f7b | ||
|
|
27caf0ef3d | ||
|
|
b203ccbe74 | ||
|
|
cb962d5a74 | ||
|
|
539800cc3b | ||
|
|
b77ae3e0b5 | ||
|
|
dfc3f9e13c | ||
|
|
f120551ef3 | ||
|
|
b03a4cde78 | ||
|
|
71b2081a75 | ||
|
|
5fbc3ae3d5 | ||
|
|
1ce37e53c7 | ||
|
|
9ae12a7c22 | ||
|
|
b3deef5e80 | ||
|
|
28317ecb34 | ||
|
|
78efa7613d | ||
|
|
0bf26d8f1d | ||
|
|
ac70eb701c | ||
|
|
c834f241a8 | ||
|
|
aa39b392a9 | ||
|
|
907ddb614d | ||
|
|
dd0e3feae3 | ||
|
|
c24207428c | ||
|
|
8b23026d6c | ||
|
|
cc9b7aa7dd | ||
|
|
318a41d723 | ||
|
|
5a52177d15 | ||
|
|
2e8c43215d | ||
|
|
45966deb49 | ||
|
|
7aa644da5c | ||
|
|
56379532a6 | ||
|
|
9bf0755c81 | ||
|
|
f01d1d1064 | ||
|
|
e9b0ecf021 | ||
|
|
cbc6f38774 | ||
|
|
e220b76c3e | ||
|
|
8d1bf96267 | ||
|
|
e49922064d | ||
|
|
95882fce68 | ||
|
|
cc20ab3392 | ||
|
|
fe50ed29ea | ||
|
|
e9db2caace | ||
|
|
2d55aea467 | ||
|
|
521c2c3e06 | ||
|
|
0bc8d8252e | ||
|
|
80f4022891 | ||
|
|
998af2a3ab | ||
|
|
3b820e8c0c | ||
|
|
8bc19e28e0 | ||
|
|
0d0516ad05 | ||
|
|
6997026064 | ||
|
|
dd1b6502c6 | ||
|
|
d1013e82de | ||
|
|
bb2d058167 | ||
|
|
6e58c43d8a | ||
|
|
dce4eb636a | ||
|
|
c170255580 | ||
|
|
8bf0938e60 | ||
|
|
aa831836e1 | ||
|
|
0eb1520707 | ||
|
|
606346761f | ||
|
|
48e1488bc9 | ||
|
|
0259b6adfb | ||
|
|
dbb1fb5a06 | ||
|
|
755c00e67c | ||
|
|
ad900ba436 | ||
|
|
ea7dc5f1e1 | ||
|
|
be53bb8951 | ||
|
|
167ff2a198 | ||
|
|
ee3c9bef5e | ||
|
|
6d307c6e11 | ||
|
|
a0705cb86e | ||
|
|
fca31c4307 | ||
|
|
684f7b7f21 | ||
|
|
da06998457 | ||
|
|
f466679bd1 | ||
|
|
4a217a0cd1 | ||
|
|
5b14236bac | ||
|
|
a16355fe33 | ||
|
|
c9575d7cb0 | ||
|
|
252003f18e | ||
|
|
7509b9fadf | ||
|
|
f878896a77 | ||
|
|
d09af20897 | ||
|
|
b520475b22 | ||
|
|
ffa2505450 | ||
|
|
d73e945329 | ||
|
|
779aacbf07 | ||
|
|
2ed400bfc6 | ||
|
|
e8ad78f837 | ||
|
|
aede700619 | ||
|
|
ffa5fb0ea0 | ||
|
|
42079cf3fb | ||
|
|
d14eda2c1a | ||
|
|
579d44203f | ||
|
|
a7695aa5d3 | ||
|
|
f3ae8fd904 | ||
|
|
4174749b24 | ||
|
|
e89ae3a4a9 | ||
|
|
13122ca9bf | ||
|
|
34a4a532b2 | ||
|
|
d08fcc522e | ||
|
|
f0ff5a416e | ||
|
|
e66ca60340 | ||
|
|
71e5cd962e | ||
|
|
da659739d2 | ||
|
|
dff57ae35d | ||
|
|
2856f81bb9 | ||
|
|
5224641f1a | ||
|
|
a4c02082cb | ||
|
|
80c0dce7b2 | ||
|
|
de25a84dc2 | ||
|
|
8187bc84e3 | ||
|
|
880ea61dd8 | ||
|
|
7953f573c6 | ||
|
|
2457419b4a |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,4 +1,3 @@
|
|||||||
/plugins
|
|
||||||
/shims
|
/shims
|
||||||
/version
|
/version
|
||||||
/versions
|
/versions
|
||||||
@@ -7,4 +6,5 @@
|
|||||||
/libexec/*.dylib
|
/libexec/*.dylib
|
||||||
/src/Makefile
|
/src/Makefile
|
||||||
/src/*.o
|
/src/*.o
|
||||||
/gems
|
/bats/
|
||||||
|
/default-packages
|
||||||
|
|||||||
16
.travis.yml
16
.travis.yml
@@ -1,7 +1,17 @@
|
|||||||
sudo: false
|
sudo: false
|
||||||
install: git clone --depth 1 https://github.com/sstephenson/bats.git
|
install: git clone --depth 1 https://github.com/sstephenson/bats.git
|
||||||
script: PATH="./bats/bin:$PATH" test/run
|
script: make test
|
||||||
language: c
|
language: c
|
||||||
env:
|
env:
|
||||||
- RBENV_NATIVE_EXT=
|
- PYENV_NATIVE_EXT=
|
||||||
- RBENV_NATIVE_EXT=1
|
- PYENV_NATIVE_EXT=1
|
||||||
|
notifications:
|
||||||
|
email:
|
||||||
|
on_success: never
|
||||||
|
deploy:
|
||||||
|
provider: releases
|
||||||
|
api_key:
|
||||||
|
secure: FLWevL09KYp7V1SjJUNEdWzuomuocXwNvPr1DSAFH7mmrjKTtjzwrjINAthSqzjlDrs5B//P47l1VLyHp5byEzy673W+bOmEg8swmqc7E9FrHLRyEByd/yca3DzkZgXEXgGdY/cl7tHhM4V2fYKEgAIWbFV+takmTFMK4WkEtNg=
|
||||||
|
on:
|
||||||
|
repo: pyenv/pyenv
|
||||||
|
tags: true
|
||||||
|
|||||||
571
CHANGELOG.md
Normal file
571
CHANGELOG.md
Normal file
@@ -0,0 +1,571 @@
|
|||||||
|
## Version History
|
||||||
|
|
||||||
|
## 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)
|
||||||
|
* python-build: Ignore LibreSSL bundled with macOS 10.13 (#1025)
|
||||||
|
* python-build: Skip passing `--enable-unicode` to CPython 3.3+ (#912)
|
||||||
|
* python-build: Add CPython 3.3.7 (#1053)
|
||||||
|
* python-build: Add micropython 1.9.3
|
||||||
|
* python-build: Add PyPy 5.9.0
|
||||||
|
* python-build: Add Miniconda[23] 4.3.14, 4.3.21, 4.3.27, 4.3.30
|
||||||
|
* python-build: Add Anaconda[23] 5.0.1
|
||||||
|
* python-build: Update Anaconda[23] 5.0.0 to 5.0.0.1 bugfix release
|
||||||
|
|
||||||
|
## v1.1.5
|
||||||
|
|
||||||
|
* python-build: Add CPython 3.6.3
|
||||||
|
* python-build: Add CPython 3.7.0a1
|
||||||
|
* python-build: Add Anaconda[23] 5.0.0
|
||||||
|
|
||||||
|
## v1.1.4
|
||||||
|
|
||||||
|
* pyenv: Workaround for scripts in `$PATH` which needs to be source'd (#100, #688, #953)
|
||||||
|
* python-build: Add support for PyPy3 executables like `libpypy3-c.so` (#955, #956)
|
||||||
|
* python-build: Add CPython 2.7.14, 3.4.7, 3.5.4 (#965, #971, #980)
|
||||||
|
* python-build: Add Jython 2.7.1 (#973)
|
||||||
|
|
||||||
|
## v1.1.3
|
||||||
|
|
||||||
|
* python-build: Add CPython 3.6.2 (#951)
|
||||||
|
|
||||||
|
## v1.1.2
|
||||||
|
|
||||||
|
* pyenv: Fix incorrect `pyenv --version` output in v1.1.1 (#947)
|
||||||
|
|
||||||
|
## v1.1.1
|
||||||
|
|
||||||
|
* python-build: Update links to Portable Pypy 5.8-1 bugfix release, affects pypy2.7-5.8.0 and pypy3.5-5.8.0 definitions (#939)
|
||||||
|
|
||||||
|
## v1.1.0
|
||||||
|
|
||||||
|
* python-build: Add PyPy 5.7.1 (#888)
|
||||||
|
* pyenv: Merge rbenv master (#927)
|
||||||
|
* python-build: Add PyPy 5.8.0 (#932)
|
||||||
|
* python-build: Anaconda[23] 4.4.0
|
||||||
|
* python-build: Add micropython-dev
|
||||||
|
|
||||||
|
## 1.0.10
|
||||||
|
|
||||||
|
* python-build: Add Anaconda2/Anaconda3 4.3.1 (#876)
|
||||||
|
* python-build: Make miniconda-latest point to miniconda2-latest (#881)
|
||||||
|
* python-build: Fix typo in MacOS packages for anaconda2-4.3.0/4.2.0 (#880)
|
||||||
|
|
||||||
|
## 1.0.9
|
||||||
|
|
||||||
|
* pyenv: Migrate project site from https://github.com/yyuu/pyenv to https://github.com/pyenv/pyenv
|
||||||
|
* python-build: Add PyPy2 5.7.0 (#872, #868)
|
||||||
|
* python-build: Add PyPy3 5.7.0-beta (#871, #869)
|
||||||
|
* python-build: Add CPython 3.6.1 (#873)
|
||||||
|
* python-build: Add Pyston 0.6.1 (#859)
|
||||||
|
* python-build: Change default mirror site URL from https://yyuu.github.io/pythons to https://pyenv.github.io/pythons
|
||||||
|
* python-build: Upgrade OpenSSL from 1.0.2g to 1.0.2k (#850)
|
||||||
|
|
||||||
|
## 1.0.8
|
||||||
|
|
||||||
|
* pyenv: Fix fish subcommand completion (#831)
|
||||||
|
* python-build: Add Anaconda2/Anaconda3 4.3.0 (#824)
|
||||||
|
* python-build: Use CPython on GitHub as the source repository of CPython development versions (#836, #837)
|
||||||
|
* python-build: Fix checksum verification issue on the platform where OpenSSL isn't available (#840)
|
||||||
|
|
||||||
|
## 1.0.7
|
||||||
|
|
||||||
|
* python-build: Add CPython 3.5.3 (#811)
|
||||||
|
* python-build: Add CPython 3.4.6 (#812)
|
||||||
|
* python-build: Fix tar.gz checksum of CPython 3.6.0 (#793)
|
||||||
|
* python-build: Jython installer workaround (#800)
|
||||||
|
* python-build: Disable optimization (`-O0`) when `--debug` was specified (#808)
|
||||||
|
|
||||||
|
## 1.0.6
|
||||||
|
|
||||||
|
* python-build: Add CPython 3.6.0 (#787)
|
||||||
|
|
||||||
|
## 1.0.5
|
||||||
|
|
||||||
|
* python-build: Add CPython 2.7.13 (#782)
|
||||||
|
* python-build: Add CPython 3.6.0rc2 (#781)
|
||||||
|
* python-build: Add Anaconda 4.2.0 (#774)
|
||||||
|
* python-build: Add Anaconda3 4.2.0 (#765)
|
||||||
|
* python-build: Add IronPython 2.7.7 (#755)
|
||||||
|
|
||||||
|
## 1.0.4
|
||||||
|
|
||||||
|
* python-build: Add PyPy 5.6.0 (#751)
|
||||||
|
* python-build: Add PyPy3 3.5 nightlies (`pypy3.5-c-jit-latest` #737)
|
||||||
|
* python-build: Add Stackless 2.7.12 (#753)
|
||||||
|
* python-build: Add Stackless 2.7.11
|
||||||
|
* python-build: Add Stackless 2.7.10
|
||||||
|
* python-build: Add Pyston 0.6.0
|
||||||
|
* python-build: Add CPython 3.6.0b4 (#762)
|
||||||
|
|
||||||
|
## 1.0.3
|
||||||
|
|
||||||
|
* python-build: Add CPython 3.6.0b3 (#731, #744)
|
||||||
|
* python-build: Add PyPy3.3 5.5-alpha (#734, #736)
|
||||||
|
* python-build: Stop specifying `--enable-unicode=ucs4` on OS X (#257, #726)
|
||||||
|
* python-build: Fix 3.6-dev and add 3.7-dev (#729, #730)
|
||||||
|
* python-build: Add a patch for https://bugs.python.org/issue26664 (#725)
|
||||||
|
* python-build: Add Pyston 0.5.1 (#718)
|
||||||
|
* python-build: Add Stackless 3.4.2 (#720)
|
||||||
|
* python-build: Add IronPython 2.7.6.3 (#716)
|
||||||
|
* python-build: Add Stackless 2.7.9 (#714)
|
||||||
|
|
||||||
|
## 1.0.2
|
||||||
|
|
||||||
|
* python-build: Add CPython 3.6.0b1 (#699)
|
||||||
|
* python-build: Add anaconda[23] 4.1.1 (#701, #702)
|
||||||
|
* python-build: Add miniconda[23] 4.1.11 (#703, #704, #706)
|
||||||
|
* python-build: Remove `bin.orig` if exists to fix an issue with `--enable-framework` (#687, #700)
|
||||||
|
|
||||||
|
## 1.0.1
|
||||||
|
|
||||||
|
* python-build: Add CPython 3.6.0a4 (#673)
|
||||||
|
* python-build: Add PyPy2 5.4, 5.4.1 (#683, #684, #695, #697)
|
||||||
|
* python-build: Add PyPy Portable 5.4, 5.4.1 (#685, #686, #696)
|
||||||
|
* python-build: Make all HTTP source URLs to HTTPS (#680)
|
||||||
|
|
||||||
|
## 1.0.0
|
||||||
|
|
||||||
|
* pyenv: Import latest changes from rbenv as of Aug 15, 2016 (#669)
|
||||||
|
* pyenv: Add workaround for system python at `/bin/python` (#628)
|
||||||
|
* python-build: Import changes from ruby-build v20160602 (#668)
|
||||||
|
|
||||||
|
## 20160726
|
||||||
|
|
||||||
|
* python-build: pypy-5.3.1: Remove stray text (#648)
|
||||||
|
* python-build: Add CPython 3.6.0a3 (#657)
|
||||||
|
* python-build: Add anaconda[23]-4.1.0
|
||||||
|
* pyenv: Keep using `.tar.gz` archives if tar doesn't support `-J` (especially on BSD) (#654, #663)
|
||||||
|
* pyenv: Fixed conflict between pyenv-virtualenv's `rehash` hooks of `envs.bash`
|
||||||
|
* pyenv: Write help message of `sh-*` commands to stdout properly (#650, #651)
|
||||||
|
|
||||||
|
## 20160629
|
||||||
|
|
||||||
|
* python-build: Added CPython 2.7.12 (#645)
|
||||||
|
* python-build: Added PyPy 3.5.1 (#646)
|
||||||
|
* python-build: Added PyPy Portable 5.3.1
|
||||||
|
|
||||||
|
## 20160628
|
||||||
|
|
||||||
|
* python-build: Added PyPy3.3 5.2-alpha1 (#631)
|
||||||
|
* python-build: Added CPython 2.7.12rc1
|
||||||
|
* python-build: Added CPython 3.6.0a2 (#630)
|
||||||
|
* python-build: Added CPython 3.5.2 (#643)
|
||||||
|
* python-build: Added CPython 3.4.5 (#643)
|
||||||
|
* python-build: Added PyPy2 5.3 (#626)
|
||||||
|
* pyenv: Skip creating shims for system executables bundled with Anaconda rather than ignoring them in `pyenv-which` (#594, #595, #599)
|
||||||
|
* python-build: Configured GCC as a requirement to build CPython prior to 2.4.4 (#613)
|
||||||
|
* python-build: Use `aria2c` - ultra fast download utility if available (#534)
|
||||||
|
|
||||||
|
## 20160509
|
||||||
|
|
||||||
|
* python-build: Fixed wrong SHA256 of `pypy-5.1-linux_x86_64-portable.tar.bz2` (#586, #587)
|
||||||
|
* python-build: Added miniconda[23]-4.0.5
|
||||||
|
* python-build: Added PyPy (Portable) 5.1.1 (#591, #592, #593)
|
||||||
|
|
||||||
|
## 20160422
|
||||||
|
|
||||||
|
* python-build: Added PyPy 5.1 (#579)
|
||||||
|
* python-build: Added PyPy 5.1 Portable
|
||||||
|
* python-build: Added PyPy 5.0.1 (#558)
|
||||||
|
* python-build: Added PyPy 5.0.1 Portable
|
||||||
|
* python-build: Added PyPy 5.0 Portable
|
||||||
|
* python-build: Added anaconda[23]-4.0.0 (#572)
|
||||||
|
* python-build: Added Jython 2.7.1b3 (#557)
|
||||||
|
|
||||||
|
## 20160310
|
||||||
|
|
||||||
|
* python-build: Add PyPy-5.0.0 (#555)
|
||||||
|
* pyenv: Import recent changes from rbenv 1.0 (#549)
|
||||||
|
|
||||||
|
## 20160303
|
||||||
|
|
||||||
|
* python-build: Add anaconda[23]-2.5.0 (#543)
|
||||||
|
* python-build: Import recent changes from ruby-build 20160130
|
||||||
|
* python-build: Compile with `--enable-unicode=ucs4` by default for CPython (#257, #542)
|
||||||
|
* python-build: Switch download URL of Continuum products from HTTP to HTTPS (#543)
|
||||||
|
* python-build: Added pypy-dev special case in pyenv-install to use py27 (#547)
|
||||||
|
* python-build: Upgrade OpenSSL to 1.0.2g (#550)
|
||||||
|
|
||||||
|
## 20160202
|
||||||
|
|
||||||
|
* pyenv: Run rehash automatically after `conda install`
|
||||||
|
* python-build: Add CPython 3.4.4 (#511)
|
||||||
|
* python-build: Add anaconda[23]-2.4.1, miniconda[23]-3.19.0
|
||||||
|
* python-build: Fix broken build definitions of CPython/Stackless 3.2.x (#531)
|
||||||
|
|
||||||
|
### 20151222
|
||||||
|
|
||||||
|
* pyenv: Merge recent changes from rbenv as of 2015-12-14 (#504)
|
||||||
|
* python-build: Add a `OPENSSL_NO_SSL3` patch for CPython 2.6, 2.7, 3.0, 3.1, 3.2 and 3.3 series (#507, #511)
|
||||||
|
* python-build: Stopped using mirror at pyenv.github.io for CPython since http://www.python.org is on fast.ly
|
||||||
|
|
||||||
|
### 20151210
|
||||||
|
|
||||||
|
* pyenv: Add a default hook for Anaconda to look for original `$PATH` (#491)
|
||||||
|
* pyenv: Skip virtualenv aliases on `pyenv versions --skip-aliases` (pyenv/pyenv-virtualenv#126)
|
||||||
|
* python-build: Add CPython 2.7.11, 3.5.1 (#494, #498)
|
||||||
|
* python-build: Update OpenSSL to 1.0.1q (#496)
|
||||||
|
* python-build: Adding SSL patch to build 2.7.3 on Debian (#495)
|
||||||
|
|
||||||
|
### 20151124
|
||||||
|
|
||||||
|
* pyenv: Import recent changes from rbenv 5fb9c84e14c8123b2591d22e248f045c7f8d8a2c
|
||||||
|
* pyenv: List anaconda-style virtual environments as a version in pyenv (#471)
|
||||||
|
* python-build: Import recent changes from ruby-build v20151028
|
||||||
|
* python-build: Add PyPy 4.0.1 (#489)
|
||||||
|
* python-build: Add `miniconda*-3.18.3` (#477)
|
||||||
|
* python-build: Add CPython 2.7.11 RC1
|
||||||
|
|
||||||
|
### 20151105
|
||||||
|
|
||||||
|
* python-build: Add anaconda2-2.4.0 and anacondaa3-2.4.0
|
||||||
|
* python-build: Add Portable PyPy 4.0 (#472)
|
||||||
|
|
||||||
|
### 20151103
|
||||||
|
|
||||||
|
* python-build: Add PyPy 4.0.0 (#463)
|
||||||
|
* python-build: Add Jython 2.7.1b2
|
||||||
|
* python-build: Add warning about setuptools issues on CPython 3.0.1 on OS X (#456)
|
||||||
|
|
||||||
|
### 20151006
|
||||||
|
|
||||||
|
* pyenv: Different behaviour when invoking .py script through symlink (#379, #404)
|
||||||
|
* pyenv: Enabled Gitter on the project (#436, #444)
|
||||||
|
* python-build: Add Jython 2.7.1b1
|
||||||
|
* python-build: Install OpenSSL on OS X if no proper version is available (#429)
|
||||||
|
|
||||||
|
### 20150913
|
||||||
|
|
||||||
|
* python-build: Add CPython 3.5.0
|
||||||
|
* python-build: Remove CPython 3.5.0 release candidates
|
||||||
|
* python-build: Fixed anaconda3 repo's paths (#439)
|
||||||
|
* python-build: Add miniconda-3.16.0 and miniconda3-3.16.0 (#435)
|
||||||
|
|
||||||
|
### 20150901
|
||||||
|
|
||||||
|
* python-build: Add CPython 3.5.0 release candidates; 3.5.0rc1 and 3.5.0rc2
|
||||||
|
* python-build: Disabled `_FORTITY_SOURCE` to fix CPython >= 2.4, <= 2.4.3 builds (#422)
|
||||||
|
* python-build: Removed CPython 3.5.0 betas
|
||||||
|
* python-build: Add miniconda-3.10.1 and miniconda3-3.10.1 (#414)
|
||||||
|
* python-build: Add PyPy 2.6.1 (#433)
|
||||||
|
* python-build: Add PyPy-STM 2.3 and 2.5.1 (#428)
|
||||||
|
* python-build: Ignore user's site-packages on ensurepip/get-pip (#411)
|
||||||
|
* pyenv: Import recent changes from ruby-build v20150818
|
||||||
|
|
||||||
|
#### 20150719
|
||||||
|
|
||||||
|
* python-build: Add CPython `3.6-dev` (#413)
|
||||||
|
* python-build: Add Anaconda/Anaconda3 2.3.0
|
||||||
|
* python-build: Fix download URL of portable PyPy 2.6 (fixes #389)
|
||||||
|
* python-build: Use custom `MACOSX_DEPLOYMENT_TARGET` if defined (#312)
|
||||||
|
* python-build: Use original CPython repository instead of mirror at bitbucket.org as the source of `*-dev` versions (#409)
|
||||||
|
* python-build: Pin pip version to 1.5.6 for python 3.1.5 (#351)
|
||||||
|
|
||||||
|
#### 20150601
|
||||||
|
|
||||||
|
* python-build: Add PyPy 2.6.0
|
||||||
|
* python-build: Add PyPy 2.5.1 portable
|
||||||
|
* python-build: Add CPython 3.5.0 beta releases; 3.5.0b1 and 3.5.0b2
|
||||||
|
* python-build: Removed CPython 3.5.0 alpha releases
|
||||||
|
* python-build: Fix inverted condition for `--altinstall` of ensurepip (#255)
|
||||||
|
* python-build: Skip installing `setuptools` by `ez_setup.py` explicitly (fixes #381)
|
||||||
|
* python-build: Import changes from ruby-build v20150519
|
||||||
|
|
||||||
|
#### 20150524
|
||||||
|
|
||||||
|
* pyenv: Improve `pyenv version`, if there is one missing (#290)
|
||||||
|
* pyenv: Improve pip-rehash to handle versions in command, like `pip2` and `pip3.4` (#368)
|
||||||
|
* python-build: Add CPython release; 2.7.10 (#380)
|
||||||
|
* python-build: Add Miniconda/Miniconda3 3.9.1 and Anaconda/Anaconda3 2.2.0 (#375, #376)
|
||||||
|
|
||||||
|
#### 20150504
|
||||||
|
|
||||||
|
* python-build: Add Jython 2.7.0
|
||||||
|
* python-build: Add CPython alpha release; 3.5.0a4
|
||||||
|
* python-build: Add CPython 3.1, 3.1.1, and 3.1.2
|
||||||
|
* python-build: Fix pip version to 1.5.6 for CPython 3.1.x (#351)
|
||||||
|
|
||||||
|
#### 20150326
|
||||||
|
|
||||||
|
* python-build: Add Portable PyPy binaries from https://github.com/squeaky-pl/portable-pypy (#329)
|
||||||
|
* python-build: Add CPython alpha release; 3.5.0a2 (#328)
|
||||||
|
* python-build: Add pypy-2.5.1 (fixes #338)
|
||||||
|
* pyenv: Import recent changes from rbenv 4d72eefffc548081f6eee2e54d3b9116b9f9ee8e
|
||||||
|
|
||||||
|
#### 20150226
|
||||||
|
|
||||||
|
* python-build: Add CPython release; 3.4.3 (#323)
|
||||||
|
* python-build: Add CPython alpha release; 3.5.0a1 (#324)
|
||||||
|
* python-build: Add Miniconda/Miniconda3 3.8.3 (#318)
|
||||||
|
|
||||||
|
#### 20150204
|
||||||
|
|
||||||
|
* python-build: Add PyPy 2.5.0 release (#311)
|
||||||
|
* python-build: Add note about `--enable-shared` and RPATH (#217)
|
||||||
|
* python-build: Fix regression of `PYTHON_MAKE_INSTALL_TARGET` and add test (#255)
|
||||||
|
* python-build: Symlink `pythonX.Y-config` to `python-config` if `python-config` is missing (#296)
|
||||||
|
* python-build: Latest `pip` can't be installed into `3.0.1` (#309)
|
||||||
|
|
||||||
|
#### 20150124
|
||||||
|
|
||||||
|
* python-build: Import recent changes from ruby-build v20150112
|
||||||
|
* python-build: Prevent adding `/Library/Python/X.X/site-packages` to `sys.path` when `--enable-framework` is enabled on OS X. Thanks @s1341 (#292)
|
||||||
|
* python-build: Add new IronPython release; 2.7.5
|
||||||
|
|
||||||
|
#### 20141211
|
||||||
|
|
||||||
|
* pyenv: Add built-in `pip-rehash` feature. You don't need to install [pyenv-pip-rehash](https://github.com/pyenv/pyenv-pip-rehash) anymore.
|
||||||
|
* python-build: Add new CPython release; 2.7.9 (#284)
|
||||||
|
* python-build: Add new PyPy releases; pypy3-2.4.0, pypy3-2.4.0-src (#277)
|
||||||
|
* python-build: Add build definitions of PyPy nightly build
|
||||||
|
|
||||||
|
#### 20141127
|
||||||
|
|
||||||
|
* python-build: Add new CPython release candidates; 2.7.9rc1 (#276)
|
||||||
|
|
||||||
|
#### 20141118
|
||||||
|
|
||||||
|
* python-build: Fix broken `setup_builtin_patches` (#270)
|
||||||
|
* python-build: Add a patch to allow building 2.6.9 on OS X 10.9 with `--enable-framework` (#269, #271)
|
||||||
|
|
||||||
|
#### 20141106
|
||||||
|
|
||||||
|
* pyenv: Optimize pyenv-which. Thanks to @blueyed (#129)
|
||||||
|
* python-build: Add Miniconda/Miniconda3 3.7.0 and Anaconda/Anaconda3 2.1.0 (#260)
|
||||||
|
* python-build: Use HTTPS for mirror download URLs (#262)
|
||||||
|
* python-build: Set `rpath` for `--shared` build of PyPy (#244)
|
||||||
|
* python-build: Support `make altinstall` when building CPython/Stackless (#255)
|
||||||
|
* python-build: Import recent changes from ruby-build v20141028 (#265)
|
||||||
|
|
||||||
|
#### 20141012
|
||||||
|
|
||||||
|
* python-build: Add new CPython releases; 3.2.6, 3.3.6 (#253)
|
||||||
|
|
||||||
|
#### 20141011
|
||||||
|
|
||||||
|
* python-build: Fix build error of Stackless 3.3.5 on OS X (#250)
|
||||||
|
* python-build: Add new Stackless releases; stackless-2.7.7, stackless-2.7.8, stackless-3.4.1 (#252)
|
||||||
|
|
||||||
|
#### 20141008
|
||||||
|
|
||||||
|
* python-build: Add new CPython release; 3.4.2 (#251)
|
||||||
|
* python-build: Add new CPython release candidates; 3.2.6rc1, 3.3.6rc1 (#248)
|
||||||
|
|
||||||
|
#### 20140924
|
||||||
|
|
||||||
|
* pyenv: Fix an unintended behavior when user does not have write permission on `$PYENV_ROOT` (#230)
|
||||||
|
* pyenv: Fix a zsh completion issue (#232)
|
||||||
|
* python-build: Add new PyPy release; pypy-2.4.0, pypy-2.4.0-src (#241)
|
||||||
|
|
||||||
|
#### 20140825
|
||||||
|
|
||||||
|
* pyenv: Fix zsh completion with multiple words (#215)
|
||||||
|
* python-build: Display the package name of `hg` as `mercurial` in message (#212)
|
||||||
|
* python-build: Unset `PIP_REQUIRE_VENV` during build (#216)
|
||||||
|
* python-build: Set `MACOSX_DEPLOYMENT_TARGET` from the product version of OS X (#219, #220)
|
||||||
|
* python-build: Add new Jython release; jython2.7-beta3 (#223)
|
||||||
|
|
||||||
|
#### 20140705
|
||||||
|
|
||||||
|
* python-build: Add new CPython release; 2.7.8 (#201)
|
||||||
|
* python-build: Support `SETUPTOOLS_VERSION` and `PIP_VERSION` to allow installing specific version of setuptools/pip (#202)
|
||||||
|
|
||||||
|
#### 20140628
|
||||||
|
|
||||||
|
* python-build: Add new Anaconda releases; anaconda-2.0.1, anaconda3-2.0.1 (#195)
|
||||||
|
* python-build: Add new PyPy3 release; pypy3-2.3.1 (#198)
|
||||||
|
* python-build: Add ancient CPython releases; 2.1.3, 2.2.3, 2.3.7 (#199)
|
||||||
|
* python-build: Use `ez_setup.py` and `get-pip.py` instead of installing them from tarballs (#194)
|
||||||
|
* python-build: Add support for command-line options to `ez_setup.py` and `get-pip.py` (#200)
|
||||||
|
|
||||||
|
#### 20140615
|
||||||
|
|
||||||
|
* python-build: Update default setuptools version (4.0.1 -> 5.0) (#190)
|
||||||
|
|
||||||
|
#### 20140614
|
||||||
|
|
||||||
|
* pyenv: Change versioning schema (`v0.4.0-YYYYMMDD` -> `vYYYYMMDD`)
|
||||||
|
* python-build: Add new PyPy release; pypy-2.3.1, pypy-2.3.1-src
|
||||||
|
* python-build: Create symlinks for executables with version suffix (#182)
|
||||||
|
* python-build: Use SHA2 as default digest algorithm to verify downloaded archives
|
||||||
|
* python-build: Update default setuptools version (4.0 -> 4.0.1) (#183)
|
||||||
|
* python-build: Import recent changes from ruby-build v20140524 (#184)
|
||||||
|
|
||||||
|
#### 0.4.0-20140602
|
||||||
|
|
||||||
|
* python-build: Add new Anaconda/Anaconda3 releases; anaconda-2.0.0, anaconda3-2.0.0 (#179)
|
||||||
|
* python-build: Add new CPython release; 2.7.7 (#180)
|
||||||
|
* python-build: Update default setuptools version (3.6 -> 4.0) (#181)
|
||||||
|
* python-build: Respect environment variables of `CPPFLAGS` and `LDFLAGS` (#168)
|
||||||
|
* python-build: Support for xz-compressed Python tarballs (#177)
|
||||||
|
|
||||||
|
#### 0.4.0-20140520
|
||||||
|
|
||||||
|
* python-build: Add new CPython release; 3.4.1 (#170, #171)
|
||||||
|
* python-build: Update default pip version (1.5.5 -> 1.5.6) (#169)
|
||||||
|
|
||||||
|
#### 0.4.0-20140516
|
||||||
|
|
||||||
|
* pyenv: Prefer gawk over awk if both are available.
|
||||||
|
* python-build: Add new PyPy release; pypy-2.3, pypy-2.3-src (#162)
|
||||||
|
* python-build: Add new Anaconda release; anaconda-1.9.2 (#155)
|
||||||
|
* python-build: Add new Miniconda releases; miniconda-3.3.0, minoconda-3.4.2, miniconda3-3.3.0, miniconda3-3.4.2
|
||||||
|
* python-build: Add new Stackless releases; stackless-2.7.3, stackless-2.7.4, stackless-2.7.5, stackless-2.7.6, stackless-3.2.5, stackless-3.3.5 (#164)
|
||||||
|
* python-build: Add IronPython versions (setuptools and pip will work); ironpython-2.7.4, ironpython-dev
|
||||||
|
* python-build: Add new Jython beta release; jython-2.7-beta2
|
||||||
|
* python-build: Update default setuptools version (3.4.1 -> 3.6)
|
||||||
|
* python-build: Update default pip version (1.5.4 -> 1.5.5)
|
||||||
|
* python-build: Update GNU Readline (6.2 -> 6.3)
|
||||||
|
* python-build: Import recent changes from ruby-build v20140420
|
||||||
|
|
||||||
|
#### 0.4.0-20140404
|
||||||
|
|
||||||
|
* pyenv: Reads only the first word from version file. This is as same behavior as rbenv.
|
||||||
|
* python-build: Fix build of Tkinter with Tcl/Tk 8.6 (#131)
|
||||||
|
* python-build: Fix build problem with Readline 6.3 (#126, #131, #149, #152)
|
||||||
|
* python-build: Do not exit with errors even if some of modules are absent (#131)
|
||||||
|
* python-build: MacOSX was misspelled as MaxOSX in `anaconda_architecture` (#136)
|
||||||
|
* python-build: Use default `cc` as the C Compiler to build CPython (#148, #150)
|
||||||
|
* python-build: Display value from `pypy_architecture` and `anaconda_architecture` on errors (pyenv/pyenv-virtualenv#18)
|
||||||
|
* python-build: Remove old development version; 2.6-dev
|
||||||
|
* python-build: Update default setuptools version (3.3 -> 3.4.1)
|
||||||
|
|
||||||
|
#### 0.4.0-20140317
|
||||||
|
|
||||||
|
* python-build: Add new CPython releases; 3.4.0 (#133)
|
||||||
|
* python-build: Add new Anaconda releases; anaconda-1.9.0, anaconda-1.9.1
|
||||||
|
* python-build: Add new Miniconda releases; miniconda-3.0.4, miniconda-3.0.5, miniconda3-3.0.4, miniconda3-3.0.5
|
||||||
|
* python-build: Update default setuptools version (3.1 -> 3.3)
|
||||||
|
|
||||||
|
#### 0.4.0-20140311
|
||||||
|
|
||||||
|
* python-build: Add new CPython releases; 3.3.5 (#127)
|
||||||
|
* python-build: Add new CPython release candidates; 3.4.0rc1, 3.4.0rc2, 3.4.0rc3
|
||||||
|
* python-build: Update default setuptools version (2.2 -> 3.1)
|
||||||
|
* python-build: Update default pip version (1.5.2 -> 1.5.4)
|
||||||
|
* python-build: Import recent changes from ruby-build v20140225
|
||||||
|
|
||||||
|
#### 0.4.0-20140211
|
||||||
|
|
||||||
|
* python-build: Add new CPython release candidates; 3.3.4, 3.4.0b3
|
||||||
|
* python-build: Add [Anaconda](https://store.continuum.io/cshop/anaconda/) and [Miniconda](http://repo.continuum.io/miniconda/) binary distributions
|
||||||
|
* python-build: Display error if the wget does not support Server Name Indication (SNI) to avoid SSL verification error when downloading from https://pypi.python.org. (#60)
|
||||||
|
* python-build: Update default setuptools version (2.1 -> 2.2)
|
||||||
|
* python-build: Update default pip version (1.5.1 -> 1.5.2)
|
||||||
|
* python-build: Import recent changes from ruby-build v20140204
|
||||||
|
|
||||||
|
#### 0.4.0-20140123
|
||||||
|
|
||||||
|
* pyenv: Always append the directory at the top of the `$PATH` to return proper value for `sys.executable` (#98)
|
||||||
|
* pyenv: Unset `GREP_OPTIONS` to avoid issues of conflicting options (#101)
|
||||||
|
* python-build: Install `pip` with using `ensurepip` if available
|
||||||
|
* python-build: Add support for framework installation (`--enable-framework`) of CPython (#55, #99)
|
||||||
|
* python-build: Import recent changes from ruby-build v20140110.1
|
||||||
|
* python-build: Import `bats` tests from ruby-build v20140110.1
|
||||||
|
|
||||||
|
#### 0.4.0-20140110.1
|
||||||
|
|
||||||
|
* python-build: Fix build error of CPython 2.x on the platform where the `gcc` is llvm-gcc.
|
||||||
|
|
||||||
|
#### 0.4.0-20140110
|
||||||
|
|
||||||
|
* pyenv: Reliably detect parent shell in `pyenv init` (#93)
|
||||||
|
* pyenv: Import recent changes from rbenv 0.4.0
|
||||||
|
* pyenv: Import `bats` tests from rbenv 0.4.0
|
||||||
|
* python-build: Add new CPython releases candidates; 3.4.0b2
|
||||||
|
* python-build: Add ruby-build style patching feature (#91)
|
||||||
|
* python-build: Set `RPATH` if `--enable-shared` was given (#65, #66, 82)
|
||||||
|
* python-build: Update default setuptools version (2.0 -> 2.1)
|
||||||
|
* python-build: Update default pip version (1.4.1 -> 1.5)
|
||||||
|
* python-build: Activate friendly CPython during build if the one is not activated (8fa6b4a1847851919ad7857c6c42ed809a4d277b)
|
||||||
|
* python-build: Fix broken install.sh
|
||||||
|
* python-build: Import recent changes from ruby-build v20131225.1
|
||||||
|
* version-ext-compat: Removed from default plugin. Please use [pyenv-version-ext](https://github.com/pyenv/pyenv-version-ext) instead.
|
||||||
|
|
||||||
|
#### 0.4.0-20131217
|
||||||
|
|
||||||
|
* python-build: Fix broken build of CPython 3.3+ on Darwin
|
||||||
|
* python-build: Not build GNU Readline uselessly on Darwin
|
||||||
|
|
||||||
|
#### 0.4.0-20131216
|
||||||
|
|
||||||
|
* python-build: Add new CPython releases; 3.3.3 (#80)
|
||||||
|
* python-build: Add new CPython releases candidates; 3.4.0b1
|
||||||
|
* python-build: Add new PyPy releases; pypy-2.2.1, pypy-2.2.1-src
|
||||||
|
* python-build: Update default setuptools version (1.3.2 -> 2.0)
|
||||||
|
* python-build: Imported recent changes from ruby-build v20131211
|
||||||
|
* pyenv: Fix pyenv-prefix to trim "/bin" in `pyenv prefix system` (#88)
|
||||||
|
|
||||||
|
#### 0.4.0-20131116
|
||||||
|
|
||||||
|
* python-build: Add new CPython releases; 2.6.9, 2.7.6 (#76)
|
||||||
|
* python-build: Add new CPython release candidates; 3.3.3-rc1, 3.3.3-rc2
|
||||||
|
* python-build: Add new PyPy releases; pypy-2.2, pypy-2.2-src (#77)
|
||||||
|
* python-build: Update default setuptools version (1.1.6 -> 1.3.2)
|
||||||
|
* python-build: Imported recent changes from ruby-build v20131030
|
||||||
|
|
||||||
|
#### 0.4.0-20131023
|
||||||
|
|
||||||
|
* pyenv: Improved [fish shell](http://fishshell.com/) support
|
||||||
|
* python-build: Add new PyPy releases; pypy-2.1, pypy-2.1-src, pypy3-2.1-beta1, pypy3-2.1-beta1-src
|
||||||
|
* python-build: Add ancient versions; 2.4, 2.4.1, 2.4.3, 2.4.4 and 2.4.5
|
||||||
|
* python-build: Add alpha releases; 3.4.0a2, 3.4.0a3, 3.4.0a4
|
||||||
|
* python-build: Update default pip version (1.4 -> 1.4.1)
|
||||||
|
* python-build: Update default setuptools version (0.9.7 -> 1.1.6)
|
||||||
|
|
||||||
|
#### 0.4.0-20130726
|
||||||
|
|
||||||
|
* pyenv: Fix minor issue of variable scope in `pyenv versions`
|
||||||
|
* python-build: Update base version to ruby-build v20130628
|
||||||
|
* python-build: Use brew managed OpenSSL and GNU Readline if they are available
|
||||||
|
* python-build: Fix build of CPython 3.3+ on OS X (#29)
|
||||||
|
* python-build: Fix build of native modules of CPython 2.5 on OS X (#33)
|
||||||
|
* python-build: Fix build of CPython 2.6+ on openSUSE (#36)
|
||||||
|
* python-build: Add ancient versions; 2.4.2 and 2.4.6. The build might be broken. (#37)
|
||||||
|
* python-build: Update default pip version (1.3.1 -> 1.4)
|
||||||
|
* python-build: Update default setuptools version (0.7.2 -> 0.9.7)
|
||||||
|
|
||||||
|
#### 0.4.0-20130613
|
||||||
|
|
||||||
|
* pyenv: Changed versioning schema. There are two parts; the former is the base rbenv version, and the latter is the date of release.
|
||||||
|
* python-build: Add `--debug` option to build CPython with debug symbols. (#11)
|
||||||
|
* python-build: Add new CPython versions: 2.7.4, 2.7.5, 3.2.4, 3.2.5, 3.3.1, 3.3.2 (#12, #17)
|
||||||
|
* python-build: Add `svnversion` patch for old CPython versions (#14)
|
||||||
|
* python-build: Enable mirror by default for faster download (#20)
|
||||||
|
* python-build: Add `OPENSSL_NO_SSL2` patch for old CPython versions (#22)
|
||||||
|
* python-build: Install GNU Readline on Darwin if the system one is broken (#23)
|
||||||
|
* python-build: Bundle patches in `${PYTHON_BUILD_ROOT}/share/python-build/patches` and improve patching mechanism (`apply_patches`).
|
||||||
|
* python-build: Verify native extensions after building. (`build_package_verify_py*`)
|
||||||
|
* python-build: Add `install_hg` to install package from Mercurial repository
|
||||||
|
* python-build: Support building Jython and PyPy.
|
||||||
|
* python-build: Add new CPython development versions: 2.6-dev, 2.7-dev, 3.1-dev, 3.2-dev, 3.3-dev, 3.4-dev
|
||||||
|
* python-build: Add new Jython development versions: jython-2.5.4-rc1, jython-2.5-dev, jython-2.7-beta1, jython-dev
|
||||||
|
* python-build: Add new PyPy versions: pypy-1.5{,-src}, pypy-1.6, pypy-1.7, pypy-2.0{,-src}, pypy-2.0.1{,-src}, pypy-2.0.2{,-src}
|
||||||
|
* python-build: Add new PyPy development versions: pypy-1.7-dev, pypy-1.8-dev, pypy-1.9-dev, pypy-2.0-dev, pypy-dev, pypy-py3k-dev
|
||||||
|
* python-build: Add new Stackless development versions: stackless-2.7-dev, stackless-3.2-dev, stackless-3.3-dev, stackless-dev
|
||||||
|
* python-build: Update default pip version (1.2.1 -> 1.3.1)
|
||||||
|
* python-build: Update default setuptools version (0.6.34 (distribute) -> 0.7.2 ([new setuptools](https://bitbucket.org/pypa/setuptools)))
|
||||||
|
|
||||||
|
#### 0.2.0 (February 18, 2013)
|
||||||
|
|
||||||
|
* Import changes from rbenv 0.4.0.
|
||||||
|
|
||||||
|
#### 0.1.2 (October 23, 2012)
|
||||||
|
|
||||||
|
* Add push/pop for version stack management.
|
||||||
|
* Support multiple versions via environment variable.
|
||||||
|
* Now GCC is not a requirement to build CPython and Stackless.
|
||||||
|
|
||||||
|
#### 0.1.1 (September 3, 2012)
|
||||||
|
|
||||||
|
* Support multiple versions of Python at a time.
|
||||||
|
|
||||||
|
#### 0.1.0 (August 31, 2012)
|
||||||
|
|
||||||
|
* Initial public release.
|
||||||
278
COMMANDS.md
Normal file
278
COMMANDS.md
Normal file
@@ -0,0 +1,278 @@
|
|||||||
|
# Command Reference
|
||||||
|
|
||||||
|
Like `git`, the `pyenv` command delegates to subcommands based on its
|
||||||
|
first argument.
|
||||||
|
|
||||||
|
The most common subcommands are:
|
||||||
|
|
||||||
|
* [`pyenv commands`](#pyenv-commands)
|
||||||
|
* [`pyenv local`](#pyenv-local)
|
||||||
|
* [`pyenv global`](#pyenv-global)
|
||||||
|
* [`pyenv shell`](#pyenv-shell)
|
||||||
|
* [`pyenv install`](#pyenv-install)
|
||||||
|
* [`pyenv uninstall`](#pyenv-uninstall)
|
||||||
|
* [`pyenv rehash`](#pyenv-rehash)
|
||||||
|
* [`pyenv version`](#pyenv-version)
|
||||||
|
* [`pyenv versions`](#pyenv-versions)
|
||||||
|
* [`pyenv which`](#pyenv-which)
|
||||||
|
* [`pyenv whence`](#pyenv-whence)
|
||||||
|
|
||||||
|
|
||||||
|
## `pyenv commands`
|
||||||
|
|
||||||
|
Lists all available pyenv commands.
|
||||||
|
|
||||||
|
|
||||||
|
## `pyenv local`
|
||||||
|
|
||||||
|
Sets a local application-specific Python version by writing the version
|
||||||
|
name to a `.python-version` file in the current directory. This version
|
||||||
|
overrides the global version, and can be overridden itself by setting
|
||||||
|
the `PYENV_VERSION` environment variable or with the `pyenv shell`
|
||||||
|
command.
|
||||||
|
|
||||||
|
$ pyenv local 2.7.6
|
||||||
|
|
||||||
|
When run without a version number, `pyenv local` reports the currently
|
||||||
|
configured local version. You can also unset the local version:
|
||||||
|
|
||||||
|
$ pyenv local --unset
|
||||||
|
|
||||||
|
Previous versions of pyenv stored local version specifications in a
|
||||||
|
file named `.pyenv-version`. For backwards compatibility, pyenv will
|
||||||
|
read a local version specified in an `.pyenv-version` file, but a
|
||||||
|
`.python-version` file in the same directory will take precedence.
|
||||||
|
|
||||||
|
|
||||||
|
### `pyenv local` (advanced)
|
||||||
|
|
||||||
|
You can specify multiple versions as local Python at once.
|
||||||
|
|
||||||
|
Let's say if you have two versions of 2.7.6 and 3.3.3. If you prefer 2.7.6 over 3.3.3,
|
||||||
|
|
||||||
|
$ pyenv local 2.7.6 3.3.3
|
||||||
|
$ pyenv versions
|
||||||
|
system
|
||||||
|
* 2.7.6 (set by /Users/yyuu/path/to/project/.python-version)
|
||||||
|
* 3.3.3 (set by /Users/yyuu/path/to/project/.python-version)
|
||||||
|
$ python --version
|
||||||
|
Python 2.7.6
|
||||||
|
$ python2.7 --version
|
||||||
|
Python 2.7.6
|
||||||
|
$ python3.3 --version
|
||||||
|
Python 3.3.3
|
||||||
|
|
||||||
|
or, if you prefer 3.3.3 over 2.7.6,
|
||||||
|
|
||||||
|
$ pyenv local 3.3.3 2.7.6
|
||||||
|
$ pyenv versions
|
||||||
|
system
|
||||||
|
* 2.7.6 (set by /Users/yyuu/path/to/project/.python-version)
|
||||||
|
* 3.3.3 (set by /Users/yyuu/path/to/project/.python-version)
|
||||||
|
venv27
|
||||||
|
$ python --version
|
||||||
|
Python 3.3.3
|
||||||
|
$ python2.7 --version
|
||||||
|
Python 2.7.6
|
||||||
|
$ python3.3 --version
|
||||||
|
Python 3.3.3
|
||||||
|
|
||||||
|
|
||||||
|
## `pyenv global`
|
||||||
|
|
||||||
|
Sets the global version of Python to be used in all shells by writing
|
||||||
|
the version name to the `~/.pyenv/version` file. This version can be
|
||||||
|
overridden by an application-specific `.python-version` file, or by
|
||||||
|
setting the `PYENV_VERSION` environment variable.
|
||||||
|
|
||||||
|
$ pyenv global 2.7.6
|
||||||
|
|
||||||
|
The special version name `system` tells pyenv to use the system Python
|
||||||
|
(detected by searching your `$PATH`).
|
||||||
|
|
||||||
|
When run without a version number, `pyenv global` reports the
|
||||||
|
currently configured global version.
|
||||||
|
|
||||||
|
|
||||||
|
### `pyenv global` (advanced)
|
||||||
|
|
||||||
|
You can specify multiple versions as global Python at once.
|
||||||
|
|
||||||
|
Let's say if you have two versions of 2.7.6 and 3.3.3. If you prefer 2.7.6 over 3.3.3,
|
||||||
|
|
||||||
|
$ pyenv global 2.7.6 3.3.3
|
||||||
|
$ pyenv versions
|
||||||
|
system
|
||||||
|
* 2.7.6 (set by /Users/yyuu/.pyenv/version)
|
||||||
|
* 3.3.3 (set by /Users/yyuu/.pyenv/version)
|
||||||
|
$ python --version
|
||||||
|
Python 2.7.6
|
||||||
|
$ python2.7 --version
|
||||||
|
Python 2.7.6
|
||||||
|
$ python3.3 --version
|
||||||
|
Python 3.3.3
|
||||||
|
|
||||||
|
or, if you prefer 3.3.3 over 2.7.6,
|
||||||
|
|
||||||
|
$ pyenv global 3.3.3 2.7.6
|
||||||
|
$ pyenv versions
|
||||||
|
system
|
||||||
|
* 2.7.6 (set by /Users/yyuu/.pyenv/version)
|
||||||
|
* 3.3.3 (set by /Users/yyuu/.pyenv/version)
|
||||||
|
venv27
|
||||||
|
$ python --version
|
||||||
|
Python 3.3.3
|
||||||
|
$ python2.7 --version
|
||||||
|
Python 2.7.6
|
||||||
|
$ python3.3 --version
|
||||||
|
Python 3.3.3
|
||||||
|
|
||||||
|
|
||||||
|
## `pyenv shell`
|
||||||
|
|
||||||
|
Sets a shell-specific Python version by setting the `PYENV_VERSION`
|
||||||
|
environment variable in your shell. This version overrides
|
||||||
|
application-specific versions and the global version.
|
||||||
|
|
||||||
|
$ pyenv shell pypy-2.2.1
|
||||||
|
|
||||||
|
When run without a version number, `pyenv shell` reports the current
|
||||||
|
value of `PYENV_VERSION`. You can also unset the shell version:
|
||||||
|
|
||||||
|
$ pyenv shell --unset
|
||||||
|
|
||||||
|
Note that you'll need pyenv's shell integration enabled (step 3 of
|
||||||
|
the installation instructions) in order to use this command. If you
|
||||||
|
prefer not to use shell integration, you may simply set the
|
||||||
|
`PYENV_VERSION` variable yourself:
|
||||||
|
|
||||||
|
$ export PYENV_VERSION=pypy-2.2.1
|
||||||
|
|
||||||
|
|
||||||
|
### `pyenv shell` (advanced)
|
||||||
|
|
||||||
|
You can specify multiple versions via `PYENV_VERSION` at once.
|
||||||
|
|
||||||
|
Let's say if you have two versions of 2.7.6 and 3.3.3. If you prefer 2.7.6 over 3.3.3,
|
||||||
|
|
||||||
|
$ pyenv shell 2.7.6 3.3.3
|
||||||
|
$ pyenv versions
|
||||||
|
system
|
||||||
|
* 2.7.6 (set by PYENV_VERSION environment variable)
|
||||||
|
* 3.3.3 (set by PYENV_VERSION environment variable)
|
||||||
|
$ python --version
|
||||||
|
Python 2.7.6
|
||||||
|
$ python2.7 --version
|
||||||
|
Python 2.7.6
|
||||||
|
$ python3.3 --version
|
||||||
|
Python 3.3.3
|
||||||
|
|
||||||
|
or, if you prefer 3.3.3 over 2.7.6,
|
||||||
|
|
||||||
|
$ pyenv shell 3.3.3 2.7.6
|
||||||
|
$ pyenv versions
|
||||||
|
system
|
||||||
|
* 2.7.6 (set by PYENV_VERSION environment variable)
|
||||||
|
* 3.3.3 (set by PYENV_VERSION environment variable)
|
||||||
|
venv27
|
||||||
|
$ python --version
|
||||||
|
Python 3.3.3
|
||||||
|
$ python2.7 --version
|
||||||
|
Python 2.7.6
|
||||||
|
$ python3.3 --version
|
||||||
|
Python 3.3.3
|
||||||
|
|
||||||
|
|
||||||
|
## `pyenv install`
|
||||||
|
|
||||||
|
Install a Python version (using [`python-build`](https://github.com/pyenv/pyenv/tree/master/plugins/python-build)).
|
||||||
|
|
||||||
|
Usage: pyenv install [-f] [-kvp] <version>
|
||||||
|
pyenv install [-f] [-kvp] <definition-file>
|
||||||
|
pyenv install -l|--list
|
||||||
|
|
||||||
|
-l/--list List all available versions
|
||||||
|
-f/--force Install even if the version appears to be installed already
|
||||||
|
-s/--skip-existing Skip the installation if the version appears to be installed already
|
||||||
|
|
||||||
|
python-build options:
|
||||||
|
|
||||||
|
-k/--keep Keep source tree in $PYENV_BUILD_ROOT after installation
|
||||||
|
(defaults to $PYENV_ROOT/sources)
|
||||||
|
-v/--verbose Verbose mode: print compilation status to stdout
|
||||||
|
-p/--patch Apply a patch from stdin before building
|
||||||
|
-g/--debug Build a debug version
|
||||||
|
|
||||||
|
To list the all available versions of Python, including Anaconda, Jython, pypy, and stackless, use:
|
||||||
|
|
||||||
|
$ pyenv install --list
|
||||||
|
|
||||||
|
Then install the desired versions:
|
||||||
|
|
||||||
|
$ pyenv install 2.7.6
|
||||||
|
$ pyenv install 2.6.8
|
||||||
|
$ pyenv versions
|
||||||
|
system
|
||||||
|
2.6.8
|
||||||
|
* 2.7.6 (set by /home/yyuu/.pyenv/version)
|
||||||
|
|
||||||
|
## `pyenv uninstall`
|
||||||
|
|
||||||
|
Uninstall a specific Python version.
|
||||||
|
|
||||||
|
Usage: pyenv uninstall [-f|--force] <version>
|
||||||
|
|
||||||
|
-f Attempt to remove the specified version without prompting
|
||||||
|
for confirmation. If the version does not exist, do not
|
||||||
|
display an error message.
|
||||||
|
|
||||||
|
|
||||||
|
## `pyenv rehash`
|
||||||
|
|
||||||
|
Installs shims for all Python binaries known to pyenv (i.e.,
|
||||||
|
`~/.pyenv/versions/*/bin/*`). Run this command after you install a new
|
||||||
|
version of Python, or install a package that provides binaries.
|
||||||
|
|
||||||
|
$ pyenv rehash
|
||||||
|
|
||||||
|
|
||||||
|
## `pyenv version`
|
||||||
|
|
||||||
|
Displays the currently active Python version, along with information on
|
||||||
|
how it was set.
|
||||||
|
|
||||||
|
$ pyenv version
|
||||||
|
2.7.6 (set by /home/yyuu/.pyenv/version)
|
||||||
|
|
||||||
|
|
||||||
|
## `pyenv versions`
|
||||||
|
|
||||||
|
Lists all Python versions known to pyenv, and shows an asterisk next to
|
||||||
|
the currently active version.
|
||||||
|
|
||||||
|
$ pyenv versions
|
||||||
|
2.5.6
|
||||||
|
2.6.8
|
||||||
|
* 2.7.6 (set by /home/yyuu/.pyenv/version)
|
||||||
|
3.3.3
|
||||||
|
jython-2.5.3
|
||||||
|
pypy-2.2.1
|
||||||
|
|
||||||
|
|
||||||
|
## `pyenv which`
|
||||||
|
|
||||||
|
Displays the full path to the executable that pyenv will invoke when
|
||||||
|
you run the given command.
|
||||||
|
|
||||||
|
$ pyenv which python3.3
|
||||||
|
/home/yyuu/.pyenv/versions/3.3.3/bin/python3.3
|
||||||
|
|
||||||
|
|
||||||
|
## `pyenv whence`
|
||||||
|
|
||||||
|
Lists all Python versions with the given command installed.
|
||||||
|
|
||||||
|
$ pyenv whence 2to3
|
||||||
|
2.6.8
|
||||||
|
2.7.6
|
||||||
|
3.3.3
|
||||||
1
LICENSE
1
LICENSE
@@ -1,3 +1,4 @@
|
|||||||
|
Copyright (c) 2013 Yamashita, Yuu
|
||||||
Copyright (c) 2013 Sam Stephenson
|
Copyright (c) 2013 Sam Stephenson
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
|||||||
12
Makefile
Normal file
12
Makefile
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
.PHONY: test
|
||||||
|
|
||||||
|
# Do not pass in user flags to build tests.
|
||||||
|
unexport PYTHON_CFLAGS
|
||||||
|
unexport PYTHON_CONFIGURE_OPTS
|
||||||
|
|
||||||
|
test: bats
|
||||||
|
PATH="./bats/bin:$$PATH" test/run
|
||||||
|
cd plugins/python-build && $(PWD)/bats/bin/bats $${CI:+--tap} test
|
||||||
|
|
||||||
|
bats:
|
||||||
|
git clone --depth 1 https://github.com/sstephenson/bats.git
|
||||||
597
README.md
597
README.md
@@ -1,74 +1,75 @@
|
|||||||
# Groom your app’s Ruby environment with rbenv.
|
# Simple Python Version Management: pyenv
|
||||||
|
|
||||||
Use rbenv to pick a Ruby version for your application and guarantee
|
[](https://gitter.im/yyuu/pyenv?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||||
that your development environment matches production. Put rbenv to work
|
|
||||||
with [Bundler](http://bundler.io/) for painless Ruby upgrades and
|
|
||||||
bulletproof deployments.
|
|
||||||
|
|
||||||
**Powerful in development.** Specify your app's Ruby version once,
|
[](https://travis-ci.org/pyenv/pyenv)
|
||||||
in a single file. Keep all your teammates on the same page. No
|
|
||||||
headaches running apps on different versions of Ruby. Just Works™
|
|
||||||
from the command line and with app servers like [Pow](http://pow.cx).
|
|
||||||
Override the Ruby version anytime: just set an environment variable.
|
|
||||||
|
|
||||||
**Rock-solid in production.** Your application's executables are its
|
pyenv lets you easily switch between multiple versions of Python. It's
|
||||||
interface with ops. With rbenv and [Bundler
|
simple, unobtrusive, and follows the UNIX tradition of single-purpose
|
||||||
binstubs](https://github.com/rbenv/rbenv/wiki/Understanding-binstubs)
|
tools that do one thing well.
|
||||||
you'll never again need to `cd` in a cron job or Chef recipe to
|
|
||||||
ensure you've selected the right runtime. The Ruby version
|
|
||||||
dependency lives in one place—your app—so upgrades and rollbacks are
|
|
||||||
atomic, even when you switch versions.
|
|
||||||
|
|
||||||
**One thing well.** rbenv is concerned solely with switching Ruby
|
This project was forked from [rbenv](https://github.com/rbenv/rbenv) and
|
||||||
versions. It's simple and predictable. A rich plugin ecosystem lets
|
[ruby-build](https://github.com/rbenv/ruby-build), and modified for Python.
|
||||||
you tailor it to suit your needs. Compile your own Ruby versions, or
|
|
||||||
use the [ruby-build][]
|
<img src="https://i.gyazo.com/699a58927b77e46e71cd674c7fc7a78d.png" width="735" height="490" />
|
||||||
plugin to automate the process. Specify per-application environment
|
|
||||||
variables with [rbenv-vars](https://github.com/rbenv/rbenv-vars).
|
|
||||||
See more [plugins on the
|
### pyenv _does..._
|
||||||
wiki](https://github.com/rbenv/rbenv/wiki/Plugins).
|
|
||||||
|
* Let you **change the global Python version** on a per-user basis.
|
||||||
|
* Provide support for **per-project Python versions**.
|
||||||
|
* Allow you to **override the Python version** with an environment
|
||||||
|
variable.
|
||||||
|
* Search commands from **multiple versions of Python at a time**.
|
||||||
|
This may be helpful to test across Python versions with [tox](https://pypi.python.org/pypi/tox).
|
||||||
|
|
||||||
|
|
||||||
|
### In contrast with pythonbrew and pythonz, pyenv _does not..._
|
||||||
|
|
||||||
|
* **Depend on Python itself.** pyenv was made from pure shell scripts.
|
||||||
|
There is no bootstrap problem of Python.
|
||||||
|
* **Need to be loaded into your shell.** Instead, pyenv's shim
|
||||||
|
approach works by adding a directory to your `$PATH`.
|
||||||
|
* **Manage virtualenv.** Of course, you can create [virtualenv](https://pypi.python.org/pypi/virtualenv)
|
||||||
|
yourself, or [pyenv-virtualenv](https://github.com/pyenv/pyenv-virtualenv)
|
||||||
|
to automate the process.
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
[**Why choose rbenv over
|
|
||||||
RVM?**](https://github.com/rbenv/rbenv/wiki/Why-rbenv%3F)
|
|
||||||
|
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
|
|
||||||
* [How It Works](#how-it-works)
|
* **[How It Works](#how-it-works)**
|
||||||
* [Understanding PATH](#understanding-path)
|
* [Understanding PATH](#understanding-path)
|
||||||
* [Understanding Shims](#understanding-shims)
|
* [Understanding Shims](#understanding-shims)
|
||||||
* [Choosing the Ruby Version](#choosing-the-ruby-version)
|
* [Choosing the Python Version](#choosing-the-python-version)
|
||||||
* [Locating the Ruby Installation](#locating-the-ruby-installation)
|
* [Locating the Python Installation](#locating-the-python-installation)
|
||||||
* [Installation](#installation)
|
* **[Installation](#installation)**
|
||||||
* [Basic GitHub Checkout](#basic-github-checkout)
|
* [Basic GitHub Checkout](#basic-github-checkout)
|
||||||
* [Upgrading](#upgrading)
|
* [Upgrading](#upgrading)
|
||||||
* [Homebrew on Mac OS X](#homebrew-on-mac-os-x)
|
* [Homebrew on Mac OS X](#homebrew-on-mac-os-x)
|
||||||
* [How rbenv hooks into your shell](#how-rbenv-hooks-into-your-shell)
|
* [Advanced Configuration](#advanced-configuration)
|
||||||
* [Installing Ruby versions](#installing-ruby-versions)
|
* [Uninstalling Python Versions](#uninstalling-python-versions)
|
||||||
* [Installing Ruby gems](#installing-ruby-gems)
|
* **[Command Reference](#command-reference)**
|
||||||
* [Uninstalling Ruby versions](#uninstalling-ruby-versions)
|
* **[Development](#development)**
|
||||||
* [Uninstalling rbenv](#uninstalling-rbenv)
|
* [Version History](#version-history)
|
||||||
* [Command Reference](#command-reference)
|
* [License](#license)
|
||||||
* [rbenv local](#rbenv-local)
|
|
||||||
* [rbenv global](#rbenv-global)
|
|
||||||
* [rbenv shell](#rbenv-shell)
|
----
|
||||||
* [rbenv versions](#rbenv-versions)
|
|
||||||
* [rbenv version](#rbenv-version)
|
|
||||||
* [rbenv rehash](#rbenv-rehash)
|
|
||||||
* [rbenv which](#rbenv-which)
|
|
||||||
* [rbenv whence](#rbenv-whence)
|
|
||||||
* [Environment variables](#environment-variables)
|
|
||||||
* [Development](#development)
|
|
||||||
|
|
||||||
## How It Works
|
## How It Works
|
||||||
|
|
||||||
At a high level, rbenv intercepts Ruby commands using shim
|
At a high level, pyenv intercepts Python commands using shim
|
||||||
executables injected into your `PATH`, determines which Ruby version
|
executables injected into your `PATH`, determines which Python version
|
||||||
has been specified by your application, and passes your commands along
|
has been specified by your application, and passes your commands along
|
||||||
to the correct Ruby installation.
|
to the correct Python installation.
|
||||||
|
|
||||||
### Understanding PATH
|
### Understanding PATH
|
||||||
|
|
||||||
When you run a command like `ruby` or `rake`, your operating system
|
When you run a command like `python` or `pip`, your operating system
|
||||||
searches through a list of directories to find an executable file with
|
searches through a list of directories to find an executable file with
|
||||||
that name. This list of directories lives in an environment variable
|
that name. This list of directories lives in an environment variable
|
||||||
called `PATH`, with each directory in the list separated by a colon:
|
called `PATH`, with each directory in the list separated by a colon:
|
||||||
@@ -83,398 +84,300 @@ then `/bin`.
|
|||||||
|
|
||||||
### Understanding Shims
|
### Understanding Shims
|
||||||
|
|
||||||
rbenv works by inserting a directory of _shims_ at the front of your
|
pyenv works by inserting a directory of _shims_ at the front of your
|
||||||
`PATH`:
|
`PATH`:
|
||||||
|
|
||||||
~/.rbenv/shims:/usr/local/bin:/usr/bin:/bin
|
$(pyenv root)/shims:/usr/local/bin:/usr/bin:/bin
|
||||||
|
|
||||||
Through a process called _rehashing_, rbenv maintains shims in that
|
Through a process called _rehashing_, pyenv maintains shims in that
|
||||||
directory to match every Ruby command across every installed version
|
directory to match every Python command across every installed version
|
||||||
of Ruby—`irb`, `gem`, `rake`, `rails`, `ruby`, and so on.
|
of Python—`python`, `pip`, and so on.
|
||||||
|
|
||||||
Shims are lightweight executables that simply pass your command along
|
Shims are lightweight executables that simply pass your command along
|
||||||
to rbenv. So with rbenv installed, when you run, say, `rake`, your
|
to pyenv. So with pyenv installed, when you run, say, `pip`, your
|
||||||
operating system will do the following:
|
operating system will do the following:
|
||||||
|
|
||||||
* Search your `PATH` for an executable file named `rake`
|
* Search your `PATH` for an executable file named `pip`
|
||||||
* Find the rbenv shim named `rake` at the beginning of your `PATH`
|
* Find the pyenv shim named `pip` at the beginning of your `PATH`
|
||||||
* Run the shim named `rake`, which in turn passes the command along to
|
* Run the shim named `pip`, which in turn passes the command along to
|
||||||
rbenv
|
pyenv
|
||||||
|
|
||||||
### Choosing the Ruby Version
|
### Choosing the Python Version
|
||||||
|
|
||||||
When you execute a shim, rbenv determines which Ruby version to use by
|
When you execute a shim, pyenv determines which Python version to use by
|
||||||
reading it from the following sources, in this order:
|
reading it from the following sources, in this order:
|
||||||
|
|
||||||
1. The `RBENV_VERSION` environment variable, if specified. You can use
|
1. The `PYENV_VERSION` environment variable (if specified). You can use
|
||||||
the [`rbenv shell`](#rbenv-shell) command to set this environment
|
the [`pyenv shell`](https://github.com/pyenv/pyenv/blob/master/COMMANDS.md#pyenv-shell) command to set this environment
|
||||||
variable in your current shell session.
|
variable in your current shell session.
|
||||||
|
|
||||||
2. The first `.ruby-version` file found by searching the directory of the
|
2. The application-specific `.python-version` file in the current
|
||||||
script you are executing and each of its parent directories until reaching
|
directory (if present). You can modify the current directory's
|
||||||
the root of your filesystem.
|
`.python-version` file with the [`pyenv local`](https://github.com/pyenv/pyenv/blob/master/COMMANDS.md#pyenv-local)
|
||||||
|
command.
|
||||||
|
|
||||||
3. The first `.ruby-version` file found by searching the current working
|
3. The first `.python-version` file found (if any) by searching each parent
|
||||||
directory and each of its parent directories until reaching the root of your
|
directory, until reaching the root of your filesystem.
|
||||||
filesystem. You can modify the `.ruby-version` file in the current working
|
|
||||||
directory with the [`rbenv local`](#rbenv-local) command.
|
|
||||||
|
|
||||||
4. The global `~/.rbenv/version` file. You can modify this file using
|
4. The global `$(pyenv root)/version` file. You can modify this file using
|
||||||
the [`rbenv global`](#rbenv-global) command. If the global version
|
the [`pyenv global`](https://github.com/pyenv/pyenv/blob/master/COMMANDS.md#pyenv-global) command. If the global version
|
||||||
file is not present, rbenv assumes you want to use the "system"
|
file is not present, pyenv assumes you want to use the "system"
|
||||||
Ruby—i.e. whatever version would be run if rbenv weren't in your
|
Python. (In other words, whatever version would run if pyenv weren't in your
|
||||||
path.
|
`PATH`.)
|
||||||
|
|
||||||
### Locating the Ruby Installation
|
**NOTE:** You can activate multiple versions at the same time, including multiple
|
||||||
|
versions of Python2 or Python3 simultaneously. This allows for parallel usage of
|
||||||
|
Python2 and Python3, and is required with tools like `tox`. For example, to set
|
||||||
|
your path to first use your `system` Python and Python3 (set to 2.7.9 and 3.4.2
|
||||||
|
in this example), but also have Python 3.3.6, 3.2, and 2.5 available on your
|
||||||
|
`PATH`, one would first `pyenv install` the missing versions, then set `pyenv
|
||||||
|
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.
|
||||||
|
|
||||||
Once rbenv has determined which version of Ruby your application has
|
### Locating the Python Installation
|
||||||
specified, it passes the command along to the corresponding Ruby
|
|
||||||
|
Once pyenv has determined which version of Python your application has
|
||||||
|
specified, it passes the command along to the corresponding Python
|
||||||
installation.
|
installation.
|
||||||
|
|
||||||
Each Ruby version is installed into its own directory under
|
Each Python version is installed into its own directory under
|
||||||
`~/.rbenv/versions`. For example, you might have these versions
|
`$(pyenv root)/versions`.
|
||||||
installed:
|
|
||||||
|
|
||||||
* `~/.rbenv/versions/1.8.7-p371/`
|
For example, you might have these versions installed:
|
||||||
* `~/.rbenv/versions/1.9.3-p327/`
|
|
||||||
* `~/.rbenv/versions/jruby-1.7.1/`
|
* `$(pyenv root)/versions/2.7.8/`
|
||||||
|
* `$(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
|
||||||
|
`$(pyenv root)/versions`.
|
||||||
|
|
||||||
|
### Managing Virtual Environments
|
||||||
|
|
||||||
|
There is a pyenv plugin named [pyenv-virtualenv](https://github.com/pyenv/pyenv-virtualenv) which comes with various features to help pyenv users to manage virtual environments created by virtualenv or Anaconda.
|
||||||
|
Because the `activate` script of those virtual environments are relying on mutating `$PATH` variable of user's interactive shell, it will intercept pyenv's shim style command execution hooks.
|
||||||
|
We'd recommend to install pyenv-virtualenv as well if you have some plan to play with those virtual environments.
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
Version names to rbenv are simply the names of the directories in
|
|
||||||
`~/.rbenv/versions`.
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
**Compatibility note**: rbenv is _incompatible_ with RVM. Please make
|
If you're on Mac OS X, consider [installing with Homebrew](#homebrew-on-mac-os-x).
|
||||||
sure to fully uninstall RVM and remove any references to it from
|
|
||||||
your shell initialization files before installing rbenv.
|
|
||||||
|
### The automatic installer
|
||||||
|
|
||||||
|
Visit my other project:
|
||||||
|
https://github.com/pyenv/pyenv-installer
|
||||||
|
|
||||||
If you're on Mac OS X, consider
|
|
||||||
[installing with Homebrew](#homebrew-on-mac-os-x).
|
|
||||||
|
|
||||||
### Basic GitHub Checkout
|
### Basic GitHub Checkout
|
||||||
|
|
||||||
This will get you going with the latest version of rbenv 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.
|
easy to fork and contribute any changes back upstream.
|
||||||
|
|
||||||
1. Check out rbenv into `~/.rbenv`.
|
1. **Check out pyenv where you want it installed.**
|
||||||
|
A good place to choose is `$HOME/.pyenv` (but you can install it somewhere else).
|
||||||
|
|
||||||
~~~ sh
|
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
|
||||||
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Optionally, try to compile dynamic bash extension to speed up rbenv. Don't
|
|
||||||
worry if it fails; rbenv will still work normally:
|
|
||||||
|
|
||||||
~~~
|
2. **Define environment variable `PYENV_ROOT`** to point to the path where
|
||||||
$ cd ~/.rbenv && src/configure && make -C src
|
pyenv repo is cloned and add `$PYENV_ROOT/bin` to your `$PATH` for access
|
||||||
~~~
|
to the `pyenv` command-line utility.
|
||||||
|
|
||||||
2. Add `~/.rbenv/bin` to your `$PATH` for access to the `rbenv`
|
```sh
|
||||||
command-line utility.
|
$ 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.
|
||||||
|
|
||||||
~~~ sh
|
3. **Add `pyenv init` to your shell** to enable shims and autocompletion.
|
||||||
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
|
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`.
|
||||||
|
|
||||||
**Ubuntu Desktop note**: Modify your `~/.bashrc` instead of `~/.bash_profile`.
|
**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.
|
||||||
|
|
||||||
**Zsh note**: Modify your `~/.zshrc` file instead of `~/.bash_profile`.
|
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`.**
|
||||||
|
For example, to download and install Python 2.7.8, run:
|
||||||
|
```sh
|
||||||
|
$ pyenv install 2.7.8
|
||||||
|
```
|
||||||
|
**NOTE:** If you need to pass configure option to build, please use
|
||||||
|
```CONFIGURE_OPTS``` environment variable.
|
||||||
|
|
||||||
3. Run `~/.rbenv/bin/rbenv init` for shell-specific instructions on how to
|
**NOTE:** If you want to use proxy to download, please use `http_proxy` and `https_proxy`
|
||||||
initialize rbenv to enable shims and autocompletion.
|
environment variable.
|
||||||
|
|
||||||
4. Restart your shell so that PATH changes take effect. (Opening a new
|
**NOTE:** If you are having trouble installing a python version,
|
||||||
terminal tab will usually do it.) Now check if rbenv was set up:
|
please visit the wiki page about
|
||||||
|
[Common Build Problems](https://github.com/pyenv/pyenv/wiki/Common-build-problems)
|
||||||
|
|
||||||
~~~ sh
|
|
||||||
$ type rbenv
|
|
||||||
#=> "rbenv is a function"
|
|
||||||
~~~
|
|
||||||
|
|
||||||
5. _(Optional)_ Install [ruby-build][], which provides the
|
|
||||||
`rbenv install` command that simplifies the process of
|
|
||||||
[installing new Ruby versions](#installing-ruby-versions).
|
|
||||||
|
|
||||||
#### Upgrading
|
#### Upgrading
|
||||||
|
|
||||||
If you've installed rbenv manually using git, you can upgrade your
|
If you've installed pyenv using the instructions above, you can
|
||||||
installation to the cutting-edge version at any time.
|
upgrade your installation at any time using git.
|
||||||
|
|
||||||
~~~ sh
|
To upgrade to the latest development version of pyenv, use `git pull`:
|
||||||
$ cd ~/.rbenv
|
|
||||||
|
```sh
|
||||||
|
$ cd $(pyenv root)
|
||||||
$ git pull
|
$ git pull
|
||||||
~~~
|
```
|
||||||
|
|
||||||
To use a specific release of rbenv, check out the corresponding tag:
|
To upgrade to a specific release of pyenv, check out the corresponding tag:
|
||||||
|
|
||||||
~~~ sh
|
```sh
|
||||||
$ cd ~/.rbenv
|
$ cd $(pyenv root)
|
||||||
$ git fetch
|
$ git fetch
|
||||||
$ git checkout v0.3.0
|
$ git tag
|
||||||
~~~
|
v0.1.0
|
||||||
|
$ git checkout v0.1.0
|
||||||
|
```
|
||||||
|
|
||||||
If you've [installed via Homebrew](#homebrew-on-mac-os-x), then upgrade
|
### Uninstalling pyenv
|
||||||
via its `brew` command:
|
|
||||||
|
|
||||||
~~~ sh
|
The simplicity of pyenv makes it easy to temporarily disable it, or
|
||||||
$ brew update
|
uninstall from the system.
|
||||||
$ brew upgrade rbenv ruby-build
|
|
||||||
~~~
|
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.
|
||||||
|
|
||||||
|
`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
|
||||||
|
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:
|
||||||
|
|
||||||
|
brew uninstall pyenv
|
||||||
|
|
||||||
### Homebrew on Mac OS X
|
### Homebrew on Mac OS X
|
||||||
|
|
||||||
As an alternative to installation via GitHub checkout, you can install
|
You can also install pyenv using the [Homebrew](http://brew.sh)
|
||||||
rbenv and [ruby-build][] using the [Homebrew](http://brew.sh) package
|
package manager for Mac OS X.
|
||||||
manager on Mac OS X:
|
|
||||||
|
|
||||||
~~~
|
$ brew update
|
||||||
$ brew update
|
$ brew install pyenv
|
||||||
$ brew install rbenv
|
|
||||||
$ rbenv init
|
|
||||||
~~~
|
|
||||||
|
|
||||||
You'll only ever have to run `rbenv init` once.
|
|
||||||
|
|
||||||
### How rbenv hooks into your shell
|
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").
|
||||||
|
|
||||||
|
### Advanced Configuration
|
||||||
|
|
||||||
Skip this section unless you must know what every line in your shell
|
Skip this section unless you must know what every line in your shell
|
||||||
profile is doing.
|
profile is doing.
|
||||||
|
|
||||||
`rbenv init` is the only command that crosses the line of loading
|
`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
|
extra commands into your shell. Coming from rvm, some of you might be
|
||||||
opposed to this idea. Here's what `rbenv init` actually does:
|
opposed to this idea. Here's what `pyenv init` actually does:
|
||||||
|
|
||||||
1. Sets up your shims path. This is the only requirement for rbenv to
|
1. **Sets up your shims path.** This is the only requirement for pyenv to
|
||||||
function properly. You can do this by hand by prepending
|
function properly. You can do this by hand by prepending
|
||||||
`~/.rbenv/shims` to your `$PATH`.
|
`$(pyenv root)/shims` to your `$PATH`.
|
||||||
|
|
||||||
2. Installs autocompletion. This is entirely optional but pretty
|
2. **Installs autocompletion.** This is entirely optional but pretty
|
||||||
useful. Sourcing `~/.rbenv/completions/rbenv.bash` will set that
|
useful. Sourcing `$(pyenv root)/completions/pyenv.bash` will set that
|
||||||
up. There is also a `~/.rbenv/completions/rbenv.zsh` for Zsh
|
up. There is also a `$(pyenv root)/completions/pyenv.zsh` for Zsh
|
||||||
users.
|
users.
|
||||||
|
|
||||||
3. Rehashes shims. From time to time you'll need to rebuild your
|
3. **Rehashes shims.** From time to time you'll need to rebuild your
|
||||||
shim files. Doing this automatically makes sure everything is up to
|
shim files. Doing this on init makes sure everything is up to
|
||||||
date. You can always run `rbenv rehash` manually.
|
date. You can always run `pyenv rehash` manually.
|
||||||
|
|
||||||
4. Installs the sh dispatcher. This bit is also optional, but allows
|
4. **Installs the sh dispatcher.** This bit is also optional, but allows
|
||||||
rbenv and plugins to change variables in your current shell, making
|
pyenv and plugins to change variables in your current shell, making
|
||||||
commands like `rbenv shell` possible. The sh dispatcher doesn't do
|
commands like `pyenv shell` possible. The sh dispatcher doesn't do
|
||||||
anything crazy like override `cd` or hack your shell prompt, but if
|
anything crazy like override `cd` or hack your shell prompt, but if
|
||||||
for some reason you need `rbenv` to be a real script rather than a
|
for some reason you need `pyenv` to be a real script rather than a
|
||||||
shell function, you can safely skip it.
|
shell function, you can safely skip it.
|
||||||
|
|
||||||
Run `rbenv init -` for yourself to see exactly what happens under the
|
To see exactly what happens under the hood for yourself, run `pyenv init -`.
|
||||||
hood.
|
|
||||||
|
|
||||||
### Installing Ruby versions
|
|
||||||
|
|
||||||
The `rbenv install` command doesn't ship with rbenv out of the box, but
|
### Uninstalling Python Versions
|
||||||
is provided by the [ruby-build][] project. If you installed it either
|
|
||||||
as part of GitHub checkout process outlined above or via Homebrew, you
|
|
||||||
should be able to:
|
|
||||||
|
|
||||||
~~~ sh
|
As time goes on, you will accumulate Python versions in your
|
||||||
# list all available versions:
|
`$(pyenv root)/versions` directory.
|
||||||
$ rbenv install -l
|
|
||||||
|
|
||||||
# install a Ruby version:
|
To remove old Python versions, `pyenv uninstall` command to automate
|
||||||
$ rbenv install 2.0.0-p247
|
the removal process.
|
||||||
~~~
|
|
||||||
|
|
||||||
Alternatively to the `install` command, you can download and compile
|
Alternatively, simply `rm -rf` the directory of the version you want
|
||||||
Ruby manually as a subdirectory of `~/.rbenv/versions/`. An entry in
|
to remove. You can find the directory of a particular Python version
|
||||||
that directory can also be a symlink to a Ruby version installed
|
with the `pyenv prefix` command, e.g. `pyenv prefix 2.6.8`.
|
||||||
elsewhere on the filesystem. rbenv doesn't care; it will simply treat
|
|
||||||
any entry in the `versions/` directory as a separate Ruby version.
|
|
||||||
|
|
||||||
#### Installing Ruby gems
|
|
||||||
|
|
||||||
Once you've installed some Ruby versions, you'll want to install gems.
|
----
|
||||||
First, ensure that the target version for your project is the one you want by
|
|
||||||
checking `rbenv version` (see [Command Reference](#command-reference)). Select
|
|
||||||
another version using `rbenv local 2.0.0-p247`, for example. Then, proceed to
|
|
||||||
install gems as you normally would:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
$ gem install bundler
|
|
||||||
```
|
|
||||||
|
|
||||||
**You don't need sudo** to install gems. Typically, the Ruby versions will be
|
|
||||||
installed and writeable by your user. No extra privileges are required to
|
|
||||||
install gems.
|
|
||||||
|
|
||||||
Check the location where gems are being installed with `gem env`:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
$ gem env home
|
|
||||||
# => ~/.rbenv/versions/<ruby-version>/lib/ruby/gems/...
|
|
||||||
```
|
|
||||||
|
|
||||||
### Uninstalling Ruby versions
|
|
||||||
|
|
||||||
As time goes on, Ruby versions you install will accumulate in your
|
|
||||||
`~/.rbenv/versions` directory.
|
|
||||||
|
|
||||||
To remove old Ruby versions, simply `rm -rf` the directory of the
|
|
||||||
version you want to remove. You can find the directory of a particular
|
|
||||||
Ruby version with the `rbenv prefix` command, e.g. `rbenv prefix
|
|
||||||
1.8.7-p357`.
|
|
||||||
|
|
||||||
The [ruby-build][] plugin provides an `rbenv uninstall` command to
|
|
||||||
automate the removal process.
|
|
||||||
|
|
||||||
### Uninstalling rbenv
|
|
||||||
|
|
||||||
The simplicity of rbenv makes it easy to temporarily disable it, or
|
|
||||||
uninstall from the system.
|
|
||||||
|
|
||||||
1. To **disable** rbenv managing your Ruby versions, simply remove the
|
|
||||||
`rbenv init` line from your shell startup configuration. This will
|
|
||||||
remove rbenv shims directory from PATH, and future invocations like
|
|
||||||
`ruby` will execute the system Ruby version, as before rbenv.
|
|
||||||
|
|
||||||
`rbenv` will still be accessible on the command line, but your Ruby
|
|
||||||
apps won't be affected by version switching.
|
|
||||||
|
|
||||||
2. To completely **uninstall** rbenv, perform step (1) and then remove
|
|
||||||
its root directory. This will **delete all Ruby versions** that were
|
|
||||||
installed under `` `rbenv root`/versions/ `` directory:
|
|
||||||
|
|
||||||
rm -rf `rbenv root`
|
|
||||||
|
|
||||||
If you've installed rbenv using a package manager, as a final step
|
|
||||||
perform the rbenv package removal. For instance, for Homebrew:
|
|
||||||
|
|
||||||
brew uninstall rbenv
|
|
||||||
|
|
||||||
## Command Reference
|
## Command Reference
|
||||||
|
|
||||||
Like `git`, the `rbenv` command delegates to subcommands based on its
|
See [COMMANDS.md](COMMANDS.md).
|
||||||
first argument. The most common subcommands are:
|
|
||||||
|
|
||||||
### rbenv local
|
|
||||||
|
|
||||||
Sets a local application-specific Ruby version by writing the version
|
----
|
||||||
name to a `.ruby-version` file in the current directory. This version
|
|
||||||
overrides the global version, and can be overridden itself by setting
|
|
||||||
the `RBENV_VERSION` environment variable or with the `rbenv shell`
|
|
||||||
command.
|
|
||||||
|
|
||||||
$ rbenv local 1.9.3-p327
|
|
||||||
|
|
||||||
When run without a version number, `rbenv local` reports the currently
|
|
||||||
configured local version. You can also unset the local version:
|
|
||||||
|
|
||||||
$ rbenv local --unset
|
|
||||||
|
|
||||||
### rbenv global
|
|
||||||
|
|
||||||
Sets the global version of Ruby to be used in all shells by writing
|
|
||||||
the version name to the `~/.rbenv/version` file. This version can be
|
|
||||||
overridden by an application-specific `.ruby-version` file, or by
|
|
||||||
setting the `RBENV_VERSION` environment variable.
|
|
||||||
|
|
||||||
$ rbenv global 1.8.7-p352
|
|
||||||
|
|
||||||
The special version name `system` tells rbenv to use the system Ruby
|
|
||||||
(detected by searching your `$PATH`).
|
|
||||||
|
|
||||||
When run without a version number, `rbenv global` reports the
|
|
||||||
currently configured global version.
|
|
||||||
|
|
||||||
### rbenv shell
|
|
||||||
|
|
||||||
Sets a shell-specific Ruby version by setting the `RBENV_VERSION`
|
|
||||||
environment variable in your shell. This version overrides
|
|
||||||
application-specific versions and the global version.
|
|
||||||
|
|
||||||
$ rbenv shell jruby-1.7.1
|
|
||||||
|
|
||||||
When run without a version number, `rbenv shell` reports the current
|
|
||||||
value of `RBENV_VERSION`. You can also unset the shell version:
|
|
||||||
|
|
||||||
$ rbenv shell --unset
|
|
||||||
|
|
||||||
Note that you'll need rbenv's shell integration enabled (step 3 of
|
|
||||||
the installation instructions) in order to use this command. If you
|
|
||||||
prefer not to use shell integration, you may simply set the
|
|
||||||
`RBENV_VERSION` variable yourself:
|
|
||||||
|
|
||||||
$ export RBENV_VERSION=jruby-1.7.1
|
|
||||||
|
|
||||||
### rbenv versions
|
|
||||||
|
|
||||||
Lists all Ruby versions known to rbenv, and shows an asterisk next to
|
|
||||||
the currently active version.
|
|
||||||
|
|
||||||
$ rbenv versions
|
|
||||||
1.8.7-p352
|
|
||||||
1.9.2-p290
|
|
||||||
* 1.9.3-p327 (set by /Users/sam/.rbenv/version)
|
|
||||||
jruby-1.7.1
|
|
||||||
rbx-1.2.4
|
|
||||||
ree-1.8.7-2011.03
|
|
||||||
|
|
||||||
### rbenv version
|
|
||||||
|
|
||||||
Displays the currently active Ruby version, along with information on
|
|
||||||
how it was set.
|
|
||||||
|
|
||||||
$ rbenv version
|
|
||||||
1.9.3-p327 (set by /Users/sam/.rbenv/version)
|
|
||||||
|
|
||||||
### rbenv rehash
|
|
||||||
|
|
||||||
Installs shims for all Ruby executables known to rbenv (i.e.,
|
|
||||||
`~/.rbenv/versions/*/bin/*`). Run this command after you install a new
|
|
||||||
version of Ruby, or install a gem that provides commands.
|
|
||||||
|
|
||||||
$ rbenv rehash
|
|
||||||
|
|
||||||
### rbenv which
|
|
||||||
|
|
||||||
Displays the full path to the executable that rbenv will invoke when
|
|
||||||
you run the given command.
|
|
||||||
|
|
||||||
$ rbenv which irb
|
|
||||||
/Users/sam/.rbenv/versions/1.9.3-p327/bin/irb
|
|
||||||
|
|
||||||
### rbenv whence
|
|
||||||
|
|
||||||
Lists all Ruby versions with the given command installed.
|
|
||||||
|
|
||||||
$ rbenv whence rackup
|
|
||||||
1.9.3-p327
|
|
||||||
jruby-1.7.1
|
|
||||||
ree-1.8.7-2011.03
|
|
||||||
|
|
||||||
## Environment variables
|
## Environment variables
|
||||||
|
|
||||||
You can affect how rbenv operates with the following settings:
|
You can affect how pyenv operates with the following settings:
|
||||||
|
|
||||||
name | default | description
|
name | default | description
|
||||||
-----|---------|------------
|
-----|---------|------------
|
||||||
`RBENV_VERSION` | | Specifies the Ruby version to be used.<br>Also see [`rbenv shell`](#rbenv-shell)
|
`PYENV_VERSION` | | Specifies the Python version to be used.<br>Also see [`pyenv shell`](https://github.com/pyenv/pyenv/blob/master/COMMANDS.md#pyenv-shell)
|
||||||
`RBENV_ROOT` | `~/.rbenv` | Defines the directory under which Ruby versions and shims reside.<br>Also see `rbenv root`
|
`PYENV_ROOT` | `~/.pyenv` | Defines the directory under which Python versions and shims reside.<br>Also see `pyenv root`
|
||||||
`RBENV_DEBUG` | | Outputs debug information.<br>Also as: `rbenv --debug <subcommand>`
|
`PYENV_DEBUG` | | Outputs debug information.<br>Also as: `pyenv --debug <subcommand>`
|
||||||
`RBENV_HOOK_PATH` | [_see wiki_][hooks] | Colon-separated list of paths searched for rbenv hooks.
|
`PYENV_HOOK_PATH` | [_see wiki_][hooks] | Colon-separated list of paths searched for pyenv hooks.
|
||||||
`RBENV_DIR` | `$PWD` | Directory to start searching for `.ruby-version` files.
|
`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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
The rbenv source code is [hosted on
|
The pyenv source code is [hosted on
|
||||||
GitHub](https://github.com/rbenv/rbenv). It's clean, modular,
|
GitHub](https://github.com/pyenv/pyenv). It's clean, modular,
|
||||||
and easy to understand, even if you're not a shell hacker.
|
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/sstephenson/bats):
|
||||||
|
|
||||||
$ bats test
|
$ bats test
|
||||||
$ bats test/<file>.bats
|
$ bats/test/<file>.bats
|
||||||
|
|
||||||
Please feel free to submit pull requests and file bugs on the [issue
|
Please feel free to submit pull requests and file bugs on the [issue
|
||||||
tracker](https://github.com/rbenv/rbenv/issues).
|
tracker](https://github.com/pyenv/pyenv/issues).
|
||||||
|
|
||||||
|
|
||||||
[ruby-build]: https://github.com/rbenv/ruby-build#readme
|
[pyenv-virtualenv]: https://github.com/pyenv/pyenv-virtualenv#readme
|
||||||
[hooks]: https://github.com/rbenv/rbenv/wiki/Authoring-plugins#rbenv-hooks
|
[hooks]: https://github.com/pyenv/pyenv/wiki/Authoring-plugins#pyenv-hooks
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
_rbenv() {
|
_pyenv() {
|
||||||
COMPREPLY=()
|
COMPREPLY=()
|
||||||
local word="${COMP_WORDS[COMP_CWORD]}"
|
local word="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
|
||||||
if [ "$COMP_CWORD" -eq 1 ]; then
|
if [ "$COMP_CWORD" -eq 1 ]; then
|
||||||
COMPREPLY=( $(compgen -W "$(rbenv commands)" -- "$word") )
|
COMPREPLY=( $(compgen -W "$(pyenv commands)" -- "$word") )
|
||||||
else
|
else
|
||||||
local words=("${COMP_WORDS[@]}")
|
local words=("${COMP_WORDS[@]}")
|
||||||
unset words[0]
|
unset words[0]
|
||||||
unset words[$COMP_CWORD]
|
unset words[$COMP_CWORD]
|
||||||
local completions=$(rbenv completions "${words[@]}")
|
local completions=$(pyenv completions "${words[@]}")
|
||||||
COMPREPLY=( $(compgen -W "$completions" -- "$word") )
|
COMPREPLY=( $(compgen -W "$completions" -- "$word") )
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
complete -F _rbenv rbenv
|
complete -F _pyenv pyenv
|
||||||
23
completions/pyenv.fish
Normal file
23
completions/pyenv.fish
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
function __fish_pyenv_needs_command
|
||||||
|
set cmd (commandline -opc)
|
||||||
|
if [ (count $cmd) -eq 1 -a $cmd[1] = 'pyenv' ]
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish_pyenv_using_command
|
||||||
|
set cmd (commandline -opc)
|
||||||
|
if [ (count $cmd) -gt 1 ]
|
||||||
|
if [ $argv[1] = $cmd[2] ]
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
complete -f -c pyenv -n '__fish_pyenv_needs_command' -a '(pyenv commands)'
|
||||||
|
for cmd in (pyenv commands)
|
||||||
|
complete -f -c pyenv -n "__fish_pyenv_using_command $cmd" -a \
|
||||||
|
"(pyenv completions (commandline -opc)[2..-1])"
|
||||||
|
end
|
||||||
18
completions/pyenv.zsh
Normal file
18
completions/pyenv.zsh
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
if [[ ! -o interactive ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
compctl -K _pyenv pyenv
|
||||||
|
|
||||||
|
_pyenv() {
|
||||||
|
local words completions
|
||||||
|
read -cA words
|
||||||
|
|
||||||
|
if [ "${#words}" -eq 2 ]; then
|
||||||
|
completions="$(pyenv commands)"
|
||||||
|
else
|
||||||
|
completions="$(pyenv completions ${words[2,-2]})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
reply=(${(ps:\n:)completions})
|
||||||
|
}
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
function __fish_rbenv_needs_command
|
|
||||||
set cmd (commandline -opc)
|
|
||||||
if [ (count $cmd) -eq 1 -a $cmd[1] = 'rbenv' ]
|
|
||||||
return 0
|
|
||||||
end
|
|
||||||
return 1
|
|
||||||
end
|
|
||||||
|
|
||||||
function __fish_rbenv_using_command
|
|
||||||
set cmd (commandline -opc)
|
|
||||||
if [ (count $cmd) -gt 1 ]
|
|
||||||
if [ $argv[1] = $cmd[2] ]
|
|
||||||
return 0
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return 1
|
|
||||||
end
|
|
||||||
|
|
||||||
complete -f -c rbenv -n '__fish_rbenv_needs_command' -a '(rbenv commands)'
|
|
||||||
for cmd in (rbenv commands)
|
|
||||||
complete -f -c rbenv -n "__fish_rbenv_using_command $cmd" -a "(rbenv completions $cmd)"
|
|
||||||
end
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
if [[ ! -o interactive ]]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
compctl -K _rbenv rbenv
|
|
||||||
|
|
||||||
_rbenv() {
|
|
||||||
local words completions
|
|
||||||
read -cA words
|
|
||||||
|
|
||||||
if [ "${#words}" -eq 2 ]; then
|
|
||||||
completions="$(rbenv commands)"
|
|
||||||
else
|
|
||||||
completions="$(rbenv completions ${words[2,-2]})"
|
|
||||||
fi
|
|
||||||
|
|
||||||
reply=("${(ps:\n:)completions}")
|
|
||||||
}
|
|
||||||
137
libexec/pyenv
Executable file
137
libexec/pyenv
Executable file
@@ -0,0 +1,137 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
unset CDPATH
|
||||||
|
|
||||||
|
if [ "$1" = "--debug" ]; then
|
||||||
|
export PYENV_DEBUG=1
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$PYENV_DEBUG" ]; then
|
||||||
|
export PS4='+ [${BASH_SOURCE##*/}:${LINENO}] '
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
|
||||||
|
abort() {
|
||||||
|
{ if [ "$#" -eq 0 ]; then cat -
|
||||||
|
else echo "pyenv: $*"
|
||||||
|
fi
|
||||||
|
} >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if enable -f "${BASH_SOURCE%/*}"/../libexec/pyenv-realpath.dylib realpath 2>/dev/null; then
|
||||||
|
abs_dirname() {
|
||||||
|
local path="$(realpath "$1")"
|
||||||
|
echo "${path%/*}"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
[ -z "$PYENV_NATIVE_EXT" ] || abort "failed to load \`realpath' builtin"
|
||||||
|
|
||||||
|
READLINK=$(type -p greadlink readlink | head -1)
|
||||||
|
[ -n "$READLINK" ] || abort "cannot find readlink - are you missing GNU coreutils?"
|
||||||
|
|
||||||
|
resolve_link() {
|
||||||
|
$READLINK "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
abs_dirname() {
|
||||||
|
local path="$1"
|
||||||
|
|
||||||
|
# Use a subshell to avoid changing the current path
|
||||||
|
(
|
||||||
|
while [ -n "$path" ]; do
|
||||||
|
cd "${path%/*}"
|
||||||
|
local name="${path##*/}"
|
||||||
|
path="$(resolve_link "$name" || true)"
|
||||||
|
done
|
||||||
|
|
||||||
|
pwd
|
||||||
|
)
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${PYENV_ROOT}" ]; then
|
||||||
|
PYENV_ROOT="${HOME}/.pyenv"
|
||||||
|
else
|
||||||
|
PYENV_ROOT="${PYENV_ROOT%/}"
|
||||||
|
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
|
||||||
|
|
||||||
|
if [ ! -d "$PYENV_DIR" ] || [ ! -e "$PYENV_DIR" ]; then
|
||||||
|
abort "cannot change working directory to \`$PYENV_DIR'"
|
||||||
|
fi
|
||||||
|
|
||||||
|
PYENV_DIR=$(cd "$PYENV_DIR" && echo "$PWD")
|
||||||
|
export PYENV_DIR
|
||||||
|
|
||||||
|
|
||||||
|
shopt -s nullglob
|
||||||
|
|
||||||
|
bin_path="$(abs_dirname "$0")"
|
||||||
|
for plugin_bin in "${PYENV_ROOT}/plugins/"*/bin; do
|
||||||
|
PATH="${plugin_bin}:${PATH}"
|
||||||
|
done
|
||||||
|
export PATH="${bin_path}:${PATH}"
|
||||||
|
|
||||||
|
PYENV_HOOK_PATH="${PYENV_HOOK_PATH}:${PYENV_ROOT}/pyenv.d"
|
||||||
|
if [ "${bin_path%/*}" != "$PYENV_ROOT" ]; then
|
||||||
|
# Add pyenv's own `pyenv.d` unless pyenv was cloned to PYENV_ROOT
|
||||||
|
PYENV_HOOK_PATH="${PYENV_HOOK_PATH}:${bin_path%/*}/pyenv.d"
|
||||||
|
fi
|
||||||
|
PYENV_HOOK_PATH="${PYENV_HOOK_PATH}:/usr/local/etc/pyenv.d:/etc/pyenv.d:/usr/lib/pyenv/hooks"
|
||||||
|
for plugin_hook in "${PYENV_ROOT}/plugins/"*/etc/pyenv.d; do
|
||||||
|
PYENV_HOOK_PATH="${PYENV_HOOK_PATH}:${plugin_hook}"
|
||||||
|
done
|
||||||
|
PYENV_HOOK_PATH="${PYENV_HOOK_PATH#:}"
|
||||||
|
export PYENV_HOOK_PATH
|
||||||
|
|
||||||
|
shopt -u nullglob
|
||||||
|
|
||||||
|
|
||||||
|
command="$1"
|
||||||
|
case "$command" in
|
||||||
|
"" )
|
||||||
|
{ pyenv---version
|
||||||
|
pyenv-help
|
||||||
|
} | abort
|
||||||
|
;;
|
||||||
|
-v | --version )
|
||||||
|
exec pyenv---version
|
||||||
|
;;
|
||||||
|
-h | --help )
|
||||||
|
exec pyenv-help
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
command_path="$(command -v "pyenv-$command" || true)"
|
||||||
|
[ -n "$command_path" ] || abort "no such command \`$command'"
|
||||||
|
|
||||||
|
shift 1
|
||||||
|
if [ "$1" = --help ]; then
|
||||||
|
if [[ "$command" == "sh-"* ]]; then
|
||||||
|
echo "pyenv help \"$command\""
|
||||||
|
else
|
||||||
|
exec pyenv-help "$command"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
exec "$command_path" "$@"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Summary: Display the version of rbenv
|
# Summary: Display the version of pyenv
|
||||||
#
|
#
|
||||||
# Displays the version number of this rbenv release, including the
|
# Displays the version number of this pyenv release, including the
|
||||||
# current revision from git, if available.
|
# current revision from git, if available.
|
||||||
#
|
#
|
||||||
# The format of the git revision is:
|
# The format of the git revision is:
|
||||||
@@ -10,14 +10,14 @@
|
|||||||
# tagged.
|
# tagged.
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
version="1.1.0"
|
version="1.2.1"
|
||||||
git_revision=""
|
git_revision=""
|
||||||
|
|
||||||
if cd "${BASH_SOURCE%/*}" 2>/dev/null && git remote -v 2>/dev/null | grep -q rbenv; then
|
if cd "${BASH_SOURCE%/*}" 2>/dev/null && git remote -v 2>/dev/null | grep -q pyenv; then
|
||||||
git_revision="$(git describe --tags HEAD 2>/dev/null || true)"
|
git_revision="$(git describe --tags HEAD 2>/dev/null || true)"
|
||||||
git_revision="${git_revision#v}"
|
git_revision="${git_revision#v}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "rbenv ${git_revision:-$version}"
|
echo "pyenv ${git_revision:-$version}"
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Summary: List all available rbenv commands
|
# Summary: List all available pyenv commands
|
||||||
# Usage: rbenv commands [--sh|--no-sh]
|
# Usage: pyenv commands [--sh|--no-sh]
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
# Provide rbenv completions
|
# Provide pyenv completions
|
||||||
if [ "$1" = "--complete" ]; then
|
if [ "$1" = "--complete" ]; then
|
||||||
echo --sh
|
echo --sh
|
||||||
echo --no-sh
|
echo --no-sh
|
||||||
@@ -25,8 +25,8 @@ IFS=: paths=($PATH)
|
|||||||
shopt -s nullglob
|
shopt -s nullglob
|
||||||
|
|
||||||
{ for path in "${paths[@]}"; do
|
{ for path in "${paths[@]}"; do
|
||||||
for command in "${path}/rbenv-"*; do
|
for command in "${path}/pyenv-"*; do
|
||||||
command="${command##*rbenv-}"
|
command="${command##*pyenv-}"
|
||||||
if [ -n "$sh" ]; then
|
if [ -n "$sh" ]; then
|
||||||
if [ ${command:0:3} = "sh-" ]; then
|
if [ ${command:0:3} = "sh-" ]; then
|
||||||
echo ${command##sh-}
|
echo ${command##sh-}
|
||||||
26
libexec/pyenv-completions
Executable file
26
libexec/pyenv-completions
Executable file
@@ -0,0 +1,26 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Usage: pyenv completions <command> [arg1 arg2...]
|
||||||
|
|
||||||
|
set -e
|
||||||
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
|
COMMAND="$1"
|
||||||
|
if [ -z "$COMMAND" ]; then
|
||||||
|
pyenv-help --usage completions >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Provide pyenv completions
|
||||||
|
if [ "$COMMAND" = "--complete" ]; then
|
||||||
|
exec pyenv-commands
|
||||||
|
fi
|
||||||
|
|
||||||
|
COMMAND_PATH="$(command -v "pyenv-$COMMAND" || command -v "pyenv-sh-$COMMAND")"
|
||||||
|
|
||||||
|
# --help is provided automatically
|
||||||
|
echo --help
|
||||||
|
|
||||||
|
if grep -iE "^([#%]|--|//) provide pyenv completions" "$COMMAND_PATH" >/dev/null; then
|
||||||
|
shift
|
||||||
|
exec "$COMMAND_PATH" --complete "$@"
|
||||||
|
fi
|
||||||
47
libexec/pyenv-exec
Executable file
47
libexec/pyenv-exec
Executable file
@@ -0,0 +1,47 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Summary: Run an executable with the selected Python version
|
||||||
|
#
|
||||||
|
# Usage: pyenv exec <command> [arg1 arg2...]
|
||||||
|
#
|
||||||
|
# Runs an executable by first preparing PATH so that the selected Python
|
||||||
|
# version's `bin' directory is at the front.
|
||||||
|
#
|
||||||
|
# For example, if the currently selected Python version is 2.7.6:
|
||||||
|
# pyenv exec pip install -rrequirements.txt
|
||||||
|
#
|
||||||
|
# is equivalent to:
|
||||||
|
# PATH="$PYENV_ROOT/versions/2.7.6/bin:$PATH" pip install -rrequirements.txt
|
||||||
|
|
||||||
|
set -e
|
||||||
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
|
# Provide pyenv completions
|
||||||
|
if [ "$1" = "--complete" ]; then
|
||||||
|
exec pyenv-shims --short
|
||||||
|
fi
|
||||||
|
|
||||||
|
PYENV_VERSION="$(pyenv-version-name)"
|
||||||
|
PYENV_COMMAND="$1"
|
||||||
|
|
||||||
|
if [ -z "$PYENV_COMMAND" ]; then
|
||||||
|
pyenv-help --usage exec >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
export PYENV_VERSION
|
||||||
|
PYENV_COMMAND_PATH="$(pyenv-which "$PYENV_COMMAND")"
|
||||||
|
PYENV_BIN_PATH="${PYENV_COMMAND_PATH%/*}"
|
||||||
|
|
||||||
|
OLDIFS="$IFS"
|
||||||
|
IFS=$'\n' scripts=(`pyenv-hooks exec`)
|
||||||
|
IFS="$OLDIFS"
|
||||||
|
for script in "${scripts[@]}"; do
|
||||||
|
source "$script"
|
||||||
|
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" "$@"
|
||||||
41
libexec/pyenv-global
Executable file
41
libexec/pyenv-global
Executable file
@@ -0,0 +1,41 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Summary: Set or show the global Python version
|
||||||
|
#
|
||||||
|
# Usage: pyenv global <version>
|
||||||
|
#
|
||||||
|
# Sets the global Python version. 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.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
|
# Provide pyenv completions
|
||||||
|
if [ "$1" = "--complete" ]; then
|
||||||
|
echo system
|
||||||
|
exec pyenv-versions --bare
|
||||||
|
fi
|
||||||
|
|
||||||
|
versions=("$@")
|
||||||
|
PYENV_VERSION_FILE="${PYENV_ROOT}/version"
|
||||||
|
|
||||||
|
if [ -n "$versions" ]; then
|
||||||
|
pyenv-version-file-write "$PYENV_VERSION_FILE" "${versions[@]}"
|
||||||
|
else
|
||||||
|
OLDIFS="$IFS"
|
||||||
|
IFS=: versions=($(
|
||||||
|
pyenv-version-file-read "$PYENV_VERSION_FILE" ||
|
||||||
|
pyenv-version-file-read "${PYENV_ROOT}/global" ||
|
||||||
|
pyenv-version-file-read "${PYENV_ROOT}/default" ||
|
||||||
|
echo system
|
||||||
|
))
|
||||||
|
IFS="$OLDIFS"
|
||||||
|
for version in "${versions[@]}"; do
|
||||||
|
echo "$version"
|
||||||
|
done
|
||||||
|
fi
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Summary: Display help for a command
|
# Summary: Display help for a command
|
||||||
#
|
#
|
||||||
# Usage: rbenv help [--usage] COMMAND
|
# Usage: pyenv help [--usage] COMMAND
|
||||||
#
|
#
|
||||||
# Parses and displays help contents from a command's source file.
|
# Parses and displays help contents from a command's source file.
|
||||||
#
|
#
|
||||||
@@ -13,17 +13,17 @@
|
|||||||
# documentation.
|
# documentation.
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
# Provide rbenv completions
|
# Provide pyenv completions
|
||||||
if [ "$1" = "--complete" ]; then
|
if [ "$1" = "--complete" ]; then
|
||||||
echo --usage
|
echo --usage
|
||||||
exec rbenv-commands
|
exec pyenv-commands
|
||||||
fi
|
fi
|
||||||
|
|
||||||
command_path() {
|
command_path() {
|
||||||
local command="$1"
|
local command="$1"
|
||||||
command -v rbenv-"$command" || command -v rbenv-sh-"$command" || true
|
command -v pyenv-"$command" || command -v pyenv-sh-"$command" || true
|
||||||
}
|
}
|
||||||
|
|
||||||
extract_initial_comment_block() {
|
extract_initial_comment_block() {
|
||||||
@@ -118,7 +118,7 @@ print_help() {
|
|||||||
if [ -n "$usage" ]; then
|
if [ -n "$usage" ]; then
|
||||||
echo "$usage"
|
echo "$usage"
|
||||||
else
|
else
|
||||||
echo "Usage: rbenv ${command}"
|
echo "Usage: pyenv ${command}"
|
||||||
fi
|
fi
|
||||||
if [ -n "$help" ]; then
|
if [ -n "$help" ]; then
|
||||||
echo
|
echo
|
||||||
@@ -144,15 +144,15 @@ if [ "$1" = "--usage" ]; then
|
|||||||
shift
|
shift
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$1" ] || [ "$1" == "rbenv" ]; then
|
if [ -z "$1" ] || [ "$1" == "pyenv" ]; then
|
||||||
echo "Usage: rbenv <command> [<args>]"
|
echo "Usage: pyenv <command> [<args>]"
|
||||||
[ -z "$usage" ] || exit
|
[ -z "$usage" ] || exit
|
||||||
echo
|
echo
|
||||||
echo "Some useful rbenv commands are:"
|
echo "Some useful pyenv commands are:"
|
||||||
print_summaries commands local global shell install uninstall rehash version versions which whence
|
print_summaries commands local global shell install uninstall rehash version versions which whence
|
||||||
echo
|
echo
|
||||||
echo "See \`rbenv help <command>' for information on a specific command."
|
echo "See \`pyenv help <command>' for information on a specific command."
|
||||||
echo "For full documentation, see: https://github.com/rbenv/rbenv#readme"
|
echo "For full documentation, see: https://github.com/pyenv/pyenv#readme"
|
||||||
else
|
else
|
||||||
command="$1"
|
command="$1"
|
||||||
if [ -n "$(command_path "$command")" ]; then
|
if [ -n "$(command_path "$command")" ]; then
|
||||||
@@ -162,7 +162,7 @@ else
|
|||||||
print_help "$command"
|
print_help "$command"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "rbenv: no such command \`$command'" >&2
|
echo "pyenv: no such command \`$command'" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Summary: List hook scripts for a given rbenv command
|
# Summary: List hook scripts for a given pyenv command
|
||||||
# Usage: rbenv hooks <command>
|
# Usage: pyenv hooks <command>
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
# Provide rbenv completions
|
# Provide pyenv completions
|
||||||
if [ "$1" = "--complete" ]; then
|
if [ "$1" = "--complete" ]; then
|
||||||
echo exec
|
echo exec
|
||||||
echo rehash
|
echo rehash
|
||||||
@@ -15,20 +15,20 @@ if [ "$1" = "--complete" ]; then
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RBENV_COMMAND="$1"
|
PYENV_COMMAND="$1"
|
||||||
if [ -z "$RBENV_COMMAND" ]; then
|
if [ -z "$PYENV_COMMAND" ]; then
|
||||||
rbenv-help --usage hooks >&2
|
pyenv-help --usage hooks >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! enable -f "${BASH_SOURCE%/*}"/rbenv-realpath.dylib realpath 2>/dev/null; then
|
if ! enable -f "${BASH_SOURCE%/*}"/pyenv-realpath.dylib realpath 2>/dev/null; then
|
||||||
if [ -n "$RBENV_NATIVE_EXT" ]; then
|
if [ -n "$PYENV_NATIVE_EXT" ]; then
|
||||||
echo "rbenv: failed to load \`realpath' builtin" >&2
|
echo "pyenv: failed to load \`realpath' builtin" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
READLINK=$(type -p greadlink readlink | head -1)
|
READLINK=$(type -p greadlink readlink | head -1)
|
||||||
if [ -z "$READLINK" ]; then
|
if [ -z "$READLINK" ]; then
|
||||||
echo "rbenv: cannot find readlink - are you missing GNU coreutils?" >&2
|
echo "pyenv: cannot find readlink - are you missing GNU coreutils?" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -37,10 +37,10 @@ resolve_link() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
realpath() {
|
realpath() {
|
||||||
local cwd="$PWD"
|
|
||||||
local path="$1"
|
local path="$1"
|
||||||
local name
|
local name
|
||||||
|
# Use a subshell to avoid changing the current path
|
||||||
|
(
|
||||||
while [ -n "$path" ]; do
|
while [ -n "$path" ]; do
|
||||||
name="${path##*/}"
|
name="${path##*/}"
|
||||||
[ "$name" = "$path" ] || cd "${path%/*}"
|
[ "$name" = "$path" ] || cd "${path%/*}"
|
||||||
@@ -48,15 +48,15 @@ realpath() {
|
|||||||
done
|
done
|
||||||
|
|
||||||
echo "${PWD}/$name"
|
echo "${PWD}/$name"
|
||||||
cd "$cwd"
|
)
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
IFS=: hook_paths=($RBENV_HOOK_PATH)
|
IFS=: hook_paths=($PYENV_HOOK_PATH)
|
||||||
|
|
||||||
shopt -s nullglob
|
shopt -s nullglob
|
||||||
for path in "${hook_paths[@]}"; do
|
for path in "${hook_paths[@]}"; do
|
||||||
for script in "$path/$RBENV_COMMAND"/*.bash; do
|
for script in "$path/$PYENV_COMMAND"/*.bash; do
|
||||||
realpath "$script"
|
realpath "$script"
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Summary: Configure the shell environment for rbenv
|
# Summary: Configure the shell environment for pyenv
|
||||||
# Usage: eval "$(rbenv init - [--no-rehash] [<shell>])"
|
# Usage: eval "$(pyenv init - [--no-rehash] [<shell>])"
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
# Provide rbenv completions
|
# Provide pyenv completions
|
||||||
if [ "$1" = "--complete" ]; then
|
if [ "$1" = "--complete" ]; then
|
||||||
echo -
|
echo -
|
||||||
echo --no-rehash
|
echo --no-rehash
|
||||||
@@ -65,15 +65,15 @@ if [ -z "$print" ]; then
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
{ echo "# Load rbenv automatically by appending"
|
{ echo "# Load pyenv automatically by appending"
|
||||||
echo "# the following to ${profile}:"
|
echo "# the following to ${profile}:"
|
||||||
echo
|
echo
|
||||||
case "$shell" in
|
case "$shell" in
|
||||||
fish )
|
fish )
|
||||||
echo 'status --is-interactive; and source (rbenv init -|psub)'
|
echo 'status --is-interactive; and source (pyenv init -|psub)'
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
echo 'eval "$(rbenv init -)"'
|
echo 'eval "$(pyenv init -)"'
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
echo
|
echo
|
||||||
@@ -82,54 +82,54 @@ if [ -z "$print" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p "${RBENV_ROOT}/"{shims,versions}
|
mkdir -p "${PYENV_ROOT}/"{shims,versions}
|
||||||
|
|
||||||
case "$shell" in
|
case "$shell" in
|
||||||
fish )
|
fish )
|
||||||
echo "set -gx PATH '${RBENV_ROOT}/shims' \$PATH"
|
echo "set -gx PATH '${PYENV_ROOT}/shims' \$PATH"
|
||||||
echo "set -gx RBENV_SHELL $shell"
|
echo "set -gx PYENV_SHELL $shell"
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
echo 'export PATH="'${RBENV_ROOT}'/shims:${PATH}"'
|
echo 'export PATH="'${PYENV_ROOT}'/shims:${PATH}"'
|
||||||
echo "export RBENV_SHELL=$shell"
|
echo "export PYENV_SHELL=$shell"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
completion="${root}/completions/rbenv.${shell}"
|
completion="${root}/completions/pyenv.${shell}"
|
||||||
if [ -r "$completion" ]; then
|
if [ -r "$completion" ]; then
|
||||||
echo "source '$completion'"
|
echo "source '$completion'"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$no_rehash" ]; then
|
if [ -z "$no_rehash" ]; then
|
||||||
echo 'command rbenv rehash 2>/dev/null'
|
echo 'command pyenv rehash 2>/dev/null'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
commands=(`rbenv-commands --sh`)
|
commands=(`pyenv-commands --sh`)
|
||||||
case "$shell" in
|
case "$shell" in
|
||||||
fish )
|
fish )
|
||||||
cat <<EOS
|
cat <<EOS
|
||||||
function rbenv
|
function pyenv
|
||||||
set command \$argv[1]
|
set command \$argv[1]
|
||||||
set -e argv[1]
|
set -e argv[1]
|
||||||
|
|
||||||
switch "\$command"
|
switch "\$command"
|
||||||
case ${commands[*]}
|
case ${commands[*]}
|
||||||
source (rbenv "sh-\$command" \$argv|psub)
|
source (pyenv "sh-\$command" \$argv|psub)
|
||||||
case '*'
|
case '*'
|
||||||
command rbenv "\$command" \$argv
|
command pyenv "\$command" \$argv
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
EOS
|
EOS
|
||||||
;;
|
;;
|
||||||
ksh )
|
ksh )
|
||||||
cat <<EOS
|
cat <<EOS
|
||||||
function rbenv {
|
function pyenv {
|
||||||
typeset command
|
typeset command
|
||||||
EOS
|
EOS
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
cat <<EOS
|
cat <<EOS
|
||||||
rbenv() {
|
pyenv() {
|
||||||
local command
|
local command
|
||||||
EOS
|
EOS
|
||||||
;;
|
;;
|
||||||
@@ -145,9 +145,9 @@ cat <<EOS
|
|||||||
|
|
||||||
case "\$command" in
|
case "\$command" in
|
||||||
${commands[*]})
|
${commands[*]})
|
||||||
eval "\$(rbenv "sh-\$command" "\$@")";;
|
eval "\$(pyenv "sh-\$command" "\$@")";;
|
||||||
*)
|
*)
|
||||||
command rbenv "\$command" "\$@";;
|
command pyenv "\$command" "\$@";;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
EOS
|
EOS
|
||||||
48
libexec/pyenv-local
Executable file
48
libexec/pyenv-local
Executable file
@@ -0,0 +1,48 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Summary: Set or show the local application-specific Python version
|
||||||
|
#
|
||||||
|
# Usage: pyenv local <version>
|
||||||
|
# pyenv local --unset
|
||||||
|
#
|
||||||
|
# Sets the local application-specific Python version by writing the
|
||||||
|
# version name to a file named `.python-version'.
|
||||||
|
#
|
||||||
|
# When you run a Python command, pyenv will look for a `.python-version'
|
||||||
|
# file in the current directory and each parent directory. If no such
|
||||||
|
# file is found in the tree, pyenv will use the global Python version
|
||||||
|
# specified with `pyenv global'. A version specified with the
|
||||||
|
# `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.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
|
# Provide pyenv completions
|
||||||
|
if [ "$1" = "--complete" ]; then
|
||||||
|
echo --unset
|
||||||
|
echo system
|
||||||
|
exec pyenv-versions --bare
|
||||||
|
fi
|
||||||
|
|
||||||
|
versions=("$@")
|
||||||
|
|
||||||
|
if [ "$versions" = "--unset" ]; then
|
||||||
|
rm -f .python-version
|
||||||
|
elif [ -n "$versions" ]; then
|
||||||
|
pyenv-version-file-write .python-version "${versions[@]}"
|
||||||
|
else
|
||||||
|
if version_file="$(pyenv-version-file "$PWD")"; then
|
||||||
|
IFS=: versions=($(pyenv-version-file-read "$version_file"))
|
||||||
|
for version in "${versions[@]}"; do
|
||||||
|
echo "$version"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo "pyenv: no local version configured for this directory" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
57
libexec/pyenv-prefix
Executable file
57
libexec/pyenv-prefix
Executable file
@@ -0,0 +1,57 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Summary: Display prefix for a Python version
|
||||||
|
# Usage: pyenv prefix [<version>]
|
||||||
|
#
|
||||||
|
# Displays the directory where a Python version is installed. If no
|
||||||
|
# version is given, `pyenv prefix' displays the location of the
|
||||||
|
# currently selected version.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
|
# Provide pyenv completions
|
||||||
|
if [ "$1" = "--complete" ]; then
|
||||||
|
echo system
|
||||||
|
exec pyenv-versions --bare
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$1" ]; then
|
||||||
|
OLDIFS="$IFS"
|
||||||
|
{ IFS=:
|
||||||
|
export PYENV_VERSION="$*"
|
||||||
|
}
|
||||||
|
IFS="$OLDIFS"
|
||||||
|
elif [ -z "$PYENV_VERSION" ]; then
|
||||||
|
PYENV_VERSION="$(pyenv-version-name)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
PYENV_PREFIX_PATHS=()
|
||||||
|
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
|
||||||
|
PYENV_PREFIX_PATH="${PYTHON_PATH%/bin/*}"
|
||||||
|
PYENV_PREFIX_PATH="${PYENV_PREFIX_PATH:-/}"
|
||||||
|
else
|
||||||
|
echo "pyenv: system version not found in PATH" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
PYENV_PREFIX_PATH="${PYENV_ROOT}/versions/${version}"
|
||||||
|
fi
|
||||||
|
if [ -d "$PYENV_PREFIX_PATH" ]; then
|
||||||
|
PYENV_PREFIX_PATHS=("${PYENV_PREFIX_PATHS[@]}" "$PYENV_PREFIX_PATH")
|
||||||
|
else
|
||||||
|
echo "pyenv: version \`${version}' not installed" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
IFS="$OLDIFS"
|
||||||
|
|
||||||
|
OLDIFS="$IFS"
|
||||||
|
{ IFS=:
|
||||||
|
echo "${PYENV_PREFIX_PATHS[*]}"
|
||||||
|
}
|
||||||
|
IFS="$OLDIFS"
|
||||||
@@ -1,16 +1,16 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Summary: Rehash rbenv shims (run this after installing executables)
|
# Summary: Rehash pyenv shims (run this after installing executables)
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
SHIM_PATH="${RBENV_ROOT}/shims"
|
SHIM_PATH="${PYENV_ROOT}/shims"
|
||||||
PROTOTYPE_SHIM_PATH="${SHIM_PATH}/.rbenv-shim"
|
PROTOTYPE_SHIM_PATH="${SHIM_PATH}/.pyenv-shim"
|
||||||
|
|
||||||
# Create the shims directory if it doesn't already exist.
|
# Create the shims directory if it doesn't already exist.
|
||||||
mkdir -p "$SHIM_PATH"
|
mkdir -p "$SHIM_PATH"
|
||||||
|
|
||||||
# Ensure only one instance of rbenv-rehash is running at a time by
|
# Ensure only one instance of pyenv-rehash is running at a time by
|
||||||
# setting the shell's `noclobber` option and attempting to write to
|
# setting the shell's `noclobber` option and attempting to write to
|
||||||
# the prototype shim file. If the file already exists, print a warning
|
# the prototype shim file. If the file already exists, print a warning
|
||||||
# to stderr and exit with a non-zero status.
|
# to stderr and exit with a non-zero status.
|
||||||
@@ -18,9 +18,9 @@ set -o noclobber
|
|||||||
{ echo > "$PROTOTYPE_SHIM_PATH"
|
{ echo > "$PROTOTYPE_SHIM_PATH"
|
||||||
} 2>/dev/null ||
|
} 2>/dev/null ||
|
||||||
{ if [ -w "$SHIM_PATH" ]; then
|
{ if [ -w "$SHIM_PATH" ]; then
|
||||||
echo "rbenv: cannot rehash: $PROTOTYPE_SHIM_PATH exists"
|
echo "pyenv: cannot rehash: $PROTOTYPE_SHIM_PATH exists"
|
||||||
else
|
else
|
||||||
echo "rbenv: cannot rehash: $SHIM_PATH isn't writable"
|
echo "pyenv: cannot rehash: $SHIM_PATH isn't writable"
|
||||||
fi
|
fi
|
||||||
exit 1
|
exit 1
|
||||||
} >&2
|
} >&2
|
||||||
@@ -35,7 +35,7 @@ remove_prototype_shim() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# The prototype shim file is a script that re-execs itself, passing
|
# The prototype shim file is a script that re-execs itself, passing
|
||||||
# its filename and any arguments to `rbenv exec`. This file is
|
# its filename and any arguments to `pyenv exec`. This file is
|
||||||
# hard-linked for every executable and then removed. The linking
|
# hard-linked for every executable and then removed. The linking
|
||||||
# technique is fast, uses less disk space than unique files, and also
|
# technique is fast, uses less disk space than unique files, and also
|
||||||
# serves as a locking mechanism.
|
# serves as a locking mechanism.
|
||||||
@@ -43,16 +43,16 @@ create_prototype_shim() {
|
|||||||
cat > "$PROTOTYPE_SHIM_PATH" <<SH
|
cat > "$PROTOTYPE_SHIM_PATH" <<SH
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -e
|
set -e
|
||||||
[ -n "\$RBENV_DEBUG" ] && set -x
|
[ -n "\$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
program="\${0##*/}"
|
program="\${0##*/}"
|
||||||
if [ "\$program" = "ruby" ]; then
|
if [[ "\$program" = "python"* ]]; then
|
||||||
for arg; do
|
for arg; do
|
||||||
case "\$arg" in
|
case "\$arg" in
|
||||||
-e* | -- ) break ;;
|
-c* | -- ) break ;;
|
||||||
*/* )
|
*/* )
|
||||||
if [ -f "\$arg" ]; then
|
if [ -f "\$arg" ]; then
|
||||||
export RBENV_DIR="\${arg%/*}"
|
export PYENV_FILE_ARG="\$arg"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
@@ -60,14 +60,14 @@ if [ "\$program" = "ruby" ]; then
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export RBENV_ROOT="$RBENV_ROOT"
|
export PYENV_ROOT="$PYENV_ROOT"
|
||||||
exec "$(command -v rbenv)" exec "\$program" "\$@"
|
exec "$(command -v pyenv)" exec "\$program" "\$@"
|
||||||
SH
|
SH
|
||||||
chmod +x "$PROTOTYPE_SHIM_PATH"
|
chmod +x "$PROTOTYPE_SHIM_PATH"
|
||||||
}
|
}
|
||||||
|
|
||||||
# If the contents of the prototype shim file differ from the contents
|
# If the contents of the prototype shim file differ from the contents
|
||||||
# of the first shim in the shims directory, assume rbenv has been
|
# of the first shim in the shims directory, assume pyenv has been
|
||||||
# upgraded and the existing shims need to be removed.
|
# upgraded and the existing shims need to be removed.
|
||||||
remove_outdated_shims() {
|
remove_outdated_shims() {
|
||||||
local shim
|
local shim
|
||||||
@@ -79,12 +79,12 @@ remove_outdated_shims() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# List basenames of executables for every Ruby version
|
# List basenames of executables for every Python version
|
||||||
list_executable_names() {
|
list_executable_names() {
|
||||||
local version file
|
local version file
|
||||||
rbenv-versions --bare --skip-aliases | \
|
pyenv-versions --bare --skip-aliases | \
|
||||||
while read version; do
|
while read version; do
|
||||||
for file in "${RBENV_ROOT}/versions/${version}/bin/"*; do
|
for file in "${PYENV_ROOT}/versions/${version}/bin/"*; do
|
||||||
echo "${file##*/}"
|
echo "${file##*/}"
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
@@ -141,7 +141,7 @@ make_shims $(list_executable_names | sort -u)
|
|||||||
|
|
||||||
# Allow plugins to register shims.
|
# Allow plugins to register shims.
|
||||||
OLDIFS="$IFS"
|
OLDIFS="$IFS"
|
||||||
IFS=$'\n' scripts=(`rbenv-hooks rehash`)
|
IFS=$'\n' scripts=(`pyenv-hooks rehash`)
|
||||||
IFS="$OLDIFS"
|
IFS="$OLDIFS"
|
||||||
|
|
||||||
for script in "${scripts[@]}"; do
|
for script in "${scripts[@]}"; do
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Summary: Display the root directory where versions and shims are kept
|
# Summary: Display the root directory where versions and shims are kept
|
||||||
echo $RBENV_ROOT
|
echo $PYENV_ROOT
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -e
|
set -e
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
# Provide rbenv completions
|
# Provide pyenv completions
|
||||||
if [ "$1" = "--complete" ]; then
|
if [ "$1" = "--complete" ]; then
|
||||||
exec rbenv-rehash --complete
|
exec pyenv-rehash --complete
|
||||||
fi
|
fi
|
||||||
|
|
||||||
shell="$(basename "${RBENV_SHELL:-$SHELL}")"
|
shell="$(basename "${PYENV_SHELL:-$SHELL}")"
|
||||||
|
|
||||||
# When rbenv shell integration is enabled, delegate to rbenv-rehash,
|
# When pyenv shell integration is enabled, delegate to pyenv-rehash,
|
||||||
# then tell the shell to empty its command lookup cache.
|
# then tell the shell to empty its command lookup cache.
|
||||||
rbenv-rehash
|
pyenv-rehash
|
||||||
|
|
||||||
case "$shell" in
|
case "$shell" in
|
||||||
fish )
|
fish )
|
||||||
121
libexec/pyenv-sh-shell
Executable file
121
libexec/pyenv-sh-shell
Executable file
@@ -0,0 +1,121 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Summary: Set or show the shell-specific Python version
|
||||||
|
#
|
||||||
|
# Usage: pyenv shell <version>...
|
||||||
|
# pyenv shell -
|
||||||
|
# pyenv shell --unset
|
||||||
|
#
|
||||||
|
# Sets a shell-specific Python version by setting the `PYENV_VERSION'
|
||||||
|
# environment variable in your shell. This version overrides local
|
||||||
|
# application-specific versions and the global version.
|
||||||
|
#
|
||||||
|
# <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.
|
||||||
|
#
|
||||||
|
# When `-` is passed instead of the version string, the previously set
|
||||||
|
# version will be restored. With `--unset`, the `PYENV_VERSION`
|
||||||
|
# environment variable gets unset, restoring the environment to the
|
||||||
|
# state before the first `pyenv shell` call.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
|
# Provide pyenv completions
|
||||||
|
if [ "$1" = "--complete" ]; then
|
||||||
|
echo --unset
|
||||||
|
echo system
|
||||||
|
exec pyenv-versions --bare
|
||||||
|
fi
|
||||||
|
|
||||||
|
versions=("$@")
|
||||||
|
shell="$(basename "${PYENV_SHELL:-$SHELL}")"
|
||||||
|
|
||||||
|
if [ -z "$versions" ]; then
|
||||||
|
if [ -z "$PYENV_VERSION" ]; then
|
||||||
|
echo "pyenv: no shell-specific version configured" >&2
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo 'echo "$PYENV_VERSION"'
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$versions" = "--unset" ]; then
|
||||||
|
case "$shell" in
|
||||||
|
fish )
|
||||||
|
echo 'set -gu PYENV_VERSION_OLD "$PYENV_VERSION"'
|
||||||
|
echo "set -e PYENV_VERSION"
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
echo 'PYENV_VERSION_OLD="$PYENV_VERSION"'
|
||||||
|
echo "unset PYENV_VERSION"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$versions" = "-" ]; then
|
||||||
|
case "$shell" in
|
||||||
|
fish )
|
||||||
|
cat <<EOS
|
||||||
|
if set -q PYENV_VERSION_OLD
|
||||||
|
if [ -n "\$PYENV_VERSION_OLD" ]
|
||||||
|
set PYENV_VERSION_OLD_ "\$PYENV_VERSION"
|
||||||
|
set -gx PYENV_VERSION "\$PYENV_VERSION_OLD"
|
||||||
|
set -gu PYENV_VERSION_OLD "\$PYENV_VERSION_OLD_"
|
||||||
|
set -e PYENV_VERSION_OLD_
|
||||||
|
else
|
||||||
|
set -gu PYENV_VERSION_OLD "\$PYENV_VERSION"
|
||||||
|
set -e PYENV_VERSION
|
||||||
|
end
|
||||||
|
else
|
||||||
|
echo "pyenv: PYENV_VERSION_OLD is not set" >&2
|
||||||
|
false
|
||||||
|
end
|
||||||
|
EOS
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
cat <<EOS
|
||||||
|
if [ -n "\${PYENV_VERSION_OLD+x}" ]; then
|
||||||
|
if [ -n "\$PYENV_VERSION_OLD" ]; then
|
||||||
|
PYENV_VERSION_OLD_="\$PYENV_VERSION"
|
||||||
|
export PYENV_VERSION="\$PYENV_VERSION_OLD"
|
||||||
|
PYENV_VERSION_OLD="\$PYENV_VERSION_OLD_"
|
||||||
|
unset PYENV_VERSION_OLD_
|
||||||
|
else
|
||||||
|
PYENV_VERSION_OLD="\$PYENV_VERSION"
|
||||||
|
unset PYENV_VERSION
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "pyenv: PYENV_VERSION_OLD is not set" >&2
|
||||||
|
false
|
||||||
|
fi
|
||||||
|
EOS
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make sure the specified version is installed.
|
||||||
|
if pyenv-prefix "${versions[@]}" >/dev/null; then
|
||||||
|
OLDIFS="$IFS"
|
||||||
|
IFS=: version="${versions[*]}"
|
||||||
|
IFS="$OLDIFS"
|
||||||
|
if [ "$version" != "$PYENV_VERSION" ]; then
|
||||||
|
case "$shell" in
|
||||||
|
fish )
|
||||||
|
echo 'set -gu PYENV_VERSION_OLD "$PYENV_VERSION"'
|
||||||
|
echo "set -gx PYENV_VERSION \"$version\""
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
echo 'PYENV_VERSION_OLD="$PYENV_VERSION"'
|
||||||
|
echo "export PYENV_VERSION=\"${version}\""
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "false"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Summary: List existing rbenv shims
|
# Summary: List existing pyenv shims
|
||||||
# Usage: rbenv shims [--short]
|
# Usage: pyenv shims [--short]
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
# Provide rbenv completions
|
# Provide pyenv completions
|
||||||
if [ "$1" = "--complete" ]; then
|
if [ "$1" = "--complete" ]; then
|
||||||
echo --short
|
echo --short
|
||||||
exit
|
exit
|
||||||
@@ -13,7 +13,7 @@ fi
|
|||||||
|
|
||||||
shopt -s nullglob
|
shopt -s nullglob
|
||||||
|
|
||||||
for command in "${RBENV_ROOT}/shims/"*; do
|
for command in "${PYENV_ROOT}/shims/"*; do
|
||||||
if [ "$1" = "--short" ]; then
|
if [ "$1" = "--short" ]; then
|
||||||
echo "${command##*/}"
|
echo "${command##*/}"
|
||||||
else
|
else
|
||||||
20
libexec/pyenv-version
Executable file
20
libexec/pyenv-version
Executable file
@@ -0,0 +1,20 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Summary: Show the current Python version and its origin
|
||||||
|
#
|
||||||
|
# Shows the currently selected Python version and how it was
|
||||||
|
# selected. To obtain only the version string, use `pyenv
|
||||||
|
# version-name'.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
|
exitcode=0
|
||||||
|
OLDIFS="$IFS"
|
||||||
|
IFS=: PYENV_VERSION_NAMES=($(pyenv-version-name)) || exitcode=$?
|
||||||
|
IFS="$OLDIFS"
|
||||||
|
|
||||||
|
for PYENV_VERSION_NAME in "${PYENV_VERSION_NAMES[@]}"; do
|
||||||
|
echo "$PYENV_VERSION_NAME (set by $(pyenv-version-origin))"
|
||||||
|
done
|
||||||
|
|
||||||
|
exit $exitcode
|
||||||
28
libexec/pyenv-version-file
Executable file
28
libexec/pyenv-version-file
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Usage: pyenv version-file [<dir>]
|
||||||
|
# Summary: Detect the file that sets the current pyenv version
|
||||||
|
set -e
|
||||||
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
|
target_dir="$1"
|
||||||
|
|
||||||
|
find_local_version_file() {
|
||||||
|
local root="$1"
|
||||||
|
while ! [[ "$root" =~ ^//[^/]*$ ]]; do
|
||||||
|
if [ -f "${root}/.python-version" ]; then
|
||||||
|
echo "${root}/.python-version"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
[ -n "$root" ] || break
|
||||||
|
root="${root%/*}"
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -n "$target_dir" ]; then
|
||||||
|
find_local_version_file "$target_dir"
|
||||||
|
else
|
||||||
|
find_local_version_file "$PYENV_DIR" || {
|
||||||
|
[ "$PYENV_DIR" != "$PWD" ] && find_local_version_file "$PWD"
|
||||||
|
} || echo "${PYENV_ROOT}/version"
|
||||||
|
fi
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Usage: rbenv version-file-read <file>
|
# Usage: pyenv version-file-read <file>
|
||||||
set -e
|
set -e
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
VERSION_FILE="$1"
|
VERSION_FILE="$1"
|
||||||
|
|
||||||
@@ -9,11 +9,12 @@ if [ -e "$VERSION_FILE" ]; then
|
|||||||
# Read the first non-whitespace word from the specified version file.
|
# 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.
|
# Be careful not to load it whole in case there's something crazy in it.
|
||||||
IFS="${IFS}"$'\r'
|
IFS="${IFS}"$'\r'
|
||||||
words=( $(cut -b 1-1024 "$VERSION_FILE") )
|
words=($(cut -b 1-1024 "$VERSION_FILE" | sed 's/^\s*\(\S\+\).*/\1/'))
|
||||||
version="${words[0]}"
|
versions=("${words[@]}")
|
||||||
|
|
||||||
if [ -n "$version" ]; then
|
if [ -n "$versions" ]; then
|
||||||
echo "$version"
|
IFS=":"
|
||||||
|
echo "${versions[*]}"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
24
libexec/pyenv-version-file-write
Executable file
24
libexec/pyenv-version-file-write
Executable file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Usage: pyenv version-file-write <file> <version>
|
||||||
|
|
||||||
|
set -e
|
||||||
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
|
PYENV_VERSION_FILE="$1"
|
||||||
|
shift || true
|
||||||
|
versions=("$@")
|
||||||
|
|
||||||
|
if [ -z "$versions" ] || [ -z "$PYENV_VERSION_FILE" ]; then
|
||||||
|
pyenv-help --usage version-file-write >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make sure the specified version is installed.
|
||||||
|
pyenv-prefix "${versions[@]}" >/dev/null
|
||||||
|
|
||||||
|
# Write the version out to disk.
|
||||||
|
# Create an empty file. Using "rm" might cause a permission error.
|
||||||
|
> "$PYENV_VERSION_FILE"
|
||||||
|
for version in "${versions[@]}"; do
|
||||||
|
echo "$version" >> "$PYENV_VERSION_FILE"
|
||||||
|
done
|
||||||
53
libexec/pyenv-version-name
Executable file
53
libexec/pyenv-version-name
Executable file
@@ -0,0 +1,53 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Summary: Show the current Python version
|
||||||
|
set -e
|
||||||
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
|
if [ -z "$PYENV_VERSION" ]; then
|
||||||
|
PYENV_VERSION_FILE="$(pyenv-version-file)"
|
||||||
|
PYENV_VERSION="$(pyenv-version-file-read "$PYENV_VERSION_FILE" || true)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
OLDIFS="$IFS"
|
||||||
|
IFS=$'\n' scripts=(`pyenv-hooks version-name`)
|
||||||
|
IFS="$OLDIFS"
|
||||||
|
for script in "${scripts[@]}"; do
|
||||||
|
source "$script"
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$PYENV_VERSION" ] || [ "$PYENV_VERSION" = "system" ]; then
|
||||||
|
echo "system"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
version_exists() {
|
||||||
|
local version="$1"
|
||||||
|
[ -d "${PYENV_ROOT}/versions/${version}" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
versions=()
|
||||||
|
OLDIFS="$IFS"
|
||||||
|
{ IFS=:
|
||||||
|
any_not_installed=0
|
||||||
|
for version in ${PYENV_VERSION}; do
|
||||||
|
if version_exists "$version" || [ "$version" = "system" ]; then
|
||||||
|
versions=("${versions[@]}" "${version}")
|
||||||
|
elif version_exists "${version#python-}"; then
|
||||||
|
versions=("${versions[@]}" "${version#python-}")
|
||||||
|
else
|
||||||
|
echo "pyenv: version \`$version' is not installed (set by $(pyenv-version-origin))" >&2
|
||||||
|
any_not_installed=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
IFS="$OLDIFS"
|
||||||
|
|
||||||
|
OLDIFS="$IFS"
|
||||||
|
{ IFS=:
|
||||||
|
echo "${versions[*]}"
|
||||||
|
}
|
||||||
|
IFS="$OLDIFS"
|
||||||
|
|
||||||
|
if [ "$any_not_installed" = 1 ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
21
libexec/pyenv-version-origin
Executable file
21
libexec/pyenv-version-origin
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Summary: Explain how the current Python version is set
|
||||||
|
set -e
|
||||||
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
|
unset PYENV_VERSION_ORIGIN
|
||||||
|
|
||||||
|
OLDIFS="$IFS"
|
||||||
|
IFS=$'\n' scripts=(`pyenv-hooks version-origin`)
|
||||||
|
IFS="$OLDIFS"
|
||||||
|
for script in "${scripts[@]}"; do
|
||||||
|
source "$script"
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -n "$PYENV_VERSION_ORIGIN" ]; then
|
||||||
|
echo "$PYENV_VERSION_ORIGIN"
|
||||||
|
elif [ -n "$PYENV_VERSION" ]; then
|
||||||
|
echo "PYENV_VERSION environment variable"
|
||||||
|
else
|
||||||
|
pyenv-version-file
|
||||||
|
fi
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Summary: List all Ruby versions available to rbenv
|
# Summary: List all Python versions available to pyenv
|
||||||
# Usage: rbenv versions [--bare] [--skip-aliases]
|
# Usage: pyenv versions [--bare] [--skip-aliases]
|
||||||
#
|
#
|
||||||
# Lists all Ruby versions found in `$RBENV_ROOT/versions/*'.
|
# Lists all Python versions found in `$PYENV_ROOT/versions/*'.
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
unset bare
|
unset bare
|
||||||
unset skip_aliases
|
unset skip_aliases
|
||||||
# Provide rbenv completions
|
# Provide pyenv completions
|
||||||
for arg; do
|
for arg; do
|
||||||
case "$arg" in
|
case "$arg" in
|
||||||
--complete )
|
--complete )
|
||||||
@@ -19,23 +19,23 @@ for arg; do
|
|||||||
--bare ) bare=1 ;;
|
--bare ) bare=1 ;;
|
||||||
--skip-aliases ) skip_aliases=1 ;;
|
--skip-aliases ) skip_aliases=1 ;;
|
||||||
* )
|
* )
|
||||||
rbenv-help --usage versions >&2
|
pyenv-help --usage versions >&2
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
versions_dir="${RBENV_ROOT}/versions"
|
versions_dir="${PYENV_ROOT}/versions"
|
||||||
|
|
||||||
if ! enable -f "${BASH_SOURCE%/*}"/rbenv-realpath.dylib realpath 2>/dev/null; then
|
if ! enable -f "${BASH_SOURCE%/*}"/pyenv-realpath.dylib realpath 2>/dev/null; then
|
||||||
if [ -n "$RBENV_NATIVE_EXT" ]; then
|
if [ -n "$PYENV_NATIVE_EXT" ]; then
|
||||||
echo "rbenv: failed to load \`realpath' builtin" >&2
|
echo "pyenv: failed to load \`realpath' builtin" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
READLINK=$(type -p greadlink readlink | head -1)
|
READLINK=$(type -p greadlink readlink | head -1)
|
||||||
if [ -z "$READLINK" ]; then
|
if [ -z "$READLINK" ]; then
|
||||||
echo "rbenv: cannot find readlink - are you missing GNU coreutils?" >&2
|
echo "pyenv: cannot find readlink - are you missing GNU coreutils?" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -44,10 +44,11 @@ if ! enable -f "${BASH_SOURCE%/*}"/rbenv-realpath.dylib realpath 2>/dev/null; th
|
|||||||
}
|
}
|
||||||
|
|
||||||
realpath() {
|
realpath() {
|
||||||
local cwd="$PWD"
|
|
||||||
local path="$1"
|
local path="$1"
|
||||||
local name
|
local name
|
||||||
|
|
||||||
|
# Use a subshell to avoid changing the current path
|
||||||
|
(
|
||||||
while [ -n "$path" ]; do
|
while [ -n "$path" ]; do
|
||||||
name="${path##*/}"
|
name="${path##*/}"
|
||||||
[ "$name" = "$path" ] || cd "${path%/*}"
|
[ "$name" = "$path" ] || cd "${path%/*}"
|
||||||
@@ -55,7 +56,7 @@ if ! enable -f "${BASH_SOURCE%/*}"/rbenv-realpath.dylib realpath 2>/dev/null; th
|
|||||||
done
|
done
|
||||||
|
|
||||||
echo "${PWD}/$name"
|
echo "${PWD}/$name"
|
||||||
cd "$cwd"
|
)
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -66,20 +67,34 @@ fi
|
|||||||
if [ -n "$bare" ]; then
|
if [ -n "$bare" ]; then
|
||||||
hit_prefix=""
|
hit_prefix=""
|
||||||
miss_prefix=""
|
miss_prefix=""
|
||||||
current_version=""
|
current_versions=()
|
||||||
include_system=""
|
include_system=""
|
||||||
else
|
else
|
||||||
hit_prefix="* "
|
hit_prefix="* "
|
||||||
miss_prefix=" "
|
miss_prefix=" "
|
||||||
current_version="$(rbenv-version-name || true)"
|
OLDIFS="$IFS"
|
||||||
|
IFS=: current_versions=($(pyenv-version-name || true))
|
||||||
|
IFS="$OLDIFS"
|
||||||
include_system="1"
|
include_system="1"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
num_versions=0
|
num_versions=0
|
||||||
|
|
||||||
|
exists() {
|
||||||
|
local car="$1"
|
||||||
|
local cdar
|
||||||
|
shift
|
||||||
|
for cdar in "$@"; do
|
||||||
|
if [ "${car}" == "${cdar}" ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
print_version() {
|
print_version() {
|
||||||
if [ "$1" == "$current_version" ]; then
|
if exists "$1" "${current_versions[@]}"; then
|
||||||
echo "${hit_prefix}$(rbenv-version 2>/dev/null)"
|
echo "${hit_prefix}$1 (set by $(pyenv-version-origin))"
|
||||||
else
|
else
|
||||||
echo "${miss_prefix}$1"
|
echo "${miss_prefix}$1"
|
||||||
fi
|
fi
|
||||||
@@ -87,7 +102,7 @@ print_version() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Include "system" in the non-bare output, if it exists
|
# Include "system" in the non-bare output, if it exists
|
||||||
if [ -n "$include_system" ] && RBENV_VERSION=system rbenv-which ruby >/dev/null 2>&1; then
|
if [ -n "$include_system" ] && PYENV_VERSION=system pyenv-which python >/dev/null 2>&1; then
|
||||||
print_version system
|
print_version system
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -97,13 +112,20 @@ for path in "$versions_dir"/*; do
|
|||||||
if [ -n "$skip_aliases" ] && [ -L "$path" ]; then
|
if [ -n "$skip_aliases" ] && [ -L "$path" ]; then
|
||||||
target="$(realpath "$path")"
|
target="$(realpath "$path")"
|
||||||
[ "${target%/*}" != "$versions_dir" ] || continue
|
[ "${target%/*}" != "$versions_dir" ] || continue
|
||||||
|
[ "${target%/*/envs/*}" != "$versions_dir" ] || continue
|
||||||
fi
|
fi
|
||||||
print_version "${path##*/}"
|
print_version "${path##*/}"
|
||||||
|
# virtual environments created by anaconda/miniconda
|
||||||
|
for env_path in "${path}/envs/"*; do
|
||||||
|
if [ -d "${env_path}" ]; then
|
||||||
|
print_version "${env_path#${PYENV_ROOT}/versions/}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
shopt -u nullglob
|
shopt -u nullglob
|
||||||
|
|
||||||
if [ "$num_versions" -eq 0 ] && [ -n "$include_system" ]; then
|
if [ "$num_versions" -eq 0 ] && [ -n "$include_system" ]; then
|
||||||
echo "Warning: no Ruby detected on the system" >&2
|
echo "Warning: no Python detected on the system" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
38
libexec/pyenv-whence
Executable file
38
libexec/pyenv-whence
Executable file
@@ -0,0 +1,38 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Summary: List all Python versions that contain the given executable
|
||||||
|
# Usage: pyenv whence [--path] <command>
|
||||||
|
|
||||||
|
set -e
|
||||||
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
|
# Provide pyenv completions
|
||||||
|
if [ "$1" = "--complete" ]; then
|
||||||
|
echo --path
|
||||||
|
exec pyenv-shims --short
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "--path" ]; then
|
||||||
|
print_paths="1"
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
print_paths=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
whence() {
|
||||||
|
local command="$1"
|
||||||
|
pyenv-versions --bare | while read version; do
|
||||||
|
path="$(pyenv-prefix "$version")/bin/${command}"
|
||||||
|
if [ -x "$path" ]; then
|
||||||
|
[ "$print_paths" ] && echo "$path" || echo "$version"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
PYENV_COMMAND="$1"
|
||||||
|
if [ -z "$PYENV_COMMAND" ]; then
|
||||||
|
pyenv-help --usage whence >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
result="$(whence "$PYENV_COMMAND")"
|
||||||
|
[ -n "$result" ] && echo "$result"
|
||||||
89
libexec/pyenv-which
Executable file
89
libexec/pyenv-which
Executable file
@@ -0,0 +1,89 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Summary: Display the full path to an executable
|
||||||
|
#
|
||||||
|
# Usage: pyenv which <command>
|
||||||
|
#
|
||||||
|
# Displays the full path to the executable that pyenv will invoke when
|
||||||
|
# you run the given command.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
|
# Provide pyenv completions
|
||||||
|
if [ "$1" = "--complete" ]; then
|
||||||
|
exec pyenv-shims --short
|
||||||
|
fi
|
||||||
|
|
||||||
|
remove_from_path() {
|
||||||
|
local path_to_remove="$1"
|
||||||
|
local path_before
|
||||||
|
local result=":${PATH//\~/$HOME}:"
|
||||||
|
while [ "$path_before" != "$result" ]; do
|
||||||
|
path_before="$result"
|
||||||
|
result="${result//:$path_to_remove:/:}"
|
||||||
|
done
|
||||||
|
result="${result%:}"
|
||||||
|
echo "${result#:}"
|
||||||
|
}
|
||||||
|
|
||||||
|
PYENV_COMMAND="$1"
|
||||||
|
|
||||||
|
if [ -z "$PYENV_COMMAND" ]; then
|
||||||
|
pyenv-help --usage which >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
OLDIFS="$IFS"
|
||||||
|
IFS=: versions=(${PYENV_VERSION:-$(pyenv-version-name)})
|
||||||
|
IFS="$OLDIFS"
|
||||||
|
|
||||||
|
for version in "${versions[@]}"; do
|
||||||
|
if [ "$version" = "system" ]; then
|
||||||
|
PATH="$(remove_from_path "${PYENV_ROOT}/shims")"
|
||||||
|
PYENV_COMMAND_PATH="$(command -v "$PYENV_COMMAND" || true)"
|
||||||
|
else
|
||||||
|
PYENV_COMMAND_PATH="${PYENV_ROOT}/versions/${version}/bin/${PYENV_COMMAND}"
|
||||||
|
fi
|
||||||
|
if [ -x "$PYENV_COMMAND_PATH" ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
OLDIFS="$IFS"
|
||||||
|
IFS=$'\n' scripts=(`pyenv-hooks which`)
|
||||||
|
IFS="$OLDIFS"
|
||||||
|
for script in "${scripts[@]}"; do
|
||||||
|
source "$script"
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -x "$PYENV_COMMAND_PATH" ]; then
|
||||||
|
echo "$PYENV_COMMAND_PATH"
|
||||||
|
else
|
||||||
|
any_not_installed=0
|
||||||
|
for version in "${versions[@]}"; do
|
||||||
|
if [ "$version" = "system" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
if ! [ -d "${PYENV_ROOT}/versions/${version}" ]; then
|
||||||
|
echo "pyenv: version \`$version' is not installed (set by $(pyenv-version-origin))" >&2
|
||||||
|
any_not_installed=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ "$any_not_installed" = 1 ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "pyenv: $PYENV_COMMAND: command not found" >&2
|
||||||
|
|
||||||
|
versions="$(pyenv-whence "$PYENV_COMMAND" || true)"
|
||||||
|
if [ -n "$versions" ]; then
|
||||||
|
{ echo
|
||||||
|
echo "The \`$1' command exists in these Python versions:"
|
||||||
|
echo "$versions" | sed 's/^/ /g'
|
||||||
|
echo
|
||||||
|
} >&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 127
|
||||||
|
fi
|
||||||
121
libexec/rbenv
121
libexec/rbenv
@@ -1,121 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
unset CDPATH
|
|
||||||
|
|
||||||
if [ "$1" = "--debug" ]; then
|
|
||||||
export RBENV_DEBUG=1
|
|
||||||
shift
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$RBENV_DEBUG" ]; then
|
|
||||||
export PS4='+ [${BASH_SOURCE##*/}:${LINENO}] '
|
|
||||||
set -x
|
|
||||||
fi
|
|
||||||
|
|
||||||
abort() {
|
|
||||||
{ if [ "$#" -eq 0 ]; then cat -
|
|
||||||
else echo "rbenv: $*"
|
|
||||||
fi
|
|
||||||
} >&2
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
if enable -f "${BASH_SOURCE%/*}"/../libexec/rbenv-realpath.dylib realpath 2>/dev/null; then
|
|
||||||
abs_dirname() {
|
|
||||||
local path="$(realpath "$1")"
|
|
||||||
echo "${path%/*}"
|
|
||||||
}
|
|
||||||
else
|
|
||||||
[ -z "$RBENV_NATIVE_EXT" ] || abort "failed to load \`realpath' builtin"
|
|
||||||
|
|
||||||
READLINK=$(type -p greadlink readlink | head -1)
|
|
||||||
[ -n "$READLINK" ] || abort "cannot find readlink - are you missing GNU coreutils?"
|
|
||||||
|
|
||||||
resolve_link() {
|
|
||||||
$READLINK "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
abs_dirname() {
|
|
||||||
local cwd="$PWD"
|
|
||||||
local path="$1"
|
|
||||||
|
|
||||||
while [ -n "$path" ]; do
|
|
||||||
cd "${path%/*}"
|
|
||||||
local name="${path##*/}"
|
|
||||||
path="$(resolve_link "$name" || true)"
|
|
||||||
done
|
|
||||||
|
|
||||||
pwd
|
|
||||||
cd "$cwd"
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "${RBENV_ROOT}" ]; then
|
|
||||||
RBENV_ROOT="${HOME}/.rbenv"
|
|
||||||
else
|
|
||||||
RBENV_ROOT="${RBENV_ROOT%/}"
|
|
||||||
fi
|
|
||||||
export RBENV_ROOT
|
|
||||||
|
|
||||||
if [ -z "${RBENV_DIR}" ]; then
|
|
||||||
RBENV_DIR="$PWD"
|
|
||||||
else
|
|
||||||
cd "$RBENV_DIR" 2>/dev/null || abort "cannot change working directory to \`$RBENV_DIR'"
|
|
||||||
RBENV_DIR="$PWD"
|
|
||||||
cd "$OLDPWD"
|
|
||||||
fi
|
|
||||||
export RBENV_DIR
|
|
||||||
|
|
||||||
|
|
||||||
shopt -s nullglob
|
|
||||||
|
|
||||||
bin_path="$(abs_dirname "$0")"
|
|
||||||
for plugin_bin in "${RBENV_ROOT}/plugins/"*/bin; do
|
|
||||||
PATH="${plugin_bin}:${PATH}"
|
|
||||||
done
|
|
||||||
export PATH="${bin_path}:${PATH}"
|
|
||||||
|
|
||||||
RBENV_HOOK_PATH="${RBENV_HOOK_PATH}:${RBENV_ROOT}/rbenv.d"
|
|
||||||
if [ "${bin_path%/*}" != "$RBENV_ROOT" ]; then
|
|
||||||
# Add rbenv's own `rbenv.d` unless rbenv was cloned to RBENV_ROOT
|
|
||||||
RBENV_HOOK_PATH="${RBENV_HOOK_PATH}:${bin_path%/*}/rbenv.d"
|
|
||||||
fi
|
|
||||||
RBENV_HOOK_PATH="${RBENV_HOOK_PATH}:/usr/local/etc/rbenv.d:/etc/rbenv.d:/usr/lib/rbenv/hooks"
|
|
||||||
for plugin_hook in "${RBENV_ROOT}/plugins/"*/etc/rbenv.d; do
|
|
||||||
RBENV_HOOK_PATH="${RBENV_HOOK_PATH}:${plugin_hook}"
|
|
||||||
done
|
|
||||||
RBENV_HOOK_PATH="${RBENV_HOOK_PATH#:}"
|
|
||||||
export RBENV_HOOK_PATH
|
|
||||||
|
|
||||||
shopt -u nullglob
|
|
||||||
|
|
||||||
|
|
||||||
command="$1"
|
|
||||||
case "$command" in
|
|
||||||
"" )
|
|
||||||
{ rbenv---version
|
|
||||||
rbenv-help
|
|
||||||
} | abort
|
|
||||||
;;
|
|
||||||
-v | --version )
|
|
||||||
exec rbenv---version
|
|
||||||
;;
|
|
||||||
-h | --help )
|
|
||||||
exec rbenv-help
|
|
||||||
;;
|
|
||||||
* )
|
|
||||||
command_path="$(command -v "rbenv-$command" || true)"
|
|
||||||
[ -n "$command_path" ] || abort "no such command \`$command'"
|
|
||||||
|
|
||||||
shift 1
|
|
||||||
if [ "$1" = --help ]; then
|
|
||||||
if [[ "$command" == "sh-"* ]]; then
|
|
||||||
echo "rbenv help \"$command\""
|
|
||||||
else
|
|
||||||
exec rbenv-help "$command"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
exec "$command_path" "$@"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# Usage: rbenv completions <command> [arg1 arg2...]
|
|
||||||
|
|
||||||
set -e
|
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
|
||||||
|
|
||||||
COMMAND="$1"
|
|
||||||
if [ -z "$COMMAND" ]; then
|
|
||||||
rbenv-help --usage completions >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Provide rbenv completions
|
|
||||||
if [ "$COMMAND" = "--complete" ]; then
|
|
||||||
exec rbenv-commands
|
|
||||||
fi
|
|
||||||
|
|
||||||
COMMAND_PATH="$(command -v "rbenv-$COMMAND" || command -v "rbenv-sh-$COMMAND")"
|
|
||||||
|
|
||||||
# --help is provided automatically
|
|
||||||
echo --help
|
|
||||||
|
|
||||||
if grep -iE "^([#%]|--|//) provide rbenv completions" "$COMMAND_PATH" >/dev/null; then
|
|
||||||
shift
|
|
||||||
exec "$COMMAND_PATH" --complete "$@"
|
|
||||||
fi
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# Summary: Run an executable with the selected Ruby version
|
|
||||||
#
|
|
||||||
# Usage: rbenv exec <command> [arg1 arg2...]
|
|
||||||
#
|
|
||||||
# Runs an executable by first preparing PATH so that the selected Ruby
|
|
||||||
# version's `bin' directory is at the front.
|
|
||||||
#
|
|
||||||
# For example, if the currently selected Ruby version is 1.9.3-p327:
|
|
||||||
# rbenv exec bundle install
|
|
||||||
#
|
|
||||||
# is equivalent to:
|
|
||||||
# PATH="$RBENV_ROOT/versions/1.9.3-p327/bin:$PATH" bundle install
|
|
||||||
|
|
||||||
set -e
|
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
|
||||||
|
|
||||||
# Provide rbenv completions
|
|
||||||
if [ "$1" = "--complete" ]; then
|
|
||||||
exec rbenv-shims --short
|
|
||||||
fi
|
|
||||||
|
|
||||||
RBENV_VERSION="$(rbenv-version-name)"
|
|
||||||
RBENV_COMMAND="$1"
|
|
||||||
|
|
||||||
if [ -z "$RBENV_COMMAND" ]; then
|
|
||||||
rbenv-help --usage exec >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
export RBENV_VERSION
|
|
||||||
RBENV_COMMAND_PATH="$(rbenv-which "$RBENV_COMMAND")"
|
|
||||||
RBENV_BIN_PATH="${RBENV_COMMAND_PATH%/*}"
|
|
||||||
|
|
||||||
OLDIFS="$IFS"
|
|
||||||
IFS=$'\n' scripts=(`rbenv-hooks exec`)
|
|
||||||
IFS="$OLDIFS"
|
|
||||||
for script in "${scripts[@]}"; do
|
|
||||||
source "$script"
|
|
||||||
done
|
|
||||||
|
|
||||||
shift 1
|
|
||||||
if [ "$RBENV_VERSION" != "system" ]; then
|
|
||||||
export PATH="${RBENV_BIN_PATH}:${PATH}"
|
|
||||||
fi
|
|
||||||
exec -a "$RBENV_COMMAND" "$RBENV_COMMAND_PATH" "$@"
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# Summary: Set or show the global Ruby version
|
|
||||||
#
|
|
||||||
# Usage: rbenv global <version>
|
|
||||||
#
|
|
||||||
# Sets the global Ruby version. You can override the global version at
|
|
||||||
# any time by setting a directory-specific version with `rbenv local'
|
|
||||||
# or by setting the `RBENV_VERSION' environment variable.
|
|
||||||
#
|
|
||||||
# <version> should be a string matching a Ruby version known to rbenv.
|
|
||||||
# The special version string `system' will use your default system Ruby.
|
|
||||||
# Run `rbenv versions' for a list of available Ruby versions.
|
|
||||||
|
|
||||||
set -e
|
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
|
||||||
|
|
||||||
# Provide rbenv completions
|
|
||||||
if [ "$1" = "--complete" ]; then
|
|
||||||
echo system
|
|
||||||
exec rbenv-versions --bare
|
|
||||||
fi
|
|
||||||
|
|
||||||
RBENV_VERSION="$1"
|
|
||||||
RBENV_VERSION_FILE="${RBENV_ROOT}/version"
|
|
||||||
|
|
||||||
if [ -n "$RBENV_VERSION" ]; then
|
|
||||||
rbenv-version-file-write "$RBENV_VERSION_FILE" "$RBENV_VERSION"
|
|
||||||
else
|
|
||||||
rbenv-version-file-read "$RBENV_VERSION_FILE" || echo system
|
|
||||||
fi
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# Summary: Set or show the local application-specific Ruby version
|
|
||||||
#
|
|
||||||
# Usage: rbenv local <version>
|
|
||||||
# rbenv local --unset
|
|
||||||
#
|
|
||||||
# Sets the local application-specific Ruby version by writing the
|
|
||||||
# version name to a file named `.ruby-version'.
|
|
||||||
#
|
|
||||||
# When you run a Ruby command, rbenv will look for a `.ruby-version'
|
|
||||||
# file in the current directory and each parent directory. If no such
|
|
||||||
# file is found in the tree, rbenv will use the global Ruby version
|
|
||||||
# specified with `rbenv global'. A version specified with the
|
|
||||||
# `RBENV_VERSION' environment variable takes precedence over local
|
|
||||||
# and global versions.
|
|
||||||
#
|
|
||||||
# <version> should be a string matching a Ruby version known to rbenv.
|
|
||||||
# The special version string `system' will use your default system Ruby.
|
|
||||||
# Run `rbenv versions' for a list of available Ruby versions.
|
|
||||||
|
|
||||||
set -e
|
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
|
||||||
|
|
||||||
# Provide rbenv completions
|
|
||||||
if [ "$1" = "--complete" ]; then
|
|
||||||
echo --unset
|
|
||||||
echo system
|
|
||||||
exec rbenv-versions --bare
|
|
||||||
fi
|
|
||||||
|
|
||||||
RBENV_VERSION="$1"
|
|
||||||
|
|
||||||
if [ "$RBENV_VERSION" = "--unset" ]; then
|
|
||||||
rm -f .ruby-version
|
|
||||||
elif [ -n "$RBENV_VERSION" ]; then
|
|
||||||
rbenv-version-file-write .ruby-version "$RBENV_VERSION"
|
|
||||||
else
|
|
||||||
if version_file="$(rbenv-version-file "$PWD")"; then
|
|
||||||
rbenv-version-file-read "$version_file"
|
|
||||||
else
|
|
||||||
echo "rbenv: no local version configured for this directory" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# Summary: Display prefix for a Ruby version
|
|
||||||
# Usage: rbenv prefix [<version>]
|
|
||||||
#
|
|
||||||
# Displays the directory where a Ruby version is installed. If no
|
|
||||||
# version is given, `rbenv prefix' displays the location of the
|
|
||||||
# currently selected version.
|
|
||||||
|
|
||||||
set -e
|
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
|
||||||
|
|
||||||
# Provide rbenv completions
|
|
||||||
if [ "$1" = "--complete" ]; then
|
|
||||||
echo system
|
|
||||||
exec rbenv-versions --bare
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$1" ]; then
|
|
||||||
export RBENV_VERSION="$1"
|
|
||||||
elif [ -z "$RBENV_VERSION" ]; then
|
|
||||||
RBENV_VERSION="$(rbenv-version-name)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$RBENV_VERSION" = "system" ]; then
|
|
||||||
if RUBY_PATH="$(rbenv-which ruby 2>/dev/null)"; then
|
|
||||||
RUBY_PATH="${RUBY_PATH%/*}"
|
|
||||||
RBENV_PREFIX_PATH="${RUBY_PATH%/bin}"
|
|
||||||
echo "${RBENV_PREFIX_PATH:-/}"
|
|
||||||
exit
|
|
||||||
else
|
|
||||||
echo "rbenv: system version not found in PATH" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
RBENV_PREFIX_PATH="${RBENV_ROOT}/versions/${RBENV_VERSION}"
|
|
||||||
if [ ! -d "$RBENV_PREFIX_PATH" ]; then
|
|
||||||
echo "rbenv: version \`${RBENV_VERSION}' not installed" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$RBENV_PREFIX_PATH"
|
|
||||||
@@ -1,118 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# Summary: Set or show the shell-specific Ruby version
|
|
||||||
#
|
|
||||||
# Usage: rbenv shell <version>
|
|
||||||
# rbenv shell -
|
|
||||||
# rbenv shell --unset
|
|
||||||
#
|
|
||||||
# Sets a shell-specific Ruby version by setting the `RBENV_VERSION'
|
|
||||||
# environment variable in your shell. This version overrides local
|
|
||||||
# application-specific versions and the global version.
|
|
||||||
#
|
|
||||||
# <version> should be a string matching a Ruby version known to rbenv.
|
|
||||||
# The special version string `system' will use your default system Ruby.
|
|
||||||
# Run `rbenv versions' for a list of available Ruby versions.
|
|
||||||
#
|
|
||||||
# When `-` is passed instead of the version string, the previously set
|
|
||||||
# version will be restored. With `--unset`, the `RBENV_VERSION`
|
|
||||||
# environment variable gets unset, restoring the environment to the
|
|
||||||
# state before the first `rbenv shell` call.
|
|
||||||
|
|
||||||
set -e
|
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
|
||||||
|
|
||||||
# Provide rbenv completions
|
|
||||||
if [ "$1" = "--complete" ]; then
|
|
||||||
echo --unset
|
|
||||||
echo system
|
|
||||||
exec rbenv-versions --bare
|
|
||||||
fi
|
|
||||||
|
|
||||||
version="$1"
|
|
||||||
shell="$(basename "${RBENV_SHELL:-$SHELL}")"
|
|
||||||
|
|
||||||
if [ -z "$version" ]; then
|
|
||||||
if [ -z "$RBENV_VERSION" ]; then
|
|
||||||
echo "rbenv: no shell-specific version configured" >&2
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
echo 'echo "$RBENV_VERSION"'
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$version" = "--unset" ]; then
|
|
||||||
case "$shell" in
|
|
||||||
fish )
|
|
||||||
echo 'set -gu RBENV_VERSION_OLD "$RBENV_VERSION"'
|
|
||||||
echo "set -e RBENV_VERSION"
|
|
||||||
;;
|
|
||||||
* )
|
|
||||||
echo 'RBENV_VERSION_OLD="$RBENV_VERSION"'
|
|
||||||
echo "unset RBENV_VERSION"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$version" = "-" ]; then
|
|
||||||
case "$shell" in
|
|
||||||
fish )
|
|
||||||
cat <<EOS
|
|
||||||
if set -q RBENV_VERSION_OLD
|
|
||||||
if [ -n "\$RBENV_VERSION_OLD" ]
|
|
||||||
set RBENV_VERSION_OLD_ "\$RBENV_VERSION"
|
|
||||||
set -gx RBENV_VERSION "\$RBENV_VERSION_OLD"
|
|
||||||
set -gu RBENV_VERSION_OLD "\$RBENV_VERSION_OLD_"
|
|
||||||
set -e RBENV_VERSION_OLD_
|
|
||||||
else
|
|
||||||
set -gu RBENV_VERSION_OLD "\$RBENV_VERSION"
|
|
||||||
set -e RBENV_VERSION
|
|
||||||
end
|
|
||||||
else
|
|
||||||
echo "rbenv: RBENV_VERSION_OLD is not set" >&2
|
|
||||||
false
|
|
||||||
end
|
|
||||||
EOS
|
|
||||||
;;
|
|
||||||
* )
|
|
||||||
cat <<EOS
|
|
||||||
if [ -n "\${RBENV_VERSION_OLD+x}" ]; then
|
|
||||||
if [ -n "\$RBENV_VERSION_OLD" ]; then
|
|
||||||
RBENV_VERSION_OLD_="\$RBENV_VERSION"
|
|
||||||
export RBENV_VERSION="\$RBENV_VERSION_OLD"
|
|
||||||
RBENV_VERSION_OLD="\$RBENV_VERSION_OLD_"
|
|
||||||
unset RBENV_VERSION_OLD_
|
|
||||||
else
|
|
||||||
RBENV_VERSION_OLD="\$RBENV_VERSION"
|
|
||||||
unset RBENV_VERSION
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "rbenv: RBENV_VERSION_OLD is not set" >&2
|
|
||||||
false
|
|
||||||
fi
|
|
||||||
EOS
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make sure the specified version is installed.
|
|
||||||
if rbenv-prefix "$version" >/dev/null; then
|
|
||||||
if [ "$version" != "$RBENV_VERSION" ]; then
|
|
||||||
case "$shell" in
|
|
||||||
fish )
|
|
||||||
echo 'set -gu RBENV_VERSION_OLD "$RBENV_VERSION"'
|
|
||||||
echo "set -gx RBENV_VERSION \"$version\""
|
|
||||||
;;
|
|
||||||
* )
|
|
||||||
echo 'RBENV_VERSION_OLD="$RBENV_VERSION"'
|
|
||||||
echo "export RBENV_VERSION=\"$version\""
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "false"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# Summary: Show the current Ruby version and its origin
|
|
||||||
#
|
|
||||||
# Shows the currently selected Ruby version and how it was
|
|
||||||
# selected. To obtain only the version string, use `rbenv
|
|
||||||
# version-name'.
|
|
||||||
|
|
||||||
set -e
|
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
|
||||||
|
|
||||||
echo "$(rbenv-version-name) (set by $(rbenv-version-origin))"
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# Usage: rbenv version-file [<dir>]
|
|
||||||
# Summary: Detect the file that sets the current rbenv version
|
|
||||||
set -e
|
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
|
||||||
|
|
||||||
target_dir="$1"
|
|
||||||
|
|
||||||
find_local_version_file() {
|
|
||||||
local root="$1"
|
|
||||||
while ! [[ "$root" =~ ^//[^/]*$ ]]; do
|
|
||||||
if [ -e "${root}/.ruby-version" ]; then
|
|
||||||
echo "${root}/.ruby-version"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
[ -n "$root" ] || break
|
|
||||||
root="${root%/*}"
|
|
||||||
done
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ -n "$target_dir" ]; then
|
|
||||||
find_local_version_file "$target_dir"
|
|
||||||
else
|
|
||||||
find_local_version_file "$RBENV_DIR" || {
|
|
||||||
[ "$RBENV_DIR" != "$PWD" ] && find_local_version_file "$PWD"
|
|
||||||
} || echo "${RBENV_ROOT}/version"
|
|
||||||
fi
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# Usage: rbenv version-file-write <file> <version>
|
|
||||||
|
|
||||||
set -e
|
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
|
||||||
|
|
||||||
RBENV_VERSION_FILE="$1"
|
|
||||||
RBENV_VERSION="$2"
|
|
||||||
|
|
||||||
if [ -z "$RBENV_VERSION" ] || [ -z "$RBENV_VERSION_FILE" ]; then
|
|
||||||
rbenv-help --usage version-file-write >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make sure the specified version is installed.
|
|
||||||
rbenv-prefix "$RBENV_VERSION" >/dev/null
|
|
||||||
|
|
||||||
# Write the version out to disk.
|
|
||||||
echo "$RBENV_VERSION" > "$RBENV_VERSION_FILE"
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# Summary: Show the current Ruby version
|
|
||||||
set -e
|
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
|
||||||
|
|
||||||
if [ -z "$RBENV_VERSION" ]; then
|
|
||||||
RBENV_VERSION_FILE="$(rbenv-version-file)"
|
|
||||||
RBENV_VERSION="$(rbenv-version-file-read "$RBENV_VERSION_FILE" || true)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
OLDIFS="$IFS"
|
|
||||||
IFS=$'\n' scripts=(`rbenv-hooks version-name`)
|
|
||||||
IFS="$OLDIFS"
|
|
||||||
for script in "${scripts[@]}"; do
|
|
||||||
source "$script"
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -z "$RBENV_VERSION" ] || [ "$RBENV_VERSION" = "system" ]; then
|
|
||||||
echo "system"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
version_exists() {
|
|
||||||
local version="$1"
|
|
||||||
[ -d "${RBENV_ROOT}/versions/${version}" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
if version_exists "$RBENV_VERSION"; then
|
|
||||||
echo "$RBENV_VERSION"
|
|
||||||
elif version_exists "${RBENV_VERSION#ruby-}"; then
|
|
||||||
echo "${RBENV_VERSION#ruby-}"
|
|
||||||
else
|
|
||||||
echo "rbenv: version \`$RBENV_VERSION' is not installed (set by $(rbenv-version-origin))" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# Summary: Explain how the current Ruby version is set
|
|
||||||
set -e
|
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
|
||||||
|
|
||||||
unset RBENV_VERSION_ORIGIN
|
|
||||||
|
|
||||||
OLDIFS="$IFS"
|
|
||||||
IFS=$'\n' scripts=(`rbenv-hooks version-origin`)
|
|
||||||
IFS="$OLDIFS"
|
|
||||||
for script in "${scripts[@]}"; do
|
|
||||||
source "$script"
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -n "$RBENV_VERSION_ORIGIN" ]; then
|
|
||||||
echo "$RBENV_VERSION_ORIGIN"
|
|
||||||
elif [ -n "$RBENV_VERSION" ]; then
|
|
||||||
echo "RBENV_VERSION environment variable"
|
|
||||||
else
|
|
||||||
rbenv-version-file
|
|
||||||
fi
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# Summary: List all Ruby versions that contain the given executable
|
|
||||||
# Usage: rbenv whence [--path] <command>
|
|
||||||
|
|
||||||
set -e
|
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
|
||||||
|
|
||||||
# Provide rbenv completions
|
|
||||||
if [ "$1" = "--complete" ]; then
|
|
||||||
echo --path
|
|
||||||
exec rbenv-shims --short
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$1" = "--path" ]; then
|
|
||||||
print_paths="1"
|
|
||||||
shift
|
|
||||||
else
|
|
||||||
print_paths=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
whence() {
|
|
||||||
local command="$1"
|
|
||||||
rbenv-versions --bare | while read version; do
|
|
||||||
path="$(rbenv-prefix "$version")/bin/${command}"
|
|
||||||
if [ -x "$path" ]; then
|
|
||||||
[ "$print_paths" ] && echo "$path" || echo "$version"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
RBENV_COMMAND="$1"
|
|
||||||
if [ -z "$RBENV_COMMAND" ]; then
|
|
||||||
rbenv-help --usage whence >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
result="$(whence "$RBENV_COMMAND")"
|
|
||||||
[ -n "$result" ] && echo "$result"
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# Summary: Display the full path to an executable
|
|
||||||
#
|
|
||||||
# Usage: rbenv which <command>
|
|
||||||
#
|
|
||||||
# Displays the full path to the executable that rbenv will invoke when
|
|
||||||
# you run the given command.
|
|
||||||
|
|
||||||
set -e
|
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
|
||||||
|
|
||||||
# Provide rbenv completions
|
|
||||||
if [ "$1" = "--complete" ]; then
|
|
||||||
exec rbenv-shims --short
|
|
||||||
fi
|
|
||||||
|
|
||||||
remove_from_path() {
|
|
||||||
local path_to_remove="$1"
|
|
||||||
local path_before
|
|
||||||
local result=":${PATH//\~/$HOME}:"
|
|
||||||
while [ "$path_before" != "$result" ]; do
|
|
||||||
path_before="$result"
|
|
||||||
result="${result//:$path_to_remove:/:}"
|
|
||||||
done
|
|
||||||
result="${result%:}"
|
|
||||||
echo "${result#:}"
|
|
||||||
}
|
|
||||||
|
|
||||||
RBENV_COMMAND="$1"
|
|
||||||
|
|
||||||
if [ -z "$RBENV_COMMAND" ]; then
|
|
||||||
rbenv-help --usage which >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
RBENV_VERSION="${RBENV_VERSION:-$(rbenv-version-name)}"
|
|
||||||
|
|
||||||
if [ "$RBENV_VERSION" = "system" ]; then
|
|
||||||
PATH="$(remove_from_path "${RBENV_ROOT}/shims")"
|
|
||||||
RBENV_COMMAND_PATH="$(command -v "$RBENV_COMMAND" || true)"
|
|
||||||
else
|
|
||||||
RBENV_COMMAND_PATH="${RBENV_ROOT}/versions/${RBENV_VERSION}/bin/${RBENV_COMMAND}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
OLDIFS="$IFS"
|
|
||||||
IFS=$'\n' scripts=(`rbenv-hooks which`)
|
|
||||||
IFS="$OLDIFS"
|
|
||||||
for script in "${scripts[@]}"; do
|
|
||||||
source "$script"
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -x "$RBENV_COMMAND_PATH" ]; then
|
|
||||||
echo "$RBENV_COMMAND_PATH"
|
|
||||||
elif [ "$RBENV_VERSION" != "system" ] && [ ! -d "${RBENV_ROOT}/versions/${RBENV_VERSION}" ]; then
|
|
||||||
echo "rbenv: version \`$RBENV_VERSION' is not installed (set by $(rbenv-version-origin))" >&2
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
echo "rbenv: $RBENV_COMMAND: command not found" >&2
|
|
||||||
|
|
||||||
versions="$(rbenv-whence "$RBENV_COMMAND" || true)"
|
|
||||||
if [ -n "$versions" ]; then
|
|
||||||
{ echo
|
|
||||||
echo "The \`$1' command exists in these Ruby versions:"
|
|
||||||
echo "$versions" | sed 's/^/ /g'
|
|
||||||
echo
|
|
||||||
} >&2
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 127
|
|
||||||
fi
|
|
||||||
4
plugins/.gitignore
vendored
Normal file
4
plugins/.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
/*
|
||||||
|
!/.gitignore
|
||||||
|
!/version-ext-compat
|
||||||
|
!/python-build
|
||||||
20
plugins/python-build/LICENSE
Normal file
20
plugins/python-build/LICENSE
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
Copyright (c) 2013 Yamashita, Yuu
|
||||||
|
Copyright (c) 2012-2013 Sam Stephenson
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||||
|
of the Software, and to permit persons to whom the Software is furnished to do
|
||||||
|
so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
222
plugins/python-build/README.md
Normal file
222
plugins/python-build/README.md
Normal file
@@ -0,0 +1,222 @@
|
|||||||
|
# python-build
|
||||||
|
|
||||||
|
python-build is a [pyenv](https://github.com/pyenv/pyenv) plugin that
|
||||||
|
provides a `pyenv install` command to compile and install different versions
|
||||||
|
of Python on UNIX-like systems.
|
||||||
|
|
||||||
|
You can also use python-build without pyenv in environments where you need
|
||||||
|
precise control over Python version installation.
|
||||||
|
|
||||||
|
See the [list of releases](https://github.com/pyenv/pyenv/releases)
|
||||||
|
for changes in each version.
|
||||||
|
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Installing as a pyenv plugin (recommended)
|
||||||
|
|
||||||
|
You need nothing to do since python-build is bundled with pyenv by
|
||||||
|
default.
|
||||||
|
|
||||||
|
### Installing as a standalone program (advanced)
|
||||||
|
|
||||||
|
Installing python-build as a standalone program will give you access to the
|
||||||
|
`python-build` command for precise control over Python version installation. If you
|
||||||
|
have pyenv installed, you will also be able to use the `pyenv install` command.
|
||||||
|
|
||||||
|
git clone git://github.com/pyenv/pyenv.git
|
||||||
|
cd pyenv/plugins/python-build
|
||||||
|
./install.sh
|
||||||
|
|
||||||
|
This will install python-build into `/usr/local`. If you do not have write
|
||||||
|
permission to `/usr/local`, you will need to run `sudo ./install.sh` instead.
|
||||||
|
You can install to a different prefix by setting the `PREFIX` environment
|
||||||
|
variable.
|
||||||
|
|
||||||
|
To update python-build after it has been installed, run `git pull` in your cloned
|
||||||
|
copy of the repository, then re-run the install script.
|
||||||
|
|
||||||
|
### Installing with Homebrew (for OS X users)
|
||||||
|
|
||||||
|
Mac OS X users can install python-build with the [Homebrew](http://brew.sh)
|
||||||
|
package manager. This will give you access to the `python-build` command. If you
|
||||||
|
have pyenv installed, you will also be able to use the `pyenv install` command.
|
||||||
|
|
||||||
|
*This is the recommended method of installation if you installed pyenv with
|
||||||
|
Homebrew.*
|
||||||
|
|
||||||
|
brew install pyenv
|
||||||
|
|
||||||
|
Or, if you would like to install the latest development release:
|
||||||
|
|
||||||
|
brew install --HEAD pyenv
|
||||||
|
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Before you begin, you should ensure that your build environment has the proper
|
||||||
|
system dependencies for compiling the wanted Python Version (see our [recommendations](https://github.com/pyenv/pyenv/wiki#suggested-build-environment)).
|
||||||
|
|
||||||
|
### Using `pyenv install` with pyenv
|
||||||
|
|
||||||
|
To install a Python version for use with pyenv, run `pyenv install` with
|
||||||
|
exact name of the version you want to install. For example,
|
||||||
|
|
||||||
|
pyenv install 2.7.4
|
||||||
|
|
||||||
|
Python versions will be installed into a directory of the same name under
|
||||||
|
`~/.pyenv/versions`.
|
||||||
|
|
||||||
|
To see a list of all available Python versions, run `pyenv install --list`. You
|
||||||
|
may also tab-complete available Python versions if your pyenv installation is
|
||||||
|
properly configured.
|
||||||
|
|
||||||
|
### Using `python-build` standalone
|
||||||
|
|
||||||
|
If you have installed python-build as a standalone program, you can use the
|
||||||
|
`python-build` command to compile and install Python versions into specific
|
||||||
|
locations.
|
||||||
|
|
||||||
|
Run the `python-build` command with the exact name of the version you want to
|
||||||
|
install and the full path where you want to install it. For example,
|
||||||
|
|
||||||
|
python-build 2.7.4 ~/local/python-2.7.4
|
||||||
|
|
||||||
|
To see a list of all available Python versions, run `python-build --definitions`.
|
||||||
|
|
||||||
|
Pass the `-v` or `--verbose` flag to `python-build` as the first argument to see
|
||||||
|
what's happening under the hood.
|
||||||
|
|
||||||
|
### Custom definitions
|
||||||
|
|
||||||
|
Both `pyenv install` and `python-build` accept a path to a custom definition file
|
||||||
|
in place of a version name. Custom definitions let you develop and install
|
||||||
|
versions of Python that are not yet supported by python-build.
|
||||||
|
|
||||||
|
See the [python-build built-in definitions](https://github.com/pyenv/pyenv/tree/master/plugins/python-build/share/python-build) as a starting point for
|
||||||
|
custom definition files.
|
||||||
|
|
||||||
|
[definitions]: https://github.com/pyenv/pyenv/tree/master/plugins/python-build/share/python-build
|
||||||
|
|
||||||
|
### Special environment variables
|
||||||
|
|
||||||
|
You can set certain environment variables to control the build process.
|
||||||
|
|
||||||
|
* `TMPDIR` sets the location where python-build stores temporary files.
|
||||||
|
* `PYTHON_BUILD_BUILD_PATH` sets the location in which sources are downloaded and
|
||||||
|
built. By default, this is a subdirectory of `TMPDIR`.
|
||||||
|
* `PYTHON_BUILD_CACHE_PATH`, if set, specifies a directory to use for caching
|
||||||
|
downloaded package files.
|
||||||
|
* `PYTHON_BUILD_MIRROR_URL` overrides the default mirror URL root to one of your
|
||||||
|
choosing.
|
||||||
|
* `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
|
||||||
|
in `share/python-build/` are looked up.
|
||||||
|
* `PYTHON_BUILD_DEFINITIONS` can be a list of colon-separated paths that get
|
||||||
|
additionally searched when looking up build definitions.
|
||||||
|
* `CC` sets the path to the C compiler.
|
||||||
|
* `PYTHON_CFLAGS` lets you pass additional options to the default `CFLAGS`. Use
|
||||||
|
this to override, for instance, the `-O3` option.
|
||||||
|
* `CONFIGURE_OPTS` lets you pass additional options to `./configure`.
|
||||||
|
* `MAKE` lets you override the command to use for `make`. Useful for specifying
|
||||||
|
GNU make (`gmake`) on some systems.
|
||||||
|
* `MAKE_OPTS` (or `MAKEOPTS`) lets you pass additional options to `make`.
|
||||||
|
* `MAKE_INSTALL_OPTS` lets you pass additional options to `make install`.
|
||||||
|
* `PYTHON_CONFIGURE_OPTS` and `PYTHON_MAKE_OPTS` and `PYTHON_MAKE_INSTALL_OPTS` allow
|
||||||
|
you to specify configure and make options for building CPython. These variables
|
||||||
|
will be passed to Python only, not any dependent packages (e.g. libyaml).
|
||||||
|
|
||||||
|
### Applying patches to Python before compiling
|
||||||
|
|
||||||
|
Both `pyenv install` and `python-build` support the `--patch` (`-p`) flag that
|
||||||
|
signals that a patch from stdin should be applied to Python, Jython or PyPy
|
||||||
|
source code before the `./configure` and compilation steps.
|
||||||
|
|
||||||
|
Example usage:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# applying a single patch
|
||||||
|
$ pyenv install --patch 2.7.10 < /path/to/python.patch
|
||||||
|
|
||||||
|
# applying a patch from HTTP
|
||||||
|
$ pyenv install --patch 2.7.10 < <(curl -sSL http://git.io/python.patch)
|
||||||
|
|
||||||
|
# applying multiple patches
|
||||||
|
$ cat fix1.patch fix2.patch | pyenv install --patch 2.7.10
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Building with `--enable-shared`
|
||||||
|
|
||||||
|
You can build CPython with `--enable-shared` to install a version with
|
||||||
|
shared object.
|
||||||
|
|
||||||
|
If `--enable-shared` was found in `PYTHON_CONFIGURE_OPTS` or `CONFIGURE_OPTS`,
|
||||||
|
`python-build` will automatically set `RPATH` to the pyenv's prefix directory.
|
||||||
|
This means you don't have to set `LD_LIBRARY_PATH` or `DYLD_LIBRARY_PATH` for
|
||||||
|
the version(s) installed with `--enable-shared`.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 2.7.9
|
||||||
|
```
|
||||||
|
|
||||||
|
### Checksum verification
|
||||||
|
|
||||||
|
If you have the `shasum`, `openssl`, or `sha256sum` tool installed, python-build will
|
||||||
|
automatically verify the SHA2 checksum of each downloaded package before
|
||||||
|
installing it.
|
||||||
|
|
||||||
|
Checksums are optional and specified as anchors on the package URL in each
|
||||||
|
definition. (All bundled definitions include checksums.)
|
||||||
|
|
||||||
|
### Package download mirrors
|
||||||
|
|
||||||
|
python-build will first attempt to download package files from a mirror hosted on
|
||||||
|
GitHub Pages. If a package is not available on the mirror, if the mirror
|
||||||
|
is down, or if the download is corrupt, python-build will fall back to the
|
||||||
|
official URL specified in the definition file.
|
||||||
|
|
||||||
|
You can point python-build to another mirror by specifying the
|
||||||
|
`PYTHON_BUILD_MIRROR_URL` environment variable--useful if you'd like to run your
|
||||||
|
own local mirror, for example. Package mirror URLs are constructed by joining
|
||||||
|
this variable with the SHA2 checksum of the package file.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
The official python-build download mirror is provided by
|
||||||
|
[GitHub Pages](http://yyuu.github.io/pythons/).
|
||||||
|
|
||||||
|
### Package download caching
|
||||||
|
|
||||||
|
You can instruct python-build to keep a local cache of downloaded package files
|
||||||
|
by setting the `PYTHON_BUILD_CACHE_PATH` environment variable. When set, package
|
||||||
|
files will be kept in this directory after the first successful download and
|
||||||
|
reused by subsequent invocations of `python-build` and `pyenv install`.
|
||||||
|
|
||||||
|
The `pyenv install` command defaults this path to `~/.pyenv/cache`, so in most
|
||||||
|
cases you can enable download caching simply by creating that directory.
|
||||||
|
|
||||||
|
### Keeping the build directory after installation
|
||||||
|
|
||||||
|
Both `python-build` and `pyenv install` accept the `-k` or `--keep` flag, which
|
||||||
|
tells python-build to keep the downloaded source after installation. This can be
|
||||||
|
useful if you need to use `gdb` and `memprof` with Python.
|
||||||
|
|
||||||
|
Source code will be kept in a parallel directory tree `~/.pyenv/sources` when
|
||||||
|
using `--keep` with the `pyenv install` command. You should specify the
|
||||||
|
location of the source code with the `PYTHON_BUILD_BUILD_PATH` environment
|
||||||
|
variable when using `--keep` with `python-build`.
|
||||||
|
|
||||||
|
|
||||||
|
## Getting Help
|
||||||
|
|
||||||
|
Please see the [pyenv wiki](https://github.com/pyenv/pyenv/wiki) for solutions to common problems.
|
||||||
|
|
||||||
|
[wiki]: https://github.com/pyenv/pyenv/wiki
|
||||||
|
|
||||||
|
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.
|
||||||
283
plugins/python-build/bin/pyenv-install
Executable file
283
plugins/python-build/bin/pyenv-install
Executable file
@@ -0,0 +1,283 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Summary: Install a Python version using python-build
|
||||||
|
#
|
||||||
|
# Usage: pyenv install [-f] [-kvp] <version>
|
||||||
|
# pyenv install [-f] [-kvp] <definition-file>
|
||||||
|
# pyenv install -l|--list
|
||||||
|
# pyenv install --version
|
||||||
|
#
|
||||||
|
# -l/--list List all available versions
|
||||||
|
# -f/--force Install even if the version appears to be installed already
|
||||||
|
# -s/--skip-existing Skip if the version appears to be installed already
|
||||||
|
#
|
||||||
|
# python-build options:
|
||||||
|
#
|
||||||
|
# -k/--keep Keep source tree in $PYENV_BUILD_ROOT after installation
|
||||||
|
# (defaults to $PYENV_ROOT/sources)
|
||||||
|
# -p/--patch Apply a patch from stdin before building
|
||||||
|
# -v/--verbose Verbose mode: print compilation status to stdout
|
||||||
|
# --version Show version of python-build
|
||||||
|
# -g/--debug Build a debug version
|
||||||
|
#
|
||||||
|
# For detailed information on installing Python versions with
|
||||||
|
# python-build, including a list of environment variables for adjusting
|
||||||
|
# compilation, see: https://github.com/pyenv/pyenv#readme
|
||||||
|
#
|
||||||
|
set -e
|
||||||
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
|
# Add `share/python-build/` directory from each pyenv plugin to the list of
|
||||||
|
# paths where build definitions are looked up.
|
||||||
|
shopt -s nullglob
|
||||||
|
for plugin_path in "$PYENV_ROOT"/plugins/*/share/python-build; do
|
||||||
|
PYTHON_BUILD_DEFINITIONS="${PYTHON_BUILD_DEFINITIONS}:${plugin_path}"
|
||||||
|
done
|
||||||
|
export PYTHON_BUILD_DEFINITIONS
|
||||||
|
shopt -u nullglob
|
||||||
|
|
||||||
|
# Provide pyenv completions
|
||||||
|
if [ "$1" = "--complete" ]; then
|
||||||
|
echo --list
|
||||||
|
echo --force
|
||||||
|
echo --skip-existing
|
||||||
|
echo --keep
|
||||||
|
echo --patch
|
||||||
|
echo --verbose
|
||||||
|
echo --version
|
||||||
|
echo --debug
|
||||||
|
exec python-build --definitions
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Load shared library functions
|
||||||
|
eval "$(python-build --lib)"
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
pyenv-help install 2>/dev/null
|
||||||
|
[ -z "$1" ] || exit "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
definitions() {
|
||||||
|
local query="$1"
|
||||||
|
python-build --definitions | $(type -p ggrep grep | head -1) -F "$query" || true
|
||||||
|
}
|
||||||
|
|
||||||
|
indent() {
|
||||||
|
sed 's/^/ /'
|
||||||
|
}
|
||||||
|
|
||||||
|
unset FORCE
|
||||||
|
unset SKIP_EXISTING
|
||||||
|
unset KEEP
|
||||||
|
unset VERBOSE
|
||||||
|
unset HAS_PATCH
|
||||||
|
unset DEBUG
|
||||||
|
|
||||||
|
parse_options "$@"
|
||||||
|
for option in "${OPTIONS[@]}"; do
|
||||||
|
case "$option" in
|
||||||
|
"h" | "help" )
|
||||||
|
usage 0
|
||||||
|
;;
|
||||||
|
"l" | "list" )
|
||||||
|
echo "Available versions:"
|
||||||
|
definitions | indent
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
"f" | "force" )
|
||||||
|
FORCE=true
|
||||||
|
;;
|
||||||
|
"s" | "skip-existing" )
|
||||||
|
SKIP_EXISTING=true
|
||||||
|
;;
|
||||||
|
"k" | "keep" )
|
||||||
|
[ -n "${PYENV_BUILD_ROOT}" ] || PYENV_BUILD_ROOT="${PYENV_ROOT}/sources"
|
||||||
|
;;
|
||||||
|
"v" | "verbose" )
|
||||||
|
VERBOSE="-v"
|
||||||
|
;;
|
||||||
|
"p" | "patch" )
|
||||||
|
HAS_PATCH="-p"
|
||||||
|
;;
|
||||||
|
"g" | "debug" )
|
||||||
|
DEBUG="-g"
|
||||||
|
;;
|
||||||
|
"version" )
|
||||||
|
exec python-build --version
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
usage 1 >&2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
[ "${#ARGUMENTS[@]}" -le 1 ] || usage 1 >&2
|
||||||
|
|
||||||
|
unset VERSION_NAME
|
||||||
|
|
||||||
|
# The first argument contains the definition to install. If the
|
||||||
|
# argument is missing, try to install whatever local app-specific
|
||||||
|
# version is specified by pyenv. Show usage instructions if a local
|
||||||
|
# version is not specified.
|
||||||
|
DEFINITION="${ARGUMENTS[0]}"
|
||||||
|
[ -n "$DEFINITION" ] || DEFINITION="$(pyenv-local 2>/dev/null || true)"
|
||||||
|
[ -n "$DEFINITION" ] || usage 1 >&2
|
||||||
|
|
||||||
|
# Define `before_install` and `after_install` functions that allow
|
||||||
|
# plugin hooks to register a string of code for execution before or
|
||||||
|
# after the installation process.
|
||||||
|
declare -a before_hooks after_hooks
|
||||||
|
|
||||||
|
before_install() {
|
||||||
|
local hook="$1"
|
||||||
|
before_hooks["${#before_hooks[@]}"]="$hook"
|
||||||
|
}
|
||||||
|
|
||||||
|
after_install() {
|
||||||
|
local hook="$1"
|
||||||
|
after_hooks["${#after_hooks[@]}"]="$hook"
|
||||||
|
}
|
||||||
|
|
||||||
|
OLDIFS="$IFS"
|
||||||
|
IFS=$'\n' scripts=(`pyenv-hooks install`)
|
||||||
|
IFS="$OLDIFS"
|
||||||
|
for script in "${scripts[@]}"; do source "$script"; done
|
||||||
|
|
||||||
|
|
||||||
|
# Set VERSION_NAME from $DEFINITION, if it is not already set. Then
|
||||||
|
# compute the installation prefix.
|
||||||
|
[ -n "$VERSION_NAME" ] || VERSION_NAME="${DEFINITION##*/}"
|
||||||
|
[ -n "$DEBUG" ] && VERSION_NAME="${VERSION_NAME}-debug"
|
||||||
|
PREFIX="${PYENV_ROOT}/versions/${VERSION_NAME}"
|
||||||
|
|
||||||
|
[ -d "${PREFIX}" ] && PREFIX_EXISTS=1
|
||||||
|
|
||||||
|
# If the installation prefix exists, prompt for confirmation unless
|
||||||
|
# the --force option was specified.
|
||||||
|
if [ -d "${PREFIX}/bin" ]; then
|
||||||
|
if [ -z "$FORCE" ] && [ -z "$SKIP_EXISTING" ]; then
|
||||||
|
echo "pyenv: $PREFIX already exists" >&2
|
||||||
|
read -p "continue with installation? (y/N) "
|
||||||
|
|
||||||
|
case "$REPLY" in
|
||||||
|
y* | Y* ) ;;
|
||||||
|
* ) exit 1 ;;
|
||||||
|
esac
|
||||||
|
elif [ -n "$SKIP_EXISTING" ]; then
|
||||||
|
# Since we know the python version is already installed, and are opting to
|
||||||
|
# not force installation of existing versions, we just `exit 0` here to
|
||||||
|
# leave things happy
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If PYENV_BUILD_ROOT is set, always pass keep options to python-build.
|
||||||
|
if [ -n "${PYENV_BUILD_ROOT}" ]; then
|
||||||
|
export PYTHON_BUILD_BUILD_PATH="${PYENV_BUILD_ROOT}/${VERSION_NAME}"
|
||||||
|
KEEP="-k"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set PYTHON_BUILD_CACHE_PATH to $PYENV_ROOT/cache, if the directory
|
||||||
|
# exists and the variable is not already set.
|
||||||
|
if [ -z "${PYTHON_BUILD_CACHE_PATH}" ] && [ -d "${PYENV_ROOT}/cache" ]; then
|
||||||
|
export PYTHON_BUILD_CACHE_PATH="${PYENV_ROOT}/cache"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${PYENV_BOOTSTRAP_VERSION}" ]; then
|
||||||
|
case "${VERSION_NAME}" in
|
||||||
|
[23]"."* )
|
||||||
|
# Default PYENV_VERSION to the friendly Python version. (The
|
||||||
|
# CPython installer requires an existing Python installation to run. An
|
||||||
|
# unsatisfied local .python-version file can cause the installer to
|
||||||
|
# fail.)
|
||||||
|
for version_info in "${VERSION_NAME%-dev}" "${VERSION_NAME%.*}" "${VERSION_NAME%%.*}"; do
|
||||||
|
# Anaconda's `curl` doesn't work on platform where `/etc/pki/tls/certs/ca-bundle.crt` isn't available (e.g. Debian)
|
||||||
|
for version in $(pyenv-whence "python${version_info}" 2>/dev/null || true); do
|
||||||
|
if [[ "${version}" != "anaconda"* ]] && [[ "${version}" != "miniconda"* ]]; then
|
||||||
|
PYENV_BOOTSTRAP_VERSION="${version}"
|
||||||
|
break 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
"pypy"*"-dev" | "pypy"*"-src" )
|
||||||
|
# PyPy/PyPy3 requires existing Python 2.7 to build
|
||||||
|
if [ -n "${PYENV_RPYTHON_VERSION}" ]; then
|
||||||
|
PYENV_BOOTSTRAP_VERSION="${PYENV_RPYTHON_VERSION}"
|
||||||
|
else
|
||||||
|
for version in $(pyenv-versions --bare | sort -r); do
|
||||||
|
if [[ "${version}" == "2.7"* ]]; then
|
||||||
|
PYENV_BOOTSTRAP_VERSION="$version"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [ -n "$PYENV_BOOTSTRAP_VERSION" ]; then
|
||||||
|
for dep in curses genc pycparser; do
|
||||||
|
if ! PYENV_VERSION="$PYENV_BOOTSTRAP_VERSION" pyenv-exec python -c "import ${dep}" 1>/dev/null 2>&1; then
|
||||||
|
echo "pyenv-install: $VERSION_NAME: PyPy requires \`${dep}' in $PYENV_BOOTSTRAP_VERSION to build from source." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo "pyenv-install: $VERSION_NAME: PyPy requires Python 2.7 to build from source." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "${PYENV_BOOTSTRAP_VERSION}" ]; then
|
||||||
|
export PYENV_VERSION="${PYENV_BOOTSTRAP_VERSION}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Execute `before_install` hooks.
|
||||||
|
for hook in "${before_hooks[@]}"; do eval "$hook"; done
|
||||||
|
|
||||||
|
# Plan cleanup on unsuccessful installation.
|
||||||
|
cleanup() {
|
||||||
|
[ -z "${PREFIX_EXISTS}" ] && rm -rf "$PREFIX"
|
||||||
|
}
|
||||||
|
|
||||||
|
trap cleanup SIGINT
|
||||||
|
|
||||||
|
# Invoke `python-build` and record the exit status in $STATUS.
|
||||||
|
STATUS=0
|
||||||
|
python-build $KEEP $VERBOSE $HAS_PATCH $DEBUG "$DEFINITION" "$PREFIX" || STATUS="$?"
|
||||||
|
|
||||||
|
# Display a more helpful message if the definition wasn't found.
|
||||||
|
if [ "$STATUS" == "2" ]; then
|
||||||
|
{ candidates="$(definitions "$DEFINITION")"
|
||||||
|
here="$(dirname "${0%/*}")/../.."
|
||||||
|
if [ -n "$candidates" ]; then
|
||||||
|
echo
|
||||||
|
echo "The following versions contain \`$DEFINITION' in the name:"
|
||||||
|
echo "$candidates" | indent
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
echo "See all available versions with \`pyenv install --list'."
|
||||||
|
echo
|
||||||
|
echo -n "If the version you need is missing, try upgrading pyenv"
|
||||||
|
if [ "$here" != "${here#$(brew --prefix 2>/dev/null)}" ]; then
|
||||||
|
printf ":\n\n"
|
||||||
|
echo " brew update && brew upgrade pyenv"
|
||||||
|
elif [ -d "${here}/.git" ]; then
|
||||||
|
printf ":\n\n"
|
||||||
|
echo " cd ${here} && git pull && cd -"
|
||||||
|
else
|
||||||
|
printf ".\n"
|
||||||
|
fi
|
||||||
|
} >&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Execute `after_install` hooks.
|
||||||
|
for hook in "${after_hooks[@]}"; do eval "$hook"; done
|
||||||
|
|
||||||
|
# Run `pyenv-rehash` after a successful installation.
|
||||||
|
if [ "$STATUS" == "0" ]; then
|
||||||
|
pyenv-rehash
|
||||||
|
else
|
||||||
|
cleanup
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit "$STATUS"
|
||||||
86
plugins/python-build/bin/pyenv-uninstall
Executable file
86
plugins/python-build/bin/pyenv-uninstall
Executable file
@@ -0,0 +1,86 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Summary: Uninstall a specific Python version
|
||||||
|
#
|
||||||
|
# Usage: pyenv uninstall [-f|--force] <version>
|
||||||
|
#
|
||||||
|
# -f Attempt to remove the specified version without prompting
|
||||||
|
# for confirmation. If the version does not exist, do not
|
||||||
|
# display an error message.
|
||||||
|
#
|
||||||
|
# See `pyenv versions` for a complete list of installed versions.
|
||||||
|
#
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Provide pyenv completions
|
||||||
|
if [ "$1" = "--complete" ]; then
|
||||||
|
echo --force
|
||||||
|
exec pyenv versions --bare
|
||||||
|
fi
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
pyenv-help uninstall 2>/dev/null
|
||||||
|
[ -z "$1" ] || exit "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
|
||||||
|
usage 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
unset FORCE
|
||||||
|
if [ "$1" = "-f" ] || [ "$1" = "--force" ]; then
|
||||||
|
FORCE=true
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ "$#" -eq 1 ] || usage 1 >&2
|
||||||
|
|
||||||
|
DEFINITION="$1"
|
||||||
|
case "$DEFINITION" in
|
||||||
|
"" | -* )
|
||||||
|
usage 1 >&2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
declare -a before_hooks after_hooks
|
||||||
|
|
||||||
|
before_uninstall() {
|
||||||
|
local hook="$1"
|
||||||
|
before_hooks["${#before_hooks[@]}"]="$hook"
|
||||||
|
}
|
||||||
|
|
||||||
|
after_uninstall() {
|
||||||
|
local hook="$1"
|
||||||
|
after_hooks["${#after_hooks[@]}"]="$hook"
|
||||||
|
}
|
||||||
|
|
||||||
|
OLDIFS="$IFS"
|
||||||
|
IFS=$'\n' scripts=(`pyenv-hooks uninstall`)
|
||||||
|
IFS="$OLDIFS"
|
||||||
|
for script in "${scripts[@]}"; do source "$script"; done
|
||||||
|
|
||||||
|
|
||||||
|
VERSION_NAME="${DEFINITION##*/}"
|
||||||
|
PREFIX="${PYENV_ROOT}/versions/${VERSION_NAME}"
|
||||||
|
|
||||||
|
if [ -z "$FORCE" ]; then
|
||||||
|
if [ ! -d "$PREFIX" ]; then
|
||||||
|
echo "pyenv: version \`$VERSION_NAME' not installed" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
read -p "pyenv: remove $PREFIX? "
|
||||||
|
case "$REPLY" in
|
||||||
|
y* | Y* ) ;;
|
||||||
|
* ) exit 1 ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
for hook in "${before_hooks[@]}"; do eval "$hook"; done
|
||||||
|
|
||||||
|
if [ -d "$PREFIX" ]; then
|
||||||
|
rm -rf "$PREFIX"
|
||||||
|
pyenv-rehash
|
||||||
|
fi
|
||||||
|
|
||||||
|
for hook in "${after_hooks[@]}"; do eval "$hook"; done
|
||||||
2153
plugins/python-build/bin/python-build
Executable file
2153
plugins/python-build/bin/python-build
Executable file
File diff suppressed because it is too large
Load Diff
26
plugins/python-build/install.sh
Executable file
26
plugins/python-build/install.sh
Executable file
@@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Usage: PREFIX=/usr/local ./install.sh
|
||||||
|
#
|
||||||
|
# Installs python-build under $PREFIX.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
if [ -z "${PREFIX}" ]; then
|
||||||
|
PREFIX="/usr/local"
|
||||||
|
fi
|
||||||
|
|
||||||
|
BIN_PATH="${PREFIX}/bin"
|
||||||
|
SHARE_PATH="${PREFIX}/share/python-build"
|
||||||
|
|
||||||
|
mkdir -p "$BIN_PATH" "$SHARE_PATH"
|
||||||
|
|
||||||
|
install -p bin/* "$BIN_PATH"
|
||||||
|
for share in share/python-build/*; do
|
||||||
|
if [ -d "$share" ]; then
|
||||||
|
cp -RPp "$share" "$SHARE_PATH"
|
||||||
|
else
|
||||||
|
install -p -m 0644 "$share" "$SHARE_PATH"
|
||||||
|
fi
|
||||||
|
done
|
||||||
5
plugins/python-build/share/python-build/2.1.3
Normal file
5
plugins/python-build/share/python-build/2.1.3
Normal file
@@ -0,0 +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 "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
|
||||||
5
plugins/python-build/share/python-build/2.2.3
Normal file
5
plugins/python-build/share/python-build/2.2.3
Normal file
@@ -0,0 +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 "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
|
||||||
5
plugins/python-build/share/python-build/2.3.7
Normal file
5
plugins/python-build/share/python-build/2.3.7
Normal file
@@ -0,0 +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 "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
|
||||||
5
plugins/python-build/share/python-build/2.4
Normal file
5
plugins/python-build/share/python-build/2.4
Normal file
@@ -0,0 +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 "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
|
||||||
5
plugins/python-build/share/python-build/2.4.1
Normal file
5
plugins/python-build/share/python-build/2.4.1
Normal file
@@ -0,0 +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 "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
|
||||||
5
plugins/python-build/share/python-build/2.4.2
Normal file
5
plugins/python-build/share/python-build/2.4.2
Normal file
@@ -0,0 +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 "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
|
||||||
5
plugins/python-build/share/python-build/2.4.3
Normal file
5
plugins/python-build/share/python-build/2.4.3
Normal file
@@ -0,0 +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 "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
|
||||||
5
plugins/python-build/share/python-build/2.4.4
Normal file
5
plugins/python-build/share/python-build/2.4.4
Normal file
@@ -0,0 +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 "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
|
||||||
5
plugins/python-build/share/python-build/2.4.5
Normal file
5
plugins/python-build/share/python-build/2.4.5
Normal file
@@ -0,0 +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 "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
|
||||||
5
plugins/python-build/share/python-build/2.4.6
Normal file
5
plugins/python-build/share/python-build/2.4.6
Normal file
@@ -0,0 +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 "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
|
||||||
5
plugins/python-build/share/python-build/2.5
Normal file
5
plugins/python-build/share/python-build/2.5
Normal file
@@ -0,0 +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 "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
|
||||||
5
plugins/python-build/share/python-build/2.5.1
Normal file
5
plugins/python-build/share/python-build/2.5.1
Normal file
@@ -0,0 +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 "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
|
||||||
5
plugins/python-build/share/python-build/2.5.2
Normal file
5
plugins/python-build/share/python-build/2.5.2
Normal file
@@ -0,0 +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 "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
|
||||||
5
plugins/python-build/share/python-build/2.5.3
Normal file
5
plugins/python-build/share/python-build/2.5.3
Normal file
@@ -0,0 +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 "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
|
||||||
5
plugins/python-build/share/python-build/2.5.4
Normal file
5
plugins/python-build/share/python-build/2.5.4
Normal file
@@ -0,0 +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 "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
|
||||||
5
plugins/python-build/share/python-build/2.5.5
Normal file
5
plugins/python-build/share/python-build/2.5.5
Normal file
@@ -0,0 +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 "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
|
||||||
5
plugins/python-build/share/python-build/2.5.6
Normal file
5
plugins/python-build/share/python-build/2.5.6
Normal file
@@ -0,0 +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 "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
|
||||||
4
plugins/python-build/share/python-build/2.6.6
Normal file
4
plugins/python-build/share/python-build/2.6.6
Normal file
@@ -0,0 +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
|
||||||
4
plugins/python-build/share/python-build/2.6.7
Normal file
4
plugins/python-build/share/python-build/2.6.7
Normal file
@@ -0,0 +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
|
||||||
4
plugins/python-build/share/python-build/2.6.8
Normal file
4
plugins/python-build/share/python-build/2.6.8
Normal file
@@ -0,0 +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
|
||||||
4
plugins/python-build/share/python-build/2.6.9
Normal file
4
plugins/python-build/share/python-build/2.6.9
Normal file
@@ -0,0 +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
|
||||||
4
plugins/python-build/share/python-build/2.7
Normal file
4
plugins/python-build/share/python-build/2.7
Normal file
@@ -0,0 +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" "https://www.python.org/ftp/python/2.7/Python-2.7.tgz#5670dd6c0c93b0b529781d070852f7b51ce6855615b16afcd318341af2910fb5" ldflags_dirs standard verify_py27 ensurepip
|
||||||
4
plugins/python-build/share/python-build/2.7-dev
Normal file
4
plugins/python-build/share/python-build/2.7-dev
Normal file
@@ -0,0 +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_git "Python-2.7-dev" "https://github.com/python/cpython" "2.7" standard verify_py27 ensurepip
|
||||||
4
plugins/python-build/share/python-build/2.7.1
Normal file
4
plugins/python-build/share/python-build/2.7.1
Normal file
@@ -0,0 +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
|
||||||
8
plugins/python-build/share/python-build/2.7.10
Normal file
8
plugins/python-build/share/python-build/2.7.10
Normal file
@@ -0,0 +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
|
||||||
|
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
|
||||||
|
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
|
||||||
|
fi
|
||||||
8
plugins/python-build/share/python-build/2.7.11
Normal file
8
plugins/python-build/share/python-build/2.7.11
Normal file
@@ -0,0 +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
|
||||||
|
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
|
||||||
|
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
|
||||||
|
fi
|
||||||
8
plugins/python-build/share/python-build/2.7.12
Normal file
8
plugins/python-build/share/python-build/2.7.12
Normal file
@@ -0,0 +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
|
||||||
|
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
|
||||||
|
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
|
||||||
|
fi
|
||||||
8
plugins/python-build/share/python-build/2.7.13
Normal file
8
plugins/python-build/share/python-build/2.7.13
Normal file
@@ -0,0 +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
|
||||||
|
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
|
||||||
|
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
|
||||||
|
fi
|
||||||
8
plugins/python-build/share/python-build/2.7.14
Normal file
8
plugins/python-build/share/python-build/2.7.14
Normal file
@@ -0,0 +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
|
||||||
|
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
|
||||||
|
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
|
||||||
|
fi
|
||||||
4
plugins/python-build/share/python-build/2.7.2
Normal file
4
plugins/python-build/share/python-build/2.7.2
Normal file
@@ -0,0 +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
|
||||||
4
plugins/python-build/share/python-build/2.7.3
Normal file
4
plugins/python-build/share/python-build/2.7.3
Normal file
@@ -0,0 +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
|
||||||
4
plugins/python-build/share/python-build/2.7.4
Normal file
4
plugins/python-build/share/python-build/2.7.4
Normal file
@@ -0,0 +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
|
||||||
4
plugins/python-build/share/python-build/2.7.5
Normal file
4
plugins/python-build/share/python-build/2.7.5
Normal file
@@ -0,0 +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
|
||||||
4
plugins/python-build/share/python-build/2.7.6
Normal file
4
plugins/python-build/share/python-build/2.7.6
Normal file
@@ -0,0 +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
|
||||||
8
plugins/python-build/share/python-build/2.7.7
Normal file
8
plugins/python-build/share/python-build/2.7.7
Normal file
@@ -0,0 +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
|
||||||
|
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
|
||||||
|
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
|
||||||
|
fi
|
||||||
8
plugins/python-build/share/python-build/2.7.8
Normal file
8
plugins/python-build/share/python-build/2.7.8
Normal file
@@ -0,0 +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
|
||||||
|
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
|
||||||
|
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
|
||||||
|
fi
|
||||||
8
plugins/python-build/share/python-build/2.7.9
Normal file
8
plugins/python-build/share/python-build/2.7.9
Normal file
@@ -0,0 +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
|
||||||
|
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
|
||||||
|
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
|
||||||
|
fi
|
||||||
15
plugins/python-build/share/python-build/3.0.1
Normal file
15
plugins/python-build/share/python-build/3.0.1
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#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
|
||||||
|
if [[ "Darwin" == "$(uname -s)" ]]; then
|
||||||
|
# https://github.com/pyenv/pyenv/issues/456
|
||||||
|
{ echo
|
||||||
|
colorize 1 "WARNING"
|
||||||
|
echo ": pyenv cannot install setuptools-1.4.2 to CPython 3.0.1 on OS X."
|
||||||
|
echo "setuptools and pip will not be available until you install them manually."
|
||||||
|
} >&2
|
||||||
|
else
|
||||||
|
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
|
||||||
|
fi
|
||||||
6
plugins/python-build/share/python-build/3.1
Normal file
6
plugins/python-build/share/python-build/3.1
Normal file
@@ -0,0 +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 "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.1.1
Normal file
6
plugins/python-build/share/python-build/3.1.1
Normal file
@@ -0,0 +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 "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
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user