-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathupgrading.html
More file actions
109 lines (101 loc) · 3.73 KB
/
upgrading.html
File metadata and controls
109 lines (101 loc) · 3.73 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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Upgrading CM3</title>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<META HTTP-EQUIV="Resource-type" CONTENT="document">
<META HTTP-EQUIV="Reply-to" CONTENT="m3-support@elego.de">
<LINK HREF="normal.css" REL="stylesheet" TYPE="text/css">
<META NAME="robots" content="noindex">
</head>
<body bgcolor="#ffffff">
<h2>Upgrading CM3</h2>
<p>
Upgrading CM3 means building a complete new release of CM3 with
an already installed system. Usually, this should be very easy,
as you only have to use one or two of the existing build
scripts, for example,
</p>
<blockquote>
<tt>./scripts/do-cm3-core.sh buildship</tt><br>
<tt>./scripts/do-cm3-std.sh buildship</tt>
</blockquote>
<p>
However, there is one situation when it's not as easy as this:
when a new target platform has been added to the compiler, or
the order or names of existing target platforms in certain files
have changed. If you just use the scripts named above, you will
run into problems in libm3, such as
</p>
<pre>
new source -> compiling ProcessPosix.m3
new source -> compiling SocketPosix.m3
Fatal Error: bad version stamps: SocketPosix.m3
version stamp mismatch: Compiler.Platform
<00df7acd080d2be7> => SocketPosix.m3
<b388e13e20d650e9> => Compiler.i3
version stamp mismatch: Compiler.ThisPlatform
<4d31a453f94cbb46> => SocketPosix.m3
<fe663fa0d197c048> => Compiler.i3
*** execution of failed ***</pre>
<p>
This is because you can only compile some platform specific code
in m3core and libm3 with a compiler that includes exactly the
same list of target platforms in Target.i3, InfoModule.m3, and
Compiler.i3; otherwise version stamps will get messed up. So you
have to make all the changes, build and ship the compiler
packages m3middle, m3front, m3quake, cm3, install the compiler,
and then build the libraries m3core and libm3 and the compiler
packages again (do-cm3-core.sh).
</p>
<p>
The above is no longer true. The large enum listing all targets
no longer exists. However the compiler and m3core are tightly
coupled and there can still be incompatible changes in them.
Therefore:
</p>
<p>
As of Sat Jul 19, 2003, there is a script that performs a safe
update for you by compiling and shipping the right packages in
the correct order:
</p>
<blockquote>
<tt>./scripts/upgrade.sh</tt>
</blockquote>
<p>
You can call it with the -n (no action) option to see what it
would do.
</p>
<p>
It is recommended to instead
<blockquote>
<tt>scripts/python/upgrade.py</tt>
</blockquote>
to upgrade just the compiler, m3core, libm3
Or
<blockquote>
<tt>scripts/python/upgrade-full.sh</tt>
</blockquote>
or
<blockquote>
<tt>scripts/python/upgrade-full.cmd</tt>
</blockquote>
to upgrade the compiler and then rebuild the entire system with that.
<br>
There are other ways, that need more development.
Specifically, ideally, the system is not updated in place while
it is building.
<blockquote>
<tt>scripts/python/make-dist.py</tt>
</blockquote>
does this well (TODO) and a new script should be derived from it.
It copies a minimal system away (cm3, m3core, libm3),
uses that to build a minimal system, and then uses that to build
the entire system.
</p>
<hr>
<address><a href="mailto:m3-support{at}elego.de">m3-support{at}elego.de</a></address>
<!-- Created: Fri Feb 16 15:27:10 MET 2001 -->
</body>
</html>