Skip to content

Commit b2c8049

Browse files
authored
Merge branch 'main' into docs/insecure-randomness
2 parents 9a8ad7d + 8a8031d commit b2c8049

File tree

4 files changed

+43
-30
lines changed

4 files changed

+43
-30
lines changed

csharp/ql/integration-tests/all-platforms/dotnet_pack/test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
from create_database_utils import *
33
from diagnostics_test_utils import *
44

5-
run_codeql_database_create(['dotnet pack'], db=None, lang="csharp")
5+
run_codeql_database_create(['dotnet pack -o nugetpackage'], db=None, lang="csharp")
66

77
## Check that the NuGet package is created.
8-
if not os.path.isfile("bin/Debug/dotnet_pack.1.0.0.nupkg"):
8+
if not os.path.isfile("nugetpackage/dotnet_pack.1.0.0.nupkg"):
99
raise Exception("The NuGet package was not created.")
1010

1111
check_diagnostics()

csharp/ql/integration-tests/posix-only/dotnet_test_mstest/dotnet_test_mstest.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
<IsPackable>false</IsPackable>
99
<OutputType>Exe</OutputType>
10+
<SelfContained>false</SelfContained>
1011
</PropertyGroup>
1112

1213
<ItemGroup>

java/kotlin-extractor/build.py

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ def write_arg_file(arg_file, args):
8787
raise Exception('Single quote in argument: ' + arg)
8888
f.write("'" + arg.replace('\\', '/') + "'\n")
8989

