7.1. Prefixes¶
You will see the term prefix referred to thoughout this
documentation and in a wide number of software packages you can download from
the internet. A prefix is the path on your computer a software package is
built and installed under. Packages that have a prefix will place all parts
under the prefix path. On a host computer like Linux the packages you
install from your distribution typically use a platform specific standard
prefix. For example on Linux it is /usr
and on FreeBSD it is
/usr/local
.
We recommend you DO NOT use the standard prefix when installing the RTEMS
Tools. The standard prefix is the default prefix each package built by
the RSB contains. If you are building the tools when logged in as a Standard
User and not as the Super User (root
) or Administrator the RTEMS
Source Builder (RSB) will fail and report an error if the default prefix
is not writable. We recommend you leave the standand prefix for the
packages your operating system installs or software you manually install such
as applications.
A further reason not to use the standard prefix is to allow more than one
version of RTEMS to exist on your host machine at a time. The autoconf
and
automake
tools required by RTEMS are not versioned and vary between the
various versions of RTEMS. If you use a single prefix such as the standard
prefix there is a chance parts from a package of different versions may
interact. This should not happen but it can.
For POSIX or Unix hosts, the RTEMS Project uses /opt/rtems
as it’s
standard prefix. We view this prefix as a production level path, and we
prefer to place development versions under a different prefix away from the
production versions. Under this top level prefix we place the various
versions we need for development. For example the version 4.11.0 prefix
would be /opt/rtems/4.11.0
. If an update called 4.11.1 is released the
prefix would be /opt/rtems/4.11.1
. These are recommendations and
the choice of what you use is entirely yours. You may decide to have a single
path for all RTEMS 4.11 releases of /opt/rtems/4.11
.
For Windows a typical prefix is C:\opt\rtems
and as an MSYS2 path
this is /c/opt/rtems
.
7.1.1. Project Sandboxing¶
Project specific sandboxes let you have a number of projects running in parallel with each project in its own sandbox. You simply have a prefix per project and under that prefix you create a simple yet repeatable structure.
As an example lets say I have a large disk mounted under /bd
for Big
Disk. As root
create a directory called projects
and give the
directory suitable permissions to be writable by you as a user.
Lets create a project sandbox for my Box Sorter project. First create a
project directory called /bd/projects/box-sorter
. Under this create
rtems
and under that create rtems-4.11.0
. Under this path you
can follow the Chapter 7 Section 2 - Releases procedure to build a tool set using the
prefix of /bd/projects/box-sorter/rtems/4.11.0
. You are free to create
your project specific directories under /bd/projects/box-sorter
. The
top level directories would be:
/bd/projects
- Project specific development trees.
/bd/projects/box-sorter
- Box Sorter project sandbox.
/bd/projects/box-sorter/rtems/4.11.0
- Project prefix for RTEMS 4.11.0 compiler, debuggers, tools and installed Board Support Package (BSP).
A variation is to use the --without-rtems
option with the RSB to not build
the BSPs when building the tools and to build RTEMS specifically for each
project. This lets you have a production tools installed at a top level on your
disk and each project can have a specific and possibly customised version of
RTEMS. The top level directories would be:
/bd/rtems
- The top path to production tools.
/bd/rtems/4.11.0
- Production prefix for RTEMS 4.11.0 compiler, debuggers and tools.
/bd/projects
- Project specific development trees.
/bd/projects/box-sorter
- Box Sorter project sandbox.
/bd/projects/box-sorter/rtems
- Box Sorter project’s custom RTEMS kernel source and installed BSP.
A further varation if there is an RTEMS kernel you want to share between projects is it to move this to a top level and share. In this case you will end up with:
/bd/rtems
- The top path to production tools and kernels.
/bd/rtems/4.11.0
- Production prefix for RTEMS 4.11.0.
/bd/rtems/4.11.0/tools
- Production prefix for RTEMS 4.11.0 compiler, debuggers and tools.
/bd/rtems/4.11.0/bsps
- Production prefix for RTEMS 4.11.0 Board Support Packages (BSPs).
/bd/projects
- Project specific development trees.
/bd/projects/box-sorter
- Box Sorter project sandbox.
Finally you can have a single set of production tools and RTEMS BSPs on the
disk under /bd/rtems
you can share between your projects. The top level
directories would be:
/bd/rtems
- The top path to production tools and kernels.
/bd/rtems/4.11.0
- Production prefix for RTEMS 4.11.0 compiler, debuggers, tools and Board Support Packages (BSPs).
/bd/projects
- Project specific development trees.
/bd/projects/box-sorter
- Box Sorter project sandbox.
The project sandoxing approach allows you move a specific production part into the project’s sandbox to allow you to customise it. This is useful if you are testing new releases. The typical dependency is the order listed above. You can test new RTEMS kernels with production tools but new tools will require you build the kernel with them. Release notes with each release will let know what you need to update.
If the machine is a central project development machine simply replace
projects
with users
and give each user a personal directory.