portable-python 2.0.0__py3-none-any.whl → 2.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- portable_python/external/__init__.py +1 -0
- portable_python/external/xcpython.py +25 -8
- portable_python/external/xtkinter.py +6 -1
- {portable_python-2.0.0.dist-info → portable_python-2.0.1.dist-info}/METADATA +68 -26
- {portable_python-2.0.0.dist-info → portable_python-2.0.1.dist-info}/RECORD +11 -9
- portable_python-2.0.1.dist-info/scm_file_list.json +93 -0
- portable_python-2.0.1.dist-info/scm_version.json +8 -0
- {portable_python-2.0.0.dist-info → portable_python-2.0.1.dist-info}/WHEEL +0 -0
- {portable_python-2.0.0.dist-info → portable_python-2.0.1.dist-info}/entry_points.txt +0 -0
- {portable_python-2.0.0.dist-info → portable_python-2.0.1.dist-info}/licenses/LICENSE +0 -0
- {portable_python-2.0.0.dist-info → portable_python-2.0.1.dist-info}/top_level.txt +0 -0
|
@@ -26,6 +26,8 @@ class Bdb(ModuleBuilder):
|
|
|
26
26
|
|
|
27
27
|
@property
|
|
28
28
|
def version(self):
|
|
29
|
+
# Oracle stopped releasing new versions in May 2020 (18.1.40 was last under AGPL)
|
|
30
|
+
# Check https://www.oracle.com/database/technologies/related/berkeleydb-downloads.html
|
|
29
31
|
return self.cfg_version("6.2.32")
|
|
30
32
|
|
|
31
33
|
def c_configure_args(self):
|
|
@@ -61,6 +63,8 @@ class Bzip2(ModuleBuilder):
|
|
|
61
63
|
|
|
62
64
|
@property
|
|
63
65
|
def version(self):
|
|
66
|
+
# Last release was 1.0.8 in 2019, project has very infrequent updates
|
|
67
|
+
# Check https://sourceware.org/bzip2/downloads.html
|
|
64
68
|
return self.cfg_version("1.0.8")
|
|
65
69
|
|
|
66
70
|
def _do_linux_compile(self):
|
|
@@ -85,6 +89,7 @@ class Gdbm(ModuleBuilder):
|
|
|
85
89
|
|
|
86
90
|
@property
|
|
87
91
|
def version(self):
|
|
92
|
+
# Check https://www.gnu.org.ua/software/gdbm/
|
|
88
93
|
return self.cfg_version("1.26")
|
|
89
94
|
|
|
90
95
|
def c_configure_args(self):
|
|
@@ -131,6 +136,7 @@ class LibFFI(ModuleBuilder):
|
|
|
131
136
|
|
|
132
137
|
@property
|
|
133
138
|
def version(self):
|
|
139
|
+
# Check https://github.com/libffi/libffi/releases
|
|
134
140
|
return self.cfg_version("3.5.2")
|
|
135
141
|
|
|
136
142
|
def c_configure_args(self):
|
|
@@ -176,9 +182,10 @@ class Openssl(ModuleBuilder):
|
|
|
176
182
|
|
|
177
183
|
@property
|
|
178
184
|
def version(self):
|
|
179
|
-
#
|
|
180
|
-
#
|
|
181
|
-
|
|
185
|
+
# 3.5 is LTS, supported until Apr 2030 (3.0 EOL Sept 2026)
|
|
186
|
+
# Stay on the 3.5 LTS line for now: 3.6 / 4.0 not yet verified for cpython builds
|
|
187
|
+
# Check https://github.com/openssl/openssl/releases and https://endoflife.date/openssl
|
|
188
|
+
return self.cfg_version("3.5.7")
|
|
182
189
|
|
|
183
190
|
def c_configure_args(self):
|
|
184
191
|
if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
|
|
@@ -207,7 +214,8 @@ class Ncurses(ModuleBuilder):
|
|
|
207
214
|
|
|
208
215
|
@property
|
|
209
216
|
def version(self):
|
|
210
|
-
|
|
217
|
+
# Check https://invisible-island.net/ncurses/announce.html
|
|
218
|
+
return self.cfg_version("6.6")
|
|
211
219
|
|
|
212
220
|
def c_configure_args(self):
|
|
213
221
|
if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
|
|
@@ -264,7 +272,9 @@ class Readline(ModuleBuilder):
|
|
|
264
272
|
|
|
265
273
|
@property
|
|
266
274
|
def version(self):
|
|
267
|
-
|
|
275
|
+
# Patched tarballs (e.g. "8.2.13") are available on the GNU FTP when patches accumulate
|
|
276
|
+
# Check https://ftpmirror.gnu.org/gnu/readline/ for available tarballs
|
|
277
|
+
return self.cfg_version("8.3")
|
|
268
278
|
|
|
269
279
|
def c_configure_args(self):
|
|
270
280
|
if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
|
|
@@ -308,7 +318,8 @@ class Sqlite(ModuleBuilder):
|
|
|
308
318
|
|
|
309
319
|
@property
|
|
310
320
|
def version(self):
|
|
311
|
-
|
|
321
|
+
# Keep current; check https://sqlite.org/changes.html (avoid withdrawn releases like 3.52.0)
|
|
322
|
+
return self.cfg_version("3.53.2")
|
|
312
323
|
|
|
313
324
|
def c_configure_args(self):
|
|
314
325
|
if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
|
|
@@ -343,6 +354,8 @@ class Uuid(ModuleBuilder):
|
|
|
343
354
|
|
|
344
355
|
@property
|
|
345
356
|
def version(self):
|
|
357
|
+
# Standalone libuuid (not util-linux), project is mostly dormant
|
|
358
|
+
# Check https://sourceforge.net/projects/libuuid/files/
|
|
346
359
|
return self.cfg_version("1.0.3")
|
|
347
360
|
|
|
348
361
|
def c_configure_args(self):
|
|
@@ -373,7 +386,8 @@ class Xz(ModuleBuilder):
|
|
|
373
386
|
|
|
374
387
|
@property
|
|
375
388
|
def version(self):
|
|
376
|
-
|
|
389
|
+
# Check https://github.com/tukaani-project/xz/releases
|
|
390
|
+
return self.cfg_version("5.8.3")
|
|
377
391
|
|
|
378
392
|
def c_configure_args(self):
|
|
379
393
|
if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
|
|
@@ -416,7 +430,8 @@ class Zlib(ModuleBuilder):
|
|
|
416
430
|
|
|
417
431
|
@property
|
|
418
432
|
def version(self):
|
|
419
|
-
|
|
433
|
+
# Check https://zlib.net/ and https://github.com/madler/zlib/releases
|
|
434
|
+
return self.cfg_version("1.3.2")
|
|
420
435
|
|
|
421
436
|
def c_configure_args(self):
|
|
422
437
|
if config_args := self.cfg_configure(self.deps_lib_dir, self.deps_lib64_dir):
|
|
@@ -456,6 +471,7 @@ class Zstd(ModuleBuilder):
|
|
|
456
471
|
|
|
457
472
|
@property
|
|
458
473
|
def version(self):
|
|
474
|
+
# Check https://github.com/facebook/zstd/releases
|
|
459
475
|
return self.cfg_version("1.5.7")
|
|
460
476
|
|
|
461
477
|
def _do_linux_compile(self):
|
|
@@ -490,6 +506,7 @@ class Mpdec(ModuleBuilder):
|
|
|
490
506
|
|
|
491
507
|
@property
|
|
492
508
|
def version(self):
|
|
509
|
+
# Check https://www.bytereef.org/mpdecimal/download.html
|
|
493
510
|
return self.cfg_version("4.0.1")
|
|
494
511
|
|
|
495
512
|
def c_configure_args(self):
|
|
@@ -77,6 +77,8 @@ class Tix(ModuleBuilder):
|
|
|
77
77
|
|
|
78
78
|
@property
|
|
79
79
|
def version(self):
|
|
80
|
+
# Effectively dead project, no updates expected
|
|
81
|
+
# Check https://github.com/python/cpython-source-deps (tix-* tags)
|
|
80
82
|
return self.cfg_version("8.4.3.6")
|
|
81
83
|
|
|
82
84
|
# noinspection PyPep8Naming
|
|
@@ -116,4 +118,7 @@ class TkInter(ModuleBuilder):
|
|
|
116
118
|
|
|
117
119
|
@property
|
|
118
120
|
def version(self):
|
|
119
|
-
|
|
121
|
+
# This is the Tcl/Tk version used by Tcl, Tk, and Tix sub-modules
|
|
122
|
+
# Staying on 8.6.x branch (9.0+ is a major rewrite)
|
|
123
|
+
# Check https://www.tcl-lang.org/software/tcltk/8.6.html
|
|
124
|
+
return self.cfg_version("8.6.18")
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: portable-python
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.1
|
|
4
4
|
Summary: Portable python binaries
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Author-email: zoran@simicweb.com
|
|
8
|
-
License: MIT
|
|
9
|
-
Project-URL: Documentation, https://github.com/codrsquad/portable-python/wiki
|
|
10
|
-
Project-URL: Release notes, https://github.com/codrsquad/portable-python/wiki/Release-notes
|
|
5
|
+
Author-email: Zoran Simic <zoran@simicweb.com>
|
|
6
|
+
License-Expression: MIT
|
|
11
7
|
Project-URL: Source, https://github.com/codrsquad/portable-python
|
|
12
8
|
Keywords: python,portable,binary
|
|
13
9
|
Classifier: Development Status :: 5 - Production/Stable
|
|
@@ -31,24 +27,12 @@ Classifier: Topic :: Utilities
|
|
|
31
27
|
Requires-Python: >=3.10
|
|
32
28
|
Description-Content-Type: text/x-rst
|
|
33
29
|
License-File: LICENSE
|
|
34
|
-
Requires-Dist: click
|
|
35
|
-
Requires-Dist: pyyaml
|
|
36
|
-
Requires-Dist: requests<3
|
|
37
|
-
Requires-Dist: runez
|
|
38
|
-
Requires-Dist: urllib3
|
|
39
|
-
Dynamic: author
|
|
40
|
-
Dynamic: author-email
|
|
41
|
-
Dynamic: classifier
|
|
42
|
-
Dynamic: description
|
|
43
|
-
Dynamic: description-content-type
|
|
44
|
-
Dynamic: home-page
|
|
45
|
-
Dynamic: keywords
|
|
46
|
-
Dynamic: license
|
|
30
|
+
Requires-Dist: click<9
|
|
31
|
+
Requires-Dist: pyyaml<7
|
|
32
|
+
Requires-Dist: requests<3
|
|
33
|
+
Requires-Dist: runez<6
|
|
34
|
+
Requires-Dist: urllib3<3
|
|
47
35
|
Dynamic: license-file
|
|
48
|
-
Dynamic: project-url
|
|
49
|
-
Dynamic: requires-dist
|
|
50
|
-
Dynamic: requires-python
|
|
51
|
-
Dynamic: summary
|
|
52
36
|
|
|
53
37
|
Portable python binaries
|
|
54
38
|
========================
|
|
@@ -61,8 +45,8 @@ Portable python binaries
|
|
|
61
45
|
:target: https://github.com/codrsquad/portable-python/actions
|
|
62
46
|
:alt: Tested with Github Actions
|
|
63
47
|
|
|
64
|
-
.. image:: https://
|
|
65
|
-
:target: https://
|
|
48
|
+
.. image:: https://coveralls.io/repos/github/codrsquad/portable-python/badge.svg?branch=main
|
|
49
|
+
:target: https://coveralls.io/github/codrsquad/portable-python?branch=main
|
|
66
50
|
:alt: Test coverage
|
|
67
51
|
|
|
68
52
|
.. image:: https://img.shields.io/pypi/pyversions/portable-python.svg
|
|
@@ -180,6 +164,64 @@ Note that you can use ``--dryrun`` mode to inspect what would be done without do
|
|
|
180
164
|
Would tar build/3.9.7 -> dist/cpython-3.9.7-macos-x86_64.tar.gz
|
|
181
165
|
|
|
182
166
|
|
|
167
|
+
CLI reference
|
|
168
|
+
-------------
|
|
169
|
+
|
|
170
|
+
Main entry point::
|
|
171
|
+
|
|
172
|
+
portable-python [OPTIONS] COMMAND [ARGS]
|
|
173
|
+
|
|
174
|
+
**Global options**:
|
|
175
|
+
|
|
176
|
+
- ``--config PATH``: Config file (default: ``portable-python.yml``)
|
|
177
|
+
- ``--quiet``: Turn off DEBUG logging
|
|
178
|
+
- ``--dryrun`` / ``-n``: Show what would be done
|
|
179
|
+
- ``--target PLATFORM``: Override detected platform (for testing)
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
**build** ``<PYTHON_SPEC>`` - Build a portable Python binary::
|
|
183
|
+
|
|
184
|
+
portable-python build 3.13.2 -m openssl,zlib
|
|
185
|
+
|
|
186
|
+
- ``--modules, -m CSV``: External modules to include
|
|
187
|
+
- ``--prefix, -p PATH``: Use ``--prefix`` (non-portable)
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
**build-report** ``[PYTHON_SPEC]`` - Show module status and what will be compiled:
|
|
191
|
+
|
|
192
|
+
- ``--modules, -m CSV``: Specific modules to check
|
|
193
|
+
- Validates that modules can be built
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
**inspect** ``<PATH>`` - Check if a Python installation is portable::
|
|
197
|
+
|
|
198
|
+
portable-python inspect /usr/bin/python3
|
|
199
|
+
|
|
200
|
+
- ``--modules, -m MODULES``: Which modules to inspect
|
|
201
|
+
- ``--verbose, -v``: Show full ``.so`` report
|
|
202
|
+
- ``--prefix, -p``: Built with ``--prefix`` (not portable)
|
|
203
|
+
- ``--skip-so, -s``: Don't check all ``.so`` files
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
**list** ``[FAMILY]`` - List available versions (default: cpython)::
|
|
207
|
+
|
|
208
|
+
portable-python list cpython
|
|
209
|
+
|
|
210
|
+
- ``--json``: Output as JSON
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
**diagnostics** - Show system diagnostics
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
**recompress** ``<PATH> <EXT>`` - Re-compress existing binary tarball (for comparing compression sizes)
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
**lib-auto-correct** ``<PATH>`` - Auto-correct exes/libs to use relative paths:
|
|
220
|
+
|
|
221
|
+
- ``--commit``: Actually perform changes (dryrun by default)
|
|
222
|
+
- ``--prefix, -p PATH``: Expected ``--prefix`` from build
|
|
223
|
+
|
|
224
|
+
|
|
183
225
|
Library
|
|
184
226
|
-------
|
|
185
227
|
|
|
@@ -6,13 +6,15 @@ portable_python/cpython.py,sha256=V0_B2nWv0H8enXGdU38yRgZyO7d-JkC0DWlTMsI9K9M,18
|
|
|
6
6
|
portable_python/inspector.py,sha256=LvGhat2rqwgse0r90dZxEExRYWSW4TrxsMXxYScrF3k,21355
|
|
7
7
|
portable_python/tracking.py,sha256=308K--adSivstOqnD9oczlY77FZV_cgNy7xL8BS9ROg,1978
|
|
8
8
|
portable_python/versions.py,sha256=BTxYrH6xGFQIXZ8Xv8rHMpVT76TKmE_J7AXOepCE5Tc,7171
|
|
9
|
-
portable_python/external/__init__.py,sha256=
|
|
9
|
+
portable_python/external/__init__.py,sha256=jQCp0sEgj7ZjuWYc2zJ3Bm_W5qdT0OPNAe4JIPaQLY8,801
|
|
10
10
|
portable_python/external/_inspect.py,sha256=ASminI7HBuHAuFcvX3mkBYf7lCDILqiPrKkhKkQ8w94,3744
|
|
11
|
-
portable_python/external/xcpython.py,sha256=
|
|
12
|
-
portable_python/external/xtkinter.py,sha256=
|
|
13
|
-
portable_python-2.0.
|
|
14
|
-
portable_python-2.0.
|
|
15
|
-
portable_python-2.0.
|
|
16
|
-
portable_python-2.0.
|
|
17
|
-
portable_python-2.0.
|
|
18
|
-
portable_python-2.0.
|
|
11
|
+
portable_python/external/xcpython.py,sha256=AnelZlU5_Z08dp0Itej3AZ9KLcIE07Fidlrp3WWs87k,16744
|
|
12
|
+
portable_python/external/xtkinter.py,sha256=rvIHeaUmp2O7fJeYxu4FH2tzFA8Ajw55Nhqg2yFOt8I,3832
|
|
13
|
+
portable_python-2.0.1.dist-info/licenses/LICENSE,sha256=BB27gUWIcmc-bauY_M6COCMtiy4hN2mou1RdadlbXbs,1068
|
|
14
|
+
portable_python-2.0.1.dist-info/METADATA,sha256=KXL6TT3WrqOGEcmfrOcaGOOQXENK8PXve4UBPIaUOJ4,9850
|
|
15
|
+
portable_python-2.0.1.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
16
|
+
portable_python-2.0.1.dist-info/entry_points.txt,sha256=Zo8HR39evgAgm4e2UhenD7kkpJvEXp_VB4aIrL_3_VY,66
|
|
17
|
+
portable_python-2.0.1.dist-info/scm_file_list.json,sha256=JEWL2bgKhM5MfDey6Ck0z28f5QpCpC_rsqh4pXnOQHo,2862
|
|
18
|
+
portable_python-2.0.1.dist-info/scm_version.json,sha256=NLVXUR8TKaY95dqXtJYGWJutY6pngwPq1sEo-b8In2Y,160
|
|
19
|
+
portable_python-2.0.1.dist-info/top_level.txt,sha256=S203pfaAC8FDZvrHsCWWua_9ZfSDEDCD1w90zzYFhOU,16
|
|
20
|
+
portable_python-2.0.1.dist-info/RECORD,,
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
{
|
|
2
|
+
"files": [
|
|
3
|
+
"tox.ini",
|
|
4
|
+
"Dockerfile",
|
|
5
|
+
"LICENSE",
|
|
6
|
+
"pyproject.toml",
|
|
7
|
+
"lock-deps.sh",
|
|
8
|
+
"requirements.txt",
|
|
9
|
+
"portable-python.yml",
|
|
10
|
+
"SECURITY.md",
|
|
11
|
+
"README.rst",
|
|
12
|
+
".dockerignore",
|
|
13
|
+
"CLAUDE.md",
|
|
14
|
+
"MANIFEST.in",
|
|
15
|
+
".gitignore",
|
|
16
|
+
"scripts/portable-python.sh",
|
|
17
|
+
"scripts/bashrc.sh",
|
|
18
|
+
"scripts/check_okf.py",
|
|
19
|
+
"docs/overview.md",
|
|
20
|
+
"docs/log.md",
|
|
21
|
+
"docs/changelog.md",
|
|
22
|
+
"docs/release.md",
|
|
23
|
+
"docs/index.md",
|
|
24
|
+
"docs/configuration/portable-python-yml.md",
|
|
25
|
+
"docs/configuration/index.md",
|
|
26
|
+
"docs/architecture/cpython.md",
|
|
27
|
+
"docs/architecture/config.md",
|
|
28
|
+
"docs/architecture/python-builder.md",
|
|
29
|
+
"docs/architecture/ppg.md",
|
|
30
|
+
"docs/architecture/build-setup.md",
|
|
31
|
+
"docs/architecture/python-inspector.md",
|
|
32
|
+
"docs/architecture/module-builder.md",
|
|
33
|
+
"docs/architecture/index.md",
|
|
34
|
+
"docs/modules/external-modules.md",
|
|
35
|
+
"docs/modules/index.md",
|
|
36
|
+
"docs/guides/bump-python-support.md",
|
|
37
|
+
"docs/guides/local-development.md",
|
|
38
|
+
"docs/guides/ci-cd.md",
|
|
39
|
+
"docs/guides/fix-a-portability-issue.md",
|
|
40
|
+
"docs/guides/add-an-external-module.md",
|
|
41
|
+
"docs/guides/bump-components.md",
|
|
42
|
+
"docs/guides/index.md",
|
|
43
|
+
"docs/guides/add-a-config-option.md",
|
|
44
|
+
"docs/guides/build-a-portable-python.md",
|
|
45
|
+
"docs/concepts/ppp-marker.md",
|
|
46
|
+
"docs/concepts/folder-masking.md",
|
|
47
|
+
"docs/concepts/build-layout.md",
|
|
48
|
+
"docs/concepts/portability.md",
|
|
49
|
+
"docs/concepts/telltale-detection.md",
|
|
50
|
+
"docs/concepts/index.md",
|
|
51
|
+
"docs/concepts/static-linking.md",
|
|
52
|
+
"docs/cli/lib-auto-correct.md",
|
|
53
|
+
"docs/cli/diagnostics.md",
|
|
54
|
+
"docs/cli/inspect.md",
|
|
55
|
+
"docs/cli/list.md",
|
|
56
|
+
"docs/cli/recompress.md",
|
|
57
|
+
"docs/cli/build.md",
|
|
58
|
+
"docs/cli/index.md",
|
|
59
|
+
"docs/cli/build-report.md",
|
|
60
|
+
"src/portable_python/__init__.py",
|
|
61
|
+
"src/portable_python/versions.py",
|
|
62
|
+
"src/portable_python/config.py",
|
|
63
|
+
"src/portable_python/cpython.py",
|
|
64
|
+
"src/portable_python/inspector.py",
|
|
65
|
+
"src/portable_python/tracking.py",
|
|
66
|
+
"src/portable_python/cli.py",
|
|
67
|
+
"src/portable_python/__main__.py",
|
|
68
|
+
"src/portable_python/external/__init__.py",
|
|
69
|
+
"src/portable_python/external/xtkinter.py",
|
|
70
|
+
"src/portable_python/external/xcpython.py",
|
|
71
|
+
"src/portable_python/external/_inspect.py",
|
|
72
|
+
"retired/README.md",
|
|
73
|
+
"retired/toolchain.py",
|
|
74
|
+
".claude/settings.json",
|
|
75
|
+
"tests/test_failed.py",
|
|
76
|
+
"tests/__init__.py",
|
|
77
|
+
"tests/sample-config2.yml",
|
|
78
|
+
"tests/test_prefix.py",
|
|
79
|
+
"tests/test_cleanup.py",
|
|
80
|
+
"tests/test_build.py",
|
|
81
|
+
"tests/test_recompress.py",
|
|
82
|
+
"tests/test_setup.py",
|
|
83
|
+
"tests/sample-config1.yml",
|
|
84
|
+
"tests/test_invoker.py",
|
|
85
|
+
"tests/test_report.py",
|
|
86
|
+
"tests/conftest.py",
|
|
87
|
+
"tests/test_list.py",
|
|
88
|
+
"tests/sample-incomplete.yml",
|
|
89
|
+
"tests/test_inspector.py",
|
|
90
|
+
".github/workflows/release.yml",
|
|
91
|
+
".github/workflows/tests.yml"
|
|
92
|
+
]
|
|
93
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|