Skip to content

Commit

Permalink
Merge pull request #7741 from hugovk/ci-stuff
Browse files Browse the repository at this point in the history
CI: Cache libimagequant on Linux builds
  • Loading branch information
radarhere committed Jan 26, 2024
2 parents b3a7ae0 + d96c196 commit b82e601
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 11 deletions.
12 changes: 11 additions & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,16 +37,26 @@ jobs:
with:
python-version: "3.x"
cache: pip
cache-dependency-path: ".ci/*.sh"
cache-dependency-path: |
".ci/*.sh"
"pyproject.toml"
- name: Build system information
run: python3 .github/workflows/system-info.py

- name: Cache libimagequant
uses: actions/cache@v4
id: cache-libimagequant
with:
path: ~/cache-libimagequant
key: ${{ runner.os }}-libimagequant-${{ hashFiles('depends/install_imagequant.sh') }}

- name: Install Linux dependencies
run: |
.ci/install.sh
env:
GHA_PYTHON_VERSION: "3.x"
GHA_LIBIMAGEQUANT_CACHE_HIT: ${{ steps.cache-libimagequant.outputs.cache-hit }}

- name: Build
run: |
Expand Down
16 changes: 15 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
FORCE_COLOR: 1

jobs:
build:

Expand Down Expand Up @@ -65,17 +68,28 @@ jobs:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
cache: pip
cache-dependency-path: ".ci/*.sh"
cache-dependency-path: |
".ci/*.sh"
"pyproject.toml"
- name: Build system information
run: python3 .github/workflows/system-info.py

- name: Cache libimagequant
if: startsWith(matrix.os, 'ubuntu')
uses: actions/cache@v4
id: cache-libimagequant
with:
path: ~/cache-libimagequant
key: ${{ runner.os }}-libimagequant-${{ hashFiles('depends/install_imagequant.sh') }}

- name: Install Linux dependencies
if: startsWith(matrix.os, 'ubuntu')
run: |
.ci/install.sh
env:
GHA_PYTHON_VERSION: ${{ matrix.python-version }}
GHA_LIBIMAGEQUANT_CACHE_HIT: ${{ steps.cache-libimagequant.outputs.cache-hit }}

- name: Install macOS dependencies
if: startsWith(matrix.os, 'macOS')
Expand Down
2 changes: 1 addition & 1 deletion depends/download-and-extract.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ archive=$1
url=$2

if [ ! -f $archive.tar.gz ]; then
wget -O $archive.tar.gz $url
wget --no-verbose -O $archive.tar.gz $url
fi

rmdir $archive
Expand Down
40 changes: 32 additions & 8 deletions depends/install_imagequant.sh
Original file line number Diff line number Diff line change
@@ -1,15 +1,39 @@
#!/bin/bash
# install libimagequant

archive=libimagequant-4.2.2
archive_name=libimagequant
archive_version=4.2.2

./download-and-extract.sh $archive https://raw.githubusercontent.com/python-pillow/pillow-depends/main/$archive.tar.gz
archive=$archive_name-$archive_version

pushd $archive/imagequant-sys
if [[ "$GHA_LIBIMAGEQUANT_CACHE_HIT" == "true" ]]; then

cargo install cargo-c
cargo cinstall --prefix=/usr --destdir=.
sudo cp usr/lib/libimagequant.so* /usr/lib/
sudo cp usr/include/libimagequant.h /usr/include/
# Copy cached files into place
sudo cp ~/cache-$archive_name/libimagequant.so* /usr/lib/
sudo cp ~/cache-$archive_name/libimagequant.h /usr/include/

popd
else

# Build from source
./download-and-extract.sh $archive https://raw.githubusercontent.com/python-pillow/pillow-depends/main/$archive.tar.gz

pushd $archive/imagequant-sys

cargo install cargo-c
cargo cinstall --prefix=/usr --destdir=.

# Copy into place
sudo cp usr/lib/libimagequant.so* /usr/lib/
sudo cp usr/include/libimagequant.h /usr/include/

if [ -n "$GITHUB_ACTIONS" ]; then
# Copy to cache
rm -rf ~/cache-$archive_name
mkdir ~/cache-$archive_name
cp usr/lib/libimagequant.so* ~/cache-$archive_name/
cp usr/include/libimagequant.h ~/cache-$archive_name/
fi

popd

fi

0 comments on commit b82e601

Please sign in to comment.