Skip to content

Commit 433e464

Browse files
authored
Move dependency versions to single JSON and enable Renovate (#9559)
2 parents 082cf04 + 6dd03ed commit 433e464

File tree

6 files changed

+219
-36
lines changed

6 files changed

+219
-36
lines changed

.github/dependencies.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"brotli": "1.2.0",
3+
"bzip2": "1.0.8",
4+
"freetype": "2.14.3",
5+
"fribidi": "1.0.16",
6+
"harfbuzz": "13.2.1",
7+
"jpegturbo": "3.1.4.1",
8+
"lcms2": "2.18",
9+
"libavif": "1.4.1",
10+
"libimagequant": "4.4.1",
11+
"libpng": "1.6.56",
12+
"libwebp": "1.6.0",
13+
"libxcb": "1.17.0",
14+
"openjpeg": "2.5.4",
15+
"tiff": "4.7.1",
16+
"xz": "5.8.3",
17+
"zlib-ng": "2.3.3",
18+
"zstd": "1.5.7"
19+
}

.github/renovate.json

Lines changed: 158 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,168 @@
77
"Dependency"
88
],
99
"minimumReleaseAge": "7 days",
10+
"schedule": [
11+
"* * 3 * *"
12+
],
13+
"customManagers": [
14+
{
15+
"customType": "regex",
16+
"managerFilePatterns": ["/^\\.github/dependencies\\.json$/"],
17+
"matchStrings": ["\"brotli\":\\s*\"(?<currentValue>\\d+[^\"]*?)\""],
18+
"depNameTemplate": "brotli",
19+
"packageNameTemplate": "google/brotli",
20+
"datasourceTemplate": "github-releases",
21+
"extractVersionTemplate": "^v(?<version>.+)$"
22+
},
23+
{
24+
"customType": "regex",
25+
"managerFilePatterns": ["/^\\.github/dependencies\\.json$/"],
26+
"matchStrings": ["\"fribidi\":\\s*\"(?<currentValue>\\d+[^\"]*?)\""],
27+
"depNameTemplate": "fribidi",
28+
"packageNameTemplate": "fribidi/fribidi",
29+
"datasourceTemplate": "github-releases",
30+
"extractVersionTemplate": "^v(?<version>.+)$"
31+
},
32+
{
33+
"customType": "regex",
34+
"managerFilePatterns": ["/^\\.github/dependencies\\.json$/"],
35+
"matchStrings": ["\"harfbuzz\":\\s*\"(?<currentValue>\\d+[^\"]*?)\""],
36+
"depNameTemplate": "harfbuzz",
37+
"packageNameTemplate": "harfbuzz/harfbuzz",
38+
"datasourceTemplate": "github-releases"
39+
},
40+
{
41+
"customType": "regex",
42+
"managerFilePatterns": ["/^\\.github/dependencies\\.json$/"],
43+
"matchStrings": ["\"jpegturbo\":\\s*\"(?<currentValue>\\d+[^\"]*?)\""],
44+
"depNameTemplate": "jpegturbo",
45+
"packageNameTemplate": "libjpeg-turbo/libjpeg-turbo",
46+
"datasourceTemplate": "github-releases"
47+
},
48+
{
49+
"customType": "regex",
50+
"managerFilePatterns": ["/^\\.github/dependencies\\.json$/"],
51+
"matchStrings": ["\"lcms2\":\\s*\"(?<currentValue>\\d+[^\"]*?)\""],
52+
"depNameTemplate": "lcms2",
53+
"packageNameTemplate": "mm2/Little-CMS",
54+
"datasourceTemplate": "github-releases",
55+
"extractVersionTemplate": "^lcms(?<version>.+)$"
56+
},
57+
{
58+
"customType": "regex",
59+
"managerFilePatterns": ["/^\\.github/dependencies\\.json$/"],
60+
"matchStrings": ["\"libavif\":\\s*\"(?<currentValue>\\d+[^\"]*?)\""],
61+
"depNameTemplate": "libavif",
62+
"packageNameTemplate": "AOMediaCodec/libavif",
63+
"datasourceTemplate": "github-releases",
64+
"extractVersionTemplate": "^v(?<version>.+)$"
65+
},
66+
{
67+
"customType": "regex",
68+
"managerFilePatterns": ["/^\\.github/dependencies\\.json$/"],
69+
"matchStrings": ["\"libimagequant\":\\s*\"(?<currentValue>\\d+[^\"]*?)\""],
70+
"depNameTemplate": "libimagequant",
71+
"packageNameTemplate": "ImageOptim/libimagequant",
72+
"datasourceTemplate": "github-tags"
73+
},
74+
{
75+
"customType": "regex",
76+
"managerFilePatterns": ["/^\\.github/dependencies\\.json$/"],
77+
"matchStrings": ["\"libwebp\":\\s*\"(?<currentValue>\\d+[^\"]*?)\""],
78+
"depNameTemplate": "libwebp",
79+
"packageNameTemplate": "webmproject/libwebp",
80+
"datasourceTemplate": "github-tags",
81+
"extractVersionTemplate": "^v(?<version>.+)$"
82+
},
83+
{
84+
"customType": "regex",
85+
"managerFilePatterns": ["/^\\.github/dependencies\\.json$/"],
86+
"matchStrings": ["\"openjpeg\":\\s*\"(?<currentValue>\\d+[^\"]*?)\""],
87+
"depNameTemplate": "openjpeg",
88+
"packageNameTemplate": "uclouvain/openjpeg",
89+
"datasourceTemplate": "github-releases",
90+
"extractVersionTemplate": "^v(?<version>.+)$"
91+
},
92+
{
93+
"customType": "regex",
94+
"managerFilePatterns": ["/^\\.github/dependencies\\.json$/"],
95+
"matchStrings": ["\"tiff\":\\s*\"(?<currentValue>\\d+[^\"]*?)\""],
96+
"depNameTemplate": "tiff",
97+
"packageNameTemplate": "libtiff/libtiff",
98+
"datasourceTemplate": "gitlab-tags",
99+
"extractVersionTemplate": "^v(?<version>.+)$"
100+
},
101+
{
102+
"customType": "regex",
103+
"managerFilePatterns": ["/^\\.github/dependencies\\.json$/"],
104+
"matchStrings": ["\"xz\":\\s*\"(?<currentValue>\\d+[^\"]*?)\""],
105+
"depNameTemplate": "xz",
106+
"packageNameTemplate": "tukaani-project/xz",
107+
"datasourceTemplate": "github-releases",
108+
"extractVersionTemplate": "^v(?<version>.+)$"
109+
},
110+
{
111+
"customType": "regex",
112+
"managerFilePatterns": ["/^\\.github/dependencies\\.json$/"],
113+
"matchStrings": ["\"zlib-ng\":\\s*\"(?<currentValue>\\d+[^\"]*?)\""],
114+
"depNameTemplate": "zlib-ng",
115+
"packageNameTemplate": "zlib-ng/zlib-ng",
116+
"datasourceTemplate": "github-releases"
117+
},
118+
{
119+
"customType": "regex",
120+
"managerFilePatterns": ["/^\\.github/dependencies\\.json$/"],
121+
"matchStrings": ["\"zstd\":\\s*\"(?<currentValue>\\d+[^\"]*?)\""],
122+
"depNameTemplate": "zstd",
123+
"packageNameTemplate": "facebook/zstd",
124+
"datasourceTemplate": "github-releases",
125+
"extractVersionTemplate": "^v(?<version>.+)$"
126+
},
127+
{
128+
"customType": "regex",
129+
"managerFilePatterns": ["/^\\.github/dependencies\\.json$/"],
130+
"matchStrings": ["\"freetype\":\\s*\"(?<currentValue>\\d+[^\"]*?)\""],
131+
"depNameTemplate": "freetype",
132+
"packageNameTemplate": "freetype/freetype",
133+
"datasourceTemplate": "gitlab-tags",
134+
"registryUrlTemplate": "https://gitlab.freedesktop.org",
135+
"extractVersionTemplate": "^VER-(?<version>[\\d-]+)$",
136+
"versioningTemplate": "regex:^(?<major>\\d+)[.-](?<minor>\\d+)[.-](?<patch>\\d+)$"
137+
},
138+
{
139+
"customType": "regex",
140+
"managerFilePatterns": ["/^\\.github/dependencies\\.json$/"],
141+
"matchStrings": ["\"libpng\":\\s*\"(?<currentValue>\\d+[^\"]*?)\""],
142+
"depNameTemplate": "libpng",
143+
"packageNameTemplate": "pnggroup/libpng",
144+
"datasourceTemplate": "github-tags",
145+
"extractVersionTemplate": "^v(?<version>.+)$"
146+
},
147+
{
148+
"customType": "regex",
149+
"managerFilePatterns": ["/^\\.github/dependencies\\.json$/"],
150+
"matchStrings": ["\"libxcb\":\\s*\"(?<currentValue>\\d+[^\"]*?)\""],
151+
"depNameTemplate": "libxcb",
152+
"packageNameTemplate": "xorg/lib/libxcb",
153+
"datasourceTemplate": "gitlab-tags",
154+
"registryUrlTemplate": "https://gitlab.freedesktop.org",
155+
"extractVersionTemplate": "^libxcb-(?<version>.+)$"
156+
},
157+
{
158+
"customType": "regex",
159+
"managerFilePatterns": ["/^\\.github/dependencies\\.json$/"],
160+
"matchStrings": ["\"bzip2\":\\s*\"(?<currentValue>\\d+[^\"]*?)\""],
161+
"depNameTemplate": "bzip2",
162+
"packageNameTemplate": "bzip2/bzip2",
163+
"datasourceTemplate": "gitlab-tags",
164+
"extractVersionTemplate": "^bzip2-(?<version>.+)$"
165+
}
166+
],
10167
"packageRules": [
11168
{
12169
"groupName": "github-actions",
13-
"matchManagers": [
14-
"github-actions"
15-
],
170+
"matchManagers": ["github-actions"],
16171
"separateMajorMinor": false
17172
}
18-
],
19-
"schedule": [
20-
"* * 3 * *"
21173
]
22174
}

