Use keys from dependencies JSON

This commit is contained in:
Andrew Murray 2026-04-15 19:59:52 +10:00
parent 658d9ce258
commit ff00aaa6d3

View File

@ -114,35 +114,17 @@ ARCHITECTURES = {
"ARM64": {"vcvars_arch": "x86_arm64", "msbuild_arch": "ARM64"}, "ARM64": {"vcvars_arch": "x86_arm64", "msbuild_arch": "ARM64"},
} }
_versions = json.loads( V = json.loads(
(Path(__file__).parents[1] / ".github" / "dependencies.json").read_text() (Path(__file__).parents[1] / ".github" / "dependencies.json").read_text()
) )
V["libpng-xy"] = "".join(V["libpng"].split(".")[:2])
V = {
"BROTLI": _versions["brotli"],
"FREETYPE": _versions["freetype"],
"FRIBIDI": _versions["fribidi"],
"HARFBUZZ": _versions["harfbuzz"],
"JPEGTURBO": _versions["jpegturbo"],
"LCMS2": _versions["lcms2"],
"LIBAVIF": _versions["libavif"],
"LIBIMAGEQUANT": _versions["libimagequant"],
"LIBPNG": _versions["libpng"],
"LIBWEBP": _versions["libwebp"],
"OPENJPEG": _versions["openjpeg"],
"TIFF": _versions["tiff"],
"XZ": _versions["xz"],
"ZLIBNG": _versions["zlib-ng"],
}
V["LIBPNG_XY"] = "".join(V["LIBPNG"].split(".")[:2])
# dependencies, listed in order of compilation # dependencies, listed in order of compilation
DEPS: dict[str, dict[str, Any]] = { DEPS: dict[str, dict[str, Any]] = {
"libjpeg": { "libjpeg": {
"url": f"https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/{V['JPEGTURBO']}/libjpeg-turbo-{V['JPEGTURBO']}.tar.gz", "url": f"https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/{V['jpegturbo']}/libjpeg-turbo-{V['jpegturbo']}.tar.gz",
"filename": f"libjpeg-turbo-{V['JPEGTURBO']}.tar.gz", "filename": f"libjpeg-turbo-{V['jpegturbo']}.tar.gz",
"license": ["README.ijg", "LICENSE.md"], "license": ["README.ijg", "LICENSE.md"],
"license_pattern": ( "license_pattern": (
"(LEGAL ISSUES\n============\n\n.+?)\n\nREFERENCES\n==========" "(LEGAL ISSUES\n============\n\n.+?)\n\nREFERENCES\n=========="
@ -169,8 +151,8 @@ DEPS: dict[str, dict[str, Any]] = {
"bins": ["djpeg.exe"], "bins": ["djpeg.exe"],
}, },
"zlib": { "zlib": {
"url": f"https://github.com/zlib-ng/zlib-ng/archive/refs/tags/{V['ZLIBNG']}.tar.gz", "url": f"https://github.com/zlib-ng/zlib-ng/archive/refs/tags/{V['zlib-ng']}.tar.gz",
"filename": f"zlib-ng-{V['ZLIBNG']}.tar.gz", "filename": f"zlib-ng-{V['zlib-ng']}.tar.gz",
"license": "LICENSE.md", "license": "LICENSE.md",
"patch": { "patch": {
r"CMakeLists.txt": { r"CMakeLists.txt": {
@ -186,8 +168,8 @@ DEPS: dict[str, dict[str, Any]] = {
"libs": [r"zlib.lib"], "libs": [r"zlib.lib"],
}, },
"xz": { "xz": {
"url": f"https://github.com/tukaani-project/xz/releases/download/v{V['XZ']}/FILENAME", "url": f"https://github.com/tukaani-project/xz/releases/download/v{V['xz']}/FILENAME",
"filename": f"xz-{V['XZ']}.tar.gz", "filename": f"xz-{V['xz']}.tar.gz",
"license": "COPYING", "license": "COPYING",
"build": [ "build": [
*cmds_cmake("liblzma", "-DBUILD_SHARED_LIBS:BOOL=OFF"), *cmds_cmake("liblzma", "-DBUILD_SHARED_LIBS:BOOL=OFF"),
@ -199,7 +181,7 @@ DEPS: dict[str, dict[str, Any]] = {
}, },
"libwebp": { "libwebp": {
"url": "http://downloads.webmproject.org/releases/webp/FILENAME", "url": "http://downloads.webmproject.org/releases/webp/FILENAME",
"filename": f"libwebp-{V['LIBWEBP']}.tar.gz", "filename": f"libwebp-{V['libwebp']}.tar.gz",
"license": "COPYING", "license": "COPYING",
"patch": { "patch": {
r"src\enc\picture_csp_enc.c": { r"src\enc\picture_csp_enc.c": {
@ -220,7 +202,7 @@ DEPS: dict[str, dict[str, Any]] = {
}, },
"libtiff": { "libtiff": {
"url": "https://download.osgeo.org/libtiff/FILENAME", "url": "https://download.osgeo.org/libtiff/FILENAME",
"filename": f"tiff-{V['TIFF']}.tar.gz", "filename": f"tiff-{V['tiff']}.tar.gz",
"license": "LICENSE.md", "license": "LICENSE.md",
"patch": { "patch": {
r"libtiff\tif_lzma.c": { r"libtiff\tif_lzma.c": {
@ -244,22 +226,22 @@ DEPS: dict[str, dict[str, Any]] = {
"libs": [r"libtiff\*.lib"], "libs": [r"libtiff\*.lib"],
}, },
"libpng": { "libpng": {
"url": f"{SF_PROJECTS}/libpng/files/libpng{V['LIBPNG_XY']}/{V['LIBPNG']}/" "url": f"{SF_PROJECTS}/libpng/files/libpng{V['libpng-xy']}/{V['libpng']}/"
f"FILENAME/download", f"FILENAME/download",
"filename": f"libpng-{V['LIBPNG']}.tar.gz", "filename": f"libpng-{V['libpng']}.tar.gz",
"license": "LICENSE", "license": "LICENSE",
"build": [ "build": [
*cmds_cmake("png_static", "-DPNG_SHARED:BOOL=OFF", "-DPNG_TESTS:BOOL=OFF"), *cmds_cmake("png_static", "-DPNG_SHARED:BOOL=OFF", "-DPNG_TESTS:BOOL=OFF"),
cmd_copy( cmd_copy(
f"libpng{V['LIBPNG_XY']}_static.lib", f"libpng{V['LIBPNG_XY']}.lib" f"libpng{V['libpng-xy']}_static.lib", f"libpng{V['libpng-xy']}.lib"
), ),
], ],
"headers": [r"png*.h"], "headers": [r"png*.h"],
"libs": [f"libpng{V['LIBPNG_XY']}.lib"], "libs": [f"libpng{V['libpng-xy']}.lib"],
}, },
"brotli": { "brotli": {
"url": f"https://github.com/google/brotli/archive/refs/tags/v{V['BROTLI']}.tar.gz", "url": f"https://github.com/google/brotli/archive/refs/tags/v{V['brotli']}.tar.gz",
"filename": f"brotli-{V['BROTLI']}.tar.gz", "filename": f"brotli-{V['brotli']}.tar.gz",
"license": "LICENSE", "license": "LICENSE",
"build": [ "build": [
*cmds_cmake(("brotlicommon", "brotlidec"), "-DBUILD_SHARED_LIBS:BOOL=OFF"), *cmds_cmake(("brotlicommon", "brotlidec"), "-DBUILD_SHARED_LIBS:BOOL=OFF"),
@ -269,7 +251,7 @@ DEPS: dict[str, dict[str, Any]] = {
}, },
"freetype": { "freetype": {
"url": "https://download.savannah.gnu.org/releases/freetype/FILENAME", "url": "https://download.savannah.gnu.org/releases/freetype/FILENAME",
"filename": f"freetype-{V['FREETYPE']}.tar.gz", "filename": f"freetype-{V['freetype']}.tar.gz",
"license": ["LICENSE.TXT", r"docs\FTL.TXT", r"docs\GPLv2.TXT"], "license": ["LICENSE.TXT", r"docs\FTL.TXT", r"docs\GPLv2.TXT"],
"patch": { "patch": {
r"builds\windows\vc2010\freetype.vcxproj": { r"builds\windows\vc2010\freetype.vcxproj": {
@ -282,7 +264,7 @@ DEPS: dict[str, dict[str, Any]] = {
"<UserDefines></UserDefines>": "<UserDefines>FT_CONFIG_OPTION_SYSTEM_ZLIB;FT_CONFIG_OPTION_USE_PNG;FT_CONFIG_OPTION_USE_HARFBUZZ;FT_CONFIG_OPTION_USE_BROTLI</UserDefines>", # noqa: E501 "<UserDefines></UserDefines>": "<UserDefines>FT_CONFIG_OPTION_SYSTEM_ZLIB;FT_CONFIG_OPTION_USE_PNG;FT_CONFIG_OPTION_USE_HARFBUZZ;FT_CONFIG_OPTION_USE_BROTLI</UserDefines>", # noqa: E501
"<UserIncludeDirectories></UserIncludeDirectories>": r"<UserIncludeDirectories>{dir_harfbuzz}\src;{inc_dir}</UserIncludeDirectories>", # noqa: E501 "<UserIncludeDirectories></UserIncludeDirectories>": r"<UserIncludeDirectories>{dir_harfbuzz}\src;{inc_dir}</UserIncludeDirectories>", # noqa: E501
"<UserLibraryDirectories></UserLibraryDirectories>": "<UserLibraryDirectories>{lib_dir}</UserLibraryDirectories>", # noqa: E501 "<UserLibraryDirectories></UserLibraryDirectories>": "<UserLibraryDirectories>{lib_dir}</UserLibraryDirectories>", # noqa: E501
"<UserDependencies></UserDependencies>": f"<UserDependencies>zlib.lib;libpng{V['LIBPNG_XY']}.lib;brotlicommon.lib;brotlidec.lib</UserDependencies>", # noqa: E501 "<UserDependencies></UserDependencies>": f"<UserDependencies>zlib.lib;libpng{V['libpng-xy']}.lib;brotlicommon.lib;brotlidec.lib</UserDependencies>", # noqa: E501
}, },
r"src/autofit/afshaper.c": { r"src/autofit/afshaper.c": {
# link against harfbuzz.lib # link against harfbuzz.lib
@ -302,8 +284,8 @@ DEPS: dict[str, dict[str, Any]] = {
"libs": [r"objs\{msbuild_arch}\Release Static\freetype.lib"], "libs": [r"objs\{msbuild_arch}\Release Static\freetype.lib"],
}, },
"lcms2": { "lcms2": {
"url": f"{SF_PROJECTS}/lcms/files/lcms/{V['LCMS2']}/FILENAME/download", "url": f"{SF_PROJECTS}/lcms/files/lcms/{V['lcms2']}/FILENAME/download",
"filename": f"lcms2-{V['LCMS2']}.tar.gz", "filename": f"lcms2-{V['lcms2']}.tar.gz",
"license": "LICENSE", "license": "LICENSE",
"patch": { "patch": {
r"Projects\VC2022\lcms2_static\lcms2_static.vcxproj": { r"Projects\VC2022\lcms2_static\lcms2_static.vcxproj": {
@ -327,21 +309,21 @@ DEPS: dict[str, dict[str, Any]] = {
"libs": [r"Lib\MS\*.lib"], "libs": [r"Lib\MS\*.lib"],
}, },
"openjpeg": { "openjpeg": {
"url": f"https://github.com/uclouvain/openjpeg/archive/v{V['OPENJPEG']}.tar.gz", "url": f"https://github.com/uclouvain/openjpeg/archive/v{V['openjpeg']}.tar.gz",
"filename": f"openjpeg-{V['OPENJPEG']}.tar.gz", "filename": f"openjpeg-{V['openjpeg']}.tar.gz",
"license": "LICENSE", "license": "LICENSE",
"build": [ "build": [
*cmds_cmake( *cmds_cmake(
"openjp2", "-DBUILD_CODEC:BOOL=OFF", "-DBUILD_SHARED_LIBS:BOOL=OFF" "openjp2", "-DBUILD_CODEC:BOOL=OFF", "-DBUILD_SHARED_LIBS:BOOL=OFF"
), ),
cmd_mkdir(rf"{{inc_dir}}\openjpeg-{V['OPENJPEG']}"), cmd_mkdir(rf"{{inc_dir}}\openjpeg-{V['openjpeg']}"),
cmd_copy(r"src\lib\openjp2\*.h", rf"{{inc_dir}}\openjpeg-{V['OPENJPEG']}"), cmd_copy(r"src\lib\openjp2\*.h", rf"{{inc_dir}}\openjpeg-{V['openjpeg']}"),
], ],
"libs": [r"bin\*.lib"], "libs": [r"bin\*.lib"],
}, },
"libimagequant": { "libimagequant": {
"url": "https://github.com/ImageOptim/libimagequant/archive/{V['LIBIMAGEQUANT']}.tar.gz", "url": "https://github.com/ImageOptim/libimagequant/archive/{V['libimagequant']}.tar.gz",
"filename": f"libimagequant-{V['LIBIMAGEQUANT']}.tar.gz", "filename": f"libimagequant-{V['libimagequant']}.tar.gz",
"license": "COPYRIGHT", "license": "COPYRIGHT",
"build": [ "build": [
cmd_cd("imagequant-sys"), cmd_cd("imagequant-sys"),
@ -351,8 +333,8 @@ DEPS: dict[str, dict[str, Any]] = {
"libs": [r"..\target\release\imagequant_sys.lib"], "libs": [r"..\target\release\imagequant_sys.lib"],
}, },
"harfbuzz": { "harfbuzz": {
"url": f"https://github.com/harfbuzz/harfbuzz/releases/download/{V['HARFBUZZ']}/FILENAME", "url": f"https://github.com/harfbuzz/harfbuzz/releases/download/{V['harfbuzz']}/FILENAME",
"filename": f"harfbuzz-{V['HARFBUZZ']}.tar.xz", "filename": f"harfbuzz-{V['harfbuzz']}.tar.xz",
"license": "COPYING", "license": "COPYING",
"build": [ "build": [
*cmds_cmake( *cmds_cmake(
@ -365,11 +347,11 @@ DEPS: dict[str, dict[str, Any]] = {
"libs": [r"*.lib"], "libs": [r"*.lib"],
}, },
"fribidi": { "fribidi": {
"url": f"https://github.com/fribidi/fribidi/archive/v{V['FRIBIDI']}.zip", "url": f"https://github.com/fribidi/fribidi/archive/v{V['fribidi']}.zip",
"filename": f"fribidi-{V['FRIBIDI']}.zip", "filename": f"fribidi-{V['fribidi']}.zip",
"license": "COPYING", "license": "COPYING",
"build": [ "build": [
cmd_copy(r"COPYING", rf"{{bin_dir}}\fribidi-{V['FRIBIDI']}-COPYING"), cmd_copy(r"COPYING", rf"{{bin_dir}}\fribidi-{V['fribidi']}-COPYING"),
cmd_copy(r"{winbuild_dir}\fribidi.cmake", r"CMakeLists.txt"), cmd_copy(r"{winbuild_dir}\fribidi.cmake", r"CMakeLists.txt"),
# generated tab.i files cannot be cross-compiled # generated tab.i files cannot be cross-compiled
" ^&^& ".join( " ^&^& ".join(
@ -383,8 +365,8 @@ DEPS: dict[str, dict[str, Any]] = {
"bins": [r"*.dll"], "bins": [r"*.dll"],
}, },
"libavif": { "libavif": {
"url": f"https://github.com/AOMediaCodec/libavif/archive/v{V['LIBAVIF']}.tar.gz", "url": f"https://github.com/AOMediaCodec/libavif/archive/v{V['libavif']}.tar.gz",
"filename": f"libavif-{V['LIBAVIF']}.tar.gz", "filename": f"libavif-{V['libavif']}.tar.gz",
"license": "LICENSE", "license": "LICENSE",
"build": [ "build": [
"rustup update", "rustup update",