Removing preinstall from the build process

Chris Johns chrisj at rtems.org
Tue Dec 12 21:41:36 UTC 2017


Hello,

Over the past few weeks there has been work to remove the preinstall process
from the build system. The catalyst for this is ticket #3083 [1] Joel and others
reported on Linux systems. What started as an investigation has turned into
something concrete.

The recent changes I made to the build system to improve the build speed on
multi-core hardware has exposed an issue on Linux where parallel preinstalling
of a header file is detected by Linux's `install` tool and reported as an error.
This does not happen on FreeBSD so I did not and do not see the issue. The fix
for this is complex and fragile and so it was decided to remove the preinstall
phase from the build system.

It has been our intention to remove preinstall with the change to a waf build
system. We have brought this forward to happen before the 5.1 release to aid
back porting of fixes post this release.

Removing preinstall requires moving header files that are preinstalled to a
location in the repo that matches the preinstall structure. The exported API
headers become "what you see is what you get" and this benefits those auditing
RTEMS and how it is built. The include paths in the repo will be:

 cpukit/include
 cpukit/score/cpu/@RTEMS_CPU@/include
 bsps/include
 bsps/@RTEMS_CPU@/include
 bsps/@RTEMS_CPU@/@RTEMS_BSP@/include

and in the build tree:

 cpukit/include
 bsp/include

The work is happening in 3 separate parts:

 1. Moving the headers in the repo.
 2. Updating the build system.
 3. Fixing the existing source.

I have the header move ready, there are 1747 git moves. This work required
capturing the preinstall data from ampolish3 and processing it to create a shell
script to do the move. There will be a commit for each include path in the repo.

Updating the build system currently touches around 300 files without removing
the preinstall.am files or adding new automake support to install the API
headers when running `make install`.

Fixing the source has been active and visible with Sebastian (thank you) working
to clean up the issues found. This work is on going as we uncover problems
masked by preinstalling. Once this task is complete we will push the build
system and move changes.

This is a substantial change and churn within the repo and I ask for your
patience and understanding as we complete this task. I should highlight the
changes within the actual code base are relatively small.

Thanks
Chris

[1] https://devel.rtems.org/ticket/3083


More information about the devel mailing list