Lines Matching defs:Distro
1 //===--- Distro.cpp - Linux distribution detection support ------*- C++ -*-===//
9 #include "clang/Driver/Distro.h"
22 static Distro::DistroType DetectOsRelease(llvm::vfs::FileSystem &VFS) {
28 return Distro::UnknownDistro;
32 Distro::DistroType Version = Distro::UnknownDistro;
36 if (Version == Distro::UnknownDistro && Line.starts_with("ID="))
37 Version = llvm::StringSwitch<Distro::DistroType>(Line.substr(3))
38 .Case("alpine", Distro::AlpineLinux)
39 .Case("fedora", Distro::Fedora)
40 .Case("gentoo", Distro::Gentoo)
41 .Case("arch", Distro::ArchLinux)
43 .Case("sles", Distro::OpenSUSE)
44 .Case("opensuse", Distro::OpenSUSE)
45 .Case("exherbo", Distro::Exherbo)
46 .Default(Distro::UnknownDistro);
50 static Distro::DistroType DetectLsbRelease(llvm::vfs::FileSystem &VFS) {
54 return Distro::UnknownDistro;
58 Distro::DistroType Version = Distro::UnknownDistro;
61 if (Version == Distro::UnknownDistro &&
63 Version = llvm::StringSwitch<Distro::DistroType>(Line.substr(17))
64 .Case("hardy", Distro::UbuntuHardy)
65 .Case("intrepid", Distro::UbuntuIntrepid)
66 .Case("jaunty", Distro::UbuntuJaunty)
67 .Case("karmic", Distro::UbuntuKarmic)
68 .Case("lucid", Distro::UbuntuLucid)
69 .Case("maverick", Distro::UbuntuMaverick)
70 .Case("natty", Distro::UbuntuNatty)
71 .Case("oneiric", Distro::UbuntuOneiric)
72 .Case("precise", Distro::UbuntuPrecise)
73 .Case("quantal", Distro::UbuntuQuantal)
74 .Case("raring", Distro::UbuntuRaring)
75 .Case("saucy", Distro::UbuntuSaucy)
76 .Case("trusty", Distro::UbuntuTrusty)
77 .Case("utopic", Distro::UbuntuUtopic)
78 .Case("vivid", Distro::UbuntuVivid)
79 .Case("wily", Distro::UbuntuWily)
80 .Case("xenial", Distro::UbuntuXenial)
81 .Case("yakkety", Distro::UbuntuYakkety)
82 .Case("zesty", Distro::UbuntuZesty)
83 .Case("artful", Distro::UbuntuArtful)
84 .Case("bionic", Distro::UbuntuBionic)
85 .Case("cosmic", Distro::UbuntuCosmic)
86 .Case("disco", Distro::UbuntuDisco)
87 .Case("eoan", Distro::UbuntuEoan)
88 .Case("focal", Distro::UbuntuFocal)
89 .Case("groovy", Distro::UbuntuGroovy)
90 .Case("hirsute", Distro::UbuntuHirsute)
91 .Case("impish", Distro::UbuntuImpish)
92 .Case("jammy", Distro::UbuntuJammy)
93 .Case("kinetic", Distro::UbuntuKinetic)
94 .Case("lunar", Distro::UbuntuLunar)
95 .Case("mantic", Distro::UbuntuMantic)
96 .Case("noble", Distro::UbuntuNoble)
97 .Case("oracular", Distro::UbuntuOracular)
98 .Case("plucky", Distro::UbuntuPlucky)
99 .Default(Distro::UnknownDistro);
103 static Distro::DistroType DetectDistro(llvm::vfs::FileSystem &VFS) {
104 Distro::DistroType Version = Distro::UnknownDistro;
109 if (Version != Distro::UnknownDistro)
114 if (Version != Distro::UnknownDistro)
124 return Distro::Fedora;
128 return Distro::RHEL7;
130 return Distro::RHEL6;
132 return Distro::RHEL5;
134 return Distro::UnknownDistro;
146 return Distro::DebianLenny;
148 return Distro::DebianSqueeze;
150 return Distro::DebianWheezy;
152 return Distro::DebianJessie;
154 return Distro::DebianStretch;
156 return Distro::DebianBuster;
158 return Distro::DebianBullseye;
160 return Distro::DebianBookworm;
162 return Distro::DebianTrixie;
164 return Distro::UnknownDistro;
167 return llvm::StringSwitch<Distro::DistroType>(Data.split("\n").first)
168 .Case("squeeze/sid", Distro::DebianSqueeze)
169 .Case("wheezy/sid", Distro::DebianWheezy)
170 .Case("jessie/sid", Distro::DebianJessie)
171 .Case("stretch/sid", Distro::DebianStretch)
172 .Case("buster/sid", Distro::DebianBuster)
173 .Case("bullseye/sid", Distro::DebianBullseye)
174 .Case("bookworm/sid", Distro::DebianBookworm)
175 .Case("trixie/sid", Distro::DebianTrixie)
176 .Default(Distro::UnknownDistro);
196 // with our rules, so just treat them as Distro::UnknownDistro.
198 return Distro::OpenSUSE;
199 return Distro::UnknownDistro;
201 return Distro::UnknownDistro;
206 return Distro::Gentoo;
208 return Distro::UnknownDistro;
211 static Distro::DistroType GetDistro(llvm::vfs::FileSystem &VFS,
216 return Distro::UnknownDistro;
227 return Distro::UnknownDistro;
232 static Distro::DistroType LinuxDistro = DetectDistro(VFS);
240 Distro::Distro(llvm::vfs::FileSystem &VFS, const llvm::Triple &TargetOrHost)