From eeb00f1ecba68f68fad6a1ee93eec77921b3146e Mon Sep 17 00:00:00 2001 From: Andrew Kaster Date: Wed, 7 Jan 2026 03:55:38 -0700 Subject: [PATCH] [librsvg] Update to 2.40.23 (#48344) --- ports/librsvg/CMakeLists.txt | 199 ------------------ ports/librsvg/config.h.linux | 89 -------- ports/librsvg/fix-libxml2-2.13.5.patch | 16 +- .../meson-pkgconfig-and-def-file.patch | 119 +++++++++++ ports/librsvg/portfile.cmake | 41 ++-- ports/librsvg/vcpkg.json | 9 +- versions/baseline.json | 4 +- versions/l-/librsvg.json | 5 + 8 files changed, 156 insertions(+), 326 deletions(-) delete mode 100644 ports/librsvg/CMakeLists.txt delete mode 100644 ports/librsvg/config.h.linux create mode 100644 ports/librsvg/meson-pkgconfig-and-def-file.patch diff --git a/ports/librsvg/CMakeLists.txt b/ports/librsvg/CMakeLists.txt deleted file mode 100644 index 630dc443bd..0000000000 --- a/ports/librsvg/CMakeLists.txt +++ /dev/null @@ -1,199 +0,0 @@ -cmake_minimum_required(VERSION 3.11) -project(librsvg C) - -find_package(PkgConfig REQUIRED) -pkg_check_modules(LIBCROCO libcroco-0.6 IMPORTED_TARGET) -pkg_check_modules(GLIB2 glib-2.0 gobject-2.0 gmodule-2.0 gio-2.0 IMPORTED_TARGET) -pkg_check_modules(CAIRO cairo IMPORTED_TARGET) -pkg_check_modules(GDK_PIXBUF gdk-pixbuf-2.0 IMPORTED_TARGET) -pkg_check_modules(PANGO pango pangocairo IMPORTED_TARGET) -find_package(LibXml2 REQUIRED) - -if(CMAKE_SYSTEM_NAME MATCHES "Windows") -elseif(CMAKE_SYSTEM_NAME MATCHES "Linux") -else() - pkg_check_modules(PANGO2 pangoft2 pangofc IMPORTED_TARGET) - set(PANGO_FT2_LIB PkgConfig::PANGO2) -endif() - -set(RSVG_API_MAJOR_VERSION 2) -set(RSVG_API_VERSION "2.0") -Set(VERSION "2.40.20") -set(LIBRSVG_TARGET "rsvg-${RSVG_API_MAJOR_VERSION}") - -Set(prefix "${CMAKE_INSTALL_PREFIX}") -Set(exec_prefix "\${prefix}") -Set(libdir "\${prefix}/lib") -Set(includedir "\${prefix}/include") - -# Public required modules (cf. headers and librsvg.pc) -set(librsvg_pc_requires glib-2.0 gio-2.0 gdk-pixbuf-2.0 cairo) -# Other required modules from configure.ac -set(librsvg_pc_requires_private - libxml-2.0 - pangocairo - pangoft2 - cairo-png - libcroco-0.6 - gthread-2.0 - gmodule-2.0 - gobject-2.0 - gio-unix-2.0 - fontconfig -) -if(WIN32) - string(REPLACE "gio-unix" "gio-windows" librsvg_pc_requires_private "${librsvg_pc_requires_private}") -endif() - -find_package(PkgConfig REQUIRED) -pkg_check_modules(LIBRSVG_LINK_PUBLIC ${librsvg_pc_requires} IMPORTED_TARGET REQUIRED) -pkg_check_modules(LIBRSVG_LINK_PRIVATE ${librsvg_pc_requires_private} IMPORTED_TARGET REQUIRED) - -set(LIBRSVG_SOURCES - librsvg-features.c - rsvg-css.c - rsvg-css.h - rsvg-compat.h - rsvg-defs.c - rsvg-defs.h - rsvg-image.c - rsvg-image.h - rsvg-io.c - rsvg-io.h - rsvg-paint-server.c - rsvg-paint-server.h - rsvg-path.c - rsvg-path.h - rsvg-private.h - rsvg-base-file-util.c - rsvg-filter.c - rsvg-filter.h - rsvg-marker.c - rsvg-marker.h - rsvg-mask.c - rsvg-mask.h - rsvg-shapes.c - rsvg-shapes.h - rsvg-structure.c - rsvg-structure.h - rsvg-styles.c - rsvg-styles.h - rsvg-text.c - rsvg-text.h - rsvg-cond.c - rsvg-base.c - librsvg-enum-types.c - rsvg-cairo-draw.c - rsvg-cairo-draw.h - rsvg-cairo-render.c - rsvg-cairo-render.h - rsvg-cairo-clip.h - rsvg-cairo-clip.c - rsvg.c - rsvg-gobject.c - rsvg-file-util.c - rsvg-size-callback.c - rsvg-size-callback.h - rsvg-xml.c - rsvg-xml.h - rsvg.h - rsvg-cairo.h - librsvg-features.h - librsvg-enum-types.h -) - -if(WIN32) - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/config.h.win32" "${CMAKE_CURRENT_BINARY_DIR}/config.h" COPYONLY) - file(READ "${CMAKE_CURRENT_SOURCE_DIR}/rsvg.symbols" rsvg_symbols) - string(REGEX REPLACE "/[*][^*]*[*]/" "" rsvg_symbols "${rsvg_symbols}") - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/rsvg.def" "EXPORTS\n${rsvg_symbols}") - list(APPEND LIBRSVG_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/rsvg.def") -else() - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/config.h.linux" "${CMAKE_CURRENT_BINARY_DIR}/config.h" COPYONLY) - list(APPEND LIBRSVG_SOURCES rsvg.symbols) -endif() - -add_library(${LIBRSVG_TARGET} ${LIBRSVG_SOURCES}) -target_compile_definitions(${LIBRSVG_TARGET} PRIVATE - -DRSVG_COMPILATION - -D_CRT_SECURE_NO_WARNINGS - -DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}" - -DGDK_PIXBUF_ENABLE_BACKEND - -DG_LOG_DOMAIN="libpixbufloader-svg" - -DSRCDIR="" - $<$:HAVE_STRTOK_R> -) - -target_link_libraries(${LIBRSVG_TARGET} PRIVATE - PkgConfig::GLIB2 - ${LIBXML2_LIBRARIES} - PkgConfig::PANGO - PkgConfig::GDK_PIXBUF - ${PANGO_FT2_LIB} - PkgConfig::LIBCROCO -) - -target_include_directories(${LIBRSVG_TARGET} - PRIVATE - "${CMAKE_CURRENT_BINARY_DIR}" - PUBLIC - "$" - "$" -) -target_link_libraries(${LIBRSVG_TARGET} - PUBLIC - PkgConfig::LIBRSVG_LINK_PUBLIC - PRIVATE - PkgConfig::LIBRSVG_LINK_PRIVATE -) -install(TARGETS ${LIBRSVG_TARGET} - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib -) -install( - FILES - rsvg.h - rsvg-cairo.h - librsvg-features.h - librsvg-enum-types.h - DESTINATION include/librsvg-${RSVG_API_VERSION}/librsvg -) - -set(gdk_pixbuf_pc_requires_private gdk-pixbuf-2.0) -pkg_check_modules(GDK_PIXBUF ${gdk_pixbuf_pc_requires_private} IMPORTED_TARGET REQUIRED) -pkg_get_variable(GDK_PIXBUF_MODULEDIR ${gdk_pixbuf_pc_requires_private} gdk_pixbuf_moduledir) - -set(PIXBUFLOADERSVG_SOURCES - gdk-pixbuf-loader/io-svg.c -) - -add_library(pixbufloader-svg MODULE ${PIXBUFLOADERSVG_SOURCES}) -target_include_directories(pixbufloader-svg - PRIVATE - "${CMAKE_CURRENT_BINARY_DIR}" - "${CMAKE_CURRENT_SOURCE_DIR}" -) -target_compile_definitions(pixbufloader-svg PRIVATE - -DRSVG_COMPILATION - -D_CRT_SECURE_NO_WARNINGS - -DSRCDIR="" - -DGDK_PIXBUF_ENABLE_BACKEND - -DG_LOG_DOMAIN="libpixbufloader-svg" -) -target_link_libraries(pixbufloader-svg - PRIVATE - ${LIBRSVG_TARGET} - PkgConfig::GDK_PIXBUF -) -install(TARGETS pixbufloader-svg - RUNTIME DESTINATION "${GDK_PIXBUF_MODULEDIR}" - LIBRARY DESTINATION "${GDK_PIXBUF_MODULEDIR}" -) - -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/librsvg.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/librsvg.pc" @ONLY) -file(READ "${CMAKE_CURRENT_BINARY_DIR}/librsvg.pc" librsvg_pc) -list(JOIN librsvg_pc_requires_private " " requires_private) -string(REPLACE "Requires.private:" "Requires.private: ${requires_private}" librsvg_pc "${librsvg_pc}") -file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/librsvg.pc" "${librsvg_pc}") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/librsvg.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig" RENAME "librsvg-${RSVG_API_VERSION}.pc") diff --git a/ports/librsvg/config.h.linux b/ports/librsvg/config.h.linux deleted file mode 100644 index c3881b8c99..0000000000 --- a/ports/librsvg/config.h.linux +++ /dev/null @@ -1,89 +0,0 @@ -/* config.h. Generated from config.h.in by configure. */ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* Define if building universal (internal helper macro) */ -/* #undef AC_APPLE_UNIVERSAL_BUILD */ - -/* Define to 1 if you have the header file. */ -#define HAVE_DLFCN_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define if your file defines LC_MESSAGES. */ -#define HAVE_LC_MESSAGES 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_LOCALE_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 - -/* Have the pangoft2 library */ -#define HAVE_PANGOFT2 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the `strtok_r' function. */ -#define HAVE_STRTOK_R 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_UNISTD_H 1 - -/* Define to the sub-directory where libtool stores uninstalled libraries. */ -#define LT_OBJDIR ".libs/" - -/* Name of package */ -#define PACKAGE "librsvg" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "https://bugzilla.gnome.org/enter_bug.cgi?product=librsvg" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "RSVG" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "RSVG 2.40.20" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "librsvg" - -/* Define to the home page for this package. */ -#define PACKAGE_URL "" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "2.40.20" - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Version number of package */ -#define VERSION "2.40.20" - -/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most - significant byte first (like Motorola and SPARC, unlike Intel). */ -#if defined AC_APPLE_UNIVERSAL_BUILD -# if defined __BIG_ENDIAN__ -# define WORDS_BIGENDIAN 1 -# endif -#else -# ifndef WORDS_BIGENDIAN -/* # undef WORDS_BIGENDIAN */ -# endif -#endif diff --git a/ports/librsvg/fix-libxml2-2.13.5.patch b/ports/librsvg/fix-libxml2-2.13.5.patch index 634f659f88..f9e30d184f 100644 --- a/ports/librsvg/fix-libxml2-2.13.5.patch +++ b/ports/librsvg/fix-libxml2-2.13.5.patch @@ -1,8 +1,8 @@ diff --git a/rsvg-css.c b/rsvg-css.c -index 5b359a206..4f59281b6 100644 +index 3f3403f6f..c2bd7d757 100644 --- a/rsvg-css.c +++ b/rsvg-css.c -@@ -839,7 +839,7 @@ rsvg_css_parse_overflow (const char *str, gboolean * inherit) +@@ -843,7 +843,7 @@ rsvg_css_parse_overflow (const char *str, gboolean * inherit) } static void @@ -12,14 +12,14 @@ index 5b359a206..4f59281b6 100644 } diff --git a/rsvg-private.h b/rsvg-private.h -index 82157bc..fb9c4e0 100644 +index 205c0346f..87536e6db 100644 --- a/rsvg-private.h +++ b/rsvg-private.h -@@ -33,6 +33,7 @@ - - #include - #include +@@ -32,6 +32,7 @@ + #include "rsvg.h" + + #include +#include + #include #include #include - #include diff --git a/ports/librsvg/meson-pkgconfig-and-def-file.patch b/ports/librsvg/meson-pkgconfig-and-def-file.patch new file mode 100644 index 0000000000..ef87d59a68 --- /dev/null +++ b/ports/librsvg/meson-pkgconfig-and-def-file.patch @@ -0,0 +1,119 @@ +diff --git a/meson.build b/meson.build +index 9666b692b..677721f29 100644 +--- a/meson.build ++++ b/meson.build +@@ -11,6 +11,7 @@ if not ['shared', 'static'].contains(get_option('default_library')) + endif + + gnome = import('gnome') ++fs = import('fs') + cc = meson.get_compiler('c') + + ver_split = meson.project_version().split('.') +@@ -20,6 +21,7 @@ librsvg_api_major = api_split[0] + librsvg_api_minor = api_split[1] + + rsvg_ver = 'rsvg-@0@'.format(librsvg_api_major) ++librsvg_pc = 'librsvg-@0@'.format(librsvg_api_version) + + glib_required = '>= 2.38.0' + libxml_required = '>= 2.9.0' +@@ -52,6 +54,21 @@ croco_dep = dependency('libcroco-0.6', + + libm = cc.find_library('m', required: false) + ++library_dependencies = [ ++ cairo_dep, ++ gio_dep, ++ glib_dep, ++ gdk_pixbuf_dep, ++] ++private_dependencies = [ ++ cairo_png_dep, ++ croco_dep, ++ libm, ++ libxml_dep, ++ pangocairo_dep, ++ pangoft2_dep, ++] ++ + config = configuration_data() + config.set('HAVE_PANGOFT2', pangoft2_dep.found()) + config.set('HAVE_STRINGS_H', cc.has_header('strings.h')) +@@ -65,7 +82,7 @@ features.set('LIBRSVG_MAJOR_VERSION', ver_split[0]) + features.set('LIBRSVG_MINOR_VERSION', ver_split[1]) + features.set('LIBRSVG_MICRO_VERSION', ver_split[2]) + features.set('PACKAGE_VERSION', meson.project_version()) +-configure_file(input: 'librsvg-features.h.in', ++features_header = configure_file(input: 'librsvg-features.h.in', + output: 'librsvg-features.h', + configuration: features) + +@@ -104,7 +121,31 @@ librsvg_src = [ + 'rsvg-xml.c', + ] + +-enums = gnome.mkenums_simple('librsvg-enum-types', sources: librsvg_headers) ++enums = gnome.mkenums_simple( ++ 'librsvg-enum-types', ++ sources: librsvg_headers, ++ install_header: true, ++ install_dir: '@0@/@1@/librsvg'.format(get_option('includedir'), librsvg_pc), ++) ++ ++install_headers( ++ librsvg_headers + [features_header], ++ subdir: '@0@/librsvg'.format(librsvg_pc), ++) ++ ++# Generate librsvg.def using configure_file and rsvg.def.in ++symbols_content = '' ++foreach line : fs.read('rsvg.symbols').split('\n') ++ if not line.strip().startswith('/*') ++ symbols_content += line + '\n' ++ endif ++endforeach ++ ++librsvg_defs = configure_file( ++ input: 'rsvg.def.in', ++ output: 'librsvg.def', ++ configuration: {'SYMBOLS': symbols_content.strip()} ++) + + rsvg_lib = library(rsvg_ver, librsvg_src, enums, + c_args: [ +@@ -127,6 +168,7 @@ rsvg_lib = library(rsvg_ver, librsvg_src, enums, + libm + ], + install: true, ++ vs_module_defs: librsvg_defs, + soversion: ver_split[0] + ) + +@@ -150,6 +192,18 @@ librsvg_dep = declare_dependency( + ] + ) + ++pkg = import('pkgconfig') ++ ++librsvg_pc = pkg.generate( ++ name : 'librsvg', ++ filebase: librsvg_pc, ++ description : 'library that renders svg files', ++ libraries : rsvg_lib, ++ subdirs: librsvg_pc, ++ requires: library_dependencies, ++ libraries_private: private_dependencies, ++) ++ + if get_option('tests').allowed() + subdir('tests') + endif +diff --git a/rsvg.def.in b/rsvg.def.in +new file mode 100644 +index 000000000..b0a8f26cc +--- /dev/null ++++ b/rsvg.def.in +@@ -0,0 +1,2 @@ ++EXPORTS ++@SYMBOLS@ diff --git a/ports/librsvg/portfile.cmake b/ports/librsvg/portfile.cmake index 0788708373..d05aacf51f 100644 --- a/ports/librsvg/portfile.cmake +++ b/ports/librsvg/portfile.cmake @@ -1,43 +1,34 @@ # port update requires rust/cargo string(REGEX REPLACE "^([0-9]*[.][0-9]*)[.].*" "\\1" MAJOR_MINOR "${VERSION}") -vcpkg_download_distfile(ARCHIVE - URLS - "https://download.gnome.org/sources/librsvg/${MAJOR_MINOR}/librsvg-${VERSION}.tar.xz" - "https://www.mirrorservice.org/sites/ftp.gnome.org/pub/GNOME/sources/librsvg/${MAJOR_MINOR}/librsvg-${VERSION}.tar.xz" - FILENAME "librsvg-${VERSION}.tar.xz" - SHA512 db0563d8e0edaae642a6b2bcd239cf54191495058ac8c7ff614ebaf88c0e30bd58dbcd41f58d82a9d5ed200ced45fc5bae22f2ed3cf3826e9348a497009e1280 -) -vcpkg_extract_source_archive( - SOURCE_PATH - ARCHIVE "${ARCHIVE}" +# NOTE: Using GitHub mirror to avoid Anubis check failure on GNOME GitLab +# https://github.com/microsoft/vcpkg/issues/48350 +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO GNOME/librsvg + REF librsvg-gtk-${VERSION} + SHA512 1fe06d7e745a53f3aee7b1942f7551c5716ec6abf328fa395006a7aede9f4ef242d604d5f8069c397d86ec3ac095daf49b18b2b34abc67fdcd4a113207fd6a96 + HEAD_REF master # branch name PATCHES fix-libxml2-2.13.5.patch + meson-pkgconfig-and-def-file.patch ) -file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" "${CMAKE_CURRENT_LIST_DIR}/config.h.linux" DESTINATION "${SOURCE_PATH}") - -vcpkg_find_acquire_program(PKGCONFIG) -vcpkg_cmake_configure( +vcpkg_configure_meson( SOURCE_PATH "${SOURCE_PATH}" OPTIONS - "-DPKG_CONFIG_EXECUTABLE=${PKGCONFIG}" + "-Dtests=disabled" + "-Drsvg-convert=disabled" + "-Drsvg-view-3=disabled" + ADDITIONAL_BINARIES + glib-mkenums='${CURRENT_HOST_INSTALLED_DIR}/tools/glib/glib-mkenums' ) -vcpkg_cmake_install() +vcpkg_install_meson() vcpkg_copy_pdbs() vcpkg_fixup_pkgconfig() -if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) - file(GLOB_RECURSE pc_files "${CURRENT_PACKAGES_DIR}/*.pc") - foreach(pc_file IN LISTS pc_files) - vcpkg_replace_string("${pc_file}" " -lm" "") - endforeach() -endif() - -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") - file(COPY "${CURRENT_PORT_DIR}/unofficial-librsvg-config.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/unofficial-librsvg") file(COPY "${CURRENT_PORT_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING") diff --git a/ports/librsvg/vcpkg.json b/ports/librsvg/vcpkg.json index 0645837e04..30463fbb72 100644 --- a/ports/librsvg/vcpkg.json +++ b/ports/librsvg/vcpkg.json @@ -1,7 +1,6 @@ { "name": "librsvg", - "version": "2.40.21", - "port-version": 2, + "version": "2.40.23", "description": "A small library to render Scalable Vector Graphics (SVG)", "homepage": "https://gitlab.gnome.org/GNOME/librsvg", "license": "LGPL-2.0-or-later", @@ -10,6 +9,10 @@ "fontconfig", "gdk-pixbuf", "glib", + { + "name": "glib", + "host": true + }, "libcroco", { "name": "libxml2", @@ -17,7 +20,7 @@ }, "pango", { - "name": "vcpkg-cmake", + "name": "vcpkg-tool-meson", "host": true } ] diff --git a/versions/baseline.json b/versions/baseline.json index b653ce314c..e4fdbb0b9c 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -5401,8 +5401,8 @@ "port-version": 0 }, "librsvg": { - "baseline": "2.40.21", - "port-version": 2 + "baseline": "2.40.23", + "port-version": 0 }, "librsync": { "baseline": "2.3.4", diff --git a/versions/l-/librsvg.json b/versions/l-/librsvg.json index 536d16982b..7e6561a150 100644 --- a/versions/l-/librsvg.json +++ b/versions/l-/librsvg.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "85c22ef305d34bac6c2b6ec93ab2ecad2f52dc91", + "version": "2.40.23", + "port-version": 0 + }, { "git-tree": "9c78df28102e2543c8c4346f6267bfd139de6896", "version": "2.40.21",