From bf78755a8918fc2c7a1575b090513ee1e390a671 Mon Sep 17 00:00:00 2001 From: illiabarbashov-sketch Date: Tue, 28 Jul 2026 14:30:07 +0200 Subject: [PATCH 01/16] HIVE-29756: Beeline native installer added, native images compatibility tests added --- .github/workflows/beeline-release.yml | 78 +++++ beeline/pom.xml | 87 ++++++ ...stBeelineNativeInstallerCompatibility.java | 278 ++++++++++++++++++ 3 files changed, 443 insertions(+) create mode 100644 .github/workflows/beeline-release.yml create mode 100644 itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestBeelineNativeInstallerCompatibility.java diff --git a/.github/workflows/beeline-release.yml b/.github/workflows/beeline-release.yml new file mode 100644 index 000000000000..294b24403b9d --- /dev/null +++ b/.github/workflows/beeline-release.yml @@ -0,0 +1,78 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Beeline Native Installer Release + +on: + workflow_dispatch: + inputs: + release_tag: + description: 'GitHub release tag to upload artifacts to. Leave empty to skip release upload.' + required: false + default: '' + type: string + +permissions: + contents: write + +jobs: + build: + strategy: + fail-fast: false + matrix: + include: + - os: macos-13 + label: macos-x64 + artifact_glob: beeline/target/installer/x64/*.dmg + - os: macos-latest + label: macos-arm64 + artifact_glob: beeline/target/installer/arm64/*.dmg + - os: ubuntu-latest + label: linux-x64 + artifact_glob: beeline/target/installer/x64/*.deb + - os: windows-latest + label: windows-x64 + artifact_glob: beeline/target/installer/x64/*.exe + + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + + - name: Set up JDK 21 + uses: actions/setup-java@v5 + with: + java-version: '21' + distribution: temurin + cache: maven + + - name: Build Beeline installer + run: mvn package -pl beeline -am -DskipTests -P native-installer + + - name: Upload installer artifact + uses: actions/upload-artifact@v4 + with: + name: beeline-${{ matrix.label }} + path: ${{ matrix.artifact_glob }} + if-no-files-found: error + + - name: Upload installer to GitHub release + if: ${{ inputs.release_tag != '' }} + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ inputs.release_tag }} + files: ${{ matrix.artifact_glob }} + allow_updates: true + fail_on_unmatched_files: true diff --git a/beeline/pom.xml b/beeline/pom.xml index 4806fb7ede50..cdba89b7fd7d 100644 --- a/beeline/pom.xml +++ b/beeline/pom.xml @@ -242,6 +242,93 @@ + + + native-installer + + + 4.3.0 + + x64 + + + + + org.apache.maven.plugins + maven-antrun-plugin + + + jpackage + package + + run + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + macos-arm64-installer + + + Mac OS X + aarch64 + + + + arm64 + + sources diff --git a/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestBeelineNativeInstallerCompatibility.java b/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestBeelineNativeInstallerCompatibility.java new file mode 100644 index 000000000000..c3ab845ed395 --- /dev/null +++ b/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestBeelineNativeInstallerCompatibility.java @@ -0,0 +1,278 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hive.minikdc; + +import java.io.BufferedReader; +import java.io.File; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hive.jdbc.miniHS2.MiniHS2; +import org.hadoop.hive.jdbc.SSLTestUtils; +import org.junit.AfterClass; +import org.junit.Assume; +import org.junit.BeforeClass; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class TestBeelineNativeInstallerCompatibility { + + private static final long PROCESS_TIMEOUT_SECONDS = 60; + + private static String beelineNativeBinary; + private static MiniHiveKdc miniHiveKdc; + private static MiniHS2 hs2Kerb; + private static MiniHS2 hs2Ssl; + private static String krb5ConfPath; + private static Path krb5CacheFilePath; + + @BeforeClass + public static void beforeTest() throws Exception { + beelineNativeBinary = System.getProperty("beeline.native.binary"); + Assume.assumeNotNull(beelineNativeBinary); + Path beelineBinaryPath = Paths.get(beelineNativeBinary); + Assume.assumeTrue(Files.isRegularFile(beelineBinaryPath)); + Assume.assumeTrue(Files.isExecutable(beelineBinaryPath)); + + miniHiveKdc = new MiniHiveKdc(); + krb5ConfPath = miniHiveKdc.miniKdc.getKrb5conf().getAbsolutePath(); + + Map kerbConfOverlay = new HashMap<>(); + kerbConfOverlay.put(HiveConf.ConfVars.HIVE_SERVER2_TRANSPORT_MODE.varname, MiniHS2.HS2_ALL_MODE); + kerbConfOverlay.put(HiveConf.ConfVars.HIVE_SCHEDULED_QUERIES_EXECUTOR_ENABLED.varname, "false"); + kerbConfOverlay.put(HiveConf.ConfVars.HIVE_QUERY_HISTORY_ENABLED.varname, "false"); + // Avoid the ZooKeeper-backed lock manager (no ZK running in this test); + // otherwise every query hangs 30s trying to reach connectString ":2181". + kerbConfOverlay.put(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY.varname, "false"); + hs2Kerb = MiniHiveKdc.getMiniHS2WithKerb(miniHiveKdc, new HiveConf()); + hs2Kerb.start(kerbConfOverlay); + + // Start a second HS2 instance with SSL enabled, but no Kerberos authentication. + // This is to test that beeline can connect to HS2 with SSL and TLS enabled + HiveConf sslHiveConf = new HiveConf(); + sslHiveConf.set("hadoop.security.authentication", "simple"); + sslHiveConf.setVar(HiveConf.ConfVars.HIVE_SERVER2_KERBEROS_PRINCIPAL, + miniHiveKdc.getFullyQualifiedServicePrincipal(MiniHiveKdc.HIVE_SERVICE_PRINCIPAL)); + sslHiveConf.setVar(HiveConf.ConfVars.HIVE_SERVER2_KERBEROS_KEYTAB, + miniHiveKdc.getKeyTabFile(miniHiveKdc.getServicePrincipalForUser(MiniHiveKdc.HIVE_SERVICE_PRINCIPAL))); + Map sslConfOverlay = new HashMap<>(); + SSLTestUtils.setBinaryConfOverlay(sslConfOverlay); + SSLTestUtils.setSslConfOverlay(sslConfOverlay); + sslConfOverlay.put(HiveConf.ConfVars.HIVE_SCHEDULED_QUERIES_EXECUTOR_ENABLED.varname, "false"); + sslConfOverlay.put(HiveConf.ConfVars.HIVE_QUERY_HISTORY_ENABLED.varname, "false"); + sslConfOverlay.put(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY.varname, "false"); + hs2Ssl = new MiniHS2.Builder().withConf(sslHiveConf).withAuthenticationType("NONE").build(); + hs2Ssl.start(sslConfOverlay); + + Assume.assumeTrue(isCommandAvailable("kinit")); + Path cacheDir = Paths.get("target", "beeline-native-installer-compat"); + Files.createDirectories(cacheDir); + krb5CacheFilePath = cacheDir.resolve("krb5cc_beeline_test"); + + String userPrincipal = miniHiveKdc.getFullyQualifiedUserPrincipal(MiniHiveKdc.HIVE_TEST_USER_1); + BeelineResult kinitResult = runCommand(List.of("kinit", "-kt", + miniHiveKdc.getKeyTabFile(MiniHiveKdc.HIVE_TEST_USER_1), userPrincipal), kerberosEnv()); + Assume.assumeTrue("Skipping test because kinit failed: " + kinitResult.output, kinitResult.exitCode == 0); + } + + @AfterClass + public static void afterTest() throws Exception { + Exception firstException = null; + if (hs2Kerb != null) { + try { + hs2Kerb.stop(); + } catch (Exception e) { + firstException = e; + } + } + if (hs2Ssl != null) { + try { + hs2Ssl.stop(); + } catch (Exception e) { + if (firstException == null) { + firstException = e; + } else { + firstException.addSuppressed(e); + } + } + } + if (miniHiveKdc != null) { + try { + miniHiveKdc.shutDown(); + } catch (Exception e) { + if (firstException == null) { + firstException = e; + } else { + firstException.addSuppressed(e); + } + } + } + if (krb5CacheFilePath != null) { + Files.deleteIfExists(krb5CacheFilePath); + } + if (firstException != null) { + throw firstException; + } + } + + @Test + public void testKerberosAuthBinary() throws Exception { + BeelineResult result = runBeeline(List.of("-u", hs2Kerb.getJdbcURL(), "-n", MiniHiveKdc.HIVE_TEST_USER_1, + "-e", "select 'KERBEROS_BINARY_OK'")); + assertBeelineSuccess(result, "KERBEROS_BINARY_OK"); + } + + @Test + public void testSslTlsBinary() throws Exception { + String sslUrl = hs2Ssl.getJdbcURL("default", SSLTestUtils.SSL_CONN_PARAMS); + BeelineResult result = runBeelineSsl(List.of("-u", sslUrl, "-n", "ssl_user", "-p", "ssl_password", + "-e", "select 'SSL_BINARY_OK'")); + assertBeelineSuccess(result, "SSL_BINARY_OK"); + } + + @Test + public void testHttpTransport() throws Exception { + BeelineResult result = runBeeline(List.of("-u", hs2Kerb.getHttpJdbcURL(), "-n", MiniHiveKdc.HIVE_TEST_USER_1, + "-e", "select 'HTTP_TRANSPORT_OK'")); + assertBeelineSuccess(result, "HTTP_TRANSPORT_OK"); + } + + @Test + public void testScriptExecutionWithFile() throws Exception { + Path scriptPath = Paths.get("target", "beeline-native-script.sql"); + Files.createDirectories(scriptPath.getParent()); + Files.writeString(scriptPath, "select 'SCRIPT_EXECUTION_OK';\n", StandardCharsets.UTF_8); + BeelineResult result = runBeeline(List.of("-u", hs2Kerb.getJdbcURL(), "-n", MiniHiveKdc.HIVE_TEST_USER_1, + "-f", scriptPath.toAbsolutePath().toString())); + assertBeelineSuccess(result, "SCRIPT_EXECUTION_OK"); + } + + @Test + public void testHiveConfAndHiveVarExpansion() throws Exception { + BeelineResult result = runBeeline(List.of("-u", hs2Kerb.getJdbcURL(), "-n", MiniHiveKdc.HIVE_TEST_USER_1, + "--hiveconf", "beeline.native.conf.value=configured", + "--hivevar", "beelineNativeVar=configuredVar", + "-e", "set beeline.native.conf.value;select '${hivevar:beelineNativeVar}'")); + assertBeelineSuccess(result, "beeline.native.conf.value=configured", "configuredVar"); + } + + private static void assertBeelineSuccess(BeelineResult result, String... expectedSnippets) { + assertEquals("Unexpected beeline exit code. Output:\n" + result.output, 0, result.exitCode); + for (String expectedSnippet : expectedSnippets) { + assertTrue("Did not find expected output snippet '" + expectedSnippet + "'. Output:\n" + result.output, + result.output.contains(expectedSnippet)); + } + } + + private static BeelineResult runBeeline(List args) throws Exception { + List command = new ArrayList<>(); + command.add(beelineNativeBinary); + command.addAll(args); + return runCommand(command, kerberosEnv()); + } + + // SSL test uses NONE authentication, so no Kerberos credentials should be + // in the environment — only TERM=dumb to prevent jline from failing without a tty. + private static BeelineResult runBeelineSsl(List args) throws Exception { + List command = new ArrayList<>(); + command.add(beelineNativeBinary); + command.addAll(args); + return runCommand(command, plainEnv()); + } + + private static BeelineResult runCommand(List command, Map env) throws Exception { + ProcessBuilder processBuilder = new ProcessBuilder(command); + processBuilder.redirectErrorStream(true); + processBuilder.environment().putAll(env); + processBuilder.directory(new File(".")); + Process process = processBuilder.start(); + StringBuilder output = new StringBuilder(); + + Thread outputReader = new Thread(() -> { + try (BufferedReader bufferedReader = + new BufferedReader(new InputStreamReader(process.getInputStream(), StandardCharsets.UTF_8))) { + String line; + while ((line = bufferedReader.readLine()) != null) { + output.append(line).append(System.lineSeparator()); + } + } catch (Exception e) { + output.append(System.lineSeparator()).append("Error while reading process output: ").append(e.getMessage()); + } + }); + outputReader.start(); + + boolean finished = process.waitFor(PROCESS_TIMEOUT_SECONDS, TimeUnit.SECONDS); + if (!finished) { + process.destroyForcibly(); + finished = process.waitFor(10, TimeUnit.SECONDS); + } + outputReader.join(TimeUnit.SECONDS.toMillis(5)); + int exitCode = finished ? process.exitValue() : -1; + if (!finished) { + output.append(System.lineSeparator()).append("Process timed out after ") + .append(PROCESS_TIMEOUT_SECONDS).append(" seconds"); + } + return new BeelineResult(exitCode, output.toString()); + } + + private static boolean isCommandAvailable(String command) throws Exception { + BeelineResult result = runCommand(List.of("sh", "-c", "command -v \"$1\"", "--", command), new HashMap<>()); + return result.exitCode == 0; + } + + private static Map kerberosEnv() { + Map env = new HashMap<>(); + env.put("KRB5_CONFIG", krb5ConfPath); + env.put("KRB5CCNAME", "FILE:" + krb5CacheFilePath.toAbsolutePath()); + env.put("_JAVA_OPTIONS", "-Djava.security.krb5.conf=" + krb5ConfPath); + // beeline runs under a ProcessBuilder with no controlling tty; force jline + // to pick a dumb terminal. Without this, jline scans provider SPIs and + // throws IllegalStateException before beeline can execute the -e query. + env.put("TERM", "dumb"); + return env; + } + + private static Map plainEnv() { + Map env = new HashMap<>(); + // Force jline to use a dumb terminal (no controlling tty under ProcessBuilder). + env.put("TERM", "dumb"); + return env; + } + + private static final class BeelineResult { + private final int exitCode; + private final String output; + + private BeelineResult(int exitCode, String output) { + this.exitCode = exitCode; + this.output = output; + } + } +} From df5a3f83c1f3c39ae25f05a920630e2ea6bbb230 Mon Sep 17 00:00:00 2001 From: illiabarbashov-sketch Date: Tue, 28 Jul 2026 16:09:53 +0200 Subject: [PATCH 02/16] HIVE-29666: pom xml formatted --- beeline/pom.xml | 61 +++++++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/beeline/pom.xml b/beeline/pom.xml index cdba89b7fd7d..72f262917f6b 100644 --- a/beeline/pom.xml +++ b/beeline/pom.xml @@ -68,10 +68,10 @@ + Since the compile-time hive-jdbc dependency contains Utils.java, + which directly imports HiveSQLException from hive-service, + hive-service is also required at runtime and should therefore be declared as a compile-time dependency. + --> org.apache.hive hive-service ${project.version} @@ -147,7 +147,7 @@ + --> org.apache.hive hive-exec @@ -242,22 +242,22 @@ - + installer.arch defaults to x64 and is overridden to arm64 by the + macos-arm64 profile below when running on Apple Silicon. + --> native-installer @@ -283,16 +283,24 @@ - - - - + + + + + + + + - - - + + + + + + - + + @@ -262,9 +263,10 @@ native-installer - 4.3.0 + ${jpackage.plugin.version} x64 + @@ -301,6 +303,7 @@ + + + windows-installer + + + windows + + + + --win-console + + sources From 8eaaad5d7495ab7d5fac0f7abc26ff158c4d7931 Mon Sep 17 00:00:00 2001 From: illiabarbashov-sketch Date: Mon, 3 Aug 2026 14:49:42 +0200 Subject: [PATCH 08/16] HIVE-29666: msi installer added --- .github/workflows/beeline-release.yml | 2 +- beeline/pom.xml | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/beeline-release.yml b/.github/workflows/beeline-release.yml index fe18fe6e8b32..8dba5291b4ee 100644 --- a/.github/workflows/beeline-release.yml +++ b/.github/workflows/beeline-release.yml @@ -45,7 +45,7 @@ jobs: artifact_glob: beeline/target/installer/x64/*.deb - os: windows-latest label: windows-x64 - artifact_glob: beeline/target/installer/x64/*.exe + artifact_glob: beeline/target/installer/x64/*.msi runs-on: ${{ matrix.os }} # Bounds total job time (queue + execution). Notably guards against macos-13 diff --git a/beeline/pom.xml b/beeline/pom.xml index 5f13402621b3..a06091ddc37b 100644 --- a/beeline/pom.xml +++ b/beeline/pom.xml @@ -340,7 +340,14 @@ windows-installer @@ -350,7 +357,7 @@ - --win-console + --win-console --type msi From 9b83954e2ce8de4899a70acde534e2e042943bd8 Mon Sep 17 00:00:00 2001 From: illiabarbashov-sketch Date: Mon, 3 Aug 2026 14:53:53 +0200 Subject: [PATCH 09/16] HIVE-29666: msi installer added --- beeline/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beeline/pom.xml b/beeline/pom.xml index a06091ddc37b..883fd9e98584 100644 --- a/beeline/pom.xml +++ b/beeline/pom.xml @@ -347,7 +347,7 @@ bundle). MSI is the format enterprise deployment tooling (Group Policy, Intune, SCCM, Ansible win_package) expects, and its WiX customization surface is easier to extend - later (e.g. a PATH environment fragment via --resource-dir). + later (e.g. a PATH environment fragment via resource-dir). --> windows-installer From e0c102534d0969a4d8516fa3f3b1e458b814ceb8 Mon Sep 17 00:00:00 2001 From: illiabarbashov-sketch Date: Tue, 4 Aug 2026 11:37:05 +0200 Subject: [PATCH 10/16] HIVE-29666: windows installer improvements --- beeline/pom.xml | 57 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 49 insertions(+), 8 deletions(-) diff --git a/beeline/pom.xml b/beeline/pom.xml index 883fd9e98584..8a640d09977b 100644 --- a/beeline/pom.xml +++ b/beeline/pom.xml @@ -341,13 +341,44 @@ windows-installer @@ -357,7 +388,17 @@ - --win-console --type msi + + --win-console + --type msi + --win-dir-chooser + --win-menu + --win-menu-group "Apache Hive" + --win-shortcut-prompt + --win-upgrade-uuid EAE2EABD-5ACF-4E3D-9099-1FB567055C31 + --win-help-url https://hive.apache.org/ + --license-file ${project.basedir}/../LICENSE + From e4d4dd2baaab2d28ef3aef9bc001a2f3fe561e89 Mon Sep 17 00:00:00 2001 From: illiabarbashov-sketch Date: Tue, 4 Aug 2026 11:57:29 +0200 Subject: [PATCH 11/16] HIVE-29666: windows installer improvements --- beeline/pom.xml | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/beeline/pom.xml b/beeline/pom.xml index 8a640d09977b..6dfce67a762e 100644 --- a/beeline/pom.xml +++ b/beeline/pom.xml @@ -362,12 +362,6 @@ win-shortcut-prompt Adds checkboxes on the last wizard page so users can opt in / out of Start menu and desktop shortcuts. - win-upgrade-uuid Stable per-product GUID. Required for MSI upgrade - semantics: installing 4.3.1 over 4.3.0 with the - same UUID replaces the old version in place. If - the UUID changes across releases, MSI treats - versions as unrelated products and both install - side-by-side. Generated once; DO NOT modify. win-help-url Adds a "Help" link to the Add/Remove Programs entry so users can reach hive.apache.org. license-file Shows the ASL 2.0 as a license-agreement wizard @@ -388,17 +382,7 @@ - - --win-console - --type msi - --win-dir-chooser - --win-menu - --win-menu-group "Apache Hive" - --win-shortcut-prompt - --win-upgrade-uuid EAE2EABD-5ACF-4E3D-9099-1FB567055C31 - --win-help-url https://hive.apache.org/ - --license-file ${project.basedir}/../LICENSE - + --win-console --type msi --win-dir-chooser --win-menu --win-menu-group "Apache Hive" --win-shortcut-prompt --win-help-url https://hive.apache.org/ --license-file ${project.basedir}/../LICENSE From bba56066384c489ab4df40940323eac06fbdfd31 Mon Sep 17 00:00:00 2001 From: illiabarbashov-sketch Date: Tue, 4 Aug 2026 12:24:51 +0200 Subject: [PATCH 12/16] HIVE-29666: windows installer improvements --- beeline/pom.xml | 10 +- beeline/src/main/jpackage/windows/main.wxs | 232 +++++++++++++++++++++ 2 files changed, 241 insertions(+), 1 deletion(-) create mode 100644 beeline/src/main/jpackage/windows/main.wxs diff --git a/beeline/pom.xml b/beeline/pom.xml index 6dfce67a762e..f3278f1b8714 100644 --- a/beeline/pom.xml +++ b/beeline/pom.xml @@ -366,6 +366,14 @@ entry so users can reach hive.apache.org. license-file Shows the ASL 2.0 as a license-agreement wizard page (jpackage auto-converts to RTF for the MSI). + resource-dir Points at src/main/jpackage/windows/. jpackage + picks up main.wxs from that directory and uses it + in place of its own built-in WiX template. Our + override adds a public ADD_TO_PATH property + (default 1) and a Component whose Environment + element appends INSTALLDIR to the system PATH. + Users can opt out at silent install time with + msiexec /i beeline-x.y.z.msi /qn ADD_TO_PATH=0 Deliberately NOT set: win-shortcut Desktop shortcut on by default is pushy for a @@ -382,7 +390,7 @@ - --win-console --type msi --win-dir-chooser --win-menu --win-menu-group "Apache Hive" --win-shortcut-prompt --win-help-url https://hive.apache.org/ --license-file ${project.basedir}/../LICENSE + --win-console --type msi --win-dir-chooser --win-menu --win-menu-group "Apache Hive" --win-shortcut-prompt --win-help-url https://hive.apache.org/ --license-file ${project.basedir}/../LICENSE --resource-dir ${project.basedir}/src/main/jpackage/windows diff --git a/beeline/src/main/jpackage/windows/main.wxs b/beeline/src/main/jpackage/windows/main.wxs new file mode 100644 index 000000000000..74781e8edbe7 --- /dev/null +++ b/beeline/src/main/jpackage/windows/main.wxs @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ADD_TO_PATH="1" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Not Installed + Not Installed + Not Installed + Not Installed + + Not Installed + + + Not Installed + + + Not Installed + + + + JP_UPGRADABLE_FOUND + + + JP_DOWNGRADABLE_FOUND + + + + + + + + + + + From b54944c879cb0498a8bd11dede9c86fd66e1e68f Mon Sep 17 00:00:00 2001 From: illiabarbashov-sketch Date: Fri, 7 Aug 2026 12:08:12 +0200 Subject: [PATCH 13/16] HIVE-29666: address comments --- beeline/pom.xml | 45 --------------------------------------------- 1 file changed, 45 deletions(-) diff --git a/beeline/pom.xml b/beeline/pom.xml index f3278f1b8714..1a83d302b919 100644 --- a/beeline/pom.xml +++ b/beeline/pom.xml @@ -245,7 +245,6 @@ native-installer @@ -266,7 +262,6 @@ ${jpackage.plugin.version} x64 - @@ -341,46 +336,6 @@ windows-installer From 0c0db4a9989396f0b4d8418b9c984687a3e4c2a0 Mon Sep 17 00:00:00 2001 From: illiabarbashov-sketch Date: Fri, 7 Aug 2026 15:58:31 +0200 Subject: [PATCH 14/16] HIVE-29666: address comments --- .github/workflows/beeline-release.yml | 8 +++--- beeline/pom.xml | 26 ++++++++++++++----- ...stBeelineNativeInstallerCompatibility.java | 10 +------ 3 files changed, 24 insertions(+), 20 deletions(-) diff --git a/.github/workflows/beeline-release.yml b/.github/workflows/beeline-release.yml index 8dba5291b4ee..fbe213d6b1a5 100644 --- a/.github/workflows/beeline-release.yml +++ b/.github/workflows/beeline-release.yml @@ -36,16 +36,16 @@ jobs: include: - os: macos-13 label: macos-x64 - artifact_glob: beeline/target/installer/x64/*.dmg + artifact_glob: beeline/target/apache-hive-beeline-*/x64/*.dmg - os: macos-latest label: macos-arm64 - artifact_glob: beeline/target/installer/arm64/*.dmg + artifact_glob: beeline/target/apache-hive-beeline-*/arm64/*.dmg - os: ubuntu-latest label: linux-x64 - artifact_glob: beeline/target/installer/x64/*.deb + artifact_glob: beeline/target/apache-hive-beeline-*/x64/*.deb - os: windows-latest label: windows-x64 - artifact_glob: beeline/target/installer/x64/*.msi + artifact_glob: beeline/target/apache-hive-beeline-*/x64/*.msi runs-on: ${{ matrix.os }} # Bounds total job time (queue + execution). Notably guards against macos-13 diff --git a/beeline/pom.xml b/beeline/pom.xml index 1a83d302b919..b64c529a6788 100644 --- a/beeline/pom.xml +++ b/beeline/pom.xml @@ -249,11 +249,12 @@ Usage: mvn package -pl beeline -am -DskipTests -P native-installer - Output (arch sub-directory so x64 and arm64 artifacts coexist): - beeline/target/installer/x64/beeline-4.3.0.dmg (Intel Mac) - beeline/target/installer/arm64/beeline-4.3.0.dmg (Apple Silicon — macos-arm64 auto-activates) - beeline/target/installer/x64/beeline-4.3.0.exe (Windows) - beeline/target/installer/x64/beeline_4.3.0_amd64.deb (Linux) + Output (versioned parent dir mirrors packaging's apache-hive-beeline-X.Y.Z + tarball naming; arch sub-directory so x64 and arm64 artifacts coexist): + beeline/target/apache-hive-beeline-4.3.0/x64/beeline-4.3.0.dmg (Intel Mac) + beeline/target/apache-hive-beeline-4.3.0/arm64/beeline-4.3.0.dmg (Apple Silicon — macos-arm64 auto-activates) + beeline/target/apache-hive-beeline-4.3.0/x64/beeline-4.3.0.exe (Windows) + beeline/target/apache-hive-beeline-4.3.0/x64/beeline_4.3.0_amd64.deb (Linux) --> native-installer @@ -277,7 +278,18 @@ - + + + @@ -297,7 +309,7 @@ - + native-installer @@ -278,16 +273,6 @@ - From 1a42fca2dcc14cf3f0f12639d42af82fd817b04e Mon Sep 17 00:00:00 2001 From: illiabarbashov-sketch Date: Fri, 7 Aug 2026 16:10:52 +0200 Subject: [PATCH 16/16] HIVE-29666: address comments --- beeline/pom.xml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/beeline/pom.xml b/beeline/pom.xml index 23eacc900e5f..bf470efe4b6a 100644 --- a/beeline/pom.xml +++ b/beeline/pom.xml @@ -245,18 +245,14 @@ native-installer - ${jpackage.plugin.version} - x64 @@ -315,9 +311,6 @@ macos-arm64-installer