BiSheng JDK-build扩展开发:如何添加新的JDK版本支持
BiSheng JDK-build扩展开发:如何添加新的JDK版本支持
【免费下载链接】bishengjdk-buildBiSheng JDK build and test scripts - common across all releases/versions项目地址: https://gitcode.com/openeuler/bishengjdk-build
前往项目官网免费下载:https://ar.openeuler.org/ar/
BiSheng JDK-build是openEuler社区提供的JDK构建与测试脚本集合,支持跨版本、跨架构的JDK编译流程。本文将详细介绍如何为该项目添加新的JDK版本支持,帮助开发者快速扩展构建能力。
准备工作:了解项目结构
在开始扩展前,先熟悉项目的核心目录结构:
- bootjdk/:存放不同JDK版本的引导JDK压缩包,如jdk21/OpenJDK21U-jdk_x64_linux_hotspot_21.0.1_12.tar.gz
- sbin/common/:包含架构和版本相关的常量定义,如constants_jdk25_x86_64.sh
- sbin/prepare.sh:环境准备脚本,负责依赖安装和引导JDK配置
- sbin/buildjdk.sh:核心构建脚本,处理编译参数和打包流程
步骤1:添加引导JDK
新JDK版本需要对应的引导JDK(Boot JDK),需将其放置在bootjdk目录下:
- 创建版本目录:
mkdir -p bootjdk/jdk{VERSION}(例如jdk26) - 下载对应架构的引导JDK压缩包(如
OpenJDK26U-jdk_x64_linux_hotspot_26.0.0_10.tar.gz) - 放置到
bootjdk/jdk{VERSION}/目录下
引导JDK版本通常需要比目标版本低1-2个主要版本,具体参考JDK官方构建文档
步骤2:创建版本常量配置
在sbin/common/目录下创建新的常量配置文件,命名格式为constants_jdk{VERSION}_{ARCH}.sh:
# 示例:constants_jdk26_x86_64.sh declare -A DEFAULT_CONFIGURE_ARGS=( [with-extra-cflags]="-fno-aggressive-loop-optimizations \ -fno-gnu-unique \ -Wno-unused-parameter" \ [with-extra-ldflags]="-Wl,-z,now" \ [enable-unlimited-crypto]="" \ [with-zlib]="bundled" ) export DEFAULT_MAKE_ARGS="LOG=debug" export RELEASE_MAKE_TARGETS="product-images legacy-jre-image" export TARGET_FILE_TEMPLATE="bisheng-jdk-26.0.REPLACE-b$BUILD_JDK_BUILD_NUMBER-linux-x64" # 添加测试排除项 export JTREG_TEST_EXCLUDE="compiler/c2/Test8004741.java \ runtime/Thread/AsyncExceptionOnMonitorEnter.java"该文件需定义:
- 编译参数(
DEFAULT_CONFIGURE_ARGS) - 构建目标(
RELEASE_MAKE_TARGETS) - 输出文件名模板(
TARGET_FILE_TEMPLATE) - 测试排除用例(
JTREG_TEST_EXCLUDE)
步骤3:修改环境准备脚本
编辑sbin/prepare.sh,添加新JDK版本的引导JDK配置:
# 在InstallJDKBuildTools函数中添加 elif [[ "${BUILD_CONFIG[BUILD_VARIANT]}" = "${BISHENGJDK_26_BUILD_VARIANT}" ]]; then cd "${ROOT_DIR}/resources" if [[ "${BUILD_CONFIG[ARCH]}" = "aarch64" ]]; then cp "${ROOT_DIR}/bootjdk/jdk26/OpenJDK26U-jdk_aarch64_linux_hotspot_26.0.0_10.tar.gz" . tar -xf OpenJDK26U-jdk_aarch64_linux_hotspot_26.0.0_10.tar.gz else cp "${ROOT_DIR}/bootjdk/jdk26/OpenJDK26U-jdk_x64_linux_hotspot_26.0.0_10.tar.gz" . tar -xf OpenJDK26U-jdk_x64_linux_hotspot_26.0.0_10.tar.gz fi BUILD_CONFIG[BOOT_JDK]="${BUILD_JDK_RESOURCE_DIR}/jdk-26.0.0+10"同时在jtreg版本选择部分添加对应版本的测试工具支持:
elif [[ "${BUILD_CONFIG[MAJOR_NUMBER]}" -eq 26 ]] ; then jtregPath=$(echo "${BISHENGJDK_DEFAULT_TOOLS_DIR}"/jtreg*7.5.2*.tar.gz)步骤4:更新构建脚本
修改sbin/buildjdk.sh,在版本判断逻辑中加入新JDK支持:
# 在ConfigureArgs函数中添加 elif [[ "${BUILD_CONFIG[BUILD_VARIANT]}" = "${BISHENGJDK_26_BUILD_VARIANT}" ]]; then AddConfigureArg "--with-version-build" "${BUILD_CONFIG[BUILD_NUMBER]}" # 添加JDK26特有的编译参数 AddConfigureArg "--with-source-date" "version"步骤5:验证与测试
完成配置后,执行以下命令验证新JDK版本的构建流程:
# 克隆仓库 git clone https://gitcode.com/openeuler/bishengjdk-build # 执行构建(以JDK26 x86_64为例) cd bishengjdk-build export BUILD_VARIANT=jdk26 export ARCH=x86_64 ./sbin/prepare.sh ./sbin/buildjdk.sh构建成功后,检查output/目录是否生成预期的JDK压缩包。建议运行测试脚本验证功能完整性:
./sbin/testjdk.sh常见问题解决
引导JDK版本不匹配
错误提示:configure: error: Could not find a valid Boot JDK
解决:确保引导JDK版本符合JDK构建要求,通常需要前一个LTS版本。编译参数错误
解决:参考同系列版本的constants配置文件,确保新添加的编译参数与目标JDK版本兼容。测试用例失败
解决:通过JTREG_TEST_EXCLUDE排除不兼容的测试用例,参考sbin/common/constants_jdk25_x86_64.sh中的排除列表。
总结
通过添加引导JDK、创建常量配置、更新准备脚本和构建脚本四个关键步骤,即可为BiSheng JDK-build项目添加新的JDK版本支持。社区欢迎开发者贡献更多版本支持,共同完善openEuler生态的JDK构建能力!
【免费下载链接】bishengjdk-buildBiSheng JDK build and test scripts - common across all releases/versions项目地址: https://gitcode.com/openeuler/bishengjdk-build
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
