[Build] Init RISCV build
[platform/core/dotnet/build-tools.git] / build / msbuild.tasks.core.patch
1 diff --git a/src/Tasks/CultureInfoCache.cs b/src/Tasks/CultureInfoCache.cs
2 index 617331138..88992cb07 100644
3 --- a/src/Tasks/CultureInfoCache.cs
4 +++ b/src/Tasks/CultureInfoCache.cs
5 @@ -19,47 +19,8 @@ namespace Microsoft.Build.Tasks
6      /// </summary>
7      internal static class CultureInfoCache
8      {
9 -        private static readonly HashSet<string> ValidCultureNames = InitializeValidCultureNames();
10 -
11 -        static HashSet<string> InitializeValidCultureNames()
12 -        {
13 -#if !FEATURE_CULTUREINFO_GETCULTURES
14 -            if (!AssemblyUtilities.CultureInfoHasGetCultures())
15 -            {
16 -                return HardcodedCultureNames;
17 -            }
18 -#endif
19 -            HashSet<string> validCultureNames = new(StringComparer.OrdinalIgnoreCase);
20 -            foreach (CultureInfo cultureName in AssemblyUtilities.GetAllCultures())
21 -            {
22 -                validCultureNames.Add(cultureName.Name);
23 -            }
24 -
25 -            // https://docs.microsoft.com/en-gb/windows/desktop/Intl/using-pseudo-locales-for-localization-testing
26 -            // These pseudo-locales are available in versions of Windows from Vista and later.
27 -            // However, from Windows 10, version 1803, they are not returned when enumerating the
28 -            // installed cultures, even if the registry keys are set. Therefore, add them to the list manually.
29 -            string[] pseudoLocales = new[] { "qps-ploc", "qps-ploca", "qps-plocm", "qps-Latn-x-sh" };
30
31 -            foreach (string pseudoLocale in pseudoLocales)
32 -            {
33 -                validCultureNames.Add(pseudoLocale);
34 -            }
35 -
36 -            return validCultureNames;
37 -        }
38 -
39 -        /// <summary>
40 -        /// Determine if a culture string represents a valid <see cref="CultureInfo"/> instance.
41 -        /// </summary>
42 -        /// <param name="name">The culture name.</param>
43 -        /// <returns>True if the culture is determined to be valid.</returns>
44 -        internal static bool IsValidCultureString(string name)
45 -        {
46 -            return ValidCultureNames.Contains(name);
47 -        }
48 -
49 -#if !FEATURE_CULTUREINFO_GETCULTURES
50 +        #if !FEATURE_CULTUREINFO_GETCULTURES
51          // Copied from https://github.com/aspnet/Localization/blob/5e1fb16071affd15f15b9c732833f3ae2ac46e10/src/Microsoft.Framework.Globalization.CultureInfoCache/CultureInfoList.cs
52          // Regenerated using the tool (removed by https://github.com/aspnet/Localization/pull/130)
53          //   * Removed the empty string from the list
54 @@ -919,5 +880,57 @@ namespace Microsoft.Build.Tasks
55              "zh-CHT"
56          };
57  #endif
58 +
59 +        private static readonly HashSet<string> ValidCultureNames = InitializeValidCultureNames();
60 +
61 +        static HashSet<string> InitializeValidCultureNames()
62 +        {
63 +#if !FEATURE_CULTUREINFO_GETCULTURES
64 +            if (!AssemblyUtilities.CultureInfoHasGetCultures())
65 +            {
66 +                return HardcodedCultureNames;
67 +            }
68 +            else
69 +            {
70 +                var HardcodedCultureNamesWithTizen = new HashSet<string>(HardcodedCultureNames, StringComparer.OrdinalIgnoreCase);
71 +                var tizenLocales = new HashSet<string>(StringComparer.OrdinalIgnoreCase) {
72 +                    "bh-IN", "bhb-IN", "ckb-IQ", "ks-IN", "ku-Arab-IN", "mai-IN", "sat-IN", "sd-IN", "tcy-IN", "tu-IN", "tl-PH"};
73 +                foreach (string tizenLocale in tizenLocales)
74 +                {
75 +                    HardcodedCultureNamesWithTizen.Add(tizenLocale);
76 +                }
77 +                return HardcodedCultureNamesWithTizen;
78 +            }
79 +
80 +#endif
81 +            HashSet<string> validCultureNames = new(StringComparer.OrdinalIgnoreCase);
82 +            foreach (CultureInfo cultureName in AssemblyUtilities.GetAllCultures())
83 +            {
84 +                validCultureNames.Add(cultureName.Name);
85 +            }
86 +
87 +            // https://docs.microsoft.com/en-gb/windows/desktop/Intl/using-pseudo-locales-for-localization-testing
88 +            // These pseudo-locales are available in versions of Windows from Vista and later.
89 +            // However, from Windows 10, version 1803, they are not returned when enumerating the
90 +            // installed cultures, even if the registry keys are set. Therefore, add them to the list manually.
91 +            string[] pseudoLocales = new[] { "qps-ploc", "qps-ploca", "qps-plocm", "qps-Latn-x-sh" };
92 +
93 +            foreach (string pseudoLocale in pseudoLocales)
94 +            {
95 +                validCultureNames.Add(pseudoLocale);
96 +            }
97 +
98 +            return validCultureNames;
99 +        }
100 +
101 +        /// <summary>
102 +        /// Determine if a culture string represents a valid <see cref="CultureInfo"/> instance.
103 +        /// </summary>
104 +        /// <param name="name">The culture name.</param>
105 +        /// <returns>True if the culture is determined to be valid.</returns>
106 +        internal static bool IsValidCultureString(string name)
107 +        {
108 +            return ValidCultureNames.Contains(name);
109 +        }
110      }
111  }