fix wasi-libc caching path
This commit is contained in:
@@ -180,14 +180,8 @@ func use(goos, goarch string, wasiThreads bool) (export Export, err error) {
|
||||
// If not exists in LLGoROOT, download and use cached wasiSdkRoot
|
||||
if _, err = os.Stat(wasiSdkRoot); err != nil {
|
||||
sdkDir := filepath.Join(cacheDir(), llvm.GetTargetTriple(goos, goarch))
|
||||
if _, err = os.Stat(sdkDir); err != nil {
|
||||
if !errors.Is(err, fs.ErrNotExist) {
|
||||
return
|
||||
}
|
||||
|
||||
if wasiSdkRoot, err = downloadAndExtract(wasiSdkUrl, sdkDir); err != nil {
|
||||
return
|
||||
}
|
||||
if wasiSdkRoot, err = checkDownloadAndExtract(wasiSdkUrl, sdkDir); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
// WASI-SDK configuration
|
||||
|
||||
@@ -12,36 +12,36 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
func downloadAndExtract(url, dir string) (wasiSdkRoot string, err error) {
|
||||
if _, err = os.Stat(dir); err == nil {
|
||||
func checkDownloadAndExtract(url, dir string) (wasiSdkRoot string, err error) {
|
||||
if _, err = os.Stat(dir); err != nil {
|
||||
os.RemoveAll(dir)
|
||||
}
|
||||
tempDir := dir + ".temp"
|
||||
os.RemoveAll(tempDir)
|
||||
if err := os.MkdirAll(tempDir, 0755); err != nil {
|
||||
return "", fmt.Errorf("failed to create temporary directory: %w", err)
|
||||
}
|
||||
tempDir := dir + ".temp"
|
||||
os.RemoveAll(tempDir)
|
||||
if err := os.MkdirAll(tempDir, 0755); err != nil {
|
||||
return "", fmt.Errorf("failed to create temporary directory: %w", err)
|
||||
}
|
||||
|
||||
urlPath := strings.Split(url, "/")
|
||||
filename := urlPath[len(urlPath)-1]
|
||||
localFile := filepath.Join(tempDir, filename)
|
||||
if err = downloadFile(url, localFile); err != nil {
|
||||
return "", fmt.Errorf("failed to download file: %w", err)
|
||||
}
|
||||
defer os.Remove(localFile)
|
||||
urlPath := strings.Split(url, "/")
|
||||
filename := urlPath[len(urlPath)-1]
|
||||
localFile := filepath.Join(tempDir, filename)
|
||||
if err = downloadFile(url, localFile); err != nil {
|
||||
return "", fmt.Errorf("failed to download file: %w", err)
|
||||
}
|
||||
defer os.Remove(localFile)
|
||||
|
||||
if strings.HasSuffix(filename, ".tar.gz") || strings.HasSuffix(filename, ".tgz") {
|
||||
err = extractTarGz(localFile, tempDir)
|
||||
} else if strings.HasSuffix(filename, ".tar.xz") {
|
||||
err = extractTarXz(localFile, tempDir)
|
||||
} else {
|
||||
return "", fmt.Errorf("unsupported archive format: %s", filename)
|
||||
}
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to extract archive: %w", err)
|
||||
}
|
||||
if err = os.Rename(tempDir, dir); err != nil {
|
||||
return "", fmt.Errorf("failed to rename directory: %w", err)
|
||||
if strings.HasSuffix(filename, ".tar.gz") || strings.HasSuffix(filename, ".tgz") {
|
||||
err = extractTarGz(localFile, tempDir)
|
||||
} else if strings.HasSuffix(filename, ".tar.xz") {
|
||||
err = extractTarXz(localFile, tempDir)
|
||||
} else {
|
||||
return "", fmt.Errorf("unsupported archive format: %s", filename)
|
||||
}
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to extract archive: %w", err)
|
||||
}
|
||||
if err = os.Rename(tempDir, dir); err != nil {
|
||||
return "", fmt.Errorf("failed to rename directory: %w", err)
|
||||
}
|
||||
}
|
||||
wasiSdkRoot = filepath.Join(dir, "wasi-sdk-25.0-x86_64-macos")
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user