summaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
Diffstat (limited to 'graphics')
-rw-r--r--graphics/Makefile2
-rw-r--r--graphics/R-cran-pixmap/Makefile2
-rw-r--r--graphics/R-cran-pixmap/distinfo6
-rw-r--r--graphics/aeskulap/Makefile20
-rw-r--r--graphics/aeskulap/pkg-plist1
-rw-r--r--graphics/art/Makefile1
-rw-r--r--graphics/colmap/Makefile2
-rw-r--r--graphics/colmap/distinfo6
-rw-r--r--graphics/converseen/Makefile2
-rw-r--r--graphics/converseen/distinfo6
-rw-r--r--graphics/cosmoplayer/Makefile40
-rw-r--r--graphics/cosmoplayer/distinfo2
-rw-r--r--graphics/cosmoplayer/pkg-descr4
-rw-r--r--graphics/ctl/Makefile8
-rw-r--r--graphics/ctl/distinfo8
-rw-r--r--graphics/ctl/files/patch-OpenEXR__CTL_exrdpx_exrToDpx.cpp19
-rw-r--r--graphics/ctl/pkg-plist11
-rw-r--r--graphics/dataplot/Makefile29
-rw-r--r--graphics/dataplot/distinfo6
-rw-r--r--graphics/dataplot/files/patch-Makefile20
-rw-r--r--graphics/drawio/Makefile2
-rw-r--r--graphics/filament/Makefile9
-rw-r--r--graphics/filament/distinfo6
-rw-r--r--graphics/filament/files/patch-CMakeLists.txt4
-rw-r--r--graphics/filament/files/patch-filament_backend_src_PlatformFactory.cpp6
-rw-r--r--graphics/filament/files/patch-libs_bluevk_include_bluevk_BlueVK.h4
-rw-r--r--graphics/filament/files/patch-libs_utils_CMakeLists.txt6
-rw-r--r--graphics/filament/files/patch-third__party_perfetto_perfetto_perfetto.cc40
-rw-r--r--graphics/filament/files/patch-third__party_perfetto_perfetto_perfetto.h42
-rw-r--r--graphics/filament/pkg-plist48
-rw-r--r--graphics/gdk-pixbuf2/Makefile5
-rw-r--r--graphics/gdk-pixbuf2/distinfo4
-rw-r--r--graphics/gegl/Makefile1
-rw-r--r--graphics/geoserver/Makefile12
-rw-r--r--graphics/geoserver/distinfo6
-rw-r--r--graphics/geoserver/pkg-plist19
-rw-r--r--graphics/hyprgraphics/Makefile3
-rw-r--r--graphics/hyprland-protocols/Makefile28
-rw-r--r--graphics/hyprland-protocols/distinfo3
-rw-r--r--graphics/hyprland-protocols/pkg-descr10
-rw-r--r--graphics/hyprland-protocols/pkg-plist8
-rw-r--r--graphics/inkscape/Makefile3
-rw-r--r--graphics/kf6-kimageformats/Makefile1
-rw-r--r--graphics/kf6-kimageformats/distinfo6
-rw-r--r--graphics/kf6-kimageformats/pkg-plist1
-rw-r--r--graphics/kf6-kplotting/distinfo6
-rw-r--r--graphics/kf6-kquickcharts/distinfo6
-rw-r--r--graphics/kf6-ksvg/distinfo6
-rw-r--r--graphics/kf6-prison/distinfo6
-rw-r--r--graphics/lazpaint/Makefile2
-rw-r--r--graphics/libpano13/Makefile2
-rw-r--r--graphics/lunasvg/Makefile2
-rw-r--r--graphics/mesa-devel/Makefile6
-rw-r--r--graphics/mesa-devel/distinfo6
-rw-r--r--graphics/mesa-devel/pkg-plist2
-rw-r--r--graphics/mesa-dri/Makefile.common3
-rw-r--r--graphics/mupdf/Makefile2
-rw-r--r--graphics/mupdf/distinfo6
-rw-r--r--graphics/nvidia-drm-510-kmod-devel/Makefile2
-rw-r--r--graphics/nvidia-drm-510-kmod-devel/distinfo6
-rw-r--r--graphics/nvidia-drm-510-kmod/distinfo6
-rw-r--r--graphics/nvidia-drm-515-kmod-devel/Makefile2
-rw-r--r--graphics/nvidia-drm-515-kmod-devel/distinfo6
-rw-r--r--graphics/nvidia-drm-515-kmod/distinfo6
-rw-r--r--graphics/nvidia-drm-61-kmod-devel/Makefile2
-rw-r--r--graphics/nvidia-drm-61-kmod-devel/distinfo6
-rw-r--r--graphics/nvidia-drm-61-kmod/distinfo6
-rw-r--r--graphics/nvidia-drm-66-kmod-devel/Makefile2
-rw-r--r--graphics/nvidia-drm-66-kmod-devel/distinfo6
-rw-r--r--graphics/nvidia-drm-66-kmod/distinfo6
-rw-r--r--graphics/nvidia-drm-kmod-devel/Makefile2
-rw-r--r--graphics/ogre3d/Makefile2
-rw-r--r--graphics/ogre3d/distinfo6
-rw-r--r--graphics/ogre3d/files/patch-OgreMain_include_OgrePlatformInformation.h10
-rw-r--r--graphics/ogre3d/pkg-plist1
-rw-r--r--graphics/opencv/Makefile3
-rw-r--r--graphics/opencv/distinfo8
-rw-r--r--graphics/openexr-website-docs/Makefile2
-rw-r--r--graphics/openexr-website-docs/distinfo6
-rw-r--r--graphics/openexr/Makefile2
-rw-r--r--graphics/openexr/distinfo6
-rw-r--r--graphics/openxr/Makefile3
-rw-r--r--graphics/openxr/distinfo6
-rw-r--r--graphics/osg/Makefile20
-rw-r--r--graphics/osg/files/patch-CMakeModules_FindFFmpeg.cmake10
-rw-r--r--graphics/osg/files/patch-CMakeModules_FindGStreamer.cmake17
-rw-r--r--graphics/osg/files/patch-src_osgPlugins_OpenCASCADE_ReaderWriterOpenCASCADE.cpp11
-rw-r--r--graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoder.cpp207
-rw-r--r--graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoder.hpp255
-rw-r--r--graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoderAudio.cpp478
-rw-r--r--graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoderAudio.hpp131
-rw-r--r--graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoderVideo.cpp440
-rw-r--r--graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoderVideo.hpp62
-rw-r--r--graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegPacket.hpp11
-rw-r--r--graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegParameters.cpp37
-rw-r--r--graphics/osg/files/patch-src_osgPlugins_ffmpeg_ReaderWriterFFmpeg.cpp100
-rw-r--r--graphics/p5-GD-Barcode/Makefile3
-rw-r--r--graphics/p5-GD-Barcode/distinfo6
-rw-r--r--graphics/p5-Gimp/Makefile8
-rw-r--r--graphics/p5-Image-ExifTool-devel/Makefile2
-rw-r--r--graphics/p5-Image-ExifTool-devel/distinfo6
-rw-r--r--graphics/p5-Image-ExifTool-devel/pkg-plist2
-rw-r--r--graphics/pastel/Makefile110
-rw-r--r--graphics/pastel/Makefile.crates122
-rw-r--r--graphics/pastel/distinfo368
-rw-r--r--graphics/pecl-imagick/Makefile12
-rw-r--r--graphics/php-geos/files/patch-php8511
-rw-r--r--graphics/plasma6-spectacle/distinfo6
-rw-r--r--graphics/plutosvg/Makefile2
-rw-r--r--graphics/plutovg/Makefile2
-rw-r--r--graphics/py-mayavi/Makefile2
-rw-r--r--graphics/py-pycollada/Makefile4
-rw-r--r--graphics/py-pyglet1/Makefile3
-rw-r--r--graphics/py-pyglet1/distinfo6
-rw-r--r--graphics/py-termtosvg/Makefile4
-rw-r--r--graphics/py-tifffile/Makefile3
-rw-r--r--graphics/py-willow/Makefile10
-rw-r--r--graphics/py-willow/distinfo6
-rw-r--r--graphics/py-willow/files/patch-pyproject.toml22
-rw-r--r--graphics/qgis-ltr/Makefile3
-rw-r--r--graphics/qgis-ltr/distinfo6
-rw-r--r--graphics/qgis-ltr/pkg-plist1
-rw-r--r--graphics/qgis/Makefile3
-rw-r--r--graphics/qgis/distinfo6
-rw-r--r--graphics/qgis/pkg-plist3
-rw-r--r--graphics/qt6-wayland/Makefile1
-rw-r--r--graphics/qt6-wayland/files/patch-src_client_qwaylandshellsurface__p.h23
-rw-r--r--graphics/qt6-wayland/files/patch-src_plugins_shellintegration_xdg-shell_qwaylandxdgshell__p.h13
-rw-r--r--graphics/rubygem-clutter-gdk/Makefile2
-rw-r--r--graphics/rubygem-clutter-gdk/distinfo6
-rw-r--r--graphics/rubygem-clutter-gtk/Makefile2
-rw-r--r--graphics/rubygem-clutter-gtk/distinfo6
-rw-r--r--graphics/rubygem-clutter/Makefile2
-rw-r--r--graphics/rubygem-clutter/distinfo6
-rw-r--r--graphics/rubygem-gdk_pixbuf2/Makefile2
-rw-r--r--graphics/rubygem-gdk_pixbuf2/distinfo6
-rw-r--r--graphics/rubygem-gruff/Makefile2
-rw-r--r--graphics/rubygem-gruff/distinfo6
-rw-r--r--graphics/rubygem-rmagick/Makefile3
-rw-r--r--graphics/rubygem-rmagick/distinfo6
-rw-r--r--graphics/rubygem-rsvg2/Makefile2
-rw-r--r--graphics/rubygem-rsvg2/distinfo6
-rw-r--r--graphics/swappy/Makefile4
-rw-r--r--graphics/variety/Makefile3
-rw-r--r--graphics/waylandpp/Makefile4
-rw-r--r--graphics/waylandpp/distinfo6
-rw-r--r--graphics/xmlgraphics-commons/Makefile8
-rw-r--r--graphics/xmlgraphics-commons/distinfo6
-rw-r--r--graphics/zathura-pdf-mupdf/Makefile2
149 files changed, 2602 insertions, 686 deletions
diff --git a/graphics/Makefile b/graphics/Makefile
index 71716649bbcd..8b9be1162c54 100644
--- a/graphics/Makefile
+++ b/graphics/Makefile
@@ -118,7 +118,6 @@
SUBDIR += compupic
SUBDIR += converseen
SUBDIR += corrupter
- SUBDIR += cosmoplayer
SUBDIR += cptutils
SUBDIR += crw
SUBDIR += ctl
@@ -348,6 +347,7 @@
SUBDIR += hs-tart
SUBDIR += hugin
SUBDIR += hyprgraphics
+ SUBDIR += hyprland-protocols
SUBDIR += icat
SUBDIR += icc-profiles-adobe-cs4
SUBDIR += icc-profiles-basiccolor
diff --git a/graphics/R-cran-pixmap/Makefile b/graphics/R-cran-pixmap/Makefile
index 41bba8572dd2..ad92dfbeae88 100644
--- a/graphics/R-cran-pixmap/Makefile
+++ b/graphics/R-cran-pixmap/Makefile
@@ -1,5 +1,5 @@
PORTNAME= pixmap
-DISTVERSION= 0.4-13
+DISTVERSION= 0.4-14
CATEGORIES= graphics
DISTNAME= ${PORTNAME}_${DISTVERSION}
diff --git a/graphics/R-cran-pixmap/distinfo b/graphics/R-cran-pixmap/distinfo
index 0ad84fc537b2..fce36055ba70 100644
--- a/graphics/R-cran-pixmap/distinfo
+++ b/graphics/R-cran-pixmap/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1714829283
-SHA256 (pixmap_0.4-13.tar.gz) = e3dbc641a0497575b45a4140dadc6bf43cdf39b02393f93f1b0ee4f4d026e711
-SIZE (pixmap_0.4-13.tar.gz) = 34980
+TIMESTAMP = 1753596798
+SHA256 (pixmap_0.4-14.tar.gz) = 26710c931f95b89b66b50e3ee1c4b6e1ba383b8067f80b3d7de2f0d58cb9fa9e
+SIZE (pixmap_0.4-14.tar.gz) = 37054
diff --git a/graphics/aeskulap/Makefile b/graphics/aeskulap/Makefile
index 7b6f14a20309..502dda98028f 100644
--- a/graphics/aeskulap/Makefile
+++ b/graphics/aeskulap/Makefile
@@ -1,13 +1,13 @@
PORTNAME= aeskulap
PORTVERSION= 0.2.2.20190120
-PORTREVISION= 5
+PORTREVISION= 6
CATEGORIES= graphics
MAINTAINER= danfe@FreeBSD.org
-COMMENT= Medical image viewer
+COMMENT= Medical image viewer and DICOM network client
WWW= https://aeskulap.nongnu.org/
-LICENSE= GPLv2
+LICENSE= GPLv2+
LICENSE_FILE= ${WRKSRC}/COPYING
LIB_DEPENDS= libdcmimage.so:graphics/dcmtk \
@@ -19,15 +19,21 @@ LIB_DEPENDS= libdcmimage.so:graphics/dcmtk \
USES= compiler:c++11-lang autoreconf desktop-file-utils gettext \
gmake gnome jpeg libtool localbase pkgconfig
+GNU_CONFIGURE= yes
+CONFIGURE_ARGS= --disable-static --with-gsettings
+GLIB_SCHEMAS= org.gnu.aeskulap.gschema.xml
+INSTALL_TARGET= install-strip
USE_GITHUB= yes
GH_ACCOUNT= mikhailnov
GH_TAGNAME= e43334e
USE_CXXSTD= c++11
-USE_GNOME= gconfmm26 gtkmm24 intltool libglade2
+USE_GNOME= gtkmm24 intltool libglade2
USE_LDCONFIG= ${PREFIX}/lib/aeskulap
-GNU_CONFIGURE= yes
-CONFIGURE_ARGS= --disable-static
-INSTALL_TARGET= install-strip
+post-patch:
+ @${REINPLACE_CMD} -e '/^AM_GCONF_SOURCE_2/,+1d' \
+ ${WRKSRC}/configure.ac
+ @${REINPLACE_CMD} -e '/^if GCONF_SCHEMAS_INSTALL/,+3d' \
+ ${WRKSRC}/src/Makefile.am
.include <bsd.port.mk>
diff --git a/graphics/aeskulap/pkg-plist b/graphics/aeskulap/pkg-plist
index 2be82d9dcde0..823f35166a3d 100644
--- a/graphics/aeskulap/pkg-plist
+++ b/graphics/aeskulap/pkg-plist
@@ -26,7 +26,6 @@ lib/aeskulap/libimagepool.so
%%DATADIR%%/images/stock-tool-scale-22.png
share/appdata/aeskulap.appdata.xml
share/applications/aeskulap.desktop
-share/glib-2.0/schemas/org.gnu.aeskulap.gschema.xml
share/icons/hicolor/64x64/apps/aeskulap.png
share/icons/hicolor/scalable/apps/aeskulap.svg
share/locale/de/LC_MESSAGES/aeskulap.mo
diff --git a/graphics/art/Makefile b/graphics/art/Makefile
index ec539439e9a8..e440ce20311c 100644
--- a/graphics/art/Makefile
+++ b/graphics/art/Makefile
@@ -1,5 +1,6 @@
PORTNAME= art
DISTVERSION= 1.25.6
+PORTREVISION= 1
CATEGORIES= graphics
MASTER_SITES= https://github.com/artpixls/ART/releases/download/${DISTVERSION}/
PKGNAMESUFFIX= -raw-image-editor
diff --git a/graphics/colmap/Makefile b/graphics/colmap/Makefile
index 47977c264e01..ff330dc7534f 100644
--- a/graphics/colmap/Makefile
+++ b/graphics/colmap/Makefile
@@ -1,5 +1,5 @@
PORTNAME= colmap
-DISTVERSION= 3.12.1
+DISTVERSION= 3.12.3
CATEGORIES= graphics
MAINTAINER= fuz@FreeBSD.org
diff --git a/graphics/colmap/distinfo b/graphics/colmap/distinfo
index ac3ae55ad257..75c6ecbbd492 100644
--- a/graphics/colmap/distinfo
+++ b/graphics/colmap/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1751922819
-SHA256 (colmap-colmap-3.12.1_GH0.tar.gz) = 366496caca43e73a1e61c7ebd9dee51d5b2afe15c0e75e16ebad6cfae6f2860b
-SIZE (colmap-colmap-3.12.1_GH0.tar.gz) = 3577466
+TIMESTAMP = 1752688090
+SHA256 (colmap-colmap-3.12.3_GH0.tar.gz) = 1ad69660bd4e15b9cdd2ef407ac11c8e39bdcdc68625c1d142b0d8e80b6b2aa7
+SIZE (colmap-colmap-3.12.3_GH0.tar.gz) = 3578250
diff --git a/graphics/converseen/Makefile b/graphics/converseen/Makefile
index 61fd7adba787..3aca9d293f89 100644
--- a/graphics/converseen/Makefile
+++ b/graphics/converseen/Makefile
@@ -1,6 +1,6 @@
PORTNAME= converseen
DISTVERSIONPREFIX= v
-DISTVERSION= 0.15.0.1
+DISTVERSION= 0.15.0.2
CATEGORIES= graphics
MAINTAINER= fernape@FreeBSD.org
diff --git a/graphics/converseen/distinfo b/graphics/converseen/distinfo
index 21f318515921..3e42924272cf 100644
--- a/graphics/converseen/distinfo
+++ b/graphics/converseen/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1751800958
-SHA256 (Faster3ck-Converseen-v0.15.0.1_GH0.tar.gz) = 0e7f7731f660537eb2d360b5adbf535e5959892384d7c81083224a73bc685ce2
-SIZE (Faster3ck-Converseen-v0.15.0.1_GH0.tar.gz) = 968202
+TIMESTAMP = 1753035735
+SHA256 (Faster3ck-Converseen-v0.15.0.2_GH0.tar.gz) = 28f8de8dda81f7500fd03686473bce96731792cd01b3b2f913e3491d91386206
+SIZE (Faster3ck-Converseen-v0.15.0.2_GH0.tar.gz) = 968737
diff --git a/graphics/cosmoplayer/Makefile b/graphics/cosmoplayer/Makefile
deleted file mode 100644
index bfe3a5186802..000000000000
--- a/graphics/cosmoplayer/Makefile
+++ /dev/null
@@ -1,40 +0,0 @@
-PORTNAME= cosmoplayer
-PORTVERSION= 2.1.1
-PORTREVISION= 2
-CATEGORIES= graphics
-#MASTER_SITES= http://opendx.npaci.edu/libs/
-MASTER_SITES= http://distfiles.macports.org/${PORTNAME}/ \
- http://lil.fr.distfiles.macports.org/${PORTNAME}/ \
- http://ftp.leg.uct.ac.za/pub/packages/macports/distfiles/${PORTNAME}/
-DISTNAME= ${PORTNAME}-jar
-
-MAINTAINER= thierry@FreeBSD.org
-COMMENT= Java classes to support VRML
-WWW= http://cic.nist.gov/vrml/cosmoplayer.html
-
-LICENSE= SGI
-LICENSE_NAME= SGI
-LICENSE_FILE= ${WRKSRC}/License
-LICENSE_PERMS= dist-mirror dist-sell pkg-mirror auto-accept
-
-DEPRECATED= Abandonware
-EXPIRATION_DATE=2025-07-31
-
-RUN_DEPENDS= ${JAVALIBDIR}/java40.jar:devel/netscape-java40
-
-USES= java
-
-NO_BUILD= yes
-NO_ARCH= yes
-
-JARFILES= npcosmop211.jar
-
-PLIST_FILES= ${JARFILES:S|^|%%JAVAJARDIR%%/|}
-
-post-extract:
- ${MV} ${WRKDIR}/comsoplayer-jar ${WRKSRC}
-
-do-install:
- ${INSTALL_DATA} ${JARFILES:S|^|${WRKSRC}/|} ${STAGEDIR}${JAVAJARDIR}
-
-.include <bsd.port.mk>
diff --git a/graphics/cosmoplayer/distinfo b/graphics/cosmoplayer/distinfo
deleted file mode 100644
index 9b7e42670320..000000000000
--- a/graphics/cosmoplayer/distinfo
+++ /dev/null
@@ -1,2 +0,0 @@
-SHA256 (cosmoplayer-jar.tar.gz) = 1a79351c2d5300c4e1ceb469852c922dcc24b6ac5a43859226749a35798b6d1e
-SIZE (cosmoplayer-jar.tar.gz) = 44698
diff --git a/graphics/cosmoplayer/pkg-descr b/graphics/cosmoplayer/pkg-descr
deleted file mode 100644
index d06eb5a1e3bb..000000000000
--- a/graphics/cosmoplayer/pkg-descr
+++ /dev/null
@@ -1,4 +0,0 @@
-This jar file comes from Computer Associates / SGI Cosmo Player.
-It contains classes to support VRML.
-
-It is used by OpenDX.
diff --git a/graphics/ctl/Makefile b/graphics/ctl/Makefile
index 2893f004b773..64c7e2beeeec 100644
--- a/graphics/ctl/Makefile
+++ b/graphics/ctl/Makefile
@@ -1,13 +1,9 @@
PORTNAME= ctl
DISTVERSIONPREFIX= ctl-
-DISTVERSION= 1.5.3
-PORTREVISION= 3
+DISTVERSION= 1.5.4
CATEGORIES= graphics lang
PKGNAMESUFFIX= -language
-PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
-PATCHFILES+= 3871cd7717fd184d9fbb667730d35f1a89391f09.patch:-p1 # FreeBSD compatibility patch: https://github.com/ampas/CTL/pull/145
-
MAINTAINER= yuri@FreeBSD.org
COMMENT= Color Transformation Language
WWW= https://github.com/ampas/CTL
@@ -37,4 +33,6 @@ DOCSDIR= share/doc/CTL
OPTIONS_DEFINE= DOCS
+# tests as of 1.5.4: 100% tests passed, 0 tests failed out of 220
+
.include <bsd.port.mk>
diff --git a/graphics/ctl/distinfo b/graphics/ctl/distinfo
index 831eccc6084e..3bfe3e31e920 100644
--- a/graphics/ctl/distinfo
+++ b/graphics/ctl/distinfo
@@ -1,5 +1,3 @@
-TIMESTAMP = 1707022854
-SHA256 (ampas-CTL-ctl-1.5.3_GH0.tar.gz) = 0a9f5f3de8964ac5cca31597aca74bf915a3d8214e3276fdcb52c80ad25b0096
-SIZE (ampas-CTL-ctl-1.5.3_GH0.tar.gz) = 3073036
-SHA256 (3871cd7717fd184d9fbb667730d35f1a89391f09.patch) = 3a77003f3474569de39f3b4270cd033c9cf6d22dce4d551fb1edcd6eb0fee30c
-SIZE (3871cd7717fd184d9fbb667730d35f1a89391f09.patch) = 1653
+TIMESTAMP = 1754025845
+SHA256 (ampas-CTL-ctl-1.5.4_GH0.tar.gz) = fb84925320d053827fce965d7aeea5bb8690d7093bb083c8e3915d7a600e25fc
+SIZE (ampas-CTL-ctl-1.5.4_GH0.tar.gz) = 3079675
diff --git a/graphics/ctl/files/patch-OpenEXR__CTL_exrdpx_exrToDpx.cpp b/graphics/ctl/files/patch-OpenEXR__CTL_exrdpx_exrToDpx.cpp
deleted file mode 100644
index cd6d7ca72421..000000000000
--- a/graphics/ctl/files/patch-OpenEXR__CTL_exrdpx_exrToDpx.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
---- OpenEXR_CTL/exrdpx/exrToDpx.cpp.orig 2024-01-04 19:41:17 UTC
-+++ OpenEXR_CTL/exrdpx/exrToDpx.cpp
-@@ -169,13 +169,13 @@ writePixels
- const Rgba &pixel = pixels[y][x];
-
- unsigned int r =
-- (unsigned int) (clamp (float (pixel.r), 0.0f, 1023.0f) + 0.5f);
-+ (unsigned int) (std::clamp (float (pixel.r), 0.0f, 1023.0f) + 0.5f);
-
- unsigned int g =
-- (unsigned int) (clamp (float (pixel.g), 0.0f, 1023.0f) + 0.5f);
-+ (unsigned int) (std::clamp (float (pixel.g), 0.0f, 1023.0f) + 0.5f);
-
- unsigned int b =
-- (unsigned int) (clamp (float (pixel.b), 0.0f, 1023.0f) + 0.5f);
-+ (unsigned int) (std::clamp (float (pixel.b), 0.0f, 1023.0f) + 0.5f);
-
- unsigned int word = (r << 22) | (g << 12) | (b << 2);
-
diff --git a/graphics/ctl/pkg-plist b/graphics/ctl/pkg-plist
index b797b5f996f1..03942c64867b 100644
--- a/graphics/ctl/pkg-plist
+++ b/graphics/ctl/pkg-plist
@@ -26,12 +26,17 @@ include/CTL/CtlTypeStorage.h
include/CTL/CtlVersion.h
include/OpenEXR/ImfCtlApplyTransforms.h
lib/libIlmCtl.so
-lib/libIlmCtl.so.1.5.3
+lib/libIlmCtl.so.1.5
+lib/libIlmCtl.so.1.5.4
lib/libIlmCtlMath.so
-lib/libIlmCtlMath.so.1.5.3
+lib/libIlmCtlMath.so.1.5
+lib/libIlmCtlMath.so.1.5.4
lib/libIlmCtlSimd.so
-lib/libIlmCtlSimd.so.1.5.3
+lib/libIlmCtlSimd.so.1.5
+lib/libIlmCtlSimd.so.1.5.4
lib/libIlmImfCtl.so
+lib/libIlmImfCtl.so.1.5
+lib/libIlmImfCtl.so.1.5.4
%%DATADIR%%/change_saturation.ctl
%%DATADIR%%/transform_DPX_EXR.ctl
%%DATADIR%%/transform_EXR_DPX.ctl
diff --git a/graphics/dataplot/Makefile b/graphics/dataplot/Makefile
index 1d0d424cd95c..a13bd4455e90 100644
--- a/graphics/dataplot/Makefile
+++ b/graphics/dataplot/Makefile
@@ -1,40 +1,35 @@
PORTNAME= dataplot
-DISTVERSION= 20210713
-PORTREVISION= 2
+DISTVERSION= 20240806
CATEGORIES= graphics
-MAINTAINER= ports@FreeBSD.org
+MAINTAINER= pfg@FreeBSD.org
COMMENT= Free software system for statistical visualization
WWW= https://www.itl.nist.gov/div898/software/dataplot/index.htm
LICENSE= PD
+LICENSE_FILE= ${WRKSRC}/../LICENSE.txt
LIB_DEPENDS= libgd.so:graphics/gd \
- libpng.so:graphics/png
-
-USES= gmake gnome fortran jpeg readline xorg
-USE_XORG= x11 xi
-USE_GNOME= cairo
+ libtiff.so:graphics/tiff
+RUN_DEPENDS= xclip:x11/xclip
+USES= gmake gnome fortran readline xorg
USE_GITHUB= yes
GH_ACCOUNT= usnistgov
-GH_TAGNAME= d5eb15dd86dd80098c6535aa68898ab8392ab700
-
-WRKSRC_SUBDIR= src
-
-MAXOBV?= 450000 # Change if you need more observations/variable
+GH_TAGNAME= b779512889cc78757fae29f9546e01b9c6cef95d
+USE_GNOME= cairo
+USE_XORG= x11 xft xi
-FFLAGS+= -DLINUX -fdefault-real-8 -fdefault-double-8 -std=legacy
+FFLAGS+= -fdefault-real-8 -fdefault-double-8 -std=legacy
-PORTDATA= *
+WRKSRC_SUBDIR= src
PLIST_FILES= bin/dataplot bin/xdataplot
+PORTDATA= *
OPTIONS_DEFINE= DOCS
post-patch:
- @${REINPLACE_CMD} -e 's/MAXOBV=1500000/MAXOBV=${MAXOBV}/' \
- ${WRKSRC}/DPCOPA.INC
@${REINPLACE_CMD} \
-e 's;%%FC%%;${FC};' \
-e 's;%%CC%%;${CC};' \
diff --git a/graphics/dataplot/distinfo b/graphics/dataplot/distinfo
index 0489f8aa74df..6c9f0246c90d 100644
--- a/graphics/dataplot/distinfo
+++ b/graphics/dataplot/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1663389742
-SHA256 (usnistgov-dataplot-20210713-d5eb15dd86dd80098c6535aa68898ab8392ab700_GH0.tar.gz) = f92bbb322ec80ea03e83163b9de741131bb064fbe59323475b27958cddeb197f
-SIZE (usnistgov-dataplot-20210713-d5eb15dd86dd80098c6535aa68898ab8392ab700_GH0.tar.gz) = 22850998
+TIMESTAMP = 1753233966
+SHA256 (usnistgov-dataplot-20240806-b779512889cc78757fae29f9546e01b9c6cef95d_GH0.tar.gz) = 6386f56d6b74638d877cbe6a929dd476422dc791e009f83ce6bd5703ac58261a
+SIZE (usnistgov-dataplot-20240806-b779512889cc78757fae29f9546e01b9c6cef95d_GH0.tar.gz) = 23319908
diff --git a/graphics/dataplot/files/patch-Makefile b/graphics/dataplot/files/patch-Makefile
index df26252ff7ed..115aadaf4461 100644
--- a/graphics/dataplot/files/patch-Makefile
+++ b/graphics/dataplot/files/patch-Makefile
@@ -1,4 +1,4 @@
---- Makefile.orig 2021-07-13 20:35:55 UTC
+--- Makefile.orig 2024-08-06 18:20:40 UTC
+++ Makefile
@@ -1,5 +1,5 @@
-FC = gfortran
@@ -7,8 +7,8 @@
+CC = %%CC%%
# FEATURES to enable during compilation
- # all: READLINE NCURSES GD TIFF VPX CAIRO X11 GKS OPENGL PLOT XCLIP
-@@ -12,11 +12,12 @@ PREFIX = $(DESTDIR)/usr/local
+ # all: READLINE NCURSES GD TIFF VPX CAIRO X11 GKS OPENGL PLOT XCLIP CYGWIN MACOSX TCL DISABLE_SYSTEM_COMMAND STACK_SIZE DEBUG
+@@ -13,12 +13,13 @@ BINDIR = $(PREFIX)/bin
BINDIR = $(PREFIX)/bin
# where to find additional dataplot files (help, menus, etc).
@@ -16,15 +16,25 @@
+DPLIBDIR=$(DESTDIR)%%DATADIR%%
#FFLAGS += -O2 -DLINUX -fdefault-real-8 -fdefault-double-8 -fmax-stack-var-size=1000000 -Wall
+ #FFLAGS += -O2 -g -DLINUX -fdefault-real-8 -fdefault-double-8 -Wall
-FFLAGS += -O2 -DLINUX -fdefault-real-8 -fdefault-double-8 -Wall
-CFLAGS += -O2
-+FFLAGS += %%FFLAGS%%
++FFLAGS += %%FFLAGS%% -DLINUX
+CFLAGS += %%CFLAGS%% -I%%LOCALBASE%%/include
+LDFLAGS += -L%%LOCALBASE%%/lib
# special flags for dp1
DP1FLAGS = -DDDOUBLE -DINTEGER32 -DHAVE_ISNAN -DHAVE_EXECUTE_COMMAND_LINE -DDPLIBDIR=\'$(DPLIBDIR)\'
-@@ -129,7 +130,7 @@ clean:
+@@ -79,7 +80,7 @@ CFLAGS += -DHAVE_X11
+ LDFLAGS += -lcairo
+ FFLAGS4 += -DHAVE_CAIRO
+ CFLAGS += -DHAVE_X11
+-#CFLAGS += -I/usr/include/cairo
++CFLAGS += -I%%LOCALBASE%%/include/freetype2
+ endif
+
+ ifneq (,$(findstring PLOT,$(FEATURES)))
+@@ -170,7 +171,7 @@ install: dataplot xdataplot
install: dataplot xdataplot
@echo installing binary to $(BINDIR)
-[ ! -d $(BINDIR) ] && mkdir -vp $(BINDIR) ||:
diff --git a/graphics/drawio/Makefile b/graphics/drawio/Makefile
index bf0a90583cce..6df4bd569854 100644
--- a/graphics/drawio/Makefile
+++ b/graphics/drawio/Makefile
@@ -1,6 +1,6 @@
PORTNAME= drawio
PORTVERSION= 26.2.15
-PORTREVISION= 8
+PORTREVISION= 9
DISTVERSIONPREFIX= x86_64-
CATEGORIES= graphics
MASTER_SITES= https://github.com/jgraph/drawio-desktop/releases/download/v${PORTVERSION}/
diff --git a/graphics/filament/Makefile b/graphics/filament/Makefile
index 05a58e344472..848ce3c1ff22 100644
--- a/graphics/filament/Makefile
+++ b/graphics/filament/Makefile
@@ -1,11 +1,12 @@
PORTNAME= filament
DISTVERSIONPREFIX= v
-DISTVERSION= 1.59.3
+DISTVERSION= 1.62.2
CATEGORIES= graphics
MAINTAINER= yuri@FreeBSD.org
COMMENT= Real-time physically based rendering engine
-WWW= https://google.github.io/filament/
+WWW= https://google.github.io/filament/ \
+ https://github.com/google/filament
LICENSE= APACHE20
LICENSE_FILE= ${WRKSRC}/LICENSE
@@ -52,5 +53,9 @@ post-install:
@cd ${STAGEDIR}${PREFIX} && ${RM} -r README.md LICENSE docs
# remove conflicting file, see https://github.com/google/filament/issues/5957
@${RM} ${STAGEDIR}${PREFIX}/lib/libzstd.a
+ # remove files installed by the improperly bundled spirv-tools package, see https://github.com/google/filament/issues/8965
+ @${FIND} ${STAGEDIR}${PREFIX} -iname "*spirv*" -delete
+ @${RM} -r ${STAGEDIR}${PREFIX}/include/spirv-tools # workaround for the find(1) -delete bug, see https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=288277
+ @${RMDIR} ${STAGEDIR}${PREFIX}/lib/cmake
.include <bsd.port.mk>
diff --git a/graphics/filament/distinfo b/graphics/filament/distinfo
index 49e9483e7ac2..687b3f3972d7 100644
--- a/graphics/filament/distinfo
+++ b/graphics/filament/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1745309194
-SHA256 (google-filament-v1.59.3_GH0.tar.gz) = 897d1880d1573b3a8452e7df5a82f8fb82a35f997775edfa44ee26cbcedbdafb
-SIZE (google-filament-v1.59.3_GH0.tar.gz) = 759893829
+TIMESTAMP = 1754114300
+SHA256 (google-filament-v1.62.2_GH0.tar.gz) = 3ae746cb11fcb93a4cd494a5bbb86a8e2fc81075218593dad0ac0f3381be24e0
+SIZE (google-filament-v1.62.2_GH0.tar.gz) = 766597384
diff --git a/graphics/filament/files/patch-CMakeLists.txt b/graphics/filament/files/patch-CMakeLists.txt
index 40f6db9d930b..108eeb9035b6 100644
--- a/graphics/filament/files/patch-CMakeLists.txt
+++ b/graphics/filament/files/patch-CMakeLists.txt
@@ -1,6 +1,6 @@
---- CMakeLists.txt.orig 2024-06-03 18:10:41 UTC
+--- CMakeLists.txt.orig 2025-07-14 23:11:31 UTC
+++ CMakeLists.txt
-@@ -87,7 +87,7 @@ find_program(CCACHE_PROGRAM ccache)
+@@ -101,7 +101,7 @@ find_program(CCACHE_PROGRAM ccache)
# Support for ccache
# ==================================================================================================
find_program(CCACHE_PROGRAM ccache)
diff --git a/graphics/filament/files/patch-filament_backend_src_PlatformFactory.cpp b/graphics/filament/files/patch-filament_backend_src_PlatformFactory.cpp
index fd6961590dba..bded9df8b8d5 100644
--- a/graphics/filament/files/patch-filament_backend_src_PlatformFactory.cpp
+++ b/graphics/filament/files/patch-filament_backend_src_PlatformFactory.cpp
@@ -1,6 +1,6 @@
---- filament/backend/src/PlatformFactory.cpp.orig 2025-03-31 22:23:27 UTC
+--- filament/backend/src/PlatformFactory.cpp.orig 2025-07-14 23:11:31 UTC
+++ filament/backend/src/PlatformFactory.cpp
-@@ -41,7 +41,7 @@
+@@ -42,7 +42,7 @@
#include <backend/platforms/PlatformCocoaGL.h>
#endif
#endif
@@ -9,7 +9,7 @@
#if defined(FILAMENT_SUPPORTS_X11)
#if defined(FILAMENT_SUPPORTS_OPENGL) && !defined(FILAMENT_USE_EXTERNAL_GLES3)
#include "backend/platforms/PlatformGLX.h"
-@@ -151,7 +151,7 @@ Platform* PlatformFactory::create(Backend* backend) no
+@@ -152,7 +152,7 @@ Platform* PlatformFactory::create(Backend* backend) no
#else
return new PlatformCocoaGL();
#endif
diff --git a/graphics/filament/files/patch-libs_bluevk_include_bluevk_BlueVK.h b/graphics/filament/files/patch-libs_bluevk_include_bluevk_BlueVK.h
index 3af2733630ee..f084580c50df 100644
--- a/graphics/filament/files/patch-libs_bluevk_include_bluevk_BlueVK.h
+++ b/graphics/filament/files/patch-libs_bluevk_include_bluevk_BlueVK.h
@@ -1,8 +1,8 @@
---- libs/bluevk/include/bluevk/BlueVK.h.orig 2022-11-11 07:03:46 UTC
+--- libs/bluevk/include/bluevk/BlueVK.h.orig 2025-07-14 23:11:31 UTC
+++ libs/bluevk/include/bluevk/BlueVK.h
@@ -42,7 +42,7 @@
#define VK_USE_PLATFORM_ANDROID_KHR 1
- #elif defined(IOS)
+ #elif defined(FILAMENT_IOS)
#define VK_USE_PLATFORM_IOS_MVK 1
- #elif defined(__linux__)
+ #elif defined(__linux__) || defined(__FreeBSD__)
diff --git a/graphics/filament/files/patch-libs_utils_CMakeLists.txt b/graphics/filament/files/patch-libs_utils_CMakeLists.txt
index 4e45fbc7aa4d..8bf9c71d2a66 100644
--- a/graphics/filament/files/patch-libs_utils_CMakeLists.txt
+++ b/graphics/filament/files/patch-libs_utils_CMakeLists.txt
@@ -1,7 +1,7 @@
---- libs/utils/CMakeLists.txt.orig 2023-05-30 23:22:31 UTC
+--- libs/utils/CMakeLists.txt.orig 2025-07-14 23:11:31 UTC
+++ libs/utils/CMakeLists.txt
-@@ -82,8 +82,10 @@ if (ANDROID)
- list(APPEND SRCS src/android/Systrace.cpp)
+@@ -90,8 +90,10 @@ if (LINUX OR ANDROID)
+ list(APPEND SRCS src/android/Tracing.cpp)
endif()
if (LINUX OR ANDROID)
- list(APPEND SRCS src/linux/Condition.cpp)
diff --git a/graphics/filament/files/patch-third__party_perfetto_perfetto_perfetto.cc b/graphics/filament/files/patch-third__party_perfetto_perfetto_perfetto.cc
new file mode 100644
index 000000000000..f760a992860e
--- /dev/null
+++ b/graphics/filament/files/patch-third__party_perfetto_perfetto_perfetto.cc
@@ -0,0 +1,40 @@
+--- third_party/perfetto/perfetto/perfetto.cc.orig 2025-07-16 02:06:53 UTC
++++ third_party/perfetto/perfetto/perfetto.cc
+@@ -14,6 +14,8 @@
+ //
+ // This file is automatically generated by gen_amalgamated. Do not edit.
+
++#include <sys/ucred.h>
++
+ // gen_amalgamated: predefined macros
+ #if !defined(PERFETTO_IMPLEMENTATION)
+ #define PERFETTO_IMPLEMENTATION
+@@ -42125,7 +42127,7 @@ ClockSnapshotVector CaptureClockSnapshots() {
+ {0, 0}},
+ {CLOCK_REALTIME, protos::pbzero::BUILTIN_CLOCK_REALTIME, {0, 0}},
+ {CLOCK_MONOTONIC, protos::pbzero::BUILTIN_CLOCK_MONOTONIC, {0, 0}},
+- {CLOCK_MONOTONIC_RAW,
++ {CLOCK_MONOTONIC,
+ protos::pbzero::BUILTIN_CLOCK_MONOTONIC_RAW,
+ {0, 0}},
+ };
+@@ -58913,8 +58915,8 @@ void UnixSocket::ReadPeerCredentialsPosix() {
+ int res = getpeereid(fd, &peer_uid_, nullptr);
+ PERFETTO_CHECK(res == 0);
+ // There is no pid when obtaining peer credentials for QNX
+-#elif PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+- PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
++#elif !defined(__FreeBSD__) && (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
++ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID))
+ struct ucred user_cred;
+ socklen_t len = sizeof(user_cred);
+ int fd = sock_raw_.fd();
+@@ -58922,7 +58924,7 @@ void UnixSocket::ReadPeerCredentialsPosix() {
+ PERFETTO_CHECK(res == 0);
+ peer_uid_ = user_cred.uid;
+ peer_pid_ = user_cred.pid;
+-#elif PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++#elif defined(__FreeBSD__) || PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
+ struct xucred user_cred;
+ socklen_t len = sizeof(user_cred);
+ int res = getsockopt(sock_raw_.fd(), 0, LOCAL_PEERCRED, &user_cred, &len);
diff --git a/graphics/filament/files/patch-third__party_perfetto_perfetto_perfetto.h b/graphics/filament/files/patch-third__party_perfetto_perfetto_perfetto.h
new file mode 100644
index 000000000000..a1c99bc6e26e
--- /dev/null
+++ b/graphics/filament/files/patch-third__party_perfetto_perfetto_perfetto.h
@@ -0,0 +1,42 @@
+--- third_party/perfetto/perfetto/perfetto.h.orig 2025-07-15 17:16:00 UTC
++++ third_party/perfetto/perfetto/perfetto.h
+@@ -34,6 +34,8 @@
+ * limitations under the License.
+ */
+
++#include <pthread_np.h>
++
+ // Generated by write_buildflag_header.py
+
+ // fix_include_guards: off
+@@ -129,10 +131,10 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MAC() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_IOS() 0
+ #endif
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD__)
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 1
+-#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX_BUT_NOT_QNX() 1
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX_BUT_NOT_QNX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_APPLE() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MAC() 0
+@@ -1075,7 +1077,7 @@ inline TimeNanos GetWallTimeRawNs() {
+ }
+
+ inline TimeNanos GetWallTimeRawNs() {
+- return GetTimeInternalNs(CLOCK_MONOTONIC_RAW);
++ return GetTimeInternalNs(CLOCK_MONOTONIC);
+ }
+
+ inline TimeNanos GetThreadCPUTimeNs() {
+@@ -8167,7 +8169,7 @@ inline PlatformThreadId GetThreadId() {
+ #elif PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX)
+ using PlatformThreadId = pid_t;
+ inline PlatformThreadId GetThreadId() {
+- return static_cast<pid_t>(syscall(__NR_gettid));
++ return static_cast<pid_t>(pthread_getthreadid_np());
+ }
+ #elif PERFETTO_BUILDFLAG(PERFETTO_OS_FUCHSIA)
+ using PlatformThreadId = zx_koid_t;
diff --git a/graphics/filament/pkg-plist b/graphics/filament/pkg-plist
index 25b8b2373291..9351c86540cf 100644
--- a/graphics/filament/pkg-plist
+++ b/graphics/filament/pkg-plist
@@ -17,16 +17,6 @@ bin/normal-blending
bin/resgen
bin/roughness-prefilter
bin/specular-color
-bin/spirv-as
-bin/spirv-cfg
-bin/spirv-dis
-bin/spirv-lesspipe.sh
-bin/spirv-link
-bin/spirv-lint
-bin/spirv-objdump
-bin/spirv-opt
-bin/spirv-reduce
-bin/spirv-val
bin/uberz
include/backend/AcquiredImage.h
include/backend/BufferDescriptor.h
@@ -66,6 +56,7 @@ include/filamat/Enums.h
include/filamat/IncludeCallback.h
include/filamat/MaterialBuilder.h
include/filamat/Package.h
+include/filament-generatePrefilterMipmap/generatePrefilterMipmap.h
include/filament-iblprefilter/IBLPrefilterContext.h
include/filament/Box.h
include/filament/BufferObject.h
@@ -150,10 +141,6 @@ include/math/vec3.h
include/math/vec4.h
include/mathio/ostream.h
include/mikktspace/mikktspace.h
-include/spirv-tools/libspirv.h
-include/spirv-tools/libspirv.hpp
-include/spirv-tools/linker.hpp
-include/spirv-tools/optimizer.hpp
include/tsl/robin_growth_policy.h
include/tsl/robin_hash.h
include/tsl/robin_map.h
@@ -171,6 +158,7 @@ include/utils/EntityManager.h
include/utils/FixedCapacityVector.h
include/utils/Invocable.h
include/utils/Log.h
+include/utils/Logger.h
include/utils/Mutex.h
include/utils/NameComponentManager.h
include/utils/Panic.h
@@ -197,34 +185,6 @@ include/viewer/AutomationSpec.h
include/viewer/RemoteServer.h
include/viewer/Settings.h
include/viewer/ViewerGui.h
-lib/cmake/SPIRV-Tools-diff/SPIRV-Tools-diffConfig.cmake
-lib/cmake/SPIRV-Tools-diff/SPIRV-Tools-diffTargets-%%CMAKE_BUILD_TYPE%%.cmake
-lib/cmake/SPIRV-Tools-diff/SPIRV-Tools-diffTargets.cmake
-lib/cmake/SPIRV-Tools-link/SPIRV-Tools-linkConfig.cmake
-lib/cmake/SPIRV-Tools-link/SPIRV-Tools-linkTargets-%%CMAKE_BUILD_TYPE%%.cmake
-lib/cmake/SPIRV-Tools-link/SPIRV-Tools-linkTargets.cmake
-lib/cmake/SPIRV-Tools-lint/SPIRV-Tools-lintConfig.cmake
-lib/cmake/SPIRV-Tools-lint/SPIRV-Tools-lintTargets-%%CMAKE_BUILD_TYPE%%.cmake
-lib/cmake/SPIRV-Tools-lint/SPIRV-Tools-lintTargets.cmake
-lib/cmake/SPIRV-Tools-opt/SPIRV-Tools-optConfig.cmake
-lib/cmake/SPIRV-Tools-opt/SPIRV-Tools-optTargets-%%CMAKE_BUILD_TYPE%%.cmake
-lib/cmake/SPIRV-Tools-opt/SPIRV-Tools-optTargets.cmake
-lib/cmake/SPIRV-Tools-reduce/SPIRV-Tools-reduceConfig.cmake
-lib/cmake/SPIRV-Tools-reduce/SPIRV-Tools-reduceTarget-%%CMAKE_BUILD_TYPE%%.cmake
-lib/cmake/SPIRV-Tools-reduce/SPIRV-Tools-reduceTarget.cmake
-lib/cmake/SPIRV-Tools-tools/SPIRV-Tools-toolsConfig.cmake
-lib/cmake/SPIRV-Tools-tools/SPIRV-Tools-toolsTargets-%%CMAKE_BUILD_TYPE%%.cmake
-lib/cmake/SPIRV-Tools-tools/SPIRV-Tools-toolsTargets.cmake
-lib/cmake/SPIRV-Tools/SPIRV-ToolsConfig.cmake
-lib/cmake/SPIRV-Tools/SPIRV-ToolsTarget-%%CMAKE_BUILD_TYPE%%.cmake
-lib/cmake/SPIRV-Tools/SPIRV-ToolsTarget.cmake
-lib/libSPIRV-Tools-diff.a
-lib/libSPIRV-Tools-link.a
-lib/libSPIRV-Tools-lint.a
-lib/libSPIRV-Tools-opt.a
-lib/libSPIRV-Tools-reduce.a
-lib/libSPIRV-Tools-shared.so
-lib/libSPIRV-Tools.a
lib/libabseil.a
lib/libbackend.a
lib/libbasis_transcoder.a
@@ -236,6 +196,7 @@ lib/libdracodec.a
lib/libfilabridge.a
lib/libfilaflat.a
lib/libfilamat.a
+lib/libfilament-generatePrefilterMipmap.a
lib/libfilament-iblprefilter.a
lib/libfilament.a
lib/libfilameshio.a
@@ -249,6 +210,7 @@ lib/libktxreader.a
lib/libmatdbg.a
lib/libmeshoptimizer.a
lib/libmikktspace.a
+lib/libperfetto.a
lib/libshaders.a
lib/libsmol-v.a
lib/libstb.a
@@ -257,5 +219,3 @@ lib/libuberzlib.a
lib/libutils.a
lib/libviewer.a
lib/libvkshaders.a
-libdata/pkgconfig/SPIRV-Tools-shared.pc
-libdata/pkgconfig/SPIRV-Tools.pc
diff --git a/graphics/gdk-pixbuf2/Makefile b/graphics/gdk-pixbuf2/Makefile
index e0f2ef659336..f27cb9d2fff5 100644
--- a/graphics/gdk-pixbuf2/Makefile
+++ b/graphics/gdk-pixbuf2/Makefile
@@ -1,11 +1,14 @@
PORTNAME= gdk-pixbuf
PORTVERSION= 2.42.12
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= graphics
MASTER_SITES= GNOME
PKGNAMESUFFIX= 2
DIST_SUBDIR= gnome
+PATCH_SITES= https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/commit/
+PATCHFILES= 4af78023ce7d3b5e3cec422a59bb4f48fa4f5886.patch:-p1
+
MAINTAINER= desktop@FreeBSD.org
COMMENT= Graphic library for GTK
WWW= https://developer.gnome.org/gdk-pixbuf/
diff --git a/graphics/gdk-pixbuf2/distinfo b/graphics/gdk-pixbuf2/distinfo
index cce2b3b0ccbd..ec430fcc6771 100644
--- a/graphics/gdk-pixbuf2/distinfo
+++ b/graphics/gdk-pixbuf2/distinfo
@@ -1,3 +1,5 @@
-TIMESTAMP = 1740710770
+TIMESTAMP = 1753371083
SHA256 (gnome/gdk-pixbuf-2.42.12.tar.xz) = b9505b3445b9a7e48ced34760c3bcb73e966df3ac94c95a148cb669ab748e3c7
SIZE (gnome/gdk-pixbuf-2.42.12.tar.xz) = 6525072
+SHA256 (gnome/4af78023ce7d3b5e3cec422a59bb4f48fa4f5886.patch) = e5cfbfed908833871e45562b72e70be4895844c08ed8edce7d24a8d36696aeba
+SIZE (gnome/4af78023ce7d3b5e3cec422a59bb4f48fa4f5886.patch) = 1643
diff --git a/graphics/gegl/Makefile b/graphics/gegl/Makefile
index 2ec905392421..445c78151114 100644
--- a/graphics/gegl/Makefile
+++ b/graphics/gegl/Makefile
@@ -1,5 +1,6 @@
PORTNAME= gegl
DISTVERSION= 0.4.62
+PORTREVISION= 1
CATEGORIES= graphics
MASTER_SITES= GIMP
diff --git a/graphics/geoserver/Makefile b/graphics/geoserver/Makefile
index 4a91339aa4b8..fcbdfd515533 100644
--- a/graphics/geoserver/Makefile
+++ b/graphics/geoserver/Makefile
@@ -1,5 +1,5 @@
PORTNAME= geoserver
-DISTVERSION= 2.27.1
+DISTVERSION= 2.27.2
CATEGORIES= graphics geography java
MASTER_SITES= SF/${PORTNAME}/GeoServer/${PORTVERSION}
DISTNAME= ${PORTNAME}-${PORTVERSION}-bin
@@ -30,12 +30,12 @@ GEODIRS= data_dir etc lib logs modules resources webapps
PLIST_SUB= BATIK=1.18 \
ECLIPSE=2.15.0 \
G="${GEOSERVERDIR:S,^${PREFIX}/,,}" \
- GT=33.1 \
- GWC=1.27.1 \
+ GT=33.2 \
+ GWC=1.27.2 \
IMAGEIO=1.4.15 \
- JACKSON=2.18.2 \
+ JACKSON=2.19.0 \
JETTY=9.4.57.v20241219 \
- JNA=5.16.0 \
+ JNA=5.17.0 \
JT=1.1.31 \
JT1=1.6.0 \
MVER=${PORTVERSION} \
@@ -43,7 +43,7 @@ PLIST_SUB= BATIK=1.18 \
SPRING=5.3.39 \
SPRINGS=5.8.16 \
VER3=1.1.3 \
- WICKET=9.20.0
+ WICKET=9.21.0
post-patch:
@${REINPLACE_CMD} -e 's|$$GEOSERVER_HOME|${GEOSERVERDIR}|g' \
diff --git a/graphics/geoserver/distinfo b/graphics/geoserver/distinfo
index 21050a200db6..fba585023356 100644
--- a/graphics/geoserver/distinfo
+++ b/graphics/geoserver/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1747658951
-SHA256 (geoserver-2.27.1-bin.zip) = ec8ae7ce759ae4d23fda0147553450d087ab3a4a1d4ad6ebd1a1a928fa5e2d09
-SIZE (geoserver-2.27.1-bin.zip) = 121675690
+TIMESTAMP = 1753304165
+SHA256 (geoserver-2.27.2-bin.zip) = cb37a3562fb41734c2b548ab0af9f73ecc4b2e6a08512c52dac0352965a8df45
+SIZE (geoserver-2.27.2-bin.zip) = 121877642
diff --git a/graphics/geoserver/pkg-plist b/graphics/geoserver/pkg-plist
index b8c71f098752..c0ac87084579 100644
--- a/graphics/geoserver/pkg-plist
+++ b/graphics/geoserver/pkg-plist
@@ -590,15 +590,15 @@
%%G%%/webapps/%%G%%/WEB-INF/lib/batik-xml-%%BATIK%%.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/bcprov-jdk18on-1.79.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/bigint-0.7.1.jar
-%%G%%/webapps/%%G%%/WEB-INF/lib/checker-qual-3.43.0.jar
-%%G%%/webapps/%%G%%/WEB-INF/lib/commons-beanutils-1.10.1.jar
+%%G%%/webapps/%%G%%/WEB-INF/lib/checker-qual-3.49.3.jar
+%%G%%/webapps/%%G%%/WEB-INF/lib/commons-beanutils-1.11.0.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/commons-codec-1.18.0.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/commons-collections-3.2.2.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/commons-collections4-4.4.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/commons-compiler-3.1.12.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/commons-dbcp-1.4.jar
-%%G%%/webapps/%%G%%/WEB-INF/lib/commons-fileupload-1.5.jar
-%%G%%/webapps/%%G%%/WEB-INF/lib/commons-io-2.18.0.jar
+%%G%%/webapps/%%G%%/WEB-INF/lib/commons-fileupload-1.6.0.jar
+%%G%%/webapps/%%G%%/WEB-INF/lib/commons-io-2.19.0.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/commons-jxpath-1.3.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/commons-lang-2.6.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/commons-lang3-3.17.0.jar
@@ -612,7 +612,7 @@
%%G%%/webapps/%%G%%/WEB-INF/lib/encoder-1.3.1.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/error_prone_annotations-2.36.0.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/ezmorph-1.0.6.jar
-%%G%%/webapps/%%G%%/WEB-INF/lib/failureaccess-1.0.2.jar
+%%G%%/webapps/%%G%%/WEB-INF/lib/failureaccess-1.0.3.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/freemarker-2.3.34.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/gs-gwc-%%MVER%%.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/gs-gwc-rest-%%MVER%%.jar
@@ -690,7 +690,7 @@
%%G%%/webapps/%%G%%/WEB-INF/lib/gt-xsd-wcs-%%GT%%.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/gt-xsd-wfs-%%GT%%.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/gt-xsd-wmts-%%GT%%.jar
-%%G%%/webapps/%%G%%/WEB-INF/lib/guava-33.4.0-jre.jar
+%%G%%/webapps/%%G%%/WEB-INF/lib/guava-33.4.8-jre.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/gwc-core-%%GWC%%.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/gwc-diskquota-core-%%GWC%%.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/gwc-diskquota-jdbc-%%GWC%%.jar
@@ -743,7 +743,8 @@
%%G%%/webapps/%%G%%/WEB-INF/lib/joda-time-2.8.1.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/json-20231013.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/json-lib-2.4.2-%%G%%.jar
-%%G%%/webapps/%%G%%/WEB-INF/lib/jsr305-2.0.3.jar
+%%G%%/webapps/%%G%%/WEB-INF/lib/jspecify-1.0.0.jar
+%%G%%/webapps/%%G%%/WEB-INF/lib/jsr305-3.0.2.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/jt-affine-%%JT%%.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/jt-algebra-%%JT%%.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/jt-attributeop-%%JT1%%.jar
@@ -809,10 +810,10 @@
%%G%%/webapps/%%G%%/WEB-INF/lib/org.eclipse.emf.ecore.xmi-2.15.0.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/org.eclipse.xsd-2.12.0.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/org.w3.xlink-%%GT%%.jar
-%%G%%/webapps/%%G%%/WEB-INF/lib/oshi-core-6.6.6.jar
+%%G%%/webapps/%%G%%/WEB-INF/lib/oshi-core-6.8.2.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/picocontainer-1.2.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/pngj-2.0.1.jar
-%%G%%/webapps/%%G%%/WEB-INF/lib/postgresql-42.7.5.jar
+%%G%%/webapps/%%G%%/WEB-INF/lib/postgresql-42.7.7.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/re2j-1.8.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/si-quantity-2.1.jar
%%G%%/webapps/%%G%%/WEB-INF/lib/si-units-2.1.jar
diff --git a/graphics/hyprgraphics/Makefile b/graphics/hyprgraphics/Makefile
index 8c806067e451..66b4fc1069ea 100644
--- a/graphics/hyprgraphics/Makefile
+++ b/graphics/hyprgraphics/Makefile
@@ -1,9 +1,10 @@
PORTNAME= hyprgraphics
DISTVERSIONPREFIX= v
DISTVERSION= 0.1.5
+PORTREVISION= 2
CATEGORIES= graphics
-MAINTAINER= ports@FreeBSD.org
+MAINTAINER= tagattie@FreeBSD.org
COMMENT= Hyprland graphics / resource utilities
WWW= https://github.com/hyprwm/hyprgraphics
diff --git a/graphics/hyprland-protocols/Makefile b/graphics/hyprland-protocols/Makefile
new file mode 100644
index 000000000000..e8c07429b712
--- /dev/null
+++ b/graphics/hyprland-protocols/Makefile
@@ -0,0 +1,28 @@
+PORTNAME= hyprland-protocols
+DISTVERSIONPREFIX= v
+DISTVERSION= 0.6.4
+CATEGORIES= graphics
+
+MAINTAINER= tagattie@FreeBSD.org
+COMMENT= Wayland protocol extensions for Hyprland
+WWW= https://github.com/hyprwm/hyprland-protocols
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+USES= meson
+
+USE_GITHUB= yes
+GH_ACCOUNT= hyprwm
+
+NO_ARCH= yes
+
+PORTDOCS= README.md
+
+OPTIONS_DEFINE= DOCS
+
+post-install-DOCS-on:
+ @${MKDIR} ${STAGEDIR}${DOCSDIR}
+ ${INSTALL_MAN} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
+
+.include <bsd.port.mk>
diff --git a/graphics/hyprland-protocols/distinfo b/graphics/hyprland-protocols/distinfo
new file mode 100644
index 000000000000..e74a37925c7e
--- /dev/null
+++ b/graphics/hyprland-protocols/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1754038793
+SHA256 (hyprwm-hyprland-protocols-v0.6.4_GH0.tar.gz) = 0d4f99abc21b04fc126dd754e306bb84cd334131d542ff2e0c172190c6570384
+SIZE (hyprwm-hyprland-protocols-v0.6.4_GH0.tar.gz) = 10447
diff --git a/graphics/hyprland-protocols/pkg-descr b/graphics/hyprland-protocols/pkg-descr
new file mode 100644
index 000000000000..2919edd92193
--- /dev/null
+++ b/graphics/hyprland-protocols/pkg-descr
@@ -0,0 +1,10 @@
+This package exists in an effort to bridge the gap between Hyprland
+and KDE/Gnome's functionality, as well as allow apps for some extra
+neat functionality under Hyprland.
+
+Since wayland-protocols is slow to change (on top of Hyprland not
+being allowed to contribute), we have to maintain a set of protocols
+Hyprland uses to plumb some things / add some useful features.
+
+Some of the protocols here also do not belong in wayland-protocols, as
+they are specific to Hyprland.
diff --git a/graphics/hyprland-protocols/pkg-plist b/graphics/hyprland-protocols/pkg-plist
new file mode 100644
index 000000000000..238901696534
--- /dev/null
+++ b/graphics/hyprland-protocols/pkg-plist
@@ -0,0 +1,8 @@
+%%DATADIR%%/protocols/hyprland-ctm-control-v1.xml
+%%DATADIR%%/protocols/hyprland-focus-grab-v1.xml
+%%DATADIR%%/protocols/hyprland-global-shortcuts-v1.xml
+%%DATADIR%%/protocols/hyprland-lock-notify-v1.xml
+%%DATADIR%%/protocols/hyprland-surface-v1.xml
+%%DATADIR%%/protocols/hyprland-toplevel-export-v1.xml
+%%DATADIR%%/protocols/hyprland-toplevel-mapping-v1.xml
+share/pkgconfig/hyprland-protocols.pc
diff --git a/graphics/inkscape/Makefile b/graphics/inkscape/Makefile
index 642c7c60f676..9f4e2d8f6b41 100644
--- a/graphics/inkscape/Makefile
+++ b/graphics/inkscape/Makefile
@@ -1,5 +1,6 @@
PORTNAME= inkscape
DISTVERSION= 1.4.2
+PORTREVISION= 1
CATEGORIES= graphics gnome
MASTER_SITES= https://media.inkscape.org/dl/resources/file/
@@ -36,7 +37,7 @@ RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}numpy>0:math/py-numpy@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}cachecontrol>0:www/py-cachecontrol@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}cssselect>0:www/py-cssselect@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}filelock>=3.7.1:sysutils/py-filelock@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}lxml>0:devel/py-lxml@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}lxml5>0:devel/py-lxml5@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}scour>0:textproc/py-scour@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}tinycss2>0:textproc/py-tinycss2@${PY_FLAVOR} \
diff --git a/graphics/kf6-kimageformats/Makefile b/graphics/kf6-kimageformats/Makefile
index 486c61aae2d5..8dc08c060878 100644
--- a/graphics/kf6-kimageformats/Makefile
+++ b/graphics/kf6-kimageformats/Makefile
@@ -1,5 +1,6 @@
PORTNAME= kimageformats
DISTVERSION= ${KDE_FRAMEWORKS_VERSION}
+PORTREVISION= 1
CATEGORIES= graphics kde kde-frameworks
COMMENT= Plugins to allow QImage to support extra file formats
diff --git a/graphics/kf6-kimageformats/distinfo b/graphics/kf6-kimageformats/distinfo
index f2b4436dc63f..7aecaa5016c6 100644
--- a/graphics/kf6-kimageformats/distinfo
+++ b/graphics/kf6-kimageformats/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1749476624
-SHA256 (KDE/frameworks/6.15/kimageformats-6.15.0.tar.xz) = 2fab119c64f117026166f49840abe5c1efe3e8f9a10d966b3406ffb6a6084030
-SIZE (KDE/frameworks/6.15/kimageformats-6.15.0.tar.xz) = 28203696
+TIMESTAMP = 1752529509
+SHA256 (KDE/frameworks/6.16/kimageformats-6.16.0.tar.xz) = 86dfbb05ab845f7b19a7fec88e135d14e47af14dc1713d9fb391966510c1dc4b
+SIZE (KDE/frameworks/6.16/kimageformats-6.16.0.tar.xz) = 28620588
diff --git a/graphics/kf6-kimageformats/pkg-plist b/graphics/kf6-kimageformats/pkg-plist
index 8003f92ff524..c6220810c367 100644
--- a/graphics/kf6-kimageformats/pkg-plist
+++ b/graphics/kf6-kimageformats/pkg-plist
@@ -7,6 +7,7 @@ lib/cmake/KF6ImageFormats/KF6ImageFormatsConfigVersion.cmake
%%OPENEXR%%%%QT_PLUGINDIR%%/imageformats/kimg_exr.so
%%QT_PLUGINDIR%%/imageformats/kimg_hdr.so
%%HEIF%%%%QT_PLUGINDIR%%/imageformats/kimg_heif.so
+%%QT_PLUGINDIR%%/imageformats/kimg_iff.so
%%QT_PLUGINDIR%%/imageformats/kimg_jp2.so
%%JXL%%%%QT_PLUGINDIR%%/imageformats/kimg_jxl.so
%%QT_PLUGINDIR%%/imageformats/kimg_kra.so
diff --git a/graphics/kf6-kplotting/distinfo b/graphics/kf6-kplotting/distinfo
index a29d1766ec1e..81188fd98953 100644
--- a/graphics/kf6-kplotting/distinfo
+++ b/graphics/kf6-kplotting/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1749476624
-SHA256 (KDE/frameworks/6.15/kplotting-6.15.0.tar.xz) = 5f7105f015eee67acdeb8a96fb9448186a605b6273f0af89a055c2721cab59dc
-SIZE (KDE/frameworks/6.15/kplotting-6.15.0.tar.xz) = 34032
+TIMESTAMP = 1752529510
+SHA256 (KDE/frameworks/6.16/kplotting-6.16.0.tar.xz) = a2117ed10b5c5992f9b160cb98bc53042cdd257de6b9b9f2f5ba4a6a5c00bd06
+SIZE (KDE/frameworks/6.16/kplotting-6.16.0.tar.xz) = 34032
diff --git a/graphics/kf6-kquickcharts/distinfo b/graphics/kf6-kquickcharts/distinfo
index d50f42a0b6fd..61dbf55324cc 100644
--- a/graphics/kf6-kquickcharts/distinfo
+++ b/graphics/kf6-kquickcharts/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1749832090
-SHA256 (KDE/frameworks/6.15/kquickcharts-6.15.0.tar.xz) = f9f2f4bea577fed8a7f1ddea34617efe74517a492e9c0721f02f2cc08fb6786d
-SIZE (KDE/frameworks/6.15/kquickcharts-6.15.0.tar.xz) = 112060
+TIMESTAMP = 1752529511
+SHA256 (KDE/frameworks/6.16/kquickcharts-6.16.0.tar.xz) = 03a70fa5b5b1f098bbcc020dd1792b8c0b999d8be7ccd1b34b79f5b7a39f183d
+SIZE (KDE/frameworks/6.16/kquickcharts-6.16.0.tar.xz) = 112100
diff --git a/graphics/kf6-ksvg/distinfo b/graphics/kf6-ksvg/distinfo
index ab0052c6bab3..0def4105b456 100644
--- a/graphics/kf6-ksvg/distinfo
+++ b/graphics/kf6-ksvg/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1749476625
-SHA256 (KDE/frameworks/6.15/ksvg-6.15.0.tar.xz) = 955c5ceb28879d10106cb807f4f259810c705bbbbddaf170af0d563fbd580197
-SIZE (KDE/frameworks/6.15/ksvg-6.15.0.tar.xz) = 83772
+TIMESTAMP = 1752529512
+SHA256 (KDE/frameworks/6.16/ksvg-6.16.0.tar.xz) = ee3bf0726e84137c131ccd5c61c17f08edc0c0d8e9fa27d26cd3a4524f5cf6c3
+SIZE (KDE/frameworks/6.16/ksvg-6.16.0.tar.xz) = 83764
diff --git a/graphics/kf6-prison/distinfo b/graphics/kf6-prison/distinfo
index 9ac77c36f2ce..e73d6e8d2db2 100644
--- a/graphics/kf6-prison/distinfo
+++ b/graphics/kf6-prison/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1749476625
-SHA256 (KDE/frameworks/6.15/prison-6.15.0.tar.xz) = 343f1dbc82fe6fddaad08b93a60048ed11a00c5c97fb2b30430d7199d614dfbf
-SIZE (KDE/frameworks/6.15/prison-6.15.0.tar.xz) = 57380
+TIMESTAMP = 1752529512
+SHA256 (KDE/frameworks/6.16/prison-6.16.0.tar.xz) = 382b2b9e3a0055c34b60290352b8566a8bff75ca8735b9534a076383d6e4e510
+SIZE (KDE/frameworks/6.16/prison-6.16.0.tar.xz) = 57360
diff --git a/graphics/lazpaint/Makefile b/graphics/lazpaint/Makefile
index d5b4763ea1ed..1d5f1a6658e6 100644
--- a/graphics/lazpaint/Makefile
+++ b/graphics/lazpaint/Makefile
@@ -1,7 +1,7 @@
PORTNAME= lazpaint
PORTVERSION= 7.3
DISTVERSIONPREFIX= v
-PORTREVISION= 6
+PORTREVISION= 7
CATEGORIES= graphics
PKGNAMESUFFIX= ${LAZARUS_PKGNAMESUFFIX}
diff --git a/graphics/libpano13/Makefile b/graphics/libpano13/Makefile
index bd42b6ed125f..e994421d3cf7 100644
--- a/graphics/libpano13/Makefile
+++ b/graphics/libpano13/Makefile
@@ -1,6 +1,6 @@
PORTNAME= libpano13
DISTVERSION= 2.9.22
-PORTREVISION= 10
+PORTREVISION= 11
CATEGORIES= graphics java
MASTER_SITES= SF/panotools/${PORTNAME}/${PORTNAME}-${DISTVERSION}
diff --git a/graphics/lunasvg/Makefile b/graphics/lunasvg/Makefile
index cc1870a689b5..bc16a568936f 100644
--- a/graphics/lunasvg/Makefile
+++ b/graphics/lunasvg/Makefile
@@ -4,7 +4,7 @@ DISTVERSION= 3.2.1
PORTREVISION= 1
CATEGORIES= graphics
-MAINTAINER= alster@vinterdalen.se
+MAINTAINER= alven@FreeBSD.org
COMMENT= SVG rendering and manipulation library in C++
WWW= https://github.com/sammycage/lunasvg/
diff --git a/graphics/mesa-devel/Makefile b/graphics/mesa-devel/Makefile
index 0324cbd7b567..66a58b4a7efe 100644
--- a/graphics/mesa-devel/Makefile
+++ b/graphics/mesa-devel/Makefile
@@ -1,6 +1,6 @@
PORTNAME= mesa
-DISTVERSION= 25.1-branchpoint-4146
-DISTVERSIONSUFFIX= -ga3a53b7cee4
+DISTVERSION= 25.2-branchpoint-682
+DISTVERSIONSUFFIX= -gfa8731b8596
CATEGORIES= graphics
PKGNAMESUFFIX= -devel
@@ -128,7 +128,7 @@ VDPAU_IMPLIES= X11
VKLAYERS_DESC= Vulkan layers: ${VKLAYERS_MESON_ON:C/.*=//} (implies ${VKLAYERS_IMPLIES})
VKLAYERS_BUILD_DEPENDS= glslangValidator:graphics/glslang
VKLAYERS_LIB_DEPENDS= libpng.so:graphics/png
-VKLAYERS_MESON_ON= -Dvulkan-layers=device-select,overlay,screenshot,vram-report-limit
+VKLAYERS_MESON_ON= -Dvulkan-layers=anti-lag,device-select,overlay,screenshot,vram-report-limit
VKLAYERS_IMPLIES= ${"${PORT_OPTIONS:Manv}":?anv:radv} # any from OPTIONS_GROUP_VULKAN
WAYLAND_BUILD_DEPENDS= wayland-protocols>0:graphics/wayland-protocols
diff --git a/graphics/mesa-devel/distinfo b/graphics/mesa-devel/distinfo
index 29370da9910e..9b4cfa258345 100644
--- a/graphics/mesa-devel/distinfo
+++ b/graphics/mesa-devel/distinfo
@@ -1,6 +1,6 @@
-TIMESTAMP = 1752271520
-SHA256 (mesa-25.1-branchpoint-4146-ga3a53b7cee4.tar.bz2) = 3f198c05a6f7578d74419138723d7f07434ad041ffeee431a5006580e344bed3
-SIZE (mesa-25.1-branchpoint-4146-ga3a53b7cee4.tar.bz2) = 58297488
+TIMESTAMP = 1753915533
+SHA256 (mesa-25.2-branchpoint-682-gfa8731b8596.tar.bz2) = 432e6d1a0b21d9857b4c6587ab1a0bf311ed182427f900a432698ce432c85161
+SIZE (mesa-25.2-branchpoint-682-gfa8731b8596.tar.bz2) = 58364002
SHA256 (700efacda59c.patch) = 0d567fe737ad1404e1f12d7cd018826d9095c23835f1ed5aaa1c81cb58d3d008
SIZE (700efacda59c.patch) = 983
SHA256 (2930dcbb3329.patch) = f90ab77950ba1a56d165f0bc8a3cbd9c5f624bb5c67d1c7f337316027e8295e8
diff --git a/graphics/mesa-devel/pkg-plist b/graphics/mesa-devel/pkg-plist
index a825e5bd2183..71eaba960928 100644
--- a/graphics/mesa-devel/pkg-plist
+++ b/graphics/mesa-devel/pkg-plist
@@ -26,6 +26,7 @@ lib/libEGL_mesa%%SUFFIX%%.so.0.0.0
%%OPENCL%%lib/libRusticlOpenCL.so
%%OPENCL%%lib/libRusticlOpenCL.so.1
%%OPENCL%%lib/libRusticlOpenCL.so.1.0.0
+%%VKLAYERS%%lib/libVkLayer_MESA_anti_lag.so
%%VKLAYERS%%lib/libVkLayer_MESA_device_select.so
%%VKLAYERS%%lib/libVkLayer_MESA_overlay.so
%%VKLAYERS%%lib/libVkLayer_MESA_screenshot.so
@@ -56,4 +57,5 @@ share/drirc.d/00-mesa%%SUFFIX%%-defaults.conf
%%anv%%%%NO_COINST%%share/vulkan/icd.d/intel_icd.%%ARCH%%.json
%%hasvk%%share/vulkan/icd.d/intel_hasvk_icd.%%ARCH%%.json
%%radv%%%%NO_COINST%%share/vulkan/icd.d/radeon_icd.%%ARCH%%.json
+%%VKLAYERS%%share/vulkan/implicit_layer.d/VkLayer_MESA_anti_lag.json
%%VKLAYERS%%share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json
diff --git a/graphics/mesa-dri/Makefile.common b/graphics/mesa-dri/Makefile.common
index c88815f3a177..6862ddeb24ac 100644
--- a/graphics/mesa-dri/Makefile.common
+++ b/graphics/mesa-dri/Makefile.common
@@ -28,7 +28,8 @@ LICENSE_FILE= ${WRKSRC}/docs/license.rst
COMPONENT= ${PORTNAME:tl:C/^lib//:C/mesa-//}
-BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}mako>0:textproc/py-mako@${PY_FLAVOR}
+BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}mako>0:textproc/py-mako@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}packaging>0:devel/py-packaging@${PY_FLAVOR}
.if ${COMPONENT} != clover
.if ${PORT_OPTIONS:MX11}
USES+= xorg
diff --git a/graphics/mupdf/Makefile b/graphics/mupdf/Makefile
index e1be24f4825c..af46b07cf949 100644
--- a/graphics/mupdf/Makefile
+++ b/graphics/mupdf/Makefile
@@ -1,5 +1,5 @@
PORTNAME= mupdf
-DISTVERSION= 1.26.3
+DISTVERSION= 1.26.4
DISTVERSIONSUFFIX= -source
PORTEPOCH= 1
CATEGORIES= graphics
diff --git a/graphics/mupdf/distinfo b/graphics/mupdf/distinfo
index afd38195b1a6..2d94356fc1f1 100644
--- a/graphics/mupdf/distinfo
+++ b/graphics/mupdf/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1752431401
-SHA256 (mupdf-1.26.3-source.tar.gz) = ab467fc2d888cd8424cdce4bc6dd7ec61f34820582ddf3769a336e6909d9a48e
-SIZE (mupdf-1.26.3-source.tar.gz) = 64525703
+TIMESTAMP = 1753851810
+SHA256 (mupdf-1.26.4-source.tar.gz) = 8a57e9b78ea2c2312c91590fd5eabe1d246b5e98b585bc152100e24bf81252a1
+SIZE (mupdf-1.26.4-source.tar.gz) = 64530252
diff --git a/graphics/nvidia-drm-510-kmod-devel/Makefile b/graphics/nvidia-drm-510-kmod-devel/Makefile
index d4ce531391ae..fe8718609a70 100644
--- a/graphics/nvidia-drm-510-kmod-devel/Makefile
+++ b/graphics/nvidia-drm-510-kmod-devel/Makefile
@@ -1,4 +1,4 @@
-NVIDIA_DISTVERSION= 575.64.03
+NVIDIA_DISTVERSION= 575.64.05
# Explicitly set PORTREVISION as it can be overridden by the master port
PORTREVISION= 0
MASTERDIR= ${.CURDIR}/../nvidia-drm-510-kmod
diff --git a/graphics/nvidia-drm-510-kmod-devel/distinfo b/graphics/nvidia-drm-510-kmod-devel/distinfo
index 9e09837b4dca..079b427dbece 100644
--- a/graphics/nvidia-drm-510-kmod-devel/distinfo
+++ b/graphics/nvidia-drm-510-kmod-devel/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1751449876
-SHA256 (NVIDIA-FreeBSD-x86_64-575.64.03.tar.xz) = 1fa676e43bb2da5f4458ad8feb969d7dac3438adb2f3294ca15b2c3e95522363
-SIZE (NVIDIA-FreeBSD-x86_64-575.64.03.tar.xz) = 287548092
+TIMESTAMP = 1753242855
+SHA256 (NVIDIA-FreeBSD-x86_64-575.64.05.tar.xz) = 8831b28b41b821fac90db30a9cfe13481a9d8bd46d0ffeb544fd8c4fbbab538f
+SIZE (NVIDIA-FreeBSD-x86_64-575.64.05.tar.xz) = 287953228
SHA256 (freebsd-drm-kmod-drm_v5.10.163_8_GH0.tar.gz) = ea6b04c4bbd859248aabb81bc2abc19f33d68f57decf2e41dd8f5341124227d4
SIZE (freebsd-drm-kmod-drm_v5.10.163_8_GH0.tar.gz) = 20095720
diff --git a/graphics/nvidia-drm-510-kmod/distinfo b/graphics/nvidia-drm-510-kmod/distinfo
index 5a0a0be07601..289ca1b8f540 100644
--- a/graphics/nvidia-drm-510-kmod/distinfo
+++ b/graphics/nvidia-drm-510-kmod/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1750206403
-SHA256 (NVIDIA-FreeBSD-x86_64-570.169.tar.xz) = 1d132020452851b3122dd38ae96eb578a510755c73c417db788611ede51e76ce
-SIZE (NVIDIA-FreeBSD-x86_64-570.169.tar.xz) = 261338796
+TIMESTAMP = 1752772269
+SHA256 (NVIDIA-FreeBSD-x86_64-570.172.08.tar.xz) = 004fd4084d96854580582d6664df7d36df6e03230001c06a9fa0234c1a3ba1e6
+SIZE (NVIDIA-FreeBSD-x86_64-570.172.08.tar.xz) = 260741248
SHA256 (freebsd-drm-kmod-drm_v5.10.163_8_GH0.tar.gz) = ea6b04c4bbd859248aabb81bc2abc19f33d68f57decf2e41dd8f5341124227d4
SIZE (freebsd-drm-kmod-drm_v5.10.163_8_GH0.tar.gz) = 20095720
diff --git a/graphics/nvidia-drm-515-kmod-devel/Makefile b/graphics/nvidia-drm-515-kmod-devel/Makefile
index a7b333ad8441..cc8d898a2afe 100644
--- a/graphics/nvidia-drm-515-kmod-devel/Makefile
+++ b/graphics/nvidia-drm-515-kmod-devel/Makefile
@@ -1,4 +1,4 @@
-NVIDIA_DISTVERSION= 575.64.03
+NVIDIA_DISTVERSION= 575.64.05
# Explicitly set PORTREVISION as it can be overridden by the master port
PORTREVISION= 0
MASTERDIR= ${.CURDIR}/../nvidia-drm-515-kmod
diff --git a/graphics/nvidia-drm-515-kmod-devel/distinfo b/graphics/nvidia-drm-515-kmod-devel/distinfo
index 3f48f97f6c2f..3ff96f22f8df 100644
--- a/graphics/nvidia-drm-515-kmod-devel/distinfo
+++ b/graphics/nvidia-drm-515-kmod-devel/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1751449949
-SHA256 (NVIDIA-FreeBSD-x86_64-575.64.03.tar.xz) = 1fa676e43bb2da5f4458ad8feb969d7dac3438adb2f3294ca15b2c3e95522363
-SIZE (NVIDIA-FreeBSD-x86_64-575.64.03.tar.xz) = 287548092
+TIMESTAMP = 1753243021
+SHA256 (NVIDIA-FreeBSD-x86_64-575.64.05.tar.xz) = 8831b28b41b821fac90db30a9cfe13481a9d8bd46d0ffeb544fd8c4fbbab538f
+SIZE (NVIDIA-FreeBSD-x86_64-575.64.05.tar.xz) = 287953228
SHA256 (freebsd-drm-kmod-drm_v5.15.160_5_GH0.tar.gz) = 93fc30211374d028ec8e24872cc5ac03dab13309b637cf3bdad27f2dcb808fc0
SIZE (freebsd-drm-kmod-drm_v5.15.160_5_GH0.tar.gz) = 26098570
diff --git a/graphics/nvidia-drm-515-kmod/distinfo b/graphics/nvidia-drm-515-kmod/distinfo
index 502c10c13483..2732c296e914 100644
--- a/graphics/nvidia-drm-515-kmod/distinfo
+++ b/graphics/nvidia-drm-515-kmod/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1750410360
-SHA256 (NVIDIA-FreeBSD-x86_64-570.169.tar.xz) = 1d132020452851b3122dd38ae96eb578a510755c73c417db788611ede51e76ce
-SIZE (NVIDIA-FreeBSD-x86_64-570.169.tar.xz) = 261338796
+TIMESTAMP = 1752773397
+SHA256 (NVIDIA-FreeBSD-x86_64-570.172.08.tar.xz) = 004fd4084d96854580582d6664df7d36df6e03230001c06a9fa0234c1a3ba1e6
+SIZE (NVIDIA-FreeBSD-x86_64-570.172.08.tar.xz) = 260741248
SHA256 (freebsd-drm-kmod-drm_v5.15.160_5_GH0.tar.gz) = 93fc30211374d028ec8e24872cc5ac03dab13309b637cf3bdad27f2dcb808fc0
SIZE (freebsd-drm-kmod-drm_v5.15.160_5_GH0.tar.gz) = 26098570
diff --git a/graphics/nvidia-drm-61-kmod-devel/Makefile b/graphics/nvidia-drm-61-kmod-devel/Makefile
index c36ca3f0be6e..0a245cd0839b 100644
--- a/graphics/nvidia-drm-61-kmod-devel/Makefile
+++ b/graphics/nvidia-drm-61-kmod-devel/Makefile
@@ -1,4 +1,4 @@
-NVIDIA_DISTVERSION= 575.64.03
+NVIDIA_DISTVERSION= 575.64.05
# Explicitly set PORTREVISION as it can be overridden by the master port
PORTREVISION= 0
MASTERDIR= ${.CURDIR}/../nvidia-drm-61-kmod
diff --git a/graphics/nvidia-drm-61-kmod-devel/distinfo b/graphics/nvidia-drm-61-kmod-devel/distinfo
index 03da35fa84ce..3bcfa21add5b 100644
--- a/graphics/nvidia-drm-61-kmod-devel/distinfo
+++ b/graphics/nvidia-drm-61-kmod-devel/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1751450006
-SHA256 (NVIDIA-FreeBSD-x86_64-575.64.03.tar.xz) = 1fa676e43bb2da5f4458ad8feb969d7dac3438adb2f3294ca15b2c3e95522363
-SIZE (NVIDIA-FreeBSD-x86_64-575.64.03.tar.xz) = 287548092
+TIMESTAMP = 1753243692
+SHA256 (NVIDIA-FreeBSD-x86_64-575.64.05.tar.xz) = 8831b28b41b821fac90db30a9cfe13481a9d8bd46d0ffeb544fd8c4fbbab538f
+SIZE (NVIDIA-FreeBSD-x86_64-575.64.05.tar.xz) = 287953228
SHA256 (freebsd-drm-kmod-drm_v6.1.128_4_GH0.tar.gz) = ef5ee435493351a4d123f53b503c018a5195604ad4954a052d40f103643de39d
SIZE (freebsd-drm-kmod-drm_v6.1.128_4_GH0.tar.gz) = 37105937
diff --git a/graphics/nvidia-drm-61-kmod/distinfo b/graphics/nvidia-drm-61-kmod/distinfo
index d16f4303ff76..bc5a5002b05d 100644
--- a/graphics/nvidia-drm-61-kmod/distinfo
+++ b/graphics/nvidia-drm-61-kmod/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1750400626
-SHA256 (NVIDIA-FreeBSD-x86_64-570.169.tar.xz) = 1d132020452851b3122dd38ae96eb578a510755c73c417db788611ede51e76ce
-SIZE (NVIDIA-FreeBSD-x86_64-570.169.tar.xz) = 261338796
+TIMESTAMP = 1752771787
+SHA256 (NVIDIA-FreeBSD-x86_64-570.172.08.tar.xz) = 004fd4084d96854580582d6664df7d36df6e03230001c06a9fa0234c1a3ba1e6
+SIZE (NVIDIA-FreeBSD-x86_64-570.172.08.tar.xz) = 260741248
SHA256 (freebsd-drm-kmod-drm_v6.1.128_4_GH0.tar.gz) = ef5ee435493351a4d123f53b503c018a5195604ad4954a052d40f103643de39d
SIZE (freebsd-drm-kmod-drm_v6.1.128_4_GH0.tar.gz) = 37105937
diff --git a/graphics/nvidia-drm-66-kmod-devel/Makefile b/graphics/nvidia-drm-66-kmod-devel/Makefile
index b7153ab3390f..8a82ec87b6e3 100644
--- a/graphics/nvidia-drm-66-kmod-devel/Makefile
+++ b/graphics/nvidia-drm-66-kmod-devel/Makefile
@@ -1,4 +1,4 @@
-NVIDIA_DISTVERSION= 575.64.03
+NVIDIA_DISTVERSION= 575.64.05
# Explicitly set PORTREVISION as it can be overridden by the master port
PORTREVISION= 0
MASTERDIR= ${.CURDIR}/../nvidia-drm-66-kmod
diff --git a/graphics/nvidia-drm-66-kmod-devel/distinfo b/graphics/nvidia-drm-66-kmod-devel/distinfo
index a419269fc0d5..d855415e360e 100644
--- a/graphics/nvidia-drm-66-kmod-devel/distinfo
+++ b/graphics/nvidia-drm-66-kmod-devel/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1751450069
-SHA256 (NVIDIA-FreeBSD-x86_64-575.64.03.tar.xz) = 1fa676e43bb2da5f4458ad8feb969d7dac3438adb2f3294ca15b2c3e95522363
-SIZE (NVIDIA-FreeBSD-x86_64-575.64.03.tar.xz) = 287548092
+TIMESTAMP = 1753243532
+SHA256 (NVIDIA-FreeBSD-x86_64-575.64.05.tar.xz) = 8831b28b41b821fac90db30a9cfe13481a9d8bd46d0ffeb544fd8c4fbbab538f
+SIZE (NVIDIA-FreeBSD-x86_64-575.64.05.tar.xz) = 287953228
SHA256 (freebsd-drm-kmod-drm_v6.6.25_5_GH0.tar.gz) = 412fe7b8db00ce7ed6339fa3099f9b17fe78b115ccb05a8714228ce70c9d0882
SIZE (freebsd-drm-kmod-drm_v6.6.25_5_GH0.tar.gz) = 38486809
diff --git a/graphics/nvidia-drm-66-kmod/distinfo b/graphics/nvidia-drm-66-kmod/distinfo
index a232ff36b2cf..e1cb84730b17 100644
--- a/graphics/nvidia-drm-66-kmod/distinfo
+++ b/graphics/nvidia-drm-66-kmod/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1750400699
-SHA256 (NVIDIA-FreeBSD-x86_64-570.169.tar.xz) = 1d132020452851b3122dd38ae96eb578a510755c73c417db788611ede51e76ce
-SIZE (NVIDIA-FreeBSD-x86_64-570.169.tar.xz) = 261338796
+TIMESTAMP = 1752774052
+SHA256 (NVIDIA-FreeBSD-x86_64-570.172.08.tar.xz) = 004fd4084d96854580582d6664df7d36df6e03230001c06a9fa0234c1a3ba1e6
+SIZE (NVIDIA-FreeBSD-x86_64-570.172.08.tar.xz) = 260741248
SHA256 (freebsd-drm-kmod-drm_v6.6.25_5_GH0.tar.gz) = 412fe7b8db00ce7ed6339fa3099f9b17fe78b115ccb05a8714228ce70c9d0882
SIZE (freebsd-drm-kmod-drm_v6.6.25_5_GH0.tar.gz) = 38486809
diff --git a/graphics/nvidia-drm-kmod-devel/Makefile b/graphics/nvidia-drm-kmod-devel/Makefile
index 25785ec2b87e..1ef3bc6d3051 100644
--- a/graphics/nvidia-drm-kmod-devel/Makefile
+++ b/graphics/nvidia-drm-kmod-devel/Makefile
@@ -1,4 +1,4 @@
-DISTVERSION= 575.64.03
+DISTVERSION= 575.64.05
# Explicitly set PORTREVISION as it can be overridden by the master port
PORTREVISION= 0
diff --git a/graphics/ogre3d/Makefile b/graphics/ogre3d/Makefile
index 1a1b807c6a5e..14a33598e989 100644
--- a/graphics/ogre3d/Makefile
+++ b/graphics/ogre3d/Makefile
@@ -1,6 +1,6 @@
PORTNAME= ogre3d
DISTVERSIONPREFIX= v
-DISTVERSION= 14.3.4
+DISTVERSION= 14.4.0
CATEGORIES= graphics devel
MAINTAINER= fluffy@FreeBSD.org
diff --git a/graphics/ogre3d/distinfo b/graphics/ogre3d/distinfo
index bcf8fc423cc4..15208737ae82 100644
--- a/graphics/ogre3d/distinfo
+++ b/graphics/ogre3d/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1746126799
-SHA256 (OGRECave-ogre-v14.3.4_GH0.tar.gz) = 0c74e6ca7bb920ff59c5da8a359e6d96215c7804261301feec4f2e54f206b27d
-SIZE (OGRECave-ogre-v14.3.4_GH0.tar.gz) = 94000790
+TIMESTAMP = 1753776498
+SHA256 (OGRECave-ogre-v14.4.0_GH0.tar.gz) = dce4bacf90976020bebafb7d15404af74f674bf9f9f3c6377429cb4493db528b
+SIZE (OGRECave-ogre-v14.4.0_GH0.tar.gz) = 94148698
diff --git a/graphics/ogre3d/files/patch-OgreMain_include_OgrePlatformInformation.h b/graphics/ogre3d/files/patch-OgreMain_include_OgrePlatformInformation.h
new file mode 100644
index 000000000000..be3a704ff2e6
--- /dev/null
+++ b/graphics/ogre3d/files/patch-OgreMain_include_OgrePlatformInformation.h
@@ -0,0 +1,10 @@
+--- OgreMain/include/OgrePlatformInformation.h.orig 2025-07-24 17:32:02 UTC
++++ OgreMain/include/OgrePlatformInformation.h
+@@ -36,7 +36,7 @@ namespace Ogre {
+ #if OGRE_DOUBLE_PRECISION == 0 && OGRE_CPU == OGRE_CPU_X86 && OGRE_COMPILER == OGRE_COMPILER_MSVC
+ # define __OGRE_HAVE_SSE 1
+ #elif OGRE_DOUBLE_PRECISION == 0 && OGRE_CPU == OGRE_CPU_X86 && (OGRE_COMPILER == OGRE_COMPILER_GNUC || OGRE_COMPILER == OGRE_COMPILER_CLANG) && \
+- OGRE_PLATFORM != OGRE_PLATFORM_APPLE_IOS
++ OGRE_PLATFORM != OGRE_PLATFORM_APPLE_IOS && defined(__amd64__)
+ # define __OGRE_HAVE_SSE 1
+ #endif
diff --git a/graphics/ogre3d/pkg-plist b/graphics/ogre3d/pkg-plist
index bbf4a7d03727..879cbb214ed1 100644
--- a/graphics/ogre3d/pkg-plist
+++ b/graphics/ogre3d/pkg-plist
@@ -986,6 +986,7 @@ share/OGRE-%%LIBVERSION%%/Media/materials/scripts/Laplace.material
share/OGRE-%%LIBVERSION%%/Media/materials/scripts/LigthShafts.material
share/OGRE-%%LIBVERSION%%/Media/materials/scripts/MotionBlur.material
share/OGRE-%%LIBVERSION%%/Media/materials/scripts/NightVision.material
+share/OGRE-%%LIBVERSION%%/Media/materials/scripts/Ocean.controls
share/OGRE-%%LIBVERSION%%/Media/materials/scripts/Ocean.material
share/OGRE-%%LIBVERSION%%/Media/materials/scripts/OffsetMapping.material
share/OGRE-%%LIBVERSION%%/Media/materials/scripts/Ogre.material
diff --git a/graphics/opencv/Makefile b/graphics/opencv/Makefile
index 06523cbb8145..6007f89212bb 100644
--- a/graphics/opencv/Makefile
+++ b/graphics/opencv/Makefile
@@ -3,6 +3,9 @@ DISTVERSION= 4.11.0
PORTREVISION= 2
CATEGORIES= graphics
+PATCH_SITES= https://github.com/opencv/opencv/commit/
+PATCHFILES= 97f3f390661f2fd1168336820b89eb4383ce8528.patch:-p1
+
MAINTAINER= desktop@FreeBSD.org
COMMENT= Open Source Computer Vision library
WWW= https://www.opencv.org/
diff --git a/graphics/opencv/distinfo b/graphics/opencv/distinfo
index 06f3f1e26fc4..56458465f4e9 100644
--- a/graphics/opencv/distinfo
+++ b/graphics/opencv/distinfo
@@ -1,9 +1,11 @@
-TIMESTAMP = 1745669344
+TIMESTAMP = 1753904251
SHA256 (opencv-opencv-4.11.0_GH0.tar.gz) = 9a7c11f924eff5f8d8070e297b322ee68b9227e003fd600d4b8122198091665f
SIZE (opencv-opencv-4.11.0_GH0.tar.gz) = 95051012
-SHA256 (opencv-opencv_contrib-4.11.0_GH0.tar.gz) = 2dfc5957201de2aa785064711125af6abb2e80a64e2dc246aca4119b19687041
-SIZE (opencv-opencv_contrib-4.11.0_GH0.tar.gz) = 55450097
SHA256 (opencv-ade-v0.1.2e_GH0.tar.gz) = 107711887d413127955d64a0e42974ec379c1ebb81832c79a21a9e3a2110e4bf
SIZE (opencv-ade-v0.1.2e_GH0.tar.gz) = 117054
SHA256 (opencv-opencv_3rdparty-7f55c0c26be418d494615afca15218566775c725_GH0.tar.gz) = 0b19085992da68a6b6b751ce7c37fd22b27e43ff28455a68280484e436c438e8
SIZE (opencv-opencv_3rdparty-7f55c0c26be418d494615afca15218566775c725_GH0.tar.gz) = 102507737
+SHA256 (opencv-opencv_contrib-4.11.0_GH0.tar.gz) = 2dfc5957201de2aa785064711125af6abb2e80a64e2dc246aca4119b19687041
+SIZE (opencv-opencv_contrib-4.11.0_GH0.tar.gz) = 55450097
+SHA256 (97f3f390661f2fd1168336820b89eb4383ce8528.patch) = 9275b59080fb0380241b2aa6410cfd9dabd412a0746fc8bf94b25a3fb1594af5
+SIZE (97f3f390661f2fd1168336820b89eb4383ce8528.patch) = 3285
diff --git a/graphics/openexr-website-docs/Makefile b/graphics/openexr-website-docs/Makefile
index beceac14bc4c..5a1c782b622a 100644
--- a/graphics/openexr-website-docs/Makefile
+++ b/graphics/openexr-website-docs/Makefile
@@ -1,5 +1,5 @@
PORTNAME= openexr-website-docs
-PORTVERSION= 3.3.4
+PORTVERSION= 3.3.5
PORTREVISION= 0
MASTER_SITES= https://github.com/AcademySoftwareFoundation/openexr/releases/download/v${PORTVERSION}/:DEFAULT \
https://raw.githubusercontent.com/AcademySoftwareFoundation/openexr-images/main/:website \
diff --git a/graphics/openexr-website-docs/distinfo b/graphics/openexr-website-docs/distinfo
index 2238c21fb6c6..47b7309067ac 100644
--- a/graphics/openexr-website-docs/distinfo
+++ b/graphics/openexr-website-docs/distinfo
@@ -1,6 +1,6 @@
-TIMESTAMP = 1749666587
-SHA256 (openexr/openexr-3.3.4.tar.gz) = 73a6d83edcc68333afb95e133f6e12012073815a854bc41abc1a01c1db5f124c
-SIZE (openexr/openexr-3.3.4.tar.gz) = 21206562
+TIMESTAMP = 1753650858
+SHA256 (openexr/openexr-3.3.5.tar.gz) = 8f9241f0e9d6b7aec7e9509cf2a9224416b9cd9d41740deab3827b1f2d01c662
+SIZE (openexr/openexr-3.3.5.tar.gz) = 21207074
SHA256 (openexr/TestImages/README.rst) = 3cbb0a9ab20868940de1b9bf582bdc5ff4244cc585c682d6e40b9befb8fd593c
SIZE (openexr/TestImages/README.rst) = 2588
SHA256 (openexr/TestImages/AllHalfValues.exr) = eede573a0b59b79f21de15ee9d3b7649d58d8f2a8e7787ea34f192db3b3c84a4
diff --git a/graphics/openexr/Makefile b/graphics/openexr/Makefile
index 40ce6dea9c33..b577182f98dc 100644
--- a/graphics/openexr/Makefile
+++ b/graphics/openexr/Makefile
@@ -1,5 +1,5 @@
PORTNAME?= openexr
-PORTVERSION?= 3.3.4 # ALSO update openexr-website-docs! -- verify sigstore: make makesum verify-sigstore
+PORTVERSION?= 3.3.5 # ALSO update openexr-website-docs! -- verify sigstore: make makesum verify-sigstore
PORTREVISION?= 0
CATEGORIES= graphics devel
.if !defined(MASTERDIR)
diff --git a/graphics/openexr/distinfo b/graphics/openexr/distinfo
index 81cbff8e8eb3..b09b1ed3a98b 100644
--- a/graphics/openexr/distinfo
+++ b/graphics/openexr/distinfo
@@ -1,6 +1,6 @@
-TIMESTAMP = 1749601389
-SHA256 (openexr/openexr-3.3.4.tar.gz) = 73a6d83edcc68333afb95e133f6e12012073815a854bc41abc1a01c1db5f124c
-SIZE (openexr/openexr-3.3.4.tar.gz) = 21206562
+TIMESTAMP = 1753648872
+SHA256 (openexr/openexr-3.3.5.tar.gz) = 8f9241f0e9d6b7aec7e9509cf2a9224416b9cd9d41740deab3827b1f2d01c662
+SIZE (openexr/openexr-3.3.5.tar.gz) = 21207074
SHA256 (openexr/Beachball/multipart.0001.exr) = 0cd032069fbaa14a2766861fef9893ea66a6494ff64650725d3b26a500df774b
SIZE (openexr/Beachball/multipart.0001.exr) = 2894260
SHA256 (openexr/Beachball/singlepart.0001.exr) = 29719942ed3c095a8f8f111fc139fc4c28f446007f5bfce00177cae585b1a87a
diff --git a/graphics/openxr/Makefile b/graphics/openxr/Makefile
index 4a608115d3af..628f543d4e94 100644
--- a/graphics/openxr/Makefile
+++ b/graphics/openxr/Makefile
@@ -1,7 +1,6 @@
PORTNAME= openxr
DISTVERSIONPREFIX= release-
-DISTVERSION= 1.1.49
-PORTREVISION= 1
+DISTVERSION= 1.1.50
CATEGORIES= graphics
MAINTAINER= vvd@FreeBSD.org
diff --git a/graphics/openxr/distinfo b/graphics/openxr/distinfo
index 7ca8036e5fc5..94dcfc57d04f 100644
--- a/graphics/openxr/distinfo
+++ b/graphics/openxr/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1749800000
-SHA256 (KhronosGroup-OpenXR-SDK-release-1.1.49_GH0.tar.gz) = 74e9260a1876b0540171571a09bad853302ec68a911200321be8b0591ca94111
-SIZE (KhronosGroup-OpenXR-SDK-release-1.1.49_GH0.tar.gz) = 692160
+TIMESTAMP = 1753960000
+SHA256 (KhronosGroup-OpenXR-SDK-release-1.1.50_GH0.tar.gz) = 9e077d464c688b5063f838e13357ee9639ea33dacc50a9e8207c79a8a93c94c6
+SIZE (KhronosGroup-OpenXR-SDK-release-1.1.50_GH0.tar.gz) = 709092
diff --git a/graphics/osg/Makefile b/graphics/osg/Makefile
index 5698ef582276..e27f9944bd36 100644
--- a/graphics/osg/Makefile
+++ b/graphics/osg/Makefile
@@ -1,10 +1,10 @@
PORTNAME= osg
PORTVERSION= 3.6.5
DISTVERSIONPREFIX= OpenSceneGraph-
-PORTREVISION= 78
+PORTREVISION= 79
CATEGORIES= graphics
-MAINTAINER= amdmi3@FreeBSD.org
+MAINTAINER= fluffy@FreeBSD.org
COMMENT= C++ OpenGL scene graph library for real-time rendering
WWW= https://www.openscenegraph.org/
@@ -16,20 +16,20 @@ LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
LIB_DEPENDS= libpng.so:graphics/png \
libtiff.so:graphics/tiff
-USE_GITHUB= yes
-GH_ACCOUNT= openscenegraph
-GH_PROJECT= OpenSceneGraph
-
-CONFLICTS_INSTALL=osg34
-
USES= alias cmake compiler:c11 jpeg gl pkgconfig xorg
USE_GL= gl
USE_XORG= x11
USE_LDCONFIG= yes
USE_CXXSTD= c++11
+USE_GITHUB= yes
+GH_ACCOUNT= openscenegraph
+GH_PROJECT= OpenSceneGraph
+
CFLAGS+= -I${LOCALBASE}/include/Imath -DInt64=uint64_t
+CONFLICTS_INSTALL=osg34
+
PLIST_SUB= OSG_VERSION=${PORTVERSION} \
OSG_SHLIBVER=161 \
OPENTHREADS_VERSION=3.3.1 \
@@ -38,7 +38,7 @@ PLIST_SUB= OSG_VERSION=${PORTVERSION} \
OPTIONS_DEFINE= CURL FFMPEG FREETYPE GDAL GIF GSTREAMER GTA \
JASPER LIBLAS LUA NVTT OPENEXR PDF SDL ASIO \
SVG VNC XRANDR XINERAMA FONTCONFIG DCMTK COLLADA
-OPTIONS_DEFAULT=FFMPEG FREETYPE GIF XRANDR XINERAMA FONTCONFIG
+OPTIONS_DEFAULT=COLLADA FFMPEG FREETYPE GIF XRANDR XINERAMA FONTCONFIG
OPTIONS_SUB= yes
ASIO_DESC= ASIO support (resthttp plugin)
@@ -55,7 +55,7 @@ COLLADA_DESC= COLLADA (dae) format support
CURL_LIB_DEPENDS= libcurl.so:ftp/curl
CURL_VARS= FORCE_REQUIRE+=CURL
CURL_VARS_OFF= FORCE_IGNORE+=CURL
-FFMPEG_LIB_DEPENDS= libavcodec.so.58:multimedia/ffmpeg4
+FFMPEG_LIB_DEPENDS= libavcodec.so:multimedia/ffmpeg
FFMPEG_VARS= FORCE_REQUIRE+=FFmpeg
FFMPEG_VARS_OFF= FORCE_IGNORE+=FFmpeg
FREETYPE_LIB_DEPENDS= libfreetype.so:print/freetype2
diff --git a/graphics/osg/files/patch-CMakeModules_FindFFmpeg.cmake b/graphics/osg/files/patch-CMakeModules_FindFFmpeg.cmake
deleted file mode 100644
index 21ea506f30a7..000000000000
--- a/graphics/osg/files/patch-CMakeModules_FindFFmpeg.cmake
+++ /dev/null
@@ -1,10 +0,0 @@
---- CMakeModules/FindFFmpeg.cmake.orig 2023-04-24 09:16:25 UTC
-+++ CMakeModules/FindFFmpeg.cmake
-@@ -21,6 +21,7 @@
- # (in new version case, use by ffmpeg header)
- #and ${FFMPEG_libname_INCLUDE_DIRS/libname} (in new version case, use by osg plugin code)
-
-+set(CMAKE_PREFIX_PATH "%%LOCALBASE%%/ffmpeg4;%%LOCALBASE%%/ffmpeg4/libexec")
-
- # Macro to find header and lib directories
- # example: FFMPEG_FIND(AVFORMAT avformat avformat.h)
diff --git a/graphics/osg/files/patch-CMakeModules_FindGStreamer.cmake b/graphics/osg/files/patch-CMakeModules_FindGStreamer.cmake
index 7b3259726d4b..a21b9d2bf56f 100644
--- a/graphics/osg/files/patch-CMakeModules_FindGStreamer.cmake
+++ b/graphics/osg/files/patch-CMakeModules_FindGStreamer.cmake
@@ -1,6 +1,6 @@
---- CMakeModules/FindGStreamer.cmake 2015-07-17 21:31:19.000000000 +0300
-+++ CMakeModules/FindGStreamer.cmake 2015-02-25 22:25:34.000000000 +0300
-@@ -83,18 +83,18 @@
+--- CMakeModules/FindGStreamer.cmake.orig 2022-12-01 18:17:31 UTC
++++ CMakeModules/FindGStreamer.cmake
+@@ -83,18 +83,18 @@ else ()
find_package(PkgConfig)
macro(FIND_GSTREAMER_COMPONENT _component_prefix _pkgconfig_name _header _library)
@@ -12,17 +12,16 @@
-# HINTS ${PC_${_component_prefix}_INCLUDE_DIRS} ${PC_${_component_prefix}_INCLUDEDIR}
-# PATH_SUFFIXES gstreamer-1.0
-# )
--
--# find_library(${_component_prefix}_LIBRARIES
--# NAMES ${_library}
--# HINTS ${PC_${_component_prefix}_LIBRARY_DIRS} ${PC_${_component_prefix}_LIBDIR}
--# )
+ find_path(${_component_prefix}_INCLUDE_DIRS
+ NAMES ${_header}
+ HINTS ${PC_${_component_prefix}_INCLUDE_DIRS} ${PC_${_component_prefix}_INCLUDEDIR}
+ PATH_SUFFIXES gstreamer-1.0
+ )
-+
+
+-# find_library(${_component_prefix}_LIBRARIES
+-# NAMES ${_library}
+-# HINTS ${PC_${_component_prefix}_LIBRARY_DIRS} ${PC_${_component_prefix}_LIBDIR}
+-# )
+ find_library(${_component_prefix}_LIBRARIES
+ NAMES ${_library}
+ HINTS ${PC_${_component_prefix}_LIBRARY_DIRS} ${PC_${_component_prefix}_LIBDIR}
diff --git a/graphics/osg/files/patch-src_osgPlugins_OpenCASCADE_ReaderWriterOpenCASCADE.cpp b/graphics/osg/files/patch-src_osgPlugins_OpenCASCADE_ReaderWriterOpenCASCADE.cpp
new file mode 100644
index 000000000000..0cb83cdf56a9
--- /dev/null
+++ b/graphics/osg/files/patch-src_osgPlugins_OpenCASCADE_ReaderWriterOpenCASCADE.cpp
@@ -0,0 +1,11 @@
+--- src/osgPlugins/OpenCASCADE/ReaderWriterOpenCASCADE.cpp.orig 2022-12-01 18:17:31 UTC
++++ src/osgPlugins/OpenCASCADE/ReaderWriterOpenCASCADE.cpp
+@@ -211,7 +211,7 @@ osg::ref_ptr<osg::Geometry> ReaderWritterOpenCASCADE::
+ {
+ // populate vertex list
+ // Ref: http://www.opencascade.org/org/forum/thread_16694/?forum=3
+- gp_Pnt pt = (triangulation->Nodes())(j).Transformed(transformation * location.Transformation());
++ gp_Pnt pt = (triangulation->Node(j)).Transformed(transformation * location.Transformation());
+ vertexList->push_back(osg::Vec3(pt.X(), pt.Y(), pt.Z()));
+
+ // populate color list
diff --git a/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoder.cpp b/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoder.cpp
new file mode 100644
index 000000000000..ecf35527a878
--- /dev/null
+++ b/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoder.cpp
@@ -0,0 +1,207 @@
+--- src/osgPlugins/ffmpeg/FFmpegDecoder.cpp.orig 2022-12-01 18:17:31 UTC
++++ src/osgPlugins/ffmpeg/FFmpegDecoder.cpp
+@@ -1,4 +1,3 @@
+-
+ #include "FFmpegDecoder.hpp"
+ #include "FFmpegParameters.hpp"
+
+@@ -36,8 +35,10 @@ FFmpegDecoder::FFmpegDecoder() :
+ }
+
+ FFmpegDecoder::FFmpegDecoder() :
+- m_audio_stream(0),
+- m_video_stream(0),
++ m_audio_stream(nullptr),
++ m_video_stream(nullptr),
++ m_audio_index(-1),
++ m_video_index(-1),
+ m_audio_queue(100),
+ m_video_queue(100),
+ m_audio_decoder(m_audio_queue, m_clocks),
+@@ -61,10 +62,10 @@ bool FFmpegDecoder::open(const std::string & filename,
+ try
+ {
+ // Open video file
+- AVFormatContext * p_format_context = 0;
+- AVInputFormat *iformat = 0;
++ AVFormatContext * p_format_context = nullptr;
++ AVInputFormat *iformat = nullptr;
+
+- if (filename.compare(0, 5, "/dev/")==0)
++ if (filename.compare(0, 5, "/dev/") == 0)
+ {
+ #ifdef ANDROID
+ throw std::runtime_error("Device not supported on Android");
+@@ -78,24 +79,24 @@ bool FFmpegDecoder::open(const std::string & filename,
+ }
+
+ std::string format = "video4linux2";
+- iformat = av_find_input_format(format.c_str());
++ iformat = const_cast<AVInputFormat*>(av_find_input_format(format.c_str()));
+
+ if (iformat)
+ {
+- OSG_INFO<<"Found input format: "<<format<<std::endl;
++ OSG_INFO << "Found input format: " << format << std::endl;
+ }
+ else
+ {
+- OSG_INFO<<"Failed to find input format: "<<format<<std::endl;
++ OSG_INFO << "Failed to find input format: " << format << std::endl;
+ }
+
+ #endif
+ }
+ else
+ {
+- iformat = parameters ? parameters->getFormat() : 0;
+- AVIOContext* context = parameters ? parameters->getContext() : 0;
+- if (context != NULL)
++ iformat = parameters ? const_cast<AVInputFormat*>(parameters->getFormat()) : nullptr;
++ AVIOContext* context = parameters ? parameters->getContext() : nullptr;
++ if (context != nullptr)
+ {
+ p_format_context = avformat_alloc_context();
+ p_format_context->pb = context;
+@@ -105,22 +106,7 @@ bool FFmpegDecoder::open(const std::string & filename,
+ int error = avformat_open_input(&p_format_context, filename.c_str(), iformat, parameters->getOptions());
+ if (error != 0)
+ {
+- std::string error_str;
+- switch (error)
+- {
+- //case AVERROR_UNKNOWN: error_str = "AVERROR_UNKNOWN"; break; // same value as AVERROR_INVALIDDATA
+- case AVERROR_IO: error_str = "AVERROR_IO"; break;
+- case AVERROR_NUMEXPECTED: error_str = "AVERROR_NUMEXPECTED"; break;
+- case AVERROR_INVALIDDATA: error_str = "AVERROR_INVALIDDATA"; break;
+- case AVERROR_NOMEM: error_str = "AVERROR_NOMEM"; break;
+- case AVERROR_NOFMT: error_str = "AVERROR_NOFMT"; break;
+- case AVERROR_NOTSUPP: error_str = "AVERROR_NOTSUPP"; break;
+- case AVERROR_NOENT: error_str = "AVERROR_NOENT"; break;
+- case AVERROR_PATCHWELCOME: error_str = "AVERROR_PATCHWELCOME"; break;
+- default: error_str = "Unknown error"; break;
+- }
+-
+- throw std::runtime_error("av_open_input_file() failed : " + error_str);
++ throw std::runtime_error("avformat_open_input() failed: " + AvStrError(error));
+ }
+
+ m_format_context.reset(p_format_context);
+@@ -128,15 +114,15 @@ bool FFmpegDecoder::open(const std::string & filename,
+ // Retrieve stream info
+ // Only buffer up to one and a half seconds by default
+ float max_analyze_duration = 1.5;
+- AVDictionaryEntry *mad = av_dict_get( *parameters->getOptions(), "mad", NULL, 0 );
+- if ( mad ) {
++ AVDictionaryEntry *mad = av_dict_get(*parameters->getOptions(), "mad", NULL, 0);
++ if (mad) {
+ max_analyze_duration = atof(mad->value);
+ }
+ p_format_context->max_analyze_duration = AV_TIME_BASE * max_analyze_duration;
+ // p_format_context->probesize = 100000;
+
+ if (avformat_find_stream_info(p_format_context, NULL) < 0)
+- throw std::runtime_error("av_find_stream_info() failed");
++ throw std::runtime_error("avformat_find_stream_info() failed");
+
+ m_duration = double(m_format_context->duration) / AV_TIME_BASE;
+ if (m_format_context->start_time != static_cast<int64_t>(AV_NOPTS_VALUE))
+@@ -159,7 +145,7 @@ bool FFmpegDecoder::open(const std::string & filename,
+ m_audio_stream = m_format_context->streams[m_audio_index];
+ else
+ {
+- m_audio_stream = 0;
++ m_audio_stream = nullptr;
+ m_audio_index = std::numeric_limits<unsigned int>::max();
+ }
+
+@@ -271,7 +257,7 @@ bool FFmpegDecoder::readNextPacketNormal()
+ {
+ AVPacket packet;
+
+- if (! m_pending_packet)
++ if (!m_pending_packet)
+ {
+ bool end_of_stream = false;
+
+@@ -279,10 +265,10 @@ bool FFmpegDecoder::readNextPacketNormal()
+ int error = av_read_frame(m_format_context.get(), &packet);
+ if (error < 0)
+ {
+- if (error == static_cast<int>(AVERROR_EOF) ||
+- m_format_context.get()->pb->eof_reached)
++ if (error == static_cast<int>(AVERROR_EOF) || m_format_context.get()->pb->eof_reached)
+ end_of_stream = true;
+- else {
++ else
++ {
+ OSG_FATAL << "av_read_frame() returned " << AvStrError(error) << std::endl;
+ throw std::runtime_error("av_read_frame() failed");
+ }
+@@ -303,12 +289,6 @@ bool FFmpegDecoder::readNextPacketNormal()
+ }
+ else
+ {
+- // Make the packet data available beyond av_read_frame() logical scope.
+- if ((error = av_dup_packet(&packet)) < 0) {
+- OSG_FATAL << "av_dup_packet() returned " << AvStrError(error) << std::endl;
+- throw std::runtime_error("av_dup_packet() failed");
+- }
+-
+ m_pending_packet = FFmpegPacket(packet);
+ }
+ }
+@@ -340,8 +320,6 @@ bool FFmpegDecoder::readNextPacketNormal()
+ return false;
+ }
+
+-
+-
+ bool FFmpegDecoder::readNextPacketEndOfStream()
+ {
+ const FFmpegPacket packet(FFmpegPacket::PACKET_END_OF_STREAM);
+@@ -352,8 +330,6 @@ bool FFmpegDecoder::readNextPacketEndOfStream()
+ return false;
+ }
+
+-
+-
+ bool FFmpegDecoder::readNextPacketRewinding()
+ {
+ const FFmpegPacket packet(FFmpegPacket::PACKET_FLUSH);
+@@ -364,8 +340,6 @@ bool FFmpegDecoder::readNextPacketRewinding()
+ return false;
+ }
+
+-
+-
+ void FFmpegDecoder::rewindButDontFlushQueues()
+ {
+ const AVRational AvTimeBaseQ = { 1, AV_TIME_BASE }; // = AV_TIME_BASE_Q
+@@ -374,7 +348,8 @@ void FFmpegDecoder::rewindButDontFlushQueues()
+ const int64_t seek_target = av_rescale_q(pos, AvTimeBaseQ, m_video_stream->time_base);
+
+ int error = 0;
+- if ((error = av_seek_frame(m_format_context.get(), m_video_index, seek_target, 0/*AVSEEK_FLAG_BYTE |*/ /*AVSEEK_FLAG_BACKWARD*/)) < 0) {
++ if ((error = av_seek_frame(m_format_context.get(), m_video_index, seek_target, 0)) < 0)
++ {
+ OSG_FATAL << "av_seek_frame returned " << AvStrError(error) << std::endl;
+ throw std::runtime_error("av_seek_frame failed()");
+ }
+@@ -397,13 +372,14 @@ void FFmpegDecoder::seekButDontFlushQueues(double time
+ {
+ const AVRational AvTimeBaseQ = { 1, AV_TIME_BASE }; // = AV_TIME_BASE_Q
+
+- const int64_t pos = int64_t(m_clocks.getStartTime()+time * double(AV_TIME_BASE));
++ const int64_t pos = int64_t(m_clocks.getStartTime() + time * double(AV_TIME_BASE));
+ const int64_t seek_target = av_rescale_q(pos, AvTimeBaseQ, m_video_stream->time_base);
+
+ m_clocks.setSeekTime(time);
+
+ int error = 0;
+- if ((error = av_seek_frame(m_format_context.get(), m_video_index, seek_target, 0/*AVSEEK_FLAG_BYTE |*/ /*AVSEEK_FLAG_BACKWARD*/)) < 0) {
++ if ((error = av_seek_frame(m_format_context.get(), m_video_index, seek_target, 0)) < 0)
++ {
+ OSG_FATAL << "av_seek_frame() returned " << AvStrError(error) << std::endl;
+ throw std::runtime_error("av_seek_frame failed()");
+ }
diff --git a/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoder.hpp b/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoder.hpp
new file mode 100644
index 000000000000..090eed7d6e32
--- /dev/null
+++ b/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoder.hpp
@@ -0,0 +1,255 @@
+--- src/osgPlugins/ffmpeg/FFmpegDecoder.hpp.orig 2022-12-01 18:17:31 UTC
++++ src/osgPlugins/ffmpeg/FFmpegDecoder.hpp
+@@ -1,4 +1,3 @@
+-
+ #ifndef HEADER_GUARD_OSGFFMPEG_FFMPEG_DECODER_H
+ #define HEADER_GUARD_OSGFFMPEG_FFMPEG_DECODER_H
+
+@@ -7,73 +6,76 @@
+
+ #include <osg/Notify>
+
+-
+ namespace osgFFmpeg {
+
+ class FFmpegParameters;
+
+ class FormatContextPtr
+ {
+- public:
+-
+- typedef AVFormatContext T;
+-
+- explicit FormatContextPtr() : _ptr(0) {}
+- explicit FormatContextPtr(T* ptr) : _ptr(ptr) {}
+-
+- ~FormatContextPtr()
+- {
+- cleanup();
+- }
+-
+- T* get() { return _ptr; }
++public:
++ typedef AVFormatContext T;
+
+- operator bool() const { return _ptr != 0; }
++ explicit FormatContextPtr() : _ptr(nullptr) {}
++ explicit FormatContextPtr(T* ptr) : _ptr(ptr) {}
+
+- T * operator-> () const // never throws
+- {
+- return _ptr;
+- }
++ ~FormatContextPtr()
++ {
++ cleanup();
++ }
+
+- void reset(T* ptr)
+- {
+- if (ptr==_ptr) return;
+- cleanup();
+- _ptr = ptr;
+- }
++ T* get() const { return _ptr; }
++ T** getPtr() { return &_ptr; }
+
+- void cleanup()
++ operator T*() const { return _ptr; }
++
++ FormatContextPtr& operator=(T* ptr)
++ {
++ reset(ptr);
++ return *this;
++ }
++
++ bool operator==(std::nullptr_t) const { return _ptr == nullptr; }
++ bool operator!=(std::nullptr_t) const { return _ptr != nullptr; }
++
++ T* operator->() const // never throws
++ {
++ return _ptr;
++ }
++
++ void reset(T* ptr)
++ {
++ if (ptr == _ptr) return;
++ cleanup();
++ _ptr = ptr;
++ }
++
++ void cleanup()
++ {
++ if (_ptr)
+ {
+- if (_ptr)
+- {
+ #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(53, 17, 0)
+- OSG_NOTICE<<"Calling avformat_close_input("<<&_ptr<<")"<<std::endl;
+- avformat_close_input(&_ptr);
++ OSG_NOTICE << "Calling avformat_close_input(" << &_ptr << ")" << std::endl;
++ avformat_close_input(&_ptr);
+ #else
+- OSG_NOTICE<<"Calling av_close_input_file("<<_ptr<<")"<<std::endl;
+- av_close_input_file(_ptr);
++ OSG_NOTICE << "Calling av_close_input_file(" << _ptr << ")" << std::endl;
++ av_close_input_file(_ptr);
+ #endif
+- }
+- _ptr = 0;
+ }
+-
+-
++ _ptr = nullptr;
++ }
+
+- protected:
+-
+- T* _ptr;
++protected:
++ T* _ptr;
+ };
+
+-
+ class FFmpegDecoder : public osg::Referenced
+ {
+ public:
+-
+ FFmpegDecoder();
+ ~FFmpegDecoder();
+
+- bool open(const std::string & filename, FFmpegParameters* parameters);
+- void close(bool waitForThreadToExit);
++ bool open(const std::string& filename, FFmpegParameters* parameters);
++ void close(bool waitForThreadToExit = true);
+
+ bool readNextPacket();
+ void rewind();
+@@ -87,13 +89,12 @@ class FFmpegDecoder : public osg::Referenced (public)
+ double duration() const;
+ double reference();
+
+- FFmpegDecoderAudio & audio_decoder();
+- FFmpegDecoderVideo & video_decoder();
+- FFmpegDecoderAudio const & audio_decoder() const;
+- FFmpegDecoderVideo const & video_decoder() const;
++ FFmpegDecoderAudio& audio_decoder();
++ FFmpegDecoderVideo& video_decoder();
++ FFmpegDecoderAudio const& audio_decoder() const;
++ FFmpegDecoderVideo const& video_decoder() const;
+
+ protected:
+-
+ enum State
+ {
+ NORMAL,
+@@ -115,38 +116,33 @@ class FFmpegDecoder : public osg::Referenced (public)
+ void rewindButDontFlushQueues();
+ void seekButDontFlushQueues(double time);
+
+- FormatContextPtr m_format_context;
+- AVStream * m_audio_stream;
+- AVStream * m_video_stream;
++ FormatContextPtr m_format_context;
++ AVStream* m_audio_stream;
++ AVStream* m_video_stream;
+
+- int m_audio_index;
+- int m_video_index;
++ int m_audio_index;
++ int m_video_index;
+
+- FFmpegClocks m_clocks;
+- FFmpegPacket m_pending_packet;
+- PacketQueue m_audio_queue;
+- PacketQueue m_video_queue;
+-
+- FFmpegDecoderAudio m_audio_decoder;
+- FFmpegDecoderVideo m_video_decoder;
++ FFmpegClocks m_clocks;
++ FFmpegPacket m_pending_packet;
++ PacketQueue m_audio_queue;
++ PacketQueue m_video_queue;
+
+- double m_duration;
+- double m_start;
++ FFmpegDecoderAudio m_audio_decoder;
++ FFmpegDecoderVideo m_video_decoder;
+
+- State m_state;
+- bool m_loop;
++ double m_duration;
++ double m_start;
++
++ State m_state;
++ bool m_loop;
+ };
+
+-
+-
+-
+-
+ inline void FFmpegDecoder::loop(const bool loop)
+ {
+ m_loop = loop;
+ }
+
+-
+ inline bool FFmpegDecoder::loop() const
+ {
+ return m_loop;
+@@ -154,8 +150,8 @@ inline double FFmpegDecoder::creation_time() const
+
+ inline double FFmpegDecoder::creation_time() const
+ {
+- if(m_format_context) return m_format_context->start_time;
+- else return HUGE_VAL;
++ if (m_format_context) return m_format_context->start_time;
++ else return HUGE_VAL;
+ }
+
+ inline double FFmpegDecoder::duration() const
+@@ -165,37 +161,30 @@ inline double FFmpegDecoder::reference()
+
+ inline double FFmpegDecoder::reference()
+ {
+- return m_clocks.getCurrentTime();
++ return m_clocks.getCurrentTime();
+ }
+
+-
+-inline FFmpegDecoderAudio & FFmpegDecoder::audio_decoder()
++inline FFmpegDecoderAudio& FFmpegDecoder::audio_decoder()
+ {
+ return m_audio_decoder;
+ }
+
+-
+-inline FFmpegDecoderVideo & FFmpegDecoder::video_decoder()
++inline FFmpegDecoderVideo& FFmpegDecoder::video_decoder()
+ {
+ return m_video_decoder;
+ }
+
+-
+-inline FFmpegDecoderAudio const & FFmpegDecoder::audio_decoder() const
++inline FFmpegDecoderAudio const& FFmpegDecoder::audio_decoder() const
+ {
+ return m_audio_decoder;
+ }
+
+-
+-inline FFmpegDecoderVideo const & FFmpegDecoder::video_decoder() const
++inline FFmpegDecoderVideo const& FFmpegDecoder::video_decoder() const
+ {
+ return m_video_decoder;
+ }
+
+-
+-
+ } // namespace osgFFmpeg
+
+-
+-
+ #endif // HEADER_GUARD_OSGFFMPEG_FFMPEG_DECODER_H
++
diff --git a/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoderAudio.cpp b/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoderAudio.cpp
new file mode 100644
index 000000000000..fcee15f62682
--- /dev/null
+++ b/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoderAudio.cpp
@@ -0,0 +1,478 @@
+--- src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp.orig 2022-12-01 18:17:31 UTC
++++ src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp
+@@ -1,39 +1,24 @@
+ #include "FFmpegDecoderAudio.hpp"
+-
+ #include <osg/Notify>
+-
+ #include <stdexcept>
+-#include <string.h>
++#include <cstring>
++#include <libavutil/channel_layout.h>
++#include <libavutil/opt.h>
+
+-//DEBUG
+-//#include <iostream>
+-
+-
+ #ifndef AVCODEC_MAX_AUDIO_FRAME_SIZE
+ #define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000
+ #endif
+
+-#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55,28,1)
+-#define av_frame_alloc avcodec_alloc_frame
+-#define av_frame_free avcodec_free_frame
+-#endif
+-
+-#if LIBAVCODEC_VERSION_MAJOR < 56
+- #define AV_CODEC_ID_NONE CODEC_ID_NONE
+-#endif
+-
+ namespace osgFFmpeg {
+
+ static int decode_audio(AVCodecContext *avctx, int16_t *samples,
+- int *frame_size_ptr,
+- const uint8_t *buf, int buf_size,
+- SwrContext *swr_context,
+- int out_sample_rate,
+- int out_nb_channels,
+- AVSampleFormat out_sample_format)
++ int *frame_size_ptr,
++ const uint8_t *buf, int buf_size,
++ SwrContext *swr_context,
++ int out_sample_rate,
++ int out_nb_channels,
++ AVSampleFormat out_sample_format)
+ {
+-#if LIBAVCODEC_VERSION_MAJOR >= 53 || (LIBAVCODEC_VERSION_MAJOR==52 && LIBAVCODEC_VERSION_MINOR>=32)
+-
+ AVPacket avpkt;
+ av_init_packet(&avpkt);
+ avpkt.data = const_cast<uint8_t *>(buf);
+@@ -45,30 +30,39 @@ static int decode_audio(AVCodecContext *avctx, int16_t
+ if (!frame)
+ return AVERROR(ENOMEM);
+
+- ret = avcodec_decode_audio4(avctx, frame, &got_frame, &avpkt);
++ // Send the packet to the decoder
++ ret = avcodec_send_packet(avctx, &avpkt);
++ if (ret < 0) {
++ av_frame_free(&frame);
++ return ret;
++ }
+
+-#ifdef USE_AVRESAMPLE // libav's AVFrame structure does not contain a 'channels' field
+- if (ret >= 0 && got_frame) {
+-#else
+- if (ret >= 0 && got_frame && av_frame_get_channels(frame)>0) {
+-#endif
++ // Receive the frame from the decoder
++ ret = avcodec_receive_frame(avctx, frame);
++ if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) {
++ av_frame_free(&frame);
++ return 0;
++ } else if (ret < 0) {
++ av_frame_free(&frame);
++ return ret;
++ } else {
++ got_frame = 1;
++ }
++
++ if (ret >= 0 && got_frame && frame->ch_layout.nb_channels > 0) {
+ int ch, plane_size;
+ int planar = av_sample_fmt_is_planar(avctx->sample_fmt);
+
+ int out_samples;
+ // if sample rate changes, number of samples is different
+- if ( out_sample_rate != avctx->sample_rate ) {
+-// out_samples = av_rescale_rnd(swr_get_delay(swr_context, avctx->sample_rate) +
+-// frame->nb_samples, out_sample_rate, avctx->sample_rate, AV_ROUND_UP);
++ if (out_sample_rate != avctx->sample_rate) {
+ out_samples = av_rescale_rnd(frame->nb_samples, out_sample_rate, avctx->sample_rate, AV_ROUND_UP);
+- }
+- else {
++ } else {
+ out_samples = frame->nb_samples;
+ }
+
+ int output_data_size = av_samples_get_buffer_size(&plane_size, out_nb_channels,
+- out_samples,
+- out_sample_format, 1);
++ out_samples, out_sample_format, 1);
+
+ if (*frame_size_ptr < output_data_size) {
+ av_log(avctx, AV_LOG_ERROR, "output buffer size is too small for "
+@@ -78,23 +72,19 @@ static int decode_audio(AVCodecContext *avctx, int16_t
+ }
+
+ // if resampling is needed, call swr_convert
+- if ( swr_context != NULL ) {
+-
++ if (swr_context != nullptr) {
+ out_samples = swr_convert(swr_context, (uint8_t **)&samples, out_samples,
+- (const uint8_t **)frame->extended_data, frame->nb_samples);
++ (const uint8_t **)frame->extended_data, frame->nb_samples);
+
+ // recompute output_data_size following swr_convert result (number of samples actually converted)
+ output_data_size = av_samples_get_buffer_size(&plane_size, out_nb_channels,
+- out_samples,
+- out_sample_format, 1);
+- }
+- else {
+-
++ out_samples, out_sample_format, 1);
++ } else {
+ memcpy(samples, frame->extended_data[0], plane_size);
+
+- if (planar && avctx->channels > 1) {
++ if (planar && frame->ch_layout.nb_channels > 1) {
+ uint8_t *out = ((uint8_t *)samples) + plane_size;
+- for (ch = 1; ch < avctx->channels; ch++) {
++ for (ch = 1; ch < frame->ch_layout.nb_channels; ch++) {
+ memcpy(out, frame->extended_data[ch], plane_size);
+ out += plane_size;
+ }
+@@ -102,26 +92,21 @@ static int decode_audio(AVCodecContext *avctx, int16_t
+ }
+
+ *frame_size_ptr = output_data_size;
+-
+ } else {
+ *frame_size_ptr = 0;
+ }
++
+ av_frame_free(&frame);
+ return ret;
+-
+-#else
+- // fallback for older versions of ffmpeg that don't have avcodec_decode_audio3.
+- return avcodec_decode_audio2(avctx, samples, frame_size_ptr, buf, buf_size);
+-#endif
+ }
+
+
+-FFmpegDecoderAudio::FFmpegDecoderAudio(PacketQueue & packets, FFmpegClocks & clocks) :
++FFmpegDecoderAudio::FFmpegDecoderAudio(PacketQueue &packets, FFmpegClocks &clocks) :
+ m_packets(packets),
+ m_clocks(clocks),
+- m_stream(0),
+- m_context(0),
+- m_packet_data(0),
++ m_stream(nullptr),
++ m_context(nullptr),
++ m_packet_data(nullptr),
+ m_bytes_remaining(0),
+ m_audio_buffer((AVCODEC_MAX_AUDIO_FRAME_SIZE * 3) / 2),
+ m_audio_buf_size(0),
+@@ -129,7 +114,7 @@ FFmpegDecoderAudio::FFmpegDecoderAudio(PacketQueue & p
+ m_end_of_stream(false),
+ m_paused(true),
+ m_exit(false),
+- m_swr_context(NULL)
++ m_swr_context(nullptr)
+ {
+ }
+
+@@ -137,103 +122,95 @@ FFmpegDecoderAudio::~FFmpegDecoderAudio()
+
+ FFmpegDecoderAudio::~FFmpegDecoderAudio()
+ {
+- this->close(true);
++ close(true);
+ }
+
+
+
+-void FFmpegDecoderAudio::open(AVStream * const stream, FFmpegParameters* parameters)
++void FFmpegDecoderAudio::open(AVStream *stream, FFmpegParameters* parameters)
+ {
+ try
+ {
+ // Sound can be optional (i.e. no audio stream is present)
+- if (stream == 0)
++ if (stream == nullptr)
+ return;
+
+ m_stream = stream;
+- m_context = stream->codec;
++ m_context = avcodec_alloc_context3(nullptr);
++ avcodec_parameters_to_context(m_context, stream->codecpar);
+
+ m_in_sample_rate = m_context->sample_rate;
+- m_in_nb_channels = m_context->channels;
++ m_in_nb_channels = m_context->ch_layout.nb_channels;
+ m_in_sample_format = m_context->sample_fmt;
+
+- AVDictionaryEntry *opt_out_sample_rate = av_dict_get( *parameters->getOptions(), "out_sample_rate", NULL, 0 );
+- if ( opt_out_sample_rate )
++ AVDictionaryEntry *opt_out_sample_rate = av_dict_get(*parameters->getOptions(), "out_sample_rate", nullptr, 0);
++ if (opt_out_sample_rate)
+ m_out_sample_rate = atoi(opt_out_sample_rate->value);
+ else
+ m_out_sample_rate = m_in_sample_rate;
+
+- AVDictionaryEntry *opt_out_sample_format = av_dict_get( *parameters->getOptions(), "out_sample_format", NULL, 0 );
+- if ( opt_out_sample_format )
++ AVDictionaryEntry *opt_out_sample_format = av_dict_get(*parameters->getOptions(), "out_sample_format", nullptr, 0);
++ if (opt_out_sample_format)
+ m_out_sample_format = (AVSampleFormat) atoi(opt_out_sample_format->value);
+ else
+ // always packed, planar formats are evil!
+- m_out_sample_format = av_get_packed_sample_fmt( m_in_sample_format );
++ m_out_sample_format = av_get_packed_sample_fmt(m_in_sample_format);
+
+- AVDictionaryEntry *opt_out_nb_channels = av_dict_get( *parameters->getOptions(), "out_nb_channels", NULL, 0 );
+- if ( opt_out_nb_channels )
++ AVDictionaryEntry *opt_out_nb_channels = av_dict_get(*parameters->getOptions(), "out_nb_channels", nullptr, 0);
++ if (opt_out_nb_channels)
+ m_out_nb_channels = atoi(opt_out_nb_channels->value);
+ else
+ m_out_nb_channels = m_in_nb_channels;
+
+- if ( m_in_sample_rate != m_out_sample_rate
++ if (m_in_sample_rate != m_out_sample_rate
+ || m_in_nb_channels != m_out_nb_channels
+- || m_in_sample_format != m_out_sample_format )
++ || m_in_sample_format != m_out_sample_format)
+ {
+-#if 0
+-printf("### CONVERTING from sample format %s TO %s\n\t\tFROM %d TO %d channels\n\t\tFROM %d Hz to %d Hz\n",
+- av_get_sample_fmt_name(m_in_sample_format),
+- av_get_sample_fmt_name(m_out_sample_format),
+- m_in_nb_channels,
+- m_out_nb_channels,
+- m_in_sample_rate,
+- m_out_sample_rate);
+-#endif
+- m_swr_context = swr_alloc_set_opts(NULL,
+- av_get_default_channel_layout(m_out_nb_channels),
+- m_out_sample_format,
+- m_out_sample_rate,
+- av_get_default_channel_layout(m_in_nb_channels),
+- m_in_sample_format,
+- m_in_sample_rate,
+- 0, NULL );
++ AVChannelLayout in_ch_layout;
++ AVChannelLayout out_ch_layout;
++ av_channel_layout_default(&in_ch_layout, m_in_nb_channels);
++ av_channel_layout_default(&out_ch_layout, m_out_nb_channels);
+
+- int err = swr_init(m_swr_context);
++ m_swr_context = swr_alloc();
++ if (!m_swr_context) {
++ throw std::runtime_error("Could not allocate resampler context");
++ }
+
+- if ( err ) {
++ av_opt_set_int(m_swr_context, "in_channel_count", in_ch_layout.nb_channels, 0);
++ av_opt_set_int(m_swr_context, "in_sample_rate", m_in_sample_rate, 0);
++ av_opt_set_sample_fmt(m_swr_context, "in_sample_fmt", m_in_sample_format, 0);
++ av_opt_set_chlayout(m_swr_context, "in_chlayout", &in_ch_layout, 0);
++
++ av_opt_set_int(m_swr_context, "out_channel_count", out_ch_layout.nb_channels, 0);
++ av_opt_set_int(m_swr_context, "out_sample_rate", m_out_sample_rate, 0);
++ av_opt_set_sample_fmt(m_swr_context, "out_sample_fmt", m_out_sample_format, 0);
++ av_opt_set_chlayout(m_swr_context, "out_chlayout", &out_ch_layout, 0);
++
++ int err = swr_init(m_swr_context);
++ if (err < 0) {
+ char error_string[512];
+- av_strerror(err, error_string, 512);
++ av_strerror(err, error_string, sizeof(error_string));
+ OSG_WARN << "FFmpegDecoderAudio - WARNING: Error initializing resampling context : " << error_string << std::endl;
+ swr_free(&m_swr_context);
+- throw std::runtime_error("swr_init() failed");;
++ throw std::runtime_error("swr_init() failed");
+ }
+ }
+
+- // Check stream sanity
+ if (m_context->codec_id == AV_CODEC_ID_NONE)
+- throw std::runtime_error("invalid audio codec");;
++ throw std::runtime_error("invalid audio codec");
+
+- // Find the decoder for the audio stream
+- AVCodec * const p_codec = avcodec_find_decoder(m_context->codec_id);
++ const AVCodec *p_codec = avcodec_find_decoder(m_context->codec_id);
+
+- if (p_codec == 0)
++ if (p_codec == nullptr)
+ throw std::runtime_error("avcodec_find_decoder() failed");
+
+- // Inform the codec that we can handle truncated bitstreams
+- //if (p_codec->capabilities & CODEC_CAP_TRUNCATED)
+- // m_context->flags |= CODEC_FLAG_TRUNCATED;
+-
+- // Open codec
+- if (avcodec_open2(m_context, p_codec, NULL) < 0)
++ if (avcodec_open2(m_context, p_codec, nullptr) < 0)
+ throw std::runtime_error("avcodec_open() failed");
+
+- m_context->get_buffer2 = avcodec_default_get_buffer2;
+-
+ }
+-
+ catch (...)
+ {
+- m_context = 0;
++ avcodec_free_context(&m_context);
+ throw;
+ }
+ }
+@@ -260,6 +237,10 @@ void FFmpegDecoderAudio::close(bool waitForThreadToExi
+ join();
+ }
+ swr_free(&m_swr_context);
++ if (m_context)
++ {
++ avcodec_free_context(&m_context);
++ }
+ }
+
+ void FFmpegDecoderAudio::setVolume(float volume)
+@@ -286,7 +267,7 @@ void FFmpegDecoderAudio::run()
+ decodeLoop();
+ }
+
+- catch (const std::exception & error)
++ catch (const std::exception &error)
+ {
+ OSG_WARN << "FFmpegDecoderAudio::run : " << error.what() << std::endl;
+ }
+@@ -301,15 +282,15 @@ void FFmpegDecoderAudio::setAudioSink(osg::ref_ptr<osg
+ void FFmpegDecoderAudio::setAudioSink(osg::ref_ptr<osg::AudioSink> audio_sink)
+ {
+ // The FFmpegDecoderAudio object takes the responsibility of destroying the audio_sink.
+- OSG_NOTICE<<"Assigning "<<audio_sink<<std::endl;
++ OSG_NOTICE << "Assigning " << audio_sink << std::endl;
+ m_audio_sink = audio_sink;
+ }
+
+
+
+-void FFmpegDecoderAudio::fillBuffer(void * const buffer, size_t size)
++void FFmpegDecoderAudio::fillBuffer(void *buffer, size_t size)
+ {
+- uint8_t * dst_buffer = reinterpret_cast<uint8_t*>(buffer);
++ uint8_t *dst_buffer = reinterpret_cast<uint8_t *>(buffer);
+
+ while (size != 0)
+ {
+@@ -349,9 +330,9 @@ void FFmpegDecoderAudio::decodeLoop()
+
+ void FFmpegDecoderAudio::decodeLoop()
+ {
+- const bool skip_audio = ! validContext() || ! m_audio_sink.valid();
++ const bool skip_audio = !validContext() || !m_audio_sink.valid();
+
+- if (! skip_audio && ! m_audio_sink->playing())
++ if (!skip_audio && !m_audio_sink->playing())
+ {
+ m_clocks.audioSetDelay(m_audio_sink->getDelay());
+ m_audio_sink->play();
+@@ -361,17 +342,17 @@ void FFmpegDecoderAudio::decodeLoop()
+ m_clocks.audioDisable();
+ }
+
+- while (! m_exit)
++ while (!m_exit)
+ {
+
+- if(m_paused)
++ if (m_paused)
+ {
+ m_clocks.pause(true);
+ m_pause_timer.setStartTick();
+
+- while(m_paused && !m_exit)
++ while (m_paused && !m_exit)
+ {
+- microSleep(10000);
++ OpenThreads::Thread::microSleep(10000);
+ }
+
+ m_clocks.setPauseTime(m_pause_timer.time_s());
+@@ -387,12 +368,30 @@ void FFmpegDecoderAudio::decodeLoop()
+ if (packet.valid())
+ packet.clear();
+ }
+- // Else, just idle in this thread.
+- // Note: If m_audio_sink has an audio callback, this thread will still be awaken
+- // from time to time to refill the audio buffer.
+ else
+ {
+- OpenThreads::Thread::microSleep(10000);
++ uint8_t audio_buffer[AVCODEC_MAX_AUDIO_FRAME_SIZE * 3 / 2];
++ size_t audio_data_size = decodeFrame(audio_buffer, sizeof(audio_buffer));
++
++ if (audio_data_size > 0)
++ {
++ // Handle the decoded audio data here.
++ // Since the AudioSink class does not have a specific method for handling raw buffers,
++ // we'll assume you have another method or need to implement this part accordingly.
++
++ // This part needs to match the actual implementation or subclass method
++ // If you have an actual derived class with specific methods, you should call them here.
++ // For example, if there's a method to write raw audio data, use it.
++
++ // Placeholder for actual implementation
++ // Assuming m_audio_sink->writeAudioData(audio_buffer, audio_data_size);
++
++ // OpenThreads::Thread::microSleep(10000); // Uncomment if you want to add a delay
++ }
++ else
++ {
++ OpenThreads::Thread::microSleep(10000);
++ }
+ }
+ }
+ }
+@@ -433,7 +432,7 @@ void FFmpegDecoderAudio::adjustBufferEndPts(const size
+
+
+
+-size_t FFmpegDecoderAudio::decodeFrame(void * const buffer, const size_t size)
++size_t FFmpegDecoderAudio::decodeFrame(void *buffer, const size_t size)
+ {
+ for (;;)
+ {
+@@ -443,7 +442,7 @@ size_t FFmpegDecoderAudio::decodeFrame(void * const bu
+ {
+ int data_size = size;
+
+- const int bytes_decoded = decode_audio(m_context, reinterpret_cast<int16_t*>(buffer), &data_size, m_packet_data, m_bytes_remaining, m_swr_context, m_out_sample_rate, m_out_nb_channels, m_out_sample_format);
++ const int bytes_decoded = decode_audio(m_context, reinterpret_cast<int16_t *>(buffer), &data_size, m_packet_data, m_bytes_remaining, m_swr_context, m_out_sample_rate, m_out_nb_channels, m_out_sample_format);
+
+ if (bytes_decoded < 0)
+ {
+@@ -503,10 +502,6 @@ size_t FFmpegDecoderAudio::decodeFrame(void * const bu
+ }
+ }
+
+-
+-/**
+- *
+- */
+ osg::AudioStream::SampleFormat FFmpegDecoderAudio::sampleFormat() const
+ {
+ switch (m_out_sample_format)
+@@ -515,19 +510,14 @@ osg::AudioStream::SampleFormat FFmpegDecoderAudio::sam
+ throw std::runtime_error("invalid audio format AV_SAMPLE_FMT_NONE");
+ case AV_SAMPLE_FMT_U8:
+ return osg::AudioStream::SAMPLE_FORMAT_U8;
+- break;
+ case AV_SAMPLE_FMT_S16:
+ return osg::AudioStream::SAMPLE_FORMAT_S16;
+- break;
+ case AV_SAMPLE_FMT_S32:
+ return osg::AudioStream::SAMPLE_FORMAT_S32;
+- break;
+ case AV_SAMPLE_FMT_FLT:
+ return osg::AudioStream::SAMPLE_FORMAT_F32;
+- break;
+ case AV_SAMPLE_FMT_DBL:
+ throw std::runtime_error("unhandled audio format AV_SAMPLE_FMT_DBL");
+-
+ default:
+ throw std::runtime_error("unknown audio format");
+ }
diff --git a/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoderAudio.hpp b/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoderAudio.hpp
new file mode 100644
index 000000000000..5679e5baaad7
--- /dev/null
+++ b/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoderAudio.hpp
@@ -0,0 +1,131 @@
+--- src/osgPlugins/ffmpeg/FFmpegDecoderAudio.hpp.orig 2022-12-01 18:17:31 UTC
++++ src/osgPlugins/ffmpeg/FFmpegDecoderAudio.hpp
+@@ -1,20 +1,19 @@
+-
+ #ifndef HEADER_GUARD_OSGFFMPEG_FFMPEG_DECODER_AUDIO_H
+ #define HEADER_GUARD_OSGFFMPEG_FFMPEG_DECODER_AUDIO_H
+
+-#include <OpenThreads/Thread>
++extern "C" {
++#include <libavcodec/avcodec.h>
++#include <libswresample/swresample.h>
++}
+
++#include <OpenThreads/Thread>
+ #include <osg/Timer>
+-
++#include <osg/AudioStream>
+ #include "FFmpegClocks.hpp"
+ #include "FFmpegPacket.hpp"
+ #include "FFmpegParameters.hpp"
+-
+-#include <osg/AudioStream>
+-
+ #include "BoundedMessageQueue.hpp"
+
+-
+ namespace osgFFmpeg {
+
+
+@@ -24,12 +23,12 @@ class FFmpegDecoderAudio : public OpenThreads::Thread
+ public:
+
+ typedef BoundedMessageQueue<FFmpegPacket> PacketQueue;
+- typedef void (* PublishFunc) (const FFmpegDecoderAudio & decoder, void * user_data);
++ typedef void (*PublishFunc)(const FFmpegDecoderAudio &decoder, void *user_data);
+
+- FFmpegDecoderAudio(PacketQueue & packets, FFmpegClocks & clocks);
++ FFmpegDecoderAudio(PacketQueue &packets, FFmpegClocks &clocks);
+ ~FFmpegDecoderAudio();
+
+- void open(AVStream * stream, FFmpegParameters* parameters);
++ void open(AVStream *stream, FFmpegParameters *parameters);
+ void pause(bool pause);
+ void close(bool waitForThreadToExit);
+
+@@ -39,7 +38,7 @@ class FFmpegDecoderAudio : public OpenThreads::Thread
+ virtual void run();
+
+ void setAudioSink(osg::ref_ptr<osg::AudioSink> audio_sink);
+- void fillBuffer(void * buffer, size_t size);
++ void fillBuffer(void *buffer, size_t size);
+
+ bool validContext() const;
+ int frequency() const;
+@@ -53,37 +52,37 @@ class FFmpegDecoderAudio : public OpenThreads::Thread
+
+ void decodeLoop();
+ void adjustBufferEndPts(size_t buffer_size);
+- size_t decodeFrame(void * buffer, size_t size);
++ size_t decodeFrame(void *buffer, size_t size);
+
+
+- PacketQueue & m_packets;
+- FFmpegClocks & m_clocks;
+- AVStream * m_stream;
+- AVCodecContext * m_context;
+- FFmpegPacket m_packet;
+- const uint8_t * m_packet_data;
+- int m_bytes_remaining;
++ PacketQueue &m_packets;
++ FFmpegClocks &m_clocks;
++ AVStream *m_stream;
++ AVCodecContext *m_context;
++ FFmpegPacket m_packet;
++ const uint8_t *m_packet_data;
++ int m_bytes_remaining;
+
+- Buffer m_audio_buffer;
+- size_t m_audio_buf_size;
+- size_t m_audio_buf_index;
++ Buffer m_audio_buffer;
++ size_t m_audio_buf_size;
++ size_t m_audio_buf_index;
+
+- int m_in_sample_rate;
+- int m_in_nb_channels;
+- AVSampleFormat m_in_sample_format;
+- int m_out_sample_rate;
+- int m_out_nb_channels;
+- AVSampleFormat m_out_sample_format;
++ int m_in_sample_rate;
++ int m_in_nb_channels;
++ AVSampleFormat m_in_sample_format;
++ int m_out_sample_rate;
++ int m_out_nb_channels;
++ AVSampleFormat m_out_sample_format;
+
+- SinkPtr m_audio_sink;
++ SinkPtr m_audio_sink;
+
+- osg::Timer m_pause_timer;
++ osg::Timer m_pause_timer;
+
+- bool m_end_of_stream;
+- bool m_paused;
+- volatile bool m_exit;
++ bool m_end_of_stream;
++ bool m_paused;
++ volatile bool m_exit;
+
+- SwrContext * m_swr_context; // Sw resampling context
++ SwrContext *m_swr_context; // Sw resampling context
+ };
+
+
+@@ -92,7 +91,7 @@ inline bool FFmpegDecoderAudio::validContext() const
+
+ inline bool FFmpegDecoderAudio::validContext() const
+ {
+- return m_context != 0;
++ return m_context != nullptr;
+ }
+
+
+@@ -110,5 +109,5 @@ inline int FFmpegDecoderAudio::nbChannels() const
+ } // namespace osgFFmpeg
+
+
+-
+ #endif // HEADER_GUARD_OSGFFMPEG_FFMPEG_DECODER_AUDIO_H
++
diff --git a/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoderVideo.cpp b/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoderVideo.cpp
new file mode 100644
index 000000000000..363ffe1028f4
--- /dev/null
+++ b/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoderVideo.cpp
@@ -0,0 +1,440 @@
+--- src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp.orig 2022-12-01 18:17:31 UTC
++++ src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp
+@@ -6,38 +6,35 @@
+ #include <stdexcept>
+ #include <string.h>
+
++extern "C" {
++#include <libavutil/imgutils.h>
++}
++
+ namespace osgFFmpeg {
+
+-// TODO - add support for using RGB or RGBA pixel format.
+-// Note from Jason Daly in a osg-submissions thread, "The pix_fmt field of AVCodecContext will indicate the pixel format of the decoded video"
+-
+-
+ FFmpegDecoderVideo::FFmpegDecoderVideo(PacketQueue & packets, FFmpegClocks & clocks) :
+ m_packets(packets),
+ m_clocks(clocks),
+- m_stream(0),
+- m_context(0),
+- m_codec(0),
+- m_packet_data(0),
++ m_stream(nullptr),
++ m_context(nullptr),
++ m_codec(nullptr),
++ m_packet_data(nullptr),
+ m_bytes_remaining(0),
+ m_packet_pts(AV_NOPTS_VALUE),
+ m_writeBuffer(0),
+- m_user_data(0),
+- m_publish_func(0),
++ m_user_data(nullptr),
++ m_publish_func(nullptr),
+ m_paused(true),
+ m_exit(false)
+ #ifdef USE_SWSCALE
+- ,m_swscale_ctx(0)
++ ,m_swscale_ctx(nullptr)
+ #endif
+ {
+-
+ }
+
+-
+-
+ FFmpegDecoderVideo::~FFmpegDecoderVideo()
+ {
+- OSG_INFO<<"Destructing FFmpegDecoderVideo..."<<std::endl;
++ OSG_INFO << "Destructing FFmpegDecoderVideo..." << std::endl;
+
+ this->close(true);
+
+@@ -45,24 +42,23 @@ FFmpegDecoderVideo::~FFmpegDecoderVideo()
+ if (m_swscale_ctx)
+ {
+ sws_freeContext(m_swscale_ctx);
+- m_swscale_ctx = 0;
++ m_swscale_ctx = nullptr;
+ }
+ #endif
+
+ if (m_context)
+ {
+- avcodec_close(m_context);
++ avcodec_free_context(&m_context);
+ }
+
+- OSG_INFO<<"Destructed FFmpegDecoderVideo"<<std::endl;
++ OSG_INFO << "Destructed FFmpegDecoderVideo" << std::endl;
+ }
+
+-
+-
+ void FFmpegDecoderVideo::open(AVStream * const stream)
+ {
+ m_stream = stream;
+- m_context = stream->codec;
++ m_context = avcodec_alloc_context3(nullptr);
++ avcodec_parameters_to_context(m_context, stream->codecpar);
+
+ // Trust the video size given at this point
+ // (avcodec_open seems to sometimes return a 0x0 size)
+@@ -74,43 +70,34 @@ void FFmpegDecoderVideo::open(AVStream * const stream)
+ m_alpha_channel = (m_context->pix_fmt == AV_PIX_FMT_YUVA420P);
+
+ // Find out the framerate
+- #if LIBAVCODEC_VERSION_MAJOR >= 56
+ m_frame_rate = av_q2d(stream->avg_frame_rate);
+- #else
+- m_frame_rate = av_q2d(stream->r_frame_rate);
+- #endif
+
+ // Find the decoder for the video stream
+ m_codec = avcodec_find_decoder(m_context->codec_id);
+
+- if (m_codec == 0)
++ if (m_codec == nullptr)
+ throw std::runtime_error("avcodec_find_decoder() failed");
+
+- // Inform the codec that we can handle truncated bitstreams
+- //if (p_codec->capabilities & CODEC_CAP_TRUNCATED)
+- // m_context->flags |= CODEC_FLAG_TRUNCATED;
+-
+ // Open codec
+- if (avcodec_open2(m_context, m_codec, NULL) < 0)
+- throw std::runtime_error("avcodec_open() failed");
++ if (avcodec_open2(m_context, m_codec, nullptr) < 0)
++ throw std::runtime_error("avcodec_open2() failed");
+
+ // Allocate video frame
+ m_frame.reset(av_frame_alloc());
+
+ // Allocate converted RGB frame
+ m_frame_rgba.reset(av_frame_alloc());
+- m_buffer_rgba[0].resize(avpicture_get_size(AV_PIX_FMT_RGB24, width(), height()));
++ m_buffer_rgba[0].resize(av_image_get_buffer_size(AV_PIX_FMT_RGB24, width(), height(), 1));
+ m_buffer_rgba[1].resize(m_buffer_rgba[0].size());
+
+ // Assign appropriate parts of the buffer to image planes in m_frame_rgba
+- avpicture_fill((AVPicture *) (m_frame_rgba).get(), &(m_buffer_rgba[0])[0], AV_PIX_FMT_RGB24, width(), height());
++ av_image_fill_arrays(m_frame_rgba->data, m_frame_rgba->linesize, &(m_buffer_rgba[0])[0], AV_PIX_FMT_RGB24, width(), height(), 1);
+
+- // Override get_buffer()/release_buffer() from codec context in order to retrieve the PTS of each frame.
++ // Override get_buffer2() from codec context in order to retrieve the PTS of each frame.
+ m_context->opaque = this;
+ m_context->get_buffer2 = getBuffer;
+ }
+
+-
+ void FFmpegDecoderVideo::close(bool waitForThreadToExit)
+ {
+ if (isRunning())
+@@ -123,10 +110,7 @@ void FFmpegDecoderVideo::pause(bool pause)
+
+ void FFmpegDecoderVideo::pause(bool pause)
+ {
+- if(pause)
+- m_paused = true;
+- else
+- m_paused = false;
++ m_paused = pause;
+ }
+
+ void FFmpegDecoderVideo::run()
+@@ -135,102 +119,60 @@ void FFmpegDecoderVideo::run()
+ {
+ decodeLoop();
+ }
+-
+- catch (const std::exception & error)
++ catch (const std::exception &error)
+ {
+ OSG_WARN << "FFmpegDecoderVideo::run : " << error.what() << std::endl;
+ }
+-
+ catch (...)
+ {
+ OSG_WARN << "FFmpegDecoderVideo::run : unhandled exception" << std::endl;
+ }
+ }
+
+-
+-
+ void FFmpegDecoderVideo::decodeLoop()
+ {
+ FFmpegPacket packet;
+ double pts;
+
+- while (! m_exit)
++ while (!m_exit)
+ {
+ // Work on the current packet until we have decoded all of it
+-
+ while (m_bytes_remaining > 0)
+ {
+ // Save global PTS to be stored in m_frame via getBuffer()
+-
+ m_packet_pts = packet.packet.pts;
+
+ // Decode video frame
+-
+ int frame_finished = 0;
++ const int bytes_decoded = avcodec_receive_frame(m_context, m_frame.get());
+
+- // We want to use the entire packet since some codecs will require extra information for decoding
+- const int bytes_decoded = avcodec_decode_video2(m_context, m_frame.get(), &frame_finished, &(packet.packet));
++ if (bytes_decoded == 0)
++ {
++ frame_finished = 1;
++ m_bytes_remaining -= bytes_decoded;
++ m_packet_data += bytes_decoded;
++ }
++ else if (bytes_decoded == AVERROR(EAGAIN))
++ {
++ break;
++ }
++ else if (bytes_decoded < 0)
++ {
++ throw std::runtime_error("avcodec_receive_frame() failed");
++ }
+
+- if (bytes_decoded < 0)
+- throw std::runtime_error("avcodec_decode_video failed()");
+-
+- m_bytes_remaining -= bytes_decoded;
+- m_packet_data += bytes_decoded;
+-
+ // Publish the frame if we have decoded a complete frame
+ if (frame_finished)
+ {
+-#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(57,24,102)
+- //ffmpeg-3.0 and below
+- AVRational timebase;
+- // Find out the frame pts
+- if (m_frame->pts != int64_t(AV_NOPTS_VALUE))
++ if (m_frame->pts != AV_NOPTS_VALUE)
+ {
+- pts = m_frame->pts;
+- timebase = m_context->time_base;
+- }
+- else if (packet.packet.dts == int64_t(AV_NOPTS_VALUE) &&
+- m_frame->opaque != 0 &&
+- *reinterpret_cast<const int64_t*>(m_frame->opaque) != int64_t(AV_NOPTS_VALUE))
+- {
+- pts = *reinterpret_cast<const int64_t*>(m_frame->opaque);
+- timebase = m_stream->time_base;
+- }
+- else if (packet.packet.dts != int64_t(AV_NOPTS_VALUE))
+- {
+- pts = packet.packet.dts;
+- timebase = m_stream->time_base;
+- }
+- else
+- {
+- pts = 0;
+- timebase = m_context->time_base;
+- }
+-
+- pts *= av_q2d(timebase);
+-
+-#else
+- //above ffmpeg-3.0
+- // Find out the frame pts
+- if (m_frame->pts != int64_t(AV_NOPTS_VALUE))
+- {
+ pts = av_q2d(m_stream->time_base) * m_frame->pts;
+ }
+- else if (packet.packet.dts == int64_t(AV_NOPTS_VALUE) &&
+- m_frame->opaque != 0 &&
+- *reinterpret_cast<const int64_t*>(m_frame->opaque) != int64_t(AV_NOPTS_VALUE))
+- {
+- pts = av_q2d(m_stream->time_base) * *reinterpret_cast<const int64_t*>(m_frame->opaque);
+- }
+- else if (packet.packet.dts != int64_t(AV_NOPTS_VALUE))
+- {
+- pts = av_q2d(m_stream->time_base) * packet.packet.dts;
+- }
+ else
+ {
+ pts = 0;
+ }
+-#endif
++
+ const double synched_pts = m_clocks.videoSynchClock(m_frame.get(), av_q2d(av_inv_q(m_context->framerate)), pts);
+ const double frame_delay = m_clocks.videoRefreshSchedule(synched_pts);
+
+@@ -238,13 +180,12 @@ void FFmpegDecoderVideo::decodeLoop()
+ }
+ }
+
+- while(m_paused && !m_exit)
++ while (m_paused && !m_exit)
+ {
+- microSleep(10000);
++ OpenThreads::Thread::microSleep(10000);
+ }
+
+ // Get the next packet
+-
+ pts = 0;
+
+ if (packet.valid())
+@@ -253,12 +194,13 @@ void FFmpegDecoderVideo::decodeLoop()
+ bool is_empty = true;
+ packet = m_packets.timedPop(is_empty, 10);
+
+- if (! is_empty)
++ if (!is_empty)
+ {
+ if (packet.type == FFmpegPacket::PACKET_DATA)
+ {
+ m_bytes_remaining = packet.packet.size;
+ m_packet_data = packet.packet.data;
++ avcodec_send_packet(m_context, &(packet.packet));
+ }
+ else if (packet.type == FFmpegPacket::PACKET_FLUSH)
+ {
+@@ -268,8 +210,6 @@ void FFmpegDecoderVideo::decodeLoop()
+ }
+ }
+
+-
+-
+ void FFmpegDecoderVideo::findAspectRatio()
+ {
+ float ratio = 0.0f;
+@@ -283,65 +223,52 @@ void FFmpegDecoderVideo::findAspectRatio()
+ m_pixel_aspect_ratio = ratio;
+ }
+
+-int FFmpegDecoderVideo::convert(AVPicture *dst, int dst_pix_fmt, AVPicture *src,
+- int src_pix_fmt, int src_width, int src_height)
++int FFmpegDecoderVideo::convert(AVFrame *dst, int dst_pix_fmt, AVFrame *src,
++ int src_pix_fmt, int src_width, int src_height)
+ {
+ osg::Timer_t startTick = osg::Timer::instance()->tick();
+ #ifdef USE_SWSCALE
+- if (m_swscale_ctx==0)
++ if (m_swscale_ctx == nullptr)
+ {
+- m_swscale_ctx = sws_getContext(src_width, src_height, (AVPixelFormat) src_pix_fmt,
+- src_width, src_height, (AVPixelFormat) dst_pix_fmt,
+- /*SWS_BILINEAR*/ SWS_BICUBIC, NULL, NULL, NULL);
++ m_swscale_ctx = sws_getContext(src_width, src_height, (AVPixelFormat)src_pix_fmt,
++ src_width, src_height, (AVPixelFormat)dst_pix_fmt,
++ SWS_BICUBIC, nullptr, nullptr, nullptr);
+ }
+
++ OSG_DEBUG << "Using sws_scale ";
+
+- OSG_DEBUG<<"Using sws_scale ";
+-
+- int result = sws_scale(m_swscale_ctx,
+- (src->data), (src->linesize), 0, src_height,
+- (dst->data), (dst->linesize));
++ int result = sws_scale(m_swscale_ctx,
++ src->data, src->linesize, 0, src_height,
++ dst->data, dst->linesize);
+ #else
+
+- OSG_DEBUG<<"Using img_convert ";
++ OSG_DEBUG << "Using img_convert ";
+
+- int result = img_convert(dst, dst_pix_fmt, src,
+- src_pix_fmt, src_width, src_height);
+-
++ int result = av_image_copy_to_buffer(dst->data, dst_pix_fmt, src->data, src_pix_fmt, src_width, src_height);
+ #endif
+ osg::Timer_t endTick = osg::Timer::instance()->tick();
+- OSG_DEBUG<<" time = "<<osg::Timer::instance()->delta_m(startTick,endTick)<<"ms"<<std::endl;
++ OSG_DEBUG << " time = " << osg::Timer::instance()->delta_m(startTick, endTick) << "ms" << std::endl;
+
+ return result;
+ }
+
+-
+ void FFmpegDecoderVideo::publishFrame(const double delay, bool audio_disabled)
+ {
+ // If no publishing function, just ignore the frame
+- if (m_publish_func == 0)
++ if (m_publish_func == nullptr)
+ return;
+
+-#if 1
+- // new code from Jean-Sebasiten Guay - needs testing as we're unclear on the best solution
+ // If the display delay is too small, we better skip the frame.
+ if (!audio_disabled && delay < -0.010)
+ return;
+-#else
+- // original solution that hung on video stream over web.
+- // If the display delay is too small, we better skip the frame.
+- if (delay < -0.010)
+- return;
+-#endif
+
+- AVPicture * const src = (AVPicture *) m_frame.get();
+- AVPicture * const dst = (AVPicture *) m_frame_rgba.get();
++ AVFrame *src = m_frame.get();
++ AVFrame *dst = m_frame_rgba.get();
+
+ // Assign appropriate parts of the buffer to image planes in m_frame_rgba
+- avpicture_fill((AVPicture *) (m_frame_rgba).get(), &(m_buffer_rgba[m_writeBuffer])[0], AV_PIX_FMT_RGB24, width(), height());
++ av_image_fill_arrays(dst->data, dst->linesize, &(m_buffer_rgba[m_writeBuffer])[0], AV_PIX_FMT_RGB24, width(), height(), 1);
+
+ // Convert YUVA420p (i.e. YUV420p plus alpha channel) using our own routine
+-
+ if (m_context->pix_fmt == AV_PIX_FMT_YUVA420P)
+ yuva420pToRgba(dst, src, width(), height());
+ else
+@@ -363,26 +290,25 @@ void FFmpegDecoderVideo::publishFrame(const double del
+ i_delay -= micro_delay;
+ }
+
+- m_writeBuffer = 1-m_writeBuffer;
++ m_writeBuffer = 1 - m_writeBuffer;
+
+- m_publish_func(* this, m_user_data);
++ m_publish_func(*this, m_user_data);
+ }
+
+-
+-
+-void FFmpegDecoderVideo::yuva420pToRgba(AVPicture * const dst, AVPicture * const src, int width, int height)
++void FFmpegDecoderVideo::yuva420pToRgba(AVFrame * const dst, AVFrame * const src, int width, int height)
+ {
+ convert(dst, AV_PIX_FMT_RGB24, src, m_context->pix_fmt, width, height);
+
+ const size_t bpp = 4;
+
+- uint8_t * a_dst = dst->data[0] + 3;
++ uint8_t *a_dst = dst->data[0] + 3;
+
+- for (int h = 0; h < height; ++h) {
++ for (int h = 0; h < height; ++h)
++ {
++ const uint8_t *a_src = src->data[3] + h * src->linesize[3];
+
+- const uint8_t * a_src = src->data[3] + h * src->linesize[3];
+-
+- for (int w = 0; w < width; ++w) {
++ for (int w = 0; w < width; ++w)
++ {
+ *a_dst = *a_src;
+ a_dst += bpp;
+ a_src += 1;
+@@ -396,7 +322,7 @@ int FFmpegDecoderVideo::getBuffer(AVCodecContext * con
+ const FFmpegDecoderVideo * const this_ = reinterpret_cast<const FFmpegDecoderVideo*>(context->opaque);
+
+ const int result = avcodec_default_get_buffer2(context, picture, flags);
+- int64_t * p_pts = reinterpret_cast<int64_t*>( av_malloc(sizeof(int64_t)) );
++ int64_t *p_pts = reinterpret_cast<int64_t*>(av_malloc(sizeof(int64_t)));
+
+ *p_pts = this_->m_packet_pts;
+ picture->opaque = p_pts;
+@@ -415,3 +341,4 @@ void FFmpegDecoderVideo::freeBuffer(void *opaque, uint
+ }
+
+ } // namespace osgFFmpeg
++
diff --git a/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoderVideo.hpp b/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoderVideo.hpp
new file mode 100644
index 000000000000..59d4ef26d5ff
--- /dev/null
+++ b/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegDecoderVideo.hpp
@@ -0,0 +1,62 @@
+--- src/osgPlugins/ffmpeg/FFmpegDecoderVideo.hpp.orig 2022-12-01 18:17:31 UTC
++++ src/osgPlugins/ffmpeg/FFmpegDecoderVideo.hpp
+@@ -1,4 +1,3 @@
+-
+ #ifndef HEADER_GUARD_OSGFFMPEG_FFMPEG_DECODER_VIDEO_H
+ #define HEADER_GUARD_OSGFFMPEG_FFMPEG_DECODER_VIDEO_H
+
+@@ -15,11 +14,11 @@ class FramePtr
+
+ class FramePtr
+ {
+- public:
++ public:
+
+ typedef AVFrame T;
+
+- explicit FramePtr() : _ptr(0) {}
++ explicit FramePtr() : _ptr(nullptr) {}
+ explicit FramePtr(T* ptr) : _ptr(ptr) {}
+
+ ~FramePtr()
+@@ -43,14 +42,11 @@ class FramePtr
+
+ void cleanup()
+ {
+- if (_ptr) av_free(_ptr);
+- _ptr = 0;
++ if (_ptr) av_frame_free(&_ptr);
++ _ptr = nullptr;
+ }
+
+-
+-
+ protected:
+-
+ T* _ptr;
+ };
+
+@@ -88,12 +84,11 @@ class FFmpegDecoderVideo : public OpenThreads::Thread
+ void findAspectRatio();
+ void publishFrame(double delay, bool audio_disabled);
+ double synchronizeVideo(double pts);
+- void yuva420pToRgba(AVPicture *dst, AVPicture *src, int width, int height);
++ void yuva420pToRgba(AVFrame* dst, AVFrame* src, int width, int height);
+
+- int convert(AVPicture *dst, int dst_pix_fmt, AVPicture *src,
++ int convert(AVFrame* dst, int dst_pix_fmt, AVFrame* src,
+ int src_pix_fmt, int src_width, int src_height);
+
+-
+ static int getBuffer(AVCodecContext * context, AVFrame * picture, int flags);
+ static void freeBuffer(void * opaque, uint8_t *data);
+
+@@ -101,7 +96,7 @@ class FFmpegDecoderVideo : public OpenThreads::Thread
+ FFmpegClocks & m_clocks;
+ AVStream * m_stream;
+ AVCodecContext * m_context;
+- AVCodec * m_codec;
++ const AVCodec* m_codec;
+ const uint8_t * m_packet_data;
+ int m_bytes_remaining;
+ int64_t m_packet_pts;
diff --git a/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegPacket.hpp b/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegPacket.hpp
new file mode 100644
index 000000000000..daa4932f1e6f
--- /dev/null
+++ b/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegPacket.hpp
@@ -0,0 +1,11 @@
+--- src/osgPlugins/ffmpeg/FFmpegPacket.hpp.orig 2022-12-01 18:17:31 UTC
++++ src/osgPlugins/ffmpeg/FFmpegPacket.hpp
+@@ -42,7 +42,7 @@ namespace osgFFmpeg
+ void clear()
+ {
+ if (packet.data != 0)
+- av_free_packet(&packet);
++ av_packet_unref(&packet);
+
+ release();
+ }
diff --git a/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegParameters.cpp b/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegParameters.cpp
new file mode 100644
index 000000000000..e2a09c3959d0
--- /dev/null
+++ b/graphics/osg/files/patch-src_osgPlugins_ffmpeg_FFmpegParameters.cpp
@@ -0,0 +1,37 @@
+--- src/osgPlugins/ffmpeg/FFmpegParameters.cpp.orig 2022-12-01 18:17:31 UTC
++++ src/osgPlugins/ffmpeg/FFmpegParameters.cpp
+@@ -1,4 +1,3 @@
+-
+ #include "FFmpegParameters.hpp"
+
+ #include <string>
+@@ -21,11 +20,8 @@ inline AVPixelFormat osg_av_get_pix_fmt(const char *na
+
+ inline AVPixelFormat osg_av_get_pix_fmt(const char *name) { return av_get_pix_fmt(name); }
+
+-
+ namespace osgFFmpeg {
+
+-
+-
+ FFmpegParameters::FFmpegParameters() :
+ m_format(0),
+ m_context(0),
+@@ -40,7 +36,6 @@ FFmpegParameters::~FFmpegParameters()
+ av_dict_free(&m_options);
+ }
+
+-
+ void FFmpegParameters::parse(const std::string& name, const std::string& value)
+ {
+ if (value.empty())
+@@ -52,7 +47,8 @@ void FFmpegParameters::parse(const std::string& name,
+ #ifndef ANDROID
+ avdevice_register_all();
+ #endif
+- m_format = av_find_input_format(value.c_str());
++ const AVInputFormat* format = av_find_input_format(value.c_str());
++ m_format = const_cast<AVInputFormat*>(format);
+ if (!m_format)
+ OSG_NOTICE<<"Failed to apply input video format: "<<value.c_str()<<std::endl;
+ }
diff --git a/graphics/osg/files/patch-src_osgPlugins_ffmpeg_ReaderWriterFFmpeg.cpp b/graphics/osg/files/patch-src_osgPlugins_ffmpeg_ReaderWriterFFmpeg.cpp
new file mode 100644
index 000000000000..6bf9c3e11141
--- /dev/null
+++ b/graphics/osg/files/patch-src_osgPlugins_ffmpeg_ReaderWriterFFmpeg.cpp
@@ -0,0 +1,100 @@
+--- src/osgPlugins/ffmpeg/ReaderWriterFFmpeg.cpp.orig 2022-12-01 18:17:31 UTC
++++ src/osgPlugins/ffmpeg/ReaderWriterFFmpeg.cpp
+@@ -10,7 +10,6 @@
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * OpenSceneGraph Public License for more details.
+ */
+-
+ #include "FFmpegHeaders.hpp"
+ #include "FFmpegImageStream.hpp"
+ #include "FFmpegParameters.hpp"
+@@ -19,13 +18,6 @@
+ #include <osgDB/FileNameUtils>
+ #include <osgDB/FileUtils>
+
+-
+-#if LIBAVCODEC_VERSION_MAJOR >= 53 || \
+- (LIBAVCODEC_VERSION_MAJOR==52 && LIBAVCODEC_VERSION_MINOR>=30) || \
+- (LIBAVCODEC_VERSION_MAJOR==52 && LIBAVCODEC_VERSION_MINOR==20 && LIBAVCODEC_VERSION_MICRO >= 1)
+- #define USE_AV_LOCK_MANAGER
+-#endif
+-
+ extern "C" {
+
+ static void log_to_osg(void* /*ptr*/, int level, const char *fmt, va_list vl)
+@@ -100,26 +92,21 @@ class ReaderWriterFFmpeg : public osgDB::ReaderWriter
+
+ supportsOption("format", "Force setting input format (e.g. vfwcap for Windows webcam)");
+ supportsOption("pixel_format", "Set pixel format");
+- supportsOption("frame_size", "Set frame size (e.g. 320x240)");
++ supportsOption("frame_size", "Set frame size (e.g. 320x240)");
+ supportsOption("frame_rate", "Set frame rate (e.g. 25)");
+ // WARNING: This option is kept for backwards compatibility only, use out_sample_rate instead!
+ supportsOption("audio_sample_rate", "Set audio sampling rate (e.g. 44100)");
+ supportsOption("out_sample_format", "Set the output sample format (e.g. AV_SAMPLE_FMT_S16)");
+- supportsOption("out_sample_rate", "Set the output sample rate or frequency in Hz (e.g. 48000)");
++ supportsOption("out_sample_rate", "Set the output sample rate or frequency in Hz (e.g. 48000)");
+ supportsOption("out_nb_channels", "Set the output number of channels (e.g. 2 for stereo)");
+- supportsOption("context", "AVIOContext* for custom IO");
+- supportsOption("mad", "Max analyze duration (seconds)");
+- supportsOption("rtsp_transport", "RTSP transport (udp, tcp, udp_multicast or http)");
++ supportsOption("context", "AVIOContext* for custom IO");
++ supportsOption("mad", "Max analyze duration (seconds)");
++ supportsOption("rtsp_transport", "RTSP transport (udp, tcp, udp_multicast or http)");
+
+ av_log_set_callback(log_to_osg);
+
+-#ifdef USE_AV_LOCK_MANAGER
+- // enable thread locking
+- av_lockmgr_register(&lockMgr);
+-#endif
+ // Register all FFmpeg formats/codecs
+- av_register_all();
+-
++ avdevice_register_all();
+ avformat_network_init();
+ }
+
+@@ -218,41 +205,7 @@ class ReaderWriterFFmpeg : public osgDB::ReaderWriter
+ }
+ }
+ }
+-
+-#ifdef USE_AV_LOCK_MANAGER
+- static int lockMgr(void **mutex, enum AVLockOp op)
+- {
+- // returns are 0 success
+- OpenThreads::Mutex **m=(OpenThreads::Mutex**)mutex;
+- if (op==AV_LOCK_CREATE)
+- {
+- *m=new OpenThreads::Mutex;
+- return !*m;
+- }
+- else if (op==AV_LOCK_DESTROY)
+- {
+- delete *m;
+- return 0;
+- }
+- else if (op==AV_LOCK_OBTAIN)
+- {
+- (*m)->lock();
+- return 0;
+- }
+- else if (op==AV_LOCK_RELEASE)
+- {
+- (*m)->unlock();
+- return 0;
+- }
+- else
+- {
+- return -1;
+- }
+- }
+-#endif
+-
+ };
+
+-
+-
+ REGISTER_OSGPLUGIN(ffmpeg, ReaderWriterFFmpeg)
++
diff --git a/graphics/p5-GD-Barcode/Makefile b/graphics/p5-GD-Barcode/Makefile
index f39f1082d57b..fd6f82747a9e 100644
--- a/graphics/p5-GD-Barcode/Makefile
+++ b/graphics/p5-GD-Barcode/Makefile
@@ -1,5 +1,5 @@
PORTNAME= GD-Barcode
-PORTVERSION= 2.00
+DISTVERSION= 2.01
CATEGORIES= graphics perl5
MASTER_SITES= CPAN
PKGNAMEPREFIX= p5-
@@ -17,4 +17,5 @@ RUN_DEPENDS= p5-GD>=0:graphics/p5-GD
USES= perl5
USE_PERL5= configure
+NO_ARCH= yes
.include <bsd.port.mk>
diff --git a/graphics/p5-GD-Barcode/distinfo b/graphics/p5-GD-Barcode/distinfo
index ed69db000e01..1ffbafd40ee4 100644
--- a/graphics/p5-GD-Barcode/distinfo
+++ b/graphics/p5-GD-Barcode/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1694687237
-SHA256 (GD-Barcode-2.00.tar.gz) = 7cabb9a7eef7891145cc333ca70462972418377c23d3ab2a34c6f1aa229796ef
-SIZE (GD-Barcode-2.00.tar.gz) = 885786
+TIMESTAMP = 1753445226
+SHA256 (GD-Barcode-2.01.tar.gz) = 59af0f8a9bec93d2775fa8a1a251532d62fe2e160a471896c935aa9be8c5cd21
+SIZE (GD-Barcode-2.01.tar.gz) = 897133
diff --git a/graphics/p5-Gimp/Makefile b/graphics/p5-Gimp/Makefile
index 132cd2d77243..d20507687cf6 100644
--- a/graphics/p5-Gimp/Makefile
+++ b/graphics/p5-Gimp/Makefile
@@ -36,4 +36,10 @@ post-install:
${STRIP_CMD} ${STAGEDIR}${PREFIX}/${SITE_ARCH_REL}/auto/Gimp/Net/Net.so
${STRIP_CMD} ${STAGEDIR}${PREFIX}/${SITE_ARCH_REL}/auto/Gimp/UI/UI.so
-.include <bsd.port.mk>
+.include <bsd.port.pre.mk>
+
+.if ${PERL_LEVEL} >= 504200
+BROKEN= fails to build
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/graphics/p5-Image-ExifTool-devel/Makefile b/graphics/p5-Image-ExifTool-devel/Makefile
index 102f42220d17..3c49754cec8d 100644
--- a/graphics/p5-Image-ExifTool-devel/Makefile
+++ b/graphics/p5-Image-ExifTool-devel/Makefile
@@ -1,5 +1,5 @@
PORTNAME= Image-ExifTool
-DISTVERSION= 13.32
+DISTVERSION= 13.33
CATEGORIES= graphics perl5
MASTER_SITES= https://exiftool.org/ \
SF/exiftool
diff --git a/graphics/p5-Image-ExifTool-devel/distinfo b/graphics/p5-Image-ExifTool-devel/distinfo
index 295a8c69ddd2..ddf0a5f0c82f 100644
--- a/graphics/p5-Image-ExifTool-devel/distinfo
+++ b/graphics/p5-Image-ExifTool-devel/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1751542077
-SHA256 (Image-ExifTool-13.32.tar.gz) = e4b462f1a111bde3e3c4519e06d71efaacc576c36f4c3407b3d225c39393c829
-SIZE (Image-ExifTool-13.32.tar.gz) = 7461392
+TIMESTAMP = 1753562706
+SHA256 (Image-ExifTool-13.33.tar.gz) = 0cc6ecb10d529969a7e7766f5160ad591efa9bba7513b9185c8a1e6c54421fed
+SIZE (Image-ExifTool-13.33.tar.gz) = 7487576
diff --git a/graphics/p5-Image-ExifTool-devel/pkg-plist b/graphics/p5-Image-ExifTool-devel/pkg-plist
index 5d41d8b7cc01..a0cf3975c1b3 100644
--- a/graphics/p5-Image-ExifTool-devel/pkg-plist
+++ b/graphics/p5-Image-ExifTool-devel/pkg-plist
@@ -208,6 +208,7 @@ bin/exiftool
%%SITE_PERL%%/Image/ExifTool/Sony.pm
%%SITE_PERL%%/Image/ExifTool/SonyIDC.pm
%%SITE_PERL%%/Image/ExifTool/Stim.pm
+%%SITE_PERL%%/Image/ExifTool/TNEF.pm
%%SITE_PERL%%/Image/ExifTool/TagInfoXML.pm
%%SITE_PERL%%/Image/ExifTool/TagLookup.pm
%%SITE_PERL%%/Image/ExifTool/TagNames.pod
@@ -412,6 +413,7 @@ bin/exiftool
%%PERL5_MAN3%%/Image::ExifTool::Sony.3.gz
%%PERL5_MAN3%%/Image::ExifTool::SonyIDC.3.gz
%%PERL5_MAN3%%/Image::ExifTool::Stim.3.gz
+%%PERL5_MAN3%%/Image::ExifTool::TNEF.3.gz
%%PERL5_MAN3%%/Image::ExifTool::TagInfoXML.3.gz
%%PERL5_MAN3%%/Image::ExifTool::TagLookup.3.gz
%%PERL5_MAN3%%/Image::ExifTool::TagNames.3.gz
diff --git a/graphics/pastel/Makefile b/graphics/pastel/Makefile
index 5b6880ca1777..332db5718b0c 100644
--- a/graphics/pastel/Makefile
+++ b/graphics/pastel/Makefile
@@ -1,12 +1,11 @@
PORTNAME= pastel
DISTVERSIONPREFIX= v
-DISTVERSION= 0.9.0
-PORTREVISION= 24
+DISTVERSION= 0.10.0
CATEGORIES= graphics
MAINTAINER= lcook@FreeBSD.org
COMMENT= Command-line tool to generate, analyze, convert and manipulate colors
-WWW= https://github.com/sharkdp/pastel
+WWW= https://github.com/sharkdp/pastel/
LICENSE= APACHE20 MIT
LICENSE_COMB= dual
@@ -16,113 +15,18 @@ LICENSE_FILE_MIT= ${WRKSRC}/LICENSE-MIT
USES= cargo shebangfix
USE_GITHUB= yes
GH_ACCOUNT= sharkdp
-SHEBANG_FILES= doc/demo-scripts/gradient.sh
-CARGO_CRATES= aho-corasick-0.7.18 \
- approx-0.5.1 \
- assert_cmd-2.0.4 \
- atty-0.2.14 \
- autocfg-1.1.0 \
- bitflags-1.3.2 \
- bstr-0.2.17 \
- bumpalo-3.9.1 \
- cast-0.2.7 \
- cfg-if-1.0.0 \
- clap-2.34.0 \
- clap-3.1.18 \
- clap_complete-3.1.4 \
- clap_lex-0.2.0 \
- criterion-0.3.5 \
- criterion-plot-0.4.4 \
- crossbeam-channel-0.5.4 \
- crossbeam-deque-0.8.1 \
- crossbeam-epoch-0.9.8 \
- crossbeam-utils-0.8.8 \
- csv-1.1.6 \
- csv-core-0.1.10 \
- difflib-0.4.0 \
- doc-comment-0.3.3 \
- either-1.6.1 \
- getrandom-0.2.6 \
- half-1.8.2 \
- hashbrown-0.11.2 \
- hermit-abi-0.1.19 \
- indexmap-1.8.1 \
- itertools-0.10.3 \
- itoa-0.4.8 \
- itoa-1.0.2 \
- js-sys-0.3.57 \
- lazy_static-1.4.0 \
- libc-0.2.126 \
- log-0.4.17 \
- memchr-2.5.0 \
- memoffset-0.6.5 \
- minimal-lexical-0.2.1 \
- nom-7.1.1 \
- num-traits-0.2.15 \
- num_cpus-1.13.1 \
- once_cell-1.12.0 \
- oorandom-11.1.3 \
- os_str_bytes-6.1.0 \
- output_vt100-0.1.3 \
- plotters-0.3.1 \
- plotters-backend-0.3.2 \
- plotters-svg-0.3.1 \
- ppv-lite86-0.2.16 \
- predicates-2.1.1 \
- predicates-core-1.0.3 \
- predicates-tree-1.0.5 \
- proc-macro2-1.0.39 \
- quote-1.0.18 \
- rand-0.8.5 \
- rand_chacha-0.3.1 \
- rand_core-0.6.3 \
- rand_xoshiro-0.6.0 \
- rayon-1.5.3 \
- rayon-core-1.9.3 \
- regex-1.5.6 \
- regex-automata-0.1.10 \
- regex-syntax-0.6.26 \
- rustc_version-0.4.0 \
- ryu-1.0.10 \
- same-file-1.0.6 \
- scopeguard-1.1.0 \
- semver-1.0.9 \
- serde-1.0.137 \
- serde_cbor-0.11.2 \
- serde_derive-1.0.137 \
- serde_json-1.0.81 \
- strsim-0.10.0 \
- syn-1.0.95 \
- termcolor-1.1.3 \
- terminal_size-0.1.17 \
- termtree-0.2.4 \
- textwrap-0.11.0 \
- textwrap-0.15.0 \
- tinytemplate-1.2.1 \
- unicode-ident-1.0.0 \
- unicode-width-0.1.9 \
- wait-timeout-0.2.0 \
- walkdir-2.3.2 \
- wasi-0.10.2+wasi-snapshot-preview1 \
- wasm-bindgen-0.2.80 \
- wasm-bindgen-backend-0.2.80 \
- wasm-bindgen-macro-0.2.80 \
- wasm-bindgen-macro-support-0.2.80 \
- wasm-bindgen-shared-0.2.80 \
- web-sys-0.3.57 \
- winapi-0.3.9 \
- winapi-i686-pc-windows-gnu-0.4.0 \
- winapi-util-0.1.5 \
- winapi-x86_64-pc-windows-gnu-0.4.0
+SHEBANG_FILES= doc/demo-scripts/gradient.sh
PLIST_FILES= bin/${PORTNAME}
-DOCS= doc/colorcheck.md doc/colorcheck.png \
- doc/demo-scripts/gradient.sh doc/pastel.gif README.md
+
PORTDOCS= ${DOCS:T}
OPTIONS_DEFINE= DOCS
+DOCS= doc/colorcheck.md doc/colorcheck.png \
+ doc/demo-scripts/gradient.sh doc/pastel.gif README.md
+
post-install-DOCS-on:
@${MKDIR} ${STAGEDIR}${DOCSDIR}
cd ${WRKSRC} && ${INSTALL_DATA} ${DOCS} ${STAGEDIR}${DOCSDIR}
diff --git a/graphics/pastel/Makefile.crates b/graphics/pastel/Makefile.crates
new file mode 100644
index 000000000000..485a38c4bba7
--- /dev/null
+++ b/graphics/pastel/Makefile.crates
@@ -0,0 +1,122 @@
+CARGO_CRATES= aho-corasick-1.1.3 \
+ anes-0.1.6 \
+ anstyle-1.0.8 \
+ approx-0.5.1 \
+ assert_cmd-2.0.16 \
+ atty-0.2.14 \
+ autocfg-1.3.0 \
+ bitflags-1.3.2 \
+ bstr-1.10.0 \
+ bumpalo-3.16.0 \
+ byteorder-1.5.0 \
+ cast-0.3.0 \
+ cfg-if-1.0.0 \
+ ciborium-0.2.2 \
+ ciborium-io-0.2.2 \
+ ciborium-ll-0.2.2 \
+ clap-3.2.25 \
+ clap-4.5.17 \
+ clap_builder-4.5.17 \
+ clap_complete-3.2.5 \
+ clap_lex-0.2.4 \
+ clap_lex-0.7.2 \
+ criterion-0.5.1 \
+ criterion-plot-0.5.0 \
+ crossbeam-deque-0.8.5 \
+ crossbeam-epoch-0.9.18 \
+ crossbeam-utils-0.8.20 \
+ crunchy-0.2.2 \
+ difflib-0.4.0 \
+ doc-comment-0.3.3 \
+ either-1.13.0 \
+ errno-0.3.9 \
+ getrandom-0.2.15 \
+ half-2.4.1 \
+ hashbrown-0.12.3 \
+ hermit-abi-0.1.19 \
+ hermit-abi-0.3.9 \
+ hermit-abi-0.4.0 \
+ indexmap-1.9.3 \
+ io-lifetimes-1.0.11 \
+ is-terminal-0.4.13 \
+ itertools-0.10.5 \
+ itoa-1.0.11 \
+ js-sys-0.3.70 \
+ libc-0.2.158 \
+ linux-raw-sys-0.3.8 \
+ log-0.4.22 \
+ memchr-2.7.4 \
+ minimal-lexical-0.2.1 \
+ nom-7.1.3 \
+ num-traits-0.2.19 \
+ once_cell-1.19.0 \
+ oorandom-11.1.4 \
+ os_str_bytes-6.6.1 \
+ output_vt100-0.1.3 \
+ plotters-0.3.6 \
+ plotters-backend-0.3.6 \
+ plotters-svg-0.3.6 \
+ ppv-lite86-0.2.20 \
+ predicates-3.1.2 \
+ predicates-core-1.0.8 \
+ predicates-tree-1.0.11 \
+ proc-macro2-1.0.86 \
+ quote-1.0.37 \
+ rand-0.8.5 \
+ rand_chacha-0.3.1 \
+ rand_core-0.6.4 \
+ rand_xoshiro-0.6.0 \
+ rayon-1.10.0 \
+ rayon-core-1.12.1 \
+ regex-1.10.6 \
+ regex-automata-0.4.7 \
+ regex-syntax-0.8.4 \
+ rustix-0.37.27 \
+ ryu-1.0.18 \
+ same-file-1.0.6 \
+ serde-1.0.210 \
+ serde_derive-1.0.210 \
+ serde_json-1.0.128 \
+ strsim-0.10.0 \
+ syn-2.0.77 \
+ termcolor-1.4.1 \
+ terminal_size-0.2.6 \
+ termtree-0.4.1 \
+ textwrap-0.16.1 \
+ tinytemplate-1.2.1 \
+ unicode-ident-1.0.12 \
+ wait-timeout-0.2.0 \
+ walkdir-2.5.0 \
+ wasi-0.11.0+wasi-snapshot-preview1 \
+ wasm-bindgen-0.2.93 \
+ wasm-bindgen-backend-0.2.93 \
+ wasm-bindgen-macro-0.2.93 \
+ wasm-bindgen-macro-support-0.2.93 \
+ wasm-bindgen-shared-0.2.93 \
+ web-sys-0.3.70 \
+ winapi-0.3.9 \
+ winapi-i686-pc-windows-gnu-0.4.0 \
+ winapi-util-0.1.9 \
+ winapi-x86_64-pc-windows-gnu-0.4.0 \
+ windows-sys-0.48.0 \
+ windows-sys-0.52.0 \
+ windows-sys-0.59.0 \
+ windows-targets-0.48.5 \
+ windows-targets-0.52.6 \
+ windows_aarch64_gnullvm-0.48.5 \
+ windows_aarch64_gnullvm-0.52.6 \
+ windows_aarch64_msvc-0.48.5 \
+ windows_aarch64_msvc-0.52.6 \
+ windows_i686_gnu-0.48.5 \
+ windows_i686_gnu-0.52.6 \
+ windows_i686_gnullvm-0.52.6 \
+ windows_i686_msvc-0.48.5 \
+ windows_i686_msvc-0.52.6 \
+ windows_x86_64_gnu-0.48.5 \
+ windows_x86_64_gnu-0.52.6 \
+ windows_x86_64_gnullvm-0.48.5 \
+ windows_x86_64_gnullvm-0.52.6 \
+ windows_x86_64_msvc-0.48.5 \
+ windows_x86_64_msvc-0.52.6 \
+ zerocopy-0.7.35 \
+ zerocopy-derive-0.7.35
diff --git a/graphics/pastel/distinfo b/graphics/pastel/distinfo
index 3db370be1442..3ef74b0e513c 100644
--- a/graphics/pastel/distinfo
+++ b/graphics/pastel/distinfo
@@ -1,197 +1,247 @@
-TIMESTAMP = 1671089626
-SHA256 (rust/crates/aho-corasick-0.7.18.crate) = 1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f
-SIZE (rust/crates/aho-corasick-0.7.18.crate) = 112923
+TIMESTAMP = 1735255893
+SHA256 (rust/crates/aho-corasick-1.1.3.crate) = 8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916
+SIZE (rust/crates/aho-corasick-1.1.3.crate) = 183311
+SHA256 (rust/crates/anes-0.1.6.crate) = 4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299
+SIZE (rust/crates/anes-0.1.6.crate) = 23857
+SHA256 (rust/crates/anstyle-1.0.8.crate) = 1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1
+SIZE (rust/crates/anstyle-1.0.8.crate) = 15771
SHA256 (rust/crates/approx-0.5.1.crate) = cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6
SIZE (rust/crates/approx-0.5.1.crate) = 15100
-SHA256 (rust/crates/assert_cmd-2.0.4.crate) = 93ae1ddd39efd67689deb1979d80bad3bf7f2b09c6e6117c8d1f2443b5e2f83e
-SIZE (rust/crates/assert_cmd-2.0.4.crate) = 22581
+SHA256 (rust/crates/assert_cmd-2.0.16.crate) = dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d
+SIZE (rust/crates/assert_cmd-2.0.16.crate) = 26554
SHA256 (rust/crates/atty-0.2.14.crate) = d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8
SIZE (rust/crates/atty-0.2.14.crate) = 5470
-SHA256 (rust/crates/autocfg-1.1.0.crate) = d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa
-SIZE (rust/crates/autocfg-1.1.0.crate) = 13272
+SHA256 (rust/crates/autocfg-1.3.0.crate) = 0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0
+SIZE (rust/crates/autocfg-1.3.0.crate) = 16524
SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
-SHA256 (rust/crates/bstr-0.2.17.crate) = ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223
-SIZE (rust/crates/bstr-0.2.17.crate) = 330350
-SHA256 (rust/crates/bumpalo-3.9.1.crate) = a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899
-SIZE (rust/crates/bumpalo-3.9.1.crate) = 77507
-SHA256 (rust/crates/cast-0.2.7.crate) = 4c24dab4283a142afa2fdca129b80ad2c6284e073930f964c3a1293c225ee39a
-SIZE (rust/crates/cast-0.2.7.crate) = 11222
+SHA256 (rust/crates/bstr-1.10.0.crate) = 40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c
+SIZE (rust/crates/bstr-1.10.0.crate) = 380426
+SHA256 (rust/crates/bumpalo-3.16.0.crate) = 79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c
+SIZE (rust/crates/bumpalo-3.16.0.crate) = 85677
+SHA256 (rust/crates/byteorder-1.5.0.crate) = 1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b
+SIZE (rust/crates/byteorder-1.5.0.crate) = 23288
+SHA256 (rust/crates/cast-0.3.0.crate) = 37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5
+SIZE (rust/crates/cast-0.3.0.crate) = 11452
SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
-SHA256 (rust/crates/clap-2.34.0.crate) = a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c
-SIZE (rust/crates/clap-2.34.0.crate) = 202210
-SHA256 (rust/crates/clap-3.1.18.crate) = d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b
-SIZE (rust/crates/clap-3.1.18.crate) = 209664
-SHA256 (rust/crates/clap_complete-3.1.4.crate) = da92e6facd8d73c22745a5d3cbb59bdf8e46e3235c923e516527d8e81eec14a4
-SIZE (rust/crates/clap_complete-3.1.4.crate) = 31223
-SHA256 (rust/crates/clap_lex-0.2.0.crate) = a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213
-SIZE (rust/crates/clap_lex-0.2.0.crate) = 9581
-SHA256 (rust/crates/criterion-0.3.5.crate) = 1604dafd25fba2fe2d5895a9da139f8dc9b319a5fe5354ca137cbbce4e178d10
-SIZE (rust/crates/criterion-0.3.5.crate) = 110662
-SHA256 (rust/crates/criterion-plot-0.4.4.crate) = d00996de9f2f7559f7f4dc286073197f83e92256a59ed395f9aac01fe717da57
-SIZE (rust/crates/criterion-plot-0.4.4.crate) = 22546
-SHA256 (rust/crates/crossbeam-channel-0.5.4.crate) = 5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53
-SIZE (rust/crates/crossbeam-channel-0.5.4.crate) = 88237
-SHA256 (rust/crates/crossbeam-deque-0.8.1.crate) = 6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e
-SIZE (rust/crates/crossbeam-deque-0.8.1.crate) = 20852
-SHA256 (rust/crates/crossbeam-epoch-0.9.8.crate) = 1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c
-SIZE (rust/crates/crossbeam-epoch-0.9.8.crate) = 46012
-SHA256 (rust/crates/crossbeam-utils-0.8.8.crate) = 0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38
-SIZE (rust/crates/crossbeam-utils-0.8.8.crate) = 39681
-SHA256 (rust/crates/csv-1.1.6.crate) = 22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1
-SIZE (rust/crates/csv-1.1.6.crate) = 886999
-SHA256 (rust/crates/csv-core-0.1.10.crate) = 2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90
-SIZE (rust/crates/csv-core-0.1.10.crate) = 25668
+SHA256 (rust/crates/ciborium-0.2.2.crate) = 42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e
+SIZE (rust/crates/ciborium-0.2.2.crate) = 35611
+SHA256 (rust/crates/ciborium-io-0.2.2.crate) = 05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757
+SIZE (rust/crates/ciborium-io-0.2.2.crate) = 6697
+SHA256 (rust/crates/ciborium-ll-0.2.2.crate) = 57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9
+SIZE (rust/crates/ciborium-ll-0.2.2.crate) = 14695
+SHA256 (rust/crates/clap-3.2.25.crate) = 4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123
+SIZE (rust/crates/clap-3.2.25.crate) = 219403
+SHA256 (rust/crates/clap-4.5.17.crate) = 3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac
+SIZE (rust/crates/clap-4.5.17.crate) = 56802
+SHA256 (rust/crates/clap_builder-4.5.17.crate) = 8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73
+SIZE (rust/crates/clap_builder-4.5.17.crate) = 163559
+SHA256 (rust/crates/clap_complete-3.2.5.crate) = 3f7a2e0a962c45ce25afce14220bc24f9dade0a1787f185cecf96bfba7847cd8
+SIZE (rust/crates/clap_complete-3.2.5.crate) = 31625
+SHA256 (rust/crates/clap_lex-0.2.4.crate) = 2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5
+SIZE (rust/crates/clap_lex-0.2.4.crate) = 9652
+SHA256 (rust/crates/clap_lex-0.7.2.crate) = 1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97
+SIZE (rust/crates/clap_lex-0.7.2.crate) = 12805
+SHA256 (rust/crates/criterion-0.5.1.crate) = f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f
+SIZE (rust/crates/criterion-0.5.1.crate) = 110088
+SHA256 (rust/crates/criterion-plot-0.5.0.crate) = 6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1
+SIZE (rust/crates/criterion-plot-0.5.0.crate) = 22706
+SHA256 (rust/crates/crossbeam-deque-0.8.5.crate) = 613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d
+SIZE (rust/crates/crossbeam-deque-0.8.5.crate) = 21726
+SHA256 (rust/crates/crossbeam-epoch-0.9.18.crate) = 5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e
+SIZE (rust/crates/crossbeam-epoch-0.9.18.crate) = 46875
+SHA256 (rust/crates/crossbeam-utils-0.8.20.crate) = 22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80
+SIZE (rust/crates/crossbeam-utils-0.8.20.crate) = 42487
+SHA256 (rust/crates/crunchy-0.2.2.crate) = 7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7
+SIZE (rust/crates/crunchy-0.2.2.crate) = 2995
SHA256 (rust/crates/difflib-0.4.0.crate) = 6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8
SIZE (rust/crates/difflib-0.4.0.crate) = 7638
SHA256 (rust/crates/doc-comment-0.3.3.crate) = fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10
SIZE (rust/crates/doc-comment-0.3.3.crate) = 4123
-SHA256 (rust/crates/either-1.6.1.crate) = e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457
-SIZE (rust/crates/either-1.6.1.crate) = 13641
-SHA256 (rust/crates/getrandom-0.2.6.crate) = 9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad
-SIZE (rust/crates/getrandom-0.2.6.crate) = 28043
-SHA256 (rust/crates/half-1.8.2.crate) = eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7
-SIZE (rust/crates/half-1.8.2.crate) = 41874
-SHA256 (rust/crates/hashbrown-0.11.2.crate) = ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e
-SIZE (rust/crates/hashbrown-0.11.2.crate) = 85713
+SHA256 (rust/crates/either-1.13.0.crate) = 60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0
+SIZE (rust/crates/either-1.13.0.crate) = 19169
+SHA256 (rust/crates/errno-0.3.9.crate) = 534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba
+SIZE (rust/crates/errno-0.3.9.crate) = 10690
+SHA256 (rust/crates/getrandom-0.2.15.crate) = c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7
+SIZE (rust/crates/getrandom-0.2.15.crate) = 37163
+SHA256 (rust/crates/half-2.4.1.crate) = 6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888
+SIZE (rust/crates/half-2.4.1.crate) = 50892
+SHA256 (rust/crates/hashbrown-0.12.3.crate) = 8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888
+SIZE (rust/crates/hashbrown-0.12.3.crate) = 102968
SHA256 (rust/crates/hermit-abi-0.1.19.crate) = 62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33
SIZE (rust/crates/hermit-abi-0.1.19.crate) = 9979
-SHA256 (rust/crates/indexmap-1.8.1.crate) = 0f647032dfaa1f8b6dc29bd3edb7bbef4861b8b8007ebb118d6db284fd59f6ee
-SIZE (rust/crates/indexmap-1.8.1.crate) = 53220
-SHA256 (rust/crates/itertools-0.10.3.crate) = a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3
-SIZE (rust/crates/itertools-0.10.3.crate) = 118661
-SHA256 (rust/crates/itoa-0.4.8.crate) = b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4
-SIZE (rust/crates/itoa-0.4.8.crate) = 11926
-SHA256 (rust/crates/itoa-1.0.2.crate) = 112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d
-SIZE (rust/crates/itoa-1.0.2.crate) = 11112
-SHA256 (rust/crates/js-sys-0.3.57.crate) = 671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397
-SIZE (rust/crates/js-sys-0.3.57.crate) = 78605
-SHA256 (rust/crates/lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
-SIZE (rust/crates/lazy_static-1.4.0.crate) = 10443
-SHA256 (rust/crates/libc-0.2.126.crate) = 349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836
-SIZE (rust/crates/libc-0.2.126.crate) = 590481
-SHA256 (rust/crates/log-0.4.17.crate) = abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e
-SIZE (rust/crates/log-0.4.17.crate) = 38028
-SHA256 (rust/crates/memchr-2.5.0.crate) = 2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d
-SIZE (rust/crates/memchr-2.5.0.crate) = 65812
-SHA256 (rust/crates/memoffset-0.6.5.crate) = 5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce
-SIZE (rust/crates/memoffset-0.6.5.crate) = 7686
+SHA256 (rust/crates/hermit-abi-0.3.9.crate) = d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024
+SIZE (rust/crates/hermit-abi-0.3.9.crate) = 16165
+SHA256 (rust/crates/hermit-abi-0.4.0.crate) = fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc
+SIZE (rust/crates/hermit-abi-0.4.0.crate) = 16310
+SHA256 (rust/crates/indexmap-1.9.3.crate) = bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99
+SIZE (rust/crates/indexmap-1.9.3.crate) = 54653
+SHA256 (rust/crates/io-lifetimes-1.0.11.crate) = eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2
+SIZE (rust/crates/io-lifetimes-1.0.11.crate) = 37346
+SHA256 (rust/crates/is-terminal-0.4.13.crate) = 261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b
+SIZE (rust/crates/is-terminal-0.4.13.crate) = 7665
+SHA256 (rust/crates/itertools-0.10.5.crate) = b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473
+SIZE (rust/crates/itertools-0.10.5.crate) = 115354
+SHA256 (rust/crates/itoa-1.0.11.crate) = 49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b
+SIZE (rust/crates/itoa-1.0.11.crate) = 10563
+SHA256 (rust/crates/js-sys-0.3.70.crate) = 1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a
+SIZE (rust/crates/js-sys-0.3.70.crate) = 53863
+SHA256 (rust/crates/libc-0.2.158.crate) = d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439
+SIZE (rust/crates/libc-0.2.158.crate) = 751340
+SHA256 (rust/crates/linux-raw-sys-0.3.8.crate) = ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519
+SIZE (rust/crates/linux-raw-sys-0.3.8.crate) = 1013776
+SHA256 (rust/crates/log-0.4.22.crate) = a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24
+SIZE (rust/crates/log-0.4.22.crate) = 44027
+SHA256 (rust/crates/memchr-2.7.4.crate) = 78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3
+SIZE (rust/crates/memchr-2.7.4.crate) = 96670
SHA256 (rust/crates/minimal-lexical-0.2.1.crate) = 68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a
SIZE (rust/crates/minimal-lexical-0.2.1.crate) = 94841
-SHA256 (rust/crates/nom-7.1.1.crate) = a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36
-SIZE (rust/crates/nom-7.1.1.crate) = 115818
-SHA256 (rust/crates/num-traits-0.2.15.crate) = 578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd
-SIZE (rust/crates/num-traits-0.2.15.crate) = 49262
-SHA256 (rust/crates/num_cpus-1.13.1.crate) = 19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1
-SIZE (rust/crates/num_cpus-1.13.1.crate) = 14752
-SHA256 (rust/crates/once_cell-1.12.0.crate) = 7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225
-SIZE (rust/crates/once_cell-1.12.0.crate) = 31549
-SHA256 (rust/crates/oorandom-11.1.3.crate) = 0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575
-SIZE (rust/crates/oorandom-11.1.3.crate) = 10068
-SHA256 (rust/crates/os_str_bytes-6.1.0.crate) = 21326818e99cfe6ce1e524c2a805c189a99b5ae555a35d19f9a284b427d86afa
-SIZE (rust/crates/os_str_bytes-6.1.0.crate) = 21150
+SHA256 (rust/crates/nom-7.1.3.crate) = d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a
+SIZE (rust/crates/nom-7.1.3.crate) = 117570
+SHA256 (rust/crates/num-traits-0.2.19.crate) = 071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841
+SIZE (rust/crates/num-traits-0.2.19.crate) = 51631
+SHA256 (rust/crates/once_cell-1.19.0.crate) = 3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92
+SIZE (rust/crates/once_cell-1.19.0.crate) = 33046
+SHA256 (rust/crates/oorandom-11.1.4.crate) = b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9
+SIZE (rust/crates/oorandom-11.1.4.crate) = 10201
+SHA256 (rust/crates/os_str_bytes-6.6.1.crate) = e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1
+SIZE (rust/crates/os_str_bytes-6.6.1.crate) = 27643
SHA256 (rust/crates/output_vt100-0.1.3.crate) = 628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66
SIZE (rust/crates/output_vt100-0.1.3.crate) = 4473
-SHA256 (rust/crates/plotters-0.3.1.crate) = 32a3fd9ec30b9749ce28cd91f255d569591cdf937fe280c312143e3c4bad6f2a
-SIZE (rust/crates/plotters-0.3.1.crate) = 8595577
-SHA256 (rust/crates/plotters-backend-0.3.2.crate) = d88417318da0eaf0fdcdb51a0ee6c3bed624333bff8f946733049380be67ac1c
-SIZE (rust/crates/plotters-backend-0.3.2.crate) = 13524
-SHA256 (rust/crates/plotters-svg-0.3.1.crate) = 521fa9638fa597e1dc53e9412a4f9cefb01187ee1f7413076f9e6749e2885ba9
-SIZE (rust/crates/plotters-svg-0.3.1.crate) = 7596
-SHA256 (rust/crates/ppv-lite86-0.2.16.crate) = eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872
-SIZE (rust/crates/ppv-lite86-0.2.16.crate) = 22245
-SHA256 (rust/crates/predicates-2.1.1.crate) = a5aab5be6e4732b473071984b3164dbbfb7a3674d30ea5ff44410b6bcd960c3c
-SIZE (rust/crates/predicates-2.1.1.crate) = 23150
-SHA256 (rust/crates/predicates-core-1.0.3.crate) = da1c2388b1513e1b605fcec39a95e0a9e8ef088f71443ef37099fa9ae6673fcb
-SIZE (rust/crates/predicates-core-1.0.3.crate) = 7757
-SHA256 (rust/crates/predicates-tree-1.0.5.crate) = 4d86de6de25020a36c6d3643a86d9a6a9f552107c0559c60ea03551b5e16c032
-SIZE (rust/crates/predicates-tree-1.0.5.crate) = 8126
-SHA256 (rust/crates/proc-macro2-1.0.39.crate) = c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f
-SIZE (rust/crates/proc-macro2-1.0.39.crate) = 41663
-SHA256 (rust/crates/quote-1.0.18.crate) = a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1
-SIZE (rust/crates/quote-1.0.18.crate) = 28911
+SHA256 (rust/crates/plotters-0.3.6.crate) = a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3
+SIZE (rust/crates/plotters-0.3.6.crate) = 147577
+SHA256 (rust/crates/plotters-backend-0.3.6.crate) = 414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7
+SIZE (rust/crates/plotters-backend-0.3.6.crate) = 13669
+SHA256 (rust/crates/plotters-svg-0.3.6.crate) = 81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705
+SIZE (rust/crates/plotters-svg-0.3.6.crate) = 6944
+SHA256 (rust/crates/ppv-lite86-0.2.20.crate) = 77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04
+SIZE (rust/crates/ppv-lite86-0.2.20.crate) = 22478
+SHA256 (rust/crates/predicates-3.1.2.crate) = 7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97
+SIZE (rust/crates/predicates-3.1.2.crate) = 23986
+SHA256 (rust/crates/predicates-core-1.0.8.crate) = ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931
+SIZE (rust/crates/predicates-core-1.0.8.crate) = 8552
+SHA256 (rust/crates/predicates-tree-1.0.11.crate) = 41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13
+SIZE (rust/crates/predicates-tree-1.0.11.crate) = 8393
+SHA256 (rust/crates/proc-macro2-1.0.86.crate) = 5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77
+SIZE (rust/crates/proc-macro2-1.0.86.crate) = 48958
+SHA256 (rust/crates/quote-1.0.37.crate) = b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af
+SIZE (rust/crates/quote-1.0.37.crate) = 28558
SHA256 (rust/crates/rand-0.8.5.crate) = 34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404
SIZE (rust/crates/rand-0.8.5.crate) = 87113
SHA256 (rust/crates/rand_chacha-0.3.1.crate) = e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88
SIZE (rust/crates/rand_chacha-0.3.1.crate) = 15251
-SHA256 (rust/crates/rand_core-0.6.3.crate) = d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7
-SIZE (rust/crates/rand_core-0.6.3.crate) = 21938
+SHA256 (rust/crates/rand_core-0.6.4.crate) = ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c
+SIZE (rust/crates/rand_core-0.6.4.crate) = 22666
SHA256 (rust/crates/rand_xoshiro-0.6.0.crate) = 6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa
SIZE (rust/crates/rand_xoshiro-0.6.0.crate) = 17125
-SHA256 (rust/crates/rayon-1.5.3.crate) = bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d
-SIZE (rust/crates/rayon-1.5.3.crate) = 167246
-SHA256 (rust/crates/rayon-core-1.9.3.crate) = 258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f
-SIZE (rust/crates/rayon-core-1.9.3.crate) = 65300
-SHA256 (rust/crates/regex-1.5.6.crate) = d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1
-SIZE (rust/crates/regex-1.5.6.crate) = 238593
-SHA256 (rust/crates/regex-automata-0.1.10.crate) = 6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132
-SIZE (rust/crates/regex-automata-0.1.10.crate) = 114533
-SHA256 (rust/crates/regex-syntax-0.6.26.crate) = 49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64
-SIZE (rust/crates/regex-syntax-0.6.26.crate) = 293912
-SHA256 (rust/crates/rustc_version-0.4.0.crate) = bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366
-SIZE (rust/crates/rustc_version-0.4.0.crate) = 12175
-SHA256 (rust/crates/ryu-1.0.10.crate) = f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695
-SIZE (rust/crates/ryu-1.0.10.crate) = 48485
+SHA256 (rust/crates/rayon-1.10.0.crate) = b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa
+SIZE (rust/crates/rayon-1.10.0.crate) = 180155
+SHA256 (rust/crates/rayon-core-1.12.1.crate) = 1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2
+SIZE (rust/crates/rayon-core-1.12.1.crate) = 70701
+SHA256 (rust/crates/regex-1.10.6.crate) = 4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619
+SIZE (rust/crates/regex-1.10.6.crate) = 253894
+SHA256 (rust/crates/regex-automata-0.4.7.crate) = 38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df
+SIZE (rust/crates/regex-automata-0.4.7.crate) = 617582
+SHA256 (rust/crates/regex-syntax-0.8.4.crate) = 7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b
+SIZE (rust/crates/regex-syntax-0.8.4.crate) = 347577
+SHA256 (rust/crates/rustix-0.37.27.crate) = fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2
+SIZE (rust/crates/rustix-0.37.27.crate) = 324534
+SHA256 (rust/crates/ryu-1.0.18.crate) = f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f
+SIZE (rust/crates/ryu-1.0.18.crate) = 47713
SHA256 (rust/crates/same-file-1.0.6.crate) = 93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502
SIZE (rust/crates/same-file-1.0.6.crate) = 10183
-SHA256 (rust/crates/scopeguard-1.1.0.crate) = d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd
-SIZE (rust/crates/scopeguard-1.1.0.crate) = 11470
-SHA256 (rust/crates/semver-1.0.9.crate) = 8cb243bdfdb5936c8dc3c45762a19d12ab4550cdc753bc247637d4ec35a040fd
-SIZE (rust/crates/semver-1.0.9.crate) = 30843
-SHA256 (rust/crates/serde-1.0.137.crate) = 61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1
-SIZE (rust/crates/serde-1.0.137.crate) = 76182
-SHA256 (rust/crates/serde_cbor-0.11.2.crate) = 2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5
-SIZE (rust/crates/serde_cbor-0.11.2.crate) = 44570
-SHA256 (rust/crates/serde_derive-1.0.137.crate) = 1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be
-SIZE (rust/crates/serde_derive-1.0.137.crate) = 54831
-SHA256 (rust/crates/serde_json-1.0.81.crate) = 9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c
-SIZE (rust/crates/serde_json-1.0.81.crate) = 144480
+SHA256 (rust/crates/serde-1.0.210.crate) = c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a
+SIZE (rust/crates/serde-1.0.210.crate) = 78338
+SHA256 (rust/crates/serde_derive-1.0.210.crate) = 243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f
+SIZE (rust/crates/serde_derive-1.0.210.crate) = 56020
+SHA256 (rust/crates/serde_json-1.0.128.crate) = 6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8
+SIZE (rust/crates/serde_json-1.0.128.crate) = 149520
SHA256 (rust/crates/strsim-0.10.0.crate) = 73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623
SIZE (rust/crates/strsim-0.10.0.crate) = 11355
-SHA256 (rust/crates/syn-1.0.95.crate) = fbaf6116ab8924f39d52792136fb74fd60a80194cf1b1c6ffa6453eef1c3f942
-SIZE (rust/crates/syn-1.0.95.crate) = 236676
-SHA256 (rust/crates/termcolor-1.1.3.crate) = bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755
-SIZE (rust/crates/termcolor-1.1.3.crate) = 17242
-SHA256 (rust/crates/terminal_size-0.1.17.crate) = 633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df
-SIZE (rust/crates/terminal_size-0.1.17.crate) = 9141
-SHA256 (rust/crates/termtree-0.2.4.crate) = 507e9898683b6c43a9aa55b64259b721b52ba226e0f3779137e50ad114a4c90b
-SIZE (rust/crates/termtree-0.2.4.crate) = 4416
-SHA256 (rust/crates/textwrap-0.11.0.crate) = d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060
-SIZE (rust/crates/textwrap-0.11.0.crate) = 17322
-SHA256 (rust/crates/textwrap-0.15.0.crate) = b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb
-SIZE (rust/crates/textwrap-0.15.0.crate) = 52998
+SHA256 (rust/crates/syn-2.0.77.crate) = 9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed
+SIZE (rust/crates/syn-2.0.77.crate) = 268784
+SHA256 (rust/crates/termcolor-1.4.1.crate) = 06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755
+SIZE (rust/crates/termcolor-1.4.1.crate) = 18773
+SHA256 (rust/crates/terminal_size-0.2.6.crate) = 8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237
+SIZE (rust/crates/terminal_size-0.2.6.crate) = 10585
+SHA256 (rust/crates/termtree-0.4.1.crate) = 3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76
+SIZE (rust/crates/termtree-0.4.1.crate) = 4557
+SHA256 (rust/crates/textwrap-0.16.1.crate) = 23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9
+SIZE (rust/crates/textwrap-0.16.1.crate) = 56012
SHA256 (rust/crates/tinytemplate-1.2.1.crate) = be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc
SIZE (rust/crates/tinytemplate-1.2.1.crate) = 26490
-SHA256 (rust/crates/unicode-ident-1.0.0.crate) = d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee
-SIZE (rust/crates/unicode-ident-1.0.0.crate) = 34224
-SHA256 (rust/crates/unicode-width-0.1.9.crate) = 3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973
-SIZE (rust/crates/unicode-width-0.1.9.crate) = 16745
+SHA256 (rust/crates/unicode-ident-1.0.12.crate) = 3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b
+SIZE (rust/crates/unicode-ident-1.0.12.crate) = 42168
SHA256 (rust/crates/wait-timeout-0.2.0.crate) = 9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6
SIZE (rust/crates/wait-timeout-0.2.0.crate) = 12441
-SHA256 (rust/crates/walkdir-2.3.2.crate) = 808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56
-SIZE (rust/crates/walkdir-2.3.2.crate) = 23516
-SHA256 (rust/crates/wasi-0.10.2+wasi-snapshot-preview1.crate) = fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6
-SIZE (rust/crates/wasi-0.10.2+wasi-snapshot-preview1.crate) = 27505
-SHA256 (rust/crates/wasm-bindgen-0.2.80.crate) = 27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad
-SIZE (rust/crates/wasm-bindgen-0.2.80.crate) = 164576
-SHA256 (rust/crates/wasm-bindgen-backend-0.2.80.crate) = 53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4
-SIZE (rust/crates/wasm-bindgen-backend-0.2.80.crate) = 25741
-SHA256 (rust/crates/wasm-bindgen-macro-0.2.80.crate) = 17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5
-SIZE (rust/crates/wasm-bindgen-macro-0.2.80.crate) = 11805
-SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.80.crate) = 99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b
-SIZE (rust/crates/wasm-bindgen-macro-support-0.2.80.crate) = 17857
-SHA256 (rust/crates/wasm-bindgen-shared-0.2.80.crate) = d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744
-SIZE (rust/crates/wasm-bindgen-shared-0.2.80.crate) = 7204
-SHA256 (rust/crates/web-sys-0.3.57.crate) = 7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283
-SIZE (rust/crates/web-sys-0.3.57.crate) = 686563
+SHA256 (rust/crates/walkdir-2.5.0.crate) = 29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b
+SIZE (rust/crates/walkdir-2.5.0.crate) = 23951
+SHA256 (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423
+SIZE (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 28131
+SHA256 (rust/crates/wasm-bindgen-0.2.93.crate) = a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5
+SIZE (rust/crates/wasm-bindgen-0.2.93.crate) = 43769
+SHA256 (rust/crates/wasm-bindgen-backend-0.2.93.crate) = 9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b
+SIZE (rust/crates/wasm-bindgen-backend-0.2.93.crate) = 30344
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.93.crate) = 585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf
+SIZE (rust/crates/wasm-bindgen-macro-0.2.93.crate) = 6822
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.93.crate) = afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.93.crate) = 20642
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.93.crate) = c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484
+SIZE (rust/crates/wasm-bindgen-shared-0.2.93.crate) = 7527
+SHA256 (rust/crates/web-sys-0.3.70.crate) = 26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0
+SIZE (rust/crates/web-sys-0.3.70.crate) = 615438
SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
SIZE (rust/crates/winapi-0.3.9.crate) = 1200382
SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815
-SHA256 (rust/crates/winapi-util-0.1.5.crate) = 70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178
-SIZE (rust/crates/winapi-util-0.1.5.crate) = 10164
+SHA256 (rust/crates/winapi-util-0.1.9.crate) = cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb
+SIZE (rust/crates/winapi-util-0.1.9.crate) = 12464
SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998
-SHA256 (sharkdp-pastel-v0.9.0_GH0.tar.gz) = 473c805de42f6849a4bb14ec103ca007441f355552bdb6ebc80b60dac1f3a95d
-SIZE (sharkdp-pastel-v0.9.0_GH0.tar.gz) = 3230126
+SHA256 (rust/crates/windows-sys-0.48.0.crate) = 677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9
+SIZE (rust/crates/windows-sys-0.48.0.crate) = 2628884
+SHA256 (rust/crates/windows-sys-0.52.0.crate) = 282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d
+SIZE (rust/crates/windows-sys-0.52.0.crate) = 2576877
+SHA256 (rust/crates/windows-sys-0.59.0.crate) = 1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b
+SIZE (rust/crates/windows-sys-0.59.0.crate) = 2387323
+SHA256 (rust/crates/windows-targets-0.48.5.crate) = 9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c
+SIZE (rust/crates/windows-targets-0.48.5.crate) = 6904
+SHA256 (rust/crates/windows-targets-0.52.6.crate) = 9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973
+SIZE (rust/crates/windows-targets-0.52.6.crate) = 6403
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.48.5.crate) = 2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8
+SIZE (rust/crates/windows_aarch64_gnullvm-0.48.5.crate) = 418492
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3
+SIZE (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 435718
+SHA256 (rust/crates/windows_aarch64_msvc-0.48.5.crate) = dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc
+SIZE (rust/crates/windows_aarch64_msvc-0.48.5.crate) = 798483
+SHA256 (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469
+SIZE (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 832615
+SHA256 (rust/crates/windows_i686_gnu-0.48.5.crate) = a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e
+SIZE (rust/crates/windows_i686_gnu-0.48.5.crate) = 844891
+SHA256 (rust/crates/windows_i686_gnu-0.52.6.crate) = 8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b
+SIZE (rust/crates/windows_i686_gnu-0.52.6.crate) = 880402
+SHA256 (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66
+SIZE (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 475940
+SHA256 (rust/crates/windows_i686_msvc-0.48.5.crate) = 8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406
+SIZE (rust/crates/windows_i686_msvc-0.48.5.crate) = 864300
+SHA256 (rust/crates/windows_i686_msvc-0.52.6.crate) = 240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66
+SIZE (rust/crates/windows_i686_msvc-0.52.6.crate) = 901163
+SHA256 (rust/crates/windows_x86_64_gnu-0.48.5.crate) = 53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e
+SIZE (rust/crates/windows_x86_64_gnu-0.48.5.crate) = 801619
+SHA256 (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78
+SIZE (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 836363
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.48.5.crate) = 0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc
+SIZE (rust/crates/windows_x86_64_gnullvm-0.48.5.crate) = 418486
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d
+SIZE (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 435707
+SHA256 (rust/crates/windows_x86_64_msvc-0.48.5.crate) = ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538
+SIZE (rust/crates/windows_x86_64_msvc-0.48.5.crate) = 798412
+SHA256 (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec
+SIZE (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 832564
+SHA256 (rust/crates/zerocopy-0.7.35.crate) = 1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0
+SIZE (rust/crates/zerocopy-0.7.35.crate) = 152645
+SHA256 (rust/crates/zerocopy-derive-0.7.35.crate) = fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e
+SIZE (rust/crates/zerocopy-derive-0.7.35.crate) = 37829
+SHA256 (sharkdp-pastel-v0.10.0_GH0.tar.gz) = 7848cd6d2ad8db6543b609dece7c9c28b4720c09fb13aeb204dd03d152159dd2
+SIZE (sharkdp-pastel-v0.10.0_GH0.tar.gz) = 3235468
diff --git a/graphics/pecl-imagick/Makefile b/graphics/pecl-imagick/Makefile
index 3c5c2de6711f..d56cc88050ea 100644
--- a/graphics/pecl-imagick/Makefile
+++ b/graphics/pecl-imagick/Makefile
@@ -1,5 +1,5 @@
PORTNAME= imagick
-PORTVERSION= 3.8.0
+DISTVERSION= 3.8.0
CATEGORIES= graphics
MAINTAINER= 000.fbsd@quip.cz
@@ -14,4 +14,12 @@ CPE_VENDOR= php
CONFIGURE_ARGS= --with-imagick=${LOCALBASE}
-.include <bsd.port.mk>
+.include <bsd.port.pre.mk>
+
+post-patch:
+.if ${PHP_VER} >= 85
+ @${REINPLACE_CMD} -e 's|ext/standard/php_smart_string|Zend/zend_smart_string|' \
+ ${WRKSRC}/imagick.c
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/graphics/php-geos/files/patch-php85 b/graphics/php-geos/files/patch-php85
new file mode 100644
index 000000000000..deffb00ff64b
--- /dev/null
+++ b/graphics/php-geos/files/patch-php85
@@ -0,0 +1,11 @@
+--- geos.c.orig 2024-01-31 14:59:13 UTC
++++ geos.c
+@@ -150,7 +150,7 @@ static void errorHandler(const char *fmt, ...)
+ va_end(args);
+
+ /* TODO: use a GEOSException ? */
+- zend_throw_exception_ex(zend_exception_get_default(TSRMLS_C),
++ zend_throw_exception_ex(zend_ce_exception,
+ 1 TSRMLS_CC, "%s", message);
+
+ }
diff --git a/graphics/plasma6-spectacle/distinfo b/graphics/plasma6-spectacle/distinfo
index 30d02b344cc8..fe2bcbf43d46 100644
--- a/graphics/plasma6-spectacle/distinfo
+++ b/graphics/plasma6-spectacle/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1751380537
-SHA256 (KDE/plasma/6.4.2/spectacle-6.4.2.tar.xz) = 18b1d0b7e26680666eb86a2b0908c36d9e17a498b352944d89b901183920e0cb
-SIZE (KDE/plasma/6.4.2/spectacle-6.4.2.tar.xz) = 1598176
+TIMESTAMP = 1752584468
+SHA256 (KDE/plasma/6.4.3/spectacle-6.4.3.tar.xz) = 9986fc091f913a3f0e1520bd8b3a33e9c174e03f48b4b2af3192bd8a31bb29d8
+SIZE (KDE/plasma/6.4.3/spectacle-6.4.3.tar.xz) = 1598408
diff --git a/graphics/plutosvg/Makefile b/graphics/plutosvg/Makefile
index bf86b9449179..e1548aee83f4 100644
--- a/graphics/plutosvg/Makefile
+++ b/graphics/plutosvg/Makefile
@@ -4,7 +4,7 @@ DISTVERSION= 0.0.6
PORTREVISION= 1
CATEGORIES= graphics
-MAINTAINER= alster@vinterdalen.se
+MAINTAINER= alven@FreeBSD.org
COMMENT= Tiny SVG rendering library in C
WWW= https://github.com/sammycage/plutosvg/
diff --git a/graphics/plutovg/Makefile b/graphics/plutovg/Makefile
index 7d260fc6fd2f..bb52d4ca3a5e 100644
--- a/graphics/plutovg/Makefile
+++ b/graphics/plutovg/Makefile
@@ -3,7 +3,7 @@ DISTVERSIONPREFIX= v
DISTVERSION= 1.0.0
CATEGORIES= graphics
-MAINTAINER= alster@vinterdalen.se
+MAINTAINER= alven@FreeBSD.org
COMMENT= Tiny 2D vector graphics library in C
WWW= https://github.com/sammycage/plutovg/
diff --git a/graphics/py-mayavi/Makefile b/graphics/py-mayavi/Makefile
index 4231c09f8271..3436526944e5 100644
--- a/graphics/py-mayavi/Makefile
+++ b/graphics/py-mayavi/Makefile
@@ -19,6 +19,8 @@ LICENSE_FILE_LGPL3= ${WRKSRC}/image_LICENSE_OOo.txt
LICENSE_FILE_BSD2CLAUSE= ${WRKSRC}/LICENSE_YORICK.txt
LICENSE_FILE_APACHE11= ${WRKSRC}/LICENSE_COLORBREWER.txt
+BROKEN_i386= stage fails: Building TVTK classes... Fatal Python error: Illegal instruction
+
BUILD_DEPENDS= ${PYNUMPY} \
${PY_SPHINX} \
sphinx-build:textproc/py-sphinx@${PY_FLAVOR}
diff --git a/graphics/py-pycollada/Makefile b/graphics/py-pycollada/Makefile
index 37e4ea3a82bc..c85d95ded77c 100644
--- a/graphics/py-pycollada/Makefile
+++ b/graphics/py-pycollada/Makefile
@@ -1,6 +1,6 @@
PORTNAME= pycollada
DISTVERSION= 0.6
-PORTREVISION= 6
+PORTREVISION= 7
CATEGORIES= graphics python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
@@ -21,6 +21,6 @@ USE_PYTHON= autoplist distutils
OPTIONS_DEFINE= LXML
LXML_DESC= Uses lxml for XML loading, construction, and saving.
-LXML_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}lxml>0:devel/py-lxml@${PY_FLAVOR}
+LXML_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}lxml5>0:devel/py-lxml5@${PY_FLAVOR}
.include <bsd.port.mk>
diff --git a/graphics/py-pyglet1/Makefile b/graphics/py-pyglet1/Makefile
index 3cf23c877449..63f4e34aa2c7 100644
--- a/graphics/py-pyglet1/Makefile
+++ b/graphics/py-pyglet1/Makefile
@@ -1,6 +1,5 @@
PORTNAME= pyglet
-PORTVERSION= 1.5.30
-PORTREVISION= 1
+PORTVERSION= 1.5.31
CATEGORIES= graphics multimedia x11-toolkits python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/graphics/py-pyglet1/distinfo b/graphics/py-pyglet1/distinfo
index 21be45643041..8b742b26623c 100644
--- a/graphics/py-pyglet1/distinfo
+++ b/graphics/py-pyglet1/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1734971214
-SHA256 (pyglet-1.5.30.zip) = 6548f96ece110fc4f23a765958068560b28e1e1ded3ce0e70e461d4dc7fcc21e
-SIZE (pyglet-1.5.30.zip) = 6900668
+TIMESTAMP = 1754055072
+SHA256 (pyglet-1.5.31.zip) = a5e422b4c27b0fc99e92103bf493109cca5c18143583b868b3b4631a98ae9417
+SIZE (pyglet-1.5.31.zip) = 6900712
diff --git a/graphics/py-termtosvg/Makefile b/graphics/py-termtosvg/Makefile
index 947259a2c182..3d6b89d40203 100644
--- a/graphics/py-termtosvg/Makefile
+++ b/graphics/py-termtosvg/Makefile
@@ -1,6 +1,6 @@
PORTNAME= termtosvg
PORTVERSION= 1.1.0
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= graphics python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
@@ -12,7 +12,7 @@ WWW= https://github.com/nbedos/termtosvg
LICENSE= BSD3CLAUSE
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}svgwrite>=0:graphics/py-svgwrite@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}lxml>0:devel/py-lxml@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}lxml5>0:devel/py-lxml5@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}pyte>=0:devel/py-pyte@${PY_FLAVOR}
USES= python
diff --git a/graphics/py-tifffile/Makefile b/graphics/py-tifffile/Makefile
index ff9827739709..b97efc5fe285 100644
--- a/graphics/py-tifffile/Makefile
+++ b/graphics/py-tifffile/Makefile
@@ -1,5 +1,6 @@
PORTNAME= tifffile
PORTVERSION= 2025.6.1
+PORTREVISION= 1
CATEGORIES= graphics python
MASTER_SITES= PYPI \
https://github.com/cgohlke/tifffile/releases/download/v${PORTVERSION}/
@@ -30,7 +31,7 @@ ZARR_DESC= Access zarr store
CODECS_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}imagecodecs>=2024.12.30:graphics/py-imagecodecs@${PY_FLAVOR}
PLOT_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}matplotlib>=0:math/py-matplotlib@${PY_FLAVOR}
XML_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}defusedxml>=0:devel/py-defusedxml@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}lxml>=0:devel/py-lxml@${PY_FLAVOR}
+ ${PYTHON_PKGNAMEPREFIX}lxml5>=0:devel/py-lxml5@${PY_FLAVOR}
ZARR_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}fsspec>=0:filesystems/py-fsspec@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}kerchunk>=0:filesystems/py-kerchunk@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}zarr>=3:devel/py-zarr@${PY_FLAVOR}
diff --git a/graphics/py-willow/Makefile b/graphics/py-willow/Makefile
index 04bcee8c222d..82ad6fbcabd3 100644
--- a/graphics/py-willow/Makefile
+++ b/graphics/py-willow/Makefile
@@ -1,5 +1,5 @@
PORTNAME= willow
-PORTVERSION= 1.10.0
+PORTVERSION= 1.11.0
CATEGORIES= graphics python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
@@ -14,9 +14,9 @@ LICENSE_FILE= ${WRKSRC}/LICENSE
BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}flit-core>=3.2<4:devel/py-flit-core@${PY_FLAVOR}
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}defusedxml>=0.7<1.0:devel/py-defusedxml@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}filetype>=1.0.7:devel/py-filetype@${PY_FLAVOR}
+ ${PYTHON_PKGNAMEPREFIX}filetype>=1.0.10:devel/py-filetype@${PY_FLAVOR}
-USES= python:3.9+
+USES= python
USE_PYTHON= autoplist concurrent pep517
NO_ARCH= yes
@@ -30,9 +30,9 @@ OPENCV_DESC= Use OpenCV as backend
PILLOW_DESC= Use Pillow as backend
WAND_DESC= Use Wand as backend
-HEIF_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pillow-heif>=0.13.0<1.0.0:graphics/py-pillow-heif@${PY_FLAVOR}
+HEIF_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pillow-heif>=0.13.0:graphics/py-pillow-heif@${PY_FLAVOR}
OPENCV_RUN_DEPENDS= opencv>=0:graphics/opencv
-PILLOW_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pillow>=9.1.0<12.0.0:graphics/py-pillow@${PY_FLAVOR}
+PILLOW_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pillow>=11.3.0<12.0.0:graphics/py-pillow@${PY_FLAVOR}
WAND_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}wand>=0.6<1.0:graphics/py-wand@${PY_FLAVOR}
.include <bsd.port.mk>
diff --git a/graphics/py-willow/distinfo b/graphics/py-willow/distinfo
index 0ec5a8d02e0c..7933ec92e344 100644
--- a/graphics/py-willow/distinfo
+++ b/graphics/py-willow/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1745936200
-SHA256 (willow-1.10.0.tar.gz) = e10673ff954e79ca0412c648e40dd9ce0b93c8bef798e8468ce3411ff972fb15
-SIZE (willow-1.10.0.tar.gz) = 113732
+TIMESTAMP = 1753265776
+SHA256 (willow-1.11.0.tar.gz) = 70292b2d0cd2d5bb4076f0b3d61308aeaa0b225f3970d00752f08a8fd386c3d1
+SIZE (willow-1.11.0.tar.gz) = 113827
diff --git a/graphics/py-willow/files/patch-pyproject.toml b/graphics/py-willow/files/patch-pyproject.toml
deleted file mode 100644
index ba816ba9d024..000000000000
--- a/graphics/py-willow/files/patch-pyproject.toml
+++ /dev/null
@@ -1,22 +0,0 @@
---- pyproject.toml.orig 2025-04-22 13:08:41 UTC
-+++ pyproject.toml
-@@ -26,7 +26,7 @@ dependencies = [
- dynamic = ["version"] # will read __version__ from willow/__init__.py
- requires-python = ">=3.9"
- dependencies = [
-- "filetype>=1.0.10,!=1.1.0",
-+ "filetype>=1.0.7,!=1.1.0",
- "defusedxml>=0.7,<1.0",
- ]
-
-@@ -35,8 +35,8 @@ heif = [
- wand = ["Wand>=0.6,<1.0"]
- heif = [
- # Pinned because pillow-heif 0.23+ has dropped AVIF support but we still rely on it.
-- "pillow-heif>=0.10.0,<0.22.0; python_version < '3.12'",
-- "pillow-heif>=0.13.0,<0.22.0; python_version >= '3.12'",
-+ "pillow-heif>=0.10.0,<1.0.0; python_version < '3.12'",
-+ "pillow-heif>=0.13.0,<1.0.0; python_version >= '3.12'",
- ]
-
- testing = [
diff --git a/graphics/qgis-ltr/Makefile b/graphics/qgis-ltr/Makefile
index 75968353d2f4..22d0f30ba71c 100644
--- a/graphics/qgis-ltr/Makefile
+++ b/graphics/qgis-ltr/Makefile
@@ -1,6 +1,5 @@
PORTNAME= qgis
-DISTVERSION= 3.40.8
-PORTREVISION= 1
+DISTVERSION= 3.40.9
CATEGORIES= graphics geography
MASTER_SITES= https://qgis.org/downloads/
PKGNAMESUFFIX= -ltr
diff --git a/graphics/qgis-ltr/distinfo b/graphics/qgis-ltr/distinfo
index 8ac8d3d21e2b..224c0577869f 100644
--- a/graphics/qgis-ltr/distinfo
+++ b/graphics/qgis-ltr/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1750597813
-SHA256 (qgis-3.40.8.tar.bz2) = 17b9ad47e964b676c32f5228d3fad668338404c14fc991657363914e4317ed4f
-SIZE (qgis-3.40.8.tar.bz2) = 183915862
+TIMESTAMP = 1752928201
+SHA256 (qgis-3.40.9.tar.bz2) = 1b9cf895917d21e2cdb6858e079fe35d1c058e731b0cb1a5b42eeaa31dc5a537
+SIZE (qgis-3.40.9.tar.bz2) = 184036057
diff --git a/graphics/qgis-ltr/pkg-plist b/graphics/qgis-ltr/pkg-plist
index 6a327cab3626..923f8192989a 100644
--- a/graphics/qgis-ltr/pkg-plist
+++ b/graphics/qgis-ltr/pkg-plist
@@ -1339,6 +1339,7 @@ include/qgis/qgsprocessingfeedback.h
include/qgis/qgsprocessingfieldmapwidgetwrapper.h
include/qgis/qgsprocessinggui.h
include/qgis/qgsprocessingguiregistry.h
+include/qgis/qgsprocessingguiutils.h
include/qgis/qgsprocessinghelpeditorwidget.h
include/qgis/qgsprocessinghistoryprovider.h
include/qgis/qgsprocessinghistorywidget.h
diff --git a/graphics/qgis/Makefile b/graphics/qgis/Makefile
index 638e671201a6..cf64b07941b0 100644
--- a/graphics/qgis/Makefile
+++ b/graphics/qgis/Makefile
@@ -1,6 +1,5 @@
PORTNAME= qgis
-DISTVERSION= 3.44.0
-PORTREVISION= 1
+DISTVERSION= 3.44.1
CATEGORIES= graphics geography
MASTER_SITES= https://qgis.org/downloads/
diff --git a/graphics/qgis/distinfo b/graphics/qgis/distinfo
index f5668280b11f..fbee2451425f 100644
--- a/graphics/qgis/distinfo
+++ b/graphics/qgis/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1750571856
-SHA256 (qgis-3.44.0.tar.bz2) = 81e5088060f38ab4e9835b05e5eec1ba7cc2eb903105830808b60215ae2cd320
-SIZE (qgis-3.44.0.tar.bz2) = 190272372
+TIMESTAMP = 1752899169
+SHA256 (qgis-3.44.1.tar.bz2) = b228ef7093da0e9f7a594b93a57ef737cdefd8c07b84ccff251da1f7d2bb6f4b
+SIZE (qgis-3.44.1.tar.bz2) = 187982326
diff --git a/graphics/qgis/pkg-plist b/graphics/qgis/pkg-plist
index ce9c47c290d5..3616f7c3f390 100644
--- a/graphics/qgis/pkg-plist
+++ b/graphics/qgis/pkg-plist
@@ -3838,10 +3838,12 @@ share/metainfo/org.qgis.qgis.appdata.xml
%%DATADIR%%/i18n/qgis_cs.qm
%%DATADIR%%/i18n/qgis_da.qm
%%DATADIR%%/i18n/qgis_de.qm
+%%DATADIR%%/i18n/qgis_el.qm
%%DATADIR%%/i18n/qgis_en_US.qm
%%DATADIR%%/i18n/qgis_es.qm
%%DATADIR%%/i18n/qgis_et.qm
%%DATADIR%%/i18n/qgis_eu.qm
+%%DATADIR%%/i18n/qgis_fa.qm
%%DATADIR%%/i18n/qgis_fi.qm
%%DATADIR%%/i18n/qgis_fr.qm
%%DATADIR%%/i18n/qgis_gl.qm
@@ -3850,6 +3852,7 @@ share/metainfo/org.qgis.qgis.appdata.xml
%%DATADIR%%/i18n/qgis_it.qm
%%DATADIR%%/i18n/qgis_ja.qm
%%DATADIR%%/i18n/qgis_ko.qm
+%%DATADIR%%/i18n/qgis_ky.qm
%%DATADIR%%/i18n/qgis_lt.qm
%%DATADIR%%/i18n/qgis_lv.qm
%%DATADIR%%/i18n/qgis_nb.qm
diff --git a/graphics/qt6-wayland/Makefile b/graphics/qt6-wayland/Makefile
index 430aef820fe7..a63bdb800592 100644
--- a/graphics/qt6-wayland/Makefile
+++ b/graphics/qt6-wayland/Makefile
@@ -1,5 +1,6 @@
PORTNAME= wayland
DISTVERSION= ${QT6_VERSION}
+PORTREVISION= 1
CATEGORIES= graphics wayland
PKGNAMEPREFIX= qt6-
diff --git a/graphics/qt6-wayland/files/patch-src_client_qwaylandshellsurface__p.h b/graphics/qt6-wayland/files/patch-src_client_qwaylandshellsurface__p.h
new file mode 100644
index 000000000000..9380ad7616d6
--- /dev/null
+++ b/graphics/qt6-wayland/files/patch-src_client_qwaylandshellsurface__p.h
@@ -0,0 +1,23 @@
+Add QWaylandShellSurface::nativeResource() to allow using it instead of
+surfaceRole(). The problem with latter is that it relies on RTTI, which is not
+stable across shared modules loaded with RTLD_LOCAL.
+
+x11/plasma6-layer-shell-qt calls into this private API and crashes. Linux/GCC
+users are not seeing this because libstdc++ use different algorithm for comparing
+RTTI. Our libc++ can be switched to this algorithm too by building with
+-DLIBCXX_TYPEINFO_COMPARISON_IMPLEMENTATION=2, but this is too drastic approach.
+
+Related URLs:
+* https://bugs.kde.org/show_bug.cgi?id=479679
+* https://github.com/llvm/llvm-project/issues/36746
+
+--- src/client/qwaylandshellsurface_p.h.orig 2025-05-29 00:19:49 UTC
++++ src/client/qwaylandshellsurface_p.h
+@@ -85,6 +85,7 @@ class Q_WAYLANDCLIENT_EXPORT QWaylandShellSurface : pu
+ QPlatformWindow *platformWindow();
+ struct wl_surface *wlSurface();
+
++ virtual void* nativeResource(const QByteArray&) { return nullptr; }
+ virtual std::any surfaceRole() const { return std::any(); };
+
+ virtual void attachPopup(QWaylandShellSurface *popup) { Q_UNUSED(popup); }
diff --git a/graphics/qt6-wayland/files/patch-src_plugins_shellintegration_xdg-shell_qwaylandxdgshell__p.h b/graphics/qt6-wayland/files/patch-src_plugins_shellintegration_xdg-shell_qwaylandxdgshell__p.h
new file mode 100644
index 000000000000..205ecb55e559
--- /dev/null
+++ b/graphics/qt6-wayland/files/patch-src_plugins_shellintegration_xdg-shell_qwaylandxdgshell__p.h
@@ -0,0 +1,13 @@
+Companion change to patch-src_plugins_shellintegration_xdg-shell_qwaylandxdgshell__p.h
+
+--- src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h.orig 2025-05-29 00:19:49 UTC
++++ src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h
+@@ -75,7 +75,7 @@ class Q_WAYLANDCLIENT_EXPORT QWaylandXdgSurface : publ
+
+ void setSizeHints();
+
+- void *nativeResource(const QByteArray &resource);
++ void *nativeResource(const QByteArray &resource) override;
+
+ std::any surfaceRole() const override;
+
diff --git a/graphics/rubygem-clutter-gdk/Makefile b/graphics/rubygem-clutter-gdk/Makefile
index 235451820569..a6a20def5cd9 100644
--- a/graphics/rubygem-clutter-gdk/Makefile
+++ b/graphics/rubygem-clutter-gdk/Makefile
@@ -1,5 +1,5 @@
PORTNAME= clutter-gdk
-PORTVERSION= 4.2.9
+PORTVERSION= 4.3.0
CATEGORIES= graphics rubygems
MASTER_SITES= RG
diff --git a/graphics/rubygem-clutter-gdk/distinfo b/graphics/rubygem-clutter-gdk/distinfo
index 1314ab9403ff..fa2653911a7c 100644
--- a/graphics/rubygem-clutter-gdk/distinfo
+++ b/graphics/rubygem-clutter-gdk/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1744289376
-SHA256 (rubygem/clutter-gdk-4.2.9.gem) = d02c1e8c3ea78728b0922923601f63388d0c03437febbd06af2bb1f74686cfa3
-SIZE (rubygem/clutter-gdk-4.2.9.gem) = 14848
+TIMESTAMP = 1752566766
+SHA256 (rubygem/clutter-gdk-4.3.0.gem) = 79a3948186a0298aa400228229eccab544740077d1ccd2a2c5df19b92c5d1d8e
+SIZE (rubygem/clutter-gdk-4.3.0.gem) = 14848
diff --git a/graphics/rubygem-clutter-gtk/Makefile b/graphics/rubygem-clutter-gtk/Makefile
index f5cf5b826e15..b9c78675388f 100644
--- a/graphics/rubygem-clutter-gtk/Makefile
+++ b/graphics/rubygem-clutter-gtk/Makefile
@@ -1,5 +1,5 @@
PORTNAME= clutter-gtk
-PORTVERSION= 4.2.9
+PORTVERSION= 4.3.0
CATEGORIES= graphics rubygems
MASTER_SITES= RG
diff --git a/graphics/rubygem-clutter-gtk/distinfo b/graphics/rubygem-clutter-gtk/distinfo
index 036e8e361244..4413a708752a 100644
--- a/graphics/rubygem-clutter-gtk/distinfo
+++ b/graphics/rubygem-clutter-gtk/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1744289378
-SHA256 (rubygem/clutter-gtk-4.2.9.gem) = facc0cf0900f5f61ae73dd6b83c27bcbd86df86d19642949abb1a3f379d19135
-SIZE (rubygem/clutter-gtk-4.2.9.gem) = 31232
+TIMESTAMP = 1752566768
+SHA256 (rubygem/clutter-gtk-4.3.0.gem) = 3d1f4cd818e334ec41107fc755c835341bd13966f83cb0aeeac1ac708f5c3132
+SIZE (rubygem/clutter-gtk-4.3.0.gem) = 31232
diff --git a/graphics/rubygem-clutter/Makefile b/graphics/rubygem-clutter/Makefile
index eca647d5202f..ae98634aab17 100644
--- a/graphics/rubygem-clutter/Makefile
+++ b/graphics/rubygem-clutter/Makefile
@@ -1,5 +1,5 @@
PORTNAME= clutter
-PORTVERSION= 4.2.9
+PORTVERSION= 4.3.0
CATEGORIES= graphics rubygems
MASTER_SITES= RG
diff --git a/graphics/rubygem-clutter/distinfo b/graphics/rubygem-clutter/distinfo
index 375e22a98c6b..6d5fba557ab1 100644
--- a/graphics/rubygem-clutter/distinfo
+++ b/graphics/rubygem-clutter/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1744289374
-SHA256 (rubygem/clutter-4.2.9.gem) = d6d2925727732f691abd7597fcdc8876c3caa5f4a34c653256e00ecfd34959e9
-SIZE (rubygem/clutter-4.2.9.gem) = 42496
+TIMESTAMP = 1752566764
+SHA256 (rubygem/clutter-4.3.0.gem) = 6153fd96facac998006508f971b4d158757a4aba9881d18fec22b8752c413730
+SIZE (rubygem/clutter-4.3.0.gem) = 42496
diff --git a/graphics/rubygem-gdk_pixbuf2/Makefile b/graphics/rubygem-gdk_pixbuf2/Makefile
index 1c7f9e691c19..9fd42d2745e0 100644
--- a/graphics/rubygem-gdk_pixbuf2/Makefile
+++ b/graphics/rubygem-gdk_pixbuf2/Makefile
@@ -1,5 +1,5 @@
PORTNAME= gdk_pixbuf2
-PORTVERSION= 4.2.9
+PORTVERSION= 4.3.0
CATEGORIES= graphics rubygems
MASTER_SITES= RG
diff --git a/graphics/rubygem-gdk_pixbuf2/distinfo b/graphics/rubygem-gdk_pixbuf2/distinfo
index 16f8128b42ff..e322b690656d 100644
--- a/graphics/rubygem-gdk_pixbuf2/distinfo
+++ b/graphics/rubygem-gdk_pixbuf2/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1744289380
-SHA256 (rubygem/gdk_pixbuf2-4.2.9.gem) = 22d6c3e94b1858d2f7814252da15fc135d75866961dd29f23f0275bbb2f7b52f
-SIZE (rubygem/gdk_pixbuf2-4.2.9.gem) = 34816
+TIMESTAMP = 1752566770
+SHA256 (rubygem/gdk_pixbuf2-4.3.0.gem) = c6d5e1a82c71b878a43897a942bc3f5041276cd578ee73955773e7965c46a8ad
+SIZE (rubygem/gdk_pixbuf2-4.3.0.gem) = 34816
diff --git a/graphics/rubygem-gruff/Makefile b/graphics/rubygem-gruff/Makefile
index 70bcda774e2f..451ec7b4fdd2 100644
--- a/graphics/rubygem-gruff/Makefile
+++ b/graphics/rubygem-gruff/Makefile
@@ -1,5 +1,5 @@
PORTNAME= gruff
-PORTVERSION= 0.27.0
+PORTVERSION= 0.29.0
CATEGORIES= graphics rubygems
MASTER_SITES= RG
diff --git a/graphics/rubygem-gruff/distinfo b/graphics/rubygem-gruff/distinfo
index 9ee8201df3e6..bc274be4fac9 100644
--- a/graphics/rubygem-gruff/distinfo
+++ b/graphics/rubygem-gruff/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1748496029
-SHA256 (rubygem/gruff-0.27.0.gem) = bf1ea3bc0cdc1be9f353571b3600eea39f72140e3d1dd91ac62185fd8e6a8795
-SIZE (rubygem/gruff-0.27.0.gem) = 254976
+TIMESTAMP = 1753370276
+SHA256 (rubygem/gruff-0.29.0.gem) = ab808cbf507abda7ffacd4ba5805a43c47ad0ec6aa2a7b125cf8a165110047a0
+SIZE (rubygem/gruff-0.29.0.gem) = 254976
diff --git a/graphics/rubygem-rmagick/Makefile b/graphics/rubygem-rmagick/Makefile
index ad764e200ef8..ddd0ebb622b8 100644
--- a/graphics/rubygem-rmagick/Makefile
+++ b/graphics/rubygem-rmagick/Makefile
@@ -1,6 +1,5 @@
PORTNAME= rmagick
-PORTVERSION= 6.1.1
-PORTREVISION= 1
+PORTVERSION= 6.1.2
CATEGORIES= graphics rubygems
MASTER_SITES= RG
diff --git a/graphics/rubygem-rmagick/distinfo b/graphics/rubygem-rmagick/distinfo
index 198ff93eee6b..099536aeef53 100644
--- a/graphics/rubygem-rmagick/distinfo
+++ b/graphics/rubygem-rmagick/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1738606697
-SHA256 (rubygem/rmagick-6.1.1.gem) = df0171c0641956a172ed0bbf6bdcf2ea68ad7fa3ec09364705f32c2cdd3b8726
-SIZE (rubygem/rmagick-6.1.1.gem) = 269824
+TIMESTAMP = 1753265960
+SHA256 (rubygem/rmagick-6.1.2.gem) = 2f2faf6aa072d32f6a71f6241d9e20b5090fb43690bbb84761b963bedcf53c8d
+SIZE (rubygem/rmagick-6.1.2.gem) = 270336
diff --git a/graphics/rubygem-rsvg2/Makefile b/graphics/rubygem-rsvg2/Makefile
index dc987a42ad72..8657933aecf6 100644
--- a/graphics/rubygem-rsvg2/Makefile
+++ b/graphics/rubygem-rsvg2/Makefile
@@ -1,5 +1,5 @@
PORTNAME= rsvg2
-PORTVERSION= 4.2.9
+PORTVERSION= 4.3.0
CATEGORIES= graphics rubygems
MASTER_SITES= RG
diff --git a/graphics/rubygem-rsvg2/distinfo b/graphics/rubygem-rsvg2/distinfo
index 5fbb855a785e..d787f387fa3e 100644
--- a/graphics/rubygem-rsvg2/distinfo
+++ b/graphics/rubygem-rsvg2/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1744289382
-SHA256 (rubygem/rsvg2-4.2.9.gem) = bd21b60f5c8a04cd1d5afe62f0b40aed67ff750bc0690b931aa69ae0659000eb
-SIZE (rubygem/rsvg2-4.2.9.gem) = 29696
+TIMESTAMP = 1752566772
+SHA256 (rubygem/rsvg2-4.3.0.gem) = d967f796652aa88efe01af04635886681f99be5710ef66a7c8fe856c76718bac
+SIZE (rubygem/rsvg2-4.3.0.gem) = 29696
diff --git a/graphics/swappy/Makefile b/graphics/swappy/Makefile
index 4e0543163209..764597693a1f 100644
--- a/graphics/swappy/Makefile
+++ b/graphics/swappy/Makefile
@@ -1,10 +1,10 @@
PORTNAME= swappy
DISTVERSIONPREFIX= v
DISTVERSION= 1.5.1
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= graphics wayland
-MAINTAINER= ports@FreeBSD.org
+MAINTAINER= tagattie@FreeBSD.org
COMMENT= Snapshot editing for Wayland (a la Snappy on macOS)
WWW= https://github.com/jtheoof/swappy
diff --git a/graphics/variety/Makefile b/graphics/variety/Makefile
index 2cbf850c2d4d..864e26e7c73a 100644
--- a/graphics/variety/Makefile
+++ b/graphics/variety/Makefile
@@ -1,5 +1,6 @@
PORTNAME= variety
PORTVERSION= 0.8.13
+PORTREVISION= 1
CATEGORIES= graphics
MAINTAINER= nivit@FreeBSD.org
@@ -18,7 +19,7 @@ RUN_DEPENDS= ${PY_PILLOW} \
${PYTHON_PKGNAMEPREFIX}configobj>=5.0.6:devel/py-configobj@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}dbus>=1.1.1_1:devel/py-dbus@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}httplib2>=0.9:www/py-httplib2@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}lxml>=3.4.1_1:devel/py-lxml@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}lxml5>=3.4.1_1:devel/py-lxml5@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}pillow>=7.0.0:graphics/py-pillow@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR} \
bash>=4.3.33:shells/bash \
diff --git a/graphics/waylandpp/Makefile b/graphics/waylandpp/Makefile
index 9da095eb838f..ea0860dbc688 100644
--- a/graphics/waylandpp/Makefile
+++ b/graphics/waylandpp/Makefile
@@ -1,5 +1,5 @@
PORTNAME= waylandpp
-DISTVERSION= 1.0.0
+DISTVERSION= 1.0.1
CATEGORIES= graphics
MAINTAINER= eduardo@FreeBSD.org
@@ -12,7 +12,7 @@ LICENSE_FILE= ${WRKSRC}/LICENSE
LIB_DEPENDS= libpugixml.so:textproc/pugixml \
libwayland-egl.so:graphics/wayland
-USES= cmake compiler:c++11-lang gl localbase:ldflags pkgconfig xorg
+USES= cmake compiler:c++11-lang gl localbase:ldflags pkgconfig
USE_GITHUB= yes
GH_ACCOUNT= NilsBrause
USE_GL= egl
diff --git a/graphics/waylandpp/distinfo b/graphics/waylandpp/distinfo
index 1add68a778d8..6f74bc9d09f4 100644
--- a/graphics/waylandpp/distinfo
+++ b/graphics/waylandpp/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1656001374
-SHA256 (NilsBrause-waylandpp-1.0.0_GH0.tar.gz) = b20b45917382c6b87e9380130c9a1a1c563da2f498de5830df12fbce326dd9f5
-SIZE (NilsBrause-waylandpp-1.0.0_GH0.tar.gz) = 203510
+TIMESTAMP = 1752525900
+SHA256 (NilsBrause-waylandpp-1.0.1_GH0.tar.gz) = 49c362fa5db28ab5472968215b88f1fbe3a7b7f57818dde722fd7d38997d940a
+SIZE (NilsBrause-waylandpp-1.0.1_GH0.tar.gz) = 203547
diff --git a/graphics/xmlgraphics-commons/Makefile b/graphics/xmlgraphics-commons/Makefile
index ad963a60ec1b..875e1d17628b 100644
--- a/graphics/xmlgraphics-commons/Makefile
+++ b/graphics/xmlgraphics-commons/Makefile
@@ -1,11 +1,11 @@
PORTNAME= xmlgraphics-commons
-PORTVERSION= 2.6
+DISTVERSION= 2.11
DISTVERSIONSUFFIX= -bin
CATEGORIES= graphics textproc java
MASTER_SITES= APACHE/xmlgraphics/commons/binaries \
https://archive.apache.org/dist/xmlgraphics/commons/binaries/
-MAINTAINER= ports@FreeBSD.org
+MAINTAINER= atanubiswas484@gmail.com
COMMENT= Several reusable components used by Apache Batik and FOP
WWW= https://xmlgraphics.apache.org/commons/
@@ -17,14 +17,14 @@ USES= java
NO_ARCH= yes
NO_BUILD= yes
-WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}
+WRKSRC= ${WRKDIR}/${PORTNAME}-${DISTVERSION}
PLIST_FILES= ${JAVAJARDIR}/${JARFILE_VER} \
${JAVAJARDIR}/${JARFILE}
PORTDOCS= *
JARFILE= ${PORTNAME}.jar
-JARFILE_VER= ${PORTNAME}-${PORTVERSION}.jar
+JARFILE_VER= ${PORTNAME}-${DISTVERSION}.jar
OPTIONS_DEFINE= DOCS
diff --git a/graphics/xmlgraphics-commons/distinfo b/graphics/xmlgraphics-commons/distinfo
index ec1a202d60ac..a93b66cdcac4 100644
--- a/graphics/xmlgraphics-commons/distinfo
+++ b/graphics/xmlgraphics-commons/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1626809136
-SHA256 (xmlgraphics-commons-2.6-bin.tar.gz) = 2f92a74fe6c54685c31fb988eb1dc2134f4e4f567c31d9d4e103f07001300ab3
-SIZE (xmlgraphics-commons-2.6-bin.tar.gz) = 1580005
+TIMESTAMP = 1752609194
+SHA256 (xmlgraphics-commons-2.11-bin.tar.gz) = 690a3301c3f320dd78092622bfc0e7f20c9457f048c37947c3700a4d7dc124f0
+SIZE (xmlgraphics-commons-2.11-bin.tar.gz) = 2009106
diff --git a/graphics/zathura-pdf-mupdf/Makefile b/graphics/zathura-pdf-mupdf/Makefile
index ca48d5ee2792..a015cbea442f 100644
--- a/graphics/zathura-pdf-mupdf/Makefile
+++ b/graphics/zathura-pdf-mupdf/Makefile
@@ -1,6 +1,6 @@
PORTNAME= zathura-pdf-mupdf
DISTVERSION= 0.4.4
-PORTREVISION= 4
+PORTREVISION= 5
CATEGORIES= graphics
MASTER_SITES= https://pwmt.org/projects/zathura-pdf-mupdf/download/