Removing an Architectural Port
This page describes the process of removing an architectural port from the RTEMS source repository. This is normally a fairly infrequent occurrence and happens after some combination of the following:
- the architecture is no longer available for purchase
- GCC has dropped support for the architecture
- there are no RTEMS users
- the port is incomplete and tools are unstable
Before an architecture can be removed, an announcement must be made to the community in order to allow for feedback that it can be removed or is still in use. In some cases, still being in use is not a sufficient condition if current tool versions do not support the architecture and users have no plans to upgrade to a newer RTEMS version.
In these instructions, it is assumed that ALL BSPs for this architecture have been removed. Each BSP should be removed per the procedures in Removing a BSP.
Removing an Architecture from the Source
Unlike the instructions for Removing a BSP, these instructions assume the reader is familiar with RTEMS Developer Practices and provides a checklist as opposed to detailed instructions. An important facet of removing an architecture is that it will require changes to multiple areas of the RTEMS Project spread across multiple repositories. This makes it more complicated and the developer removing the architecture should be careful, use grep, and update this page as other areas to update are identified.
HINT: In order to be sure you have gotten all the references, be sure to grep for architecture specific defines that are predefined by GCC in the entire source base of each repository.
- File a Trac ticket - This should list all tickets associated with removing BSPs within this architecture. All commit messages associated with removing the architecture should reference this ticket number. See ticket 2443 for a simple example. Remember that the ticket should list tickets for each BSP family in this architecture to be removed individually before this architecture can be removed.
- bootstrap -c - From the top of the RTEMS source tree.
- Make a local development branch in git
Removing RTEMS Source Code
- Remove cpukit/score/cpu/@ARCHITECTURE@ - Commit as a single patch updating ticket.
- Remove @ARCHITECTURE@ from cpukit/libnetworking - If the architecture has optimized in_cksum code, then this will require editing the files machine/in_cksum.h, netinet/in_cksum.c, and Makefile.am. There may also be files referencing the architecture which need updating. Commit as a single patch updating ticket.
- Remove @ARCHITECTURE@ from cpukit/libdl - This may include source code and/or configuration logic. Commit as a single patch updating ticket.
- Remove @ARCHITECTURE@ specific code in cpukit/librpc - This should be restricted to the file src/xdr/xdr_float.c. Commit as a single patch updating ticket.
- Remove c/src/lib/libcpu/@ARCHITECTURE@ - Commit as a single patch updating ticket.
- Remove c/src/lib/libbsp/@ARCHITECTURE@ including shared - Commit as a single patch updating ticket.
- Remove @ARCHITECTURE@ references in testsuites - This may include defines in spfatal08, sptask_err03, sptimer_err02, sp35, and others. Be sure to grep for architecture specific defines that are predefined by GCC. Commit as a single patch updating ticket.
Removing @ARCHITECTURE@ from other RTEMS Project Source Code
- Check rtems-libbsd - XXX
- Check rtems-tools - XXX
Removing @ARCHITECTURE@ from RTEMS Documentation
- Remove @ARCHITECTURE@ from doc/cpu_supplement - This requires removing a file and updating the top level cpu_supplement.t file. There may also be examples using the architecture. Commit as a single patch updating ticket.
- Remove @ARCHITECTURE@ from doc/user/preface.texi - This requires a manual edit. Commit as a single patch updating ticket.
Removing @ARCHITECTURE@ from GNU Tools
The @ARCHITECTURE@ may be in use by other targets. We are only removing the RTEMS specific bits.
NOTE: This will require a copyright assignment to the Free Software Foundation. Many core developers already have this in place and are the likely candidates to perform these tasks.
- binutils - XXX
- gcc - XXX
- newlib - XXX
- gdb -- XXX
Additionally, there are helpers in the RTEMS repositories for building tools. These include the following that must be addressed:
- rtems-testing/gcc - This directory includes scripts for building and testing arbitrary tool versions. Any references to the @ARCHITECTURE@ should be reviewed and removed if necessary.
- rtems-source-builder - Any tool packages for the development version of RTEMS specific to this @ARCHITECTURE@ should be removed.
- rtems-tester - Any references to this @ARCHITECTURE@ should be reviewed and removed if necessary.
- Supported architecture table on Wiki - XXX link
- Supported architecture table in introductory presentation (offline)
- Review open Trac tickets for architecture and close
- ??? what else