Open blbuford opened 2 weeks ago
Hm we changed some build behaviors in an attempt to make the file paths shorter, cc @charliermarsh
It may not be related -- the path here seems to be repeated infinitely for some reason (src/build/temp.linux-x86_64-cpython-311/xgboost
).
Hm I can't think of another reason it'd regress though?
I didn't see that it regressed. You're right, it's probably related.
So I don't really understand the problem yet, but if you change the directory name from src
to xyz
in our build cache, it works...
I think the problem is that they seem to create some sort of scratch directory at ../src
. But we build from a directory named src
. So it's specific to XGBoost...
That's pretty particular. It seems naughty of them to escape their build directory like that. I think it's worth opening an upstream issue?
I might be misunderstanding, it could be a problem on our end. Need to look at the source.
Ah actually, I can't replicate this with latest XGBoost:
FROM python:3.11.9-slim-bookworm
RUN apt-get update \
&& apt-get install -y git build-essential cmake --no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
RUN pip install uv==0.5.1
RUN uv pip install --system --no-cache --no-binary xgboost xgboost
I think this is really an issue with XGBoost that seems to have been fixed. I'm a little hesitant to make changes in light of that.
Bummer. Why does up-to-date pip work on that, but uv does not? E.g. this works:
FROM python:3.11.9-slim-bookworm
RUN apt-get update \
&& apt-get install -y git build-essential cmake --no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
RUN pip install --upgrade pip && pip install --no-cache --no-binary xgboost xgboost==1.5.2
They probably do not use the same build directory naming scheme as us.
Here's a minimum dockerfile to reproduce the error:
Changing that
uv==0.5.1
touv==0.5.0
makes thedocker build -f tmp/uv-fails.Dockerfile .
pass. Also up-to-date pip works as well, so I suspect there's something with the newest version of uv.From what I can see about the error, somewhere in the compilation uv makes some god-awful looking path that exceeds 4096 characters and looks like:
Let me know if you need any more info! Thanks for taking a look.