Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 27 additions & 101 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,48 +30,8 @@ jobs:
- ppc64el
- riscv64
- s390x
include:
- arch: amd64
CC: x86_64-linux-gnu
- arch: arm64
CC: aarch64-linux-gnu
- arch: armel
CC: arm-linux-gnueabi
- arch: armhf
CC: arm-linux-gnueabihf
- arch: i386
CC: i686-linux-gnu
- arch: mips
CC: mips-linux-gnu
- arch: mips64
CC: mips64-linux-gnuabi64
- arch: mips64el
CC: mips64el-linux-gnuabi64
- arch: mips64r6
CC: mipsisa64r6-linux-gnuabi64
- arch: mips64r6el
CC: mipsisa64r6el-linux-gnuabi64
- arch: mipsel
CC: mipsel-linux-gnu
- arch: mipsr6
CC: mipsisa32r6-linux-gnu
- arch: mipsr6el
CC: mipsisa32r6el-linux-gnu
- arch: powerpc
CC: powerpc-linux-gnu
- arch: ppc64el
CC: powerpc64le-linux-gnu
- arch: riscv64
CC: riscv64-linux-gnu
- arch: s390x
CC: s390x-linux-gnu
runs-on: ${{ matrix.arch == 'i386' && 'ubuntu-22.04' || 'ubuntu-24.04' }}
env:
AR: ${{ matrix.CC }}-ar
CHOST: ${{ matrix.CC }}
CC: ${{ matrix.CC }}-gcc
CPP: ${{ matrix.CC }}-cpp
LDFLAGS: -s
SUFFIX: linux-${{ matrix.arch }}
steps:
- name: Clone repository
Expand All @@ -81,25 +41,17 @@ jobs:
- name: Install packages
run: |
sudo apt-get update
sudo apt-get install -y automake autoconf libtool crossbuild-essential-${{ matrix.arch }}
sudo apt-get install -y crossbuild-essential-${{ matrix.arch }} meson
- name: Build
run: |
autoreconf -i
./configure \
--host=${{ matrix.CC }} \
--disable-docs \
--with-oniguruma=builtin \
--enable-static \
--enable-all-static \
CFLAGS="-O2 -pthread -fstack-protector-all"
make -j"$(nproc)"
file ./jq
cp ./jq jq-${{ env.SUFFIX }}
meson setup _build -Doniguruma=builtin --cross-file .github/workflows/cross-compilation/linux-${{ matrix.arch }}.txt
ninja -v -C _build
cp _build/src/jq jq-${{ env.SUFFIX }}
- name: Test
# Only run tests for amd64 matching the CI machine arch
if: ${{ matrix.arch == 'amd64' }}
run: |
make check VERBOSE=yes
ninja -v -C _build test
git diff --exit-code
- name: Upload Test Logs
if: ${{ failure() }}
Expand All @@ -108,8 +60,7 @@ jobs:
name: test-logs-${{ env.SUFFIX }}
retention-days: 7
path: |
test-suite.log
tests/*.log
_build/meson-logs/testlog.txt
- name: Upload artifacts
uses: actions/upload-artifact@v7
with:
Expand All @@ -132,7 +83,6 @@ jobs:
target: arm64-apple-darwin
runs-on: macos-14
env:
LDFLAGS: -dead_strip
SUFFIX: macos-${{ matrix.arch }}
steps:
- name: Clone repository
Expand All @@ -143,28 +93,19 @@ jobs:
run: |
# brew update sometimes fails with "Fetching /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask failed!"
brew update || brew update-reset
brew install autoconf automake libtool
brew install meson
- name: Set CC
run: |
echo "CC=clang -target ${{ matrix.target }}$(uname -r)" >> "$GITHUB_ENV"
- name: Build
run: |
autoreconf -i
./configure \
--host="${{ matrix.target }}$(uname -r)" \
--disable-docs \
--with-oniguruma=builtin \
--disable-shared \
--enable-static \
--enable-all-static \
CFLAGS="-O2 -pthread -fstack-protector-all"
make -j"$(sysctl -n hw.logicalcpu)"
strip ./jq
file ./jq
cp ./jq jq-${{ env.SUFFIX }}
meson setup _build -Ddocs=false -Doniguruma=builtin -Ddefault_library=static -Dbuildtype=release -Dstrip=true -Dbison=auto
ninja -v -C _build
file _build/src/jq
cp _build/src/jq jq-${{ env.SUFFIX }}
- name: Test
run: |
make check VERBOSE=yes
ninja -v -C _build test
git diff --exit-code
- name: Upload Test Logs
if: ${{ failure() }}
Expand All @@ -173,8 +114,7 @@ jobs:
name: test-logs-${{ env.SUFFIX }}
retention-days: 7
path: |
test-suite.log
tests/*.log
_build/meson-logs/testlog.txt
- name: Upload artifacts
uses: actions/upload-artifact@v7
with:
Expand Down Expand Up @@ -203,7 +143,6 @@ jobs:
os: windows-11-arm
runs-on: ${{ matrix.os }}
env:
LDFLAGS: -s
SUFFIX: windows-${{ matrix.arch }}
defaults:
run:
Expand All @@ -223,27 +162,19 @@ jobs:
install: >-
base-devel
git
autoconf
automake
libtool
pacboy: >-
meson
cmake
toolchain:p
- name: Build
run: |
autoreconf -i
./configure \
--disable-docs \
--with-oniguruma=builtin \
--disable-shared \
--enable-static \
--enable-all-static \
CFLAGS="-O2 -pthread -fstack-protector-all -Wl,--stack,8388608"
make -j$(nproc)
file ./jq.exe
cp ./jq.exe jq-${{ env.SUFFIX }}.exe
meson setup _build -Ddocs=false -Doniguruma=builtin -Ddefault_library=static
ninja -v -C _build
file _build/src/jq
cp _build/src/jq.exe jq-${{ env.SUFFIX }}.exe
- name: Test
run: |
make check VERBOSE=yes
ninja -v -C _build test
git diff --exit-code
- name: Upload Test Logs
if: ${{ failure() }}
Expand All @@ -252,8 +183,7 @@ jobs:
name: test-logs-${{ env.SUFFIX }}
retention-days: 7
path: |
test-suite.log
tests/*.log
_build/meson-logs/testlog.txt
- name: Upload artifacts
uses: actions/upload-artifact@v7
with:
Expand All @@ -272,25 +202,21 @@ jobs:
- name: Install packages
run: |
sudo apt-get update -qq
sudo apt-get install -y automake autoconf
sudo apt-get install -y meson
- name: Create dist
run: |
autoreconf -i
./configure \
--disable-docs \
--with-oniguruma=builtin
make distcheck
make dist dist-zip
git diff --exit-code
meson setup _build -Doniguruma=builtin -Ddocs=false
meson dist -C _build --formats xztar
meson dist -C _build --formats zip --no-tests
- name: Upload artifacts
uses: actions/upload-artifact@v7
with:
name: jq-dist
if-no-files-found: error
retention-days: 7
path: |
jq-*.tar.gz
jq-*.zip
_build/meson-dist/jq-*.tar*
_build/meson-dist/jq-*.zip

docker:
runs-on: ubuntu-latest
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/cross-compilation/linux-amd64.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[binaries]
c = 'x86_64-linux-gnu-gcc'
cpp = 'x86_64-linux-gnu-g++'
ar = 'x86_64-linux-gnu-ar'

[host_machine]
system = 'linux'
cpu_family = 'amd64'
cpu = 'amd64'
endian = 'little'
10 changes: 10 additions & 0 deletions .github/workflows/cross-compilation/linux-arm64.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[binaries]
c = 'aarch64-linux-gnu-gcc'
cpp = 'aarch64-linux-gnu-g++'
ar = 'aarch64-linux-gnu-ar'

[host_machine]
system = 'linux'
cpu_family = 'arm64'
cpu = 'arm64'
endian = 'little'
10 changes: 10 additions & 0 deletions .github/workflows/cross-compilation/linux-armel.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[binaries]
c = 'arm-linux-gnueabi-gcc'
cpp = 'arm-linux-gnueabi-g++'
ar = 'arm-linux-gnueabi-ar'

[host_machine]
system = 'linux'
cpu_family = 'armel'
cpu = 'armel'
endian = 'little'
10 changes: 10 additions & 0 deletions .github/workflows/cross-compilation/linux-armhf.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[binaries]
c = 'arm-linux-gnueabihf-gcc'
cpp = 'arm-linux-gnueabihf-g++'
ar = 'arm-linux-gnueabihf-ar'

[host_machine]
system = 'linux'
cpu_family = 'armhf'
cpu = 'armhf'
endian = 'little'
10 changes: 10 additions & 0 deletions .github/workflows/cross-compilation/linux-i386.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[binaries]
c = 'i686-linux-gnu-gcc'
cpp = 'i686-linux-gnu-g++'
ar = 'i686-linux-gnu-ar'

[host_machine]
system = 'linux'
cpu_family = 'i386'
cpu = 'i386'
endian = 'little'
10 changes: 10 additions & 0 deletions .github/workflows/cross-compilation/linux-mips.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[binaries]
c = 'mips-linux-gnu-gcc'
cpp = 'mips-linux-gnu-g++'
ar = 'mips-linux-gnu-ar'

[host_machine]
system = 'linux'
cpu_family = 'mips'
cpu = 'mips'
endian = 'little'
10 changes: 10 additions & 0 deletions .github/workflows/cross-compilation/linux-mips64.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[binaries]
c = 'mips64-linux-gnuabi64-gcc'
cpp = 'mips64-linux-gnuabi64-g++'
ar = 'mips64-linux-gnuabi64-ar'

[host_machine]
system = 'linux'
cpu_family = 'mips64'
cpu = 'mips64'
endian = 'little'
10 changes: 10 additions & 0 deletions .github/workflows/cross-compilation/linux-mips64el.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[binaries]
c = 'mips64el-linux-gnuabi64-gcc'
cpp = 'mips64el-linux-gnuabi64-g++'
ar = 'mips64el-linux-gnuabi64-ar'

[host_machine]
system = 'linux'
cpu_family = 'mips64el'
cpu = 'mips64el'
endian = 'little'
10 changes: 10 additions & 0 deletions .github/workflows/cross-compilation/linux-mips64r6.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[binaries]
c = 'mipsisa64r6-linux-gnuabi64-gcc'
cpp = 'mipsisa64r6-linux-gnuabi64-g++'
ar = 'mipsisa64r6-linux-gnuabi64-ar'

[host_machine]
system = 'linux'
cpu_family = 'mips64r6'
cpu = 'mips64r6'
endian = 'little'
10 changes: 10 additions & 0 deletions .github/workflows/cross-compilation/linux-mips64r6el.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[binaries]
c = 'mipsisa64r6el-linux-gnuabi64-gcc'
cpp = 'mipsisa64r6el-linux-gnuabi64-g++'
ar = 'mipsisa64r6el-linux-gnuabi64-ar'

[host_machine]
system = 'linux'
cpu_family = 'mips64r6el'
cpu = 'mips64r6el'
endian = 'little'
10 changes: 10 additions & 0 deletions .github/workflows/cross-compilation/linux-mipsel.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[binaries]
c = 'mipsel-linux-gnu-gcc'
cpp = 'mipsel-linux-gnu-g++'
ar = 'mipsel-linux-gnu-ar'

[host_machine]
system = 'linux'
cpu_family = 'mipsel'
cpu = 'mipsel'
endian = 'little'
10 changes: 10 additions & 0 deletions .github/workflows/cross-compilation/linux-mipsr6.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[binaries]
c = 'mipsisa32r6-linux-gnu-gcc'
cpp = 'mipsisa32r6-linux-gnu-g++'
ar = 'mipsisa32r6-linux-gnu-ar'

[host_machine]
system = 'linux'
cpu_family = 'mipsr6'
cpu = 'mipsr6'
endian = 'little'
10 changes: 10 additions & 0 deletions .github/workflows/cross-compilation/linux-mipsr6el.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[binaries]
c = 'mipsisa32r6el-linux-gnu-gcc'
cpp = 'mipsisa32r6el-linux-gnu-g++'
ar = 'mipsisa32r6el-linux-gnu-ar'

[host_machine]
system = 'linux'
cpu_family = 'mipsr6el'
cpu = 'mipsr6el'
endian = 'little'
10 changes: 10 additions & 0 deletions .github/workflows/cross-compilation/linux-powerpc.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[binaries]
c = 'powerpc-linux-gnu-gcc'
cpp = 'powerpc-linux-gnu-g++'
ar = 'powerpc-linux-gnu-ar'

[host_machine]
system = 'linux'
cpu_family = 'powerpc'
cpu = 'powerpc'
endian = 'little'
10 changes: 10 additions & 0 deletions .github/workflows/cross-compilation/linux-ppc64el.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[binaries]
c = 'powerpc64le-linux-gnu-gcc'
cpp = 'powerpc64le-linux-gnu-g++'
ar = 'powerpc64le-linux-gnu-ar'

[host_machine]
system = 'linux'
cpu_family = 'ppc64el'
cpu = 'ppc64el'
endian = 'little'
Loading
Loading