# 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"]