diff --git a/pkg/dockerfile/fast_generator.go b/pkg/dockerfile/fast_generator.go index 79dd66dba7..a703778ac6 100644 --- a/pkg/dockerfile/fast_generator.go +++ b/pkg/dockerfile/fast_generator.go @@ -356,7 +356,7 @@ func (g *FastGenerator) installPython(lines []string, tmpDir string) ([]string, if requirementsFile != "" { lines = append(lines, "RUN "+strings.Join([]string{ "--mount=from=" + dockercontext.RequirementsBuildContextName + ",target=/buildtmp", - "--mount=from=" + dockercontext.SrcBuildContextName + ",target=/src", + "--mount=type=bind,src=\".\",target=/src", UV_CACHE_MOUNT, }, " ")+" cd /src && UV_CACHE_DIR=\""+UV_CACHE_DIR+"\" UV_LINK_MODE=copy UV_COMPILE_BYTECODE=0 /opt/r8/monobase/run.sh monobase.user --requirements=/buildtmp/requirements.txt") } diff --git a/pkg/dockerfile/fast_generator_test.go b/pkg/dockerfile/fast_generator_test.go index 04f65b6a5c..94c8637a2b 100644 --- a/pkg/dockerfile/fast_generator_test.go +++ b/pkg/dockerfile/fast_generator_test.go @@ -157,7 +157,7 @@ func TestGeneratePythonPackages(t *testing.T) { dockerfile, err := generator.GenerateDockerfileWithoutSeparateWeights() require.NoError(t, err) dockerfileLines := strings.Split(dockerfile, "\n") - require.Equal(t, "RUN --mount=from=requirements,target=/buildtmp --mount=from=src,target=/src --mount=type=cache,target=/srv/r8/monobase/uv/cache,id=uv-cache cd /src && UV_CACHE_DIR=\"/srv/r8/monobase/uv/cache\" UV_LINK_MODE=copy UV_COMPILE_BYTECODE=0 /opt/r8/monobase/run.sh monobase.user --requirements=/buildtmp/requirements.txt", dockerfileLines[5]) + require.Equal(t, "RUN --mount=from=requirements,target=/buildtmp --mount=type=bind,src=\".\",target=/src --mount=type=cache,target=/srv/r8/monobase/uv/cache,id=uv-cache cd /src && UV_CACHE_DIR=\"/srv/r8/monobase/uv/cache\" UV_LINK_MODE=copy UV_COMPILE_BYTECODE=0 /opt/r8/monobase/run.sh monobase.user --requirements=/buildtmp/requirements.txt", dockerfileLines[5]) } func TestGenerateVerboseEnv(t *testing.T) { diff --git a/test-integration/test_integration/fixtures/local-whl-install/cog.yaml b/test-integration/test_integration/fixtures/local-whl-install/cog.yaml new file mode 100644 index 0000000000..75835f7a5f --- /dev/null +++ b/test-integration/test_integration/fixtures/local-whl-install/cog.yaml @@ -0,0 +1,5 @@ +build: + python_version: "3.12" + fast: true + python_requirements: "requirements.txt" +predict: "predict.py:Predictor" diff --git a/test-integration/test_integration/fixtures/local-whl-install/my_package-0.1-py2.py3-none-any.whl b/test-integration/test_integration/fixtures/local-whl-install/my_package-0.1-py2.py3-none-any.whl new file mode 100644 index 0000000000..1fef361b2f Binary files /dev/null and b/test-integration/test_integration/fixtures/local-whl-install/my_package-0.1-py2.py3-none-any.whl differ diff --git a/test-integration/test_integration/fixtures/local-whl-install/predict.py b/test-integration/test_integration/fixtures/local-whl-install/predict.py new file mode 100644 index 0000000000..44f6992b01 --- /dev/null +++ b/test-integration/test_integration/fixtures/local-whl-install/predict.py @@ -0,0 +1,6 @@ +from cog import BasePredictor + + +class Predictor(BasePredictor): + def predict(self, s: str) -> str: + return "hello " + s diff --git a/test-integration/test_integration/fixtures/local-whl-install/requirements.txt b/test-integration/test_integration/fixtures/local-whl-install/requirements.txt new file mode 100644 index 0000000000..85ce363443 --- /dev/null +++ b/test-integration/test_integration/fixtures/local-whl-install/requirements.txt @@ -0,0 +1 @@ +my_package @ file://my_package-0.1-py2.py3-none-any.whl diff --git a/test-integration/test_integration/test_build.py b/test-integration/test_integration/test_build.py index 45314d8945..96e8a1e88b 100644 --- a/test-integration/test_integration/test_build.py +++ b/test-integration/test_integration/test_build.py @@ -498,3 +498,15 @@ def test_fast_build_with_local_image(docker_image): os.remove(weights_file) assert build_process.returncode == 0 + + +def test_local_whl_install(docker_image): + project_dir = Path(__file__).parent / "fixtures/local-whl-install" + + build_process = subprocess.run( + ["cog", "build", "-t", docker_image], + cwd=project_dir, + capture_output=True, + ) + + assert build_process.returncode == 0