fix: elan: use relative paths in wrapper script

since 3.1.1, `elan` extracts to a temporary location and then moves to a
final location, this threw the wrapper script off. Updating the patch to
use paths relative to the wrapper script, so that it works independent
of absolute location.
This commit is contained in:
Joachim Breitner 2024-03-09 16:01:03 +01:00
parent 9289a0678e
commit 5681570171

View File

@ -2,7 +2,7 @@ diff --git a/src/elan-dist/src/component/package.rs b/src/elan-dist/src/componen
index c51e76d..ae8159e 100644
--- a/src/elan-dist/src/component/package.rs
+++ b/src/elan-dist/src/component/package.rs
@@ -56,6 +56,35 @@ fn unpack_without_first_dir<R: Read>(archive: &mut tar::Archive<R>, path: &Path)
@@ -56,6 +56,37 @@ fn unpack_without_first_dir<R: Read>(archive: &mut tar::Archive<R>, path: &Path)
entry
.unpack(&full_path)
.chain_err(|| ErrorKind::ExtractingPackage)?;
@ -26,9 +26,11 @@ index c51e76d..ae8159e 100644
+ use std::os::unix::fs::PermissionsExt;
+ let new_path = dest_path.with_extension("orig");
+ ::std::fs::rename(dest_path, &new_path)?;
+ ::std::fs::write(dest_path, format!(r#"#! @shell@
+LEAN_CC="${{LEAN_CC:-@cc@}}" exec -a "$0" {} "$@" -L {}/lib # use bundled libraries, but not bundled compiler that doesn't know about NIX_LDFLAGS
+"#, new_path.to_str().unwrap(), dest_path.parent().unwrap().parent().unwrap().to_str().unwrap()))?;
+ ::std::fs::write(dest_path, r#"#! @shell@
+dir="$(dirname "${BASH_SOURCE[0]}")"
+# use bundled libraries, but not bundled compiler that doesn't know about NIX_LDFLAGS
+LEAN_CC="${LEAN_CC:-@cc@}" exec -a "$0" "$dir/leanc.orig" "$@" -L"$dir/../lib"
+"#)?;
+ ::std::fs::set_permissions(dest_path, ::std::fs::Permissions::from_mode(0o755))?;
+ }
+