From 082584533790169251a252b034a8a9d3dd569d1a Mon Sep 17 00:00:00 2001 From: Andrew Hughes Date: Fri, 26 Apr 2024 20:52:39 +0100 Subject: [PATCH] Sync fileset with c9s Related: RHEL-30918 --- .gitignore | 116 ++++++++++++++++++++- README.md | 9 ++ generate_source_tarball.sh | 200 +++++++++++++++++++++++++++++++++++++ icedtea_sync.sh | 192 +++++++++++++++++++++++++++++++++++ openjdk_news.sh | 76 ++++++++++++++ tests/tests.yml | 21 ++++ update_package.sh | 42 ++++++++ 7 files changed, 653 insertions(+), 3 deletions(-) create mode 100644 README.md create mode 100755 generate_source_tarball.sh create mode 100755 icedtea_sync.sh create mode 100755 openjdk_news.sh create mode 100644 tests/tests.yml create mode 100644 update_package.sh diff --git a/.gitignore b/.gitignore index 5d87a3e..8f9ba36 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,117 @@ -SOURCES/openjdk-jdk11u-jdk-11.0.18+9-4curve.tar.xz -SOURCES/tapsets-icedtea-6.0.0pre00-c848b93a8598.tar.xz -/openjdk-jdk11u-jdk-11.0.18+9-4curve.tar.xz +*.rpm +/systemtap_3.2_tapsets_hg-icedtea8-9d464368e06d.tar.xz +/shenandoah-jdk11-b516c8c7a0a4.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11+22.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11+28.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.1+13.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.1+13-20190101.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.2+7.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.3+6.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.3+7.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.4+2.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.4+3.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.4+4.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.4+5.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.4+6.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.4+7.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.4+8.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.4+9.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.4+10.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.4+11.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.5+1.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.5+2.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.5+2-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.5+9-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.5+9.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.5+10.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.5+10-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.6+1-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.6+2-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.6+9-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.6+10-4curve.tar.xz +/tapsets-icedtea-3.11.0.tar.xz +/tapsets-icedtea-3.15.0.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.7+1-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.7+2-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.7+3-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.7+3.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.7+4-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.7+4.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.7+5-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.7+5.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.7+6-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.7+6.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.7+7-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.7+7.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.7+8-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.7+8.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.7+9-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.7+9.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.7+10-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.7+10.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.8+1-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.8+2-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.8+3-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.8+4-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.8+5-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.8+6-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.8+7-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.8+8-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.8+9-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.8+10-4curve.tar.xz +/shenandoah-jdk11-shenandoah-jdk-11.0.9+1-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.9+2-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.9+3-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.9+4-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.9+5-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.9+6-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.9+7-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.9+8-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.9+9-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.9+10-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.9+11-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.10+1-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.10+2-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.10+3-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.10+4-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.10+5-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.10+8-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.10+9-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.11+1-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.11+2-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.11+3-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.11+4-4curve.tar.xz /tapsets-icedtea-6.0.0pre00-c848b93a8598.tar.xz +/jdk-updates-jdk11u-jdk-11.0.11+5-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.11+6-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.11+7-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.11+9-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.12+1-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.12+2-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.12+3-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.12+4-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.12+6-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.12+7-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.12+7-4curve-clean.tar.xz +/jdk-updates-jdk11u-jdk-11.0.13+1-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.13+7-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.13+8-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.14+1-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.14+8-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.14+9-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.14.1+1-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.15+1-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.15+8-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.15+9-4curve.tar.xz +/jdk-updates-jdk11u-jdk-11.0.15+10-4curve.tar.xz +/openjdk-jdk11u-jdk-11.0.16+7-4curve.tar.xz +/openjdk-jdk11u-jdk-11.0.16+8-4curve.tar.xz +/openjdk-jdk11u-jdk-11.0.16.1+1-4curve.tar.xz +/openjdk-jdk11u-jdk-11.0.17+1-4curve.tar.xz +/openjdk-jdk11u-jdk-11.0.17+7-4curve.tar.xz +/openjdk-jdk11u-jdk-11.0.17+8-4curve.tar.xz +/openjdk-jdk11u-jdk-11.0.18+1-4curve.tar.xz +/openjdk-jdk11u-jdk-11.0.18+9-4curve.tar.xz /openjdk-jdk11u-jdk-11.0.18+10-4curve.tar.xz /java-11-openjdk-11.0.18.0.10-6.portable.docs.el.aarch64.tar.xz /java-11-openjdk-11.0.18.0.10-6.portable.docs.el.ppc64le.tar.xz diff --git a/README.md b/README.md new file mode 100644 index 0000000..00cae68 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +Package of LTS OpenJDK 11 +OpenJDK have release cadence of 6 months. but 3/4 of them are Short Term Supported for 6 months only. This package is designed to harbore them. Currently it is build on openJDK 11. LTSs (next is 15) will go as separate packages. + +JDK11 is last LTS release of Java platform. It is bringing many cool improvements - http://openjdk.java.net/projects/jdk/11/ and is landing to your Fedora. Where it will be maintained for several years. You will always be allowed to install Used LTSs in build root, and alongside via alternatives. + +See announcement: http://mail.openjdk.java.net/pipermail/discuss/2017-September/004281.html +See java SIG plans: https://jvanek.fedorapeople.org/devconf/2018/changesInjavaReleaseProcess.pdf + +https://fedoraproject.org/wiki/Changes/java-11-openjdk-TechPreview diff --git a/generate_source_tarball.sh b/generate_source_tarball.sh new file mode 100755 index 0000000..3bb5f87 --- /dev/null +++ b/generate_source_tarball.sh @@ -0,0 +1,200 @@ +#!/bin/bash +# Generates the 'source tarball' for JDK projects. +# +# Example: +# When used from local repo set REPO_ROOT pointing to file:// with your repo +# If your local repo follows upstream forests conventions, it may be enough to set OPENJDK_URL +# If you want to use a local copy of patch GH001, set the path to it in the GH001 variable +# +# In any case you have to set PROJECT_NAME REPO_NAME and VERSION. eg: +# PROJECT_NAME=openjdk +# REPO_NAME=jdk11u +# VERSION=HEAD +# or to eg prepare systemtap: +# icedtea7's jstack and other tapsets +# VERSION=6327cf1cea9e +# REPO_NAME=icedtea7-2.6 +# PROJECT_NAME=release +# OPENJDK_URL=http://icedtea.classpath.org/hg/ +# TO_COMPRESS="*/tapset" +# +# They are used to create correct name and are used in construction of sources url (unless REPO_ROOT is set) + +# This script creates a single source tarball out of the repository +# based on the given tag and removes code not allowed in fedora/rhel. For +# consistency, the source tarball will always contain 'openjdk' as the top +# level folder, name is created, based on parameter +# + +if [ ! "x$GH001" = "x" ] ; then + if [ ! -f "$GH001" ] ; then + echo "You have specified GH001 as $GH001 but it does not exist. Exiting" + exit 1 + fi +fi + +if [ ! "x$GH003" = "x" ] ; then + if [ ! -f "$GH003" ] ; then + echo "You have specified GH003 as $GH003 but it does not exist. Exiting" + exit 1 + fi +fi + +set -e + +OPENJDK_URL_DEFAULT=https://github.com +COMPRESSION_DEFAULT=xz +# Corresponding IcedTea version +ICEDTEA_VERSION=6.0 + +if [ "x$1" = "xhelp" ] ; then + echo -e "Behaviour may be specified by setting the following variables:\n" + echo "VERSION - the version of the specified OpenJDK project" + echo "PROJECT_NAME -- the name of the OpenJDK project being archived (optional; only needed by defaults)" + echo "REPO_NAME - the name of the OpenJDK repository (optional; only needed by defaults)" + echo "OPENJDK_URL - the URL to retrieve code from (optional; defaults to ${OPENJDK_URL_DEFAULT})" + echo "COMPRESSION - the compression type to use (optional; defaults to ${COMPRESSION_DEFAULT})" + echo "FILE_NAME_ROOT - name of the archive, minus extensions (optional; defaults to PROJECT_NAME-REPO_NAME-VERSION)" + echo "REPO_ROOT - the location of the Mercurial repository to archive (optional; defaults to OPENJDK_URL/PROJECT_NAME/REPO_NAME)" + echo "TO_COMPRESS - what part of clone to pack (default is openjdk)" + echo "GH001 - the path to the ECC code patch, GH001, to apply (optional; downloaded if unavailable)" + echo "GH003 - the path to the ECC test patch, GH003, to apply (optional; downloaded if unavailable)" + exit 1; +fi + + +if [ "x$VERSION" = "x" ] ; then + echo "No VERSION specified" + exit -2 +fi +echo "Version: ${VERSION}" + +# REPO_NAME is only needed when we default on REPO_ROOT and FILE_NAME_ROOT +if [ "x$FILE_NAME_ROOT" = "x" -o "x$REPO_ROOT" = "x" ] ; then + if [ "x$PROJECT_NAME" = "x" ] ; then + echo "No PROJECT_NAME specified" + exit -1 + fi + echo "Project name: ${PROJECT_NAME}" + if [ "x$REPO_NAME" = "x" ] ; then + echo "No REPO_NAME specified" + exit -3 + fi + echo "Repository name: ${REPO_NAME}" +fi + +if [ "x$OPENJDK_URL" = "x" ] ; then + OPENJDK_URL=${OPENJDK_URL_DEFAULT} + echo "No OpenJDK URL specified; defaulting to ${OPENJDK_URL}" +else + echo "OpenJDK URL: ${OPENJDK_URL}" +fi + +if [ "x$COMPRESSION" = "x" ] ; then + # rhel 5 needs tar.gz + COMPRESSION=${COMPRESSION_DEFAULT} +fi +echo "Creating a tar.${COMPRESSION} archive" + +if [ "x$FILE_NAME_ROOT" = "x" ] ; then + FILE_NAME_ROOT=${PROJECT_NAME}-${REPO_NAME}-${VERSION} + echo "No file name root specified; default to ${FILE_NAME_ROOT}" +fi +if [ "x$REPO_ROOT" = "x" ] ; then + REPO_ROOT="${OPENJDK_URL}/${PROJECT_NAME}/${REPO_NAME}.git" + echo "No repository root specified; default to ${REPO_ROOT}" +fi; +if [ "x$TO_COMPRESS" = "x" ] ; then + TO_COMPRESS="openjdk" + echo "No to be compressed targets specified, ; default to ${TO_COMPRESS}" +fi; + +echo -e "Settings:" +echo -e "\tVERSION: ${VERSION}" +echo -e "\tPROJECT_NAME: ${PROJECT_NAME}" +echo -e "\tREPO_NAME: ${REPO_NAME}" +echo -e "\tOPENJDK_URL: ${OPENJDK_URL}" +echo -e "\tCOMPRESSION: ${COMPRESSION}" +echo -e "\tFILE_NAME_ROOT: ${FILE_NAME_ROOT}" +echo -e "\tREPO_ROOT: ${REPO_ROOT}" +echo -e "\tTO_COMPRESS: ${TO_COMPRESS}" +echo -e "\tGH001: ${GH001}" +echo -e "\tGH003: ${GH003}" + +if [ -d ${FILE_NAME_ROOT} ] ; then + echo "exists exists exists exists exists exists exists " + echo "reusing reusing reusing reusing reusing reusing " + echo ${FILE_NAME_ROOT} +else + mkdir "${FILE_NAME_ROOT}" + pushd "${FILE_NAME_ROOT}" + echo "Cloning ${VERSION} root repository from ${REPO_ROOT}" + git clone -b ${VERSION} ${REPO_ROOT} openjdk + popd +fi +pushd "${FILE_NAME_ROOT}" +# UnderlineTaglet.java has a BSD license with a field-of-use restriction, making it non-Free + if [ -d openjdk/test ] ; then + echo "Removing langtools test case with non-Free license" + rm -vf openjdk/test/langtools/tools/javadoc/api/basic/taglets/UnderlineTaglet.java + fi + if [ -d openjdk/src ]; then + pushd openjdk + echo "Removing EC source code we don't build" + CRYPTO_PATH=src/jdk.crypto.ec/share/native/libsunec/impl + rm -vf ${CRYPTO_PATH}/ec2.h + rm -vf ${CRYPTO_PATH}/ec2_163.c + rm -vf ${CRYPTO_PATH}/ec2_193.c + rm -vf ${CRYPTO_PATH}/ec2_233.c + rm -vf ${CRYPTO_PATH}/ec2_aff.c + rm -vf ${CRYPTO_PATH}/ec2_mont.c + rm -vf ${CRYPTO_PATH}/ecp_192.c + rm -vf ${CRYPTO_PATH}/ecp_224.c + + echo "Syncing EC list with NSS" + if [ "x$GH001" = "x" ] ; then + # get gh001-4curve.patch (from https://github.com/icedtea-git/icedtea) in the ${ICEDTEA_VERSION} branch + # Do not push it or publish it + echo "GH001 not found. Downloading..." + wget -v https://github.com/icedtea-git/icedtea/raw/${ICEDTEA_VERSION}/patches/gh001-4curve.patch + echo "Applying ${PWD}/gh001-4curve.patch" + git apply --stat --apply -v -p1 gh001-4curve.patch + rm gh001-4curve.patch + else + echo "Applying ${GH001}" + git apply --stat --apply -v -p1 $GH001 + fi; + if [ "x$GH003" = "x" ] ; then + # get gh001-4curve.patch (from https://github.com/icedtea-git/icedtea) in the ${ICEDTEA_VERSION} branch + echo "GH003 not found. Downloading..." + wget -v https://github.com/icedtea-git/icedtea/raw/${ICEDTEA_VERSION}/patches/gh003-4curve.patch + echo "Applying ${PWD}/gh003-4curve.patch" + git apply --stat --apply -v -p1 gh003-4curve.patch + rm gh003-4curve.patch + else + echo "Applying ${GH003}" + git apply --stat --apply -v -p1 $GH003 + fi; + find . -name '*.orig' -exec rm -vf '{}' ';' || echo "No .orig files found. This is suspicious, but may happen." + popd + fi + + # Generate .src-rev so build has knowledge of the revision the tarball was created from + mkdir build + pushd build + sh ${PWD}/../openjdk/configure + make store-source-revision + popd + rm -rf build + + echo "Compressing remaining forest" + if [ "X$COMPRESSION" = "Xxz" ] ; then + SWITCH=cJf + else + SWITCH=czf + fi + TARBALL_NAME=${FILE_NAME_ROOT}-4curve.tar.${COMPRESSION} + tar --exclude-vcs -$SWITCH ${TARBALL_NAME} $TO_COMPRESS + mv ${TARBALL_NAME} .. +popd +echo "Done. You may want to remove the uncompressed version - $FILE_NAME_ROOT." diff --git a/icedtea_sync.sh b/icedtea_sync.sh new file mode 100755 index 0000000..e5c54f3 --- /dev/null +++ b/icedtea_sync.sh @@ -0,0 +1,192 @@ +#!/bin/bash + +# Copyright (C) 2019 Red Hat, Inc. +# Written by Andrew John Hughes . +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +ICEDTEA_USE_VCS=true + +ICEDTEA_VERSION=3.15.0 +ICEDTEA_URL=https://icedtea.classpath.org/download/source +ICEDTEA_SIGNING_KEY=CFDA0F9B35964222 + +ICEDTEA_HG_URL=https://icedtea.classpath.org/hg/icedtea11 + +set -e + +RPM_DIR=${PWD} +if [ ! -f ${RPM_DIR}/jconsole.desktop.in ] ; then + echo "Not in RPM source tree."; + exit 1; +fi + +if test "x${TMPDIR}" = "x"; then + TMPDIR=/tmp; +fi +WORKDIR=${TMPDIR}/it.sync + +echo "Using working directory ${WORKDIR}" +mkdir ${WORKDIR} +pushd ${WORKDIR} + +if test "x${WGET}" = "x"; then + WGET=$(which wget); + if test "x${WGET}" = "x"; then + echo "wget not found"; + exit 1; + fi +fi + +if test "x${TAR}" = "x"; then + TAR=$(which tar) + if test "x${TAR}" = "x"; then + echo "tar not found"; + exit 2; + fi +fi + +echo "Dependencies:"; +echo -e "\tWGET: ${WGET}"; +echo -e "\tTAR: ${TAR}\n"; + +if test "x${ICEDTEA_USE_VCS}" = "xtrue"; then + echo "Mode: Using VCS"; + + if test "x${GREP}" = "x"; then + GREP=$(which grep); + if test "x${GREP}" = "x"; then + echo "grep not found"; + exit 3; + fi + fi + + if test "x${CUT}" = "x"; then + CUT=$(which cut); + if test "x${CUT}" = "x"; then + echo "cut not found"; + exit 4; + fi + fi + + if test "x${TR}" = "x"; then + TR=$(which tr); + if test "x${TR}" = "x"; then + echo "tr not found"; + exit 5; + fi + fi + + if test "x${HG}" = "x"; then + HG=$(which hg); + if test "x${HG}" = "x"; then + echo "hg not found"; + exit 6; + fi + fi + + echo "Dependencies:"; + echo -e "\tGREP: ${GREP}"; + echo -e "\tCUT: ${CUT}"; + echo -e "\tTR: ${TR}"; + echo -e "\tHG: ${HG}"; + + echo "Checking out repository from VCS..."; + ${HG} clone ${ICEDTEA_HG_URL} icedtea + + echo "Obtaining version from configure.ac..."; + ROOT_VER=$(${GREP} '^AC_INIT' icedtea/configure.ac|${CUT} -d ',' -f 2|${TR} -d '[][:space:]') + echo "Root version from configure: ${ROOT_VER}"; + + VCS_REV=$(${HG} log -R icedtea --template '{node|short}' -r tip) + echo "VCS revision: ${VCS_REV}"; + + ICEDTEA_VERSION="${ROOT_VER}-${VCS_REV}" + echo "Creating icedtea-${ICEDTEA_VERSION}"; + mkdir icedtea-${ICEDTEA_VERSION} + echo "Copying required files from checkout to icedtea-${ICEDTEA_VERSION}"; + # Commented out for now as IcedTea 6's jconsole.desktop.in is outdated + #cp -a icedtea/jconsole.desktop.in ../icedtea-${ICEDTEA_VERSION} + cp -a ${RPM_DIR}/jconsole.desktop.in icedtea-${ICEDTEA_VERSION} + cp -a icedtea/tapset icedtea-${ICEDTEA_VERSION} + + rm -rf icedtea +else + echo "Mode: Using tarball"; + + if test "x${ICEDTEA_VERSION}" = "x"; then + echo "No IcedTea version specified for tarball download."; + exit 3; + fi + + if test "x${CHECKSUM}" = "x"; then + CHECKSUM=$(which sha256sum) + if test "x${CHECKSUM}" = "x"; then + echo "sha256sum not found"; + exit 4; + fi + fi + + if test "x${PGP}" = "x"; then + PGP=$(which gpg) + if test "x${PGP}" = "x"; then + echo "gpg not found"; + exit 5; + fi + fi + + echo "Dependencies:"; + echo -e "\tCHECKSUM: ${CHECKSUM}"; + echo -e "\tPGP: ${PGP}\n"; + + echo "Checking for IcedTea signing key ${ICEDTEA_SIGNING_KEY}..."; + if ! gpg --list-keys ${ICEDTEA_SIGNING_KEY}; then + echo "IcedTea signing key ${ICEDTEA_SIGNING_KEY} not installed."; + exit 6; + fi + + echo "Downloading IcedTea release tarball..."; + ${WGET} -v ${ICEDTEA_URL}/icedtea-${ICEDTEA_VERSION}.tar.xz + echo "Downloading IcedTea tarball signature..."; + ${WGET} -v ${ICEDTEA_URL}/icedtea-${ICEDTEA_VERSION}.tar.xz.sig + echo "Downloading IcedTea tarball checksums..."; + ${WGET} -v ${ICEDTEA_URL}/icedtea-${ICEDTEA_VERSION}.sha256 + + echo "Verifying checksums..."; + ${CHECKSUM} --check --ignore-missing icedtea-${ICEDTEA_VERSION}.sha256 + + echo "Checking signature..."; + ${PGP} --verify icedtea-${ICEDTEA_VERSION}.tar.xz.sig + + echo "Extracting files..."; + ${TAR} xJf icedtea-${ICEDTEA_VERSION}.tar.xz \ + icedtea-${ICEDTEA_VERSION}/tapset \ + icedtea-${ICEDTEA_VERSION}/jconsole.desktop.in + + rm -vf icedtea-${ICEDTEA_VERSION}.tar.xz + rm -vf icedtea-${ICEDTEA_VERSION}.tar.xz.sig + rm -vf icedtea-${ICEDTEA_VERSION}.sha256 +fi + +echo "Replacing desktop files..."; +mv -v icedtea-${ICEDTEA_VERSION}/jconsole.desktop.in ${RPM_DIR} + +echo "Creating new tapset tarball..."; +mv -v icedtea-${ICEDTEA_VERSION} openjdk +${TAR} cJf ${RPM_DIR}/tapsets-icedtea-${ICEDTEA_VERSION}.tar.xz openjdk + +rm -rvf openjdk + +popd +rm -rf ${WORKDIR} diff --git a/openjdk_news.sh b/openjdk_news.sh new file mode 100755 index 0000000..560b356 --- /dev/null +++ b/openjdk_news.sh @@ -0,0 +1,76 @@ +#!/bin/bash + +# Copyright (C) 2022 Red Hat, Inc. +# Written by Andrew John Hughes , 2012-2022 +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +OLD_RELEASE=$1 +NEW_RELEASE=$2 +SUBDIR=$3 +REPO=$4 +SCRIPT_DIR=$(dirname ${0}) + +if test "x${SUBDIR}" = "x"; then + echo "No subdirectory specified; using ."; + SUBDIR="."; +fi + +if test "x$REPO" = "x"; then + echo "No repository specified; using ${PWD}" + REPO=${PWD} +fi + +if test x${TMPDIR} = x; then + TMPDIR=/tmp; +fi + +echo "Repository: ${REPO}" + +if [ -e ${REPO}/.git ] ; then + TYPE=git; +elif [ -e ${REPO}/.hg ] ; then + TYPE=hg; +else + echo "No Mercurial or Git repository detected."; + exit 1; +fi + +if test "x$OLD_RELEASE" = "x" || test "x$NEW_RELEASE" = "x"; then + echo "ERROR: Need to specify old and new release"; + exit 2; +fi + +echo "Listing fixes between $OLD_RELEASE and $NEW_RELEASE in $REPO" +rm -f ${TMPDIR}/fixes2 ${TMPDIR}/fixes3 ${TMPDIR}/fixes +for repos in . $(${SCRIPT_DIR}/discover_trees.sh ${REPO}); +do + if test "x$TYPE" = "xhg"; then + hg log -r "tag('$NEW_RELEASE'):tag('$OLD_RELEASE') - tag('$OLD_RELEASE')" -R $REPO/$repos -G -M ${REPO}/${SUBDIR} | \ + egrep '^[o:| ]*summary'|grep -v 'Added tag'|sed -r 's#^[o:| ]*summary:\W*([0-9])# - JDK-\1#'| \ + sed 's#^[o:| ]*summary:\W*# - #' >> ${TMPDIR}/fixes2; + hg log -v -r "tag('$NEW_RELEASE'):tag('$OLD_RELEASE') - tag('$OLD_RELEASE')" -R $REPO/$repos -G -M ${REPO}/${SUBDIR} | \ + egrep '^[o:| ]*[0-9]{7}'|sed -r 's#^[o:| ]*([0-9]{7})# - JDK-\1#' >> ${TMPDIR}/fixes3; + else + git -C ${REPO} log --no-merges --pretty=format:%B ${NEW_RELEASE}...${OLD_RELEASE} -- ${SUBDIR} |egrep '^[0-9]{7}' | \ + sed -r 's#^([0-9])# - JDK-\1#' >> ${TMPDIR}/fixes2; + touch ${TMPDIR}/fixes3 ; # unused + fi +done + +sort ${TMPDIR}/fixes2 ${TMPDIR}/fixes3 | uniq > ${TMPDIR}/fixes +rm -f ${TMPDIR}/fixes2 ${TMPDIR}/fixes3 + +echo "In ${TMPDIR}/fixes:" +cat ${TMPDIR}/fixes diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..6e42e03 --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,21 @@ +--- +- hosts: localhost + roles: + - role: standard-test-source + tags: + - always + - role: standard-test-basic + tags: + - classic + - atomic + required_packages: + - java-11-openjdk-devel + tests: + - javaVersion1: + dir: ~ + run: set -ex; useradd franta1; su franta1 -c 'java -version'; + run: set -ex; useradd franta4; su franta4 -c 'javac -version'; + run: ls -l /usr/lib/jvm; + - javaVersion2: + dir: ~ + run: set -ex; useradd franta2; su franta2 -c 'java --version' diff --git a/update_package.sh b/update_package.sh new file mode 100644 index 0000000..9831993 --- /dev/null +++ b/update_package.sh @@ -0,0 +1,42 @@ +#!/bin/bash -x +# this file contains defaults for currently generated source tarballs + +set -e + +# OpenJDK from Shenandoah project +export PROJECT_NAME="shenandoah" +export REPO_NAME="jdk11" +# warning, clonning without shenadnaoh prefix, you will clone pure jdk - thus without shenandaoh GC +export VERSION="shenandoah-jdk-11.0.3+7" +export COMPRESSION=xz +# unset tapsets overrides +export OPENJDK_URL="" +export TO_COMPRESS="" +# warning, filename and filenameroot creation is duplicated here from generate_source_tarball.sh +export FILE_NAME_ROOT=${PROJECT_NAME}-${REPO_NAME}-${VERSION} +FILENAME=${FILE_NAME_ROOT}.tar.${COMPRESSION} + +if [ ! -f ${FILENAME} ] ; then +echo "Generating ${FILENAME}" + sh ./generate_source_tarball.sh +else + echo "exists exists exists exists exists exists exists " + echo "reusing reusing reusing reusing reusing reusing " + echo ${FILENAME} +fi + +set +e + +major=`echo $REPO_NAME | sed 's/[a-zA-Z]*//g'` +build=`echo $VERSION | sed 's/.*+//g'` +name_helper=`echo $FILENAME | sed s/$major/'%{majorver}'/g ` +name_helper=`echo $name_helper | sed s/$build/'%{buildver}'/g ` +echo "align specfile acordingly:" +echo " sed 's/^Source0:.*/Source0: $name_helper/' -i *.spec" +echo " sed 's/^Source8:.*/Source8: $TAPSET/' -i *.spec" +echo " sed 's/^%global buildver.*/%global buildver $build/' -i *.spec" +echo " sed 's/Release:.*/Release: 1%{?dist}/' -i *.spec" +echo "and maybe others...." +echo "you should fedpkg/rhpkg new-sources $TAPSET $FILENAME" +echo "you should fedpkg/rhpkg prep --arch XXXX on all architectures: x86_64 i386 i586 i686 ppc ppc64 ppc64le s390 s390x aarch64 armv7hl" +