90-
def compile_to_dir(build_dir, srcs, language_version, classpath, java_classpath, output):
90+
def compile_to_dir(build_dir, srcs, version, classpath, java_classpath, output):
9191
# Use kotlinc to compile .kt files:
9292
kotlin_arg_file = build_dir + '/kotlin.args'
9393
kotlin_args = ['-Werror',
@@ -96,7 +96,7 @@ def compile_to_dir(build_dir, srcs, language_version, classpath, java_classpath,
9696
'-d', output,
9797
'-module-name', 'codeql-kotlin-extractor',
9898
'-Xsuppress-version-warnings',
99-
'-language-version', language_version,
99+
'-language-version', version.toLanguageVersionString(),
100100
'-no-reflect', '-no-stdlib',
101101
'-jvm-target', '1.8',
102102
'-classpath', classpath] + srcs
@@ -116,14 +116,14 @@ def compile_to_dir(build_dir, srcs, language_version, classpath, java_classpath,
116116
run_process([javac, '@' + java_arg_file])
117117

118118

119-
def compile_to_jar(build_dir, tmp_src_dir, srcs, language_version, classpath, java_classpath, output):
119+
def compile_to_jar(build_dir, tmp_src_dir, srcs, version, classpath, java_classpath, output):
120120
class_dir = build_dir + '/classes'
121121

122122
if os.path.exists(class_dir):
123123
shutil.rmtree(class_dir)
124124
os.makedirs(class_dir)
125125

126-
compile_to_dir(build_dir, srcs, language_version, classpath, java_classpath, class_dir)
126+
compile_to_dir(build_dir, srcs, version, classpath, java_classpath, class_dir)
127127

128128
run_process(['jar', 'cf', output,
129129
'-C', class_dir, '.',
@@ -161,7 +161,7 @@ def transform_to_embeddable(srcs):
161161
f.write(content)
162162

163163

164-
def compile(jars, java_jars, dependency_folder, transform_to_embeddable, output, build_dir, current_version):
164+
def compile(jars, java_jars, dependency_folder, transform_to_embeddable, output, build_dir, version_str):
165165
classpath = bases_to_classpath(dependency_folder, jars)
166166
java_classpath = bases_to_classpath(dependency_folder, java_jars)
167167

@@ -179,31 +179,24 @@ def compile(jars, java_jars, dependency_folder, transform_to_embeddable, output,
179179
with open(resource_dir + '/extractor.name', 'w') as f:
180180
f.write(output)
181181

182-
parsed_current_version = kotlin_plugin_versions.version_string_to_tuple(
183-
current_version)
182+
version = kotlin_plugin_versions.version_string_to_version(version_str)
184183

185-
for version in kotlin_plugin_versions.many_versions:
186-
parsed_version = kotlin_plugin_versions.version_string_to_tuple(
187-
version)
188-
if parsed_version[0] < parsed_current_version[0] or \
189-
(parsed_version[0] == parsed_current_version[0] and parsed_version[1] < parsed_current_version[1]) or \
190-
(parsed_version[0] == parsed_current_version[0] and parsed_version[1] == parsed_current_version[1] and parsed_version[2] <= parsed_current_version[2]):
184+
for a_version in kotlin_plugin_versions.many_versions_versions_asc:
185+
if a_version.lessThanOrEqual(version):
191186
d = tmp_src_dir + '/main/kotlin/utils/versions/v_' + \
192-
version.replace('.', '_')
187+
a_version.toString().replace('.', '_')
193188
if os.path.exists(d):
194189
# copy and overwrite files from the version folder to the include folder
195190
shutil.copytree(d, include_version_folder, dirs_exist_ok=True)
196191

197-
language_version = str(parsed_current_version[0]) + '.' + str(parsed_current_version[1])
198-
199192
# remove all version folders:
200193
shutil.rmtree(tmp_src_dir + '/main/kotlin/utils/versions')
201194

202195
srcs = find_sources(tmp_src_dir)
203196

204197
transform_to_embeddable(srcs)
205198

206-
compile_to_jar(build_dir, tmp_src_dir, srcs, language_version, classpath, java_classpath, output)
199+
compile_to_jar(build_dir, tmp_src_dir, srcs, version, classpath, java_classpath, output)
207200

208201
shutil.rmtree(tmp_src_dir)
209202

java/kotlin-extractor/kotlin_plugin_versions.py

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,40 @@ def is_windows():
1414
return True
1515
return False
1616

17-
def version_tuple_to_string(version):
18-
return f'{version[0]}.{version[1]}.{version[2]}{version[3]}'
17+
class Version:
18+
def __init__(self, major, minor, patch, tag):
19+
self.major = major
20+
self.minor = minor
21+
self.patch = patch
22+
self.tag = tag
1923

20-
def version_string_to_tuple(version):
24+
def toTupleWithTag(self):
25+
return [self.major, self.minor, self.patch, self.tag]
26+
27+
def toTupleNoTag(self):
28+
return [self.major, self.minor, self.patch]
29+
30+
def lessThanOrEqual(self, other):
31+
return self.toTupleNoTag() <= other.toTupleNoTag()
32+
33+
def toString(self):
34+
return f'{self.major}.{self.minor}.{self.patch}{self.tag}'
35+
36+
def toLanguageVersionString(self):
37+
return f'{self.major}.{self.minor}'
38+
39+
def version_string_to_version(version):
2140
m = re.match(r'([0-9]+)\.([0-9]+)\.([0-9]+)(.*)', version)
22-
return tuple([int(m.group(i)) for i in range(1, 4)] + [m.group(4)])
41+
return Version(int(m.group(1)), int(m.group(2)), int(m.group(3)), m.group(4))
2342

2443
# Version number used by CI.
2544
ci_version = '1.9.0'
2645

2746
many_versions = [ '1.5.0', '1.5.10', '1.5.20', '1.5.30', '1.6.0', '1.6.20', '1.7.0', '1.7.20', '1.8.0', '1.9.0-Beta', '1.9.20-Beta' ]
2847

29-
many_versions_tuples = [version_string_to_tuple(v) for v in many_versions]
48+
many_versions_versions = [version_string_to_version(v) for v in many_versions]
49+
many_versions_versions_asc = sorted(many_versions_versions, key = lambda v: v.toTupleWithTag())
50+
many_versions_versions_desc = reversed(many_versions_versions_asc)
3051

3152
class KotlincNotFoundException(Exception):
3253
pass
@@ -40,13 +61,11 @@ def get_single_version(fakeVersionOutput = None):
4061
m = re.match(r'.* kotlinc-jvm ([0-9]+\.[0-9]+\.[0-9]+-?[a-zA-Z]*) .*', versionOutput)
4162
if m is None:
4263
raise Exception('Cannot detect version of kotlinc (got ' + str(versionOutput) + ')')
43-
current_version = version_string_to_tuple(m.group(1))
44-
45-
many_versions_tuples.sort(reverse = True)
64+
current_version = version_string_to_version(m.group(1))
4665

47-
for version in many_versions_tuples:
48-
if version[0:3] <= current_version[0:3]:
49-
return version_tuple_to_string(version)
66+
for version in many_versions_versions_desc:
67+
if version.lessThanOrEqual(current_version):
68+
return version.toString()
5069

5170
raise Exception(f'No suitable kotlinc version found for {current_version} (got {versionOutput}; know about {str(many_versions)})')
5271

0 commit comments

Comments
 (0)