source: rtems-docs/user/ecosys/index.rst @ e52906b

5
Last change on this file since e52906b was e52906b, checked in by Sebastian Huber <sebastian.huber@…>, on 01/09/19 at 15:14:06

Simplify SPDX-License-Identifier comment

  • Property mode set to 100644
File size: 10.5 KB
Line 
1.. SPDX-License-Identifier: CC-BY-SA-4.0
2
3.. Copyright (C) 2016 Chris Johns <chrisj@rtems.org>
4
5.. _ecosystem:
6
7Ecosystem
8*********
9.. index:: Ecosystem
10
11The RTEMS Ecosystem is the collection of tools, packages, code, documentation
12and online content provided by the RTEMS Project. The ecosystem provides a way
13to develop, maintain, and use RTEMS. It's parts interact with the user, the
14host environment, and each other to make RTEMS accessible, useable and
15predicable.
16
17The ecosystem is for users, developers and maintainers and it is an ongoing
18effort that needs your help and support. The RTEMS project is always improving
19the way it delivers the kernel to you and your feedback is important so please
20join the mailing lists and contribute back comments, success stories, bugs and
21patches.
22
23What the RTEMS project describes here to develop, maintain and use RTEMS does
24not dictate what you need to use in your project. You can and should select the
25work-flow that best suites the demands of your project and what you are
26delivering.
27
28Rational
29========
30
31RTEMS is complex and the focus of the RTEMS Ecosystem is to simplify the
32complexity for users by providing a stable documented way to build, configure
33and run RTEMS. RTEMS is more than a kernel running real-time applications on
34target hardware, it is part of a project's and therefore team's workflow and
35every project and team is different.
36
37RTEMS's ecosystem does not mandate a way to work. It is a series of parts,
38components, and items that are used to create a suitable development
39environment to work with. The processes explained in this manual are the same
40things an RTEMS maintainer does to maintain the kernel or an experienced user
41does to build their production system. It is important to keep this in mind
42when working through this manual. We encourage users to explore what can be
43done and to discover ways to make it fit their needs. The ecosystem provided by
44the RTEMS Project will not install in a single click of a mouse because we want
45users to learn the parts they will come to depend on as their project's
46development matures.
47
48The RTEMS Ecosystem provides a standard interface that is the same on all
49supported host systems. Standardizing how a user interacts with RTEMS is
50important and making that experience portable is also important. As a result
51the ecosystem is documented at the command line level and we leave GUI and IDE
52integration for users and integrators.
53
54Standardizing the parts and how to use them lets users create processes and
55procedures that are stable over releases. The RTEMS Ecosystem generates data
56that can be used to audit the build process so their configuration can be
57documented.
58
59The ecosystem is based around the source code used in the various parts,
60components and items of the RTEMS development environment. A user can create
61an archive of the complete build process including all the source code for long
62term storage. This is important for projects with a long life cycle.
63
64Open Source
65===========
66
67RTEMS is an open source operating system and an open source project and this
68extends to the ecosystem. We encourage users to integrate the processes to
69build tools, the kernel and any 3rd party libraries into their project's
70configuration management processes.
71
72All the parts that make up the ecosystem are open source. The ecosystem uses a
73package's source code to create an executable on a host so when an example
74RTEMS executable is created and run for the first time the user will have built
75every tool as well as the executable from source. The RTEMS Project believes
76the freedom this gives a user is as important as the freedom of having access
77to the source code for a package.
78
79Deployment
80==========
81
82The RTEMS Project provides the ecosystem as source code that users can download
83to create personalised development environments. The RTEMS Project does not
84provide packaging and deployment for a specific host environment, target
85architecture or BSP. The RTEMS Project encourages users and organizations to
86fill this role for the community.
87
88Building and Deploying Tool Binaries
89------------------------------------
90
91If you wish to create and distribute your build or you want to archive a build
92you can create a tar file. We term this deploying a build. This is a more
93advanced method for binary packaging and installing of tools.
94
95By default the RTEMS Source Builder installs the built packages directly and
96optionally it can also create a *build set tar file* or a *package tar file*
97per package built. The normal and default behaviour is to let the RTEMS Source
98Builder install the tools. The source will be downloaded, built, installed and
99cleaned up.
100
101The tar files are created with the full build prefix present and if you follow
102the examples given in this documentation the path is absolute. This can cause
103problems if you are installing on a host you do not have super user or
104administrator rights on because the prefix path may references part you do not
105have write access too and tar will not extract the files. You can use the
106``--strip-components`` option in tar if your host tar application supports it
107to remove the parts you do not have write access too or you may need to unpack
108the tar file somewhere and copy the file tree from the level you have write
109access from. Embedding the full prefix path in the tar files lets you know what
110the prefix is and is recommended. For example if
111``/home/chris/development/rtems/4.11`` is the prefix used you cannot change
112directory to the root (``/``) and untar the file because the ``/home`` is root
113access only. To install a tar file you have downloaded into your new machine's
114``Downloads`` directory in your home directoty you would enter:
115
116.. code-block:: shell
117
118    $ cd /somewhere
119    $ tar --strip-components=3 -xjf \
120          $HOME/Downloads/rtems-4.11-sparc-rtems4.11-1.tar.bz2
121
122A build set tar file is created by adding ``--bset-tar-file`` option to the
123``sb-set-builder`` command::
124
125    $ ../source-builder/sb-set-builder --log=l-sparc.txt \
126             --prefix=$HOME/development/rtems/4.11 \
127             --bset-tar-file \     <1>
128             4.11/rtems-sparc
129    Source Builder - Set Builder, v0.2.0
130    Build Set: 4.11/rtems-sparc
131    config: expat-2.1.0-1.cfg
132    package: expat-2.1.0-x86_64-freebsd9.1-1
133    building: expat-2.1.0-x86_64-freebsd9.1-1
134    config: tools/rtems-binutils-2.22-1.cfg
135    package: sparc-rtems4.11-binutils-2.22-1
136    building: sparc-rtems4.11-binutils-2.22-1
137    config: tools/rtems-gcc-4.7.2-newlib-1.20.0-1.cfg
138    package: sparc-rtems4.11-gcc-4.7.2-newlib-1.20.0-1
139    building: sparc-rtems4.11-gcc-4.7.2-newlib-1.20.0-1
140    config: tools/rtems-gdb-7.5.1-1.cfg
141    package: sparc-rtems4.11-gdb-7.5.1-1
142    building: sparc-rtems4.11-gdb-7.5.1-1
143    installing: rtems-4.11-sparc-rtems4.11-1 -> /home/chris/development/rtems/4.11 <2>
144    installing: rtems-4.11-sparc-rtems4.11-1 -> /home/chris/development/rtems/4.11
145    installing: rtems-4.11-sparc-rtems4.11-1 -> /home/chris/development/rtems/4.11
146    installing: rtems-4.11-sparc-rtems4.11-1 -> /home/chris/development/rtems/4.11
147    tarball: tar/rtems-4.11-sparc-rtems4.11-1.tar.bz2      <3>
148    cleaning: expat-2.1.0-x86_64-freebsd9.1-1
149    cleaning: sparc-rtems4.11-binutils-2.22-1
150    cleaning: sparc-rtems4.11-gcc-4.7.2-newlib-1.20.0-1
151    cleaning: sparc-rtems4.11-gdb-7.5.1-1
152    Build Set: Time 0:15:25.92873
153
154.. topic:: Items
155
156  1. The option to create a build set tar file.
157
158  2. The installation still happens unless you specify ``--no-install``.
159
160  3. Creating the build set tar file.
161
162You can also suppress installing the files using the ``--no-install``
163option. This is useful if your prefix is not accessiable, for example when
164building Canadian cross compiled tool sets::
165
166    $ ../source-builder/sb-set-builder --log=l-sparc.txt \
167                --prefix=$HOME/development/rtems/4.11 \
168                --bset-tar-file \
169                --no-install \      <1>
170                4.11/rtems-sparc
171    Source Builder - Set Builder, v0.2.0
172    Build Set: 4.11/rtems-sparc
173    config: expat-2.1.0-1.cfg
174    package: expat-2.1.0-x86_64-freebsd9.1-1
175    building: expat-2.1.0-x86_64-freebsd9.1-1
176    config: tools/rtems-binutils-2.22-1.cfg
177    package: sparc-rtems4.11-binutils-2.22-1
178    building: sparc-rtems4.11-binutils-2.22-1
179    config: tools/rtems-gcc-4.7.2-newlib-1.20.0-1.cfg
180    package: sparc-rtems4.11-gcc-4.7.2-newlib-1.20.0-1
181    building: sparc-rtems4.11-gcc-4.7.2-newlib-1.20.0-1
182    config: tools/rtems-gdb-7.5.1-1.cfg
183    package: sparc-rtems4.11-gdb-7.5.1-1
184    building: sparc-rtems4.11-gdb-7.5.1-1
185    tarball: tar/rtems-4.11-sparc-rtems4.11-1.tar.bz2    <2>
186    cleaning: expat-2.1.0-x86_64-freebsd9.1-1
187    cleaning: sparc-rtems4.11-binutils-2.22-1
188    cleaning: sparc-rtems4.11-gcc-4.7.2-newlib-1.20.0-1
189    cleaning: sparc-rtems4.11-gdb-7.5.1-1
190    Build Set: Time 0:14:11.721274
191    $ ls tar
192    rtems-4.11-sparc-rtems4.11-1.tar.bz2
193
194.. topic:: Items
195
196  1. The option to supressing installing the packages.
197
198  2. Create the build set tar.
199
200A package tar file can be created by adding the ``--pkg-tar-files`` to the
201``sb-set-builder`` command. This creates a tar file per package built in the
202build set::
203
204    $ ../source-builder/sb-set-builder --log=l-sparc.txt \
205            --prefix=$HOME/development/rtems/4.11 \
206            --bset-tar-file \
207            --pkg-tar-files \        <1>
208            --no-install 4.11/rtems-sparc
209    Source Builder - Set Builder, v0.2.0
210    Build Set: 4.11/rtems-sparc
211    config: expat-2.1.0-1.cfg
212    package: expat-2.1.0-x86_64-freebsd9.1-1
213    building: expat-2.1.0-x86_64-freebsd9.1-1
214    config: tools/rtems-binutils-2.22-1.cfg
215    package: sparc-rtems4.11-binutils-2.22-1
216    building: sparc-rtems4.11-binutils-2.22-1
217    config: tools/rtems-gcc-4.7.2-newlib-1.20.0-1.cfg
218    package: sparc-rtems4.11-gcc-4.7.2-newlib-1.20.0-1
219    building: sparc-rtems4.11-gcc-4.7.2-newlib-1.20.0-1
220    config: tools/rtems-gdb-7.5.1-1.cfg
221    package: sparc-rtems4.11-gdb-7.5.1-1
222    building: sparc-rtems4.11-gdb-7.5.1-1
223    tarball: tar/rtems-4.11-sparc-rtems4.11-1.tar.bz2
224    cleaning: expat-2.1.0-x86_64-freebsd9.1-1
225    cleaning: sparc-rtems4.11-binutils-2.22-1
226    cleaning: sparc-rtems4.11-gcc-4.7.2-newlib-1.20.0-1
227    cleaning: sparc-rtems4.11-gdb-7.5.1-1
228    Build Set: Time 0:14:37.658460
229    $ ls tar
230    expat-2.1.0-x86_64-freebsd9.1-1.tar.bz2           sparc-rtems4.11-binutils-2.22-1.tar.bz2
231    sparc-rtems4.11-gdb-7.5.1-1.tar.bz2 <2>           rtems-4.11-sparc-rtems4.11-1.tar.bz2 <3>
232    sparc-rtems4.11-gcc-4.7.2-newlib-1.20.0-1.tar.bz2
233
234.. topic:: Items
235
236  1. The option to create packages tar files.
237
238  2. The GDB package tar file.
239
240  3. The build set tar file. All the others in a single tar file.
Note: See TracBrowser for help on using the repository browser.