FROM ubuntu:xenial

ENV RUSTUP_HOME=/usr/local/rustup \
    CARGO_HOME=/usr/local/cargo \
    PATH=/usr/local/cargo/bin:$PATH \
    RUST_VERSION=1.43.0 \
    LC_ALL=C.UTF-8 \
    LANG=C.UTF-8


# Add deadsnakes repo
RUN set -eux; \
    apt update -qy; \
    apt install -y software-properties-common; \
    add-apt-repository -y ppa:deadsnakes/ppa;

# APT dependencies
RUN set -eux; \
    apt update -qy; \
    apt install -y \
        software-properties-common wget curl pkg-config git \
        libpq-dev libsnappy-dev libsodium-dev \
        python3.7 python3.7-dev python3.7-venv python3.7-distutils \
        python3.8 python3.8-dev python3.8-venv python3.8-distutils \
        python3-dev python3-pip python3-wheel python3-requests python3-six python3-pytest

# Rust setup from docker-rust debian Dockerfile
RUN set -eux; \
    dpkgArch="$(dpkg --print-architecture)"; \
    rustArch='x86_64-unknown-linux-gnu'; rustupSha256='ad1f8b5199b3b9e231472ed7aa08d2e5d1d539198a15c5b1e53c746aad81d27b' ; \
    url="https://static.rust-lang.org/rustup/archive/1.21.1/${rustArch}/rustup-init"; \
    wget "$url"; \
    echo "${rustupSha256} *rustup-init" | sha256sum -c -; \
    chmod +x rustup-init; \
    ./rustup-init -y --no-modify-path --profile minimal --default-toolchain $RUST_VERSION; \
    rm rustup-init; \
    chmod -R a+w $RUSTUP_HOME $CARGO_HOME; \
    rustup --version; \
    cargo --version; \
    rustc --version;

# Compile and install diesel
RUN set -eux; \
    cargo install diesel_cli --version 1.3.1 --no-default-features --features postgres; \
    diesel --version

# Install pipenv using aggressive 'get-pipenv.py' script
# this will clobber distro installation of, eg, 'pip'
# original command: curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python3; \
RUN set -eux; \
    curl -L https://archive.org/download/pipenv-mirror/get-pipenv.2020-12-22.py | python3; \
    pipenv --version