@@ -330,7 +330,7 @@ fn c2rust(crate_dir: &Path, duckdb_include_dir: &Path) {
330330fn cpp ( duckdb_include_dir : & Path ) {
331331 cc:: Build :: new ( )
332332 . std ( "c++20" )
333- . flags ( [ "-Wall" , "-Wextra" , "-Wpedantic" ] )
333+ . flags ( [ "-Wall" , "-Wextra" , "-Wpedantic" , "-Werror" ] )
334334 . cpp ( true )
335335 . include ( duckdb_include_dir)
336336 . include ( "cpp/include" )
@@ -391,8 +391,12 @@ fn main() {
391391
392392 let crate_dir = PathBuf :: from ( env:: var ( "CARGO_MANIFEST_DIR" ) . unwrap ( ) ) ;
393393 let duckdb_dir = crate_dir. join ( "duckdb" ) ;
394- let out_dir = PathBuf :: from ( env:: var ( "OUT_DIR" ) . unwrap ( ) ) ;
395- let library_dir = out_dir. join ( format ! ( "duckdb-lib-{version}" ) ) ;
394+ // Cargo has changed OUT_DIR behaviour so for every branch and build we have
395+ // a different directory e.g.
396+ // ~/vortex/target/release/build/vortex-duckdb-b6bc1fb73230910e/out/duckdb-lib-v1.5.2
397+ // We don't want this since artifacts are the same.
398+ // We can't use CARGO_TARGET_DIR since it's out of tree.
399+ let library_dir = duckdb_dir. join ( format ! ( "duckdb-lib-{version}" ) ) ;
396400
397401 let library_dir_str = library_dir. display ( ) ;
398402 println ! ( "cargo:rustc-link-search=native={library_dir_str}" ) ;
@@ -413,7 +417,7 @@ fn main() {
413417 // Alternatively, set LD_LIBRARY_PATH (Linux) or DYLD_LIBRARY_PATH (macOS) at runtime.
414418 println ! ( "cargo:lib_dir={library_dir_str}" ) ;
415419
416- let source_dir = out_dir . join ( format ! ( "duckdb-source-{version}" ) ) ;
420+ let source_dir = duckdb_dir . join ( format ! ( "duckdb-source-{version}" ) ) ;
417421 let source_archive_url = match & version {
418422 DuckDBVersion :: Release ( v) => format ! ( "{DUCKDB_SOURCE_RELEASE_URL}/v{v}.zip" ) ,
419423 DuckDBVersion :: Commit ( c) => format ! ( "{DUCKDB_SOURCE_COMMIT_URL}/{c}.zip" ) ,
@@ -428,10 +432,6 @@ fn main() {
428432 extract ( & source_archive_path, & source_dir) ;
429433 }
430434
431- drop ( fs:: remove_file ( & duckdb_dir) ) ;
432- drop ( fs:: remove_dir_all ( & duckdb_dir) ) ;
433- std:: os:: unix:: fs:: symlink ( & source_dir, & duckdb_dir) . unwrap ( ) ;
434-
435435 let has_debug_env =
436436 env:: var ( "VX_DUCKDB_DEBUG" ) . is_ok_and ( |v| matches ! ( v. as_str( ) , "1" | "true" ) ) ;
437437 let build_type = match has_debug_env {
0 commit comments