Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 42 additions & 4 deletions dev-support/checkcompatibility.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import urllib.request
import urllib.error
import urllib.parse
import xml.etree.ElementTree as xml
from collections import namedtuple
try:
import argparse
Expand Down Expand Up @@ -135,7 +136,33 @@ def get_repo_name(remote_name="origin"):
return remote[:-4] if remote.endswith(".git") else remote


def build_tree(java_path, verbose):
def select_java_home(java_path, java8_home, java17_home):
pom = xml.parse(os.path.join(java_path, "pom.xml"))
root = pom.getroot()
ns = ""
if root.tag.startswith("{"):
ns = root.tag.split("}")[0] + "}" # e.g. "{http://maven.apache.org/POM/4.0.0}"
version_elem = root.find(f"{ns}version")
if version_elem is not None and version_elem.text:
version = version_elem.text.strip()
else:
raise ValueError("Could not find project version")
if version == "${revision}":
properties_elem = root.find(f"{ns}properties")
if properties_elem is None:
raise ValueError("Could not find properties")
revision_elem = properties_elem.find(f"{ns}revision")
if revision_elem is not None and revision_elem.text:
version = revision_elem.text.strip()
else:
raise ValueError("Could not find project revision")
if version.startswith("3."):
return java17_home
else:
return java8_home


def build_tree(java_path, verbose, java8_home, java17_home):
""" Run the Java build within 'path'. """
logging.info("Building in %s ", java_path)
# special hack for comparing with rel/2.0.0, see HBASE-26063 for more details
Expand All @@ -144,7 +171,10 @@ def build_tree(java_path, verbose):
"-Dmaven.javadoc.skip=true", "--threads=1.0C", "package"]
if not verbose:
mvn_cmd.insert(-1, "--quiet")
subprocess.check_call(mvn_cmd, cwd=java_path)
env = os.environ.copy()
if java8_home and java17_home:
env["JAVA_HOME"] = select_java_home(java_path, java8_home, java17_home)
subprocess.check_call(mvn_cmd, cwd=java_path, env=env)


def checkout_java_acc(force):
Expand Down Expand Up @@ -444,6 +474,14 @@ def main():
parser.add_argument("--skip-build",
action="store_true",
help="Skip building the projects.")
parser.add_argument("--java8_home",
default=None,
help="Path to Java 8 installation. "
"Used for building projects with version < 3.0.")
parser.add_argument("--java17_home",
default=None,
help="Path to Java 17 installation. "
"Used for building projects with version >= 3.0.")
parser.add_argument("--verbose",
action="store_true",
help="more output")
Expand Down Expand Up @@ -516,8 +554,8 @@ def main():
if args.skip_build:
logging.info("Skipping the build")
else:
build_tree(src_dir, args.verbose)
build_tree(dst_dir, args.verbose)
build_tree(src_dir, args.verbose, args.java8_home, args.java17_home)
build_tree(dst_dir, args.verbose, args.java8_home, args.java17_home)

# Find the JARs.
src_jars = find_jars(src_dir)
Expand Down
4 changes: 3 additions & 1 deletion dev-support/create-release/release-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,9 @@ fi

init_locale
init_java
#set java 17 for spotless
# always set java 8 for generating api report
set_java8_home
# set java 17 for spotless
set_java17_home
init_mvn
init_python
Expand Down
2 changes: 2 additions & 0 deletions dev-support/create-release/release-util.sh
Original file line number Diff line number Diff line change
Expand Up @@ -609,6 +609,8 @@ function generate_api_report {
org.apache.yetus.audience.InterfaceAudience.Public \
-e "original-hbase.*.jar" \
-e "hbase-shaded-testing-util.*.jar" \
--java8_home "${JAVA8_HOME}" \
--java17_home "${JAVA17_HOME}" \
"$previous_tag" "$release_tag"
previous_version="$(echo "${previous_tag}" | sed -e 's/rel\///')"
cp "${project}/target/compat-check/report.html" "./api_compare_${previous_version}_to_${release_tag}.html"
Expand Down