* Update `shell.nix`
- Replace pip-compile with uv packages
- Pin rust version
- Add var to trigger windmill print more info in stdout
* Replace `pip-compile` with `uv` (dirty + untested)
* Fix arguments passed to uv
Some of the flags are included by default in UV and can be safely removed:
- --resolver=backtracking
- --no-emit-index-url
Also uv does not support `--pip-args` and suggests to directly pass args to uv.
* Remove extra `dbg!`
* Replace 'pip-compile' with 'uv' in Dockerfile
* Add fallback option to `pip-compile` (Disabled)
* Add `uv` to `docker/DockerfileSlim*`
* Add `get_annotation_python` and rename `get_annotation` to `get_annotation_ts`
* Add option to fallback to pip-compile
Put `# no_uv` on top the file for specific python script
Or set `USE_PIP_COMPILE` variable to `true`
* Put back `pip-tools` into shell.nix
* Make sure lockfile resolves again if `#no_uv` used
Add #no_uv to the end of requirements (requirements.in)
That way if something breaks for customer, then they put #no_uv and new lockfile will be resolved
* Put `pip install pip-tools` in original spot
* Fix compilation error
* Fix EE compilation error
error[E0658]: attributes on expressions are experimental
--> windmill-worker/src/python_executor.rs:144:5
|
144 | #[cfg(feature = "enterprise")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #15701 <https://github.com/rust-lang/rust/issues/15701> for more information
* Add `no_cache` annotation
Will force recalculation of lockfile
And block uv from using cached values
* Target uv cache to /tmp/windmill/cache
* Prohibit uv from managing python
* Add uv to DockerfileBackendTests
* Pin uv version to 0.4.18 in Dockerfiles
* Dont put `#no_uv` in requirements.in
Instead postfix hash for requirements.in with `-no_uv`
* Push Warning to logs if fallbacked to pip-compile
---------
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
70 lines
2.5 KiB
Plaintext
70 lines
2.5 KiB
Plaintext
ARG DEBIAN_IMAGE=debian:bookworm-slim
|
|
ARG RUST_IMAGE=rust:1.80-slim-bookworm
|
|
ARG PYTHON_IMAGE=python:3.11.4-slim-bookworm
|
|
|
|
FROM ${DEBIAN_IMAGE} as downloader
|
|
|
|
ARG TARGETPLATFORM
|
|
|
|
SHELL ["/bin/bash", "-c"]
|
|
|
|
RUN apt update -y
|
|
RUN apt install -y unzip curl
|
|
|
|
RUN [ "$TARGETPLATFORM" == "linux/amd64" ] && curl -Lsf https://github.com/denoland/deno/releases/download/v1.46.3/deno-x86_64-unknown-linux-gnu.zip -o deno.zip || true
|
|
RUN [ "$TARGETPLATFORM" == "linux/arm64" ] && curl -Lsf https://github.com/denoland/deno/releases/download/v1.46.3/deno-aarch64-unknown-linux-gnu.zip -o deno.zip || true
|
|
|
|
|
|
RUN unzip deno.zip && rm deno.zip
|
|
|
|
|
|
FROM ${RUST_IMAGE} as builder
|
|
|
|
RUN apt-get update && apt-get install -y git libssl-dev pkg-config
|
|
|
|
RUN apt-get -y update \
|
|
&& apt-get install -y \
|
|
curl
|
|
|
|
ENV SQLX_OFFLINE=true
|
|
|
|
|
|
RUN mkdir -p /frontend/build
|
|
RUN apt-get update \
|
|
&& apt-get install -y ca-certificates tzdata libpq5 cmake\
|
|
make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev \
|
|
libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libxml2-dev \
|
|
libxmlsec1-dev libffi-dev liblzma-dev mecab-ipadic-utf8 libgdbm-dev libc6-dev git libprotobuf-dev libnl-route-3-dev \
|
|
libv8-dev nodejs npm clang libclang-dev\
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
RUN wget https://golang.org/dl/go1.21.5.linux-amd64.tar.gz && tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz
|
|
ENV PATH="${PATH}:/usr/local/go/bin"
|
|
ENV GO_PATH=/usr/local/go/bin/go
|
|
|
|
# Install UV
|
|
RUN curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.4.18/uv-installer.sh | sh
|
|
|
|
ENV TZ=Etc/UTC
|
|
|
|
ENV PYTHON_VERSION 3.11.4
|
|
|
|
RUN wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz \
|
|
&& tar -xf Python-${PYTHON_VERSION}.tgz && cd Python-${PYTHON_VERSION}/ && ./configure --enable-optimizations \
|
|
&& make -j 4 && make install
|
|
|
|
RUN /usr/local/bin/python3 -m pip install pip-tools
|
|
|
|
COPY --from=oven/bun:1.1.27 /usr/local/bin/bun /usr/bin/bun
|
|
|
|
|
|
RUN [ "$TARGETPLATFORM" == "linux/amd64" ] && curl -Lsf https://github.com/denoland/deno/releases/download/v1.41.0/deno-x86_64-unknown-linux-gnu.zip -o deno.zip || true
|
|
RUN [ "$TARGETPLATFORM" == "linux/arm64" ] && curl -Lsf https://github.com/denoland/deno/releases/download/v1.41.0/deno-aarch64-unknown-linux-gnu.zip -o deno.zip || true
|
|
|
|
COPY --from=downloader --chmod=755 /deno /usr/bin/deno
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y postgresql-client --allow-unauthenticated
|
|
|
|
RUN rustup component add rustfmt |