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