Add python-stow-versions element
This element is designed to install latest minor versions of different python releases, like py27, py35, py36, py37, py38 into stow directory, and later easily enable them with stow. Change-Id: Iab6d20e7643e549b53c629fb430e58b1c5e72991
This commit is contained in:
parent
c113703050
commit
1de6fe4ba7
@ -0,0 +1,5 @@
|
||||
====================
|
||||
python-stow-versions
|
||||
====================
|
||||
|
||||
Element that installs latest minor releases of python
|
@ -0,0 +1,2 @@
|
||||
package-installs
|
||||
source-repositories
|
38
diskimage_builder/elements/python-stow-versions/install.d/70-python-build
Executable file
38
diskimage_builder/elements/python-stow-versions/install.d/70-python-build
Executable file
@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ ${DIB_DEBUG_TRACE:-0} -gt 1 ]; then
|
||||
set -x
|
||||
fi
|
||||
set -eu
|
||||
set -o pipefail
|
||||
|
||||
#Install python-build
|
||||
/pyenv/plugins/python-build/install.sh
|
||||
|
||||
DIB_PYTHON_VERSIONS=${DIB_PYTHON_VERSIONS:-"2.7,3.5,3.6,3.7,3.8,3.9"}
|
||||
DIB_VERSIONS_TO_INSTALL=${1:-$DIB_PYTHON_VERSIONS}
|
||||
|
||||
# Get pyenv versions
|
||||
DIB_PYENV_VERSIONS=$(python-build --definitions \
|
||||
| egrep "^\s*[2,3]\.[0-9]{1,2}\.[0-9]{1,2}$")
|
||||
|
||||
declare -A DIB_PYTHON_VERSIONS_ARRAY
|
||||
|
||||
for version in ${DIB_PYENV_VERSIONS}; do
|
||||
DIB_PYTHON_VERSIONS_ARRAY[${version%.*}]+="${version##*.} "
|
||||
done
|
||||
|
||||
if [ -n $DIB_VERSIONS_TO_INSTALL ]; then
|
||||
readarray -t DIB_VERSIONS_ARRAY <<<\
|
||||
"$(echo "$DIB_VERSIONS_TO_INSTALL" | tr ',' '\n')"
|
||||
fi
|
||||
|
||||
for key in ${!DIB_PYTHON_VERSIONS_ARRAY[@]}; do
|
||||
if ([ -n $DIB_VERSIONS_ARRAY ] && \
|
||||
[[ " ${DIB_VERSIONS_ARRAY[@]} " =~ " ${key} " ]]) || \
|
||||
[ -z ${DIB_VERSIONS_ARRAY} ]; then
|
||||
DIB_LAST_VERSION=${key}.$(echo "${DIB_PYTHON_VERSIONS_ARRAY[${key}]}" \
|
||||
| sed "s/ /\n/g" | sort -nr | head -n1)
|
||||
python-build ${DIB_LAST_VERSION} /usr/local/stow/python-${DIB_LAST_VERSION}
|
||||
fi
|
||||
done
|
@ -0,0 +1,18 @@
|
||||
bzip-dev:
|
||||
build-only: True
|
||||
curl:
|
||||
gcc:
|
||||
build-only: True
|
||||
git:
|
||||
build-only: True
|
||||
make:
|
||||
build-only: True
|
||||
readline-dev:
|
||||
build-only: True
|
||||
ssl-dev:
|
||||
build-only: True
|
||||
stow:
|
||||
sqlite-dev:
|
||||
build-only: True
|
||||
zlib-dev:
|
||||
build-only: True
|
51
diskimage_builder/elements/python-stow-versions/pkg-map
Normal file
51
diskimage_builder/elements/python-stow-versions/pkg-map
Normal file
@ -0,0 +1,51 @@
|
||||
{
|
||||
"family": {
|
||||
"debian": {
|
||||
"bzip-dev": "libbz2-dev",
|
||||
"curl": "curl",
|
||||
"gcc": "gcc",
|
||||
"git": "git",
|
||||
"make": "make",
|
||||
"readline-dev": "libreadline-dev",
|
||||
"ssl-dev": "libssl-dev",
|
||||
"stow": "stow",
|
||||
"sqlite-dev": "libsqlite3-dev",
|
||||
"zlib-dev": "zlib1g-dev"
|
||||
},
|
||||
"redhat": {
|
||||
"bzip-dev": "bzip2-devel",
|
||||
"curl": "curl",
|
||||
"gcc": "gcc",
|
||||
"git": "git",
|
||||
"make": "make",
|
||||
"readline-dev": "readline-devel",
|
||||
"ssl-dev": "openssl-devel",
|
||||
"stow": "stow",
|
||||
"sqlite-dev": "sqlite-devel",
|
||||
"zlib-dev": "zlib-devel"
|
||||
},
|
||||
"suse": {
|
||||
"bzip-dev": "libbz2-devel",
|
||||
"curl": "curl",
|
||||
"gcc": "gcc",
|
||||
"git": "git",
|
||||
"make": "make",
|
||||
"readline-dev": "readline-devel",
|
||||
"ssl-dev": "openssl-devel",
|
||||
"stow": "stow",
|
||||
"sqlite-dev": "sqlite3-devel",
|
||||
"zlib-dev": "zlib-devel"
|
||||
}
|
||||
},
|
||||
"default": {
|
||||
"bzip-dev": "",
|
||||
"curl": "curl",
|
||||
"gcc": "gcc",
|
||||
"git": "git",
|
||||
"make": "make",
|
||||
"readline-dev": "",
|
||||
"ssl-dev": "",
|
||||
"sqlite-dev": "",
|
||||
"zlib-dev": ""
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ ${DIB_DEBUG_TRACE:-0} -gt 1 ]; then
|
||||
set -x
|
||||
fi
|
||||
set -eu
|
||||
set -o pipefail
|
||||
|
||||
DIB_PYTHON_FILES=('/usr/local/bin/pyenv-install', \
|
||||
'/usr/localbin/pyenv-uninstall', '/usr/local/bin/python-build', \
|
||||
'/usr/local/share/python-build', '/pyenv')
|
||||
|
||||
for path in ${DIB_PYTHON_FILES}; do
|
||||
rm -rf ${DIB_PYTHON_PREFIX}/${path}
|
||||
done
|
@ -0,0 +1 @@
|
||||
pyenv git /pyenv/ https://github.com/pyenv/pyenv
|
@ -0,0 +1,4 @@
|
||||
package-installs
|
||||
python-stow-versions
|
||||
source-repositories
|
||||
ubuntu-minimal
|
@ -0,0 +1 @@
|
||||
export DIB_PYTHON_SUPPORTED_VERSIONS=3.8
|
@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then
|
||||
set -x
|
||||
fi
|
||||
set -eux
|
||||
set -o pipefail
|
||||
|
||||
[ -f "/pyenv/plugins/python-build/install.sh" ]
|
||||
[ -d "/usr/local/stow" ]
|
||||
|
||||
# dib-lint: disable=which
|
||||
which stow
|
@ -0,0 +1,27 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then
|
||||
set -x
|
||||
fi
|
||||
set -eux
|
||||
set -o pipefail
|
||||
|
||||
DIB_STOW_PATH="/usr/local/stow"
|
||||
|
||||
DIB_PY_BUILD_COUNTER=0
|
||||
|
||||
for pybuilds in $(ls -1 ${DIB_STOW_PATH} | grep "python-"); do
|
||||
DIB_PY_BUILD_COUNTER=$((DIB_PY_BUILD_COUNTER+1))
|
||||
py_dir_version=$(echo ${pybuilds} | cut -d "-" -f 2)
|
||||
py_real_version=$(\
|
||||
${DIB_STOW_PATH}/${pybuilds}/bin/python --version | cut -d " " -f 2)
|
||||
[[ ${py_real_version} == ${py_dir_version} ]]
|
||||
pushd ${DIB_STOW_PATH}
|
||||
stow ${pybuilds}
|
||||
popd
|
||||
py_stow_version=$(\
|
||||
/usr/local/bin/python${py_dir_version%.*} --version | cut -d " " -f 2)
|
||||
[[ ${py_stow_version} == ${py_dir_version} ]]
|
||||
done
|
||||
|
||||
[ $DIB_PY_BUILD_COUNTER -eq 1 ]
|
Loading…
Reference in New Issue
Block a user