Skip to content

Commit 08351cd

Browse files
committed
clean up rpath handling
Signed-off-by: Alexander Droste <[email protected]>
1 parent 98a3f39 commit 08351cd

File tree

2 files changed

+6
-15
lines changed

2 files changed

+6
-15
lines changed

.cargo/config.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
[target.'cfg(target_family="unix")']
22
rustflags = [
33
"-C", "force-frame-pointers=yes",
4-
"-C", "link-arg=-Wl,-rpath,$ORIGIN/target/lib"
4+
# Add dynamic DuckDB library directory to runtime search path.
5+
"-C", "link-arg=-Wl,-rpath,$ORIGIN/../duckdb-v1.3.0",
6+
"-C", "link-arg=-Wl,-rpath,@executable_path/../duckdb-v1.3.0"
57
]
68

79
[target.wasm32-unknown-unknown]

vortex-duckdb-ext/build.rs

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ fn download_duckdb_archive() -> Result<PathBuf, Box<dyn std::error::Error>> {
1616
.map(PathBuf::from)
1717
.unwrap_or_else(|_| workspace_root.join("target"));
1818

19-
let duckdb_dir = target_dir.join(DUCKDB_VERSION);
19+
let duckdb_dir = target_dir.join(format!("duckdb-{DUCKDB_VERSION}"));
2020

2121
let target = env::var("TARGET")?;
2222
let (platform, arch) = match target.as_str() {
@@ -52,27 +52,17 @@ fn extract_duckdb_libraries(archive_path: PathBuf) -> Result<PathBuf, Box<dyn st
5252
.ok_or("Invalid archive path")?
5353
.to_path_buf();
5454

55-
let lib_file = if env::var("TARGET").unwrap().contains("apple") {
56-
"libduckdb.dylib"
57-
} else {
58-
"libduckdb.so"
59-
};
60-
6155
// Check if already extracted.
62-
if duckdb_dir.join(lib_file).exists() {
56+
if duckdb_dir.join("libduckdb.dylib").exists() && duckdb_dir.join("libduckdb.so").exists() {
6357
println!("DuckDB libraries already extracted, skipping extraction");
6458
return Ok(duckdb_dir);
6559
}
6660

67-
println!("Extracting DuckDB libraries to target/lib");
6861
let file = fs::File::open(&archive_path)?;
6962
let mut archive = zip::ZipArchive::new(file)?;
7063
archive.extract(&duckdb_dir)?;
64+
println!("Extracting DuckDB libraries to {}", duckdb_dir.display());
7165

72-
println!(
73-
"cargo:warning=Extracted DuckDB libraries to: {}",
74-
duckdb_dir.display()
75-
);
7666
Ok(duckdb_dir)
7767
}
7868

@@ -130,7 +120,6 @@ fn main() {
130120
// Link against DuckDB dylib.
131121
println!("cargo:rustc-link-search=native={}", lib_path.display());
132122
println!("cargo:rustc-link-lib=dylib=duckdb");
133-
println!("cargo:rustc-link-arg=-Wl,-rpath,{}", lib_path.display());
134123

135124
if env::var("TARGET").unwrap().contains("linux") {
136125
println!("cargo:rustc-link-lib=stdc++");

0 commit comments

Comments
 (0)