|
25 | 25 | package org.sqlite.util;
|
26 | 26 |
|
27 | 27 | import java.io.IOException;
|
| 28 | +import java.nio.file.Files; |
| 29 | +import java.nio.file.Path; |
| 30 | +import java.nio.file.Paths; |
28 | 31 | import java.util.HashMap;
|
29 | 32 | import java.util.Locale;
|
30 |
| -import java.util.concurrent.TimeUnit; |
| 33 | +import java.util.stream.Stream; |
31 | 34 |
|
32 | 35 | /**
|
33 | 36 | * Provides OS name and architecture name.
|
@@ -109,15 +112,22 @@ public static boolean isAndroid() {
|
109 | 112 | return System.getProperty("java.runtime.name", "").toLowerCase().contains("android");
|
110 | 113 | }
|
111 | 114 |
|
112 |
| - public static boolean isAlpine() { |
113 |
| - try { |
114 |
| - String output = |
115 |
| - processRunner.runAndWaitFor( |
116 |
| - "cat /etc/os-release | grep ^ID", 300, TimeUnit.MILLISECONDS); |
117 |
| - return output.toLowerCase().contains("alpine"); |
118 |
| - } catch (Throwable e) { |
119 |
| - return false; |
| 115 | + public static boolean isMusl() { |
| 116 | + Path mapFilesDir = Paths.get("/proc/self/map_files"); |
| 117 | + try (Stream<Path> dirStream = Files.list(mapFilesDir)) { |
| 118 | + return dirStream |
| 119 | + .map( |
| 120 | + path -> { |
| 121 | + try { |
| 122 | + return path.toRealPath().toString(); |
| 123 | + } catch (IOException e) { |
| 124 | + return ""; |
| 125 | + } |
| 126 | + }) |
| 127 | + .anyMatch(s -> s.toLowerCase().contains("musl")); |
| 128 | + } catch (IOException ignored) { |
120 | 129 | }
|
| 130 | + return false; |
121 | 131 | }
|
122 | 132 |
|
123 | 133 | static String getHardwareName() {
|
@@ -213,8 +223,8 @@ static String translateOSNameToFolderName(String osName) {
|
213 | 223 | return "Windows";
|
214 | 224 | } else if (osName.contains("Mac") || osName.contains("Darwin")) {
|
215 | 225 | return "Mac";
|
216 |
| - } else if (isAlpine()) { |
217 |
| - return "Linux-Alpine"; |
| 226 | + } else if (isMusl()) { |
| 227 | + return "Linux-Musl"; |
218 | 228 | } else if (isAndroid()) {
|
219 | 229 | return "Linux-Android";
|
220 | 230 | } else if (osName.contains("Linux")) {
|
|
0 commit comments