0
0
mirror of https://github.com/python-LimeReport/containers.git synced 2024-12-23 16:23:00 +03:00
This commit is contained in:
Maxim Slipenko 2023-08-19 11:43:38 +03:00
parent 5fd401b563
commit 8af1c30602
7 changed files with 218 additions and 40 deletions

44
Dockerfile Normal file
View File

@ -0,0 +1,44 @@
FROM amd64/almalinux:8 as env
ARG AQTINSTALL_VERSION=3.1.6
ARG QT_VERSION=6.4.2
ARG PYTHON_VERSION=3.9
RUN yum -y update \
&& yum -y groupinstall 'Development Tools' \
&& yum -y install \
wget \
openssl-devel \
bzip2-devel \
libffi-devel \
cmake \
clang \
clang-devel \
llvm \
llvm-devel \
mesa-libGL-devel \
&& dnf --enablerepo=powertools -y install ninja-build \
&& yum clean all \
&& rm -rf /var/cache/yum
COPY ./scripts/install_python.sh ./scripts/install_pipx.sh ./scripts/install_qt.sh /
RUN /install_python.sh && rm -f /install_python.sh
RUN /install_pipx.sh && rm -f /install_pipx.sh
RUN pipx install aqtinstall==${AQTINSTALL_VERSION}
RUN /install_qt.sh && rm -f /install_qt.sh
ENV PATH="/opt/Qt/${QT_VERSION}/gcc_64/bin:$PATH"
RUN cd /opt \
&& git clone -b ${QT_VERSION} https://code.qt.io/pyside/pyside-setup.git \
&& cd pyside-setup \
&& pip3 install -r requirements.txt \
&& python3 setup.py build --parallel "$(nproc)" --limited-api yes \
&& mkdir -p /output \
&& export dir_name=qfpa-py${PYTHON_VERSION}-qt${QT_VERSION}-64bit-release \
&& tar czvf "/output/$dir_name.tar.gz" -C "./build/$dir_name/install" .
RUN cd /opt/pyside-setup \
&& python3 setup.py build --parallel "$(nproc)" bdist_wheel --limited-api yes
RUN cp /opt/pyside-setup/dist/* /output

76
Dockerfile_x86_64 Normal file
View File

@ -0,0 +1,76 @@
FROM amd64/almalinux:8 as env
ARG AQTINSTALL_VERSION=3.1.6
ARG QT_VERSION=6.4.2
ARG PYTHON_VERSION=3.9
RUN yum -y update \
&& yum -y groupinstall 'Development Tools' \
&& yum -y install \
wget \
openssl-devel \
bzip2-devel \
libffi-devel \
cmake \
clang \
clang-devel \
llvm \
llvm-devel \
mesa-libGL-devel \
&& dnf --enablerepo=powertools -y install ninja-build \
&& yum clean all \
&& rm -rf /var/cache/yum
#
COPY ./scripts/install_python.sh /
RUN \
chmod +x /install_python.sh \
&& /install_python.sh \
&& rm -f /install_python.sh
#
#
COPY ./scripts/install_pipx.sh /
RUN \
chmod +x /install_pipx.sh \
&& /install_pipx.sh \
&& rm -f /install_pipx.sh
#
#
RUN pipx install aqtinstall==${AQTINSTALL_VERSION}
COPY ./scripts/install_qt.sh /
RUN \
chmod +x /install_qt.sh \
&& /install_qt.sh \
&& rm -f /install_qt.sh
#
ENV PATH="/opt/Qt/${QT_VERSION}/gcc_64/bin:$PATH"
RUN \
ln -s $(which python3) /usr/local/bin/python \
&& ln -s $(which pip3) /usr/local/bin/pip
RUN python3 -m pip install wheel setuptools
COPY ./scripts/install_extra.sh /
RUN \
chmod +x /install_extra.sh \
&& /install_extra.sh \
&& rm -f /install_extra.sh
ENV PYSIDE_INSTALL_DIR="/usr/local"
RUN git clone --recurse-submodules https://github.com/python-LimeReport/python-LimeReport \
&& cd python-LimeReport
RUN pip install \
--extra-index-url=https://python-limereport.github.io/pypi/ \
--trusted-host python-limereport.github.io \
shiboken6==${QT_VERSION} pyside6==${QT_VERSION} shiboken6_generator==${QT_VERSION}
RUN \
export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) \
&& cd python-LimeReport \
&& python -m pip wheel . --no-deps

View File

@ -1,40 +0,0 @@
FROM quay.io/pypa/manylinux_2_28_x86_64 as env
ARG AQTINSTALL_VERSION=3.1.6
ARG QT_VERSION=6.4.0
ARG PYTHON_VERSION=3.8
ENV PATH="/opt/python/cp38-cp38/bin:$PATH"
RUN yum -y update \
&& yum -y groupinstall 'Development Tools' \
&& yum -y install cmake make ninja-build \
&& yum clean all \
&& rm -rf /var/cache/yum
RUN pipx install aqtinstall==${AQTINSTALL_VERSION} \
&& cd ~ \
&& aqt install-qt --outputdir /opt/Qt linux desktop ${QT_VERSION}
ENV PATH="/opt/Qt/${QT_VERSION}/gcc_64/bin:$PATH"
RUN pip install \
--index-url=https://download.qt.io/official_releases/QtForPython/ \
--trusted-host download.qt.io \
shiboken6 pyside6 shiboken6_generator
# RUN cd /opt \
# && git clone --depth 1 https://github.com/python-LimeReport/python-LimeReport.git \
# && cd python-LimeReport \
# && python -m pip wheel . --wheel-dir=/tmp/cibuildwheel/built_wheel --no-deps
#
# RUN cd /opt \
# && git clone -b ${QT_VERSION} --single-branch --depth 1 https://code.qt.io/pyside/pyside-setup.git \
# && cd pyside-setup \
# && pip install -r requirements.txt \
# && python setup.py build --qtpaths=/opt/Qt/${QT_VERSION}/gcc_64/bin/qtpaths --parallel $(nproc) bdist_wheel --limited-api yes \
# && pip install dist/*.whl
# ENV PYSIDE_INSTALL_DIR="/opt/pyside-setup/build/qfpa-py${PYTHON_VERSION}-qt${QT_VERSION}-64bit-release/install"

7
scripts/install_extra.sh Normal file
View File

@ -0,0 +1,7 @@
#!/usr/bin/env bash
PYTHON_PLATFORM=$(python3 -c "from packaging.tags import sys_tags; print(next(sys_tags()).platform.lower().replace(\"-\", \"_\").replace(\".\", \"_\").replace(\" \", \"_\"))")
echo "platform: $PYTHON_PLATFORM"
curl -L https://github.com/python-LimeReport/pyside6/releases/download/py${PYTHON_VERSION}-qt${QT_VERSION}/extra-$PYTHON_PLATFORM.tar.gz | tar -h -zx -C /usr/local

20
scripts/install_pipx.sh Executable file
View File

@ -0,0 +1,20 @@
#!/usr/bin/env bash
python3 -m pip install pipx
python3 -m pipx ensurepath
source "$HOME/.bashrc"
#
# cat <<EOF > /usr/local/bin/pipx
# #!/bin/bash
#
# set -euo pipefail
#
# if [ \$(id -u) -eq 0 ]; then
# export PIPX_HOME=/opt/_internal/pipx
# export PIPX_BIN_DIR=/usr/local/bin
# fi
# ${TOOLS_PATH}/bin/pipx "\$@"
# EOF
# chmod 755 /usr/local/bin/pipx

66
scripts/install_python.sh Executable file
View File

@ -0,0 +1,66 @@
#!/usr/bin/env bash
PYTHON_INSTALL_PATH="${INSTALLPATH:-"/usr/local/python"}"
CURRENT_PATH="${PYTHON_INSTALL_PATH}/current"
find_version_from_git_tags() {
local variable_name=$1
local requested_version=${!variable_name}
if [ "${requested_version}" = "none" ]; then return; fi
local repository=$2
local prefix=${3:-"tags/v"}
local separator=${4:-"."}
local last_part_optional=${5:-"false"}
if [ "$(echo "${requested_version}" | grep -o "." | wc -l)" != "2" ]; then
local escaped_separator=${separator//./\\.}
local last_part
if [ "${last_part_optional}" = "true" ]; then
last_part="(${escaped_separator}[0-9]+)?"
else
last_part="${escaped_separator}[0-9]+"
fi
local regex="${prefix}\\K[0-9]+${escaped_separator}[0-9]+${last_part}$"
local version_list="$(git ls-remote --tags ${repository} | grep -oP "${regex}" | tr -d ' ' | tr "${separator}" "." | sort -rV)"
if [ "${requested_version}" = "latest" ] || [ "${requested_version}" = "current" ] || [ "${requested_version}" = "lts" ]; then
declare -g ${variable_name}="$(echo "${version_list}" | head -n 1)"
else
set +e
declare -g ${variable_name}="$(echo "${version_list}" | grep -E -m 1 "^${requested_version//./\\.}([\\.\\s]|$)")"
set -e
fi
fi
if [ -z "${!variable_name}" ] || ! echo "${version_list}" | grep "^${!variable_name//./\\.}$" > /dev/null 2>&1; then
echo -e "Invalid ${variable_name} value: ${requested_version}\nValid values:\n${version_list}" >&2
exit 1
fi
echo "${variable_name}=${!variable_name}"
}
add_symlink() {
if [[ ! -d "${CURRENT_PATH}" ]]; then
ln -s -r "${INSTALL_PATH}" "${CURRENT_PATH}"
fi
if [ "${OVERRIDE_DEFAULT_VERSION}" = "true" ]; then
if [[ $(ls -l ${CURRENT_PATH}) != *"-> ${INSTALL_PATH}"* ]] ; then
rm "${CURRENT_PATH}"
ln -s -r "${INSTALL_PATH}" "${CURRENT_PATH}"
fi
fi
}
VERSION="3.9"
find_version_from_git_tags VERSION "https://github.com/python/cpython"
mkdir -p /tmp/python-src
cd /tmp/python-src
tgz_filename="Python-${VERSION}.tgz"
tgz_url="https://www.python.org/ftp/python/${VERSION}/${tgz_filename}"
echo "Downloading ${tgz_filename}..."
curl -sSL -o "/tmp/python-src/${tgz_filename}" "${tgz_url}"
tar -xzf "/tmp/python-src/${tgz_filename}" -C "/tmp/python-src" --strip-components=1
cd /tmp/python-src
./configure --enable-optimizations
make -j "$(nproc)" install
alias python=/usr/local/bin/python3

5
scripts/install_qt.sh Executable file
View File

@ -0,0 +1,5 @@
#!/usr/bin/env bash
source "$HOME/.bashrc"
/root/.local/bin/aqt install-qt --outputdir /opt/Qt linux desktop ${QT_VERSION}