# RPM Build Container for Track System
# Base: CtyunOS 4 (similar to CentOS/RHEL 8)
# Purpose: Build and test RPM package in production environment

FROM ctyunos:4-25.07-250605

LABEL maintainer="Track System Team"
LABEL description="Build environment for Track System RPM package"

# Add custom YUM repository configuration
RUN echo -e '[everything]\n\
name=ctyunos-everything\n\
baseurl=https://repo.ctyun.cn/testting/ctyunos-4-25.07/everything/$basearch/\n\
enabled=1\n\
gpgcheck=0\n' > /etc/yum.repos.d/ctyunos.repo && \
    yum makecache

# Install system dependencies
RUN yum install -y \
    curl \
    git \
    tar \
    clang \
    libacl-devel \
    libselinux-devel \
    # Build essentials
    gcc \
    gcc-c++ \
    make \
    pkg-config \
    # Required libraries
    openssl-devel \
    libgit2-devel \
    libcurl-devel \
    # RPM building tools
    rpm-build \
    rpmdevtools \
    # Development tools
    wget \
    vim \
    # PostgreSQL client for testing
    postgresql \
    && yum clean all && \
    rm -rf /var/cache/yum

# Set Rust toolchain mirror sources for faster downloads
ENV RUSTUP_DIST_SERVER=https://rsproxy.cn
ENV RUSTUP_UPDATE_ROOT=https://rsproxy.cn/rustup

# Install Rust toolchain using Chinese mirror
RUN curl --proto '=https' --tlsv1.2 -sSf https://rsproxy.cn/rustup-init.sh | sh -s -- -y

# Set Rust environment
ENV PATH="/root/.cargo/bin:${PATH}" \
    RUSTFLAGS="-C opt-level=3" \
    CARGO_INCREMENTAL=0 \
    RUST_LOG=info,track_system=debug

# Configure cargo mirror for faster crates download
RUN mkdir -p /root/.cargo && \
    echo -e '[registry]\n\
[source.crates-io]\n\
replace-with = "rsproxy-sparse"\n\
[source.rsproxy]\n\
registry = "https://rsproxy.cn/crates.io-index"\n\
[source.rsproxy-sparse]\n\
registry = "sparse+https://rsproxy.cn/index/"\n\
[registries.rsproxy]\n\
index = "https://rsproxy.cn/crates.io-index"\n\
[net]\n\
git-fetch-with-cli = true' > /root/.cargo/config.toml && \
    rustup component add rustfmt clippy

# Setup rpmbuild directory structure
RUN rpmdev-setuptree

# Create app user and group
RUN groupadd -r track && useradd -r -g track track

# Set working directory
WORKDIR /workspace

# Verify installation
RUN echo "=== Build Environment ===" && \
    rustup --version && \
    cargo --version && \
    gcc --version | head -1 && \
    rpm --version && \
    git --version

# Default command
CMD ["/bin/bash"]