From 047e099a2eedf9b3a795d5fd58eb6a9e2001d48d Mon Sep 17 00:00:00 2001 From: Michal Gorny Date: Mon, 28 Nov 2016 21:11:18 +0000 Subject: [PATCH] [Driver] Fix recognizing newer OpenSUSE versions Fix recognizing newer OpenSUSE versions that combine the two version components into 'VERSION = x.y'. The check was written against an older version that kept those two split as VERSION and PATCHLEVEL. Differential Revision: https://reviews.llvm.org/D26850 llvm-svn: 288061 --- clang/lib/Driver/Distro.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/clang/lib/Driver/Distro.cpp b/clang/lib/Driver/Distro.cpp index 7a12643405de..d305b179449f 100644 --- a/clang/lib/Driver/Distro.cpp +++ b/clang/lib/Driver/Distro.cpp @@ -108,11 +108,14 @@ static Distro::DistroType DetectDistro(vfs::FileSystem &VFS) { if (!Line.trim().startswith("VERSION")) continue; std::pair SplitLine = Line.split('='); + // Old versions have split VERSION and PATCHLEVEL + // Newer versions use VERSION = x.y + std::pair SplitVer = SplitLine.second.trim().split('.'); int Version; + // OpenSUSE/SLES 10 and older are not supported and not compatible // with our rules, so just treat them as Distro::UnknownDistro. - if (!SplitLine.second.trim().getAsInteger(10, Version) && - Version > 10) + if (!SplitVer.first.getAsInteger(10, Version) && Version > 10) return Distro::OpenSUSE; return Distro::UnknownDistro; }