2019-05-31 13:22:21 -07:00
|
|
|
extpython
|
|
|
|
=========
|
2019-05-31 07:41:20 -07:00
|
|
|
|
2021-06-10 19:06:17 -07:00
|
|
|
Isolated python .deb builder
|
2019-05-31 07:41:20 -07:00
|
|
|
|
2019-05-31 13:22:21 -07:00
|
|
|
Extpython is a collection of tools for building installable packages containing various versions of Python. The
|
|
|
|
installations are isolated from the operating system's python such that modules may be added, removed, or upgraded
|
|
|
|
without risk of breaking. The builds are executed in Docker.
|
2019-05-31 07:41:20 -07:00
|
|
|
|
2021-06-10 19:06:17 -07:00
|
|
|
*Example invocation:*
|
2019-05-31 14:26:56 -07:00
|
|
|
|
|
|
|
```
|
2021-06-10 19:06:17 -07:00
|
|
|
./images.sh # pulls / creates base images with dependencies
|
|
|
|
./build.sh trusty-3.9.5.sh # build using the recipe in the named script file
|
2019-05-31 14:26:56 -07:00
|
|
|
```
|
|
|
|
|
2021-06-10 19:06:17 -07:00
|
|
|
The vars file - `trusty-3.9.5.sh` above - contains information about what python version will be built. See
|
|
|
|
`src/bionic-3.9.5.sh` for an annotated example.
|
2019-05-31 14:26:56 -07:00
|
|
|
|
|
|
|
|
2021-06-10 19:06:17 -07:00
|
|
|
Version support matrix
|
|
|
|
----------------------
|
2019-05-31 15:17:58 -07:00
|
|
|
|
2023-08-24 15:22:53 -07:00
|
|
|
| | 2.7 | 3.6 | 3.7 | 3.8 | 3.9 | 3.10 | 3.11 |
|
|
|
|
|--------|--------|------------------|-------|----------------------|--------|---------|--------|
|
|
|
|
| 14.04 | | 3.6.7<br />3.6.8 | | | 3.9.5* | 3.10.0* | |
|
|
|
|
| 16.04 | | 3.6.7 | 3.7.3 | | 3.9.5 | 3.10.0* | |
|
|
|
|
| 18.04 | 2.7.16 | 3.6.7 | 3.7.3 | 3.8.0a4<br />3.8.0b1 | 3.9.5 | 3.10.0 | 3.11.5 |
|
|
|
|
| 19.04 | | | 3.7.3 | | | | |
|
|
|
|
| 20.04 | | | | | 3.9.5 | 3.10.0 | 3.11.5 |
|
2019-05-31 15:17:58 -07:00
|
|
|
|
2023-08-20 10:11:42 -07:00
|
|
|
\* with provided extpython-openssl packages - see below
|
2019-05-31 15:17:58 -07:00
|
|
|
|
2019-05-31 07:41:20 -07:00
|
|
|
|
2021-06-10 19:06:17 -07:00
|
|
|
Openssl
|
|
|
|
-------
|
|
|
|
|
2023-08-24 15:22:53 -07:00
|
|
|
Some versions of Python require a version of openssl that is newer than what ships on many of these host OSes. To
|
|
|
|
satisfy this requirement, extpython also builds an Openssl package that installs in a similar isolated manner.
|
2021-06-10 19:06:17 -07:00
|
|
|
|
|
|
|
See `./ssl/` for details.
|
|
|
|
|
|
|
|
|
|
|
|
TODO
|
|
|
|
----
|
|
|
|
|
|
|
|
* Parameter for pre-loaded pip modules
|
2023-08-20 10:11:42 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Uploading
|
|
|
|
---------
|
|
|
|
|
|
|
|
`curl -v 'http://artifact.scc.net.davepedu.com/addpkg?provider=tar&reponame=cpython&version=3.10.0' -F 'f=@cpython-3.10.0.tar.gz'`
|
|
|
|
|
|
|
|
`rpcli -s http://artifact.scc.net.davepedu.com upload -y apt -f builds/3.10.0/trusty/extpython-python3.10_3.10.0_amd64.deb -r extpython -p extpython-python3.10 -i 3.10.0 -a dist=trusty`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Testing
|
|
|
|
-------
|
|
|
|
|
|
|
|
Install extpython in a temporary container an run it.
|
|
|
|
|
|
|
|
`docker run -it --rm ubuntu:bionic bash`
|
|
|
|
|
|
|
|
```
|
|
|
|
sed -i -E 's/(archive|security).ubuntu.com/aptmirror/' /etc/apt/sources.list && \
|
|
|
|
sed -i -E 's/^deb-src/# deb-src/' /etc/apt/sources.list && \
|
|
|
|
apt-get update && \
|
|
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -y wget gnupg && \
|
|
|
|
. /etc/lsb-release && \
|
|
|
|
wget -q -O- http://artifact.scc.net.davepedu.com/repo/apt/extpython/dists/${DISTRIB_CODENAME}/install | bash -x /dev/stdin && \
|
|
|
|
apt-get install -y extpython-python3.10
|
|
|
|
```
|