Files
android-assistant/scripts/docker/Dockerfile.rhel
T
2025-10-18 00:39:25 -05:00

89 lines
2.3 KiB
Docker

# Dockerfile for RHEL/Fedora build environment
# Automates all setup steps from the build-rhel workflow job
#
# Usage:
# docker build -f scripts/docker/Dockerfile.rhel -t android-file-handler-rhel-builder .
# docker run -v $(pwd):/workspace -w /workspace android-file-handler-rhel-builder
FROM fedora:42
# Set build argument for fpm version (can be overridden at build time)
ARG FPM_VERSION=1.16.0
# Install system dependencies including tk8-devel for Python tkinter support
# Using tk8 (version 8.6) instead of tk (version 9.0) for Python 3.12 compatibility
RUN dnf -y update && \
dnf -y install \
gcc \
make \
zlib-devel \
bzip2 \
bzip2-devel \
readline-devel \
sqlite-devel \
openssl-devel \
libffi-devel \
wget \
tar \
git \
curl \
ruby \
rubygems \
rpm-build \
redhat-rpm-config \
gcc-c++ \
patch \
which \
xz-devel \
tk-devel \
tcl-devel \
libX11-devel \
libXext-devel \
libXrender-devel && \
dnf clean all
# Install pyenv
ENV PYENV_ROOT="/root/.pyenv"
ENV PATH="$PYENV_ROOT/bin:$PATH"
RUN git clone https://github.com/pyenv/pyenv.git /root/.pyenv
# Install Python 3.13 via pyenv with tkinter support
# The tk8-devel package must be installed before this step for _tkinter to be compiled
RUN eval "$(pyenv init -)" && \
LDFLAGS="-L/usr/lib64" \
CPPFLAGS="-I/usr/include" \
PYTHON_CONFIGURE_OPTS="--enable-shared" \
pyenv install 3.13 && \
pyenv global 3.13 && \
pyenv rehash
# Update PATH to include pyenv shims
ENV PATH="/root/.pyenv/shims:$PATH"
# Verify Python has tkinter support
RUN python3 -c "import tkinter; import _tkinter; print('tkinter support verified')" || \
(echo "ERROR: Python was built without tkinter support" && exit 1)
# Install Poetry
RUN curl -sSL https://install.python-poetry.org | python3 - --yes
# Add Poetry to PATH
ENV PATH="/root/.local/bin:$PATH"
# Verify Poetry installation
RUN poetry --version
# Install fpm
RUN gem install --no-document -v "${FPM_VERSION}" fpm
# Set working directory
WORKDIR /workspace
# Set environment variables for build
ENV CI_CD=true
ENV DISTRO_TYPE=rhel
# Default command runs the build script
CMD ["sh", "-c", "poetry install --no-interaction && poetry run python scripts/build_package_linux.py"]