1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-23 07:12:12 -07:00

Mainline changes to make a standard nt build environment based on nt6.1

(Windows7) and its SDK.  The w3i3m9 pseudo platform has been removed and
w3i3mv adjusted for this framework.

Copied from Perforce
 Change: 175966
 ServerID: perforce.ravenbrook.com
This commit is contained in:
Peter Jackson 2011-08-29 13:09:37 +01:00
parent b153ddbb83
commit 36dd1ada0f
5 changed files with 188 additions and 153 deletions

View file

@ -128,7 +128,9 @@ CFLAGSCOMMONPRE = /nologo /W4 /WX $(PFMDEFS) $(CFLAGSTARGETPRE)
CFLAGSCOMMONPOST = $(CFLAGSTARGETPOST)
# Flags for use in the variety combinations
CFLAGSHOT = /Ox /DNDEBUG
CFLAGSHOT = /O2 /DNDEBUG
# (above /O2 (maximise speed) used to be set to /Ox
# (maximise optimisations) in for tool versions before VS 9)
# We used to have /GZ here (stack probe).
# Note that GZ is specific to version 12 of the cl tool. drj 2003-11-04
# It is ignored on earlier versions of the cl tool.
@ -158,7 +160,8 @@ CFTI = /DCONFIG_VAR_TI $(CRTFLAGSC) $(CFLAGSCOOL) $(CFLAGSINTERNAL)
# %%VARIETY: define a macro containing the flags for the new variety
LINKER = link
LINKFLAGSCOMMON = /nologo
LINKFLAGSINTERNAL = /DEBUG:full
LINKFLAGSINTERNAL =
# ( Internal flags used to be set to /DEBUG:full )
LINKFLAGSEXTERNAL = /RELEASE
LFWE = $(LINKFLAGSWHITE) $(LINKFLAGSEXTERNAL)
@ -202,18 +205,18 @@ LIBFLAGSTI =
# Copyright (C) 2001-2002 Ravenbrook Limited <http://www.ravenbrook.com/>.
# All rights reserved. This is an open source license. Contact
# Ravenbrook for commercial licensing options.
#
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
#
# 3. Redistributions in any form must be accompanied by information on how
# to obtain complete source code for this software and any accompanying
# software that uses this software. The source code must either be
@ -224,7 +227,7 @@ LIBFLAGSTI =
# include source code for modules or files that typically accompany the
# major components of the operating system on which the executable file
# runs.
#
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR

View file

