JEP 381: Remove the Solaris and SPARC Ports
Owner | Mikael Vidstedt |
Type | Feature |
Scope | Implementation |
Status | Closed / Delivered |
Release | 15 |
Component | hotspot / other |
Discussion | jdk dash dev at openjdk dot java dot net |
Effort | M |
Duration | M |
Relates to | JEP 362: Deprecate the Solaris and SPARC Ports |
8272878: JEP 381 cleanup: Remove unused Solaris code in sun.font.TrueTypeGlyphMapper | |
Reviewed by | Alan Bateman, Bradford Wetmore, Dalibor Topic, Daniel Daugherty, David Holmes, Kim Barrett, Sean Mullan, Stuart Marks |
Endorsed by | Mark Reinhold |
Created | 2020/03/28 01:22 |
Updated | 2024/10/08 19:34 |
Issue | 8241787 |
Summary
Remove the source code and build support for the Solaris/SPARC, Solaris/x64, and Linux/SPARC ports. These ports were deprecated for removal in JDK 14 with the express intent to remove them in a future release.
Goals
- Remove all source code specific to the Solaris operating system
- Remove all source code specific to the SPARC architecture
- Update documentation and source code comments for future releases
Non-Goals
It is not a goal of this JEP to change the status of the affected ports in any prior release. The earliest release to which this JEP could be targeted is JDK 15.
Motivation
Many projects and features currently in development such as Valhalla, Loom, and Panama require significant changes to CPU-architecture and operating-system specific code. Dropping support for the Solaris and SPARC ports will enable contributors in the OpenJDK Community to accelerate the development of new features that will move the platform forward.
Description
We will remove or adjust all of the Solaris- and SPARC-related code, build-system logic, and documentation.
- Remove directories:
src/hotspot/cpu/sparc
src/hotspot/os/solaris
src/hotspot/os_cpu/solaris
src/hotspot/os_cpu/linux_sparc
src/hotspot/os_cpu/solaris_x86
src/java.base/solaris
src/java.desktop/solaris
src/jdk.attach/solaris
src/jdk.crypto.cryptoki/solaris
src/jdk.crypto.ucrypto/solaris
src/jdk.management/solaris
src/jdk.net/solaris
- Remove or adjust C/C++ code guarded by the following preprocessor definitions and macros:
SPARC
,__sparc__
,__sparc
,__sparcv9
SOLARIS
,__solaris__
SPARC_ONLY
,NOT_SPARC
SOLARIS_ONLY
,NOT_SOLARIS
SOLARIS_MUTATOR_LIBTHREAD
SPARC_WORKS
- Remove or adjust Java code that checks for Solaris or SunOS, for example:
System.getProperty(“os.name”).contains(“Solaris”)
System.getProperty(“os.name”).startsWith("SunOS")
- Remove Solaris-specific features:
- The
OracleUcrypto
provider in thejdk.crypto.ucrypto
module (8234870) - The
jdk.net.SocketFlow
socket option in thejdk.net
module (8234871)
- The
- Remove or adjust build system (automake, etc.) logic related to Solaris, SPARC, or Oracle Studio; specifically, the following variables and values:
OPENJDK_{BUILD,TARGET}_OS
=Solaris
OPENJDK_{BUILD,TARGET}_CPU_ARCH
=sparc
TOOLCHAIN_TYPE
=solstudio
is{Build,Target}Os
=solaris
is{Build,Target}Cpu
=sparcv9
- Remove or adjust tests only relevant to, or only executed on, Solaris or SPARC, for example:
jtreg
tests using@requires os.family == "solaris"
@requires os.arch == "sparc"
@requires os.arch == "sparcv9"
@requires (vm.simpleArch == "sparcv9")
- The
Platform.isSolaris()
orPlatform.isSparc()
test library methods, and the methods themselves
- Clean up problem lists to remove any references to solaris or SPARC
- Adjust comments in the source code referring to Solaris or SPARC, with care
- In many cases the comments can simply be removed, but some references to Solaris and SPARC may still be relevant even after the ports are removed
- Remove the Solaris devkit creator scripts (under
make/devkit
) - Remove any Solaris- or SPARC-specific logic in the JIB configuration file
Testing
Standard testing on other platforms will ensure the correctness of changes to common and shared files.
Risks and Assumptions
Removing support for Solaris or SPARC could affect other in-tree ports in the very unlikely case that they rely on Solaris or SPARC source code.