source: rtems-docs/user/rsb/why-build-from-source.rst @ bb47f89

5
Last change on this file since bb47f89 was 2674d6a, checked in by Chris Johns <chrisj@…>, on 02/21/19 at 02:06:58

user: Remove nit-picky warnings.

  • Property mode set to 100644
File size: 3.6 KB
Line 
1.. SPDX-License-Identifier: CC-BY-SA-4.0
2
3.. Copyright (C) 2012, 2016 Chris Johns <chrisj@rtems.org>
4
5.. _WhyBuildFromSource:
6
7Why Build from Source?
8----------------------
9
10The RTEMS Source Builder is not a replacement for the binary install systems
11you have with commercial operating systems or open source operating system
12distributions. Those products and distributions are critically important and
13are the base that allows the RSB to work. The RTEMS Source Builder sits
14somewhere between you manually entering the commands to build a tool set and a
15tool such as ``yum`` or ``apt-get`` to install binary packages made
16specifically for your host operating system. Building manually or installing a
17binary package from a remote repository are valid and real alternatives. The
18RSB provides the specific service of repeatably being able to build tool sets
19from source code. The process leaves you with the source code used to build
20the tools and the ability to rebuild it.
21
22If you are developing a system or product that has a long shelf life or is used
23in a critical piece of infrastructure that has a long life cycle being able to
24build from source is important. It insulates the project from the fast ever
25changing world of the host development machines. If your tool set is binary and
26you have lost the ability to build it you have lost a degree of control and
27flexibility open source gives you. Fast moving host environments are
28fantastic. We have powerful multi-core computers with huge amounts of memory
29and state of the art operating systems your development uses however the
30product or project you are part of may need to be maintained well past the life
31time of these host. Being able to build from source is an important and
32critical part of this process because you can move to a newer host and create
33an equivalent tool set.
34
35Building from source provides you with control over the configuration of the
36package you are building. If all or the most important dependent parts are
37built from source you limit the exposure to host variations. For example the
38GNU Compiler Collection (GCC) currently uses a number of third-party libraries
39internally (GMP, ISL, MPC, MPFR, etc.). If your validated compiler generating
40code for your target
41processor is dynamically linked against the host's version of these libraries
42any change in the host's configuration may effect you. The changes the host's
43package management system makes may be perfectly reasonable in relation to the
44distribution being managed however this may not extend to you and your
45tools. Building your tools from source and controlling the specific version of
46these dependent parts means you are not exposing yourself to unexpected and
47often difficult to resolve problems. On the other side you need to make sure
48your tools build and work with newer versions of the host operating
49system. Given the stability of standards based libraries like ``libc`` and ever
50improving support for standard header file locations this task is becoming
51easier.
52
53The RTEMS Source Builder is designed to be audited and incorporated into a
54project's verification and validation process. If your project is developing
55critical applications that needs to be traced from source to executable code in
56the target, you need to also consider the tools and how to track them.
57
58If your IT department maintains all your computers and you do not have suitable
59rights to install binary packages, building from source lets you create your
60own tool set that you install under your home directory. Avoiding installing
61any extra packages as a super user is always helpful in maintaining a secure
62computing environment.
Note: See TracBrowser for help on using the repository browser.