[jvm-packages] Update release scripts (#9983)
* [jvm-packages] Add Scala version suffix to xgboost-jvm package (#9776) * Update JVM script (#9714) * Revamp pom.xml * Update instructions in prepare_jvm_release.py * Fix formatting * [jvm-packages] Fix POM for xgboost-jvm metapackage (#9893) * [jvm-packages] Fix POM for xgboost-jvm metapackage * Add script for updating the Scala version * Update change_scala_version.py to also change scala.version property (#9897) * Remove 'release-cpu-only' profile * Remove scala-2.13 profile; enable gpu package for Scala 2.13
This commit is contained in:
committed by
GitHub
parent
f88c43801f
commit
1168a68872
79
dev/change_scala_version.py
Normal file
79
dev/change_scala_version.py
Normal file
@@ -0,0 +1,79 @@
|
||||
import argparse
|
||||
import pathlib
|
||||
import re
|
||||
import shutil
|
||||
|
||||
|
||||
def main(args):
|
||||
if args.scala_version == "2.12":
|
||||
scala_ver = "2.12"
|
||||
scala_patchver = "2.12.18"
|
||||
elif args.scala_version == "2.13":
|
||||
scala_ver = "2.13"
|
||||
scala_patchver = "2.13.11"
|
||||
else:
|
||||
raise ValueError(f"Unsupported Scala version: {args.scala_version}")
|
||||
|
||||
# Clean artifacts
|
||||
if args.purge_artifacts:
|
||||
for target in pathlib.Path("jvm-packages/").glob("**/target"):
|
||||
if target.is_dir():
|
||||
print(f"Removing {target}...")
|
||||
shutil.rmtree(target)
|
||||
|
||||
# Update pom.xml
|
||||
for pom in pathlib.Path("jvm-packages/").glob("**/pom.xml"):
|
||||
print(f"Updating {pom}...")
|
||||
with open(pom, "r", encoding="utf-8") as f:
|
||||
lines = f.readlines()
|
||||
with open(pom, "w", encoding="utf-8") as f:
|
||||
replaced_scalaver = False
|
||||
replaced_scala_binver = False
|
||||
for line in lines:
|
||||
for artifact in [
|
||||
"xgboost-jvm",
|
||||
"xgboost4j",
|
||||
"xgboost4j-gpu",
|
||||
"xgboost4j-spark",
|
||||
"xgboost4j-spark-gpu",
|
||||
"xgboost4j-flink",
|
||||
"xgboost4j-example",
|
||||
]:
|
||||
line = re.sub(
|
||||
f"<artifactId>{artifact}_[0-9\\.]*",
|
||||
f"<artifactId>{artifact}_{scala_ver}",
|
||||
line,
|
||||
)
|
||||
# Only replace the first occurrence of scala.version
|
||||
if not replaced_scalaver:
|
||||
line, nsubs = re.subn(
|
||||
r"<scala.version>[0-9\.]*",
|
||||
f"<scala.version>{scala_patchver}",
|
||||
line,
|
||||
)
|
||||
if nsubs > 0:
|
||||
replaced_scalaver = True
|
||||
# Only replace the first occurrence of scala.binary.version
|
||||
if not replaced_scala_binver:
|
||||
line, nsubs = re.subn(
|
||||
r"<scala.binary.version>[0-9\.]*",
|
||||
f"<scala.binary.version>{scala_ver}",
|
||||
line,
|
||||
)
|
||||
if nsubs > 0:
|
||||
replaced_scala_binver = True
|
||||
f.write(line)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--purge-artifacts", action="store_true")
|
||||
parser.add_argument(
|
||||
"--scala-version",
|
||||
type=str,
|
||||
required=True,
|
||||
help="Version of Scala to use in the JVM packages",
|
||||
choices=["2.12", "2.13"],
|
||||
)
|
||||
parsed_args = parser.parse_args()
|
||||
main(parsed_args)
|
||||
@@ -2,7 +2,6 @@ import argparse
|
||||
import errno
|
||||
import glob
|
||||
import os
|
||||
import platform
|
||||
import re
|
||||
import shutil
|
||||
import subprocess
|
||||
@@ -88,10 +87,6 @@ def main():
|
||||
help="Version of the release being prepared",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
if sys.platform != "darwin" or platform.machine() != "arm64":
|
||||
raise NotImplementedError("Please run this script using an M1 Mac")
|
||||
|
||||
version = args.release_version
|
||||
expected_git_tag = "v" + version
|
||||
current_git_tag = get_current_git_tag()
|
||||
@@ -141,6 +136,7 @@ def main():
|
||||
("linux", "x86_64"),
|
||||
("windows", "x86_64"),
|
||||
("macos", "x86_64"),
|
||||
("macos", "aarch64"),
|
||||
]:
|
||||
output_dir = f"xgboost4j/src/main/resources/lib/{os_ident}/{arch}"
|
||||
maybe_makedirs(output_dir)
|
||||
@@ -164,6 +160,10 @@ def main():
|
||||
url=f"{nightly_bucket_prefix}/{git_branch}/libxgboost4j/libxgboost4j_{commit_hash}.dylib",
|
||||
filename="xgboost4j/src/main/resources/lib/macos/x86_64/libxgboost4j.dylib",
|
||||
)
|
||||
retrieve(
|
||||
url=f"{nightly_bucket_prefix}/{git_branch}/libxgboost4j/libxgboost4j_m1_{commit_hash}.dylib",
|
||||
filename="xgboost4j/src/main/resources/lib/macos/aarch64/libxgboost4j.dylib",
|
||||
)
|
||||
|
||||
with tempfile.TemporaryDirectory() as tempdir:
|
||||
# libxgboost4j.so for Linux x86_64, CPU only
|
||||
@@ -210,13 +210,31 @@ def main():
|
||||
"2. Store the Sonatype credentials in .m2/settings.xml. See insturctions in "
|
||||
"https://central.sonatype.org/publish/publish-maven/"
|
||||
)
|
||||
print("3. Now on a Mac machine, run:")
|
||||
print(" GPG_TTY=$(tty) mvn deploy -Prelease -DskipTests")
|
||||
print(
|
||||
"3. Now on a Linux machine, run the following to build Scala 2.12 artifacts. "
|
||||
"Make sure to use an Internet connection with fast upload speed:"
|
||||
)
|
||||
print(
|
||||
" # Skip native build, since we have all needed native binaries from CI\n"
|
||||
" export MAVEN_SKIP_NATIVE_BUILD=1\n"
|
||||
" GPG_TTY=$(tty) mvn deploy -Prelease -DskipTests"
|
||||
)
|
||||
print(
|
||||
"4. Log into https://oss.sonatype.org/. On the left menu panel, click Staging "
|
||||
"Repositories. Visit the URL https://oss.sonatype.org/content/repositories/mldmlc-1085 "
|
||||
"Repositories. Visit the URL https://oss.sonatype.org/content/repositories/mldmlc-xxxx "
|
||||
"to inspect the staged JAR files. Finally, press Release button to publish the "
|
||||
"artifacts to the Maven Central repository."
|
||||
"artifacts to the Maven Central repository. The top-level metapackage should be "
|
||||
"named xgboost-jvm_2.12."
|
||||
)
|
||||
print(
|
||||
"5. Remove the Scala 2.12 artifacts and build Scala 2.13 artifacts:\n"
|
||||
" export MAVEN_SKIP_NATIVE_BUILD=1\n"
|
||||
" python dev/change_scala_version.py --scala-version 2.13 --purge-artifacts\n"
|
||||
" GPG_TTY=$(tty) mvn deploy -Prelease -DskipTests"
|
||||
)
|
||||
print(
|
||||
"6. Go to https://oss.sonatype.org/ to release the Scala 2.13 artifacts. "
|
||||
"The top-level metapackage should be named xgboost-jvm_2.13."
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user