|
1 | 1 | FROM riscv64/ubuntu:focal as base
|
2 | 2 |
|
3 | 3 | RUN apt-get update && \
|
4 |
| - 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 && \ |
| 4 | + 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 && \ |
5 | 5 | rm -rf /var/lib/apt/lists/*
|
6 | 6 |
|
7 | 7 | FROM base as ld
|
8 | 8 |
|
9 | 9 | RUN curl -L -O https://ftpmirror.gnu.org/gnu/binutils/binutils-2.38.tar.gz && \
|
10 | 10 | tar -xvzf binutils-2.38.tar.gz && \
|
11 | 11 | cd binutils-2.38 && \
|
12 |
| - ./configure --enable-ld --disable-gas --disable-gmp --disable-gold --disable-gprof --prefix=/ld/usr && \ |
| 12 | + ./configure --enable-ld --disable-gas --disable-gmp --disable-gold --disable-gprof --prefix=/opt/ld && \ |
13 | 13 | make && \
|
14 | 14 | make install && \
|
15 |
| - ls -la /ld/usr/bin && \ |
16 |
| - ld --version |
| 15 | + tree /opt && \ |
| 16 | + /opt/ld/bin/ld --version |
| 17 | + |
| 18 | +FROM base as sqlite |
| 19 | + |
| 20 | +RUN curl -L -O https://sqlite.org/2022/sqlite-autoconf-3400100.tar.gz && \ |
| 21 | + tar -xvzf sqlite-autoconf-3400100.tar.gz && \ |
| 22 | + cd sqlite-autoconf-3400100 && \ |
| 23 | + CFLAGS="-DSQLITE_MAX_VARIABLE_NUMBER=500000" ./configure --prefix=/opt/sqlite3 && \ |
| 24 | + make && \ |
| 25 | + make install && \ |
| 26 | + tree /opt && \ |
| 27 | + /opt/sqlite3/bin/sqlite3 -version |
17 | 28 |
|
18 | 29 | FROM base as final
|
19 | 30 |
|
20 |
| -COPY --from=ld /ld/usr /usr |
21 |
| -RUN ls -la /usr/bin && \ |
22 |
| - ld --version |
| 31 | +COPY --from=ld /opt/ld /usr |
| 32 | + |
| 33 | +COPY --from=sqlite /opt/sqlite3 /opt/sqlite3 |
| 34 | + |
| 35 | +RUN tree /opt && \ |
| 36 | + ld --version && \ |
| 37 | + /opt/sqlite3/bin/sqlite3 -version |
23 | 38 |
|
24 | 39 | ENV PYENV_ROOT=/root/.pyenv
|
25 | 40 | ENV PATH="$PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH"
|
26 | 41 |
|
27 |
| -RUN curl https://pyenv.run | bash && \ |
28 |
| - PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install --skip-existing 3.8 && \ |
29 |
| - PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install --skip-existing 3.9 && \ |
30 |
| - PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install --skip-existing 3.10 && \ |
31 |
| - PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install --skip-existing 3.11 && \ |
32 |
| - PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install --skip-existing 3.12 && \ |
33 |
| - pyenv global 3.12 |
| 42 | +RUN curl https://pyenv.run | bash |
| 43 | + |
| 44 | +ARG PYTHON_CONFIGURE_OPTS="--enable-shared" |
| 45 | +ARG LDFLAGS="-Wl,-rpath,/opt/sqlite3/lib -L/opt/sqlite3/lib -lsqlite3" |
| 46 | +ARG CPPFLAGS="-I/opt/sqlite3/include" |
| 47 | + |
| 48 | +RUN pyenv install 3.8 |
| 49 | +RUN pyenv install 3.9 |
| 50 | +RUN pyenv install 3.10 |
| 51 | +RUN pyenv install 3.11 |
| 52 | +RUN pyenv install 3.12 |
| 53 | + |
| 54 | +RUN pyenv global 3.12 3.11 3.10 3.9 3.8 |
| 55 | + |
| 56 | +# make sure sqlite is loaded from the expected path |
| 57 | +RUN ldd $(python3.8 -c 'import _sqlite3; print(_sqlite3.__file__)') | grep /opt/sqlite3/lib/ |
| 58 | +RUN ldd $(python3.9 -c 'import _sqlite3; print(_sqlite3.__file__)') | grep /opt/sqlite3/lib/ |
| 59 | +RUN ldd $(python3.10 -c 'import _sqlite3; print(_sqlite3.__file__)') | grep /opt/sqlite3/lib/ |
| 60 | +RUN ldd $(python3.11 -c 'import _sqlite3; print(_sqlite3.__file__)') | grep /opt/sqlite3/lib/ |
| 61 | +RUN ldd $(python3.12 -c 'import _sqlite3; print(_sqlite3.__file__)') | grep /opt/sqlite3/lib/ |
34 | 62 |
|
35 | 63 | ENV PATH="/root/.cargo/bin:${PATH}"
|
36 | 64 | ENV RUST_BACKTRACE=1
|
|
0 commit comments