You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by ge...@apache.org on 2026/10/22 17:37:47 UTC
(spark) branch master updated: [SPARK-60478][INFRA] Fix tpcds-kit build failure with GCC 15 on Ubuntu 26.04 GitHub runners
This is an automated email from the ASF dual-hosted git repository.
gengliangwang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push:
new 668fdddb1485 [SPARK-60478][INFRA] Fix tpcds-kit build failure with GCC 15 on Ubuntu 26.04 GitHub runners
668fdddb1485 is described below
commit 668fdddb148513af2b35b68871ec905968ca1d89
Author: Gengliang Wang <ge...@apache.org>
AuthorDate: Thu Oct 22 10:37:34 2026 -0700
[SPARK-60478][INFRA] Fix tpcds-kit build failure with GCC 15 on Ubuntu 26.04 GitHub runners
### What changes were proposed in this pull request?
Build tpcds-kit with `-std=gnu89` (via `LINUX_CFLAGS="-O3 -std=gnu89"`) in the `Build tpcds-kit` step of both `build_and_test.yml` (the `Run TPC-DS queries with SF=1` job) and `benchmark.yml` (the `tpcds-1g-gen` job, which must be kept in sync).
### Why are the changes needed?
The `Run TPC-DS queries with SF=1` job has been failing intermittently in the `Build tpcds-kit` step. GitHub's `ubuntu-latest` label is gradually moving to Ubuntu 26.04 (starting October 19, 2026), which ships GCC 15. GCC 14+ turns implicit-int into an error, and GCC 15 defaults to C23, so the old tpcds-kit C code no longer compiles:
```
date.c:566:1: error: type of 'jDay' defaults to 'int' [-Wimplicit-int]
date.c:566:1: error: type of 'nDistribution' defaults to 'int' [-Wimplicit-int]
make: *** [<builtin>: date.o] Error 1
```
Examples: https://github.com/ForVic/spark/actions/runs/39739475067/job/119709170091, https://github.com/pratham76/spark/actions/runs/39796929675/job/119898127546 (both on image `ubuntu-26.04`). The job looks flaky because it only fails when it lands on a migrated runner and the TPC-DS data cache misses.
Setting the C standard explicitly works on both the old and the new compilers and doesn't depend on which runner image the job gets.
### Does this PR introduce _any_ user-facing change?
No, CI only.
### How was this patch tested?
Reproduced locally in Docker:
- `gcc:15` (GCC 15.3.0) with `make OS=LINUX`: fails with the error above.
- `gcc:15` with `make OS=LINUX LINUX_CFLAGS="-O3 -std=gnu89"`: builds `dsdgen` and `dsqgen`.
- The `call_center`, `customer`, `date_dim`, `item`, `web_sales` and `web_returns` data generated at SF=1 is byte-identical (same md5) between `gcc:13` with the default flags (what Ubuntu 24.04 runners use today) and `gcc:15` with `-std=gnu89`, so the expected TPC-DS query results don't change.
Changing `build_and_test.yml` also changes the TPC-DS data cache key, so this PR's CI rebuilds tpcds-kit with the new flags.
### Was this patch authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Claude Opus 5.5)
This pull request and its description were written by Isaac.
Closes #59714 from gengliangwang/SPARK-60478.
Authored-by: Gengliang Wang <ge...@apache.org>
Signed-off-by: Gengliang Wang <ge...@apache.org>
---
.github/workflows/benchmark.yml | 5 ++++-
.github/workflows/build_and_test.yml | 5 ++++-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml
index 57dee800da08..3140cb054e57 100644
--- a/.github/workflows/benchmark.yml
+++ b/.github/workflows/benchmark.yml
@@ -114,7 +114,10 @@ jobs:
path: ./tpcds-kit
- name: Build tpcds-kit
if: steps.cache-tpcds-sf-1.outputs.cache-hit != 'true'
- run: cd tpcds-kit/tools && make OS=LINUX
+ run: |
+ # tpcds-kit is old C code (implicit int, K&R declarations) that newer GCC
+ # versions (e.g. GCC 15 on Ubuntu 26.04) reject by default, so pin the C standard.
+ cd tpcds-kit/tools && make OS=LINUX LINUX_CFLAGS="-O3 -std=gnu89"
- name: Install Java ${{ inputs.jdk }}
if: steps.cache-tpcds-sf-1.outputs.cache-hit != 'true'
uses: actions/setup-java@v6
diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml
index 8389795ab307..ca9dc973b778 100644
--- a/.github/workflows/build_and_test.yml
+++ b/.github/workflows/build_and_test.yml
@@ -1062,7 +1062,10 @@ jobs:
path: ./tpcds-kit
- name: Build tpcds-kit
if: steps.cache-tpcds-sf-1.outputs.cache-hit != 'true'
- run: cd tpcds-kit/tools && make OS=LINUX
+ run: |
+ # tpcds-kit is old C code (implicit int, K&R declarations) that newer GCC
+ # versions (e.g. GCC 15 on Ubuntu 26.04) reject by default, so pin the C standard.
+ cd tpcds-kit/tools && make OS=LINUX LINUX_CFLAGS="-O3 -std=gnu89"
- name: Generate TPC-DS (SF=1) table data
if: steps.cache-tpcds-sf-1.outputs.cache-hit != 'true'
run: build/sbt "sql/Test/runMain org.apache.spark.sql.GenTPCDSData --dsdgenDir `pwd`/tpcds-kit/tools --location `pwd`/tpcds-sf-1 --scaleFactor 1 --numPartitions 1 --overwrite"
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org