diff options
author | Jay Krell <jay.krell@cornell.edu> | 2019-03-25 12:55:15 +0300 |
---|---|---|
committer | Alexander Köplinger <alex.koeplinger@outlook.com> | 2019-03-25 12:55:15 +0300 |
commit | 004314e9ddf5dd93c7d9f2a3b696c5e10194fb71 (patch) | |
tree | f9f0c6e399746957b3ca0186da930dd27ee989f7 /msvc | |
parent | eb1cb188a6a3b4797a34ffb4510d7b36dab9a0ef (diff) |
[windows]Fix and cleanup configure.ac parsing for MONO_CORLIB_VERSION and ACINIT. (#13630)
Not just a guid or an uppercase guid.
Diffstat (limited to 'msvc')
-rw-r--r-- | msvc/mono.winconfig.targets | 61 |
1 files changed, 45 insertions, 16 deletions
diff --git a/msvc/mono.winconfig.targets b/msvc/mono.winconfig.targets index cc0b51a7b11..17f3539d12e 100644 --- a/msvc/mono.winconfig.targets +++ b/msvc/mono.winconfig.targets @@ -22,35 +22,51 @@ public class _WinConfigSetup : Task { - void GetVersionsFromConfigureAC (string configureACFile, out string monoVersion, out string monoCorlibVersion) - { + bool GetVersionsFromConfigureAC (string configureACFile, out string monoVersion, out string monoCorlibVersion) + {
+ bool result = true; monoVersion = null; monoCorlibVersion = null; if (File.Exists (configureACFile)) - { - var monoVersionRegEx = new Regex (@"(.*AC_INIT\(mono, \[)(\d+\.\d+\.\d+)"); - var monoCorlibVersionRegEx = new Regex (@"(MONO_CORLIB_VERSION=)([A-F0-9]{8}(?:-[A-F0-9]{4}){3}-[A-F0-9]{12})"); + {
+ // These are both fairly arbitrary strings.
+ var monoVersionRegEx = new Regex (@"^AC_INIT\s*\(\s*mono,\s*\[?\s*([^\],\s]+)"); + var monoCorlibVersionRegEx = new Regex (@"^MONO_CORLIB_VERSION\s*=\s*(\S+)");
using (StreamReader reader = new StreamReader (configureACFile)) - { + {
string line; while ((line = reader.ReadLine ()) != null && (monoVersion == null || monoCorlibVersion == null)) - { + {
var monoVersionMatch = monoVersionRegEx.Match (line); - if (monoVersionMatch != null && monoVersionMatch.Success && monoVersionMatch.Groups.Count == 3) - { - monoVersion = monoVersionMatch.Groups[2].Value; + if (monoVersionMatch.Success) + {
+ if (monoVersion != null)
+ { + Log.LogError("duplicate MONO_INIT in {0}", configureACFile);
+ result = false;
+ }
+ monoVersion = monoVersionMatch.Groups[1].Value; + Log.LogMessage ("{0}:AC_INIT:MONO_VERSION=\"{1}\"", configureACFile, monoVersion);
continue; } var monoCorlibVersionMatch = monoCorlibVersionRegEx.Match (line); - if (monoCorlibVersionMatch != null && monoCorlibVersionMatch.Success && monoCorlibVersionMatch.Groups.Count == 3) - { - monoCorlibVersion = monoCorlibVersionMatch.Groups[2].Value; + if (monoCorlibVersionMatch.Success) + {
+ if (monoCorlibVersion != null)
+ {
+ // This is misleading. The loop stops when both found, so duplicates usually not noticed.
+ Log.LogError("duplicate MONO_CORLIB_VERSION in {0}", configureACFile);
+ result = false;
+ } + monoCorlibVersion = monoCorlibVersionMatch.Groups[1].Value; + Log.LogMessage ("{0}:MONO_CORLIB_VERSION=\"{1}\"", configureACFile, monoCorlibVersion);
continue; } } } - } + }
+ return result; } string [] GetDisabledConfigFeatures (string path) @@ -258,7 +274,20 @@ string monoVersion = null; string monoCorlibVersion = null; - GetVersionsFromConfigureAC (configureACFile, out monoVersion, out monoCorlibVersion); + if (!GetVersionsFromConfigureAC (configureACFile, out monoVersion, out monoCorlibVersion))
+ return false; + + if (monoVersion == null) + { + Log.LogError("failed to parse version from AC_INIT in {0}", configureACFile); + return false; + } + + if (monoCorlibVersion == null) + { + Log.LogError("failed to parse MONO_CORLIB_VERSION from {0}", configureACFile); + return false; + } var disableDefines = GetDisabledConfigFeatures (cygConfigFile); var enableDefines = (EnableDefines != null) ? EnableDefines.Split (';') : null; @@ -267,7 +296,7 @@ CreateVersionFile (versionFile); - Log.LogMessage (MessageImportance.High, "Successfully setup Mono configuration headers."); + Log.LogMessage (MessageImportance.High, "Successfully setup Mono configuration headers {0} and {1} from {2}.", configFile, versionFile, winConfigFile); return true; } |