111 llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>>
File =
112 VFS.getBufferForFile(
"/etc/redhat-release");
115 StringRef
Data =
File.get()->getBuffer();
116 if (
Data.starts_with(
"Fedora release"))
118 if (
Data.starts_with(
"Red Hat Enterprise Linux") ||
119 Data.starts_with(
"CentOS") ||
Data.starts_with(
"AlmaLinux") ||
120 Data.starts_with(
"Rocky Linux") ||
121 Data.starts_with(
"Scientific Linux")) {
122 if (
Data.contains(
"release 10"))
124 if (
Data.contains(
"release 9"))
126 if (
Data.contains(
"release 8"))
128 if (
Data.contains(
"release 7"))
135 File = VFS.getBufferForFile(
"/etc/debian_version");
137 StringRef
Data =
File.get()->getBuffer();
140 if (!
Data.split(
'.').first.getAsInteger(10, MajorVersion)) {
141 switch (MajorVersion) {
162 return llvm::StringSwitch<Distro::DistroType>(
Data.split(
"\n").first)
175 File = VFS.getBufferForFile(
"/etc/SuSE-release");
177 StringRef
Data =
File.get()->getBuffer();
179 Data.split(Lines,
"\n");
180 for (
const StringRef &
Line : Lines) {
181 if (!
Line.trim().starts_with(
"VERSION"))
183 std::pair<StringRef, StringRef> SplitLine =
Line.split(
'=');
186 std::pair<StringRef, StringRef> SplitVer =
187 SplitLine.second.trim().split(
'.');
192 if (!SplitVer.first.getAsInteger(10, Version) && Version > 10)
200 if (VFS.exists(
"/etc/gentoo-release"))
207 const llvm::Triple &TargetOrHost) {
210 if (!TargetOrHost.isOSLinux())
214 const bool onRealFS = (llvm::vfs::getRealFileSystem() == &VFS);
220 llvm::Triple HostTriple(llvm::sys::getProcessTriple());
221 if (!HostTriple.isOSLinux() && onRealFS)