[librsvg] Update to 2.40.23 (#48344)

This commit is contained in:
Andrew Kaster 2026-01-07 03:55:38 -07:00 committed by GitHub
parent f86152d27f
commit eeb00f1ecb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 156 additions and 326 deletions

View File

@ -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=""
$<$<BOOL:${MINGW}>: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
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
"$<INSTALL_INTERFACE:include/librsvg-${RSVG_API_VERSION}>"
)
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")

View File

@ -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 <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* Define if your <locale.h> file defines LC_MESSAGES. */
#define HAVE_LC_MESSAGES 1
/* Define to 1 if you have the <locale.h> header file. */
#define HAVE_LOCALE_H 1
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Have the pangoft2 library */
#define HAVE_PANGOFT2 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> 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 <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <unistd.h> 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

View File

@ -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 <libxml/SAX.h>
#include <libxml/xmlmemory.h>
@@ -32,6 +32,7 @@
#include "rsvg.h"
#include <libxml/parser.h>
+#include <libxml/tree.h>
#include <libxml/xmlmemory.h>
#include <pango/pango.h>
#include <glib.h>
#include <glib-object.h>

View File

@ -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@

View File

@ -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")

View File

@ -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
}
]

View File

@ -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",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "85c22ef305d34bac6c2b6ec93ab2ecad2f52dc91",
"version": "2.40.23",
"port-version": 0
},
{
"git-tree": "9c78df28102e2543c8c4346f6267bfd139de6896",
"version": "2.40.21",