Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
d9487768 by Raymond Toy at 2018-12-10T15:55:54Z
More markup fixes
- - - - -
1 changed file:
- BUILDING.md
Changes:
=====================================
BUILDING.md
=====================================
@@ -48,17 +48,20 @@ Setting up a build environment
------------------------------
1. Create a base directory and change to it
-
+```
mkdir cmucl ; cd cmucl
-
+```
2. Fetch the sources and put them into the base directory
```
tar xzf /tmp/cmucl-source.tar.gz
```
+
or, if you want to use the git sources directly:
+
```
git clone https://gitlab.common-lisp.net/cmucl/cmucl.git
```
+
Whatever you do, the sources must be in a directory named src
inside the base directory. Since the build tools keep all
generated files in separate target directories, the src directory
@@ -81,7 +84,9 @@ quick guide.
Use this to build from a version of CMUCL that is very close to the
sources you are trying to build now:
+```
bin/build.sh -C "" -o "<name-of-old-lisp> <options-to-lisp>"
+```
This will build CMUCL 3 times, each time with the result of the
previous build. The last time, the additional libraries like CLX,
@@ -100,7 +105,9 @@ quick guide.
For these, you can use this:
+```
bin/build.sh -C "" -o "<old-lisp>" -B boot1.lisp -B boot2.lisp
+```
The bootstrap files listed with the -B option (as many as needed)
are loaded in order, so be sure to get them right.
@@ -121,9 +128,9 @@ file date of a boot file is later than the version of CMUCL you are
building from, then you need to use b) or c) above. You may need to
read the bootfiles for additional instructions, if any.
-If there are no bootfiles, then you can use a) above.
+If there are no bootfiles, then you can use 1. above.
-The build.sh script supports other options, and bin/build.sh -?
+The `build.sh` script supports other options, and `bin/build.sh -?`
will give a quick summary. Read bin/build.sh for more
information.
@@ -373,10 +380,12 @@ Overview of the included build scripts
The remaining arguments used to create the name of the tarfiles. The
names will have the form:
+
```
cmucl-<version>-<arch>-<os>.tar.bz2
cmucl-<version>-<arch>-<os>.extras.tar.bz2
```
+
Of course, the "bz2" will be "gz" if you specified gzip compression
instead of bzip.
@@ -695,4 +704,4 @@ In particular steps 3, 4, and 5 can be combined into one by using the
-c, -r, and -l options for cross-build-world.sh. The -c option cleans
out the targe and cross directories; -r does step 4; and -l does step
5.
-===============
+
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/commit/d94877687e6deab2f08d066f5…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/commit/d94877687e6deab2f08d066f5…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
15655145 by Raymond Toy at 2018-12-10T15:02:13Z
Fix some incorrect markdown markup
- - - - -
1 changed file:
- BUILDING.md
Changes:
=====================================
BUILDING.md
=====================================
@@ -12,13 +12,13 @@ General Requirements
In order to build CMU CL, you will need:
-a. A working CMU CL binary. There is no way around this requirement!
+1. A working CMU CL binary. There is no way around this requirement!
This binary can either be for the platform you want to target, in
that case you can either recompile or cross-compile, or for another
supported platform, in that case you must cross-compile, obviously.
-a. A supported C compiler for the C runtime code.
+1. A supported C compiler for the C runtime code.
Most of the time, this means GNU gcc, though for some ports it
means the vendor-supplied C compiler. The compiler must be
@@ -27,13 +27,13 @@ a. A supported C compiler for the C runtime code.
Note for FreeBSD 10 and above: The build requires gcc (Clang will
not work) and the lib32 compatiblity package.
-a. GNU make
+1. GNU make
This has to be available either as gmake or make in your PATH, or
the MAKE environment variable has to be set to point to the correct
binary.
-a. The CMU CL source code
+1. The CMU CL source code
Here you can either use one of the release source tarballs, or
check out the source code directly from the public CMUCL git
@@ -51,14 +51,14 @@ Setting up a build environment
mkdir cmucl ; cd cmucl
-2.) Fetch the sources and put them into the base directory
-
+2. Fetch the sources and put them into the base directory
+```
tar xzf /tmp/cmucl-source.tar.gz
-
+```
or, if you want to use the git sources directly:
-
+```
git clone https://gitlab.common-lisp.net/cmucl/cmucl.git
-
+```
Whatever you do, the sources must be in a directory named src
inside the base directory. Since the build tools keep all
generated files in separate target directories, the src directory
@@ -247,195 +247,195 @@ Overview of the included build scripts
* bin/build.sh [-123obvuBCU?]
-This is the main build script. It essentially calls the other build
-scripts described below in the proper sequence to build cmucl from an
-existing binary of cmucl.
+ This is the main build script. It essentially calls the other build
+ scripts described below in the proper sequence to build cmucl from an
+ existing binary of cmucl.
* bin/create-target.sh target-directory [lisp-variant [motif-variant]]
-This script creates a new target directory, which is a shadow of the
-source directory, that will contain all the files that are created by
-the build process. Thus, each target's files are completely separate
-from the src directory, which could, in fact, be read-only. Hence you
-can simultaneously build CMUCL for different targets from the same
-source directory.
-
-The first argument is the name of the target directory to create. The
-remaining arguments are optional. If they are not given, the script
-tries to determine the lisp variant and motif variant from the system
-the script is running on.
-
-The lisp-variant (i.e. the suffix of the src/lisp/Config.* to use as
-the target's Config file), and optionally the motif-variant (again the
-suffix of the src/motif/server/Config.* file to use as the Config file
-for the target's CMUCL/Motif server code). If the lisp-variant is
-given but the motif-variant is not, the motif-variant is determined
-from the lisp-variant.
-
-The script will generate the target directory tree, link the relevant
-Config files, and generate place-holder files for various files, in
-order to ensure proper operation of the other build-scripts. It also
-creates a sample setenv.lisp file in the target directory, which is
-used by the build and load processes to set up the correct list of
-*features* for your target lisp core.
-
-IMPORTANT: You will normally NOT have to modify the sample setenv.lisp
-file, if you are building from a binary that has the desired features.
-In fact, the sample has all code commented out, If you want to add or
-remove features, you need to include code that puts at least a minimal
-set of features onto the list (use PUSHNEW and/or REMOVE). You can
-use the current set of *features* of your lisp as a first guide. The
-sample setenv.lisp includes a set of features that should work for the
-intended configuration. Note also that some adding or removing some
-features may require a cross-compile instead of a normal compile.
+ This script creates a new target directory, which is a shadow of the
+ source directory, that will contain all the files that are created by
+ the build process. Thus, each target's files are completely separate
+ from the src directory, which could, in fact, be read-only. Hence you
+ can simultaneously build CMUCL for different targets from the same
+ source directory.
+
+ The first argument is the name of the target directory to create. The
+ remaining arguments are optional. If they are not given, the script
+ tries to determine the lisp variant and motif variant from the system
+ the script is running on.
+
+ The lisp-variant (i.e. the suffix of the src/lisp/Config.* to use as
+ the target's Config file), and optionally the motif-variant (again the
+ suffix of the src/motif/server/Config.* file to use as the Config file
+ for the target's CMUCL/Motif server code). If the lisp-variant is
+ given but the motif-variant is not, the motif-variant is determined
+ from the lisp-variant.
+
+ The script will generate the target directory tree, link the relevant
+ Config files, and generate place-holder files for various files, in
+ order to ensure proper operation of the other build-scripts. It also
+ creates a sample setenv.lisp file in the target directory, which is
+ used by the build and load processes to set up the correct list of
+ *features* for your target lisp core.
+
+ IMPORTANT: You will normally NOT have to modify the sample setenv.lisp
+ file, if you are building from a binary that has the desired features.
+ In fact, the sample has all code commented out, If you want to add or
+ remove features, you need to include code that puts at least a minimal
+ set of features onto the list (use PUSHNEW and/or REMOVE). You can
+ use the current set of *features* of your lisp as a first guide. The
+ sample setenv.lisp includes a set of features that should work for the
+ intended configuration. Note also that some adding or removing some
+ features may require a cross-compile instead of a normal compile.
* bin/clean-target.sh [-l] target-directory [more dirs]
-Cleans the given target directory, so that all created files will be
-removed. This is useful to force recompilation. If the -l flag is
-given, then the C runtime is also removed, including all the lisp
-executable, any lisp cores, all object files, lisp.nm, internals.h,
-and the config file.
+ Cleans the given target directory, so that all created files will be
+ removed. This is useful to force recompilation. If the -l flag is
+ given, then the C runtime is also removed, including all the lisp
+ executable, any lisp cores, all object files, lisp.nm, internals.h,
+ and the config file.
* bin/build-world.sh target-directory [build-binary] [build-flags...]
-Starts a complete world build for the given target, using the lisp
-binary/core specified as a build host. The recompilation step will
-only recompile changed files, or files for which the fasl files are
-missing. It will also not recompile the C runtime code (the lisp
-binary). If a (re)compilation of that code is needed, the genesis
-step of the world build will inform you of that fact. In that case,
-you'll have to use the rebuild-lisp.sh script, and then restart the
-world build process with build-world.sh
+ Starts a complete world build for the given target, using the lisp
+ binary/core specified as a build host. The recompilation step will
+ only recompile changed files, or files for which the fasl files are
+ missing. It will also not recompile the C runtime code (the lisp
+ binary). If a (re)compilation of that code is needed, the genesis
+ step of the world build will inform you of that fact. In that case,
+ you'll have to use the rebuild-lisp.sh script, and then restart the
+ world build process with build-world.sh
* bin/rebuild-lisp.sh target-directory
-This script will force a complete recompilation of the C runtime code
-of CMU CL (aka the lisp executable). Doing this will necessitate
-building a new kernel.core file, using build-world.sh.
+ This script will force a complete recompilation of the C runtime code
+ of CMU CL (aka the lisp executable). Doing this will necessitate
+ building a new kernel.core file, using build-world.sh.
* bin/load-world.sh target-directory version
-This will finish the CMU CL rebuilding process, by loading the
-remaining compiled files generated in the world build process into the
-kernel.core file, that also resulted from that process, creating the
-final lisp.core file.
+ This will finish the CMU CL rebuilding process, by loading the
+ remaining compiled files generated in the world build process into the
+ kernel.core file, that also resulted from that process, creating the
+ final lisp.core file.
-You have to pass the version string as a second argument. The dumped
-core will anounce itself using that string. Please don't use a string
-consisting of an official release name only, (e.g. "18d"), since those
-are reserved for official release builds. Including the build-date in
-ISO8601 format is often a good idea, e.g. "18d+ 2002-05-06" for a
-binary that is based on sources current on the 6th May, 2002, which is
-post the 18d release.
+ You have to pass the version string as a second argument. The dumped
+ core will anounce itself using that string. Please don't use a string
+ consisting of an official release name only, (e.g. "18d"), since those
+ are reserved for official release builds. Including the build-date in
+ ISO8601 format is often a good idea, e.g. "18d+ 2002-05-06" for a
+ binary that is based on sources current on the 6th May, 2002, which is
+ post the 18d release.
* bin/build-utils.sh target-directory
-This script will build auxiliary libraries packaged with CMU CL,
-including CLX, CMUCL/Motif, the Motif debugger, inspector, and control
-panel, and the Hemlock editor. It will use the lisp executable and
-core of the given target.
+ This script will build auxiliary libraries packaged with CMU CL,
+ including CLX, CMUCL/Motif, the Motif debugger, inspector, and control
+ panel, and the Hemlock editor. It will use the lisp executable and
+ core of the given target.
-Note: To build with Motif (clm), you need to have the Motif libraries
-available and headers available to build motifd, the clm Motif server.
-OpenMotif is known to work.
+ Note: To build with Motif (clm), you need to have the Motif libraries
+ available and headers available to build motifd, the clm Motif server.
+ OpenMotif is known to work.
-You may need to adjust the include paths and library paths in
-src/motif/server/Config.* to match where Motif is installed if the
-paths therein are incorrect.
+ You may need to adjust the include paths and library paths in
+ src/motif/server/Config.* to match where Motif is installed if the
+ paths therein are incorrect.
-Unless you intend to use clm and motifd, you can safely ignore the
-build failure. Everything else will have been compiled correctly; you
-just can't use clm.
+ Unless you intend to use clm and motifd, you can safely ignore the
+ build failure. Everything else will have been compiled correctly; you
+ just can't use clm.
* bin/make-dist.sh [-bg] [-G group] [-O owner] target-directory version arch os
-This script creates both main and extra distribution tarballs from the
-given target directory, using the make-main-dist.sh and
-make-extra-dist.sh scripts. The result will be two tar files. One
-contains the main distribution including the runtime and lisp.core
-with PCL (CLOS); the second contains the extra libraries such as
-Gray-streams, simple-streams, CLX, CLM, and Hemlock.
-
-Some options that are available:
-
- -b Use bzip2 compression
- -g Use gzip compression
- -G group Group to use
- -O owner Owner to use
-
-If you specify both -b and -g, you will get two sets of tarfiles. The
--G and -O options will attempt to set the owner and group of the files
-when building the tarfiles. This way, when you extract the tarfiles,
-the owner and group will be set as specified. You may need to be root
-to do this because many Unix systems don't normally let you change the
-owner and group of a file.
-
-The remaining arguments used to create the name of the tarfiles. The
-names will have the form:
-
+ This script creates both main and extra distribution tarballs from the
+ given target directory, using the make-main-dist.sh and
+ make-extra-dist.sh scripts. The result will be two tar files. One
+ contains the main distribution including the runtime and lisp.core
+ with PCL (CLOS); the second contains the extra libraries such as
+ Gray-streams, simple-streams, CLX, CLM, and Hemlock.
+
+ Some options that are available:
+
+ -b Use bzip2 compression
+ -g Use gzip compression
+ -G group Group to use
+ -O owner Owner to use
+
+ If you specify both -b and -g, you will get two sets of tarfiles. The
+ -G and -O options will attempt to set the owner and group of the files
+ when building the tarfiles. This way, when you extract the tarfiles,
+ the owner and group will be set as specified. You may need to be root
+ to do this because many Unix systems don't normally let you change the
+ owner and group of a file.
+
+ The remaining arguments used to create the name of the tarfiles. The
+ names will have the form:
+```
cmucl-<version>-<arch>-<os>.tar.bz2
cmucl-<version>-<arch>-<os>.extras.tar.bz2
-
-Of course, the "bz2" will be "gz" if you specified gzip compression
-instead of bzip.
+```
+ Of course, the "bz2" will be "gz" if you specified gzip compression
+ instead of bzip.
* /bin/make-main-dist.sh target-directory version arch os
-This is script is not normally invoked by the user; make-dist will do
-it appropriately.
+ This is script is not normally invoked by the user; make-dist will do
+ it appropriately.
-This script creates a main distribution tarball (both in gzipped and
-bzipped variants) from the given target directory. This will include
-all the stuff that is normally included in official release tarballs
-such as lisp.core and the PCL libraries, including Gray streams and
-simple streams.
+ This script creates a main distribution tarball (both in gzipped and
+ bzipped variants) from the given target directory. This will include
+ all the stuff that is normally included in official release tarballs
+ such as lisp.core and the PCL libraries, including Gray streams and
+ simple streams.
-This is intended to be run from make-dist.sh.
+ This is intended to be run from make-dist.sh.
* bin/make-extra-dist.sh target-directory version arch os
-This is script is not normally invoked by the user; make-dist will do
-it appropriately.
+ This is script is not normally invoked by the user; make-dist will do
+ it appropriately.
-This script creates an extra distribution tarball (both in gzipped and
-bzipped variants) from the given target directory. This will include
-all the stuff that is normally included in official extra release
-tarballs, i.e. the auxiliary libraries such as CLX, CLM, and Hemlock.
+ This script creates an extra distribution tarball (both in gzipped and
+ bzipped variants) from the given target directory. This will include
+ all the stuff that is normally included in official extra release
+ tarballs, i.e. the auxiliary libraries such as CLX, CLM, and Hemlock.
-This is intended to be run from make-dist.sh.
+ This is intended to be run from make-dist.sh.
* cross-build-world.sh target-directory cross-directory cross-script
[build-binary] [build-flags...]
-This is a script that can be used instead of build-world.sh for
-cross-compiling CMUCL. In addition to the arguments of build-world.sh
-it takes two further required arguments: The name of a directory that
-will contain the cross-compiler backend (the directory is created if
-it doesn't exist, and must not be the same as the target-directory),
-and the name of a Lisp cross-compilation script, which is responsible
-for setting up, compiling, and loading the cross-compiler backend.
-The latter argument is needed because each host/target combination of
-platform's needs slightly different code to produce a working
-cross-compiler.
-
-We include a number of working examples of cross-compiler scripts in
-the cross-scripts directory. You'll have to edit the features section
-of the given scripts, to specify the features that should be removed
-from the current set of features in the host lisp, and those that
-should be added, so that the backend features are correct for the
-intended target.
-
-You can look at Eric Marsden's collection of build scripts for the
-basis of more cross-compiler scripts.
+ This is a script that can be used instead of build-world.sh for
+ cross-compiling CMUCL. In addition to the arguments of build-world.sh
+ it takes two further required arguments: The name of a directory that
+ will contain the cross-compiler backend (the directory is created if
+ it doesn't exist, and must not be the same as the target-directory),
+ and the name of a Lisp cross-compilation script, which is responsible
+ for setting up, compiling, and loading the cross-compiler backend.
+ The latter argument is needed because each host/target combination of
+ platform's needs slightly different code to produce a working
+ cross-compiler.
+
+ We include a number of working examples of cross-compiler scripts in
+ the cross-scripts directory. You'll have to edit the features section
+ of the given scripts, to specify the features that should be removed
+ from the current set of features in the host lisp, and those that
+ should be added, so that the backend features are correct for the
+ intended target.
+
+ You can look at Eric Marsden's collection of build scripts for the
+ basis of more cross-compiler scripts.
Step-by-Step Example of recompiling CMUCL for OpenBSD
-----------------------------------------------------
Set up everything as described in the setup section above. Then
execute:
-
+```
# Create a new target directory structure/config for OpenBSD:
bin/create-target.sh openbsd OpenBSD_gencgc OpenBSD
@@ -487,10 +487,12 @@ bin/load-world.sh openbsd "18d+ 2002-05-06"
# core will announce. Please always put the build-date and some
# other information in there, to make it possible to differentiate
# those builds from official builds, which only contain the release.
+```
Now you should have a new lisp.core, which you can start with
-
+```
./openbsd/lisp/lisp -core ./openbsd/lisp/lisp.core -noinit -nositeinit
+```
Compiling sources that contain disruptive changes
-------------------------------------------------
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/commit/156551453481307a0e3405a2e…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/commit/156551453481307a0e3405a2e…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
cb825da9 by Raymond Toy at 2018-12-10T14:53:27Z
Rename BUILDING to BUILDIND.md and convert to markdown
Initial conversion of BUILDING to markdown.
- - - - -
1 changed file:
- BUILDING → BUILDING.md
Changes:
=====================================
BUILDING → BUILDING.md
=====================================
@@ -1,4 +1,3 @@
--*- Mode: text -*-
Building CMU CL
===============
@@ -13,13 +12,13 @@ General Requirements
In order to build CMU CL, you will need:
-a) A working CMU CL binary. There is no way around this requirement!
+a. A working CMU CL binary. There is no way around this requirement!
This binary can either be for the platform you want to target, in
that case you can either recompile or cross-compile, or for another
supported platform, in that case you must cross-compile, obviously.
-b) A supported C compiler for the C runtime code.
+a. A supported C compiler for the C runtime code.
Most of the time, this means GNU gcc, though for some ports it
means the vendor-supplied C compiler. The compiler must be
@@ -28,13 +27,13 @@ b) A supported C compiler for the C runtime code.
Note for FreeBSD 10 and above: The build requires gcc (Clang will
not work) and the lib32 compatiblity package.
-c) GNU make
+a. GNU make
This has to be available either as gmake or make in your PATH, or
the MAKE environment variable has to be set to point to the correct
binary.
-d) The CMU CL source code
+a. The CMU CL source code
Here you can either use one of the release source tarballs, or
check out the source code directly from the public CMUCL git
@@ -48,7 +47,7 @@ though recompilation against 2.x Motif probably works as well.
Setting up a build environment
------------------------------
-1.) Create a base directory and change to it
+1. Create a base directory and change to it
mkdir cmucl ; cd cmucl
@@ -77,7 +76,7 @@ want to do that and in case you know, somehow, that the version of
CMUCL you are building from will build the sources you have, here is a
quick guide.
-a) Simple builds
+1. Simple builds
Use this to build from a version of CMUCL that is very close to the
sources you are trying to build now:
@@ -93,7 +92,7 @@ a) Simple builds
load-world.sh three times. See below for descriptions of these
scripts.
-b) Slightly more complicated builds
+1. Slightly more complicated builds
For slightly more complicated builds, you may need to use some
bootstrap files. See below for more information about these
@@ -109,7 +108,7 @@ b) Slightly more complicated builds
As in a) above, three builds are done, and the result is in the
directory build-4.
-c) More complicated builds
+1. More complicated builds
If you have more complicated builds, this script probably will not
work, and definitely does not handle cross-compiles. In this case,
@@ -136,7 +135,7 @@ and cross-compilation. We'll first look at normal recompilation:
The recompilation process basically consists of 4 phases/parts:
-a) Compiling the lisp files that make up the standard kernel.
+1. Compiling the lisp files that make up the standard kernel.
This happens in your current CMU CL process, using your current
CMU CL's normal file compiler. This phase currently consists of 3
@@ -148,7 +147,7 @@ a) Compiling the lisp files that make up the standard kernel.
or "compiling up a world", based on the name of the first
sub-phase.
-b) Building a new kernel.core file out of the so created files
+1. Building a new kernel.core file out of the so created files
This process, which is generally called genesis, and which is
controlled by src/tools/worldbuild.lisp, uses the newly compiled
@@ -190,7 +189,7 @@ b) Building a new kernel.core file out of the so created files
If it doesn't inform you of this, you can skip directly to the last
phase d).
-c) Recompiling the C runtime code, producing the "lisp" binary file
+1. Recompiling the C runtime code, producing the "lisp" binary file
This step is only needed if you haven't yet got a suitable lisp
binary, or if the internals.h file has changed during genesis (of
@@ -206,7 +205,7 @@ c) Recompiling the C runtime code, producing the "lisp" binary file
the C sources and recompile because of this, you can do that before
Phase b), so that you don't have to perform that phase twice.
-d) Populating the kernel.core, and dumping a new lisp.core file.
+1. Populating the kernel.core, and dumping a new lisp.core file.
In this phase, which is controlled by src/tools/worldload.lisp, and
hence often called world-load, the kernel.core file is started up
@@ -218,11 +217,11 @@ We're not quite done yet. This produces just a basic lisp.core.
To complete the build so that you something similar to what the
releases of CMUCL do, there are a few more steps:
-e) Build the utilities like Gray streams, simple streams, CLX, CLM,
+1. Build the utilities like Gray streams, simple streams, CLX, CLM,
and Hemlock. Use the bin/build-utils.sh script for this, as
described below
-f) Create tarfiles using the bin/make-dist.sh script, as
+1. Create tarfiles using the bin/make-dist.sh script, as
explained below.
With these tarfiles, you can install them anywhere. The contents of
@@ -504,7 +503,7 @@ binaries built from earlier sources can compile the sources containing
that change. There are two forms of boostrapping that can be
required:
-a) Bootfiles
+1. Bootfiles
The maintainers try to make bootfiles available, that allow going
from an old release to the next release. These are located in the
@@ -525,7 +524,7 @@ a) Bootfiles
Alternatively, the bootstrap file can just "load" the individual
bootfiles as needed.
-b) Cross-compiling
+1. Cross-compiling
Under some circumstances, bootstrap code will not be sufficient,
and a cross-compilation is needed. In that case you will have to
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/commit/cb825da9cf7aff8f96b81ca72…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/commit/cb825da9cf7aff8f96b81ca72…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
6167e353 by Raymond Toy at 2018-12-08T16:58:15Z
Update version numbers for 21d.
- - - - -
b664e46d by Raymond Toy at 2018-12-08T16:58:15Z
Merge branch '21d-branch' into 'master'
Update version numbers for 21d.
See merge request cmucl/cmucl!43
- - - - -
4 changed files:
- .gitlab-ci.yml
- + src/bootfiles/21c/boot-21d.lisp
- src/compiler/byte-comp.lisp
- src/general-info/release-21d.md
Changes:
=====================================
.gitlab-ci.yml
=====================================
@@ -1,6 +1,7 @@
variables:
- download_url: "https://common-lisp.net/project/cmucl/downloads/snapshots/2018/03"
- version: "2018-03-x86"
+ download_url: "https://common-lisp.net/project/cmucl/downloads/snapshots/2018/10"
+ version: "2018-10-x86"
+ bootstrap: "-B boot-21d.lisp"
linux-runner:
image: ubuntu:16.04
@@ -13,7 +14,7 @@ linux-runner:
- mkdir snapshot
- (cd snapshot; tar xjf ../cmucl-$version-linux.tar.bz2; tar xjf ../cmucl-$version-linux.extra.tar.bz2)
script:
- - bin/build.sh -C "" -o snapshot/bin/lisp
+ - bin/build.sh $bootstrap -C "" -o snapshot/bin/lisp
- bin/make-dist.sh -I dist linux-4
- bin/run-tests.sh -l dist/bin/lisp 2>&1 | tee test.log
@@ -25,6 +26,6 @@ osx-runner:
- mkdir snapshot
- (cd snapshot; tar xjf ../cmucl-$version-darwin.tar.bz2)
script:
- - bin/build.sh -C "" -o snapshot/bin/lisp
+ - bin/build.sh $bootstrap -C "" -o snapshot/bin/lisp
- bin/make-dist.sh -I dist darwin-4
- bin/run-tests.sh -l dist/bin/lisp 2>&1 | tee test.log
=====================================
src/bootfiles/21c/boot-21d.lisp
=====================================
@@ -0,0 +1,68 @@
+;;;;
+;;;; Boot file for changing the fasl file version numbers to 21d.
+;;;;
+
+(in-package :c)
+
+(setf lisp::*enable-package-locked-errors* nil)
+
+;;;
+;;; Note that BYTE-FASL-FILE-VERSION is a constant.
+;;;
+;;; (Be sure to change BYTE-FASL-FILE-VERSION in
+;;; compiler/byte-comp.lisp to the correct value too!)
+;;;
+#-cmu21d
+(setf (symbol-value 'byte-fasl-file-version) #x21d)
+#-cmu21d
+(setf (backend-fasl-file-version *target-backend*) #x21d)
+
+;;;
+;;; Don't check fasl versions in the compiling Lisp because we'll
+;;; load files compiled with the new version numbers.
+;;;
+#-cmu21d
+(setq lisp::*skip-fasl-file-version-check* t)
+
+;;;
+;;; This is here because BYTE-FASL-FILE-VERSION is constant-folded in
+;;; OPEN-FASL-FILE. To make the new version number take effect, we
+;;; have to redefine the function.
+;;;
+#-cmu21d
+(defun open-fasl-file (name where &optional byte-p)
+ (declare (type pathname name))
+ (let* ((stream (open name :direction :output
+ :if-exists :new-version
+ :element-type '(unsigned-byte 8)
+ :class 'binary-text-stream))
+ (res (make-fasl-file :stream stream)))
+ (multiple-value-bind
+ (version f-vers f-imp)
+ (if byte-p
+ (values "Byte code"
+ byte-fasl-file-version
+ (backend-byte-fasl-file-implementation *backend*))
+ (values (backend-version *backend*)
+ (backend-fasl-file-version *backend*)
+ (backend-fasl-file-implementation *backend*)))
+ (format stream
+ "FASL FILE output from ~A.~@
+ Compiled ~A on ~A~@
+ Compiler ~A, Lisp ~A~@
+ Targeted for ~A, FASL version ~X~%"
+ where
+ (ext:format-universal-time nil (get-universal-time))
+ (machine-instance) compiler-version
+ (lisp-implementation-version)
+ version f-vers)
+ ;;
+ ;; Terminate header.
+ (dump-byte 255 res)
+ ;;
+ ;; Specify code format.
+ (dump-fop 'lisp::fop-long-code-format res)
+ (dump-byte f-imp res)
+ (dump-unsigned-32 f-vers res))
+ res))
+
=====================================
src/compiler/byte-comp.lisp
=====================================
@@ -38,7 +38,7 @@
;; 0-9 followed by a single hex digit in the range a-f. Then the
;; version looks like a decimal number followed by a minor release
;; letter of a to f.
-(defconstant byte-fasl-file-version #x21c)
+(defconstant byte-fasl-file-version #x21d)
(let* ((version-string (format nil "~X" byte-fasl-file-version)))
;; Add :cmu<n> to *features*
=====================================
src/general-info/release-21d.md
=====================================
@@ -1,4 +1,3 @@
-** Work in Progress **
# CMUCL 21d
The CMUCL project is pleased to announce the release of CMUCL 21c.
@@ -31,6 +30,8 @@ public domain.
* ANSI compliance fixes:
* Bug fixes:
* Gitlab tickets:
+ * ~~#48~~ Update RNG from MT19937 to xoroshiro128+
+ * ~~#45~~ Handling of relative paths in `EXT:RUN-PROGRAM`
* ~~#50~~ CLX (Hemlock) fails to run.
* ~~#49~~ CLM crashes
* ~~#47~~ Backquate and multiple splices
@@ -40,6 +41,7 @@ public domain.
* ~~#61~~ Segfault when compiling call to `ARRAY-HAS-FILL-POINTER-P` on bit vector constant
* ~~#62~~ Segfault when compiling `ARRAY-DISPLACEMENT` on a string constant
* ~~#69~~ GC assertions compiled in and allow user to enable them.
+ * ~~#71~~ More info for `MACHINE-TYPE` and `MACHINE-VERSION` for x86
* Other changes:
* Improvements to the PCL implementation of CLOS:
* Changes to building procedure:
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/compare/3843a50c6aea367e8a16ff21…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/compare/3843a50c6aea367e8a16ff21…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
0824e61e by Raymond Toy at 2018-12-06T22:42:16Z
Fix #71: More info from machine-type/version on x86
- - - - -
3843a50c by Raymond Toy at 2018-12-06T22:42:16Z
Merge branch 'rtoy-issue-71' into 'master'
Fix #71: More info from machine-type/version on x86
Closes #71
See merge request cmucl/cmucl!42
- - - - -
2 changed files:
- src/code/x86-vm.lisp
- src/general-info/release-21d.md
Changes:
=====================================
src/code/x86-vm.lisp
=====================================
@@ -60,14 +60,56 @@
#-cross-compiler
(defun machine-type ()
_N"Returns a string describing the type of the local machine."
- "X86")
+ ;; Use cpuid to get the processor type.
+ (with-output-to-string (s)
+ (multiple-value-bind (max-input ebx ecx edx)
+ (x86::cpuid 0)
+ (declare (ignore max-input))
+ (flet ((int-to-string (int)
+ (dotimes (k 4)
+ (let ((code (ldb (byte 8 (* 8 k)) int)))
+ ;; Don't print out null chars. We're
+ ;; assuming this only happens at the end
+ ;; of the brand string.
+ (unless (zerop code)
+ (write-char (code-char code) s))))))
+ (int-to-string ebx)
+ (int-to-string edx)
+ (int-to-string ecx)))))
#-cross-compiler
(defun machine-version ()
_N"Returns a string describing the version of the local machine."
- "X86")
-
+ ;; UWe use the processor brand string method to get more detailed
+ ;; information about the processor. If it's not available, just
+ ;; give up, even though we could use the brand index (CPUID with
+ ;; EAX=1) to get an identifier.
+ (let ((max-cpuid (x86::cpuid #x80000000)))
+ (cond ((or (not (logbitp 31 max-cpuid))
+ (< max-cpuid #x80000004))
+ ;; Processor brand string not supported, just give up.
+ "X86")
+ (t
+ (with-output-to-string (s)
+ (labels ((int-to-string (int)
+ (dotimes (k 4)
+ (let ((code (ldb (byte 8 (* 8 k)) int)))
+ ;; Don't print out null chars. We're
+ ;; assuming this only happens at the end
+ ;; of the brand string.
+ (unless (zerop code)
+ (write-char (code-char code) s)))))
+ (cpuid-to-string (input)
+ (multiple-value-bind (eax ebx ecx edx)
+ (x86::cpuid input)
+ (int-to-string eax)
+ (int-to-string ebx)
+ (int-to-string ecx)
+ (int-to-string edx))))
+ (cpuid-to-string #x80000002)
+ (cpuid-to-string #x80000003)
+ (cpuid-to-string #x80000004)))))))
;;; Fixup-Code-Object -- Interface
=====================================
src/general-info/release-21d.md
=====================================
@@ -27,6 +27,7 @@ public domain.
* The new function `KERNEL:RANDOM-STATE-JUMP` modifies the given state to jump 2^64 samples ahead, allowing 2^64 non-overlapping sequences.
* Updated CLX to telent clx version 06e39a0d.
* New functions `SET-GC-ASSERTIONS` and `GET-GC-ASSERTIONS`. See the docstrings for more information and also ~~#69~~.
+ * `MACHINE-TYPE` and `MACHINE-VERSION` return more information about thep rocessor cmucl is running on, using information from the `cpuid` instruction.
* ANSI compliance fixes:
* Bug fixes:
* Gitlab tickets:
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/compare/b6faace8b52fa8ca8ce5c3ed…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/compare/b6faace8b52fa8ca8ce5c3ed…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch rtoy-issue-71 at cmucl / cmucl
Commits:
7a62a957 by Raymond Toy at 2018-12-06T22:30:36Z
Update notes for machine-type/version
[skip-ci]
- - - - -
1 changed file:
- src/general-info/release-21d.md
Changes:
=====================================
src/general-info/release-21d.md
=====================================
@@ -27,6 +27,7 @@ public domain.
* The new function `KERNEL:RANDOM-STATE-JUMP` modifies the given state to jump 2^64 samples ahead, allowing 2^64 non-overlapping sequences.
* Updated CLX to telent clx version 06e39a0d.
* New functions `SET-GC-ASSERTIONS` and `GET-GC-ASSERTIONS`. See the docstrings for more information and also ~~#69~~.
+ * `MACHINE-TYPE` and `MACHINE-VERSION` return more information about thep rocessor cmucl is running on, using information from the `cpuid` instruction.
* ANSI compliance fixes:
* Bug fixes:
* Gitlab tickets:
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/commit/7a62a9575ce194226252dea09…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/commit/7a62a9575ce194226252dea09…
You're receiving this email because of your account on gitlab.common-lisp.net.