|
| 1 | +# Experimental DuckDB Images |
| 2 | + |
| 3 | +This task needs DuckDB source trees in both the agent and judge containers. |
| 4 | +The standard Frontier-CS 2.0 adapter can select Docker base images, but it does |
| 5 | +not build problem-specific images by itself. Build these images before running |
| 6 | +a local Harbor trial: |
| 7 | + |
| 8 | +```bash |
| 9 | +bash 2.0/problems/duckdb_e2e_query_optimization/docker/build_images.sh |
| 10 | +``` |
| 11 | + |
| 12 | +Defaults: |
| 13 | + |
| 14 | +```text |
| 15 | +DUCKDB_REF=v1.5.3 |
| 16 | +DUCKDB_BUILD_JOBS=1 |
| 17 | +AGENT_TAG=frontiercs/duckdb-e2e-query-optimization-agent:experimental-v1.5.3 |
| 18 | +JUDGE_TAG=frontiercs/duckdb-e2e-query-optimization-judge:experimental-v1.5.3 |
| 19 | +``` |
| 20 | + |
| 21 | +The agent image contains: |
| 22 | + |
| 23 | +```text |
| 24 | +/app/duckdb |
| 25 | +``` |
| 26 | + |
| 27 | +The judge image contains: |
| 28 | + |
| 29 | +```text |
| 30 | +/opt/duckdb-vanilla |
| 31 | +/opt/duckdb-clean |
| 32 | +``` |
| 33 | + |
| 34 | +`/opt/duckdb-clean` is prebuilt with: |
| 35 | + |
| 36 | +```bash |
| 37 | +CMAKE_BUILD_PARALLEL_LEVEL=1 GEN=ninja DISABLE_UNITY=1 DISABLE_PARQUET=1 BUILD_JEMALLOC=0 BUILD_BENCHMARK=1 BUILD_EXTENSIONS='tpch' make |
| 38 | +``` |
| 39 | + |
| 40 | +`DUCKDB_BUILD_JOBS` intentionally defaults to `1`; higher parallelism can make |
| 41 | +large DuckDB C++ objects exhaust Docker memory on local machines. Unity builds |
| 42 | +are disabled for the same reason. Jemalloc is disabled because DuckDB v1.5.3's |
| 43 | +non-unity build exposes a missing include in the jemalloc allocator wrapper; |
| 44 | +vanilla and patched binaries are built with the same allocator setting. |
| 45 | + |
| 46 | +The judge copies that prebuilt tree to `/opt/duckdb-vanilla` during image |
| 47 | +construction. At evaluation time the evaluator first resets tracked files in |
| 48 | +`/opt/duckdb-clean` back to `HEAD` and removes untracked files under `src` |
| 49 | +without deleting ignored build artifacts, applies the submitted patch, performs |
| 50 | +an incremental rebuild of the DuckDB shell and optional benchmark runner, |
| 51 | +checks correctness against `/opt/duckdb-vanilla`, and then times TPC-H queries |
| 52 | +through DuckDB's shell and TPC-H extension. Keeping build artifacts in the clean |
| 53 | +tree is intentional; full DuckDB rebuilds are too slow for iterative Harbor |
| 54 | +submissions. |
0 commit comments