.github/workflows/cifuzz.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ on:
55
branches:
66
- "**"
77
paths:
8+
- ".github/dependencies.json"
89
- ".github/workflows/cifuzz.yml"
910
- ".github/workflows/wheels-dependencies.sh"
1011
- "**.c"
1112
- "**.h"
1213
pull_request:
1314
paths:
15+
- ".github/dependencies.json"
1416
- ".github/workflows/cifuzz.yml"
1517
- ".github/workflows/wheels-dependencies.sh"
1618
- "**.c"

.github/workflows/wheels-dependencies.sh

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -89,22 +89,23 @@ fi
8989

9090
ARCHIVE_SDIR=pillow-depends-main
9191

92-
# Package versions for fresh source builds.
93-
FREETYPE_VERSION=2.14.3
94-
HARFBUZZ_VERSION=13.2.1
95-
LIBPNG_VERSION=1.6.56
96-
JPEGTURBO_VERSION=3.1.4.1
97-
OPENJPEG_VERSION=2.5.4
98-
XZ_VERSION=5.8.3
99-
ZSTD_VERSION=1.5.7
100-
TIFF_VERSION=4.7.1
101-
LCMS2_VERSION=2.18
102-
ZLIB_NG_VERSION=2.3.3
103-
LIBWEBP_VERSION=1.6.0
104-
BZIP2_VERSION=1.0.8
105-
LIBXCB_VERSION=1.17.0
106-
BROTLI_VERSION=1.2.0
107-
LIBAVIF_VERSION=1.4.1
92+
VERSIONS_FILE="$PROJECTDIR/.github/dependencies.json"
93+
_get_ver() { python3 -c "import json; print(json.load(open('$VERSIONS_FILE'))['$1'])"; }
94+
FREETYPE_VERSION=$(_get_ver freetype)
95+
HARFBUZZ_VERSION=$(_get_ver harfbuzz)
96+
LIBPNG_VERSION=$(_get_ver libpng)
97+
JPEGTURBO_VERSION=$(_get_ver jpegturbo)
98+
OPENJPEG_VERSION=$(_get_ver openjpeg)
99+
XZ_VERSION=$(_get_ver xz)
100+
ZSTD_VERSION=$(_get_ver zstd)
101+
TIFF_VERSION=$(_get_ver tiff)
102+
LCMS2_VERSION=$(_get_ver lcms2)
103+
ZLIB_NG_VERSION=$(_get_ver zlib-ng)
104+
LIBWEBP_VERSION=$(_get_ver libwebp)
105+
BZIP2_VERSION=$(_get_ver bzip2)
106+
LIBXCB_VERSION=$(_get_ver libxcb)
107+
BROTLI_VERSION=$(_get_ver brotli)
108+
LIBAVIF_VERSION=$(_get_ver libavif)
108109

