Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 14 additions & 42 deletions ubuntu-22.04-risc/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,64 +1,36 @@
FROM riscv64/ubuntu:focal as base

RUN apt-get update && \
DEBIAN_FRONTEND="noninteractive" apt-get install -y tree build-essential cmake curl wget git make pkg-config libgmp-dev libboost-dev libssl-dev zlib1g zlib1g-dev libreadline-dev libffi-dev && \
DEBIAN_FRONTEND="noninteractive" apt-get install -y build-essential cmake curl wget git make pkg-config libgmp-dev libboost-dev libssl-dev zlib1g zlib1g-dev libreadline-dev libffi-dev && \
rm -rf /var/lib/apt/lists/*

FROM base as ld

RUN curl -L -O https://ftpmirror.gnu.org/gnu/binutils/binutils-2.38.tar.gz && \
tar -xvzf binutils-2.38.tar.gz && \
cd binutils-2.38 && \
./configure --enable-ld --disable-gas --disable-gmp --disable-gold --disable-gprof --prefix=/opt/ld && \
./configure --enable-ld --disable-gas --disable-gmp --disable-gold --disable-gprof --prefix=/ld/usr && \
make && \
make install && \
tree /opt && \
/opt/ld/bin/ld --version

FROM base as sqlite

RUN curl -L -O https://sqlite.org/2022/sqlite-autoconf-3400100.tar.gz && \
tar -xvzf sqlite-autoconf-3400100.tar.gz && \
cd sqlite-autoconf-3400100 && \
CFLAGS="-DSQLITE_MAX_VARIABLE_NUMBER=500000" ./configure --prefix=/opt/sqlite3 && \
make && \
make install && \
tree /opt && \
/opt/sqlite3/bin/sqlite3 -version
ls -la /ld/usr/bin && \
ld --version

FROM base as final

COPY --from=ld /opt/ld /usr

COPY --from=sqlite /opt/sqlite3 /opt/sqlite3

RUN tree /opt && \
ld --version && \
/opt/sqlite3/bin/sqlite3 -version
COPY --from=ld /ld/usr /usr
RUN ls -la /usr/bin && \
ld --version

ENV PYENV_ROOT=/root/.pyenv
ENV PATH="$PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH"

RUN curl https://pyenv.run | bash

ARG PYTHON_CONFIGURE_OPTS="--enable-shared"
ARG LDFLAGS="-Wl,-rpath,/opt/sqlite3/lib -L/opt/sqlite3/lib -lsqlite3"
ARG CPPFLAGS="-I/opt/sqlite3/include"

RUN pyenv install 3.8
RUN pyenv install 3.9
RUN pyenv install 3.10
RUN pyenv install 3.11
RUN pyenv install 3.12

RUN pyenv global 3.12 3.11 3.10 3.9 3.8

# make sure sqlite is loaded from the expected path
RUN ldd $(python3.8 -c 'import _sqlite3; print(_sqlite3.__file__)') | grep /opt/sqlite3/lib/
RUN ldd $(python3.9 -c 'import _sqlite3; print(_sqlite3.__file__)') | grep /opt/sqlite3/lib/
RUN ldd $(python3.10 -c 'import _sqlite3; print(_sqlite3.__file__)') | grep /opt/sqlite3/lib/
RUN ldd $(python3.11 -c 'import _sqlite3; print(_sqlite3.__file__)') | grep /opt/sqlite3/lib/
RUN ldd $(python3.12 -c 'import _sqlite3; print(_sqlite3.__file__)') | grep /opt/sqlite3/lib/
RUN curl https://pyenv.run | bash && \
PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install --skip-existing 3.8 && \
PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install --skip-existing 3.9 && \
PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install --skip-existing 3.10 && \
PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install --skip-existing 3.11 && \
PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install --skip-existing 3.12 && \
pyenv global 3.12

ENV PATH="/root/.cargo/bin:${PATH}"
ENV RUST_BACKTRACE=1
Expand Down