diff --git a/.github/workflows/test-lang-c++-ARM.yml b/.github/workflows/test-lang-c++-ARM.yml
new file mode 100644
index 00000000000..47b7fc0d284
--- /dev/null
+++ b/.github/workflows/test-lang-c++-ARM.yml
@@ -0,0 +1,52 @@
+# 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
+#
+# https://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: Test C++ on ARM
+on:
+ workflow_dispatch:
+ push:
+ branches: [ main ]
+ pull_request:
+ branches: [ main ]
+ paths:
+ - '.github/workflows/test-lang-c\+\+.yml'
+ - 'lang/c\+\+/**'
+
+defaults:
+ run:
+ working-directory: lang/c++
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ arm64:
+ name: C++ on Linux ARM64
+ runs-on: ["self-hosted", "asf-arm"]
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Install dependencies
+ run: |
+ sudo apt-get update -q
+ sudo apt-get install -q -y gcc g++ libboost-all-dev cmake
+
+ - name: Build
+ run: |
+ set -x
+ ./build.sh clean test
diff --git a/.github/workflows/test-lang-c++.yml b/.github/workflows/test-lang-c++.yml
index fa07b8c76ab..5747a0da361 100644
--- a/.github/workflows/test-lang-c++.yml
+++ b/.github/workflows/test-lang-c++.yml
@@ -55,21 +55,3 @@ jobs:
mkdir -p build
cd build
cmake -G "Unix Makefiles" -D CMAKE_BUILD_TYPE=Release ..
-
- arm64:
- name: C++ on Linux ARM64
- runs-on: ["self-hosted", "asf-arm"]
-
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Install dependencies
- run: |
- sudo apt-get update -q
- sudo apt-get install -q -y gcc g++ libboost-all-dev cmake
-
- - name: Build
- run: |
- set -x
- ./build.sh clean test
diff --git a/.github/workflows/test-lang-c-ARM.yml b/.github/workflows/test-lang-c-ARM.yml
new file mode 100644
index 00000000000..9ea46d9a668
--- /dev/null
+++ b/.github/workflows/test-lang-c-ARM.yml
@@ -0,0 +1,52 @@
+# 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
+#
+# https://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: Test C on ARM
+on:
+ workflow_dispatch:
+ push:
+ branches: [ main ]
+ pull_request:
+ branches: [ main ]
+ paths:
+ - .github/workflows/test-lang-c.yml
+ - lang/c/**
+
+defaults:
+ run:
+ working-directory: lang/c
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ arm64:
+ name: C on Linux ARM64
+ runs-on: ["self-hosted", "asf-arm"]
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Install dependencies
+ run: |
+ sudo apt-get update -q
+ sudo apt-get install -q -y cmake liblzma-dev libsnappy-dev libjansson-dev zlib1g-dev pkg-config
+
+ - name: Build
+ run: |
+ set -x
+ ./build.sh clean test
diff --git a/.github/workflows/test-lang-c.yml b/.github/workflows/test-lang-c.yml
index 52fd902c073..a01e8b8ebf1 100644
--- a/.github/workflows/test-lang-c.yml
+++ b/.github/workflows/test-lang-c.yml
@@ -149,21 +149,3 @@ jobs:
- name: Run Interop Tests
run: ./build.sh interop-data-test
-
- arm64:
- name: C on Linux ARM64
- runs-on: ["self-hosted", "asf-arm"]
-
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Install dependencies
- run: |
- sudo apt-get update -q
- sudo apt-get install -q -y cmake liblzma-dev libsnappy-dev libjansson-dev zlib1g-dev pkg-config
-
- - name: Build
- run: |
- set -x
- ./build.sh clean test
diff --git a/.github/workflows/test-lang-csharp-ARM.yml b/.github/workflows/test-lang-csharp-ARM.yml
new file mode 100644
index 00000000000..b846072289e
--- /dev/null
+++ b/.github/workflows/test-lang-csharp-ARM.yml
@@ -0,0 +1,160 @@
+# 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
+#
+# https://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: 'Test C#'
+on:
+ workflow_dispatch:
+ push:
+ branches: [ main ]
+ pull_request:
+ branches: [ main ]
+ paths:
+ - .github/workflows/test-lang-csharp.yml
+ - lang/csharp/**
+
+defaults:
+ run:
+ working-directory: lang/csharp
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Add libzstd
+ shell: bash
+ run: sudo apt-get install -y libzstd-dev
+
+ - name: Install .NET SDKs
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: |
+ 3.1.x
+ 5.0.x
+ 6.0.x
+ 7.0.x
+ 8.0.x
+
+ - uses: actions/cache@v4
+ with:
+ path: ~/.nuget/packages
+ key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
+ restore-keys: |
+ ${{ runner.os }}-nuget-
+
+ - name: Lint
+ run: ./build.sh lint
+
+ - name: Test
+ run: ./build.sh test
+
+ interop:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Add libzstd
+ shell: bash
+ run: sudo apt-get install -y libzstd-dev
+
+ - name: Install .NET SDKs
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: |
+ 3.1.x
+ 5.0.x
+ 6.0.x
+ 7.0.x
+ 8.0.x
+
+ - name: Cache Local Maven Repository
+ uses: actions/cache@v4
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-maven-
+
+ - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+ uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93 # v4.0.0
+ with:
+ distribution: 'temurin'
+ java-version: |
+ 8
+ 11
+ 17
+ 21
+
+ - name: 'Setup Maven 3.9.6'
+ uses: stCarolas/setup-maven@07fbbe97d97ef44336b7382563d66743297e442f # v4.5
+ with:
+ maven-version: 3.9.6
+
+ - name: Install Java Avro for Interop Test
+ working-directory: .
+ run: mvn -B install -PskipQuality
+
+ - name: Create Interop Data Directory
+ working-directory: .
+ run: mkdir -p build/interop/data
+
+ - name: Generate Interop Resources
+ working-directory: lang/java/avro
+ run: mvn -B -P interop-data-generate generate-resources
+
+ - name: Generate Interop Data
+ run: ./build.sh interop-data-generate
+
+ - name: Run Interop Tests
+ run: ./build.sh interop-data-test
+
+ arm64:
+ name: C# on Linux ARM64
+ runs-on: ["self-hosted", "asf-arm"]
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Cache Nuget
+ uses: actions/cache@v4
+ with:
+ path: ~/.nuget/packages
+ key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
+ restore-keys: |
+ ${{ runner.os }}-nuget-
+
+ - name: Install dependencies
+ run: |
+ sudo apt-get update -q
+ sudo apt-get install -q -y wget libzstd-dev libicu-dev
+ wget https://dot.net/v1/dotnet-install.sh
+ bash ./dotnet-install.sh --channel "3.1" --install-dir "$HOME/.dotnet" # 3.1
+ bash ./dotnet-install.sh --channel "5.0" --install-dir "$HOME/.dotnet" # 5.0
+ bash ./dotnet-install.sh --channel "6.0" --install-dir "$HOME/.dotnet" # 6.0
+ bash ./dotnet-install.sh --channel "7.0" --install-dir "$HOME/.dotnet" # 7.0
+ bash ./dotnet-install.sh --channel "8.0" --install-dir "$HOME/.dotnet" # 8.0
+
+ - name: Build
+ run: |
+ set -x
+ export PATH=$HOME/.dotnet:$PATH
+ dotnet --list-sdks
+ ./build.sh clean test
diff --git a/.github/workflows/test-lang-csharp.yml b/.github/workflows/test-lang-csharp.yml
index b846072289e..e4c9f679687 100644
--- a/.github/workflows/test-lang-csharp.yml
+++ b/.github/workflows/test-lang-csharp.yml
@@ -124,37 +124,3 @@ jobs:
- name: Run Interop Tests
run: ./build.sh interop-data-test
-
- arm64:
- name: C# on Linux ARM64
- runs-on: ["self-hosted", "asf-arm"]
-
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Cache Nuget
- uses: actions/cache@v4
- with:
- path: ~/.nuget/packages
- key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
- restore-keys: |
- ${{ runner.os }}-nuget-
-
- - name: Install dependencies
- run: |
- sudo apt-get update -q
- sudo apt-get install -q -y wget libzstd-dev libicu-dev
- wget https://dot.net/v1/dotnet-install.sh
- bash ./dotnet-install.sh --channel "3.1" --install-dir "$HOME/.dotnet" # 3.1
- bash ./dotnet-install.sh --channel "5.0" --install-dir "$HOME/.dotnet" # 5.0
- bash ./dotnet-install.sh --channel "6.0" --install-dir "$HOME/.dotnet" # 6.0
- bash ./dotnet-install.sh --channel "7.0" --install-dir "$HOME/.dotnet" # 7.0
- bash ./dotnet-install.sh --channel "8.0" --install-dir "$HOME/.dotnet" # 8.0
-
- - name: Build
- run: |
- set -x
- export PATH=$HOME/.dotnet:$PATH
- dotnet --list-sdks
- ./build.sh clean test
diff --git a/.github/workflows/test-lang-java-ARM.yml b/.github/workflows/test-lang-java-ARM.yml
new file mode 100644
index 00000000000..217eb4dbe9b
--- /dev/null
+++ b/.github/workflows/test-lang-java-ARM.yml
@@ -0,0 +1,79 @@
+# 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
+#
+# https://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: 'Test Java on ARM'
+on:
+ workflow_dispatch:
+ push:
+ branches: [ main ]
+ pull_request:
+ branches: [ main ]
+ paths:
+ - .github/workflows/test-lang-java.yml
+ - lang/java/**
+ - pom.xml
+
+defaults:
+ run:
+ working-directory: lang/java
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ arm64:
+ name: Java on Linux ARM64
+ runs-on: ["self-hosted", "asf-arm"]
+
+ steps:
+ - name: 'Checkout sourcecode'
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+
+ - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+ uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93 # v4.0.0
+ with:
+ distribution: 'temurin'
+ java-version: |
+ 8
+ 11
+ 17
+ 21
+
+ - name: 'Cache Local Maven Repository'
+ uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-maven-
+
+ - name: 'Setup Maven 3.9.6'
+ uses: stCarolas/setup-maven@07fbbe97d97ef44336b7382563d66743297e442f # v4.5
+ with:
+ maven-version: 3.9.6
+
+ - name: Build
+ run: ./build.sh clean test
+# set -x
+# export MAVEN_VERSION="3.9.6"
+# wget https://archive.apache.org/dist/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz
+# tar zxvf apache-maven-$MAVEN_VERSION-bin.tar.gz
+# export M2_HOME=$PWD/apache-maven-$MAVEN_VERSION
+# export PATH="$M2_HOME/bin:$PATH"
+# java -version
+# mvn -version
+# #MAVEN_OPTS="-Dsurefire.excludes=*TestCustomCodec*,*TestAllCodecs*,*TestNettyServer*" ./build.sh clean test
+# ./build.sh clean test
diff --git a/.github/workflows/test-lang-java.yml b/.github/workflows/test-lang-java.yml
index 2fb09640893..b818dad91bd 100644
--- a/.github/workflows/test-lang-java.yml
+++ b/.github/workflows/test-lang-java.yml
@@ -156,47 +156,3 @@ jobs:
- name: 'Run Interop Tests using Java 8, 11, 17 & 21'
working-directory: lang/java/interop-data-test
run: mvn -B verify -Pcheck-test-data
-
- arm64:
- name: Java on Linux ARM64
- runs-on: ["self-hosted", "asf-arm"]
-
- steps:
- - name: 'Checkout sourcecode'
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
-
- - name: 'Setup Temurin JDK 8, 11, 17 & 21'
- uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93 # v4.0.0
- with:
- distribution: 'temurin'
- java-version: |
- 8
- 11
- 17
- 21
-
- - name: 'Cache Local Maven Repository'
- uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0
- with:
- path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
- restore-keys: |
- ${{ runner.os }}-maven-
-
- - name: 'Setup Maven 3.9.6'
- uses: stCarolas/setup-maven@07fbbe97d97ef44336b7382563d66743297e442f # v4.5
- with:
- maven-version: 3.9.6
-
- - name: Build
- run: ./build.sh clean test
-# set -x
-# export MAVEN_VERSION="3.9.6"
-# wget https://archive.apache.org/dist/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz
-# tar zxvf apache-maven-$MAVEN_VERSION-bin.tar.gz
-# export M2_HOME=$PWD/apache-maven-$MAVEN_VERSION
-# export PATH="$M2_HOME/bin:$PATH"
-# java -version
-# mvn -version
-# #MAVEN_OPTS="-Dsurefire.excludes=*TestCustomCodec*,*TestAllCodecs*,*TestNettyServer*" ./build.sh clean test
-# ./build.sh clean test
diff --git a/.github/workflows/test-lang-js-ARM.yml b/.github/workflows/test-lang-js-ARM.yml
new file mode 100644
index 00000000000..54e1216eaca
--- /dev/null
+++ b/.github/workflows/test-lang-js-ARM.yml
@@ -0,0 +1,65 @@
+# 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
+#
+# https://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: 'Test JavaScript on ARM'
+on:
+ workflow_dispatch:
+ push:
+ branches: [ main ]
+ pull_request:
+ branches: [ main ]
+ paths:
+ - .github/workflows/test-lang-js.yml
+ - lang/js/**
+
+defaults:
+ run:
+ working-directory: lang/js
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ arm64:
+ name: JavaScript on Linux ARM64
+ runs-on: ["self-hosted", "asf-arm"]
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Cache Npm
+ uses: actions/cache@v4
+ with:
+ path: ~/.npm
+ key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
+ restore-keys: |
+ ${{ runner.os }}-node-
+
+ - name: Setup Node
+ uses: actions/setup-node@v4
+ with:
+ node-version: 18
+
+ - name: Install dependencies
+ run: |
+ sudo apt-get update -q
+ sudo apt-get install -q -y wget tar xz-utils
+
+ - name: Build
+ run: |
+ set -x
+ ./build.sh clean test
diff --git a/.github/workflows/test-lang-js.yml b/.github/workflows/test-lang-js.yml
index acb96369a86..20f2cc09f4c 100644
--- a/.github/workflows/test-lang-js.yml
+++ b/.github/workflows/test-lang-js.yml
@@ -112,34 +112,3 @@ jobs:
- name: Run Interop Tests
run: npm install && ./build.sh interop-data-test
-
- arm64:
- name: JavaScript on Linux ARM64
- runs-on: ["self-hosted", "asf-arm"]
-
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Cache Npm
- uses: actions/cache@v4
- with:
- path: ~/.npm
- key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
- restore-keys: |
- ${{ runner.os }}-node-
-
- - name: Setup Node
- uses: actions/setup-node@v4
- with:
- node-version: 18
-
- - name: Install dependencies
- run: |
- sudo apt-get update -q
- sudo apt-get install -q -y wget tar xz-utils
-
- - name: Build
- run: |
- set -x
- ./build.sh clean test
\ No newline at end of file
diff --git a/.github/workflows/test-lang-perl-ARM.yml b/.github/workflows/test-lang-perl-ARM.yml
new file mode 100644
index 00000000000..bd28857cd59
--- /dev/null
+++ b/.github/workflows/test-lang-perl-ARM.yml
@@ -0,0 +1,157 @@
+# 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
+#
+# https://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: 'Test Perl on ARM'
+on:
+ workflow_dispatch:
+ push:
+ branches: [ main ]
+ pull_request:
+ branches: [ main ]
+ paths:
+ - .github/workflows/test-lang-perl.yml
+ - lang/perl/**
+
+defaults:
+ run:
+ working-directory: lang/perl
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ test:
+ name: Perl ${{ matrix.perl }} Tests
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ perl:
+ - '5.32'
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: shogo82148/actions-setup-perl@v1
+ with:
+ perl-version: ${{ matrix.perl }}
+
+ - name: Install Dependencies
+ run: |
+ sudo apt-get -qqy install --no-install-recommends libjansson-dev \
+ libcompress-raw-zlib-perl \
+ libcpan-uploader-perl \
+ libencode-perl \
+ libio-string-perl \
+ libjson-xs-perl \
+ libmodule-install-perl \
+ libmodule-install-readmefrompod-perl \
+ libobject-tiny-perl \
+ libperl-critic-perl \
+ libsnappy-dev \
+ libtest-exception-perl \
+ libtest-pod-perl
+ cpanm --mirror https://www.cpan.org/ install Compress::Zstd \
+ Error::Simple \
+ Module::Install::Repository \
+ Regexp::Common \
+ Try::Tiny \
+ inc::Module::Install \
+ Module::Install::ReadmeFromPod \
+ Test::Exception \
+ IO::String \
+ Object::Tiny
+
+ - name: Lint
+ run: ./build.sh lint
+
+ - name: Test
+ run: ./build.sh test
+
+ interop:
+ name: Perl ${{ matrix.perl }} Interop
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ perl:
+ - '5.32'
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: shogo82148/actions-setup-perl@v1
+ with:
+ perl-version: ${{ matrix.perl }}
+
+ - name: Install Dependencies
+ run: |
+ sudo apt-get -qqy install --no-install-recommends libcompress-raw-zlib-perl \
+ libcpan-uploader-perl \
+ libencode-perl \
+ libio-string-perl \
+ libjansson-dev \
+ libjson-xs-perl \
+ libmodule-install-perl \
+ libmodule-install-readmefrompod-perl \
+ libobject-tiny-perl \
+ libsnappy-dev \
+ libtest-exception-perl \
+ libtest-pod-perl
+ cpanm --mirror https://www.cpan.org/ install Compress::Zstd \
+ Error::Simple \
+ Module::Install::Repository \
+ Object::Tiny \
+ Regexp::Common \
+ Try::Tiny \
+ inc::Module::Install
+
+ - name: Cache Local Maven Repository
+ uses: actions/cache@v4
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-maven-
+
+ - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+ uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93 # v4.0.0
+ with:
+ distribution: 'temurin'
+ java-version: |
+ 8
+ 11
+ 17
+ 21
+
+ - name: 'Setup Maven 3.9.6'
+ uses: stCarolas/setup-maven@07fbbe97d97ef44336b7382563d66743297e442f # v4.5
+ with:
+ maven-version: 3.9.6
+
+ - name: Install Java Avro for Interop Test
+ working-directory: .
+ run: mvn -B install -PskipQuality
+
+ - name: Create Interop Data Directory
+ working-directory: .
+ run: mkdir -p build/interop/data
+
+ - name: Generate Interop Resources
+ working-directory: lang/java/avro
+ run: mvn -B -P interop-data-generate generate-resources
+
+ - name: Generate Interop Data
+ run: ./build.sh interop-data-generate
+
+ - name: Run Interop Tests
+ run: ./build.sh interop-data-test
diff --git a/.github/workflows/test-lang-perl.yml b/.github/workflows/test-lang-perl.yml
index 58627a7f3da..cc4f6ab1343 100644
--- a/.github/workflows/test-lang-perl.yml
+++ b/.github/workflows/test-lang-perl.yml
@@ -155,27 +155,3 @@ jobs:
- name: Run Interop Tests
run: ./build.sh interop-data-test
-
- arm64:
- name: Perl on Linux ARM64
- runs-on: ["self-hosted", "asf-arm"]
-
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Install dependencies
- run: |
- sudo apt-get update -q
- sudo apt-get install -q -y libjansson-dev libcompress-raw-zlib-perl libcpan-uploader-perl libencode-perl libio-string-perl libjson-xs-perl libmodule-install-perl libmodule-install-readmefrompod-perl libobject-tiny-perl libperl-critic-perl libsnappy-dev libtest-exception-perl libtest-pod-perl cpanminus make gcc wget
- cpanm Error::Simple
- cpanm Regexp::Common
- cpanm Try::Tiny
- cpanm Compress::Zstd
- cpanm Module::Install::Repository
- cpanm inc::Module::Install
-
- - name: Build
- run: |
- set -x
- ./build.sh clean test
diff --git a/.github/workflows/test-lang-php-ARM.yml b/.github/workflows/test-lang-php-ARM.yml
new file mode 100644
index 00000000000..85c2aa349bf
--- /dev/null
+++ b/.github/workflows/test-lang-php-ARM.yml
@@ -0,0 +1,58 @@
+# 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
+#
+# https://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: 'Test PHP on ARM'
+on:
+ workflow_dispatch:
+ push:
+ branches: [ main ]
+ pull_request:
+ branches: [ main ]
+ paths:
+ - .github/workflows/test-lang-php.yml
+ - lang/php/**
+
+defaults:
+ run:
+ working-directory: lang/php
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ arm64:
+ name: PHP on Linux ARM64
+ runs-on: ["self-hosted", "asf-arm"]
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Install dependencies
+ run: |
+ sudo apt-get update -q
+ sudo apt-get install -q -y wget php php-xml php-mbstring php-curl php-gmp php-bz2 unzip libtidy-dev libpq5
+ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
+ php -r "if (hash_file('sha384', 'composer-setup.php') === file_get_contents('https://composer.github.io/installer.sig')) { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
+ php composer-setup.php --version=2.2.5
+ php -r "unlink('composer-setup.php');"
+ sudo mv composer.phar /usr/local/bin/composer
+
+ - name: Build
+ run: |
+ set -x
+ composer --version
+ ./build.sh clean test
diff --git a/.github/workflows/test-lang-php.yml b/.github/workflows/test-lang-php.yml
index 6255a7f3498..c6729e90ad4 100644
--- a/.github/workflows/test-lang-php.yml
+++ b/.github/workflows/test-lang-php.yml
@@ -162,27 +162,3 @@ jobs:
- name: Run Interop Tests
run: ./build.sh test-interop
-
- arm64:
- name: PHP on Linux ARM64
- runs-on: ["self-hosted", "asf-arm"]
-
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Install dependencies
- run: |
- sudo apt-get update -q
- sudo apt-get install -q -y wget php php-xml php-mbstring php-curl php-gmp php-bz2 unzip libtidy-dev libpq5
- php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
- php -r "if (hash_file('sha384', 'composer-setup.php') === file_get_contents('https://composer.github.io/installer.sig')) { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
- php composer-setup.php --version=2.2.5
- php -r "unlink('composer-setup.php');"
- sudo mv composer.phar /usr/local/bin/composer
-
- - name: Build
- run: |
- set -x
- composer --version
- ./build.sh clean test
diff --git a/.github/workflows/test-lang-py-ARM.yml b/.github/workflows/test-lang-py-ARM.yml
new file mode 100644
index 00000000000..874c7c35f9b
--- /dev/null
+++ b/.github/workflows/test-lang-py-ARM.yml
@@ -0,0 +1,53 @@
+# 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
+#
+# https://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: 'Test Python on ARM'
+on:
+ workflow_dispatch:
+ push:
+ branches: [ main ]
+ pull_request:
+ branches: [ main ]
+ paths:
+ - .github/workflows/test-lang-py.yml
+ - lang/py/**
+
+defaults:
+ run:
+ working-directory: lang/py
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ arm64:
+ name: Python on Linux ARM64
+ runs-on: ["self-hosted", "asf-arm"]
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Install dependencies
+ run: |
+ sudo apt-get update -q
+ sudo apt-get install -q -y python3 python3-dev python3-pip git libbz2-dev libjansson-dev liblzma-dev libsnappy-dev libzstd-dev
+ python3 -m pip install --upgrade pip setuptools tox
+
+ - name: Build
+ run: |
+ set -x
+ ./build.sh clean test
diff --git a/.github/workflows/test-lang-py.yml b/.github/workflows/test-lang-py.yml
index 3a2c161e6b6..8082cd96555 100644
--- a/.github/workflows/test-lang-py.yml
+++ b/.github/workflows/test-lang-py.yml
@@ -159,22 +159,3 @@ jobs:
- name: Run Interop Tests
run: ./build.sh interop-data-test
-
- arm64:
- name: Python on Linux ARM64
- runs-on: ["self-hosted", "asf-arm"]
-
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Install dependencies
- run: |
- sudo apt-get update -q
- sudo apt-get install -q -y python3 python3-dev python3-pip git libbz2-dev libjansson-dev liblzma-dev libsnappy-dev libzstd-dev
- python3 -m pip install --upgrade pip setuptools tox
-
- - name: Build
- run: |
- set -x
- ./build.sh clean test
diff --git a/.github/workflows/test-lang-ruby-ARM.yml b/.github/workflows/test-lang-ruby-ARM.yml
new file mode 100644
index 00000000000..c1ce73878bf
--- /dev/null
+++ b/.github/workflows/test-lang-ruby-ARM.yml
@@ -0,0 +1,60 @@
+# 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
+#
+# https://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: 'Test Ruby on ARM'
+on:
+ workflow_dispatch:
+ push:
+ branches: [ main ]
+ pull_request:
+ branches: [ main ]
+ paths:
+ - .github/workflows/test-lang-ruby.yml
+ - lang/ruby/**
+
+defaults:
+ run:
+ working-directory: lang/ruby
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ arm64:
+ name: Ruby on Linux ARM64
+ runs-on: ["self-hosted", "asf-arm"]
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Cache gems
+ uses: actions/cache@v4
+ with:
+ path: .gem
+ key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
+ restore-keys: |
+ ${{ runner.os }}-gems-
+
+ - name: Install dependencies
+ run: |
+ sudo apt-get update -q
+ sudo apt-get install -q -y ruby-dev bundler libsnappy-dev libyaml-dev
+
+ - name: Build
+ run: |
+ set -x
+ ./build.sh clean test
diff --git a/.github/workflows/test-lang-ruby.yml b/.github/workflows/test-lang-ruby.yml
index 5c5f5fa60a6..2a73c5db8f6 100644
--- a/.github/workflows/test-lang-ruby.yml
+++ b/.github/workflows/test-lang-ruby.yml
@@ -157,29 +157,3 @@ jobs:
export GEM_HOME="$PWD/.gem/"
export PATH="$GEM_HOME/bin:$PATH"
bundle exec rake --trace interop
-
- arm64:
- name: Ruby on Linux ARM64
- runs-on: ["self-hosted", "asf-arm"]
-
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Cache gems
- uses: actions/cache@v4
- with:
- path: .gem
- key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
- restore-keys: |
- ${{ runner.os }}-gems-
-
- - name: Install dependencies
- run: |
- sudo apt-get update -q
- sudo apt-get install -q -y ruby-dev bundler libsnappy-dev libyaml-dev
-
- - name: Build
- run: |
- set -x
- ./build.sh clean test
diff --git a/.github/workflows/test-lang-rust-ci-ARM.yml b/.github/workflows/test-lang-rust-ci-ARM.yml
new file mode 100644
index 00000000000..09aa02bbde2
--- /dev/null
+++ b/.github/workflows/test-lang-rust-ci-ARM.yml
@@ -0,0 +1,79 @@
+# 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: Rust Continuous Integration on ARM
+on:
+ workflow_dispatch:
+ push:
+ branches: [ main ]
+ pull_request:
+ branches: [ main ]
+ paths:
+ - .github/workflows/test-lang-rust-ci.yml
+ - lang/rust/**
+
+permissions:
+ contents: read
+
+env:
+ RUSTFLAGS: -Dwarnings
+ CARGO_REGISTRIES_CRATES_IO_PROTOCOL: 'git' # TODO: remove this env var once MSRV is 1.70.0+
+
+defaults:
+ run:
+ working-directory: lang/rust
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ arm64:
+ name: Rust on Linux ARM64
+ runs-on: ["self-hosted", "asf-arm"]
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Cache Cargo
+ uses: actions/cache@v4
+ with:
+ # these represent dependencies downloaded by cargo
+ # and thus do not depend on the OS, arch nor rust version.
+ path: ~/.cargo
+ key: ${{ runner.os }}-target-arm64-${{ hashFiles('**/Cargo.lock') }}
+
+ - name: Cache Rust dependencies
+ uses: actions/cache@v4
+ with:
+ # these represent compiled steps of both dependencies and avro
+ # and thus are specific for a particular OS, arch and rust version.
+ path: lang/rust/target
+ key: ${{ runner.os }}-target-cache1-stable-
+
+ - name: Rust Toolchain
+ uses: dtolnay/rust-toolchain@nightly
+ with:
+ toolchain: stable
+ components: rustfmt
+ targets: x86_64-unknown-linux-gnu
+
+ - name: Build
+ run: |
+ set -x
+ ./build.sh test
diff --git a/.github/workflows/test-lang-rust-ci.yml b/.github/workflows/test-lang-rust-ci.yml
index 3aae12e135e..fbe97888460 100644
--- a/.github/workflows/test-lang-rust-ci.yml
+++ b/.github/workflows/test-lang-rust-ci.yml
@@ -253,39 +253,3 @@ jobs:
- name: Test the Web Assembly demo app
run: RUST_BACKTRACE=1 wasm-pack test --headless --firefox wasm-demo
-
- arm64:
- name: Rust on Linux ARM64
- runs-on: ["self-hosted", "asf-arm"]
-
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Cache Cargo
- uses: actions/cache@v4
- with:
- # these represent dependencies downloaded by cargo
- # and thus do not depend on the OS, arch nor rust version.
- path: ~/.cargo
- key: ${{ runner.os }}-target-arm64-${{ hashFiles('**/Cargo.lock') }}
-
- - name: Cache Rust dependencies
- uses: actions/cache@v4
- with:
- # these represent compiled steps of both dependencies and avro
- # and thus are specific for a particular OS, arch and rust version.
- path: lang/rust/target
- key: ${{ runner.os }}-target-cache1-stable-
-
- - name: Rust Toolchain
- uses: dtolnay/rust-toolchain@nightly
- with:
- toolchain: stable
- components: rustfmt
- targets: x86_64-unknown-linux-gnu
-
- - name: Build
- run: |
- set -x
- ./build.sh test
diff --git a/README.md b/README.md
index 2be39e5a2b7..816256cd4cb 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
Apache Avro™
============
+### Current CI status (Github servers)
[![test c][test c img]][test c]
[![test c#][test c# img]][test c#]
[![test c++][test c++ img]][test c++]
@@ -15,6 +16,19 @@ Apache Avro™