aboutsummaryrefslogtreecommitdiffstats
path: root/README.bootstrap
diff options
context:
space:
mode:
Diffstat (limited to 'README.bootstrap')
-rw-r--r--README.bootstrap63
1 files changed, 63 insertions, 0 deletions
diff --git a/README.bootstrap b/README.bootstrap
new file mode 100644
index 0000000000..b0c8a1cc20
--- /dev/null
+++ b/README.bootstrap
@@ -0,0 +1,63 @@
+Notes about prebuilt beam files under version control
+-----------------------------------------------------
+
+This information applies mostly to developers, some parts only
+to developers of the main branch i.e. Ericsson and HiPE personel.
+
+There are two types of derived code under version control, namely:
+
+primary bootstrap - Resides in the $ERL_TOP/bootstrap/{lib,bin} directories.
+preloaded code - Resides in the $ERL_TOP/erts/preloaded directory.
+
+Primary bootstrap
+.................
+
+The two types of version controlled code are fundamentally
+different. The primary bootstrap is code compiled from source files in
+the lib/{kernel,stdlib,compiler} (and header files from
+lib/orber/include. They are checked in in the version control system
+to make it possible to build directly from the code base tree without
+the need for an earlier version of the compiler. When a new version of
+OTP is released, these files are updated manually (or rather, by using
+the $ERL_TOP/otp_build script) and checked in. The files can also be
+updated due to changes in the compiler during the development
+process. The primary bootstrap is always updated as a separate
+deliberate process, never during a normal development build.
+
+If a prebuilt open source version of erlang is used, the directory
+bootstrap initially does not contain any beam files, the directory is
+instead populated by copying beam files from the
+$ERL_TOP/lib/{kernel,stdlib,compiler}/ebin directories. This
+construction is to save space in the distribution, but the result
+would be the same. Open source developers need not provide patches for
+the precompiled beam files in the primary bootstrap, the bootstrap
+update is always performed by the main developers.
+
+Preloaded code
+..............
+
+The directory $ERL_TOP/preloaded contains both src and ebin
+subdirectories. The preloaded code is compiled into the virtual
+machine and always present. When compiling the virtual machine, those
+beam files need to be present and they are considered a part of the
+virtual machine rather than a part of the kernel application. When
+preloaded files are to be updated, the source code is built using a
+special Makefile in the $ERL_TOP/preloaded/src directory, which
+creates beam files in the same directory. When they seem to compile
+successfully, they can be used in an emulator build by being copied
+to the ebin directory (although, in Clearcase that requires checking
+out the files in the ebin directory first). For developers using the
+main Clearcase branch, otp_build {prepare,update,commit}_preloaded can
+be used to ease the process (there are also similar targets in the
+$ERL_TOP/preloaded/src/Makefile).
+
+In prebuilt open source distributions, these .beam files are also
+present, but to update them one might need to change permission on the
+$ERL_TOP/preloaded/ebin directory, then build and then manually copy
+the beam files from the source directory to ../ebin. If patches are
+created that involve the source files used to build preloaded code,
+always note this specially as the preloaded/ebin directory needs
+updating, or provide the new derived files in the patch or as complete
+binaries.
+
+/Patrik, OTP \ No newline at end of file