109110
function build_pkg_config {
110111
if [ -e pkg-config-stamp ]; then return; fi

.github/workflows/wheels.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ on:
1212
push:
1313
paths:
1414
- ".ci/requirements-cibw.txt"
15+
- ".github/dependencies.json"
1516
- ".github/workflows/wheel*"
1617
- "pyproject.toml"
1718
- "setup.py"
@@ -23,6 +24,7 @@ on:
2324
pull_request:
2425
paths:
2526
- ".ci/requirements-cibw.txt"
27+
- ".github/dependencies.json"
2628
- ".github/workflows/wheel*"
2729
- "pyproject.toml"
2830
- "setup.py"

winbuild/build_prepare.py

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
from __future__ import annotations
22

33
import argparse
4+
import json
45
import os
56
import platform
67
import re
78
import shutil
89
import struct
910
import subprocess
1011
import sys
12+
from pathlib import Path
1113
from typing import Any
1214

1315

@@ -112,21 +114,26 @@ def cmd_msbuild(
112114
"ARM64": {"vcvars_arch": "x86_arm64", "msbuild_arch": "ARM64"},
113115
}
114116

117+
_versions = json.loads(
118+
(Path(__file__).parents[1] / ".github" / "dependencies.json").read_text()
119+
)
120+
121+
115122
V = {
116-
"BROTLI": "1.2.0",
117-
"FREETYPE": "2.14.3",
118-
"FRIBIDI": "1.0.16",
119-
"HARFBUZZ": "13.2.1",
120-
"JPEGTURBO": "3.1.4.1",
121-
"LCMS2": "2.18",
122-
"LIBAVIF": "1.4.1",
123-
"LIBIMAGEQUANT": "4.4.1",
124-
"LIBPNG": "1.6.56",
125-
"LIBWEBP": "1.6.0",
126-
"OPENJPEG": "2.5.4",
127-
"TIFF": "4.7.1",
128-
"XZ": "5.8.3",
129-
"ZLIBNG": "2.3.3",
123+
"BROTLI": _versions["brotli"],
124+
"FREETYPE": _versions["freetype"],
125+
"FRIBIDI": _versions["fribidi"],
126+
"HARFBUZZ": _versions["harfbuzz"],
127+
"JPEGTURBO": _versions["jpegturbo"],
128+
"LCMS2": _versions["lcms2"],
129+
"LIBAVIF": _versions["libavif"],
130+
"LIBIMAGEQUANT": _versions["libimagequant"],
131+
"LIBPNG": _versions["libpng"],
132+
"LIBWEBP": _versions["libwebp"],
133+
"OPENJPEG": _versions["openjpeg"],
134+
"TIFF": _versions["tiff"],
135+
"XZ": _versions["xz"],
136+
"ZLIBNG": _versions["zlib-ng"],
130137
}
131138
V["LIBPNG_XY"] = "".join(V["LIBPNG"].split(".")[:2])
132139

0 commit comments

Comments
 (0)