From 54a6c64d38b15204cfdcee15b47cbd36f0471051 Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Fri, 20 Oct 2023 12:39:20 +0000 Subject: [PATCH] feat: Add symlink to LLVM in $HOME/.espup/esp-clang --- src/toolchain/llvm.rs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/toolchain/llvm.rs b/src/toolchain/llvm.rs index 7998c6e5..fe294416 100644 --- a/src/toolchain/llvm.rs +++ b/src/toolchain/llvm.rs @@ -8,9 +8,13 @@ use crate::{ toolchain::{download_file, rust::RE_EXTENDED_SEMANTIC_VERSION, Installable}, }; use async_trait::async_trait; +#[cfg(unix)] +use directories::BaseDirs; use log::{info, warn}; use miette::Result; use regex::Regex; +#[cfg(unix)] +use std::{fs::create_dir_all, os::unix::fs::symlink}; use std::{ fs::remove_dir_all, path::{Path, PathBuf}, @@ -186,7 +190,22 @@ impl Installable for Llvm { ); } #[cfg(unix)] - exports.push(format!("export LIBCLANG_PATH=\"{}\"", self.get_lib_path())); + if cfg!(unix) { + exports.push(format!("export LIBCLANG_PATH=\"{}\"", self.get_lib_path())); + let espup_dir = BaseDirs::new().unwrap().home_dir().join(".espup"); + + if !espup_dir.exists() { + create_dir_all(espup_dir.display().to_string()) + .map_err(|_| Error::CreateDirectory(espup_dir.display().to_string()))?; + } + let llvm_symlink_path = espup_dir.join("esp-clang"); + println!( + "About to symlink {} and {}", + self.get_lib_path(), + llvm_symlink_path.display() + ); + symlink(self.get_lib_path(), llvm_symlink_path)?; + } if self.extended { #[cfg(windows)]