Deprecation of i386 and 32-bit powerpc for 15.0

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Wed, 18 Jun 2025 13:12:17 UTC
In February 2023, the FreeBSD core team announced a plan to deprecate
most 32-bit platforms in FreeBSD 15.0.  Since that time, armv6 support
has been removed from main leaving i386 and 32-bit powerpc as the
remaining 32-bit platforms slated for deprecation.  While there have
been a few requests to keep full support for these platforms, we have
not seen an increase in developer interest or willingness to support
these platforms.

In the past, removing platforms has been a bit messy.  Once a platform
is disconnected in main but remains in older stable branches, there is
a risk of MFCs breaking these deprecated platforms.  That has
certainly been the case with our most recent removal of MIPS (which is
still present in 13).  OTOH, keeping code around in the tree that is
deprecated comes at its own cost, and we would like to find the right
balance for deprecating i386 and 32-bit powerpc in 15.0.

Prompted by a request from re@, srcmgr@ drafted an initial plan back
in January and shared it with core@.  core@ asked srcmgr@ to drive
this deprecation in coordination with other teams.  srcmgr@ worked
with re@ and portmgr@ to refine the initial plan into the proposal
below.  One request we received during this process is to keep the
full i386 world building even if the kernel is disabled.  Given the
presence of armv7 covering 32-bit warnings for userspace still and
that most MD code for i386 is already required for lib32 builds, the
cost of keeping this building seems relatively minor.

The proposed timeline:

- On main 3 months prior to the branching of stable/15 (June 2025):

   - disable all i386 kernel configs in make universe in main leaving
     i386 as a world-only target in make universe

   - move 32-bit powerpc out of the default list of targets for
     universe in main

   - stop building release image snapshots for i386, powerpc, and
     powerpcspe

   - stop building binary packages for i386 and powerpc for main

   - disable CI jobs in jenkins for i386 and powerpc

- On stable/15 after it branches (September 2025):

   - exclude i386 and powerpc from CI jobs added in jenkins for the new
     branch

   - do not add package builds or release image builds for i386 and
     powerpc for the new branch

- ~6 months after branching (BSDCan 2026 devsummit):

   - evaluate how stable/14 has been fairing (are MFCs breaking
     deprecated platforms) (note that stable/13 will be EOL at this
     point)

     - if all is smooth, start removing code from main for i386 and
       powerpc kernels as well as any powerpc userspace code not
       required for lib32

     - if all is not smooth, re-evaluate

- after the final 14.x release (September 2027):

   - MFC removals of i386 and powerpc code to stable/15

Note that until the code for these platforms is actually removed, the
build infrastructure will remain in the tree on both main and
stable/15, and the deprecated targets will still be buildable
manually, for example using `make buildworld TARGET_ARCH=i386`.

-- 
John Baldwin