Skip to content

fix: allow effort=0 for heifsave and webpsave (#95) #433

fix: allow effort=0 for heifsave and webpsave (#95)

fix: allow effort=0 for heifsave and webpsave (#95) #433

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
inputs:
commit_message:
description: 'Commit message (optional)'
required: false
default: 'build: update generated vips packages'
type: string
jobs:
generate:
name: Generate code for libvips ${{ matrix.vips_version }}
runs-on: ubuntu-24.04
strategy:
matrix:
include:
- vips_version: "8.16.1"
output_dir: "./vips816"
- vips_version: "8.17.3"
output_dir: "./vips817"
- vips_version: "8.18.2"
output_dir: "./vips"
env:
CGO_CFLAGS_ALLOW: -Xpreprocessor
VIPS_VERSION: ${{ matrix.vips_version }}
V: 6
steps:
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: ^1.24
- name: Check out code
uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
meson ninja-build \
libglib2.0-dev libexpat-dev librsvg2-dev libpng-dev \
libjpeg-turbo8-dev libimagequant-dev libfftw3-dev \
libpoppler-glib-dev libxml2-dev \
libopenslide-dev libcfitsio-dev liborc-0.4-dev libpango1.0-dev \
libtiff5-dev libgsf-1-dev giflib-tools libwebp-dev libheif-dev \
libopenjp2-7-dev libcgif-dev \
gobject-introspection libgirepository1.0-dev \
libmagickwand-dev libmatio-dev libnifti2-dev \
libjxl-dev libzip-dev libarchive-dev \
libraw-dev
# Create missing NIfTI pkg-config file to help libvips meson detect it
# Ubuntu's libnifti2-dev doesn't provide the pkg-config file that libvips expects
sudo mkdir -p /usr/local/lib/pkgconfig
sudo tee /usr/local/lib/pkgconfig/niftiio.pc > /dev/null <<EOF
prefix=/usr
exec_prefix=\${prefix}
libdir=\${prefix}/lib/x86_64-linux-gnu
includedir=\${prefix}/include/nifti
Name: libniftiio
Description: nifti library
Version: 3.0.1
Requires:
Cflags: -I\${includedir}
Libs: -L\${libdir} -lniftiio -lznz
EOF
- name: Cache libvips
uses: actions/cache@v3
with:
path: vips-${{ matrix.vips_version }}
key: ${{ runner.os }}-24.04-vips-introspection-${{ env.V }}-${{ matrix.vips_version }}
restore-keys: |
${{ runner.os }}-24.04-vips-introspection-${{ env.V }}-
- name: Build libvips from source
run: |
if [ ! -d "vips-${{ matrix.vips_version }}" ]
then
wget https://github.com/libvips/libvips/releases/download/v${{ matrix.vips_version }}/vips-${{ matrix.vips_version }}.tar.xz
tar xf vips-${{ matrix.vips_version }}.tar.xz
fi
cd vips-${{ matrix.vips_version }}
# Detect all available features
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig meson setup _build \
--buildtype=release \
--strip \
--prefix=/usr/local \
--libdir=lib \
-Dmagick=enabled \
-Dopenslide=enabled \
-Dintrospection=enabled \
-Djpeg-xl=enabled
ninja -C _build
sudo ninja -C _build install
sudo ldconfig
- name: Verify vips and introspection
run: |
echo "Checking vips version and introspection files"
vips --version
ls -la /usr/local/share/gir-1.0/ || true
ls -la /usr/share/gir-1.0/ || true
pkg-config --modversion gobject-introspection-1.0 || true
# List all loaders and savers to verify formats
echo "All supported formats:"
vips --list | grep -E "load|save"
- name: Cache Go dependencies
uses: actions/cache@v3
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Get dependencies
run: go mod download
- name: Build vipsgen
run: |
mkdir -p bin
go build -o bin/vipsgen cmd/vipsgen/main.go
- name: Generate vips package
run: |
mkdir -p ${{ matrix.output_dir }}
./bin/vipsgen -out ${{ matrix.output_dir }} --include-test
- name: Run tests
run: |
$(CGO_CFLAGS_ALLOW="-Xpreprocessor") go test -v ${{ matrix.output_dir }}/...
- name: Upload generated bindings
uses: actions/upload-artifact@v4
if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) || github.event_name == 'workflow_dispatch'
with:
name: bindings-${{ matrix.vips_version }}
path: ${{ matrix.output_dir }}
retention-days: 1
commit:
name: Commit all generated bindings
needs: generate
runs-on: ubuntu-24.04
permissions:
contents: write
pull-requests: write
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Download vips816 bindings
uses: actions/download-artifact@v4
with:
name: bindings-8.16.1
path: vips816
- name: Download vips817 bindings
uses: actions/download-artifact@v4
with:
name: bindings-8.17.3
path: vips817
- name: Download vips bindings
uses: actions/download-artifact@v4
with:
name: bindings-8.18.2
path: vips
- name: Commit generated files
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "build: update generated vips packages"
file_pattern: "vips*"
commit-manual:
name: Create PR with generated bindings
needs: generate
runs-on: ubuntu-24.04
permissions:
contents: write
pull-requests: write
if: github.event_name == 'workflow_dispatch'
steps:
- name: Checkout main
uses: actions/checkout@v4
with:
ref: main
- name: Download vips816 bindings
uses: actions/download-artifact@v4
with:
name: bindings-8.16.1
path: vips816
- name: Download vips817 bindings
uses: actions/download-artifact@v4
with:
name: bindings-8.17.3
path: vips817
- name: Download vips bindings
uses: actions/download-artifact@v4
with:
name: bindings-8.18.2
path: vips
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6
with:
commit-message: ${{ inputs.commit_message }}
title: ${{ inputs.commit_message }}
body: "Auto-generated bindings from manual workflow dispatch"
branch: generated-files-${{ github.run_number }}
delete-branch: true