Merge "Add python-stow-versions element"
This commit is contained in:
commit
56d9956cbd
@ -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