@ -26,27 +26,27 @@
*
* Sometimes the platform is *already* known by the buildsystem:
* - the Global Graphics buildsystem always sets CONFIG_PF_*.
* - the Ravenbrook buildsystem knows the platform and may (but
* - the Ravenbrook buildsystem knows the platform and may (but
* typically does not) set CONFIG_PF_*.
*
* Regardless of this, mpstd.h still attempts to detect the platform.
* (This is intentional). However if both CONFIG_PF_* and
* (This is intentional). However if both CONFIG_PF_* and
* CONFIG_PF_STRING are set, then mpstd.h performs a third function:
* 3. checking that the detected platform corresponds to that
* 3. checking that the detected platform corresponds to that
* specified by CONFIG_PF_*.
*
* Sometimes no MPS buildsystem is in use, so the platform *must*
* be detected. For example, when client software #includes mps.h,
* we want it to just work out of the box with whatever compiler is
* being used. In other words we do not require the client to define
* Sometimes no MPS buildsystem is in use, so the platform *must*
* be detected. For example, when client software #includes mps.h,
* we want it to just work out of the box with whatever compiler is
* being used. In other words we do not require the client to define
* CONFIG_PF_*.
* (This is the case that justifes mpstd.h doing platform detection
* by looking at preprocessor symbols; otherwise we'd simply use
* (This is the case that justifes mpstd.h doing platform detection
* by looking at preprocessor symbols; otherwise we'd simply use
* CONFIG_PF_*).
*
* mpstd.h fails if it cannot detect the platform (even if CONFIG_PF_*
* is specified). This is intentional. mpstd.h does *not* allow
* CONFIG_PF_* to override the platform as detected from preprocessor
* is specified). This is intentional. mpstd.h does *not* allow
* CONFIG_PF_* to override the platform as detected from preprocessor
* symbols. This is intentional.
*
* References:
@ -127,23 +127,6 @@
#define MPS_WORD_SHIFT 5
#define MPS_PF_ALIGN 4
/* w3i3m9 clone-platform, differs from w3i3mv only in MPS_PF_STRING
* and compiler options.
*/
#elif defined(_MSC_VER) && (_MSC_VER >= 1500) && defined(_WIN32) && defined(_M_IX86)
#if defined(CONFIG_PF_STRING) && ! defined(CONFIG_PF_W3I3M9)
#error "specified CONFIG_PF_... inconsistent with detected w3i3m9"
#endif
#define MPS_PF_W3I3MV
#define MPS_PF_STRING "w3i3m9"
#define MPS_OS_W3
#define MPS_ARCH_I3
#define MPS_BUILD_MV
#define MPS_T_WORD unsigned long
#define MPS_WORD_WIDTH 32
#define MPS_WORD_SHIFT 5
#define MPS_PF_ALIGN 8
/* Visual C++ 2.0, Books Online, C/C++ Book, Preprocessor Reference,
* Chapter 1: The Preprocessor, Macros, Predefined Macros.

View file

@ -45,7 +45,7 @@
<ul>
<li> <a href= "#int">Introduction</a> </li>
<li> <a href= "#reldoc">Related documents</a> </li>
<li> <a href="#plasup">Platform support</a> </li>
<li> <a href="#uni">Unix</a> </li>
@ -81,7 +81,35 @@ easy to modify such that it builds on many more.
</p>
<p>
This document is not confidential.
<p>
</p>
<h2 id = "reldoc">Related documents</h2>
<dl>
<dt><a href = ../../readme.txt>readme.txt</a></dt>
<dd>
This contains notes on building the MPS from a "kit".
</dd>
<dt>
<a HREF = ../wiki/buildsystem.html>MPS build system</a>
</dt>
<dd>
Brief notes on the keywords used in the build system commands.
</dd>
<dt>
<a href = ../../procedure/index.html>MPS product procedures</a>
</dt>
<dd>
Links to separate procedures for making builds for a release.
</dd>
</dl>
<h2 id = "plasup">Platform support</h2>
@ -256,16 +284,20 @@ This platform is a clone of w3i3mv; the only differences are:
<li>use w3i3m9.nmk (not w3i3mv.nmk) to build it;</li>
<li>the MPS_PF_STRING in version.c is "w3i3m9" (not "w3i3mv").</li>
</ul>
The only reason for this to be separate from the w3i3mv platform is
The only reason for this to be separate from the w3i3mv platform was
to enable builds with version 6.0 and version 9.0 compilers to be
kept separate, to enable performance comparisons. The w3i3m9
clone may merge back into w3i3mv in the future.<br />
kept separate, to enable performance comparisons.
<br />
See
&lt;<a href = http://ravenbrook.com/project/mps/issue/job001944/
title = "Link to ravenbrook.com/project/mps/issue/job001944/"
>ravenbrook.com/project/mps/issue/job001944/</A>&gt;
</p>
<p>
2011-08<br />
The w3i3m9 platform has been withdrawn from the mainline and w3i3mv
is once again the master NT platform.
</p>
<p>
The Windows linker can accept a .def file to allow re-export of MPS
functions from a client executable that includes the MPS, such that
@ -302,6 +334,9 @@ See
<dt>2011-08-18 PNJ</dt>
<dd>Converted to HTML so the hyperlinks work, ready for further
enhancements.</dd>
<dt>2011-08-28 PNJ</dt>
<dd>w3i3m9 platform withdrawn. Mainline now focussed on NT6.1 and its
SDK as its Windows build platform.</dd>
<h2><a id="section-C" name="section-C">C. Copyright and License</a></h2>

View file

@ -52,6 +52,12 @@ This document is not confidential.
record of changes. In a release of the MPS-Kit, this section becomes
the summary of what is new for that release.)
2011-08
Master change to standardise on an NT build environment of
NT6.1 (Windows 7) and it its SDK version 7.1. Previous versions
of Windows that are still supported by Microsoft can be accomodated
through this framework if required.
[
After a release, bracket the previous section, and start a new section like this:
@ -70,14 +76,14 @@ Changes from release 1.109.0:
Functional changes to MPS code:
<http://www.ravenbrook.com/project/mps/issue/job002248/>
Improvement: return virtual memory (address space) from
mps_arena_class_vm to the operating system, when complete chunks are
unused after a garbage collection. Whether, and how much, virtual
memory is returned depends on many factors. Small chunks may be more
likely to be returnable than big chunks. The mps_arena_vm_growth()
function controls the size of chunks by which VM arena may grow. The
default, if this function is never called, is for new chunks to be the
same size as the original arena created by mps_arena_create(), if
Improvement: return virtual memory (address space) from
mps_arena_class_vm to the operating system, when complete chunks are
unused after a garbage collection. Whether, and how much, virtual
memory is returned depends on many factors. Small chunks may be more
likely to be returnable than big chunks. The mps_arena_vm_growth()
function controls the size of chunks by which VM arena may grow. The
default, if this function is never called, is for new chunks to be the
same size as the original arena created by mps_arena_create(), if
possible.
@ -89,22 +95,22 @@ Functional changes to MPS code:
<http://www.ravenbrook.com/project/mps/issue/job001570/>
<http://www.ravenbrook.com/project/mps/issue/job001989/>
Defects discovered in mps_message_type_gc_start lifecycle:
- enabling mps_message_type_gc_start and then failing to promptly
mps_message_get the resulting messages could corrupt the MPS
- enabling mps_message_type_gc_start and then failing to promptly
mps_message_get the resulting messages could corrupt the MPS
message queue;
- a corrupted message queue could cause an assert, incorrect
behaviour, or an infinite loop, when getting or discarding
- a corrupted message queue could cause an assert, incorrect
behaviour, or an infinite loop, when getting or discarding
messages, or when calling mps_arena_destroy;
- also, the _gc_start message could change while the client read it,
- also, the _gc_start message could change while the client read it,
and the message for a new GC start could be silently skipped.
Fixed: redesign _gc_start message lifecycle:
- if mps_message_type_gc_start is enabled, a separate GC start
message is issued for each collection, as long as there is
- if mps_message_type_gc_start is enabled, a separate GC start
message is issued for each collection, as long as there is
sufficient memory to create the message;
- these messages will be queued indefinitely until the client gets
- these messages will be queued indefinitely until the client gets
and discards them;
- therefore: a client that enables mps_message_type_gc_start must
call mps_message_get() and mps_message_discard() to get and
- therefore: a client that enables mps_message_type_gc_start must
call mps_message_get() and mps_message_discard() to get and
discard these messages;
- warning: failure to do so will eventually exhaust memory.
@ -112,28 +118,28 @@ Fixed: redesign _gc_start message lifecycle:
<http://www.ravenbrook.com/project/mps/issue/job001969/>
New features to inform client of activity and timing of collections:
mps_message_clock():
- for a _gc_start or _gc message, returns the time at which the
- for a _gc_start or _gc message, returns the time at which the
MPS posted it; see Reference Manual for documentation;
mps_alert_collection_set():
- set a client-supplied function which the MPS will synchronously
- set a client-supplied function which the MPS will synchronously
call when a collection begins or ends;
- there are restrictions on what the client-supplied function is
permitted to do; please ask Ravenbrook if you require further
- there are restrictions on what the client-supplied function is
permitted to do; please ask Ravenbrook if you require further
details.
<http://www.ravenbrook.com/project/mps/issue/job001811/>
Improvement: reduce the risk of ambiguous retention, when the client
Improvement: reduce the risk of ambiguous retention, when the client
allocates large objects in mps_class_amc and mps_class_amcz.
<http://www.ravenbrook.com/project/mps/issue/job002205/>
Defect discovered:
- collections run too slow if client allocates big objects.
Fix:
- improved collection scheduling, when client allocates large
- improved collection scheduling, when client allocates large
objects.
<http://www.ravenbrook.com/project/mps/issue/job002209/>
New features for client to determine pool or format, given object
New features for client to determine pool or format, given object
address:
mps_addr_pool()
mps_addr_fmt()
@ -143,14 +149,14 @@ Other changes:
<http://www.ravenbrook.com/project/mps/issue/job001934/>
<http://www.ravenbrook.com/project/mps/issue/job001944/>
MPS may now be built with Microsoft's Visual C++ 9.0 compiler.
MPS may now be built with Microsoft's Visual C++ 9.0 compiler.
See manual/build-notes.
<http://www.ravenbrook.com/project/mps/issue/job001936/>
<http://www.ravenbrook.com/project/mps/issue/job001935/>
<http://www.ravenbrook.com/project/mps/issue/job002148/>
Configura releases include a .def file to allow re-export of MPS
functions from a client executable that includes the MPS, such that
Configura releases include a .def file to allow re-export of MPS
functions from a client executable that includes the MPS, such that
other client DLLs can link to and call those MPS functions.
See also manual/build-notes.
]
@ -162,60 +168,60 @@ Functional changes to MPS code:
<http://www.ravenbrook.com/project/mps/issue/job001784/>
Defect discovered:
- when using an auto_header format (mps_fmt_create_auto_header)
with AMC pools (mps_class_amc), the MPS leaks a small amount of
- when using an auto_header format (mps_fmt_create_auto_header)
with AMC pools (mps_class_amc), the MPS leaks a small amount of
memory on each collection.
Impact:
- the leak is likely to be a few bytes per collection, and at most
one byte per page (typically 2^12 bytes) of the address-space
- the leak is likely to be a few bytes per collection, and at most
one byte per page (typically 2^12 bytes) of the address-space
currently in use for objects in AMC pools;
- the leak is of temporary memory that the MPS uses to process
ambiguous references (typically references on the stack and in
registers), so a larger stack when a collection starts will
- the leak is of temporary memory that the MPS uses to process
ambiguous references (typically references on the stack and in
registers), so a larger stack when a collection starts will
tend to cause a larger leak;
- the leaked bytes are widely-spaced single bytes which therefore
- the leaked bytes are widely-spaced single bytes which therefore
also cause fragmentation;
- the leaked bytes are not reclaimed until the client calls
- the leaked bytes are not reclaimed until the client calls
mps_arena_destroy().
Fixed: correctly release all of this temporary memory.
<http://www.ravenbrook.com/project/mps/issue/job001809/>
Defect discovered:
- AMC pools (mps_class_amc) temporarily retain the memory that was
used for a dead object, if there is an ambiguous reference (such
as a value on the stack) that happens to point at the interior of
used for a dead object, if there is an ambiguous reference (such
as a value on the stack) that happens to point at the interior of
the (dead) object.
Impact:
- if the (dead) object was small- or medium-sized, this temporary
- if the (dead) object was small- or medium-sized, this temporary
retention is unlikely to cause a problem;
- if the (dead) object was very large, then this retention is more
likely, and will retain a large amount of memory;
- if many large objects are allocated, this retention can cause
- if many large objects are allocated, this retention can cause
memory to be exhausted when it should not be.
Fix:
- it is usually possible for AMC pools to free the memory
immediately (that is, during the collection that identifies the
- it is usually possible for AMC pools to free the memory
immediately (that is, during the collection that identifies the
object as being dead), and AMC pools now do so;
Future work:
- occasionally, there are adjacently located objects that are
- occasionally, there are adjacently located objects that are
ambiguously referenced and are not dead;
- in this case it is not possible to free the memory immediately,
and so temporary retention still occurs (this is not expected to
- in this case it is not possible to free the memory immediately,
and so temporary retention still occurs (this is not expected to
be very common).
- however, the MPS could prevent this by avoiding locating small
- however, the MPS could prevent this by avoiding locating small
objects adjacent to very large objects, see:
<http://www.ravenbrook.com/project/mps/issue/job001811/>
<http://www.ravenbrook.com/project/mps/issue/job001737/>
Further changes to arena growth (see notes below for version 1.108.1).
When the arena cannot grow by the desired increment, the MPS
attempts successively smaller increments, but with a more fine-grained
search than in version 1.108.1, thereby achieveing an increment that
more closely matches the largest available chunk of remaining
When the arena cannot grow by the desired increment, the MPS
attempts successively smaller increments, but with a more fine-grained
search than in version 1.108.1, thereby achieveing an increment that
more closely matches the largest available chunk of remaining
address-space.
New interface function mps_arena_vm_growth(). This function allows
the client more control over how a VM arena (mps_arena_class_vm)
grows. The interface is under development and is likely to change;
the client more control over how a VM arena (mps_arena_class_vm)
grows. The interface is under development and is likely to change;
please contact us if you would like further details.
]
@ -226,22 +232,22 @@ Functional changes to MPS code:
<http://www.ravenbrook.com/project/mps/issue/job001737/>
Limitation:
- if a VM arena (of mps_arena_class_vm) needed to be extended,
and the attempt to extend it was refused by the OS (usually
because the requested address-space was not available), MPS
- if a VM arena (of mps_arena_class_vm) needed to be extended,
and the attempt to extend it was refused by the OS (usually
because the requested address-space was not available), MPS
would not try a smaller extension.
Fixed: MPS now tries to extend the arena by successively smaller
Fixed: MPS now tries to extend the arena by successively smaller
amounts, until the extension succeeds.
<http://www.ravenbrook.com/project/mps/issue/job001706/>
Defect discovered:
- internal memory-protection state in AMC pools (mps_class_amc)
was incorrect for a brief period of time during a collection,
- internal memory-protection state in AMC pools (mps_class_amc)
was incorrect for a brief period of time during a collection,
which could (theoretically) have caused an assert and failure.
However:
- during this brief period, the MPS protection cache masks the
defect. As a result, we believe this defect is unlikely to be
observed in practice (and we have no evidence that it has
- during this brief period, the MPS protection cache masks the
defect. As a result, we believe this defect is unlikely to be
observed in practice (and we have no evidence that it has
ever occurred in practice).
Fixed: maintain memory-protection state correctly in AMC pools.
@ -250,14 +256,14 @@ Other changes:
<http://www.ravenbrook.com/project/mps/issue/job001714/>
- in the Mac OS X (PowerPC) build, remove outdated compiler flags.
The MPS diagnostic system -- which produces diagnostic output for the
purpose of helping MPS programmers and client-code programmers -- is
The MPS diagnostic system -- which produces diagnostic output for the
purpose of helping MPS programmers and client-code programmers -- is
undergoing improvement. Some early documentation is at
<http://www.ravenbrook.com/project/mps/master/design/diag>
There is a new build variety "di" that emits diagnostics.
Note: for further details of this release (including a 'live' report
of defects found after these release-notes were written), and details
Note: for further details of this release (including a 'live' report
of defects found after these release-notes were written), and details
of earlier and later releases, please see:
<http://www.ravenbrook.com/project/mps/release/>
]
@ -269,40 +275,40 @@ Functional changes to MPS code:
<http://www.ravenbrook.com/project/mps/issue/job001548/>
Defect discovered:
- an assert could, rarely, be incorrectly triggered when a pool
- an assert could, rarely, be incorrectly triggered when a pool
of mps_class_amc is in a constrained memory condition.
Fixed: in this rare case, calculate a certain value correctly,
such that the assert which checks it is not incorrectly
Fixed: in this rare case, calculate a certain value correctly,
such that the assert which checks it is not incorrectly
triggered.
<http://www.ravenbrook.com/project/mps/issue/job001658/>
Defect discovered:
- finalization messages could suffer an unnecessary delay, of
several full collections (in the worst case), if there were
- finalization messages could suffer an unnecessary delay, of
several full collections (in the worst case), if there were
more than 1024 finalization-registered objects;
Fixed: the number of finalization-registered objects should
no longer cause such a delay, so more finalization messages
Fixed: the number of finalization-registered objects should
no longer cause such a delay, so more finalization messages
are likely to be produced by a single collection.
<http://www.ravenbrook.com/project/mps/issue/job001147/>
- on Mac OS X (PowerPC and Intel), MPS now has memory-protection
- on Mac OS X (PowerPC and Intel), MPS now has memory-protection
code, so collections are much faster.
<http://www.ravenbrook.com/project/mps/issue/job001619/>
- on Mac OS X (Intel), MPS now has stack-scanner code, so the
stack may be declared an ambiguous root. (Note: there was
- on Mac OS X (Intel), MPS now has stack-scanner code, so the
stack may be declared an ambiguous root. (Note: there was
already a stack-scanner for Mac OS X PowerPC).
<http://www.ravenbrook.com/project/mps/issue/job001622/>
- on Mac OS X (PowerPC and Intel), MPS now has locking code, so
multiple client threads may use the MPS. (But note: the thread
module has not been implemented for Mac OS X, so threads may
- on Mac OS X (PowerPC and Intel), MPS now has locking code, so
multiple client threads may use the MPS. (But note: the thread
module has not been implemented for Mac OS X, so threads may
not yet have their stacks as roots, I think. See:
<http://www.ravenbrook.com/project/mps/issue/job001621/>).
<http://www.ravenbrook.com/project/mps/issue/job001556/>
Defect discovered:
- a macro used only in asserts was incorrect; this could have made
- a macro used only in asserts was incorrect; this could have made
some checks ineffective.
Fixed: corrected the macro.
@ -315,7 +321,7 @@ Other changes:
- now builds on Linux.
<http://www.ravenbrook.com/project/mps/issue/job001617/>
- on Mac OS X (Intel) default "all" build works (fix broken
- on Mac OS X (Intel) default "all" build works (fix broken
compile of amsss stress test).
]
@ -327,15 +333,15 @@ Functional changes to MPS code:
<http://www.ravenbrook.com/project/mps/issue/job001455/>
Defect discovered:
- if there was a pool of pool-class LO (leaf-only objects,
see mps_class_lo), the mps_arena_formatted_objects_walk()
see mps_class_lo), the mps_arena_formatted_objects_walk()
call would fail.
Fixed: mps_arena_formatted_objects_walk() will now work.
<http://www.ravenbrook.com/project/mps/issue/job000666/>
- when MPS starts a garbage collection, it now tells
- when MPS starts a garbage collection, it now tells
the client by posting a message of the new type
mps_message_type_gc_start(). The message includes
a textual explanation (for the client programmer)
mps_message_type_gc_start(). The message includes
a textual explanation (for the client programmer)
of why this collection was triggered.
<http://www.ravenbrook.com/project/mps/issue/job001545/>
@ -346,7 +352,7 @@ Fixed: mps_arena_formatted_objects_walk() will now work.
Other changes:
<http://www.ravenbrook.com/project/mps/issue/job001421/>
- the default "all" build now builds mps library and plinth, on
- the default "all" build now builds mps library and plinth, on
all platforms.
<http://www.ravenbrook.com/project/mps/issue/job001530/>
@ -364,7 +370,7 @@ No functional changes to MPS implementation code.
Fixed <http://www.ravenbrook.com/project/mps/issue/job001352/>
- the "mps.a" library does not (now) contain plinth files;
- therefore, if your MPS client code needs the example plinth
("mpsplan.a"), you must link with it explicitly to obtain
("mpsplan.a"), you must link with it explicitly to obtain
_mps_lib_assert_fail, _mps_clock, etc;
- the default "all" build now succeeds on Unix-like platforms
(in 1.106.1 the "all" build only worked on Mac OS X).
@ -381,7 +387,7 @@ Fixed <http://www.ravenbrook.com/project/mps/issue/job001367/>
example/hello-world/index.txt
]
For more information about the status and progress of the MPS project,
For more information about the status and progress of the MPS project,
consult the project home-page: <http://www.ravenbrook.com/project/mps/>.
@ -403,7 +409,7 @@ The top-level file "index.html" in the sources indexes many other files,
and is a good place to start. You should read the user manuals and the
high level design documents.
A quick start to writing code that uses the MPS is the "hello-world"
A quick start to writing code that uses the MPS is the "hello-world"
example:
example/hello-world/index.txt
@ -606,9 +612,9 @@ B. DOCUMENT HISTORY
C. COPYRIGHT AND LICENSE
Copyright (C) 2001-2002, 2006-2007, 2008, 2010 Ravenbrook Limited.
All rights reserved. <http://www.ravenbrook.com/>.
This is an open source license.
Copyright (C) 2001-2002, 2006-2007, 2008, 2010 Ravenbrook Limited.
All rights reserved. <http://www.ravenbrook.com/>.
This is an open source license.
Contact Ravenbrook for commercial licensing options.
Redistribution and use in source and binary forms, with or without

View file

@ -1,21 +1,24 @@
#!/usr/bin/python
#How to test a release before shipping it to Configura
# How to test a release before shipping it to Configura
#You have a candidate release. This document tells you how to test it before shipping it -- quick tests.
#Readership: all. Confidential: no. Status: rough notes.
#Background: knowing the history of MPS development for Configura is an advantage.
#Peer documents:
# You have a candidate release. This document tells you how to test it
# before shipping it -- quick tests.
# Readership: all. Confidential: no. Status: rough notes.
# Background: knowing the history of MPS development for Configura is
# an advantage.
# Peer documents:
# <http://info.ravenbrook.com/project/mps/master/procedure/release-build/>.
# <http://info.ravenbrook.com/project/mps/master/procedure/release-configura/>.
#What do we test?
#Not much -- this procedure is for a quick test before shipping, principally to make sure that the build isn't crock in some way.
# What do we test?
# Not much -- this procedure is for a quick test before shipping,
# principally to make sure that the build isn't crock in some way.
#How to run the test:
#You need python (eg. 2.3). Cd to where you would type w3build.bat.
#Type ..\tool\test-runner.py
#Each test should report "Conclusion: Failed to find any defects."
#Also check full log placed in file a1.txt.
# How to run the test:
# You need python (eg. 2.3). Cd to where you would type w3build.bat.
# Type ..\tool\test-runner.py
# Each test should report "Conclusion: Failed to find any defects."
# Also check full log placed in file a1.txt.
import os
@ -50,6 +53,7 @@ def mpsplatformcode() :
# under Rosetta, so I'm not confident it's right).
arch = {'Power Macintosh':'pp',
'i386':'i3',
'x86':'i3',
}[platform.machine()]
except :
# Windows specific hack. On Python 2.4 and 2.5 platform.machine
@ -64,7 +68,7 @@ def mpsplatformcode() :
# Here, we simplify and get it right for Windows and Macs.
try :
compiler = {'xc':'gc',
'w3':'m9',
'w3':'mv',
}[os]
except :
pass
@ -76,10 +80,14 @@ def mpsplatformcode() :
mpsplatform = mpsplatformcode()
print "mpsplatform = ", mpsplatform
exit
make = ''
if mpsplatform[4:6] == 'gc' :
make = "make -r -f %s.gmk VARIETY=%%s %%s >> %%s" % mpsplatform
elif mpsplatform[4:6] == 'm9' :
elif mpsplatform[4:6] == 'mv' :
make = "nmake /f %s.nmk VARIETY=%%s %%s.exe >>%%s" % mpsplatform
run = ''
@ -133,18 +141,18 @@ os.system("echo DONE")
* Copyright (C) 2005 Ravenbrook Limited <http://www.ravenbrook.com/>.
* All rights reserved. This is an open source license. Contact
* Ravenbrook for commercial licensing options.
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
*
* 3. Redistributions in any form must be accompanied by information on how
* to obtain complete source code for this software and any accompanying
* software that uses this software. The source code must either be
@ -155,7 +163,7 @@ os.system("echo DONE")
* include source code for modules or files that typically accompany the
* major components of the operating system on which the executable file
* runs.
*
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR