From e9e1c208ddf98e0314859b0efe17400489085ed2 Mon Sep 17 00:00:00 2001 From: Philip Hyunsu Cho Date: Tue, 24 Oct 2023 17:48:38 -0700 Subject: [PATCH 1/4] Update JVM script (#9714) --- dev/prepare_jvm_release.py | 122 ++++++++++++++++++++++++++----------- 1 file changed, 86 insertions(+), 36 deletions(-) diff --git a/dev/prepare_jvm_release.py b/dev/prepare_jvm_release.py index 07769b411358..0cf5796a2cf1 100644 --- a/dev/prepare_jvm_release.py +++ b/dev/prepare_jvm_release.py @@ -21,12 +21,14 @@ def normpath(path): else: return normalized + def cp(source, target): source = normpath(source) target = normpath(target) print("cp {0} {1}".format(source, target)) shutil.copy(source, target) + def maybe_makedirs(path): path = normpath(path) print("mkdir -p " + path) @@ -36,6 +38,7 @@ def maybe_makedirs(path): if e.errno != errno.EEXIST: raise + @contextmanager def cd(path): path = normpath(path) @@ -47,18 +50,22 @@ def cd(path): finally: os.chdir(cwd) + def run(command, **kwargs): print(command) subprocess.check_call(command, shell=True, **kwargs) + def get_current_git_tag(): out = subprocess.check_output(["git", "tag", "--points-at", "HEAD"]) return out.decode().split("\n")[0] + def get_current_commit_hash(): out = subprocess.check_output(["git", "rev-parse", "HEAD"]) return out.decode().split("\n")[0] + def get_current_git_branch(): out = subprocess.check_output(["git", "log", "-n", "1", "--pretty=%d", "HEAD"]) m = re.search(r"release_[0-9\.]+", out.decode()) @@ -66,38 +73,53 @@ def get_current_git_branch(): raise ValueError("Expected branch name of form release_xxx") return m.group(0) + def retrieve(url, filename=None): print(f"{url} -> {filename}") return urlretrieve(url, filename) + def main(): parser = argparse.ArgumentParser() - parser.add_argument("--release-version", type=str, required=True, - help="Version of the release being prepared") + parser.add_argument( + "--release-version", + type=str, + required=True, + help="Version of the release being prepared", + ) args = parser.parse_args() - if sys.platform != "darwin" or platform.machine() != "x86_64": - raise NotImplementedError("Please run this script using an Intel Mac") + 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() if current_git_tag != expected_git_tag: if not current_git_tag: - raise ValueError(f"Expected git tag {expected_git_tag} but current HEAD has no tag. " - f"Run: git checkout {expected_git_tag}") - raise ValueError(f"Expected git tag {expected_git_tag} but current HEAD is at tag " - f"{current_git_tag}. Run: git checkout {expected_git_tag}") + raise ValueError( + f"Expected git tag {expected_git_tag} but current HEAD has no tag. " + f"Run: git checkout {expected_git_tag}" + ) + raise ValueError( + f"Expected git tag {expected_git_tag} but current HEAD is at tag " + f"{current_git_tag}. Run: git checkout {expected_git_tag}" + ) commit_hash = get_current_commit_hash() git_branch = get_current_git_branch() - print(f"Using commit {commit_hash} of branch {git_branch}, git tag {current_git_tag}") + print( + f"Using commit {commit_hash} of branch {git_branch}, git tag {current_git_tag}" + ) with cd("jvm-packages/"): print("====copying pure-Python tracker====") for use_cuda in [True, False]: xgboost4j = "xgboost4j-gpu" if use_cuda else "xgboost4j" - cp("../python-package/xgboost/tracker.py", f"{xgboost4j}/src/main/resources") + cp( + "../python-package/xgboost/tracker.py", + f"{xgboost4j}/src/main/resources", + ) print("====copying resources for testing====") with cd("../demo/CLI/regression"): @@ -115,7 +137,11 @@ def main(): cp(file, f"{xgboost4j_spark}/src/test/resources") print("====Creating directories to hold native binaries====") - for os_ident, arch in [("linux", "x86_64"), ("windows", "x86_64"), ("macos", "x86_64")]: + for os_ident, arch in [ + ("linux", "x86_64"), + ("windows", "x86_64"), + ("macos", "x86_64"), + ]: output_dir = f"xgboost4j/src/main/resources/lib/{os_ident}/{arch}" maybe_makedirs(output_dir) for os_ident, arch in [("linux", "x86_64")]: @@ -123,52 +149,76 @@ def main(): maybe_makedirs(output_dir) print("====Downloading native binaries from CI====") - nightly_bucket_prefix = "https://s3-us-west-2.amazonaws.com/xgboost-nightly-builds" - maven_repo_prefix = "https://s3-us-west-2.amazonaws.com/xgboost-maven-repo/release/ml/dmlc" - - retrieve(url=f"{nightly_bucket_prefix}/{git_branch}/xgboost4j_{commit_hash}.dll", - filename="xgboost4j/src/main/resources/lib/windows/x86_64/xgboost4j.dll") + nightly_bucket_prefix = ( + "https://s3-us-west-2.amazonaws.com/xgboost-nightly-builds" + ) + maven_repo_prefix = ( + "https://s3-us-west-2.amazonaws.com/xgboost-maven-repo/release/ml/dmlc" + ) + + retrieve( + url=f"{nightly_bucket_prefix}/{git_branch}/libxgboost4j/xgboost4j_{commit_hash}.dll", + filename="xgboost4j/src/main/resources/lib/windows/x86_64/xgboost4j.dll", + ) + retrieve( + url=f"{nightly_bucket_prefix}/{git_branch}/libxgboost4j/libxgboost4j_{commit_hash}.dylib", + filename="xgboost4j/src/main/resources/lib/macos/x86_64/libxgboost4j.dylib", + ) with tempfile.TemporaryDirectory() as tempdir: # libxgboost4j.so for Linux x86_64, CPU only zip_path = os.path.join(tempdir, "xgboost4j_2.12.jar") extract_dir = os.path.join(tempdir, "xgboost4j") - retrieve(url=f"{maven_repo_prefix}/xgboost4j_2.12/{version}/" - f"xgboost4j_2.12-{version}.jar", - filename=zip_path) + retrieve( + url=f"{maven_repo_prefix}/xgboost4j_2.12/{version}/" + f"xgboost4j_2.12-{version}.jar", + filename=zip_path, + ) os.mkdir(extract_dir) with zipfile.ZipFile(zip_path, "r") as t: t.extractall(extract_dir) - cp(os.path.join(extract_dir, "lib", "linux", "x86_64", "libxgboost4j.so"), - "xgboost4j/src/main/resources/lib/linux/x86_64/libxgboost4j.so") + cp( + os.path.join(extract_dir, "lib", "linux", "x86_64", "libxgboost4j.so"), + "xgboost4j/src/main/resources/lib/linux/x86_64/libxgboost4j.so", + ) # libxgboost4j.so for Linux x86_64, GPU support zip_path = os.path.join(tempdir, "xgboost4j-gpu_2.12.jar") extract_dir = os.path.join(tempdir, "xgboost4j-gpu") - retrieve(url=f"{maven_repo_prefix}/xgboost4j-gpu_2.12/{version}/" - f"xgboost4j-gpu_2.12-{version}.jar", - filename=zip_path) + retrieve( + url=f"{maven_repo_prefix}/xgboost4j-gpu_2.12/{version}/" + f"xgboost4j-gpu_2.12-{version}.jar", + filename=zip_path, + ) os.mkdir(extract_dir) with zipfile.ZipFile(zip_path, "r") as t: t.extractall(extract_dir) - cp(os.path.join(extract_dir, "lib", "linux", "x86_64", "libxgboost4j.so"), - "xgboost4j-gpu/src/main/resources/lib/linux/x86_64/libxgboost4j.so") - + cp( + os.path.join(extract_dir, "lib", "linux", "x86_64", "libxgboost4j.so"), + "xgboost4j-gpu/src/main/resources/lib/linux/x86_64/libxgboost4j.so", + ) print("====Next Steps====") print("1. Gain upload right to Maven Central repo.") print("1-1. Sign up for a JIRA account at Sonatype: ") - print("1-2. File a JIRA ticket: " - "https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134. Example: " - "https://issues.sonatype.org/browse/OSSRH-67724") - print("2. Store the Sonatype credentials in .m2/settings.xml. See insturctions in " - "https://central.sonatype.org/publish/publish-maven/") + print( + "1-2. File a JIRA ticket: " + "https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134. Example: " + "https://issues.sonatype.org/browse/OSSRH-67724" + ) + print( + "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("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 " - "to inspect the staged JAR files. Finally, press Release button to publish the " - "artifacts to the Maven Central repository.") + 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 " + "to inspect the staged JAR files. Finally, press Release button to publish the " + "artifacts to the Maven Central repository." + ) + if __name__ == "__main__": main() From 4f6f7a942d988eb56588d59e47ae6ef1f1739299 Mon Sep 17 00:00:00 2001 From: Hyunsu Cho Date: Wed, 8 Nov 2023 00:13:04 -0800 Subject: [PATCH 2/4] Bump version to 2.0.2; revamp pom.xml --- CMakeLists.txt | 2 +- R-package/DESCRIPTION | 2 +- R-package/configure | 18 ++--- R-package/configure.ac | 2 +- include/xgboost/version_config.h | 2 +- jvm-packages/pom.xml | 91 +++++++++++++++++++++++- jvm-packages/xgboost4j-example/pom.xml | 6 +- jvm-packages/xgboost4j-flink/pom.xml | 6 +- jvm-packages/xgboost4j-gpu/pom.xml | 6 +- jvm-packages/xgboost4j-spark-gpu/pom.xml | 4 +- jvm-packages/xgboost4j-spark/pom.xml | 4 +- jvm-packages/xgboost4j/pom.xml | 6 +- python-package/pyproject.toml | 2 +- python-package/xgboost/VERSION | 2 +- 14 files changed, 120 insertions(+), 33 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d6b861ab9911..1b1b81989323 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.18 FATAL_ERROR) -project(xgboost LANGUAGES CXX C VERSION 2.0.1) +project(xgboost LANGUAGES CXX C VERSION 2.0.2) include(cmake/Utils.cmake) list(APPEND CMAKE_MODULE_PATH "${xgboost_SOURCE_DIR}/cmake/modules") cmake_policy(SET CMP0022 NEW) diff --git a/R-package/DESCRIPTION b/R-package/DESCRIPTION index d60ff28165bc..5f609c7e2a1a 100644 --- a/R-package/DESCRIPTION +++ b/R-package/DESCRIPTION @@ -1,7 +1,7 @@ Package: xgboost Type: Package Title: Extreme Gradient Boosting -Version: 2.0.1.1 +Version: 2.0.2.1 Date: 2023-10-12 Authors@R: c( person("Tianqi", "Chen", role = c("aut"), diff --git a/R-package/configure b/R-package/configure index 4017953347fd..d46acbf14b95 100755 --- a/R-package/configure +++ b/R-package/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for xgboost 2.0.1. +# Generated by GNU Autoconf 2.71 for xgboost 2.0.2. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, @@ -607,8 +607,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='xgboost' PACKAGE_TARNAME='xgboost' -PACKAGE_VERSION='2.0.1' -PACKAGE_STRING='xgboost 2.0.1' +PACKAGE_VERSION='2.0.2' +PACKAGE_STRING='xgboost 2.0.2' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1225,7 +1225,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures xgboost 2.0.1 to adapt to many kinds of systems. +\`configure' configures xgboost 2.0.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1287,7 +1287,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of xgboost 2.0.1:";; + short | recursive ) echo "Configuration of xgboost 2.0.2:";; esac cat <<\_ACEOF @@ -1367,7 +1367,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -xgboost configure 2.0.1 +xgboost configure 2.0.2 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1533,7 +1533,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by xgboost $as_me 2.0.1, which was +It was created by xgboost $as_me 2.0.2, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3412,7 +3412,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by xgboost $as_me 2.0.1, which was +This file was extended by xgboost $as_me 2.0.2, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3467,7 +3467,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -xgboost config.status 2.0.1 +xgboost config.status 2.0.2 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/R-package/configure.ac b/R-package/configure.ac index 1998b4f5a6d6..f4cef3c88b3a 100644 --- a/R-package/configure.ac +++ b/R-package/configure.ac @@ -2,7 +2,7 @@ AC_PREREQ(2.69) -AC_INIT([xgboost],[2.0.1],[],[xgboost],[]) +AC_INIT([xgboost],[2.0.2],[],[xgboost],[]) : ${R_HOME=`R RHOME`} if test -z "${R_HOME}"; then diff --git a/include/xgboost/version_config.h b/include/xgboost/version_config.h index fc29fd7a52a6..a69dcfab9064 100644 --- a/include/xgboost/version_config.h +++ b/include/xgboost/version_config.h @@ -6,6 +6,6 @@ #define XGBOOST_VER_MAJOR 2 /* NOLINT */ #define XGBOOST_VER_MINOR 0 /* NOLINT */ -#define XGBOOST_VER_PATCH 1 /* NOLINT */ +#define XGBOOST_VER_PATCH 2 /* NOLINT */ #endif // XGBOOST_VERSION_CONFIG_H_ diff --git a/jvm-packages/pom.xml b/jvm-packages/pom.xml index 0faf52b8ee2d..1eb6b9f02983 100644 --- a/jvm-packages/pom.xml +++ b/jvm-packages/pom.xml @@ -5,8 +5,8 @@ 4.0.0 ml.dmlc - xgboost-jvm - 2.0.1 + xgboost-jvm_${scala.binary.version} + 2.0.2 pom XGBoost JVM Package JVM Package for XGBoost @@ -189,6 +189,93 @@ + + release-cpu-only + + xgboost4j + xgboost4j-example + xgboost4j-spark + xgboost4j-flink + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.3.0 + + + empty-javadoc-jar + package + + jar + + + javadoc + ${basedir}/javadoc + + + + + + org.apache.maven.plugins + maven-release-plugin + 3.0.1 + + true + false + release + deploy + + + + org.apache.maven.plugins + maven-gpg-plugin + 3.1.0 + + + sign-artifacts + verify + + sign + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.3.0 + + + attach-sources + + jar-no-fork + + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.13 + true + + ossrh + https://oss.sonatype.org/ + false + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + + + assembly diff --git a/jvm-packages/xgboost4j-example/pom.xml b/jvm-packages/xgboost4j-example/pom.xml index f428f7f7f335..c77f046dcc50 100644 --- a/jvm-packages/xgboost4j-example/pom.xml +++ b/jvm-packages/xgboost4j-example/pom.xml @@ -5,12 +5,12 @@ 4.0.0 ml.dmlc - xgboost-jvm - 2.0.1 + xgboost-jvm_${scala.binary.version} + 2.0.2 xgboost4j-example xgboost4j-example_${scala.binary.version} - 2.0.1 + 2.0.2 jar diff --git a/jvm-packages/xgboost4j-flink/pom.xml b/jvm-packages/xgboost4j-flink/pom.xml index 1071bf669adc..a9a6644a0b63 100644 --- a/jvm-packages/xgboost4j-flink/pom.xml +++ b/jvm-packages/xgboost4j-flink/pom.xml @@ -5,13 +5,13 @@ 4.0.0 ml.dmlc - xgboost-jvm - 2.0.1 + xgboost-jvm_${scala.binary.version} + 2.0.2 xgboost4j-flink xgboost4j-flink_${scala.binary.version} - 2.0.1 + 2.0.2 2.2.0 diff --git a/jvm-packages/xgboost4j-gpu/pom.xml b/jvm-packages/xgboost4j-gpu/pom.xml index b9ff1590c1fc..056b1f7fa835 100644 --- a/jvm-packages/xgboost4j-gpu/pom.xml +++ b/jvm-packages/xgboost4j-gpu/pom.xml @@ -5,12 +5,12 @@ 4.0.0 ml.dmlc - xgboost-jvm - 2.0.1 + xgboost-jvm_${scala.binary.version} + 2.0.2 xgboost4j-gpu_${scala.binary.version} xgboost4j-gpu - 2.0.1 + 2.0.2 jar diff --git a/jvm-packages/xgboost4j-spark-gpu/pom.xml b/jvm-packages/xgboost4j-spark-gpu/pom.xml index bc0bf46dd252..9aa810c8cb77 100644 --- a/jvm-packages/xgboost4j-spark-gpu/pom.xml +++ b/jvm-packages/xgboost4j-spark-gpu/pom.xml @@ -5,8 +5,8 @@ 4.0.0 ml.dmlc - xgboost-jvm - 2.0.1 + xgboost-jvm_${scala.binary.version} + 2.0.2 xgboost4j-spark-gpu xgboost4j-spark-gpu_${scala.binary.version} diff --git a/jvm-packages/xgboost4j-spark/pom.xml b/jvm-packages/xgboost4j-spark/pom.xml index 92e0e93d5d0f..e5dc92399cd6 100644 --- a/jvm-packages/xgboost4j-spark/pom.xml +++ b/jvm-packages/xgboost4j-spark/pom.xml @@ -5,8 +5,8 @@ 4.0.0 ml.dmlc - xgboost-jvm - 2.0.1 + xgboost-jvm_${scala.binary.version} + 2.0.2 xgboost4j-spark xgboost4j-spark_${scala.binary.version} diff --git a/jvm-packages/xgboost4j/pom.xml b/jvm-packages/xgboost4j/pom.xml index 764c7f4cc90f..3da9a9ce68f2 100644 --- a/jvm-packages/xgboost4j/pom.xml +++ b/jvm-packages/xgboost4j/pom.xml @@ -5,12 +5,12 @@ 4.0.0 ml.dmlc - xgboost-jvm - 2.0.1 + xgboost-jvm_${scala.binary.version} + 2.0.2 xgboost4j xgboost4j_${scala.binary.version} - 2.0.1 + 2.0.2 jar diff --git a/python-package/pyproject.toml b/python-package/pyproject.toml index 88f8823c31d6..4434424882ba 100644 --- a/python-package/pyproject.toml +++ b/python-package/pyproject.toml @@ -7,7 +7,7 @@ build-backend = "packager.pep517" [project] name = "xgboost" -version = "2.0.1" +version = "2.0.2" authors = [ { name = "Hyunsu Cho", email = "chohyu01@cs.washington.edu" }, { name = "Jiaming Yuan", email = "jm.yuan@outlook.com" } diff --git a/python-package/xgboost/VERSION b/python-package/xgboost/VERSION index 38f77a65b301..e9307ca5751b 100644 --- a/python-package/xgboost/VERSION +++ b/python-package/xgboost/VERSION @@ -1 +1 @@ -2.0.1 +2.0.2 From 5a6701f54ae21f70cd8eb288f08ee054d2d7a96a Mon Sep 17 00:00:00 2001 From: Hyunsu Cho Date: Wed, 8 Nov 2023 00:16:57 -0800 Subject: [PATCH 3/4] Update instructions in prepare_jvm_release.py --- dev/prepare_jvm_release.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/dev/prepare_jvm_release.py b/dev/prepare_jvm_release.py index 0cf5796a2cf1..2b51d14c653f 100644 --- a/dev/prepare_jvm_release.py +++ b/dev/prepare_jvm_release.py @@ -210,14 +210,19 @@ 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("3. Now on a M1 Mac machine, run the following to build Scala 2.12 artifacts:") print(" 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:") + print(" GPG_TTY=$(tty) mvn deploy -Prelease-cpu-only,scala-2.13 -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.") if __name__ == "__main__": From 7d8818ee77db187d2ca92e4062e623fd119f2079 Mon Sep 17 00:00:00 2001 From: Hyunsu Cho Date: Wed, 8 Nov 2023 00:25:09 -0800 Subject: [PATCH 4/4] Fix formatting --- dev/prepare_jvm_release.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/dev/prepare_jvm_release.py b/dev/prepare_jvm_release.py index 2b51d14c653f..49dffdd0aa5f 100644 --- a/dev/prepare_jvm_release.py +++ b/dev/prepare_jvm_release.py @@ -210,7 +210,9 @@ 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 M1 Mac machine, run the following to build Scala 2.12 artifacts:") + print( + "3. Now on a M1 Mac machine, run the following to build Scala 2.12 artifacts:" + ) print(" GPG_TTY=$(tty) mvn deploy -Prelease -DskipTests") print( "4. Log into https://oss.sonatype.org/. On the left menu panel, click Staging " @@ -220,9 +222,12 @@ def main(): "named xgboost-jvm_2.12." ) print("5. Remove the Scala 2.12 artifacts and build Scala 2.13 artifacts:") + print(" rm -rf targets/") print(" GPG_TTY=$(tty) mvn deploy -Prelease-cpu-only,scala-2.13 -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.") + 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." + ) if __name__ == "__main__":