forked from OpenModelica/OMLibraries
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMSL.3.2.2.mos
More file actions
113 lines (105 loc) · 4.32 KB
/
MSL.3.2.2.mos
File metadata and controls
113 lines (105 loc) · 4.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
tmpScript:="Modelica.3.2.2.tmp.mos";
if 0<>system("patch -d build/ -f -p1 < 'Modelica 3.2.2.manual.patch'") or
0<>system("patch -d build/ -f -p1 < 'ModelicaServices 3.2.2.manual.patch'") then
exit(1);
end if;
for pack in {"Modelica","ModelicaServices"} loop
suffix := if pack=="Complex" then ".mo" else "/package.mo";
if not loadFile("build/"+pack+" 3.2.2"+suffix) then
print("Failed to load "+pack+" 3.2.2\n");
print(getErrorString());
exit(1);
end if;
end for;
getErrorString();
echo(false);tablesFile:=getSourceFile(Modelica.Blocks.Tables);fileStrTables:=readFile(tablesFile);echo(true);
// Patch the damned tableAvailable hack
/*
for str in {
"Modelica.Blocks.Tables.Internal.getTable1DValue",
"Modelica.Blocks.Tables.Internal.getTable1DValueDer",
"Modelica.Blocks.Tables.Internal.getTable1DValueNoDer",
"Modelica.Blocks.Tables.Internal.getTable2DValue",
"Modelica.Blocks.Tables.Internal.getTable2DValueDer",
"Modelica.Blocks.Tables.Internal.getTable2DValueNoDer",
"Modelica.Blocks.Tables.Internal.getTimeTableValue",
"Modelica.Blocks.Tables.Internal.getTimeTableValueDer",
"Modelica.Blocks.Tables.Internal.getTimeTableValueNoDer",
"Modelica.Blocks.Tables.Internal.getTimeTableTmin",
"Modelica.Blocks.Tables.Internal.getTimeTableTmax",
"Modelica.Blocks.Tables.Internal.getNextTimeEvent"
} loop
cmd := "updateComponent(tableAvailable, Real, "+str+", annotate=__OpenModelica_UnusedVariable(true));\n";
writeFile(tmpScript, cmd);
print("Running "+cmd);
res := runScript(tmpScript);
if "true\n"<>res then
print("Failed to run script: " + cmd + "\n");
print("Got result: "+res);
exit(1);
end if;
listing := listFile(Modelica.Blocks.Tables);
fileStrTables := diffModelicaFileListings(fileStrTables, listing, OpenModelica.Scripting.DiffFormat.plain);
err := getErrorString();
if "" <> err then
print(err);
exit(1);
end if;
print(str+" success\n");
end for;
*/
getErrorString();
writeFile(tablesFile, fileStrTables);getErrorString();
echo(false);mathFile:=getSourceFile(Modelica.Math);mathFileStr:=readFile(mathFile);echo(true);
getErrorString();
/*
if not addClassAnnotation(Modelica.Math.tempInterpol1, $annotation(derivative(zeroDerivative=table,zeroDerivative=icol)=tempInterpol1_der)) then
print("tempInterpol1 annotation failed\n");
exit(1);
end if;
mathFileStr := diffModelicaFileListings(mathFileStr, listFile(Modelica.Math), OpenModelica.Scripting.DiffFormat.plain);
err := getErrorString();
if "" <> err then
print(err);
exit(1);
end if;
if not addClassAnnotation(Modelica.Math.tempInterpol2, $annotation(derivative(zeroDerivative=table,zeroDerivative=icol)=tempInterpol2_der)) then
print("tempInterpol1 annotation failed\n");
exit(1);
end if;
mathFileStr := diffModelicaFileListings(mathFileStr, listFile(Modelica.Math), OpenModelica.Scripting.DiffFormat.plain);
err := getErrorString();
if "" <> err then
print(err);
exit(1);
end if;
writeFile("new.Math.mo", mathFileStr);getErrorString();
*/
echo(false);
servicesFile:=getSourceFile(ModelicaServices);
servicesFileStr:=readFile(servicesFile);
setClassComment(ModelicaServices, "ModelicaServices (OpenModelica implementation) - Models and functions used in the Modelica Standard Library requiring a tool specific implementation");
servicesFileStr := diffModelicaFileListings(servicesFileStr, listFile(ModelicaServices), OpenModelica.Scripting.DiffFormat.plain);
setComponentModifierValue(ModelicaServices, target, $Code(="OpenModelica"));
servicesFileStr := diffModelicaFileListings(servicesFileStr, listFile(ModelicaServices), OpenModelica.Scripting.DiffFormat.plain);
setComponentModifierValue(ModelicaServices.Machine, Integer_inf, $Code(=OpenModelica.Internal.Architecture.integerMax()));
servicesFileStr := diffModelicaFileListings(servicesFileStr, listFile(ModelicaServices), OpenModelica.Scripting.DiffFormat.plain);
err := getErrorString();
if err<>"" then
print(err);
exit(1);
end if;
echo(true);
writeFile(servicesFile, servicesFileStr);
if 0<>system("jq '.repos[] | select(.dest == \"MSL\") | .multitarget[] | select(.options.gitbranch == \"maint/3.2.2\") | .rev' repos.json > " + tmpScript) then
exit(1);
end if;
if 0<>system("cd git/MSL && git checkout " + readFile(tmpScript)) then
exit(1);
end if;
if
0<>system("make 'Modelica 3.2.2.patch'") or
0<>system("make 'ModelicaServices 3.2.2.patch'")
then
exit(1);
end if;