112 llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>>
File =
113 VFS.getBufferForFile(
"/etc/redhat-release");
116 StringRef
Data =
File.get()->getBuffer();
117 if (
Data.starts_with(
"Fedora release"))
119 if (
Data.starts_with(
"Red Hat Enterprise Linux") ||
120 Data.starts_with(
"CentOS") ||
Data.starts_with(
"AlmaLinux") ||
121 Data.starts_with(
"Rocky Linux") ||
122 Data.starts_with(
"Scientific Linux")) {
123 if (
Data.contains(
"release 10"))
125 if (
Data.contains(
"release 9"))
127 if (
Data.contains(
"release 8"))
129 if (
Data.contains(
"release 7"))
136 File = VFS.getBufferForFile(
"/etc/debian_version");
138 StringRef
Data =
File.get()->getBuffer();
141 if (!
Data.split(
'.').first.getAsInteger(10, MajorVersion)) {
142 switch (MajorVersion) {
163 return llvm::StringSwitch<Distro::DistroType>(
Data.split(
"\n").first)
176 File = VFS.getBufferForFile(
"/etc/SuSE-release");
178 StringRef
Data =
File.get()->getBuffer();
180 Data.split(Lines,
"\n");
181 for (
const StringRef &
Line : Lines) {
182 if (!
Line.trim().starts_with(
"VERSION"))
184 std::pair<StringRef, StringRef> SplitLine =
Line.split(
'=');
187 std::pair<StringRef, StringRef> SplitVer =
188 SplitLine.second.trim().split(
'.');
193 if (!SplitVer.first.getAsInteger(10, Version) && Version > 10)
201 if (VFS.exists(
"/etc/gentoo-release"))
208 const llvm::Triple &TargetOrHost) {
211 if (!TargetOrHost.isOSLinux())
215 const bool onRealFS = (llvm::vfs::getRealFileSystem() == &VFS);
221 llvm::Triple HostTriple(llvm::sys::getProcessTriple());
222 if (!HostTriple.isOSLinux() && onRealFS)