summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Mk/Uses/zig.mk102
-rw-r--r--Mk/bsd.options.mk7
-rw-r--r--archivers/py-zipstream-ng/Makefile3
-rw-r--r--archivers/py-zipstream-ng/distinfo6
-rw-r--r--audio/chromaprint/Makefile27
-rw-r--r--audio/chromaprint/distinfo6
-rw-r--r--audio/chromaprint/files/patch-tests_CMakeLists.txt14
-rw-r--r--audio/chromaprint/pkg-plist6
-rw-r--r--comms/klog/Makefile3
-rw-r--r--comms/klog/distinfo6
-rw-r--r--converters/simdutf/Makefile2
-rw-r--r--converters/simdutf/distinfo6
-rw-r--r--converters/simdutf/pkg-plist4
-rw-r--r--databases/libvalkey/Makefile6
-rw-r--r--databases/libvalkey/distinfo6
-rw-r--r--databases/libvalkey/pkg-plist5
-rw-r--r--deskutils/nextcloudclient/Makefile11
-rw-r--r--deskutils/nextcloudclient/distinfo6
-rw-r--r--deskutils/nextcloudclient/files/patch-doc_CMakeLists.txt18
-rw-r--r--deskutils/nextcloudclient/files/patch-man_CMakeLists.txt15
-rw-r--r--deskutils/nextcloudclient/pkg-plist3
-rw-r--r--deskutils/readur/Makefile2
-rw-r--r--deskutils/readur/Makefile.crates26
-rw-r--r--deskutils/readur/distinfo62
-rw-r--r--deskutils/readur/pkg-plist2
-rw-r--r--deskutils/remind/Makefile2
-rw-r--r--deskutils/remind/distinfo6
-rw-r--r--devel/dbus/Makefile2
-rw-r--r--devel/dbus/files/patch-dbus_dbus-transport-socket.c15
-rw-r--r--devel/gcli/Makefile5
-rw-r--r--devel/gcli/distinfo6
-rw-r--r--devel/gcli/pkg-plist1
-rw-r--r--devel/generate/Makefile7
-rw-r--r--devel/generate/distinfo6
-rw-r--r--devel/generate/files/patch-generate.c11
-rw-r--r--devel/jjui/Makefile2
-rw-r--r--devel/jjui/distinfo10
-rw-r--r--devel/wf-config/Makefile5
-rw-r--r--devel/wf-config/distinfo6
-rw-r--r--devel/wf-config/pkg-plist1
-rw-r--r--emulators/Makefile3
-rw-r--r--emulators/ares/Makefile42
-rw-r--r--emulators/ares/distinfo6
-rw-r--r--emulators/ares/files/patch-thirdparty_CMakeLists.txt75
-rw-r--r--emulators/ares/pkg-descr13
-rw-r--r--emulators/ares/pkg-plist4
-rw-r--r--emulators/virtualbox-ose-72/Makefile426
-rw-r--r--emulators/virtualbox-ose-72/distinfo7
-rw-r--r--emulators/virtualbox-ose-72/files/extrapatch-Config.kmk11
-rw-r--r--emulators/virtualbox-ose-72/files/extrapatch-src-VBox-HostDrivers-Support-freebsd-Makefile11
-rw-r--r--emulators/virtualbox-ose-72/files/extrapatch-vboximg-Config.kmk11
-rw-r--r--emulators/virtualbox-ose-72/files/patch-Config.kmk421
-rw-r--r--emulators/virtualbox-ose-72/files/patch-configure126
-rw-r--r--emulators/virtualbox-ose-72/files/patch-doc_manual_en__US_dita_UserManual.ditamap11
-rw-r--r--emulators/virtualbox-ose-72/files/patch-include-iprt-x86.h19
-rw-r--r--emulators/virtualbox-ose-72/files/patch-include_VBox_com_array.h36
-rw-r--r--emulators/virtualbox-ose-72/files/patch-include_VBox_sup.h11
-rw-r--r--emulators/virtualbox-ose-72/files/patch-include_iprt_string.h14
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-VBoxGuest-freebsd.c284
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-freebsd-Makefile27
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-freebsd-files_vboxguest34
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-x11-Installer-98vboxadd-xclient25
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-x11-Installer-vboxclient.desktop10
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src-VBox-HostDrivers-VBoxNetAdp-Makefile.kmk20
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src-VBox-HostDrivers-VBoxNetFlt-freebsd-files_vboxnetflt10
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src-VBox-Installer-Makefile.kmk14
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src-VBox-Installer-freebsd-VBox.sh77
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src-VBox-Main-src-server-VirtualBoxImpl.cpp11
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src-VBox-Runtime-r0drv-freebsd-sleepqueue-r0drv-freebsd.h39
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_common_VBoxService_VBoxServiceVMInfo.cpp71
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_common_pam_pam__vbox.cpp20
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_Makefile38
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_Makefile.kmk31
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_drm_vboxvideo__drm.c17
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_mount__vboxvfs_Makefile.kmk31
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_mount__vboxvfs_mount__vboxvfs.856
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_mount__vboxvfs_mount__vboxvfs.c171
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_bcmp.c12
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs.h428
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__prov.c1015
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__vfsops.c644
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__vnops.c1543
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_x11_vboxmouse_Makefile.kmk29
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA.cpp20
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-dx-dx11.cpp11
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-glLdr.cpp29
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-glLdr.h11
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-ogl.cpp56
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Makefile.kmk44
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Network_DrvNAT.cpp10
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_PC_ipxe_Makefile.kmk29
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_USB_freebsd_USBProxyDevice-freebsd.cpp11
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_ExtPacks_VNC_VBoxVNC.cpp58
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VBoxHeadless_VBoxHeadless.cpp11
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VBoxManage_VBoxManageModifyVM.cpp29
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VirtualBox_src_manager_UIVirtualBoxManager.cpp46
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VirtualBox_src_manager_UIVirtualBoxManager.h20
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VirtualBox_src_manager_UIVirtualBoxWidget.cpp24
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_SUPDrv.cpp13
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_SUPDrvInternal.h11
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_freebsd_Makefile30
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_freebsd_SUPDrv-freebsd.c234
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_freebsd_SUPLib-freebsd.cpp11
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_freebsd_files__vboxdrv34
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetAdp_freebsd_Makefile11
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetAdp_freebsd_VBoxNetAdp-freebsd.c147
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetFlt_Makefile.kmk11
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetFlt_freebsd_Makefile11
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetFlt_freebsd_VBoxNetFlt-freebsd.c471
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_adpctl_VBoxNetAdpCtl.cpp11
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Main_Makefile.kmk10
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Main_include_HostPower.h20
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Main_src-server_HostImpl.cpp11
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Main_src-server_freebsd_PerformanceFreeBSD.cpp24
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_Makefile.kmk29
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_alloc-r0drv-freebsd.c58
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_assert-r0drv-freebsd.c29
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_memobj-r0drv-freebsd.c408
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_memuserkernel-r0drv-freebsd.c22
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_mp-r0drv-freebsd.c92
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_semevent-r0drv-freebsd.c53
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_semeventmulti-r0drv-freebsd.c73
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_semfastmutex-r0drv-freebsd.c59
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_semmutex-r0drv-freebsd.c80
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_spinlock-r0drv-freebsd.c30
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_the-freebsd-kernel.h48
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_thread-r0drv-freebsd.c91
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_thread2-r0drv-freebsd.c35
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_time-r0drv-freebsd.c43
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_timer-r0drv-freebsd.c68
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r3_freebsd_systemmem-freebsd.cpp39
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r3_posix_process-creation-posix.cpp38
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_VMM_Config.kmk11
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_VBox_VMM_VMMR3_PDMAsyncCompletionFileNormal.cpp59
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_libs_xpcom18a4_Makefile.kmk11
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_libs_xpcom18a4_nsprpub_pr_src_pthreads_ptsynch.c13
-rw-r--r--emulators/virtualbox-ose-72/files/patch-src_libs_xpcom18a4_xpcom_io_nsLocalFileUnix.h17
-rw-r--r--emulators/virtualbox-ose-72/files/pkg-message.in120
-rw-r--r--emulators/virtualbox-ose-72/files/vboxheadless.in140
-rw-r--r--emulators/virtualbox-ose-72/files/vboxinit.in91
-rw-r--r--emulators/virtualbox-ose-72/files/vboxwatchdog.in51
-rw-r--r--emulators/virtualbox-ose-72/files/vboxwebsrv.in47
-rw-r--r--emulators/virtualbox-ose-72/files/virtualbox.desktop17
-rw-r--r--emulators/virtualbox-ose-72/pkg-descr8
-rw-r--r--emulators/virtualbox-ose-72/pkg-plist452
-rw-r--r--emulators/virtualbox-ose-kmod-72/Makefile114
-rw-r--r--emulators/virtualbox-ose-kmod-72/distinfo3
-rw-r--r--emulators/virtualbox-ose-kmod-72/files/pkg-message.in10
-rw-r--r--emulators/virtualbox-ose-kmod-72/files/vboxnet.in67
-rw-r--r--emulators/virtualbox-ose-kmod-72/pkg-descr5
-rw-r--r--emulators/virtualbox-ose-kmod-72/pkg-plist6
-rw-r--r--emulators/virtualbox-ose-nox11-72/Makefile11
-rw-r--r--filesystems/Makefile1
-rw-r--r--filesystems/sasquatch/Makefile35
-rw-r--r--filesystems/sasquatch/distinfo3
-rw-r--r--filesystems/sasquatch/pkg-descr16
-rw-r--r--graphics/colmap/Makefile2
-rw-r--r--graphics/colmap/distinfo6
-rw-r--r--graphics/colmap/files/patch-cmake_FindDependencies.cmake19
-rw-r--r--graphics/mesa-devel/Makefile4
-rw-r--r--graphics/mesa-devel/distinfo6
-rw-r--r--graphics/zathura/Makefile13
-rw-r--r--graphics/zathura/distinfo6
-rw-r--r--graphics/zathura/pkg-plist1
-rw-r--r--irc/py-sopel/Makefile2
-rw-r--r--irc/py-sopel/distinfo6
-rw-r--r--lang/php85/Makefile5
-rw-r--r--lang/php85/distinfo6
-rw-r--r--lang/php85/pkg-plist5
-rw-r--r--lang/s7/Makefile.master4
-rw-r--r--lang/s7/distinfo6
-rw-r--r--mail/mew-devel/Makefile5
-rw-r--r--mail/mew-devel/distinfo6
-rw-r--r--math/maxima/Makefile2
-rw-r--r--math/wxmaxima/Makefile4
-rw-r--r--math/wxmaxima/distinfo6
-rw-r--r--math/wxmaxima/files/patch-src_wxMaxima.cpp11
-rw-r--r--math/wxmaxima/pkg-plist20
-rw-r--r--misc/py-hf-xet/Makefile4
-rw-r--r--misc/py-hf-xet/Makefile.crates157
-rw-r--r--misc/py-hf-xet/distinfo320
-rw-r--r--multimedia/handbrake/Makefile18
-rw-r--r--multimedia/handbrake/distinfo26
-rw-r--r--multimedia/handbrake/files/patch-contrib_ffmpeg_module.defs18
-rw-r--r--multimedia/handbrake/files/patch-libhb_enc__qsv.c67
-rw-r--r--multimedia/handbrake/files/patch-libhb_handbrake_qsv__common.h19
-rw-r--r--multimedia/handbrake/files/patch-libhb_qsv__common.c91
-rw-r--r--multimedia/handbrake/files/patch-make_include_contrib.defs11
-rw-r--r--multimedia/handbrake/pkg-plist17
-rw-r--r--multimedia/wf-recorder/files/patch-fix-ffmpeg827
-rw-r--r--net-mgmt/netdata/pkg-plist2
-rw-r--r--net-mgmt/tcpreplay/Makefile13
-rw-r--r--net-mgmt/tcpreplay/distinfo6
-rw-r--r--net-mgmt/tcpreplay/files/patch-Makefile.in11
-rw-r--r--net-mgmt/tcpreplay/files/patch-lib_queue.h18
-rw-r--r--net-mgmt/tcpreplay/files/patch-src_fragroute_mod.c15
-rw-r--r--net-mgmt/tcpreplay/files/patch-src_fragroute_pkt.h13
-rw-r--r--ports-mgmt/Makefile1
-rw-r--r--ports-mgmt/zig2tuple/Makefile20
-rw-r--r--ports-mgmt/zig2tuple/distinfo3
-rw-r--r--ports-mgmt/zig2tuple/pkg-descr3
-rw-r--r--security/logcheck/Makefile5
-rw-r--r--security/logcheck/distinfo6
-rw-r--r--security/logcheck/files/patch-rulefiles_linux_ignore.d.paranoid_ssh10
-rw-r--r--security/logcheck/files/patch-rulefiles_linux_ignore.d.server_ssh78
-rwxr-xr-xsysutils/Makefile1
-rw-r--r--sysutils/backrest/Makefile2
-rw-r--r--sysutils/backrest/distinfo14
-rw-r--r--sysutils/kassiber/Makefile3
-rw-r--r--sysutils/kassiber/distinfo6
-rw-r--r--sysutils/kassiber/files/patch-main.c14
-rw-r--r--sysutils/py-healthchecks/Makefile2
-rw-r--r--sysutils/py-healthchecks/distinfo6
-rw-r--r--sysutils/py-healthchecks/files/patch-hc_lib_webauthn.py11
-rw-r--r--sysutils/py-healthchecks/pkg-plist55
-rw-r--r--sysutils/rubygem-mdless/Makefile24
-rw-r--r--sysutils/rubygem-mdless/distinfo3
-rw-r--r--sysutils/rubygem-mdless/pkg-descr2
-rw-r--r--textproc/Makefile1
-rw-r--r--textproc/go-yq/Makefile5
-rw-r--r--textproc/go-yq/distinfo10
-rw-r--r--textproc/html2xhtml/Makefile6
-rw-r--r--textproc/pdjson/Makefile27
-rw-r--r--textproc/pdjson/distinfo3
-rw-r--r--textproc/pdjson/files/patch-Makefile21
-rw-r--r--textproc/pdjson/files/pdjson.pc.in11
-rw-r--r--textproc/pdjson/pkg-descr5
-rw-r--r--textproc/pdjson/pkg-plist4
-rw-r--r--www/homepage/Makefile2
-rw-r--r--www/homepage/distinfo6
-rw-r--r--www/homepage/pkg-plist12
-rw-r--r--www/librewolf/Makefile3
-rw-r--r--www/librewolf/distinfo6
-rw-r--r--www/nginx-devel/Makefile2
-rw-r--r--www/nginx-devel/files/extra-patch-ngx_nats.c20
-rw-r--r--www/nginx-devel/files/nginx.in1
-rw-r--r--www/phpvirtualbox-72/Makefile1
-rw-r--r--www/phpvirtualbox-72/files/patch-endpoints_lib_vboxwebService-7.2.wsdl11
-rw-r--r--www/pocket-id/Makefile2
-rw-r--r--www/pocket-id/distinfo14
-rw-r--r--www/py-httpx-retries/Makefile2
-rw-r--r--www/py-httpx-retries/distinfo6
-rw-r--r--www/py-nicegui/Makefile2
-rw-r--r--www/py-nicegui/distinfo6
-rw-r--r--www/py-wsgidav/Makefile14
-rw-r--r--www/py-wsgidav/distinfo6
-rw-r--r--x11-toolkits/wlroots017/Makefile5
-rw-r--r--x11-toolkits/wlroots018/Makefile5
-rw-r--r--x11-toolkits/wlroots019/Makefile5
-rw-r--r--x11-wm/wayfire-plugins-extra/Makefile34
-rw-r--r--x11-wm/wayfire-plugins-extra/distinfo24
-rw-r--r--x11-wm/wayfire-plugins-extra/files/patch-libc++14
-rw-r--r--x11-wm/wayfire-plugins-extra/files/patch-wlroots01730
-rw-r--r--x11-wm/wayfire-plugins-extra/pkg-plist8
-rw-r--r--x11-wm/wayfire/Makefile30
-rw-r--r--x11-wm/wayfire/distinfo14
-rw-r--r--x11-wm/wayfire/files/patch-wlroots01732
-rw-r--r--x11-wm/wayfire/pkg-plist34
-rw-r--r--x11/Makefile1
-rw-r--r--x11/salut/Makefile2
-rw-r--r--x11/sway-audio-idle-inhibit/Makefile2
-rw-r--r--x11/swayfloatingswitcher/Makefile2
-rw-r--r--x11/swaync/Makefile2
-rw-r--r--x11/swaync/pkg-descr8
-rw-r--r--x11/swaysettings/Makefile2
-rw-r--r--x11/wapanel/Makefile2
-rw-r--r--x11/watershot/Makefile2
-rw-r--r--x11/waycheck/Makefile30
-rw-r--r--x11/waycheck/distinfo3
-rw-r--r--x11/waycheck/files/patch-meson.build15
-rw-r--r--x11/waycheck/files/patch-src_meson.build10
-rw-r--r--x11/waycheck/files/patch-src_window.cpp56
-rw-r--r--x11/waycheck/pkg-descr5
-rw-r--r--x11/wcm/Makefile7
-rw-r--r--x11/wcm/distinfo6
-rw-r--r--x11/wcm/pkg-plist12
-rw-r--r--x11/wf-shell/Makefile5
-rw-r--r--x11/wf-shell/distinfo6
278 files changed, 11285 insertions, 1019 deletions
diff --git a/Mk/Uses/zig.mk b/Mk/Uses/zig.mk
new file mode 100644
index 000000000000..5727a812fede
--- /dev/null
+++ b/Mk/Uses/zig.mk
@@ -0,0 +1,102 @@
+# Provide support for building Zig software.
+#
+# Feature: zig
+# Usage: USES=zig
+
+# Variables, which can be set by the port:
+#
+# ZIG_TUPLE List of Zig dependencies required to build the port.
+# Each item is triplet of an arbitrary name, an URL without
+# scheme part (https://) and a directory name where the
+# expects this dependency to be placed.
+# This knob can be generated by running make make-zig-tuple
+# You might need to run this multiple time until all
+# transitive dependencies get pulled in.
+#
+# MAINTAINER: ports@FreeBSD.org
+
+.if !defined(_INCLUDE_USES_ZIG_MK)
+_INCLUDE_USES_ZIG_MK= yes
+
+. if !empty(zig_ARGS)
+IGNORE= USES=zig does not accept arguments
+. endif
+
+.sinclude "${MASTERDIR}/Makefile.zig"
+
+ZIG_CMD?= zig
+ZIG_PORT?= lang/zig
+ZIG_DEPSDIR= ${WRKDIR}/zig-packages
+ZIG_TMPDEPSDIR= ${WRKDIR}/zig-packages-tmp
+
+ZIG_CPUTYPE_DEFAULT= ${ARCH:S/amd64/x86_64/}
+ZIG_CPUTYPE?= ${CPUTYPE:U${ZIG_CPUTYPE_DEFAULT}}
+
+_ZIG2TUPLE_CMD= zig2tuple
+
+BUILD_DEPENDS+= ${ZIG_CMD}:${ZIG_PORT}
+
+DIST_SUBDIR?= zig
+
+. for z in ${ZIG_TUPLE}
+. for group url dir in ${z:S/:/ /g:tw}
+MASTER_SITES+= https://${url:H}/:${group}
+DISTFILES+= ${url:T}:${group}
+. endfor
+. endfor
+
+_USES_extract= 299:zig-pre-extract
+
+# Generates ZIG_TUPLE= ... line ready to be pasted into the port based on
+# build.zig.zon files found in ${WRKSRC}
+make-zig-tuple: check-zig2tuple
+ @${ECHO_MSG} "===> Processing build.zig.zon files"
+ ${_ZIG2TUPLE_CMD} ${WRKDIR}
+
+check-zig2tuple:
+ @if ! type ${_ZIG2TUPLE_CMD} > /dev/null 2>&1; then \
+ ${ECHO_MSG} "===> zig2tuple executable not found, install \"ports-mgmt/zig2tuple\""; exit 1; \
+ fi
+
+# Main targets implementation.
+
+zig-pre-extract:
+ @${ECHO_CMD} "===> Extracting zig dependencies"
+# We don't know the name of the directory that is contained in the archive,
+# but we need to rename it into the last component of the tuple
+# To solve this we extract into an empty directory and then do
+# mv * /path/where/we/want/it
+ @${MKDIR} ${ZIG_DEPSDIR} ${ZIG_TMPDEPSDIR}
+. for z in ${ZIG_TUPLE}
+. for group url dir in ${z:S/:/ /g:tw}
+ ${MAKE} -C ${.CURDIR} do-extract EXTRACT_ONLY=${url:T} WRKDIR=${ZIG_TMPDEPSDIR}
+ ${MV} ${ZIG_TMPDEPSDIR}/* ${ZIG_DEPSDIR}/${dir}
+. endfor
+. endfor
+ @${RMDIR} ${ZIG_TMPDEPSDIR}
+
+ZIG_ENV+= DESTDIR=${STAGEDIR}
+ZIG_ARGS+= --prefix ${PREFIX} --system ${ZIG_DEPSDIR} --verbose \
+ -Dcpu=${ZIG_CPUTYPE} \
+ ${"${WITH_DEBUG}" != "":?:--release=fast} \
+ ${"${WITH_DEBUG}" != "":?-Doptimize=Debug:-Doptimize=ReleaseSmall} \
+ ${ZIG_ARGS_${FLAVOR}}
+DO_MAKE_BUILD?= ${SETENVI} ${WRK_ENV} ${ZIG_ENV} ${ZIG_CMD} build \
+ ${_MAKE_JOBS} ${ZIG_ARGS}
+. if !target(do-build)
+do-build:
+ @${DO_NADA}
+. endif
+
+. if !target(do-install)
+do-install:
+ @(cd ${BUILD_WRKSRC}; if ! ${DO_MAKE_BUILD}; then \
+ if [ -n "${BUILD_FAIL_MESSAGE}" ] ; then \
+ ${ECHO_MSG} "===> Compilation failed unexpectedly."; \
+ (${ECHO_CMD} "${BUILD_FAIL_MESSAGE}") | ${FMT_80} ; \
+ fi; \
+ ${FALSE}; \
+ fi)
+. endif
+
+.endif
diff --git a/Mk/bsd.options.mk b/Mk/bsd.options.mk
index 3b4b2dd4d300..38f1492f0dbd 100644
--- a/Mk/bsd.options.mk
+++ b/Mk/bsd.options.mk
@@ -198,6 +198,7 @@ _ALL_OPTIONS_HELPERS= ${_OPTIONS_DEPENDS:S/$/_DEPENDS/} \
CONFIGURE_WITH IMPLIES MESON_ARGS MESON_DISABLED \
MESON_ENABLED MESON_FALSE MESON_OFF MESON_ON MESON_TRUE \
PREVENTS PREVENTS_MSG QMAKE_OFF QMAKE_ON \
+ ZIG_BOOL ZIG_BOOL_OFF \
SUBPACKAGES SUBPACKAGES_OFF USE USE_OFF VARS VARS_OFF
# The format here is target_family:priority:target-type
@@ -544,6 +545,9 @@ MESON_ARGS+= ${${opt}_MESON_DISABLED:C/.*/-D&=disabled/}
. if defined(${opt}_CABAL_FLAGS)
CABAL_FLAGS+= ${${opt}_CABAL_FLAGS}
. endif
+. if defined(${opt}_ZIG_BOOL)
+ZIG_ARGS+= ${${opt}_ZIG_BOOL:C/.*/-D&=true/}
+. endif
. for configure in CONFIGURE CMAKE MESON QMAKE
. if defined(${opt}_${configure}_ON)
${configure}_ARGS+= ${${opt}_${configure}_ON}
@@ -620,6 +624,9 @@ MESON_ARGS+= ${${opt}_MESON_DISABLED:C/.*/-D&=enabled/}
. if defined(${opt}_CABAL_FLAGS)
CABAL_FLAGS+= -${${opt}_CABAL_FLAGS}
. endif
+. if defined(${opt}_ZIG_BOOL)
+ZIG_ARGS+= ${${opt}_ZIG_BOOL:C/.*/-D&=false/}
+. endif
. for configure in CONFIGURE CMAKE MESON QMAKE
. if defined(${opt}_${configure}_OFF)
${configure}_ARGS+= ${${opt}_${configure}_OFF}
diff --git a/archivers/py-zipstream-ng/Makefile b/archivers/py-zipstream-ng/Makefile
index 4848db2cbe0c..b13e2474e0b5 100644
--- a/archivers/py-zipstream-ng/Makefile
+++ b/archivers/py-zipstream-ng/Makefile
@@ -1,6 +1,5 @@
PORTNAME= zipstream-ng
-DISTVERSION= 1.8.0
-PORTREVISION= 1
+DISTVERSION= 1.9.0
CATEGORIES= archivers python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/archivers/py-zipstream-ng/distinfo b/archivers/py-zipstream-ng/distinfo
index 6673506b04ec..b0bd369cf2be 100644
--- a/archivers/py-zipstream-ng/distinfo
+++ b/archivers/py-zipstream-ng/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1731279942
-SHA256 (zipstream_ng-1.8.0.tar.gz) = b7129d2c15d26934b3e1cb22256593b6bdbd03c553c26f4199a5bf05110642bc
-SIZE (zipstream_ng-1.8.0.tar.gz) = 35887
+TIMESTAMP = 1756497695
+SHA256 (zipstream_ng-1.9.0.tar.gz) = a0d94030822d137efbf80dfdc680603c42f804696f41147bb3db895df667daea
+SIZE (zipstream_ng-1.9.0.tar.gz) = 37963
diff --git a/audio/chromaprint/Makefile b/audio/chromaprint/Makefile
index eaaa25dd57c1..5d80a0100ab3 100644
--- a/audio/chromaprint/Makefile
+++ b/audio/chromaprint/Makefile
@@ -1,8 +1,7 @@
PORTNAME= chromaprint
-DISTVERSION= 1.5.1.20221217
-PORTREVISION= 1
+DISTVERSION= 1.6.0
CATEGORIES= audio
-#MASTER_SITES= https://github.com/acoustid/${PORTNAME}/releases/download/v${DISTVERSION}/
+MASTER_SITES= https://github.com/acoustid/${PORTNAME}/releases/download/v${DISTVERSION}/
MAINTAINER= jhale@FreeBSD.org
COMMENT= AcoustID audio fingerprinting library
@@ -14,27 +13,21 @@ LICENSE_FILE_MIT= ${WRKSRC}/LICENSE.md
LIB_DEPENDS= libavcodec.so:multimedia/ffmpeg
-USES= cmake compiler:c++11-lib
-USE_GITHUB= yes
-GH_ACCOUNT= acoustid
-GH_TAGNAME= aa67c95
+USES= cmake:testing compiler:c++14-lang
USE_LDCONFIG= yes
-CMAKE_ARGS= -DBUILD_TOOLS:BOOL=true \
- -DAUDIO_PROCESSOR_LIB=swresample \
- -DFFT_LIB:STRING=avfft
+CMAKE_ARGS= -DAUDIO_PROCESSOR_LIB:STRING=swresample \
+ -DFFT_LIB:STRING=`if [ -f ${LOCALBASE}/include/libavcodec/avfft.h ]; then ${ECHO_CMD} avfft; else ${ECHO_CMD} avtx; fi`
+CMAKE_ON= BUILD_TOOLS
+CMAKE_OFF= BUILD_TESTS
+CMAKE_TESTING_ON= BUILD_TESTS
-OPTIONS_DEFINE= DOCS DOXYGEN TEST
+OPTIONS_DEFINE= DOCS DOXYGEN
+DOXYGEN_IMPLIES= DOCS
DOXYGEN_BUILD_DEPENDS= doxygen:devel/doxygen \
dot:graphics/graphviz
DOXYGEN_PORTDOCS= *
-DOXYGEN_IMPLIES= DOCS
-
-TEST_BUILD_DEPENDS= ${NONEXISTENT}:devel/googletest:patch
-TEST_CMAKE_BOOL= BUILD_TESTS
-TEST_CMAKE_ON= -DGTEST_ROOT:PATH=`${MAKE} -C ${PORTSDIR}/devel/googletest -VWRKSRC`/googletest
-TEST_TARGET= check
do-build-DOXYGEN-on:
@(cd ${BUILD_WRKSRC}; ${DO_MAKE_BUILD} docs)
diff --git a/audio/chromaprint/distinfo b/audio/chromaprint/distinfo
index 5f20e3b6fde7..999772c88563 100644
--- a/audio/chromaprint/distinfo
+++ b/audio/chromaprint/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1682952377
-SHA256 (acoustid-chromaprint-1.5.1.20221217-aa67c95_GH0.tar.gz) = 0893b7198121dd2add81aa1233e5312cbc7446bdd6b6418a5af6ab24e82cb6b3
-SIZE (acoustid-chromaprint-1.5.1.20221217-aa67c95_GH0.tar.gz) = 1581151
+TIMESTAMP = 1756531467
+SHA256 (chromaprint-1.6.0.tar.gz) = 9d33482e56a1389a37a0d6742c376139fa43e3b8a63d29003222b93db2cb40da
+SIZE (chromaprint-1.6.0.tar.gz) = 1577695
diff --git a/audio/chromaprint/files/patch-tests_CMakeLists.txt b/audio/chromaprint/files/patch-tests_CMakeLists.txt
deleted file mode 100644
index a34c06840c6b..000000000000
--- a/audio/chromaprint/files/patch-tests_CMakeLists.txt
+++ /dev/null
@@ -1,14 +0,0 @@
---- tests/CMakeLists.txt.orig 2016-12-23 11:50:27 UTC
-+++ tests/CMakeLists.txt
-@@ -36,6 +36,11 @@ set(SRCS
- if(BUILD_TOOLS)
- set(SRCS ${SRCS} ../src/audio/ffmpeg_audio_reader_test.cpp)
- link_libraries(fpcalc_libs)
-+ include_directories(
-+ ${FFMPEG_LIBAVCODEC_INCLUDE_DIRS}
-+ ${FFMPEG_LIBAVFORMAT_INCLUDE_DIRS}
-+ ${FFMPEG_LIBAVUTIL_INCLUDE_DIRS}
-+ )
- endif()
-
- add_executable(all_tests ${SRCS} $<TARGET_OBJECTS:chromaprint_objs>)
diff --git a/audio/chromaprint/pkg-plist b/audio/chromaprint/pkg-plist
index 4c8e307b35f0..baf18c35b148 100644
--- a/audio/chromaprint/pkg-plist
+++ b/audio/chromaprint/pkg-plist
@@ -1,6 +1,10 @@
bin/fpcalc
include/chromaprint.h
+lib/cmake/Chromaprint/ChromaprintConfig.cmake
+lib/cmake/Chromaprint/ChromaprintConfigVersion.cmake
+lib/cmake/Chromaprint/ChromaprintTargets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/Chromaprint/ChromaprintTargets.cmake
lib/libchromaprint.so
lib/libchromaprint.so.1
-lib/libchromaprint.so.1.5.1
+lib/libchromaprint.so.1.6.0
libdata/pkgconfig/libchromaprint.pc
diff --git a/comms/klog/Makefile b/comms/klog/Makefile
index cb83dad41e0c..de23181f8cfa 100644
--- a/comms/klog/Makefile
+++ b/comms/klog/Makefile
@@ -1,5 +1,5 @@
PORTNAME= klog
-PORTVERSION= 2.4.1
+PORTVERSION= 2.4.2
#PORTREVISION= 1
CATEGORIES= comms hamradio
@@ -38,6 +38,7 @@ PLIST_FILES= bin/klog \
${DATADIR}/translations/klog_pl.qm \
${DATADIR}/translations/klog_ru.qm \
${DATADIR}/translations/klog_uk.qm \
+ share/applications/klog.desktop \
share/man/man1/klog.1.gz
post-patch:
diff --git a/comms/klog/distinfo b/comms/klog/distinfo
index 3a0f75e1a722..c4318e70d06c 100644
--- a/comms/klog/distinfo
+++ b/comms/klog/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1747383065
-SHA256 (ea4k-klog-2.4.1_GH0.tar.gz) = 9f0fcd984d8c640f6c55c7b3036ba2e310e4371ca5d21ee42997505b69c2410c
-SIZE (ea4k-klog-2.4.1_GH0.tar.gz) = 4916023
+TIMESTAMP = 1756459753
+SHA256 (ea4k-klog-2.4.2_GH0.tar.gz) = 0d12442c4224404b637c270d140ec835b77f3474bac1657abb990df65859b630
+SIZE (ea4k-klog-2.4.2_GH0.tar.gz) = 4939360
diff --git a/converters/simdutf/Makefile b/converters/simdutf/Makefile
index e19b3cef134b..7d74ef671f6f 100644
--- a/converters/simdutf/Makefile
+++ b/converters/simdutf/Makefile
@@ -1,6 +1,6 @@
PORTNAME= simdutf
DISTVERSIONPREFIX= v
-DISTVERSION= 7.3.6
+DISTVERSION= 7.4.0
CATEGORIES= converters textproc
MAINTAINER= fuz@FreeBSD.org
diff --git a/converters/simdutf/distinfo b/converters/simdutf/distinfo
index b5aa414ea497..d66efc56a025 100644
--- a/converters/simdutf/distinfo
+++ b/converters/simdutf/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1755237077
-SHA256 (simdutf-simdutf-v7.3.6_GH0.tar.gz) = c08f3dce1cbb7a8bead9eb53bcbda778e8a1c69b7d3a0690682f1b09fbb85c31
-SIZE (simdutf-simdutf-v7.3.6_GH0.tar.gz) = 2209424
+TIMESTAMP = 1756286925
+SHA256 (simdutf-simdutf-v7.4.0_GH0.tar.gz) = 8fd729ebfd5ec56cb0395bcc176c4801e1f8a0ea834d166d52279d7b9e801283
+SIZE (simdutf-simdutf-v7.4.0_GH0.tar.gz) = 2211861
diff --git a/converters/simdutf/pkg-plist b/converters/simdutf/pkg-plist
index 24d025bccbb0..3a717214007a 100644
--- a/converters/simdutf/pkg-plist
+++ b/converters/simdutf/pkg-plist
@@ -14,7 +14,7 @@ lib/cmake/simdutf/simdutf-config-version.cmake
lib/cmake/simdutf/simdutf-config.cmake
lib/cmake/simdutf/simdutfTargets-%%CMAKE_BUILD_TYPE%%.cmake
lib/cmake/simdutf/simdutfTargets.cmake
-lib/libsimdutf.so.25.0.0
-lib/libsimdutf.so.25
+lib/libsimdutf.so.26.0.0
+lib/libsimdutf.so.26
lib/libsimdutf.so
libdata/pkgconfig/simdutf.pc
diff --git a/databases/libvalkey/Makefile b/databases/libvalkey/Makefile
index 5090da866e10..8488049ef93f 100644
--- a/databases/libvalkey/Makefile
+++ b/databases/libvalkey/Makefile
@@ -1,5 +1,5 @@
PORTNAME= libvalkey
-DISTVERSION= 0.2.0
+DISTVERSION= 0.2.1
CATEGORIES= databases
MAINTAINER= dtxdf@FreeBSD.org
@@ -25,9 +25,9 @@ TLS_USES= ssl
TLS_MAKE_ARGS= USE_TLS=1
post-install:
- ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libvalkey.so.0.1.0
+ ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libvalkey.so.${DISTVERSION}
post-install-TLS-on:
- ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libvalkey_tls.so.0.1.0
+ ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libvalkey_tls.so.${DISTVERSION}
.include <bsd.port.mk>
diff --git a/databases/libvalkey/distinfo b/databases/libvalkey/distinfo
index 2a5fc91fc739..8bc3097121d6 100644
--- a/databases/libvalkey/distinfo
+++ b/databases/libvalkey/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1755627857
-SHA256 (valkey-io-libvalkey-0.2.0_GH0.tar.gz) = d620d93fc3c39b297babe3d9003901aeddaa600507a1844accdb23539a762029
-SIZE (valkey-io-libvalkey-0.2.0_GH0.tar.gz) = 207972
+TIMESTAMP = 1756498326
+SHA256 (valkey-io-libvalkey-0.2.1_GH0.tar.gz) = bc068b15eeb8f66c3205f55f7bfe1274b79ccced0dd8796e59d62091abeb3645
+SIZE (valkey-io-libvalkey-0.2.1_GH0.tar.gz) = 207895
diff --git a/databases/libvalkey/pkg-plist b/databases/libvalkey/pkg-plist
index 07d3c858e797..b6095444557f 100644
--- a/databases/libvalkey/pkg-plist
+++ b/databases/libvalkey/pkg-plist
@@ -22,11 +22,10 @@ include/valkey/visibility.h
lib/libvalkey.a
lib/libvalkey.so
lib/libvalkey.so.0
-lib/libvalkey.so.0.1.0
+lib/libvalkey.so.0.2.1
lib/libvalkey_tls.a
lib/libvalkey_tls.so
lib/libvalkey_tls.so.0
-lib/libvalkey_tls.so.0.1.0
+lib/libvalkey_tls.so.0.2.1
libdata/pkgconfig/valkey.pc
libdata/pkgconfig/valkey_tls.pc
-
diff --git a/deskutils/nextcloudclient/Makefile b/deskutils/nextcloudclient/Makefile
index 2a795c140df1..30292a73f65c 100644
--- a/deskutils/nextcloudclient/Makefile
+++ b/deskutils/nextcloudclient/Makefile
@@ -1,5 +1,5 @@
PORTNAME= nextcloudclient
-PORTVERSION= 3.16.6
+PORTVERSION= 3.17.1
DISTVERSIONPREFIX= v
CATEGORIES= deskutils
@@ -32,7 +32,7 @@ USE_GITHUB= yes
GH_ACCOUNT= nextcloud
GH_PROJECT= desktop
-OPTIONS_DEFINE= DOCS DEBUG GNOME GUIADDONS KDE WEBENGINE
+OPTIONS_DEFINE= DEBUG GNOME GUIADDONS KDE WEBENGINE
OPTIONS_DEFAULT= GNOME GUIADDONS
OPTIONS_DEFAULT_aarch64= WEBENGINE
OPTIONS_DEFAULT_amd64= WEBENGINE
@@ -44,13 +44,6 @@ GUIADDONS_DESC= Use KDE guiaddons (implies KDE)
KDE_DESC= KDE desktop environment support
WEBENGINE_DESC= Use Webengine to provide web login flow
-DOCS_BUILD_DEPENDS= sphinx-build:textproc/py-sphinx \
- doxygen:devel/doxygen
-DOCS_USES= tex
-DOCS_USE= TEX=dvipsk:build,latex:build
-DOCS_CMAKE_BOOL= WITH_DOC
-DOCS_VARS= PORTDOCS=*
-
GNOME_CMAKE_BOOL= BUILD_SHELL_INTEGRATION_NAUTILUS
KDE_USES= xorg
diff --git a/deskutils/nextcloudclient/distinfo b/deskutils/nextcloudclient/distinfo
index 55c5fd4ee375..d92e0b984187 100644
--- a/deskutils/nextcloudclient/distinfo
+++ b/deskutils/nextcloudclient/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1750591897
-SHA256 (nextcloud-desktop-v3.16.6_GH0.tar.gz) = 8fd58e8537ac45f5c66eb925b8ef84e08f70a21bb0bdc3fb14de6a3310524954
-SIZE (nextcloud-desktop-v3.16.6_GH0.tar.gz) = 15690688
+TIMESTAMP = 1755675174
+SHA256 (nextcloud-desktop-v3.17.1_GH0.tar.gz) = 5f9668a0437a302675fb0e5bbc8f7030010e91632bd44271eab1e55a9f5c238a
+SIZE (nextcloud-desktop-v3.17.1_GH0.tar.gz) = 9402514
diff --git a/deskutils/nextcloudclient/files/patch-doc_CMakeLists.txt b/deskutils/nextcloudclient/files/patch-doc_CMakeLists.txt
deleted file mode 100644
index 1fb6b60ed164..000000000000
--- a/deskutils/nextcloudclient/files/patch-doc_CMakeLists.txt
+++ /dev/null
@@ -1,18 +0,0 @@
---- doc/CMakeLists.txt.orig 2025-03-12 08:49:45 UTC
-+++ doc/CMakeLists.txt
-@@ -11,7 +11,7 @@ if(SPHINX_FOUND)
- # assets
- set(LATEX_LOGO "${CMAKE_CURRENT_SOURCE_DIR}/logo-blue.pdf")
-
-- set(APPLICATION_DOC_DIR "${CMAKE_INSTALL_DOCDIR}/${PACKAGE}")
-+ set(APPLICATION_DOC_DIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/nextcloudclient")
- install(DIRECTORY ${SPHINX_HTML_DIR} DESTINATION ${APPLICATION_DOC_DIR} OPTIONAL)
- install(DIRECTORY ${SPHINX_PDF_DIR} DESTINATION ${APPLICATION_DOC_DIR} OPTIONAL)
- install(DIRECTORY ${SPHINX_QCH_DIR} DESTINATION ${APPLICATION_DOC_DIR} OPTIONAL)
-@@ -90,4 +90,4 @@ if(SPHINX_FOUND)
- ${SPHINX_HTMLHELP_DIR} )
- add_custom_target( doc-chm pushd ${SPHINX_HTMLHELP_DIR}; ${MSHTML_COMPILER} *.hhp; popd
- DEPENDS doc-chm-sphinx )
--endif(SPHINX_FOUND)
-\ No newline at end of file
-+endif(SPHINX_FOUND)
diff --git a/deskutils/nextcloudclient/files/patch-man_CMakeLists.txt b/deskutils/nextcloudclient/files/patch-man_CMakeLists.txt
deleted file mode 100644
index c5412b20ae9f..000000000000
--- a/deskutils/nextcloudclient/files/patch-man_CMakeLists.txt
+++ /dev/null
@@ -1,15 +0,0 @@
---- man/CMakeLists.txt.orig 2017-12-20 15:03:02 UTC
-+++ man/CMakeLists.txt
-@@ -3,6 +3,12 @@ if(SPHINX_FOUND)
- # Sphinx cache with pickled ReST documents
- set(SPHINX_CACHE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_doctrees")
-
-+ if(WITH_DOC)
-+ add_custom_target(man ALL DEPENDS doc-man COMMENT "Building manual pages...")
-+ else(WITH_DOC)
-+ add_custom_target(man DEPENDS doc-maan COMMENT "Building manual pages...")
-+ endif(WITH_DOC)
-+
- # HTML output directory
- set(SPHINX_MAN_DIR "${CMAKE_CURRENT_BINARY_DIR}/man1")
- install(DIRECTORY ${SPHINX_MAN_DIR} DESTINATION ${CMAKE_INSTALL_MANDIR} OPTIONAL)
diff --git a/deskutils/nextcloudclient/pkg-plist b/deskutils/nextcloudclient/pkg-plist
index 02b0e431331e..de7676968da8 100644
--- a/deskutils/nextcloudclient/pkg-plist
+++ b/deskutils/nextcloudclient/pkg-plist
@@ -88,12 +88,9 @@ share/icons/hicolor/72x72/apps/Nextcloud_sync.png
share/icons/hicolor/72x72/apps/Nextcloud_sync_shared.png
share/icons/hicolor/72x72/apps/Nextcloud_warn.png
share/icons/hicolor/72x72/apps/Nextcloud_warn_shared.png
-%%DOCS%%share/man/man1/nextcloud.1.gz
-%%DOCS%%share/man/man1/nextcloudcmd.1.gz
share/mime/packages/nextcloud.xml
%%GNOME%%share/nautilus-python/extensions/syncstate-Nextcloud.py
%%GNOME%%share/nemo-python/extensions/syncstate-Nextcloud.py
-share/nextcloud/i18n/client_TW.qm
share/nextcloud/i18n/client_af.qm
share/nextcloud/i18n/client_ar.qm
share/nextcloud/i18n/client_bg.qm
diff --git a/deskutils/readur/Makefile b/deskutils/readur/Makefile
index 9d832d561fe7..814477caf2a4 100644
--- a/deskutils/readur/Makefile
+++ b/deskutils/readur/Makefile
@@ -1,6 +1,6 @@
PORTNAME= readur
DISTVERSIONPREFIX= v
-DISTVERSION= 2.5.5
+DISTVERSION= 2.5.6
CATEGORIES= deskutils
MASTER_SITES= LOCAL/dtxdf/${PORTNAME}/
DISTFILES= ${PORTNAME}-${DISTVERSIONPREFIX}${DISTVERSION}.frontend${EXTRACT_SUFX} \
diff --git a/deskutils/readur/Makefile.crates b/deskutils/readur/Makefile.crates
index 3894e532b452..b349b91cf88b 100644
--- a/deskutils/readur/Makefile.crates
+++ b/deskutils/readur/Makefile.crates
@@ -20,7 +20,7 @@ CARGO_CRATES= ab_glyph-0.2.29 \
assert-json-diff-2.0.2 \
async-stream-0.3.6 \
async-stream-impl-0.3.6 \
- async-trait-0.1.88 \
+ async-trait-0.1.89 \
atoi-2.0.0 \
atomic-waker-1.1.2 \
autocfg-1.4.0 \
@@ -58,7 +58,7 @@ CARGO_CRATES= ab_glyph-0.2.29 \
base64-0.22.1 \
base64-simd-0.8.0 \
base64ct-1.8.0 \
- bcrypt-0.17.0 \
+ bcrypt-0.17.1 \
bindgen-0.64.0 \
bindgen-0.69.5 \
bit_field-0.10.2 \
@@ -113,7 +113,7 @@ CARGO_CRATES= ab_glyph-0.2.29 \
darling_core-0.20.11 \
darling_macro-0.20.11 \
data-encoding-2.9.0 \
- deadpool-0.10.0 \
+ deadpool-0.12.2 \
deadpool-runtime-0.1.4 \
der-0.6.1 \
der-0.7.10 \
@@ -147,7 +147,7 @@ CARGO_CRATES= ab_glyph-0.2.29 \
foldhash-0.1.5 \
foreign-types-0.3.2 \
foreign-types-shared-0.1.1 \
- form_urlencoded-1.2.1 \
+ form_urlencoded-1.2.2 \
fs_extra-1.3.0 \
fsevent-sys-4.1.0 \
futures-0.3.31 \
@@ -189,7 +189,7 @@ CARGO_CRATES= ab_glyph-0.2.29 \
httparse-1.10.1 \
httpdate-1.0.3 \
hyper-0.14.32 \
- hyper-1.6.0 \
+ hyper-1.7.0 \
hyper-named-pipe-0.1.0 \
hyper-rustls-0.24.2 \
hyper-rustls-0.27.7 \
@@ -206,7 +206,7 @@ CARGO_CRATES= ab_glyph-0.2.29 \
icu_properties_data-2.0.1 \
icu_provider-2.0.0 \
ident_case-1.0.1 \
- idna-1.0.3 \
+ idna-1.1.0 \
idna_adapter-1.2.1 \
image-0.25.6 \
image-webp-0.2.2 \
@@ -305,7 +305,7 @@ CARGO_CRATES= ab_glyph-0.2.29 \
peeking_take_while-0.1.2 \
pem-3.0.5 \
pem-rfc7468-0.7.0 \
- percent-encoding-2.3.1 \
+ percent-encoding-2.3.2 \
pin-project-lite-0.2.16 \
pin-utils-0.1.0 \
pkcs1-0.7.5 \
@@ -342,7 +342,7 @@ CARGO_CRATES= ab_glyph-0.2.29 \
redox_syscall-0.5.13 \
ref-cast-1.0.24 \
ref-cast-impl-1.0.24 \
- regex-1.11.1 \
+ regex-1.11.2 \
regex-automata-0.1.10 \
regex-automata-0.4.9 \
regex-lite-0.1.6 \
@@ -386,7 +386,7 @@ CARGO_CRATES= ab_glyph-0.2.29 \
semver-1.0.26 \
serde-1.0.219 \
serde_derive-1.0.219 \
- serde_json-1.0.142 \
+ serde_json-1.0.143 \
serde_path_to_error-0.1.17 \
serde_repr-0.1.20 \
serde_spanned-0.6.9 \
@@ -443,9 +443,9 @@ CARGO_CRATES= ab_glyph-0.2.29 \
testcontainers-0.24.0 \
testcontainers-modules-0.12.1 \
thiserror-1.0.69 \
- thiserror-2.0.14 \
+ thiserror-2.0.16 \
thiserror-impl-1.0.69 \
- thiserror-impl-2.0.14 \
+ thiserror-impl-2.0.16 \
thread_local-1.1.9 \
tiff-0.9.1 \
time-0.3.41 \
@@ -486,7 +486,7 @@ CARGO_CRATES= ab_glyph-0.2.29 \
unicode-normalization-0.1.24 \
unicode-properties-0.1.3 \
untrusted-0.9.0 \
- url-2.5.4 \
+ url-2.5.7 \
urlencoding-2.1.3 \
utf-8-0.7.6 \
utf8_iter-1.0.4 \
@@ -568,7 +568,7 @@ CARGO_CRATES= ab_glyph-0.2.29 \
windows_x86_64_msvc-0.53.0 \
winnow-0.7.11 \
winreg-0.50.0 \
- wiremock-0.6.4 \
+ wiremock-0.6.5 \
wit-bindgen-rt-0.39.0 \
writeable-0.6.1 \
xattr-1.5.0 \
diff --git a/deskutils/readur/distinfo b/deskutils/readur/distinfo
index a453c7bef485..d71b57da64d5 100644
--- a/deskutils/readur/distinfo
+++ b/deskutils/readur/distinfo
@@ -1,6 +1,6 @@
-TIMESTAMP = 1755325613
-SHA256 (readur-v2.5.5.frontend.tar.gz) = 8119596df5baf059491d91515225f2631fe33d39b82878346cbfecca8c5f7db9
-SIZE (readur-v2.5.5.frontend.tar.gz) = 2509875
+TIMESTAMP = 1756485347
+SHA256 (readur-v2.5.6.frontend.tar.gz) = 76da8b4133d62d74ad3092683101931f2512292b7c97e7ba524710856e245544
+SIZE (readur-v2.5.6.frontend.tar.gz) = 2509920
SHA256 (swagger-ui-v5.17.14.zip) = 481244d0812097b11fbaeef79f71d942b171617f9c9f9514e63acbe13e71ccdc
SIZE (swagger-ui-v5.17.14.zip) = 4388280
SHA256 (rust/crates/ab_glyph-0.2.29.crate) = ec3672c180e71eeaaac3a541fbbc5f5ad4def8b747c595ad30d674e43049f7b0
@@ -47,8 +47,8 @@ SHA256 (rust/crates/async-stream-0.3.6.crate) = 0b5a71a6f37880a80d1d7f19efd781e4
SIZE (rust/crates/async-stream-0.3.6.crate) = 13823
SHA256 (rust/crates/async-stream-impl-0.3.6.crate) = c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d
SIZE (rust/crates/async-stream-impl-0.3.6.crate) = 4312
-SHA256 (rust/crates/async-trait-0.1.88.crate) = e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5
-SIZE (rust/crates/async-trait-0.1.88.crate) = 32084
+SHA256 (rust/crates/async-trait-0.1.89.crate) = 9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb
+SIZE (rust/crates/async-trait-0.1.89.crate) = 32171
SHA256 (rust/crates/atoi-2.0.0.crate) = f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528
SIZE (rust/crates/atoi-2.0.0.crate) = 7785
SHA256 (rust/crates/atomic-waker-1.1.2.crate) = 1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0
@@ -123,8 +123,8 @@ SHA256 (rust/crates/base64-simd-0.8.0.crate) = 339abbe78e73178762e23bea9dfd08e69
SIZE (rust/crates/base64-simd-0.8.0.crate) = 12531
SHA256 (rust/crates/base64ct-1.8.0.crate) = 55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba
SIZE (rust/crates/base64ct-1.8.0.crate) = 31211
-SHA256 (rust/crates/bcrypt-0.17.0.crate) = 92758ad6077e4c76a6cadbce5005f666df70d4f13b19976b1a8062eef880040f
-SIZE (rust/crates/bcrypt-0.17.0.crate) = 12461
+SHA256 (rust/crates/bcrypt-0.17.1.crate) = abaf6da45c74385272ddf00e1ac074c7d8a6c1a1dda376902bd6a427522a8b2c
+SIZE (rust/crates/bcrypt-0.17.1.crate) = 12542
SHA256 (rust/crates/bindgen-0.64.0.crate) = c4243e6031260db77ede97ad86c27e501d646a27ab57b59a574f725d98ab1fb4
SIZE (rust/crates/bindgen-0.64.0.crate) = 204700
SHA256 (rust/crates/bindgen-0.69.5.crate) = 271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088
@@ -233,8 +233,8 @@ SHA256 (rust/crates/darling_macro-0.20.11.crate) = fc34b93ccb385b40dc71c6fceac4b
SIZE (rust/crates/darling_macro-0.20.11.crate) = 2532
SHA256 (rust/crates/data-encoding-2.9.0.crate) = 2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476
SIZE (rust/crates/data-encoding-2.9.0.crate) = 21564
-SHA256 (rust/crates/deadpool-0.10.0.crate) = fb84100978c1c7b37f09ed3ce3e5f843af02c2a2c431bae5b19230dad2c1b490
-SIZE (rust/crates/deadpool-0.10.0.crate) = 31997
+SHA256 (rust/crates/deadpool-0.12.2.crate) = 5ed5957ff93768adf7a65ab167a17835c3d2c3c50d084fe305174c112f468e2f
+SIZE (rust/crates/deadpool-0.12.2.crate) = 34422
SHA256 (rust/crates/deadpool-runtime-0.1.4.crate) = 092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b
SIZE (rust/crates/deadpool-runtime-0.1.4.crate) = 7664
SHA256 (rust/crates/der-0.6.1.crate) = f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de
@@ -301,8 +301,8 @@ SHA256 (rust/crates/foreign-types-0.3.2.crate) = f6f339eb8adc052cd2ca78910fda869
SIZE (rust/crates/foreign-types-0.3.2.crate) = 7504
SHA256 (rust/crates/foreign-types-shared-0.1.1.crate) = 00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b
SIZE (rust/crates/foreign-types-shared-0.1.1.crate) = 5672
-SHA256 (rust/crates/form_urlencoded-1.2.1.crate) = e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456
-SIZE (rust/crates/form_urlencoded-1.2.1.crate) = 8969
+SHA256 (rust/crates/form_urlencoded-1.2.2.crate) = cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf
+SIZE (rust/crates/form_urlencoded-1.2.2.crate) = 9347
SHA256 (rust/crates/fs_extra-1.3.0.crate) = 42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c
SIZE (rust/crates/fs_extra-1.3.0.crate) = 31298
SHA256 (rust/crates/fsevent-sys-4.1.0.crate) = 76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2
@@ -385,8 +385,8 @@ SHA256 (rust/crates/httpdate-1.0.3.crate) = df3b46402a9d5adb4c86a0cf463f42e19994
SIZE (rust/crates/httpdate-1.0.3.crate) = 10639
SHA256 (rust/crates/hyper-0.14.32.crate) = 41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7
SIZE (rust/crates/hyper-0.14.32.crate) = 199622
-SHA256 (rust/crates/hyper-1.6.0.crate) = cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80
-SIZE (rust/crates/hyper-1.6.0.crate) = 153923
+SHA256 (rust/crates/hyper-1.7.0.crate) = eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e
+SIZE (rust/crates/hyper-1.7.0.crate) = 157006
SHA256 (rust/crates/hyper-named-pipe-0.1.0.crate) = 73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278
SIZE (rust/crates/hyper-named-pipe-0.1.0.crate) = 8522
SHA256 (rust/crates/hyper-rustls-0.24.2.crate) = ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590
@@ -419,8 +419,8 @@ SHA256 (rust/crates/icu_provider-2.0.0.crate) = 03c80da27b5f4187909049ee2d72f276
SIZE (rust/crates/icu_provider-2.0.0.crate) = 50966
SHA256 (rust/crates/ident_case-1.0.1.crate) = b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39
SIZE (rust/crates/ident_case-1.0.1.crate) = 3492
-SHA256 (rust/crates/idna-1.0.3.crate) = 686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e
-SIZE (rust/crates/idna-1.0.3.crate) = 142515
+SHA256 (rust/crates/idna-1.1.0.crate) = 3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de
+SIZE (rust/crates/idna-1.1.0.crate) = 148747
SHA256 (rust/crates/idna_adapter-1.2.1.crate) = 3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344
SIZE (rust/crates/idna_adapter-1.2.1.crate) = 10389
SHA256 (rust/crates/image-0.25.6.crate) = db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a
@@ -617,8 +617,8 @@ SHA256 (rust/crates/pem-3.0.5.crate) = 38af38e8470ac9dee3ce1bae1af9c1671fffc44dd
SIZE (rust/crates/pem-3.0.5.crate) = 18140
SHA256 (rust/crates/pem-rfc7468-0.7.0.crate) = 88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412
SIZE (rust/crates/pem-rfc7468-0.7.0.crate) = 24159
-SHA256 (rust/crates/percent-encoding-2.3.1.crate) = e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e
-SIZE (rust/crates/percent-encoding-2.3.1.crate) = 10235
+SHA256 (rust/crates/percent-encoding-2.3.2.crate) = 9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220
+SIZE (rust/crates/percent-encoding-2.3.2.crate) = 11583
SHA256 (rust/crates/pin-project-lite-0.2.16.crate) = 3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b
SIZE (rust/crates/pin-project-lite-0.2.16.crate) = 30504
SHA256 (rust/crates/pin-utils-0.1.0.crate) = 8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184
@@ -691,8 +691,8 @@ SHA256 (rust/crates/ref-cast-1.0.24.crate) = 4a0ae411dbe946a674d89546582cea4ba2b
SIZE (rust/crates/ref-cast-1.0.24.crate) = 15252
SHA256 (rust/crates/ref-cast-impl-1.0.24.crate) = 1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7
SIZE (rust/crates/ref-cast-impl-1.0.24.crate) = 9968
-SHA256 (rust/crates/regex-1.11.1.crate) = b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191
-SIZE (rust/crates/regex-1.11.1.crate) = 254170
+SHA256 (rust/crates/regex-1.11.2.crate) = 23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912
+SIZE (rust/crates/regex-1.11.2.crate) = 166265
SHA256 (rust/crates/regex-automata-0.1.10.crate) = 6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132
SIZE (rust/crates/regex-automata-0.1.10.crate) = 114533
SHA256 (rust/crates/regex-automata-0.4.9.crate) = 809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908
@@ -779,8 +779,8 @@ SHA256 (rust/crates/serde-1.0.219.crate) = 5f0e2c6ed6606019b4e29e69dbaba95b11854
SIZE (rust/crates/serde-1.0.219.crate) = 78983
SHA256 (rust/crates/serde_derive-1.0.219.crate) = 5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00
SIZE (rust/crates/serde_derive-1.0.219.crate) = 57798
-SHA256 (rust/crates/serde_json-1.0.142.crate) = 030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7
-SIZE (rust/crates/serde_json-1.0.142.crate) = 155363
+SHA256 (rust/crates/serde_json-1.0.143.crate) = d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a
+SIZE (rust/crates/serde_json-1.0.143.crate) = 155342
SHA256 (rust/crates/serde_path_to_error-0.1.17.crate) = 59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a
SIZE (rust/crates/serde_path_to_error-0.1.17.crate) = 17662
SHA256 (rust/crates/serde_repr-0.1.20.crate) = 175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c
@@ -893,12 +893,12 @@ SHA256 (rust/crates/testcontainers-modules-0.12.1.crate) = eac95cde96549fc19c6bf
SIZE (rust/crates/testcontainers-modules-0.12.1.crate) = 156916
SHA256 (rust/crates/thiserror-1.0.69.crate) = b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52
SIZE (rust/crates/thiserror-1.0.69.crate) = 22198
-SHA256 (rust/crates/thiserror-2.0.14.crate) = 0b0949c3a6c842cbde3f1686d6eea5a010516deb7085f79db747562d4102f41e
-SIZE (rust/crates/thiserror-2.0.14.crate) = 29021
+SHA256 (rust/crates/thiserror-2.0.16.crate) = 3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0
+SIZE (rust/crates/thiserror-2.0.16.crate) = 29095
SHA256 (rust/crates/thiserror-impl-1.0.69.crate) = 4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1
SIZE (rust/crates/thiserror-impl-1.0.69.crate) = 18365
-SHA256 (rust/crates/thiserror-impl-2.0.14.crate) = cc5b44b4ab9c2fdd0e0512e6bece8388e214c0749f5862b114cc5b7a25daf227
-SIZE (rust/crates/thiserror-impl-2.0.14.crate) = 21219
+SHA256 (rust/crates/thiserror-impl-2.0.16.crate) = 6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960
+SIZE (rust/crates/thiserror-impl-2.0.16.crate) = 21214
SHA256 (rust/crates/thread_local-1.1.9.crate) = f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185
SIZE (rust/crates/thread_local-1.1.9.crate) = 19315
SHA256 (rust/crates/tiff-0.9.1.crate) = ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e
@@ -979,8 +979,8 @@ SHA256 (rust/crates/unicode-properties-0.1.3.crate) = e70f2a8b45122e719eb623c018
SIZE (rust/crates/unicode-properties-0.1.3.crate) = 42252
SHA256 (rust/crates/untrusted-0.9.0.crate) = 8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1
SIZE (rust/crates/untrusted-0.9.0.crate) = 14447
-SHA256 (rust/crates/url-2.5.4.crate) = 32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60
-SIZE (rust/crates/url-2.5.4.crate) = 81097
+SHA256 (rust/crates/url-2.5.7.crate) = 08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b
+SIZE (rust/crates/url-2.5.7.crate) = 87907
SHA256 (rust/crates/urlencoding-2.1.3.crate) = daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da
SIZE (rust/crates/urlencoding-2.1.3.crate) = 6538
SHA256 (rust/crates/utf-8-0.7.6.crate) = 09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9
@@ -1143,8 +1143,8 @@ SHA256 (rust/crates/winnow-0.7.11.crate) = 74c7b26e3480b707944fc872477815d29a8e4
SIZE (rust/crates/winnow-0.7.11.crate) = 174175
SHA256 (rust/crates/winreg-0.50.0.crate) = 524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1
SIZE (rust/crates/winreg-0.50.0.crate) = 29703
-SHA256 (rust/crates/wiremock-0.6.4.crate) = a2b8b99d4cdbf36b239a9532e31fe4fb8acc38d1897c1761e161550a7dc78e6a
-SIZE (rust/crates/wiremock-0.6.4.crate) = 58967
+SHA256 (rust/crates/wiremock-0.6.5.crate) = 08db1edfb05d9b3c1542e521aea074442088292f00b5f28e435c714a98f85031
+SIZE (rust/crates/wiremock-0.6.5.crate) = 60561
SHA256 (rust/crates/wit-bindgen-rt-0.39.0.crate) = 6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1
SIZE (rust/crates/wit-bindgen-rt-0.39.0.crate) = 12241
SHA256 (rust/crates/writeable-0.6.1.crate) = ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb
@@ -1185,5 +1185,5 @@ SHA256 (rust/crates/zune-inflate-0.2.54.crate) = 73ab332fe2f6680068f3582b16a24f9
SIZE (rust/crates/zune-inflate-0.2.54.crate) = 37973
SHA256 (rust/crates/zune-jpeg-0.4.17.crate) = 0f6fe2e33d02a98ee64423802e16df3de99c43e5cf5ff983767e1128b394c8ac
SIZE (rust/crates/zune-jpeg-0.4.17.crate) = 65784
-SHA256 (readur-readur-v2.5.5_GH0.tar.gz) = feddffa5c93385dcee029db22fba8514b02c01632797ef29a0044612bcd80b13
-SIZE (readur-readur-v2.5.5_GH0.tar.gz) = 12349276
+SHA256 (readur-readur-v2.5.6_GH0.tar.gz) = af8aebef4a5e955cb46a1af0ac3e5f36e96d7d724dc342ee82c1383f7b855149
+SIZE (readur-readur-v2.5.6_GH0.tar.gz) = 12566666
diff --git a/deskutils/readur/pkg-plist b/deskutils/readur/pkg-plist
index 9e06104dddaf..108428e1e0f4 100644
--- a/deskutils/readur/pkg-plist
+++ b/deskutils/readur/pkg-plist
@@ -5,6 +5,6 @@ bin/readur
%%WWWDIR%%/readur.png
%%WWWDIR%%/index.html
@dir %%WWWDIR%%/assets
-%%WWWDIR%%/assets/index-C700-JQP.js
+%%WWWDIR%%/assets/index-Dj5jAB9U.js
%%WWWDIR%%/assets/index-C5nToalm.css
@dir(%%USER%%,%%GROUP%%,0700) %%HOMEDIR%%
diff --git a/deskutils/remind/Makefile b/deskutils/remind/Makefile
index 04d302f64165..3417e5b287d7 100644
--- a/deskutils/remind/Makefile
+++ b/deskutils/remind/Makefile
@@ -1,5 +1,5 @@
PORTNAME= remind
-DISTVERSION= 05.05.00
+DISTVERSION= 06.00.01
CATEGORIES= deskutils
# upstream moves distfiles to OLD once a new release appears
MASTER_SITES= https://dianne.skoll.ca/projects/remind/download/ \
diff --git a/deskutils/remind/distinfo b/deskutils/remind/distinfo
index 09a7553c4f4e..3558196d7ed7 100644
--- a/deskutils/remind/distinfo
+++ b/deskutils/remind/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1754049061
-SHA256 (remind-05.05.00.tar.gz) = cc57fe8399cdc443344b9d1413bc31d47732156438bdd1d3d82d1a833ffacbed
-SIZE (remind-05.05.00.tar.gz) = 8975080
+TIMESTAMP = 1756286386
+SHA256 (remind-06.00.01.tar.gz) = 0705b6f700d6cd7b0f59af106495f7dd726ea14b641d9d8408f532fb28d2f007
+SIZE (remind-06.00.01.tar.gz) = 8998734
diff --git a/devel/dbus/Makefile b/devel/dbus/Makefile
index 1ecf854e8588..9ca1aa15e5d7 100644
--- a/devel/dbus/Makefile
+++ b/devel/dbus/Makefile
@@ -1,6 +1,6 @@
PORTNAME= dbus
DISTVERSION= 1.16.2
-PORTREVISION= 3
+PORTREVISION= 4
PORTEPOCH= 1
CATEGORIES= devel gnome
MASTER_SITES= https://dbus.freedesktop.org/releases/dbus/
diff --git a/devel/dbus/files/patch-dbus_dbus-transport-socket.c b/devel/dbus/files/patch-dbus_dbus-transport-socket.c
new file mode 100644
index 000000000000..15a5d2eedcd0
--- /dev/null
+++ b/devel/dbus/files/patch-dbus_dbus-transport-socket.c
@@ -0,0 +1,15 @@
+https://gitlab.freedesktop.org/dbus/dbus/-/merge_requests/526
+
+--- dbus/dbus-transport-socket.c.orig 2025-02-27 16:29:06 UTC
++++ dbus/dbus-transport-socket.c
+@@ -1208,8 +1208,8 @@ socket_do_iteration (DBusTransport *transport,
+ do_io_error (transport);
+ else
+ {
+- dbus_bool_t need_read = (poll_fd.revents & _DBUS_POLLIN) > 0;
+- dbus_bool_t need_write = (poll_fd.revents & _DBUS_POLLOUT) > 0;
++ dbus_bool_t need_read = (poll_fd.revents & (_DBUS_POLLIN | _DBUS_POLLHUP)) > 0;
++ dbus_bool_t need_write = (poll_fd.revents & (_DBUS_POLLOUT | _DBUS_POLLHUP)) > 0;
+ dbus_bool_t authentication_completed;
+
+ _dbus_verbose ("in iteration, need_read=%d need_write=%d\n",
diff --git a/devel/gcli/Makefile b/devel/gcli/Makefile
index c8a88bd6f302..1c981d9f9394 100644
--- a/devel/gcli/Makefile
+++ b/devel/gcli/Makefile
@@ -1,5 +1,5 @@
PORTNAME= gcli
-DISTVERSION= 2.8.0
+DISTVERSION= 2.9.0
CATEGORIES= devel net
MASTER_SITES= https://herrhotzenplotz.de/gcli/releases/gcli-${DISTVERSION}/
@@ -10,7 +10,8 @@ WWW= https://herrhotzenplotz.de/gcli/
LICENSE= BSD2CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE
-LIB_DEPENDS= libcurl.so:ftp/curl
+LIB_DEPENDS= libcurl.so:ftp/curl \
+ libpdjson.so:textproc/pdjson
TEST_DEPENDS= kyua:devel/kyua
USES= libtool pathfix pkgconfig ssl tar:xz
diff --git a/devel/gcli/distinfo b/devel/gcli/distinfo
index fe18a3234c8d..0eb95c0db44d 100644
--- a/devel/gcli/distinfo
+++ b/devel/gcli/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1748258074
-SHA256 (gcli-2.8.0.tar.xz) = b3ee6eb0d694f47f15a6d6e4f5adc824059e3f6836dfe95e74bd3a0cf92f05ec
-SIZE (gcli-2.8.0.tar.xz) = 373532
+TIMESTAMP = 1756285649
+SHA256 (gcli-2.9.0.tar.xz) = 3753c0180c92ef71526ab015403f19fc359d4528cfd29fefdb2dbac0e9eb757b
+SIZE (gcli-2.9.0.tar.xz) = 381808
diff --git a/devel/gcli/pkg-plist b/devel/gcli/pkg-plist
index 71dae9ba923c..bbefa0d95885 100644
--- a/devel/gcli/pkg-plist
+++ b/devel/gcli/pkg-plist
@@ -14,5 +14,6 @@ share/man/man1/gcli-releases.1.gz
share/man/man1/gcli-repos.1.gz
share/man/man1/gcli-snippets.1.gz
share/man/man1/gcli-status.1.gz
+share/man/man1/gcli-tutorial.1.gz
share/man/man1/gcli.1.gz
share/man/man5/gcli.5.gz
diff --git a/devel/generate/Makefile b/devel/generate/Makefile
index ae6ba16946d3..715495acaba3 100644
--- a/devel/generate/Makefile
+++ b/devel/generate/Makefile
@@ -1,7 +1,7 @@
PORTNAME= generate
-DISTVERSION= 3.0
+DISTVERSION= 3.1
CATEGORIES= devel
-MASTER_SITES= http://www.druid.net/darcy/
+MASTER_SITES= https://www.druid.net/darcy/
MAINTAINER= darcy@druid.net
COMMENT= Simple text pre-processor
@@ -16,13 +16,12 @@ USES= gmake tar:tgz
MAKE_ARGS= BINDIR=${STAGEDIR}${PREFIX}/bin \
MANDIR=${STAGEDIR}${PREFIX}/share/man
+TEST_TARGET= test
CONFLICTS_INSTALL= julius php*-pear-Text_Highlighter
PLIST_FILES= bin/generate bin/rgenerate share/man/man1/generate.1.gz
-TEST_TARGET= test
-
post-install:
${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/*
diff --git a/devel/generate/distinfo b/devel/generate/distinfo
index 2e89e0ec6902..62e4ba1ef1bf 100644
--- a/devel/generate/distinfo
+++ b/devel/generate/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1735396348
-SHA256 (generate-3.0.tgz) = c680e6285af499aaaa2e1c9531a4974dea612ea20b52b49751b7a99ea04798d5
-SIZE (generate-3.0.tgz) = 35167
+TIMESTAMP = 1756470000
+SHA256 (generate-3.1.tgz) = 979f068b52760dfdc1ab63e345b2da0ba4d2be53c1d8df26bc9f3c53880fc48d
+SIZE (generate-3.1.tgz) = 34342
diff --git a/devel/generate/files/patch-generate.c b/devel/generate/files/patch-generate.c
deleted file mode 100644
index 0176994c0f8d..000000000000
--- a/devel/generate/files/patch-generate.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- generate.c.orig 2025-01-16 13:10:40 UTC
-+++ generate.c
-@@ -151,7 +151,7 @@ fatal(const char *s,...)
- {
- va_list argptr;
-
-- if (infile) fprintf(stderr, "generate: file %s line %ld: ", infile->name, infile->xline);
-+ if (infile) fprintf(stderr, "generate: file %s line %zu: ", infile->name, infile->xline);
- else fprintf(stderr, "generate: ");
-
- va_start(argptr, s);
diff --git a/devel/jjui/Makefile b/devel/jjui/Makefile
index d4e9013089cf..b8dff520511a 100644
--- a/devel/jjui/Makefile
+++ b/devel/jjui/Makefile
@@ -1,6 +1,6 @@
PORTNAME= jjui
DISTVERSIONPREFIX= v
-DISTVERSION= 0.9.1
+DISTVERSION= 0.9.2
CATEGORIES= devel
MAINTAINER= hoanga@gmail.com
diff --git a/devel/jjui/distinfo b/devel/jjui/distinfo
index 7c7ebab4ed80..9578e6d72e6a 100644
--- a/devel/jjui/distinfo
+++ b/devel/jjui/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1754511832
-SHA256 (go/devel_jjui/jjui-v0.9.1/v0.9.1.mod) = 872b7e3af8e699ca17daf845617cac698fd1231403914bceb6619b45284bf12c
-SIZE (go/devel_jjui/jjui-v0.9.1/v0.9.1.mod) = 1663
-SHA256 (go/devel_jjui/jjui-v0.9.1/v0.9.1.zip) = cb214c0e5e5fe5d79bd5139bf47e6d765644fc091d77c319d2c3573e1479ea9f
-SIZE (go/devel_jjui/jjui-v0.9.1/v0.9.1.zip) = 150293
+TIMESTAMP = 1756480805
+SHA256 (go/devel_jjui/jjui-v0.9.2/v0.9.2.mod) = 872b7e3af8e699ca17daf845617cac698fd1231403914bceb6619b45284bf12c
+SIZE (go/devel_jjui/jjui-v0.9.2/v0.9.2.mod) = 1663
+SHA256 (go/devel_jjui/jjui-v0.9.2/v0.9.2.zip) = 21dc5464c797c71da03731add4b88b96a7594d7ad3b2d763ab2314f6f1fdf0d8
+SIZE (go/devel_jjui/jjui-v0.9.2/v0.9.2.zip) = 153928
diff --git a/devel/wf-config/Makefile b/devel/wf-config/Makefile
index e1ddcb254118..4a04de05a2dd 100644
--- a/devel/wf-config/Makefile
+++ b/devel/wf-config/Makefile
@@ -1,10 +1,9 @@
PORTNAME= wf-config
DISTVERSIONPREFIX= v
-DISTVERSION= 0.9.0
-PORTREVISION= 1
+DISTVERSION= 0.10.0
CATEGORIES= devel
-MAINTAINER= jbeich@FreeBSD.org
+MAINTAINER= ports@FreeBSD.org
COMMENT= Library for managing configuration files, written for wayfire
WWW= https://wayfire.org/
diff --git a/devel/wf-config/distinfo b/devel/wf-config/distinfo
index e3f1efb30475..780848944efd 100644
--- a/devel/wf-config/distinfo
+++ b/devel/wf-config/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1718781348
-SHA256 (WayfireWM-wf-config-v0.9.0_GH0.tar.gz) = 973a47795d3397d281d89c561903867f691c9fe8c3d141ba887afd12902c790d
-SIZE (WayfireWM-wf-config-v0.9.0_GH0.tar.gz) = 50246
+TIMESTAMP = 1750573831
+SHA256 (WayfireWM-wf-config-v0.10.0_GH0.tar.gz) = 4264edf9f5f5ff9bccaee1ab3f5b2613a0db526bc90c15d7c82eb05a3fc81307
+SIZE (WayfireWM-wf-config-v0.10.0_GH0.tar.gz) = 51553
diff --git a/devel/wf-config/pkg-plist b/devel/wf-config/pkg-plist
index a3c741960162..88d3a973f858 100644
--- a/devel/wf-config/pkg-plist
+++ b/devel/wf-config/pkg-plist
@@ -7,6 +7,7 @@ include/wayfire/config/option.hpp
include/wayfire/config/section.hpp
include/wayfire/config/types.hpp
include/wayfire/config/xml.hpp
+include/wayfire/nonstd/safe-list.hpp
include/wayfire/util/duration.hpp
include/wayfire/util/log.hpp
include/wayfire/util/stringify.hpp
diff --git a/emulators/Makefile b/emulators/Makefile
index 3940ba358293..bdd2eb0d4009 100644
--- a/emulators/Makefile
+++ b/emulators/Makefile
@@ -158,6 +158,7 @@
SUBDIR += virtualbox-ose
SUBDIR += virtualbox-ose-70
SUBDIR += virtualbox-ose-71
+ SUBDIR += virtualbox-ose-72
SUBDIR += virtualbox-ose-additions
SUBDIR += virtualbox-ose-additions-legacy
SUBDIR += virtualbox-ose-additions-nox11
@@ -165,11 +166,13 @@
SUBDIR += virtualbox-ose-kmod
SUBDIR += virtualbox-ose-kmod-70
SUBDIR += virtualbox-ose-kmod-71
+ SUBDIR += virtualbox-ose-kmod-72
SUBDIR += virtualbox-ose-kmod-legacy
SUBDIR += virtualbox-ose-legacy
SUBDIR += virtualbox-ose-nox11
SUBDIR += virtualbox-ose-nox11-70
SUBDIR += virtualbox-ose-nox11-71
+ SUBDIR += virtualbox-ose-nox11-72
SUBDIR += virtualbox-ose-nox11-legacy
SUBDIR += visualboyadvance-m
SUBDIR += vmips
diff --git a/emulators/ares/Makefile b/emulators/ares/Makefile
index d2e59fa9646a..0ce6c3aaf5c9 100644
--- a/emulators/ares/Makefile
+++ b/emulators/ares/Makefile
@@ -1,10 +1,10 @@
PORTNAME= ares
DISTVERSIONPREFIX= v
-DISTVERSION= 145
-PORTREVISION= 1
+DISTVERSION= 146
CATEGORIES= emulators
MASTER_SITES= https://github.com/${PORTNAME}-emulator/${PORTNAME}/releases/download/${DISTVERSIONFULL}/
DISTNAME= ${PORTNAME}-source
+DIST_SUBDIR= ${PORTNAME}-${DISTVERSION}
MAINTAINER= bsdcode@disroot.org
COMMENT= Multi-system emulator
@@ -29,10 +29,15 @@ CMAKE_OFF= ARES_BUILD_LOCAL \
ARES_BUNDLE_SHADERS \
ARES_ENABLE_MINIMUM_CPU
-EXTRACT_AFTER_ARGS= --exclude thirdparty/librashader \
+EXTRACT_AFTER_ARGS= --exclude thirdparty/GL \
+ --exclude thirdparty/KHR \
+ --exclude thirdparty/libchdr \
+ --exclude thirdparty/librashader \
+ --exclude thirdparty/sse2neon.h \
+ --exclude thirdparty/xxhash.h \
--no-same-owner --no-same-permissions
-WRKSRC= ${WRKDIR}/${PORTNAME}-${DISTVERSION}
+NO_WRKSUBDIR= yes
OPTIONS_DEFINE= CHD SDL TOOLS
OPTIONS_DEFAULT= A26 ALSA AO CHD CV FC GB GBA LIBRASHADER \
@@ -92,8 +97,9 @@ ALSA_CMAKE_BOOL= ARES_ENABLE_ALSA
AO_LIB_DEPENDS= libao.so:audio/libao
AO_CMAKE_BOOL= ARES_ENABLE_AO
-CHD_CMAKE_BOOL= ARES_ENABLE_CHD \
- WITH_SYSTEM_ZLIB
+CHD_LIB_DEPENDS= libchdr.so:devel/libchdr
+CHD_USES= localbase
+CHD_CMAKE_BOOL= ARES_ENABLE_CHD
CV_VARS= _CORES+=cv
@@ -115,6 +121,8 @@ LIBRETRO_RUN_DEPENDS= ${_LIBRETRO_BR_DEPENDS}
LTO_CMAKE_BOOL= ENABLE_IPO
+MD_BUILD_DEPENDS= xxhash>0:devel/xxhash
+MD_USES= localbase
MD_VARS= _CORES+=md
MSX_VARS= _CORES+=msx
@@ -124,8 +132,12 @@ MS_VARS= _CORES+=ms
MYVISION_VARS= _CORES+=myvision
_N64_BR_DEPENDS= vulkan-loader>0:graphics/vulkan-loader
-N64_BUILD_DEPENDS= ${_N64_BR_DEPENDS}
+_N64_BUILD_DEPENDS_aarch64= sse2neon>0:devel/sse2neon
+N64_BUILD_DEPENDS= ${_N64_BR_DEPENDS} \
+ ${_N64_BUILD_DEPENDS_${ARCH}} \
+ xxhash>0:devel/xxhash
N64_RUN_DEPENDS= ${_N64_BR_DEPENDS}
+N64_USES= localbase
N64_VARS= _CORES+=n64
NGP_VARS= _CORES+=ngp
@@ -157,8 +169,6 @@ SG_VARS= _CORES+=sg
SPEC_VARS= _CORES+=spec
-# https://github.com/ares-emulator/ares/issues/2090
-TOOLS_IMPLIES= GBA MD NG SFC
TOOLS_CMAKE_BOOL= ARES_BUILD_OPTIONAL_TARGETS
UDEV_LIB_DEPENDS= libudev.so:devel/libudev-devd
@@ -168,6 +178,20 @@ USBHID_CMAKE_BOOL= ARES_ENABLE_USBHID
WS_VARS= _CORES+=ws
+.include <bsd.port.options.mk>
+
+.if ${PORT_OPTIONS:MTOOLS} && (${PORT_OPTIONS:MGBA} || ${PORT_OPTIONS:MSFC})
+PLIST_SUB+= TOOLSARM7TDMI=""
+.else
+PLIST_SUB+= TOOLSARM7TDMI="@comment "
+.endif
+
+.if ${PORT_OPTIONS:MTOOLS} && (${PORT_OPTIONS:MMD} || ${PORT_OPTIONS:MNG})
+PLIST_SUB+= TOOLSM68000=""
+.else
+PLIST_SUB+= TOOLSM68000="@comment "
+.endif
+
post-patch:
${REINPLACE_CMD} 's|/usr/local|${LOCALBASE}|g' \
${WRKSRC}/cmake/finders/*
diff --git a/emulators/ares/distinfo b/emulators/ares/distinfo
index 6d6b5f6a7b60..5cdf41f6260d 100644
--- a/emulators/ares/distinfo
+++ b/emulators/ares/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1752185303
-SHA256 (ares-source.tar.gz) = 7a76acf87cca2903552683347fdf6f1cd06f436fa4e0c247108688785cbbd14b
-SIZE (ares-source.tar.gz) = 8967048
+TIMESTAMP = 1756454355
+SHA256 (ares-146/ares-source.tar.gz) = 0f0b878c19ce09dab57584235e9c639c4c14a0bd1de6cef50238f006bd797bf1
+SIZE (ares-146/ares-source.tar.gz) = 9021617
diff --git a/emulators/ares/files/patch-thirdparty_CMakeLists.txt b/emulators/ares/files/patch-thirdparty_CMakeLists.txt
new file mode 100644
index 000000000000..0a9b749623bd
--- /dev/null
+++ b/emulators/ares/files/patch-thirdparty_CMakeLists.txt
@@ -0,0 +1,75 @@
+--- thirdparty/CMakeLists.txt.orig 2025-08-27 21:41:50 UTC
++++ thirdparty/CMakeLists.txt
+@@ -7,55 +7,9 @@ if(ARES_ENABLE_CHD)
+ option(ARES_ENABLE_CHD "Enable CHD format support via libchdr" ON)
+
+ if(ARES_ENABLE_CHD)
+- # lzma
+- add_subdirectory(libchdr/deps/lzma-24.05 EXCLUDE_FROM_ALL)
+- list(APPEND CHDR_LIBS lzma)
+- list(APPEND CHDR_INCLUDES lzma)
+-
+- if(OS_MACOS)
+- option(WITH_SYSTEM_ZLIB "Use system zlib" ON)
+- endif()
+- # zlib
+- if(WITH_SYSTEM_ZLIB)
+- find_package(ZLIB REQUIRED)
+- list(APPEND PLATFORM_LIBS ZLIB::ZLIB)
+- else()
+- option(ZLIB_BUILD_EXAMPLES "Enable Zlib Examples" OFF)
+- add_subdirectory(libchdr/deps/zlib-1.3.1 EXCLUDE_FROM_ALL)
+- set_target_properties(
+- zlibstatic
+- PROPERTIES POSITION_INDEPENDENT_CODE ON FOLDER thirdparty PREFIX ""
+- )
+- list(APPEND CHDR_LIBS zlibstatic)
+- endif()
+-
+- # zstd
+- option(ZSTD_BUILD_SHARED "BUILD SHARED LIBRARIES" OFF)
+- option(ZSTD_BUILD_PROGRAMS "BUILD PROGRAMS" OFF)
+- add_subdirectory(libchdr/deps/zstd-1.5.6/build/cmake EXCLUDE_FROM_ALL)
+- list(APPEND CHDR_LIBS libzstd_static)
+- #--------------------------------------------------
+- # chdr
+- #--------------------------------------------------
+-
+- set(
+- CHDR_SOURCES
+- libchdr/src/libchdr_bitstream.c
+- libchdr/src/libchdr_cdrom.c
+- libchdr/src/libchdr_chd.c
+- libchdr/src/libchdr_flac.c
+- libchdr/src/libchdr_huffman.c
+- )
+-
+- list(APPEND CHDR_INCLUDES ${CMAKE_CURRENT_BINARY_DIR}/libchdr/include)
+-
+- add_library(chdr-static STATIC ${CHDR_SOURCES})
+- target_include_directories(chdr-static PUBLIC ${CHDR_INCLUDES} PUBLIC libchdr/include)
+- target_link_libraries(chdr-static PRIVATE ${CHDR_LIBS} ${PLATFORM_LIBS})
+- target_compile_options(
+- chdr-static
+- PRIVATE $<$<CXX_COMPILER_ID:Clang,AppleClang>:-Wno-unreachable-code -Wno-unused-function>
+- )
++ find_package(PkgConfig REQUIRED)
++ pkg_check_modules(libchdr REQUIRED IMPORTED_TARGET GLOBAL libchdr)
++ add_library(chdr-static ALIAS PkgConfig::libchdr)
+ endif()
+
+ add_library(
+@@ -111,12 +65,4 @@ set_target_properties(sljit PROPERTIES FOLDER thirdpar
+ set_target_properties(ymfm PROPERTIES FOLDER thirdparty PREFIX "")
+ set_target_properties(tzxfile PROPERTIES FOLDER thirdparty PREFIX "")
+ set_target_properties(sljit PROPERTIES FOLDER thirdparty PREFIX "")
+-if(ARES_ENABLE_CHD)
+- set_target_properties(chdr-static PROPERTIES FOLDER thirdparty PREFIX "")
+- if(NOT WITH_SYSTEM_ZLIB)
+- set_target_properties(zlib PROPERTIES FOLDER thirdparty PREFIX "")
+- endif()
+- set_target_properties(lzma PROPERTIES FOLDER thirdparty PREFIX "")
+- set_target_properties(libzstd_static PROPERTIES FOLDER thirdparty PREFIX "")
+-endif()
+ set_target_properties(qon PROPERTIES FOLDER thirdparty PREFIX "")
+\ No newline at end of file
diff --git a/emulators/ares/pkg-descr b/emulators/ares/pkg-descr
index 1d1df5876394..51eba6b65b62 100644
--- a/emulators/ares/pkg-descr
+++ b/emulators/ares/pkg-descr
@@ -3,14 +3,15 @@ preservation. It is a descendant of the emulators higan and bsnes. It's source
code is structured to be maximally readable and self-documenting.
ares supports the following systems: Arcade, WonderSwan, WonderSwan Color,
-Pocket Challenge V2, ColecoVision, PC-Engine / TurboGrafx, SuperGrafx, My
-Vision, NES / Famicom, Famicom Disk System, SNES / Super Famicom, Satellaview,
-Sufami Turbo, Nintendo 64, Nintendo 64DD, Game Boy, Game Boy Color, Game Boy
-Advance, SG-1000, Master System / Mark III, Mega Drive / Genesis, Mega CD, 32X,
-Game Gear, Neo Geo Pocket, Neo Geo Pocket Color
+Pocket Challenge V2, ColecoVision, PC-Engine / TurboGrafx, PC-Engine SuperGrafx,
+My Vision, NES / Famicom, Famicom Disk System, Game Boy, SNES / Super Famicom,
+Satellaview, Nintendo 64, SuFami Turbo, Game Boy Color, Nintendo 64DD, Game Boy
+Advance, SG-1000, Master System / Mark III, Mega Drive / Genesis, Game Gear,
+Mega CD, 32X, Neo Geo Pocket, Neo Geo Pocket Color
ares has experimental support for the following systems: Atari 2600, MSX, MSX2,
-PC-Engine CD / TurboGrafx CD, ZX Spectrum, Neo Geo (AES/MVS), PlayStation
+PC-Engine CD / TurboGrafx CD, LaserActive, ZX Spectrum, Neo Geo (AES/MVS),
+PlayStation
ares has all the features one would expect from a great emulator system: native
multi-platform UI, dynamic rate control, save states, run-ahead, rewind and
diff --git a/emulators/ares/pkg-plist b/emulators/ares/pkg-plist
index 035623ec753e..476ac9756832 100644
--- a/emulators/ares/pkg-plist
+++ b/emulators/ares/pkg-plist
@@ -1,8 +1,8 @@
bin/ares
-%%TOOLS%%bin/arm7tdmi
+%%TOOLSARM7TDMI%%bin/arm7tdmi
%%TOOLS%%bin/genius
%%TOOLS%%bin/i8080
-%%TOOLS%%bin/m68000
+%%TOOLSM68000%%bin/m68000
%%TOOLS%%bin/mame2bml
%%TOOLS%%bin/mia
bin/sourcery
diff --git a/emulators/virtualbox-ose-72/Makefile b/emulators/virtualbox-ose-72/Makefile
new file mode 100644
index 000000000000..3110b3efe1aa
--- /dev/null
+++ b/emulators/virtualbox-ose-72/Makefile
@@ -0,0 +1,426 @@
+PORTNAME= virtualbox-ose
+DISTVERSION= 7.2.0
+PORTREVISION?= 0
+CATEGORIES= emulators
+MASTER_SITES= https://download.virtualbox.org/virtualbox/${DISTVERSION}/:src \
+ LOCAL/vvd:docs
+PKGNAMESUFFIX?= -72
+DISTFILES= VirtualBox-${DISTVERSION}${EXTRACT_SUFX}:src \
+ VirtualBox-docs-${DISTVERSION}${EXTRACT_SUFX}:docs
+EXTRACT_ONLY= VirtualBox-${DISTVERSION}${EXTRACT_SUFX} \
+ VirtualBox-docs-${DISTVERSION}${EXTRACT_SUFX}
+
+MAINTAINER= vbox@FreeBSD.org
+COMMENT= General-purpose full virtualizer for x86 hardware
+WWW= https://www.virtualbox.org/
+
+LICENSE= GPLv2
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+ONLY_FOR_ARCHS= amd64
+
+BUILD_DEPENDS= gtar:archivers/gtar \
+ kmk:devel/kBuild \
+ yasm:devel/yasm \
+ xsltproc:textproc/libxslt
+LIB_DEPENDS= libpng.so:graphics/png \
+ libcurl.so:ftp/curl
+RUN_DEPENDS= ${LOCALBASE}/etc/rc.d/vboxnet:emulators/virtualbox-ose-kmod-72
+
+USES= compiler:c++17-lang cpe gnome iconv pkgconfig qt:6 ssl tar:bzip2
+CPE_VENDOR= oracle
+CPE_PRODUCT= vm_virtualbox
+USE_BINUTILS= yes
+USE_GNOME= libxml2
+USE_QT= tools:build
+USE_RC_SUBR= vboxheadless vboxwatchdog
+
+HAS_CONFIGURE= yes
+CONFIGURE_ARGS= --disable-java --passive-mesa --disable-docs
+CONFIGURE_ARGS+= --with-gcc="${CC}" --with-g++="${CXX}"
+
+CONFLICTS_INSTALL= virtualbox-ose-legacy \
+ virtualbox-ose-nox11-legacy \
+ virtualbox-ose \
+ virtualbox-ose-nox11 \
+ virtualbox-ose-70 \
+ virtualbox-ose-nox11-70 \
+ virtualbox-ose-71 \
+ virtualbox-ose-nox11-71
+
+PORTSCOUT= limit:^7\.2\.
+SUB_FILES= pkg-message
+SUB_LIST= VBOXDIR=${VBOX_DIR} \
+ VBOX_ETC=${VBOX_ETC} \
+ VBOXGROUP=${VBOXGROUP} \
+ VBOXUSER=${VBOXUSER} \
+ VBOXWSUSER=${VBOXWSUSER}
+
+WRKSRC= ${WRKDIR}/VirtualBox-${DISTVERSION}
+
+VBOXUSER?= vboxusers
+VBOXWSUSER?= vboxusers
+VBOXGROUP?= vboxusers
+USERS= ${VBOXUSER}
+GROUPS= ${VBOXGROUP}
+VBOX_DIR= ${PREFIX}/${VBOX_DIR_REL}
+VBOX_DIR_REL= lib/virtualbox
+VBOX_ETC= ${PREFIX}/etc/vbox
+VBOX_LINKS= VBoxVRDP
+VBOX_PROGS= VBoxAutostart VBoxBalloonCtrl VBoxBugReport VBoxHeadless \
+ VBoxManage
+VBOX_UTILS= VBoxExtPackHelperApp VBoxNetAdpCtl VBoxNetDHCP VBoxNetNAT \
+ VBoxSVC
+
+PLIST_SUB= GUEST_VER=${DISTVERSION} \
+ PYTHON_VERU=${PYTHON_VER:S/./_/}${PYTHON_ABIVER} \
+ VBOXGROUP=${VBOXGROUP}
+
+SLAVE_PORT?= no
+
+OPTIONS_DEFINE= AIO ALSA DBUS DEBUG DOCS GUESTADDITIONS NLS OGG PULSEAUDIO \
+ PYTHON QT6 R0LOGGING UDPTUNNEL VBOXIMG VDE VNC VORBIS VPX \
+ WEBSERVICE X11
+OPTIONS_DEFAULT= AIO DBUS QT6 UDPTUNNEL VNC WEBSERVICE X11
+.if ${SLAVE_PORT} == no
+OPTIONS_DEFAULT+= PYTHON
+.endif
+# Since version 6.1.24 pulseaudio is broken at runtime, preventing
+# virtual machines from starting if configured to use it.
+OPTIONS_EXCLUDE+= PULSEAUDIO
+OPTIONS_SUB= yes
+
+AIO_DESC= Enable Asyncronous IO support (check pkg-message)
+DEBUG_DESC= Debug symbols, additional logs and assertions
+GUESTADDITIONS_DESC= Build with Guest Additions
+NLS_DESC= Native language support (requires QT6)
+OGG_DESC= Use libogg from audio/libogg instead of bundled one
+QT6_DESC= Build with QT6 frontend (requires X11)
+R0LOGGING_DESC= Enable R0 logging (requires DEBUG)
+UDPTUNNEL_DESC= Build with UDP tunnel support
+VBOXIMG_DESC= Build vboximg-mount (requires fuse-libs)
+VDE_DESC= Build with VDE support
+VNC_DESC= Build with VNC support
+VORBIS_DESC= Use libvorbis from audio/libvorbis instead of bundled one
+VPX_DESC= Use libvpx for video recording
+WEBSERVICE_DESC= Build Webservice
+
+ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib
+ALSA_CONFIGURE_OFF= --disable-alsa
+DBUS_LIB_DEPENDS= libdbus-1.so:devel/dbus
+DBUS_CONFIGURE_OFF= --disable-dbus
+DEBUG_CONFIGURE_ON= --build-debug
+NLS_IMPLIES= QT6
+OGG_LIB_DEPENDS= libogg.so:audio/libogg
+OGG_CONFIGURE_ON= --enable-libogg
+PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
+PULSEAUDIO_CONFIGURE_OFF= --disable-pulse
+PYTHON_USES= python
+PYTHON_USES_OFF= python:build
+PYTHON_USE= PYTHON=distutils,noegginfo,noflavors
+PYTHON_CONFIGURE_OFF= --disable-python
+PYTHON_VARS= pydistutils_pkgname=vboxapi pydistutils_pkgversion=1.0
+QT6_IMPLIES= X11
+QT6_USES= gl qmake:no_env qt:6 xorg
+QT6_USE= QT=base,scxml,tools,translations \
+ XORG=xcb GL=gl
+QT6_CONFIGURE_OFF= --disable-qt
+R0LOGGING_IMPLIES= DEBUG
+UDPTUNNEL_CONFIGURE_OFF= --disable-udptunnel
+VBOXIMG_LIB_DEPENDS= libfuse.so.2:filesystems/fusefs-libs
+VDE_RUN_DEPENDS= vde_switch:net/vde2
+VDE_CONFIGURE_ON= --enable-vde
+VNC_LIB_DEPENDS= libvncserver.so:net/libvncserver
+VNC_CONFIGURE_ON= --enable-vnc
+VORBIS_LIB_DEPENDS= libvorbis.so:audio/libvorbis \
+ libvorbisenc.so:audio/libvorbis
+VORBIS_CONFIGURE_ON= --enable-libvorbis
+VPX_LIB_DEPENDS= libvpx.so:multimedia/libvpx
+VPX_CONFIGURE_OFF= --disable-libvpx
+WEBSERVICE_BUILD_DEPENDS= soapcpp2:devel/gsoap
+X11_USES= sdl xorg
+X11_USE= SDL=sdl XORG=x11,xcursor,xext,xinerama,xmu,xorgproto,xt
+X11_CONFIGURE_OFF= --build-headless
+
+ENV=
+.export ENV
+
+.include <bsd.port.options.mk>
+
+.if ${SLAVE_PORT} == no
+CONFLICTS_INSTALL+= virtualbox-ose-nox11-72
+.else
+CONFLICTS_INSTALL+= virtualbox-ose-72
+.endif
+
+.if ${PORT_OPTIONS:MDEBUG}
+KMK_BUILDTYPE= debug
+KMK_FLAGS+= BUILD_TYPE=debug
+.else
+KMK_BUILDTYPE= release
+.endif
+
+.if ${PORT_OPTIONS:MGUESTADDITIONS}
+GUESTADDITIONS= VBoxGuestAdditions_${DISTVERSION}.iso
+DISTFILES+= ${GUESTADDITIONS}:src
+LICENSE+= Additions
+LICENSE_COMB= multi
+LICENSE_NAME_Additions= Guest Additions
+LICENSE_PERMS_Additions= auto-accept
+LICENSE_DISTFILES_Additions= ${GUESTADDITIONS}
+.endif
+
+.if ${PORT_OPTIONS:MQT6}
+PLIST_SUB+= QT=""
+VBOX_PROGS+= VirtualBox VirtualBoxVM
+VBOX_WITH_QT= 1
+.else
+PLIST_SUB+= QT="@comment "
+.endif
+
+.if ${PORT_OPTIONS:MWEBSERVICE}
+USE_RC_SUBR+= vboxinit vboxwebsrv
+VBOX_LINKS+= vboxwebsrv
+VBOX_UTILS+= vboxwebsrv webtest
+.endif
+
+.if ${PORT_OPTIONS:MX11}
+#VBOX_PROGS+= VBoxSDL
+.endif
+
+.if ${PORT_OPTIONS:MPYTHON} || ${PORT_OPTIONS:MWEBSERVICE}
+PLIST_SUB+= SDK=""
+.else
+PLIST_SUB+= SDK="@comment "
+.endif
+
+.if ${PORT_OPTIONS:MVBOXIMG}
+EXTRA_PATCHES+= ${PATCHDIR}/extrapatch-vboximg-Config.kmk
+VBOX_UTILS+= vboximg-mount
+PLIST_SUB+= VBOXIMG=""
+.else
+PLIST_SUB+= VBOXIMG="@comment "
+.endif
+
+KMK_ARCH= freebsd.${ARCH}
+PLIST_SUB+= ARCH="${KMK_ARCH}"
+
+KMK_BUILDDIR= ${WRKSRC}/out/${KMK_ARCH}/${KMK_BUILDTYPE}
+KMK_CONFIG= VBOX_LIBPATH_X11=${LOCALBASE} VBOX_FREEBSD_SRC=${SRC_BASE}/sys VBOX_WITHOUT_DOCS=1 VBOX_GCC_std=-std=c++17
+KMK_FLAGS+= -j${MAKE_JOBS_NUMBER}
+
+.include <bsd.port.pre.mk>
+
+.if ${CHOSEN_COMPILER_TYPE} == clang
+PATCH_DEPENDS+= ${LOCALBASE}/share/kBuild/tools/GXX3.kmk:devel/kBuild
+.endif
+
+.if ${PYTHON_MAJOR_VER} >= 3
+PLIST_SUB+= PYTHON_PYCDIR=/__pycache__/ \
+ PYTHON_PYCEXT=.cpython-${PYTHON_SUFFIX}.pyc
+.else
+PLIST_SUB+= PYTHON_PYCDIR=/ \
+ PYTHON_PYCEXT=.pyc
+.endif
+
+.if ${SSL_DEFAULT} != base
+CONFIGURE_ARGS+= --with-openssl-dir="${OPENSSLBASE}"
+.endif
+
+post-patch:
+ @${ECHO_CMD} 'VBOX_PATH_APP_PRIVATE_ARCH = ${VBOX_DIR}' > \
+ ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_PATH_DOCBOOK = ${DBKXSLDIR}' >> \
+ ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_PATH_DOCBOOK_DTD = ${DBKXMLDIR}' >> \
+ ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_PATH_SHARED_LIBS = ${VBOX_DIR}' >> \
+ ${WRKSRC}/LocalConfig.kmk
+ # Please keep this even if using Clang to avoid repeated regressions.
+ # PR 245048
+ @${ECHO_CMD} "VBOX_WITH_RUNPATH = ${_GCC_RUNTIME:D${_GCC_RUNTIME}\:}${VBOX_DIR}" >> \
+ ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_PATH_APP_PRIVATE = ${DATADIR}' >> \
+ ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_PATH_APP_DOCS = ${DOCSDIR}' >> ${WRKSRC}/LocalConfig.kmk
+.if ${SSL_DEFAULT} != base
+ @${ECHO_CMD} 'VBOX_WITH_ALT_HASH_CODE = 1' >> ${WRKSRC}/LocalConfig.kmk
+.endif
+ @${ECHO_CMD} 'VBOX_WITH_EXTPACK_VBOXDTRACE =' >> ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_WITH_INSTALLER = 1' >> ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_WITH_VBOXDRV =' >> ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_WITH_TESTCASES =' >> ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'SDK_VBOX_LIBPNG_INCS = ${PREFIX}/include/libpng' >> \
+ ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'SDK_VBOX_LIBPNG_LIBS = png' >> ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_WITH_ADDITIONS =' >> ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_WITH_DRAG_AND_DROP = ${VBOX_WITH_QT}' >> \
+ ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_WITH_DRAG_AND_DROP_GH = ${VBOX_WITH_QT}' >> \
+ ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_WITH_VALIDATIONKIT =' >> ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_WITH_X11_ADDITIONS =' >> ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_BLD_PYTHON = ${LOCALBASE}/bin/${PYTHON_VERSION}' >> \
+ ${WRKSRC}/LocalConfig.kmk
+.if ${PORT_OPTIONS:MR0LOGGING}
+ @${ECHO_CMD} 'VBOX_WITH_R0_LOGGING = 1' >> ${WRKSRC}/LocalConfig.kmk
+.endif
+.if ${PORT_OPTIONS:MWEBSERVICE}
+ @${ECHO_CMD} 'VBOX_WITH_WEBSERVICES = 1' >> ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_GSOAP_INSTALLED = 1' >> ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_PATH_GSOAP = ${PREFIX}/lib/gsoap' >> \
+ ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_PATH_GSOAP_BIN = ${PREFIX}/bin' >> \
+ ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_PATH_GSOAP_IMPORT = ${PREFIX}/share/gsoap/import' >> \
+ ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_GCC_PEDANTIC_CXX = -Wshadow $$(VBOX_GCC_WARN) -Wno-long-long' >> \
+ ${WRKSRC}/LocalConfig.kmk
+.endif
+.if empty(PORT_OPTIONS:MX11)
+ @${ECHO} 'VBOX_WITH_VMSVGA3D =' >> ${WRKSRC}/LocalConfig.kmk
+.endif
+.if ${CHOSEN_COMPILER_TYPE} == clang
+ @${REINPLACE_CMD} -e 's| -finline-limit=8000||' \
+ -e 's| -mpreferred-stack-boundary=2||' ${WRKSRC}/Config.kmk
+ @${REINPLACE_CMD} -e 's| -fpermissive||' ${WRKSRC}/Config.kmk \
+ ${WRKSRC}/src/VBox/Main/webservice/Makefile.kmk
+ @${ECHO_CMD} 'TOOL_VBoxGccFreeBSD_LD = ${CXX}' >> ${WRKSRC}/LocalConfig.kmk
+ @${SED} -e 's|GXX3|VBoxGccFreeBSD|g' \
+ ${LOCALBASE}/share/kBuild/tools/GXX3.kmk > \
+ ${WRKSRC}/tools/kBuildTools/VBoxGccFreeBSD.kmk
+.endif
+.if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1500013
+ @${ECHO_CMD} 'VBoxSVC_LDFLAGS.freebsd = -lsys' >> ${WRKSRC}/LocalConfig.kmk
+.endif
+ # Causes a "reinplace" QA warning with default LOCALBASE
+ @${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \
+ ${WRKSRC}/Config.kmk ${WRKSRC}/configure \
+ ${WRKSRC}/kBuild/header.kmk ${WRKSRC}/kBuild/units/qt4.kmk \
+ ${WRKSRC}/kBuild/units/qt5.kmk ${WRKSRC}/kBuild/units/qt6.kmk ${WRKSRC}/kBuild/sdks/LIBSDL.kmk \
+ ${WRKSRC}/src/libs/xpcom18a4/python/gen_python_deps.py
+ @${REINPLACE_CMD} \
+ -e 's|\$$KBUILDDIR_BIN/kmk_sed|${LOCALBASE}/bin/kmk_sed|g' \
+ -e 's|SUPPYTHONLIBS=.*|SUPPYTHONLIBS="${PYTHON_VERSION}${PYTHON_ABIVER}"|' \
+ ${WRKSRC}/configure
+.if empty(ICONV_LIB)
+ @${REINPLACE_CMD} -e 's|iconv||' ${WRKSRC}/Config.kmk \
+ ${WRKSRC}/src/VBox/Runtime/Makefile.kmk
+ @${ECHO_CMD} 'VBOX_ICONV_DEFS = LIBICONV_PLUG' >> ${WRKSRC}/LocalConfig.kmk
+.endif
+ @${REINPLACE_CMD} -e 's|%%VBOX_DIR%%|${VBOX_DIR}|g' \
+ -e 's|%%VBOX_ETC%%|${VBOX_ETC}|g' \
+ -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
+ ${WRKSRC}/src/VBox/Installer/freebsd/VBox.sh
+ @${REINPLACE_CMD} -e 's|%%VBOX_ETC%%|${VBOX_ETC}|g' \
+ ${WRKSRC}/src/VBox/HostDrivers/adpctl/VBoxNetAdpCtl.cpp
+ @${REINPLACE_CMD} \
+ -e 's|^versions =.*|versions = ["${PYTHON_VER}${PYTHON_ABIVER}"]|' \
+ ${WRKSRC}/src/libs/xpcom18a4/python/gen_python_deps.py
+
+post-patch-AIO-off:
+ @${REINPLACE_CMD} 's|r3/freebsd/fileaio-freebsd.cpp|r3/posix/fileaio-posix.cpp|' \
+ ${WRKSRC}/src/VBox/Runtime/Makefile.kmk
+
+do-build:
+ cd ${WRKSRC} && ${SH} -c '. ${WRKSRC}/env.sh && \
+ ${SETENV} ${MAKE_ENV} ${KMK_CONFIG} ${LOCALBASE}/bin/kmk ${KMK_FLAGS}'
+.if ${PORT_OPTIONS:MPYTHON}
+ ${PYTHON_CMD} -mcompileall \
+ ${KMK_BUILDDIR}/bin/sdk/bindings/xpcom/python/xpcom
+.endif
+
+do-install:
+.if ${PORT_OPTIONS:MPYTHON} || ${PORT_OPTIONS:MWEBSERVICE}
+ ${MKDIR} ${STAGEDIR}${DATADIR}/sdk
+.endif
+ cd ${KMK_BUILDDIR}/bin/sdk/bindings/xpcom && \
+ ${COPYTREE_SHARE} "idl samples" ${STAGEDIR}${DATADIR}
+
+ ${MKDIR} ${STAGEDIR}${PREFIX}/include/virtualbox
+ cd ${KMK_BUILDDIR}/bin/sdk/bindings/xpcom/include && \
+ ${COPYTREE_SHARE} "*" ${STAGEDIR}${PREFIX}/include/virtualbox
+
+ ${MKDIR} ${STAGEDIR}${VBOX_DIR}
+ cd ${KMK_BUILDDIR}/bin && ${COPYTREE_SHARE} \
+ "*.fd *.r0 *.so components" ${STAGEDIR}${VBOX_DIR}
+.if ${PORT_OPTIONS:MPYTHON} || ${PORT_OPTIONS:MWEBSERVICE}
+ ${RLN} ${STAGEDIR}${DATADIR}/sdk ${STAGEDIR}${VBOX_DIR}
+.endif
+
+ ${INSTALL_SCRIPT} ${WRKSRC}/src/VBox/Installer/freebsd/VBox.sh \
+ ${STAGEDIR}${VBOX_DIR}
+.for f in ${VBOX_PROGS} ${VBOX_UTILS}
+ ${INSTALL_PROGRAM} ${KMK_BUILDDIR}/bin/${f} ${STAGEDIR}${VBOX_DIR}
+.endfor
+.for f in ${VBOX_PROGS} ${VBOX_LINKS}
+ ${LN} -fs ../${VBOX_DIR_REL}/VBox.sh ${STAGEDIR}${PREFIX}/bin/${f}
+.endfor
+.for f in ${VBOX_PROGS}
+ ${LN} -fs ../${VBOX_DIR_REL}/VBox.sh ${STAGEDIR}${PREFIX}/bin/${f:tl}
+.endfor
+
+.if ${PORT_OPTIONS:MGUESTADDITIONS}
+ ${MKDIR} ${STAGEDIR}${VBOX_DIR}/additions
+ ${INSTALL_DATA} ${DISTDIR}/${GUESTADDITIONS} \
+ ${STAGEDIR}${VBOX_DIR}/additions/
+ ${RLN} ${STAGEDIR}${VBOX_DIR}/additions/${GUESTADDITIONS} \
+ ${STAGEDIR}${VBOX_DIR}/additions/VBoxGuestAdditions.iso
+.endif
+
+.if ${PORT_OPTIONS:MDOCS}
+ ${MKDIR} ${STAGEDIR}${DOCSDIR}
+ ${INSTALL_DATA} ${WRKDIR}/VirtualBox-docs-${DISTVERSION}/UserManual.pdf \
+ ${STAGEDIR}${DOCSDIR}
+.endif
+
+.if ${PORT_OPTIONS:MNLS}
+ cd ${KMK_BUILDDIR}/obj/VirtualBox/qtnls && \
+ ${COPYTREE_SHARE} "*.qm" ${STAGEDIR}${DATADIR}/nls
+.endif
+
+.if ${PORT_OPTIONS:MPYTHON}
+ cd ${KMK_BUILDDIR}/bin/sdk/installer/python && \
+ ${SETENV} VBOX_INSTALL_PATH="${VBOX_DIR}" \
+ ${PYTHON_CMD} vboxapisetup.py install --root=${STAGEDIR}
+
+ @${MKDIR} ${STAGEDIR}${PYTHON_SITELIBDIR}/xpcom
+ cd ${KMK_BUILDDIR}/bin/sdk/bindings/xpcom/python/xpcom && \
+ ${COPYTREE_SHARE} "*" ${STAGEDIR}${PYTHON_SITELIBDIR}/xpcom
+ @${MKDIR} ${STAGEDIR}${DATADIR}/sdk/bindings/xpcom/python
+ ${RLN} ${STAGEDIR}${PYTHON_SITELIBDIR}/xpcom \
+ ${STAGEDIR}${DATADIR}/sdk/bindings/xpcom/python
+.endif
+
+.if ${PORT_OPTIONS:MQT6}
+ ${INSTALL_DATA} \
+ ${WRKSRC}/src/VBox/Frontends/VirtualBox/images/OSE/VirtualBox_48px.png \
+ ${STAGEDIR}${PREFIX}/share/pixmaps/VBox.png
+ ${INSTALL_DATA} \
+ ${FILESDIR}/virtualbox.desktop \
+ ${STAGEDIR}${PREFIX}/share/applications/virtualbox.desktop
+.endif
+
+.if ${PORT_OPTIONS:MVNC}
+ ${MKDIR} ${STAGEDIR}${VBOX_DIR}/ExtensionPacks/VNC/${KMK_ARCH}
+ ${INSTALL_DATA} ${KMK_BUILDDIR}/bin/ExtensionPacks/VNC/ExtPack* \
+ ${STAGEDIR}${VBOX_DIR}/ExtensionPacks/VNC/
+ ${INSTALL_LIB} ${KMK_BUILDDIR}/bin/ExtensionPacks/VNC/${KMK_ARCH}/* \
+ ${STAGEDIR}${VBOX_DIR}/ExtensionPacks/VNC/${KMK_ARCH}/
+.endif
+
+.if ${PORT_OPTIONS:MVBOXIMG}
+ ${LN} -fs ../${VBOX_DIR_REL}/vboximg-mount ${STAGEDIR}${PREFIX}/bin/
+.endif
+
+.if ${PORT_OPTIONS:MWEBSERVICE}
+ ${MKDIR} ${STAGEDIR}${DATADIR}/sdk/bindings/webservice
+ ${INSTALL_DATA} ${KMK_BUILDDIR}/obj/webservice/vboxweb.wsdl \
+ ${STAGEDIR}${DATADIR}/sdk/bindings/webservice/
+.endif
+
+post-install:
+ ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/virtualbox/*.so \
+ ${STAGEDIR}${PREFIX}/lib/virtualbox/components/*.so
+
+.include <bsd.port.post.mk>
diff --git a/emulators/virtualbox-ose-72/distinfo b/emulators/virtualbox-ose-72/distinfo
new file mode 100644
index 000000000000..ed4ac420cdd3
--- /dev/null
+++ b/emulators/virtualbox-ose-72/distinfo
@@ -0,0 +1,7 @@
+TIMESTAMP = 1756400000
+SHA256 (VirtualBox-7.2.0.tar.bz2) = 4f2804ff27848ea772aee6b637bb1e10ee74ec2da117c257413e2d2c4f670ba0
+SIZE (VirtualBox-7.2.0.tar.bz2) = 206755781
+SHA256 (VirtualBox-docs-7.2.0.tar.bz2) = 12b27989f2ab9b9316384322a8f1cdadd7003d2e2d6592298e1a84e81f5e0572
+SIZE (VirtualBox-docs-7.2.0.tar.bz2) = 9200668
+SHA256 (VBoxGuestAdditions_7.2.0.iso) = 43f7a1045cad0aab40e3af906fea37244ba6873b91b4e227245a14e51b399abd
+SIZE (VBoxGuestAdditions_7.2.0.iso) = 53143552
diff --git a/emulators/virtualbox-ose-72/files/extrapatch-Config.kmk b/emulators/virtualbox-ose-72/files/extrapatch-Config.kmk
new file mode 100644
index 000000000000..775508d23b1b
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/extrapatch-Config.kmk
@@ -0,0 +1,11 @@
+--- Config.kmk.orig 2021-04-28 16:21:25 UTC
++++ Config.kmk
+@@ -4931,7 +4931,7 @@ define TOOL_FREEBSDKMODLD_LINK_SYSMOD_CMDS
+ | xargs -J% objcopy % $(out)
+
+ ## Strip debug info (comment out if debugging or something).
+- objcopy --strip-debug $(out)
++# objcopy --strip-debug $(out)
+ endef
+ else # x86
+ TOOL_FREEBSDKMODLD_LINK_SYSMOD_OUTPUT = $(outbase).kld
diff --git a/emulators/virtualbox-ose-72/files/extrapatch-src-VBox-HostDrivers-Support-freebsd-Makefile b/emulators/virtualbox-ose-72/files/extrapatch-src-VBox-HostDrivers-Support-freebsd-Makefile
new file mode 100644
index 000000000000..67361da543f7
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/extrapatch-src-VBox-HostDrivers-Support-freebsd-Makefile
@@ -0,0 +1,11 @@
+--- src/VBox/HostDrivers/Support/freebsd/Makefile.orig 2012-10-18 16:23:16.000000000 +0200
++++ src/VBox/HostDrivers/Support/freebsd/Makefile 2012-10-20 08:13:07.301179212 +0200
+@@ -27,7 +27,7 @@
+
+ KMOD = vboxdrv
+
+-CFLAGS += -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DSUPDRV_WITH_RELEASE_LOGGER -DVBOX -DRT_WITH_VBOX -Iinclude -I. -Ir0drv -w -DVBOX_WITH_HARDENING -DVBOX_WITH_64_BITS_GUESTS
++CFLAGS += -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DSUPDRV_WITH_RELEASE_LOGGER -DVBOX -DRT_WITH_VBOX -Iinclude -I. -Ir0drv -w -DVBOX_WITH_HARDENING -DVBOX_WITH_64_BITS_GUESTS -DDEBUG
+
+ .if (${MACHINE_ARCH} == "i386")
+ CFLAGS += -DRT_ARCH_X86
diff --git a/emulators/virtualbox-ose-72/files/extrapatch-vboximg-Config.kmk b/emulators/virtualbox-ose-72/files/extrapatch-vboximg-Config.kmk
new file mode 100644
index 000000000000..d84209faa8cd
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/extrapatch-vboximg-Config.kmk
@@ -0,0 +1,11 @@
+--- Config.kmk.orig 2023-10-12 15:43:35.000000000 +0700
++++ Config.kmk 2023-10-30 22:11:09.119922000 +0700
+@@ -869,7 +869,7 @@
+ # windows versions (only define when buildling win.x86).
+ #VBOX_WITH_MORE_NT4_COMPAT_BINARIES = 1
+ # Set this to enable building of the vboximg-mount FUSE mounting utility.
+-if1of ($(KBUILD_TARGET), darwin linux)
++if1of ($(KBUILD_TARGET), darwin freebsd linux)
+ VBOX_WITH_VBOXIMGMOUNT = 1
+ endif
+ # Set this to enable packaging the fuse related bits into our installer.
diff --git a/emulators/virtualbox-ose-72/files/patch-Config.kmk b/emulators/virtualbox-ose-72/files/patch-Config.kmk
new file mode 100644
index 000000000000..c284262eb189
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-Config.kmk
@@ -0,0 +1,421 @@
+--- Config.kmk.orig 2025-08-28 22:09:24 UTC
++++ Config.kmk
+@@ -624,11 +624,11 @@ endif
+ # Enable OSS audio support.
+ VBOX_WITH_AUDIO_OSS = 1
+ endif
+-if1of ($(KBUILD_TARGET), linux)
++if1of ($(KBUILD_TARGET), freebsd linux)
+ # Enable ALSA audio support.
+ VBOX_WITH_AUDIO_ALSA = 1
+ endif
+-if1of ($(KBUILD_TARGET), linux)
++if1of ($(KBUILD_TARGET), freebsd linux)
+ # Enable PulseAudio audio support.
+ VBOX_WITH_AUDIO_PULSE = 1
+ endif
+@@ -641,11 +641,11 @@ VBOX_WITH_PCI_PASSTHROUGH =
+ # (disabled with 6.1, since it's not complete/useful enough)
+ VBOX_WITH_PCI_PASSTHROUGH =
+ # Enable statically linked dbus support.
+-if1of ($(KBUILD_TARGET), linux solaris)
++if1of ($(KBUILD_TARGET), freebsd linux solaris)
+ VBOX_WITH_DBUS = 1
+ endif
+ # Enable building PAM modules.
+-if1of ($(KBUILD_TARGET), linux solaris)
++if1of ($(KBUILD_TARGET), freebsd linux solaris)
+ VBOX_WITH_PAM = 1
+ endif
+ # Enable internal networking.
+@@ -653,7 +653,7 @@ VBOX_WITH_VMSVGA = 1
+ # Enable vmsvga (svga2) graphics device variant, 2D part
+ VBOX_WITH_VMSVGA = 1
+ # Enable vmsvga (svga2) graphics device variant, 3D part
+-if1of ($(KBUILD_TARGET), darwin linux win)
++if1of ($(KBUILD_TARGET), darwin freebsd linux win)
+ VBOX_WITH_VMSVGA3D = 1
+ endif
+ # Enable vmsvga (svga2) graphics device variant, 3D part, VGPU10 DX commands
+@@ -847,7 +847,7 @@ VBOX_WITH_VBOXMANAGE_NLS = 1
+ #endif
+ # Set this to prefix all C symbols in XPCOM, to avoid dynamic linking problems
+ # caused by our XPCOM library polluting the symbol namespace for system libs.
+-if1of ($(KBUILD_TARGET), linux solaris)
++if1of ($(KBUILD_TARGET), freebsd linux solaris)
+ VBOX_WITH_XPCOM_NAMESPACE_CLEANUP = 1
+ endif
+ # The webservices api.
+@@ -1376,10 +1376,6 @@ endif
+ endif
+ endif
+
+-ifeq ($(KBUILD_TARGET),freebsd)
+- VBOX_WITH_DOCS =
+-endif
+-
+ ifeq ($(KBUILD_TARGET),haiku)
+ VBOX_WITH_VRDP_RDESKTOP =
+ # Permanent (no working SDL).
+@@ -1563,7 +1559,7 @@ ifdef VBOX_OSE
+ # not yet
+ VBOX_WITH_PLUGIN_CRYPT =
+ VBOX_WITH_DRAG_AND_DROP_PROMISES =
+- ifn1of ($(KBUILD_TARGET), linux)
++ ifn1of ($(KBUILD_TARGET), freebsd linux)
+ VBOX_WITH_DOCS =
+ VBOX_WITH_DOCS_PACKING =
+ endif
+@@ -3637,19 +3633,19 @@ ifndef VBOX_GCC_std
+ #
+ ## @todo consider maxing this out.
+ ifndef VBOX_GCC_std
+- if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), darwin.arm64 linux.arm64) # Go straight for c++17 here.
++# if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), darwin.arm64 linux.arm64) # Go straight for c++17 here.
+ VBOX_GCC_std := -std=c++17
+- # else if "$(VBOX_CLANG_VERSION_CXX)" vge 60000 # Most language features complete by v6. Lib stuff was less complete in v6, but hopefully acceptable for out purposes.
+- #VBOX_GCC_std := -std=c++17
+- else if "$(VBOX_CLANG_VERSION_CXX)" vge 50000 # darwin Xcode 5 allegedly knows what C++11 is
+- VBOX_GCC_std := -std=c++11
+- # else if "$(VBOX_GCC_VERSION_CXX)" vge 70000 # Language feature P0512R0 was v8, rest v7 or earlier. Most lib stuff present in 7, complete in v12.
+- #VBOX_GCC_std := -std=gnu++17
+- else if "$(VBOX_GCC_VERSION_CXX)" vge 40800
+- VBOX_GCC_std := -std=c++11
+- else if "$(VBOX_GCC_VERSION_CXX)" vge 40600
+- VBOX_GCC_std := -std=c++0x
+- endif
++# # else if "$(VBOX_CLANG_VERSION_CXX)" vge 60000 # Most language features complete by v6. Lib stuff was less complete in v6, but hopefully acceptable for out purposes.
++# #VBOX_GCC_std := -std=c++17
++# else if "$(VBOX_CLANG_VERSION_CXX)" vge 50000 # darwin Xcode 5 allegedly knows what C++11 is
++# VBOX_GCC_std := -std=c++11
++# # else if "$(VBOX_GCC_VERSION_CXX)" vge 70000 # Language feature P0512R0 was v8, rest v7 or earlier. Most lib stuff present in 7, complete in v12.
++# #VBOX_GCC_std := -std=gnu++17
++# else if "$(VBOX_GCC_VERSION_CXX)" vge 40800
++# VBOX_GCC_std := -std=c++11
++# else if "$(VBOX_GCC_VERSION_CXX)" vge 40600
++# VBOX_GCC_std := -std=c++0x
++# endif
+ endif
+ ifndef VBOX_VCC_std
+ if $(VBOX_VCC_TOOL_STEM) >= VCC141 # since 2017 15.3
+@@ -5688,11 +5684,11 @@ ifeq ($(VBOX_LDR_FMT),elf)
+ # Solaris driver signing.
+ TEMPLATE_VBoxR0_POST_CMDS = $(VBOX_SIGN_DRIVER_CMDS)
+ else
+- TEMPLATE_VBoxR0_LDFLAGS = -nostdlib -Bsymbolic -g
++ TEMPLATE_VBoxR0_LDFLAGS = -nostdlib -Bsymbolic -g -fuse-ld=bfd
+ ## @todo WTF doesn't the globals work? Debug info is supposed to be split everywhere. GRR
+ TEMPLATE_VBoxR0_LD_DEBUG = split
+ endif
+- if "$(KBUILD_TARGET)" == "linux" && !defined(VBOX_WITH_KMOD_WRAPPED_R0_MODS)
++ if ( "$(KBUILD_TARGET)" == "linux" || "$(KBUILD_TARGET)" == "freebsd") && !defined(VBOX_WITH_KMOD_WRAPPED_R0_MODS)
+ VBOX_WITH_VBOXR0_AS_DLL = 1
+ TEMPLATE_VBoxR0_DLLSUFF = .r0
+ TEMPLATE_VBoxR0_CFLAGS += -fPIC
+@@ -5703,7 +5699,7 @@ ifeq ($(VBOX_LDR_FMT),elf)
+ else
+ TEMPLATE_VBoxR0_CFLAGS.amd64 += -mcmodel=kernel
+ TEMPLATE_VBoxR0_CXXFLAGS.amd64 += -mcmodel=kernel
+- endif
++endif
+ ifdef VBOX_WITH_KMOD_WRAPPED_R0_MODS # For BTF/pahold issue we use -g1
+ TEMPLATE_VBoxR0_DEFS += VBOX_WITH_KMOD_WRAPPED_R0_MODS
+ TEMPLATE_VBoxR0_LDFLAGS.linux += $(PATH_ROOT)/src/VBox/HostDrivers/Support/linux/VBoxR0-wrapped.lds
+@@ -6100,7 +6096,7 @@ ifeq ($(KBUILD_TARGET),freebsd)
+ # x86 FreeBSD (6.2 or something):
+ # cc -O2 -fno-strict-aliasing -pipe -Werror -D_KERNEL -DKLD_MODULE \
+ # -nostdinc -I- -I. -I@ -I@/contrib/altq -I@/../include -I/usr/include \
+- # -finline-limit=8000 -fno-common -mno-align-long-strings -mpreferred-stack-boundary=2 \
++ # -fno-common -mno-align-long-strings \
+ # -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -ffreestanding -Wall -Wredundant-decls -Wnested-externs \
+ # -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -fformat-extensions \
+ # -std=c99 -c ../my.c
+@@ -6111,7 +6107,7 @@ ifeq ($(KBUILD_TARGET),freebsd)
+ #
+ # AMD64 FreeBSD (7.1):
+ # cc -O2 -fno-strict-aliasing -pipe -D_KERNEL -DKLD_MODULE -std=c99 -nostdinc -I. -I@ -I@/contrib/altq \
+- # -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000 -fno-common \
++ # --param inline-unit-growth=100 --param large-function-growth=1000 -fno-common \
+ # -fno-omit-frame-pointer -mcmodel=kernel -mno-red-zone -mfpmath=387 -mno-sse -mno-sse2 -mno-mmx \
+ # -mno-3dnow -msoft-float -fno-asynchronous-unwind-tables -ffreestanding \
+ # -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign \
+@@ -6193,7 +6189,7 @@ ifeq ($(KBUILD_TARGET),freebsd)
+ | xargs -J% objcopy % $(outbase).kld
+
+ # Link the final .ko (a shared object).
+- ld $(flags) -Bshareable -o $(out) $(outbase).kld
++ ld $(flags) -Bshareable -znotext -o $(out) $(outbase).kld
+ endef
+ endif # x86
+
+@@ -6228,7 +6224,7 @@ ifeq ($(KBUILD_TARGET),netbsd)
+ $(VBOX_GCC_fdiagnostics-show-option) $(VBOX_GCC_fdiagnostics-color) \
+ -Wstrict-prototypes -Wmissing-prototypes -Wstrict-prototypes \
+ -Wimplicit-function-declaration -Werror-implicit-function-declaration \
+- -O2 -ffreestanding -fno-strict-aliasing -fno-common -finline-limit=8000 \
++ -O2 -ffreestanding -fno-strict-aliasing -fno-common \
+ $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \
+ -nostdinc -std=c99 -msoft-float
+ TEMPLATE_VBoxR0Drv_CFLAGS.x86 = -m32 -mno-mmx -mno-sse -mno-avx \
+@@ -6239,7 +6235,7 @@ ifeq ($(KBUILD_TARGET),netbsd)
+ -fno-asynchronous-unwind-tables -mno-fp-ret-in-387
+ TEMPLATE_VBoxR0Drv_CXXFLAGS = -fno-exceptions -fno-rtti \
+ $(VBOX_GCC_WARN) -Wpointer-arith -Winline \
+- -O2 -fno-strict-aliasing -fno-common -finline-limit=8000 \
++ -O2 -fno-strict-aliasing -fno-common \
+ $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \
+ -nostdinc -msoft-float
+ TEMPLATE_VBoxR0Drv_CXXFLAGS.x86 = $(TEMPLATE_VBoxR0Drv_CFLAGS.x86)
+@@ -6565,11 +6561,11 @@ else # the gcc guys
+ TEMPLATE_VBoxR3Exe_LATE_LIBS = pthread m rt dl
+ else ifeq ($(KBUILD_TARGET),os2)
+ TEMPLATE_VBoxR3Exe_TOOL = GXX3OMF
+- TEMPLATE_VBoxR3Exe_LATE_LIBS = socket iconv
++ TEMPLATE_VBoxR3Exe_LATE_LIBS = socket
+ else ifeq ($(KBUILD_TARGET),darwin)
+ TEMPLATE_VBoxR3Exe_TOOL = $(VBOX_GCC_TOOL)
+ TEMPLATE_VBoxR3Exe_LATE_LIBS =
+- TEMPLATE_VBoxR3Exe_DEFS += LIBICONV_PLUG # Avoid 3rd party libiconv (from macports).
++ TEMPLATE_VBoxR3Exe_DEFS += LIBICONV_PLUG # Avoid 3rd party lib (from macports).
+ TEMPLATE_VBoxR3Exe_SDKS.darwin = $(VBOX_DARWIN_DEF_SDK_SDKS)
+ TEMPLATE_VBoxR3Exe_DEFS.darwin = $(VBOX_DARWIN_DEF_SDK_DEFS)
+ TEMPLATE_VBoxR3Exe_CFLAGS.darwin = $(VBOX_DARWIN_DEF_SDK_CFLAGS) -fno-common
+@@ -6585,24 +6581,29 @@ else # the gcc guys
+ else ifeq ($(KBUILD_TARGET),haiku)
+ TEMPLATE_VBoxR3Exe_TOOL = GXX3
+ TEMPLATE_VBoxR3Exe_POST_CMDS = $(VBOX_HAIKU_XRES_SETVER_CMDS)
+- TEMPLATE_VBoxR3Exe_LATE_LIBS = network iconv stdc++ supc++
++ TEMPLATE_VBoxR3Exe_LATE_LIBS = network stdc++ supc++
+ TEMPLATE_VBoxR3Exe_LIBPATH += \
+ /boot/common/lib
+ # Haiku uses PIC by default...
+ TEMPLATE_VBoxR3Exe_CFLAGS += -fno-pic
+ TEMPLATE_VBoxR3Exe_CXXFLAGS += -fno-pic
+ TEMPLATE_VBoxR3Exe_LDFLAGS += -fno-pic
+- else if1of ($(KBUILD_TARGET), freebsd openbsd)
++ else if1of ($(KBUILD_TARGET), freebsd)
+ TEMPLATE_VBoxR3Exe_TOOL = GXX3
+ TEMPLATE_VBoxR3Exe_LATE_LIBS = pthread
++ TEMPLATE_VBoxR3Exe_LDFLAGS = -Wl,-z,noexecstack,-z,relro $(VBOX_LD_as_needed)
++ TEMPLATE_VBoxR3Exe_LDFLAGS.freebsd.x86 = -Wl,-z,notext
+ TEMPLATE_VBoxR3Exe_INCS += \
+- /usr/include \
+- /usr/X11R6/include \
+ /usr/local/include
+ TEMPLATE_VBoxR3Exe_LIBPATH += \
+- /usr/lib \
+- /usr/X11R6/lib \
+ /usr/local/lib
++ else ifeq ($(KBUILD_TARGET), openbsd)
++ TEMPLATE_VBoxR3Exe_TOOL = GXX3
++ TEMPLATE_VBoxR3Exe_LIBS = pthread
++ TEMPLATE_VBoxR3Exe_INCS += \
++ /usr/include \
++ /usr/X11R6/include \
++ /usr/local/include
+ else ifeq ($(KBUILD_TARGET),netbsd)
+ TEMPLATE_VBoxR3Exe_TOOL = GXX3
+ TEMPLATE_VBoxR3Exe_LATE_LIBS = pthread
+@@ -6614,7 +6615,7 @@ else # the gcc guys
+ /usr/X11R7/lib
+ else ifeq ($(KBUILD_TARGET),solaris)
+ TEMPLATE_VBoxR3Exe_TOOL = GXX3PLAIN
+- TEMPLATE_VBoxR3Exe_DEFS += LIBICONV_PLUG _REENTRANT # Avoid the GNU libiconv, for now at least.
++ TEMPLATE_VBoxR3Exe_DEFS += LIBICONV_PLUG _REENTRANT # Avoid the GNU lib, for now at least.
+ if $(VBOX_GCC_VERSION_CC) < 30500
+ TEMPLATE_VBoxR3Exe_CFLAGS += -std=gnu99
+ endif
+@@ -6630,6 +6631,7 @@ else # the gcc guys
+ TEMPLATE_VBoxR3Exe_LDFLAGS += '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)'
+ endif
+ ifdef VBOX_WITH_ORIGIN
++ TEMPLATE_VBoxR3Exe_LDFLAGS.freebsd += $(VBOX_GCC_ORIGIN_OPT)
+ TEMPLATE_VBoxR3Exe_LDFLAGS.linux += $(VBOX_GCC_ORIGIN_OPT)
+ endif
+ endif
+@@ -6868,7 +6870,7 @@ else
+ ifdef VBOX_WITH_NOCRT_STATIC
+ TEMPLATE_VBoxR3StaticBase_DEFS += RT_WITH_NOCRT_WRAPPERS
+ endif
+- ifn1of ($(KBUILD_TARGET), darwin linux solaris)
++ ifn1of ($(KBUILD_TARGET), darwin freebsd linux solaris)
+ # The gcc guys sans darwin, linux and solaris (don't depend on statically compiled system libs there)
+ TEMPLATE_VBoxR3StaticBase_CFLAGS = $(TEMPLATE_VBoxR3Exe_CFLAGS) -static
+ TEMPLATE_VBoxR3StaticBase_CXXFLAGS = $(TEMPLATE_VBoxR3Exe_CXXFLAGS) -static
+@@ -6936,7 +6938,7 @@ else
+ $(SDK_VBoxZlib_LATE_LIBS) \
+ $(SDK_VBoxLibLzma_LIBS)
+ if1of ($(KBUILD_TARGET), darwin freebsd)
+- TEMPLATE_VBoxR3Static_LATE_LIBS += iconv
++ TEMPLATE_VBoxR3Static_LATE_LIBS +=
+ else ifeq ($(KBUILD_TARGET),solaris)
+ TEMPLATE_VBoxR3Static_LATE_LIBS += kstat
+ endif
+@@ -7137,6 +7139,7 @@ else ifn1of ($(KBUILD_TARGET), os2)
+ else ifn1of ($(KBUILD_TARGET), os2)
+ ifneq ($(KBUILD_TYPE),asan) # Keep RPATH in asan builds so we can find libasan.so.X and libubsan.so.Y.
+ TEMPLATE_VBoxR3HardenedExe_LDFLAGS = $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_VBoxR3Exe_LDFLAGS))
++ TEMPLATE_VBoxR3HardenedExe_LDFLAGS.freebsd = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBoxR3Exe_LDFLAGS.freebsd))
+ TEMPLATE_VBoxR3HardenedExe_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBoxR3Exe_LDFLAGS.linux))
+ endif
+ endif
+@@ -7168,6 +7171,7 @@ ifn1of ($(KBUILD_TARGET), win os2)
+ $(if-expr !defined(VBOX_WITHOUT_WINDOWS_KERNEL_CODE_SIGNING_CERT),-IntegrityCheck,)
+ ifn1of ($(KBUILD_TARGET), win os2)
+ TEMPLATE_VBoxR3HardenedTstDll_LDFLAGS = $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_VBoxR3TstDll_LDFLAGS))
++ TEMPLATE_VBoxR3HardenedTstDll_LDFLAGS.freebsd = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBoxR3TstDll_LDFLAGS.freebsd))
+ TEMPLATE_VBoxR3HardenedTstDll_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBoxR3TstDll_LDFLAGS.linux))
+ endif
+
+@@ -7192,6 +7196,7 @@ ifndef VBOX_WITH_HARDENING
+ TEMPLATE_VBoxR3SetUidToRoot_LDFLAGS += '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)'
+ endif
+ ifdef VBOX_WITH_ORIGIN
++ TEMPLATE_VBoxR3SetUidToRoot_LDFLAGS.freebsd += $(VBOX_GCC_ORIGIN_OPT)
+ TEMPLATE_VBoxR3SetUidToRoot_LDFLAGS.linux += $(VBOX_GCC_ORIGIN_OPT)
+ endif
+ endif
+@@ -7570,7 +7575,7 @@ else # the GCC guys:
+ endif
+ TEMPLATE_VBoxMainExe_CXXFLAGS = -g $(VBOX_GCC_pipe) \
+ $(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC_Wno-variadic-macros) $(VBOX_GCC_Wno-multistatement-macros) $(VBOX_GCC_Wno-class-memaccess) -Wshadow \
+- -fshort-wchar -fpermissive -fexceptions -frtti $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing \
++ -fshort-wchar -fexceptions -frtti $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing \
+ $(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_std) $(VBOX_GCC_IPRT_FMT_CHECK) \
+ $(VBOX_GCC_SANITIZER_FLAGS)
+ if !defined("VBOX_GCC_Wno-delete-non-virtual-dtor") && defined("VBOX_GCC_Wno-non-virtual-dtor")
+@@ -7633,10 +7638,19 @@ else # the GCC guys:
+ else ifeq ($(KBUILD_TARGET),haiku)
+ TEMPLATE_VBoxMainExe_TOOL = GXX3
+ TEMPLATE_VBoxMainExe_LATE_LIBS = $(LIB_RUNTIME) network stdc++ supc++
+- else if1of ($(KBUILD_TARGET), freebsd openbsd)
++ else if1of ($(KBUILD_TARGET), freebsd)
+ TEMPLATE_VBoxMainExe_TOOL = GXX3
+ TEMPLATE_VBoxMainExe_LATE_LIBS = $(LIB_RUNTIME)
++ TEMPLATE_VBoxMainExe_LDFLAGS = -Wl,-z,noexecstack,-z,relro $(VBOX_LD_as_needed)
++ TEMPLATE_VBoxMainExe_LDFLAGS.freebsd.x86 = -Wl,-z,notext
+ TEMPLATE_VBoxMainExe_INCS += \
++ /usr/local/include
++ TEMPLATE_VBoxMainExe_LIBPATH += \
++ /usr/local/lib
++ else ifeq ($(KBUILD_TARGET), openbsd)
++ TEMPLATE_VBoxMainExe_TOOL = GXX3
++ TEMPLATE_VBoxMainExe_LIBS = $(LIB_RUNTIME)
++ TEMPLATE_VBoxMainExe_INCS += \
+ /usr/include \
+ /usr/X11R6/include \
+ /usr/local/include
+@@ -7668,6 +7682,7 @@ else # the GCC guys:
+ TEMPLATE_VBoxMainExe_LDFLAGS += '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)'
+ endif
+ ifdef VBOX_WITH_ORIGIN
++ TEMPLATE_VBoxMainExe_LDFLAGS.freebsd += $(VBOX_GCC_ORIGIN_OPT)
+ TEMPLATE_VBoxMainExe_LDFLAGS.linux += $(VBOX_GCC_ORIGIN_OPT)
+ endif
+
+@@ -8352,14 +8367,13 @@ ifdef VBOX_WITH_QTGUI
+ TEMPLATE_VBoxQtGuiExe_LIBPATH += \
+ $(VBOX_LIBPATH_X11)
+ ifeq ($(KBUILD_TARGET),freebsd)
++ TEMPLATE_VBoxQtGuiExe_LDFLAGS += -Wl,-z,noexecstack,-z,relro $(VBOX_LD_as_needed)
++ TEMPLATE_VBoxQtGuiExe_LDFLAGS.freebsd.x86 = -Wl,-z,notext
+ TEMPLATE_VBoxQtGuiExe_INCS += \
+- /usr/include \
+- /usr/X11R6/include \
+ /usr/local/include
+ TEMPLATE_VBoxQtGuiExe_LIBPATH += \
+- /usr/lib \
+- /usr/X11R6/lib \
+ /usr/local/lib
++ TEMPLATE_VBoxQtGuiExe_LIBS += /usr/local/lib/qt6/libQt6PrintSupport.so
+ endif
+ ifeq ($(KBUILD_TARGET),solaris)
+ TEMPLATE_VBoxQtGuiExe_LDFLAGS.solaris = -Wl,-z,ignore # Same as VBOX_LD_as_needed.
+@@ -8623,7 +8637,7 @@ else
+ TEMPLATE_VBoxBldProg_LATE_LIBS = pthread m rt dl
+ else ifeq ($(KBUILD_HOST),os2)
+ TEMPLATE_VBoxBldProg_TOOL = GXX3OMF
+- TEMPLATE_VBoxBldProg_LATE_LIBS = socket iconv
++ TEMPLATE_VBoxBldProg_LATE_LIBS = socket
+ else ifeq ($(KBUILD_HOST),darwin)
+ TEMPLATE_VBoxBldProg_TOOL = $(VBOX_GCC_TOOL)
+ if "$(VBOX_DEF_MACOSX_VERSION_MIN)" == "10.7" || "$(VBOX_DARWIN_HOST_VERSION_MAJOR)" == "7"
+@@ -8663,13 +8677,20 @@ else
+ TEMPLATE_VBoxBldProg_LATE_LIBS =
+ else ifeq ($(KBUILD_HOST),haiku)
+ TEMPLATE_VBoxBldProg_TOOL = GXX3
+- TEMPLATE_VBoxBldProg_LATE_LIBS = network iconv
++ TEMPLATE_VBoxBldProg_LATE_LIBS = network
+ TEMPLATE_VBoxBldProg_LIBPATH += \
+ /boot/common/lib
+- else if1of ($(KBUILD_HOST), freebsd openbsd)
++ else if1of ($(KBUILD_HOST), freebsd)
+ TEMPLATE_VBoxBldProg_TOOL = $(VBOX_GCC_TOOL)
+ TEMPLATE_VBoxBldProg_LATE_LIBS = pthread
+ TEMPLATE_VBoxBldProg_INCS += \
++ /usr/local/include
++ TEMPLATE_VBoxBldProg_LIBPATH += \
++ /usr/local/lib
++ else ifeq ($(KBUILD_HOST), openbsd)
++ TEMPLATE_VBoxBldProg_TOOL = $(VBOX_GCC_TOOL)
++ TEMPLATE_VBoxBldProg_LIBS = pthread
++ TEMPLATE_VBoxBldProg_INCS += \
+ /usr/include \
+ /usr/X11R6/include \
+ /usr/local/include
+@@ -8716,11 +8737,11 @@ TEMPLATE_VBoxAdvBldProg_LATE_LIBS.darwin = \
+ $(TEMPLATE_VBoxBldProg_LATE_LIBS)
+ TEMPLATE_VBoxAdvBldProg_LATE_LIBS.darwin = \
+ $(TEMPLATE_VBoxAdvBldProg_LATE_LIBS) \
+- iconv \
++ \
+ $(TEMPLATE_VBoxBldProg_LATE_LIBS.darwin)
+ TEMPLATE_VBoxAdvBldProg_LATE_LIBS.freebsd = \
+ $(TEMPLATE_VBoxAdvBldProg_LATE_LIBS) \
+- iconv \
++ \
+ rt \
+ $(TEMPLATE_VBoxBldProg_LATE_LIBS.freebsd)
+ TEMPLATE_VBoxAdvBldProg_LATE_LIBS.linux = \
+@@ -8813,6 +8834,7 @@ else # the gcc guys
+ # Do not inherit sanitizer flags from VBoxR3Exe in guest executables. Deal with them separately.
+ TEMPLATE_VBoxGuestR3ExeBase_CXXFLAGS.debug = $(NO_SUCH_VARIABLE)
+ TEMPLATE_VBoxGuestR3ExeBase_CFLAGS.debug = $(NO_SUCH_VARIABLE)
++ TEMPLATE_VBoxGuestR3ExeBase_LDFLAGS.freebsd = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_$(TEMPLATE_VBoxGuestR3ExeBase_EXTENDS)_LDFLAGS.freebsd))
+ TEMPLATE_VBoxGuestR3ExeBase_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_$(TEMPLATE_VBoxGuestR3ExeBase_EXTENDS)_LDFLAGS.linux))
+ TEMPLATE_VBoxGuestR3ExeBase_LDFLAGS.debug = $(NO_SUCH_VARIABLE)
+ TEMPLATE_VBoxGuestR3ExeBase_LDFLAGS = $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_$(TEMPLATE_VBoxGuestR3ExeBase_EXTENDS)_LDFLAGS))
+@@ -8836,7 +8858,7 @@ else if1of ($(KBUILD_TARGET), darwin freebsd openbsd)
+ ifeq ($(KBUILD_TARGET),linux) # As few libs as possible on linux.
+ TEMPLATE_VBoxGuestR3ExeBase_LATE_LIBS = pthread rt m dl
+ else if1of ($(KBUILD_TARGET), darwin freebsd openbsd)
+- TEMPLATE_VBoxGuestR3ExeBase_LATE_LIBS = $(TEMPLATE_$(TEMPLATE_VBoxGuestR3ExeBase_EXTENDS)_LATE_LIBS) iconv
++ TEMPLATE_VBoxGuestR3ExeBase_LATE_LIBS = $(TEMPLATE_$(TEMPLATE_VBoxGuestR3ExeBase_EXTENDS)_LATE_LIBS)
+ else ifeq ($(KBUILD_TARGET),solaris)
+ TEMPLATE_VBoxGuestR3ExeBase_LATE_LIBS = $(TEMPLATE_$(TEMPLATE_VBoxGuestR3ExeBase_EXTENDS)_LATE_LIBS) nsl
+ endif
+@@ -8849,6 +8871,7 @@ TEMPLATE_VBoxGuestR3ExeBase_CFLAGS.linux = $(TEMP
+ $(VBOX_GCC_fno-stack-protector)
+ TEMPLATE_VBoxGuestR3ExeBase_CFLAGS.linux = $(TEMPLATE_VBoxGuestR3ExeBase_CXXFLAGS.linux)
+ # The GNU_HASH ELF tag is not supported by older systems.
++TEMPLATE_VBoxGuestR3ExeBase_LDFLAGS.freebsd += $(VBOX_LD_hash_style_sysv)
+ TEMPLATE_VBoxGuestR3ExeBase_LDFLAGS.linux += $(VBOX_LD_hash_style_sysv)
+
+
+@@ -9085,6 +9108,7 @@ TEMPLATE_VBoxGuestR3XFree86Mod_LDFLAGS.$(KBUILD_TARGET
+ TEMPLATE_VBoxGuestR3XFree86Mod_CXXFLAGS.linux = $(VBOX_GCC_fno-stack-protector) # Remove symvers.h
+ TEMPLATE_VBoxGuestR3XFree86Mod_LDFLAGS.$(KBUILD_TARGET) = $(NO_SUCH_VARIABLE)
+ # The GNU_HASH ELF tag is not supported by older glibc dynamic linkers.
++TEMPLATE_VBoxGuestR3XFree86Mod_LDFLAGS.freebsd = $(subst -Wl$(COMMA),,$(VBOX_LD_hash_style_sysv))
+ TEMPLATE_VBoxGuestR3XFree86Mod_LDFLAGS.linux = $(subst -Wl$(COMMA),,$(VBOX_LD_hash_style_sysv))
+ TEMPLATE_VBoxGuestR3XFree86Mod_LDFLAGS.$(KBUILD_TYPE) = $(NO_SUCH_VARIABLE)
+ TEMPLATE_VBoxGuestR3XFree86Mod_LDFLAGS := -r
+@@ -9128,7 +9152,7 @@ TEMPLATE_VBoxGuestR3XOrgMod_LATE_LIBS.$(KBUILD_TARGET)
+ TEMPLATE_VBoxGuestR3XOrgMod_LATE_LIBS = $(VBOX_LIB_VBGL_R3_XORG)
+ TEMPLATE_VBoxGuestR3XOrgMod_LATE_LIBS.$(KBUILD_TYPE) = $(NO_SUCH_VARIABLE)
+ TEMPLATE_VBoxGuestR3XOrgMod_LATE_LIBS.$(KBUILD_TARGET) = $(NO_SUCH_VARIABLE)
+-TEMPLATE_VBoxGuestR3XOrgMod_LATE_LIBS.freebsd = iconv
++TEMPLATE_VBoxGuestR3XOrgMod_LATE_LIBS.freebsd =
+ TEMPLATE_VBoxGuestR3XOrgMod_LIBS = $(NO_SUCH_VARIABLE) # These three aren't necessary, just being careful.
+ TEMPLATE_VBoxGuestR3XOrgMod_LIBS.$(KBUILD_TYPE) = $(NO_SUCH_VARIABLE)
+ TEMPLATE_VBoxGuestR3XOrgMod_LIBS.$(KBUILD_TARGET) = $(NO_SUCH_VARIABLE)
diff --git a/emulators/virtualbox-ose-72/files/patch-configure b/emulators/virtualbox-ose-72/files/patch-configure
new file mode 100644
index 000000000000..76ed44e26acf
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-configure
@@ -0,0 +1,126 @@
+--- configure.orig 2025-08-13 19:37:05 UTC
++++ configure
+@@ -155,10 +155,14 @@ if [ "$OS" = "freebsd" ]; then
+ if [ "$OS" = "freebsd" ]; then
+ INCCURL="-I/usr/local/include"
+ LIBCURL="-L/usr/local/lib -lcurl"
++ INCALSA="-I/usr/local/include"
++ LIBALSA="-L/usr/local/lib"
+ INCPULSE="-I/usr/local/include"
+ LIBPULSE="-L/usr/local/lib"
+ INCPNG="-I/usr/local/include"
+ LIBPNG="-L/usr/local/lib -lpng"
++ INCVNCSERVER="-I/usr/local/include"
++ LIBVNCSERVER="-L/usr/local/lib"
+ else
+ INCCURL=""
+ LIBCURL="-lcurl"
+@@ -1171,6 +1175,9 @@ extern "C" int main(int argc, char** argv)
+ printf("found version %d.%d.%d",
+ SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL);
+ #if SDL_VERSION_ATLEAST(1,2,7)
++#if !defined(SDL_VIDEO_DRIVER_X11)
++#error SDL must be compiled with X11 support
++#endif
+ printf(", OK.\n");
+ return 0;
+ #else
+@@ -1255,7 +1262,7 @@ EOF
+ #endif
+ }
+ EOF
+- if test_compile "-lasound" asound asound; then
++ if test_compile "$INCALSA $LIBALSA -lasound" asound asound; then
+ test_execute
+ fi
+ }
+@@ -1559,6 +1566,7 @@ EOF
+ SDKQT6=$PATH_SDK_QT6
+ fi
+ FLGQT6="-framework QtCore -std=c++17 -Wl,-rpath,`L_to_PATH "$LIBQT6"`"
++ FLGQT6="$FLGQT6 -std=c++11"
+ else
+ log_failure "Qt6 framework not found (can be disabled using --disable-qt)"
+ fail
+@@ -1897,7 +1905,7 @@ EOF
+ return 0;
+ }
+ EOF
+- [ -n "$INCOGG" ] && I_INCVRB=`prefix_I "$INCOGG"`
++ [ -n "$INCOGG" ] && I_INCOGG=`prefix_I "$INCOGG"`
+ if test_compile "$LIBOGG $I_INCOGG" ogg ogg nofatal; then
+ if test_execute; then
+ cnf_append "SDK_VBoxLibOgg_INCS" "$INCOGG"
+@@ -2125,8 +2133,8 @@ EOF
+ echo "compiling the following source file:" >> $LOG
+ cat $ODIR.tmp_src.cc >> $LOG
+ echo "using the following command line:" >> $LOG
+- echo "$CXX -O -Wall -o $ODIR.tmp_out $ODIR.tmp_src.cc -I$p/include/$d $p/$b/lib$d.so" >> $LOG
+- $CXX -O -Wall -o $ODIR.tmp_out $ODIR.tmp_src.cc -I$p/include/$d $p/$b/lib$d.so >> $LOG 2>&1
++ echo "$CXX -O -Wall -o $ODIR.tmp_out $ODIR.tmp_src.cc -I$p/include/$d $p/$b/lib$d.so -pthread" >> $LOG
++ $CXX -O -Wall -o $ODIR.tmp_out $ODIR.tmp_src.cc -I$p/include/$d $p/$b/lib$d.so -pthread >> $LOG 2>&1
+ if [ $? -eq 0 ]; then
+ found=1
+ break
+@@ -2246,7 +2254,7 @@ check_gsoap()
+ else
+ cnf_append "VBOX_GSOAP_CXX_SOURCES" ""
+ fi
+- cnf_append "VBOX_GSOAP_CXX_LIBS" "`strip_l "$GSOAP_CXX_LIBS"`"
++ cnf_append "VBOX_GSOAP_CXX_LIBS" "`strip_l "$GSOAP_CXX_LIBS"` z"
+ gsoap_version=`pkg-config gsoapssl++ --modversion`
+ log_success "found version $gsoap_version"
+ return
+@@ -2619,7 +2627,7 @@ for option in "$@"; do
+ --with-openssl-dir=*)
+ OPENSSLDIR=`echo $option | cut -d'=' -f2`
+ INCCRYPTO="-I${OPENSSLDIR}/include"
+- LIBCRYPTO="${OPENSSLDIR}/lib/libssl.a ${OPENSSLDIR}/lib/libcrypto.a"
++ LIBCRYPTO="-L${OPENSSLDIR}/lib -lssl -lcrypto"
+ # On Darwin (at least for macports) static OpenSSL also needs zlib.
+ [ "$OS" = "darwin" ] && LIBCRYPTO="$LIBCRYPTO ${OPENSSLDIR}/lib/libz.a"
+ # On Linux static OpenSSL typically needs a few additional libraries.
+@@ -2978,12 +2986,22 @@ if [ $ONLY_ADDITIONS -eq 0 ]; then
+ [ $WITH_JAVA -eq 1 ] && check_java
+
+ # PulseAudio
+- if [ $WITH_PULSE -eq 1 ]; then
+- check_pulse
+- elif [ $WITH_PULSE -eq 0 ]; then # Force disabling PulseAudio.
+- cnf_append "VBOX_WITH_AUDIO_PULSE" ""
+- elif [ $WITH_PULSE -eq 2 ]; then # --enable-pulse was passed, force PulseAudio.
+- cnf_append "VBOX_WITH_AUDIO_PULSE" "1"
++ if [ "$OS" = "linux" -o "$OS" = "freebsd" -o "$OS" = "netbsd" ]; then
++ if [ $WITH_ALSA -eq 1 ]; then
++ check_alsa
++ else
++ cnf_append "VBOX_WITH_AUDIO_ALSA" ""
++ fi
++ if [ $WITH_PULSE -eq 1 ]; then
++ check_pulse
++ elif [ $WITH_PULSE -eq 0 ]; then # Force disabling PulseAudio.
++ cnf_append "VBOX_WITH_AUDIO_PULSE" ""
++ elif [ $WITH_PULSE -eq 2 ]; then # --enable-pulse was passed, force PulseAudio.
++ cnf_append "VBOX_WITH_AUDIO_PULSE" "1"
++ fi
++ if [ $WITH_DBUS -eq 0 ]; then
++ cnf_append "VBOX_WITH_DBUS" ""
++ fi
+ fi
+ fi
+
+@@ -2999,14 +3017,6 @@ if [ "$OS" = "linux" ]; then
+ cnf_append "VBOX_WITHOUT_LINUX_TEST_BUILDS" "1"
+ fi
+ if [ $ONLY_ADDITIONS -eq 0 ]; then
+- if [ $WITH_ALSA -eq 1 ]; then
+- check_alsa
+- else
+- cnf_append "VBOX_WITH_AUDIO_ALSA" ""
+- fi
+- if [ $WITH_DBUS -eq 0 ]; then
+- cnf_append "VBOX_WITH_DBUS" ""
+- fi
+ if [ $WITH_DEVMAPPER -eq 1 ]; then
+ check_libdevmapper
+ else
diff --git a/emulators/virtualbox-ose-72/files/patch-doc_manual_en__US_dita_UserManual.ditamap b/emulators/virtualbox-ose-72/files/patch-doc_manual_en__US_dita_UserManual.ditamap
new file mode 100644
index 000000000000..c8337d7aeba6
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-doc_manual_en__US_dita_UserManual.ditamap
@@ -0,0 +1,11 @@
+--- doc/manual/en_US/dita/UserManual.ditamap.orig 2025-08-13 19:37:06 UTC
++++ doc/manual/en_US/dita/UserManual.ditamap
+@@ -540,7 +540,7 @@
+ <topicref href="topics/security-model.dita"/>
+ <topicref href="topics/secure-config-vms.dita">
+ <topicref href="topics/security-networking.dita"/>
+- <topicref href="topics/security-of-remote-vms.dita"/>
++<!-- <topicref href="topics/security-of-remote-vms.dita"/> -->
+ <topicref href="topics/security-vrdp-auth.dita"/>
+ <topicref href="topics/security_clipboard.dita"/>
+ <topicref href="topics/security-shared-folders.dita"/>
diff --git a/emulators/virtualbox-ose-72/files/patch-include-iprt-x86.h b/emulators/virtualbox-ose-72/files/patch-include-iprt-x86.h
new file mode 100644
index 000000000000..cedf78a0ef02
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-include-iprt-x86.h
@@ -0,0 +1,19 @@
+--- include/iprt/x86.h.orig 2025-08-13 19:37:26 UTC
++++ include/iprt/x86.h
+@@ -53,6 +53,16 @@
+ # pragma D depends_on library vbox-types.d
+ #endif
+
++/* Workaround for FreeBSD machine/specialreg.h defining MSRs */
++#ifdef RT_OS_FREEBSD
++# undef MSR_P5_MC_ADDR
++# undef MSR_P5_MC_TYPE
++# undef MSR_IA32_PLATFORM_ID
++# undef MSR_BBL_CR_CTL3
++# undef MSR_IA32_MISC_ENABLE
++# undef MSR_IA32_FEATURE_CONTROL
++#endif
++
+ /** Workaround for Solaris sys/regset.h defining CS, DS and sys/controlregs.h
+ * defining MSR_IA32_FLUSH_CMD and MSR_AMD_VIRT_SPEC_CTL */
+ #ifdef RT_OS_SOLARIS
diff --git a/emulators/virtualbox-ose-72/files/patch-include_VBox_com_array.h b/emulators/virtualbox-ose-72/files/patch-include_VBox_com_array.h
new file mode 100644
index 000000000000..77d77ddd3e11
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-include_VBox_com_array.h
@@ -0,0 +1,36 @@
+--- include/VBox/com/array.h.orig 2025-08-13 19:37:15 UTC
++++ include/VBox/com/array.h
+@@ -181,7 +181,7 @@
+
+ #include "VBox/com/defs.h"
+
+-#if RT_GNUC_PREREQ(4, 6) || (defined(_MSC_VER) && (_MSC_VER >= 1600))
++#if RT_GNUC_PREREQ(4, 6) || (defined(_MSC_VER) && (_MSC_VER >= 1600)) || defined(_LIBCPP_VERSION)
+ /** @def VBOX_WITH_TYPE_TRAITS
+ * Type traits are a C++ 11 feature, so not available everywhere (yet).
+ * Only GCC 4.6 or newer and MSVC++ 16.0 (Visual Studio 2010) or newer.
+@@ -1014,12 +1014,12 @@ class SafeArray : public Traits (public)
+ {
+ /** @todo r=klaus should do this as a AssertCompile, but cannot find a way which works. */
+ Assert(sizeof(T) <= sizeof(Zeroes));
+- AssertReturn(m.arr != NULL, *(T *)&Zeroes[0]);
+- AssertReturn(aIdx < size(), *(T *)&Zeroes[0]);
++ AssertReturn(m.arr != NULL, *((T *)1));
++ AssertReturn(aIdx < size(), *((T *)1));
+ #ifdef VBOX_WITH_XPCOM
+ return m.arr[aIdx];
+ #else
+- AssertReturn(m.raw != NULL, *(T *)&Zeroes[0]);
++ AssertReturn(m.raw != NULL, *((T *)1));
+ return m.raw[aIdx];
+ #endif
+ }
+@@ -1034,7 +1034,7 @@ class SafeArray : public Traits (public)
+ #ifdef VBOX_WITH_XPCOM
+ return m.arr[aIdx];
+ #else
+- AssertReturn(m.raw != NULL, *(const T *)&Zeroes[0]);
++ AssertReturn(m.raw != NULL, *((T *)1));
+ return m.raw[aIdx];
+ #endif
+ }
diff --git a/emulators/virtualbox-ose-72/files/patch-include_VBox_sup.h b/emulators/virtualbox-ose-72/files/patch-include_VBox_sup.h
new file mode 100644
index 000000000000..77fee2d23d0a
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-include_VBox_sup.h
@@ -0,0 +1,11 @@
+--- include/VBox/sup.h.orig 2025-08-13 19:37:16 UTC
++++ include/VBox/sup.h
+@@ -2325,7 +2325,7 @@ SUPR0DECL(void) SUPR0BadContext(PSUPDRVSESSION pSessio
+
+ SUPR0DECL(void) SUPR0BadContext(PSUPDRVSESSION pSession, const char *pszFile, uint32_t uLine, const char *pszExpr);
+
+-#if defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS) || defined(RT_OS_FREEBSD)
++#if defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS)
+ /**
+ * Translates a physical address to a virtual mapping (valid up to end of page).
+ * @returns VBox status code.
diff --git a/emulators/virtualbox-ose-72/files/patch-include_iprt_string.h b/emulators/virtualbox-ose-72/files/patch-include_iprt_string.h
new file mode 100644
index 000000000000..b06991588730
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-include_iprt_string.h
@@ -0,0 +1,14 @@
+--- include/iprt/string.h.orig 2025-08-13 19:37:25 UTC
++++ include/iprt/string.h
+@@ -57,6 +57,11 @@
+ #elif defined(RT_OS_FREEBSD) && defined(_KERNEL)
+ RT_C_DECLS_BEGIN
+ # include <sys/libkern.h>
++ /*
++ * Kludge for the FreeBSD kernel:
++ * sys/libkern.h includes sys/param.h via sys/systm.h since r335879.
++ */
++# undef PVM
+ RT_C_DECLS_END
+
+ #elif defined(RT_OS_NETBSD) && defined(_KERNEL)
diff --git a/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-VBoxGuest-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-VBoxGuest-freebsd.c
new file mode 100644
index 000000000000..5344a7ab812f
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-VBoxGuest-freebsd.c
@@ -0,0 +1,284 @@
+--- src/VBox/Additions/common/VBoxGuest/VBoxGuest-freebsd.c.orig 2025-08-13 19:41:14 UTC
++++ src/VBox/Additions/common/VBoxGuest/VBoxGuest-freebsd.c
+@@ -55,6 +55,7 @@
+ #include <sys/uio.h>
+ #include <sys/bus.h>
+ #include <sys/poll.h>
++#include <sys/proc.h>
+ #include <sys/selinfo.h>
+ #include <sys/queue.h>
+ #include <sys/lock.h>
+@@ -71,6 +72,7 @@
+ #include <VBox/version.h>
+ #include <VBox/log.h>
+ #include <iprt/assert.h>
++#include <iprt/err.h>
+ #include <iprt/initterm.h>
+ #include <iprt/process.h>
+ #include <iprt/string.h>
+@@ -112,8 +114,6 @@ struct VBoxGuestDeviceState
+ struct resource *pIrqRes;
+ /** Pointer to the IRQ handler. */
+ void *pfnIrqHandler;
+- /** VMMDev version */
+- uint32_t u32Version;
+ };
+
+
+@@ -123,8 +123,7 @@ struct VBoxGuestDeviceState
+ /*
+ * Character device file handlers.
+ */
+-static d_fdopen_t vgdrvFreeBSDOpen;
+-static d_close_t vgdrvFreeBSDClose;
++static d_open_t vgdrvFreeBSDOpen;
+ static d_ioctl_t vgdrvFreeBSDIOCtl;
+ static int vgdrvFreeBSDIOCtlSlow(PVBOXGUESTSESSION pSession, u_long ulCmd, caddr_t pvData, struct thread *pTd);
+ static d_write_t vgdrvFreeBSDWrite;
+@@ -155,8 +154,7 @@ static struct cdevsw g_vgdrvFreeBSDChrDevSW =
+ {
+ .d_version = D_VERSION,
+ .d_flags = D_TRACKCLOSE | D_NEEDMINOR,
+- .d_fdopen = vgdrvFreeBSDOpen,
+- .d_close = vgdrvFreeBSDClose,
++ .d_open = vgdrvFreeBSDOpen,
+ .d_ioctl = vgdrvFreeBSDIOCtl,
+ .d_read = vgdrvFreeBSDRead,
+ .d_write = vgdrvFreeBSDWrite,
+@@ -164,81 +162,28 @@ static struct cdevsw g_vgdrvFreeBSDChrDevSW =
+ .d_name = "vboxguest"
+ };
+
++/** Device structure. */
++static struct cdev *g_pDev;
++
+ /** Device extention & session data association structure. */
+ static VBOXGUESTDEVEXT g_DevExt;
+
+-/** List of cloned device. Managed by the kernel. */
+-static struct clonedevs *g_pvgdrvFreeBSDClones;
+-/** The dev_clone event handler tag. */
+-static eventhandler_tag g_vgdrvFreeBSDEHTag;
+ /** Reference counter */
+ static volatile uint32_t cUsers;
+ /** selinfo structure used for polling. */
+ static struct selinfo g_SelInfo;
+
+-/**
+- * DEVFS event handler.
+- */
+-static void vgdrvFreeBSDClone(void *pvArg, struct ucred *pCred, char *pszName, int cchName, struct cdev **ppDev)
++static void vgdrvFreeBSDDtr(void *pSession)
+ {
+- int iUnit;
+- int rc;
+-
+- Log(("vgdrvFreeBSDClone: pszName=%s ppDev=%p\n", pszName, ppDev));
+-
+- /*
+- * One device node per user, si_drv1 points to the session.
+- * /dev/vboxguest<N> where N = {0...255}.
+- */
+- if (!ppDev)
+- return;
+- if (strcmp(pszName, "vboxguest") == 0)
+- iUnit = -1;
+- else if (dev_stdclone(pszName, NULL, "vboxguest", &iUnit) != 1)
+- return;
+- if (iUnit >= 256)
+- {
+- Log(("vgdrvFreeBSDClone: iUnit=%d >= 256 - rejected\n", iUnit));
+- return;
+- }
+-
+- Log(("vgdrvFreeBSDClone: pszName=%s iUnit=%d\n", pszName, iUnit));
+-
+- rc = clone_create(&g_pvgdrvFreeBSDClones, &g_vgdrvFreeBSDChrDevSW, &iUnit, ppDev, 0);
+- Log(("vgdrvFreeBSDClone: clone_create -> %d; iUnit=%d\n", rc, iUnit));
+- if (rc)
+- {
+- *ppDev = make_dev(&g_vgdrvFreeBSDChrDevSW,
+- iUnit,
+- UID_ROOT,
+- GID_WHEEL,
+- 0664,
+- "vboxguest%d", iUnit);
+- if (*ppDev)
+- {
+- dev_ref(*ppDev);
+- (*ppDev)->si_flags |= SI_CHEAPCLONE;
+- Log(("vgdrvFreeBSDClone: Created *ppDev=%p iUnit=%d si_drv1=%p si_drv2=%p\n",
+- *ppDev, iUnit, (*ppDev)->si_drv1, (*ppDev)->si_drv2));
+- (*ppDev)->si_drv1 = (*ppDev)->si_drv2 = NULL;
+- }
+- else
+- Log(("vgdrvFreeBSDClone: make_dev iUnit=%d failed\n", iUnit));
+- }
+- else
+- Log(("vgdrvFreeBSDClone: Existing *ppDev=%p iUnit=%d si_drv1=%p si_drv2=%p\n",
+- *ppDev, iUnit, (*ppDev)->si_drv1, (*ppDev)->si_drv2));
++ VGDrvCommonCloseSession(&g_DevExt, pSession);
++ ASMAtomicDecU32(&cUsers);
+ }
+
+ /**
+ * File open handler
+ *
+ */
+-#if __FreeBSD_version >= 700000
+-static int vgdrvFreeBSDOpen(struct cdev *pDev, int fOpen, struct thread *pTd, struct file *pFd)
+-#else
+-static int vgdrvFreeBSDOpen(struct cdev *pDev, int fOpen, struct thread *pTd)
+-#endif
++static int vgdrvFreeBSDOpen(struct cdev *pDev, int fOpen, int DevType, struct thread *pTd)
+ {
+ int rc;
+ PVBOXGUESTSESSION pSession;
+@@ -250,12 +195,6 @@ static int vgdrvFreeBSDOpen(struct cdev *pDev, int fOp
+ LogFlow(("vgdrvFreeBSDOpen:\n"));
+
+ /*
+- * Try grab it (we don't grab the giant, remember).
+- */
+- if (!ASMAtomicCmpXchgPtr(&pDev->si_drv1, (void *)0x42, NULL))
+- return EBUSY;
+-
+- /*
+ * Create a new session.
+ */
+ fRequestor = VMMDEV_REQUESTOR_USERMODE | VMMDEV_REQUESTOR_TRUST_NOT_GIVEN;
+@@ -272,47 +211,20 @@ static int vgdrvFreeBSDOpen(struct cdev *pDev, int fOp
+ rc = VGDrvCommonCreateUserSession(&g_DevExt, fRequestor, &pSession);
+ if (RT_SUCCESS(rc))
+ {
+- if (ASMAtomicCmpXchgPtr(&pDev->si_drv1, pSession, (void *)0x42))
+- {
+- Log(("vgdrvFreeBSDOpen: success - g_DevExt=%p pSession=%p rc=%d pid=%d\n", &g_DevExt, pSession, rc, (int)RTProcSelf()));
++ Log(("vgdrvFreeBSDOpen: success - g_DevExt=%p pSession=%p rc=%d pid=%d\n", &g_DevExt, pSession, rc, (int)RTProcSelf()));
++ rc = devfs_set_cdevpriv(pSession, vgdrvFreeBSDDtr);
++ if (rc)
++ VGDrvCommonCloseSession(&g_DevExt, pSession);
++ else
+ ASMAtomicIncU32(&cUsers);
+- return 0;
+- }
+-
+- VGDrvCommonCloseSession(&g_DevExt, pSession);
++ return rc;
+ }
+
+ LogRel(("vgdrvFreeBSDOpen: failed. rc=%d\n", rc));
+ return RTErrConvertToErrno(rc);
+ }
+
+-/**
+- * File close handler
+- *
+- */
+-static int vgdrvFreeBSDClose(struct cdev *pDev, int fFile, int DevType, struct thread *pTd)
+-{
+- PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)pDev->si_drv1;
+- Log(("vgdrvFreeBSDClose: fFile=%#x pSession=%p\n", fFile, pSession));
+
+- /*
+- * Close the session if it's still hanging on to the device...
+- */
+- if (RT_VALID_PTR(pSession))
+- {
+- VGDrvCommonCloseSession(&g_DevExt, pSession);
+- if (!ASMAtomicCmpXchgPtr(&pDev->si_drv1, NULL, pSession))
+- Log(("vgdrvFreeBSDClose: si_drv1=%p expected %p!\n", pDev->si_drv1, pSession));
+- ASMAtomicDecU32(&cUsers);
+- /* Don't use destroy_dev here because it may sleep resulting in a hanging user process. */
+- destroy_dev_sched(pDev);
+- }
+- else
+- Log(("vgdrvFreeBSDClose: si_drv1=%p!\n", pSession));
+- return 0;
+-}
+-
+-
+ /**
+ * I/O control request.
+ *
+@@ -326,8 +238,12 @@ static int vgdrvFreeBSDIOCtl(struct cdev *pDev, u_long
+ static int vgdrvFreeBSDIOCtl(struct cdev *pDev, u_long ulCmd, caddr_t pvData, int fFile, struct thread *pTd)
+ {
+ PVBOXGUESTSESSION pSession;
+- devfs_get_cdevpriv((void **)&pSession);
++ int rc;
+
++ rc = devfs_get_cdevpriv((void **)&pSession);
++ if (rc)
++ return rc;
++
+ /*
+ * Deal with the fast ioctl path first.
+ */
+@@ -526,8 +442,10 @@ static int vgdrvFreeBSDPoll(struct cdev *pDev, int fEv
+
+ LogFlow(("vgdrvFreeBSDPoll: fEvents=%d\n", fEvents));
+
+- PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)pDev->si_drv1;
+- if (RT_UNLIKELY(!RT_VALID_PTR(pSession))) {
++
++ rc = devfs_get_cdevpriv((void **)&pSession);
++ if (rc)
++ {
+ Log(("vgdrvFreeBSDPoll: no state data for %s\n", devtoname(pDev)));
+ return (fEvents & (POLLHUP|POLLIN|POLLRDNORM|POLLOUT|POLLWRNORM));
+ }
+@@ -568,11 +486,8 @@ static int vgdrvFreeBSDDetach(device_t pDevice)
+ /*
+ * Reverse what we did in vgdrvFreeBSDAttach.
+ */
+- if (g_vgdrvFreeBSDEHTag != NULL)
+- EVENTHANDLER_DEREGISTER(dev_clone, g_vgdrvFreeBSDEHTag);
++ destroy_dev(g_pDev);
+
+- clone_cleanup(&g_pvgdrvFreeBSDClones);
+-
+ vgdrvFreeBSDRemoveIRQ(pDevice, pState);
+
+ if (pState->pVMMDevMemRes)
+@@ -738,18 +653,21 @@ static int vgdrvFreeBSDAttach(device_t pDevice)
+ VGDrvCommonProcessOptionsFromHost(&g_DevExt);
+
+ /*
+- * Configure device cloning.
++ * Configure device.
+ */
+- clone_setup(&g_pvgdrvFreeBSDClones);
+- g_vgdrvFreeBSDEHTag = EVENTHANDLER_REGISTER(dev_clone, vgdrvFreeBSDClone, 0, 1000);
+- if (g_vgdrvFreeBSDEHTag)
++ g_pDev = make_dev(&g_vgdrvFreeBSDChrDevSW,
++ 0,
++ UID_ROOT,
++ GID_WHEEL,
++ 0664,
++ "vboxguest");
++ if (g_pDev)
+ {
+ printf(DEVICE_NAME ": loaded successfully\n");
+ return 0;
+ }
+
+- printf(DEVICE_NAME ": EVENTHANDLER_REGISTER(dev_clone,,,) failed\n");
+- clone_cleanup(&g_pvgdrvFreeBSDClones);
++ printf(DEVICE_NAME ": make_dev failed\n");
+ vgdrvFreeBSDRemoveIRQ(pDevice, pState);
+ }
+ else
+@@ -793,8 +711,12 @@ static driver_t vgdrvFreeBSDDriver =
+ sizeof(struct VBoxGuestDeviceState),
+ };
+
++#if __FreeBSD_version >= 1400058
++DRIVER_MODULE(vboxguest, pci, vgdrvFreeBSDDriver, 0, 0);
++#else
+ static devclass_t vgdrvFreeBSDClass;
+
+ DRIVER_MODULE(vboxguest, pci, vgdrvFreeBSDDriver, vgdrvFreeBSDClass, 0, 0);
++#endif
+ MODULE_VERSION(vboxguest, 1);
+
diff --git a/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-freebsd-Makefile b/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-freebsd-Makefile
new file mode 100644
index 000000000000..1430dbb721fb
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-freebsd-Makefile
@@ -0,0 +1,27 @@
+--- src/VBox/Additions/common/VBoxGuest/freebsd/Makefile.orig 2025-08-13 19:41:14 UTC
++++ src/VBox/Additions/common/VBoxGuest/freebsd/Makefile
+@@ -35,7 +35,7 @@ KMOD = vboxguest
+ #
+ KMOD = vboxguest
+
+-CFLAGS += -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -Iinclude -I. -Ir0drv -w -DVBGL_VBOXGUEST -DVBOX_WITH_HGCM -DVBOX_WITH_64_BITS_GUESTS
++CFLAGS += -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0 -DIN_GUEST -DIN_GUEST_R0 -DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -Iinclude -I. -Ir0drv -w -DVBGL_VBOXGUEST -DVBOX_WITH_HGCM -DVBOX_WITH_64_BITS_GUESTS
+
+ .if (${MACHINE_ARCH} == "i386")
+ CFLAGS += -DRT_ARCH_X86
+@@ -91,6 +91,7 @@ SRCS += \
+ handletable.c \
+ handletablectx.c \
+ once.c \
++ term.c \
+ thread.c
+
+ .PATH: ${.CURDIR}/common/string
+@@ -163,6 +164,7 @@ SRCS += \
+
+ .PATH: ${.CURDIR}/r0drv
+ SRCS += \
++ alloc-ef-r0drv.c \
+ alloc-r0drv.c \
+ initterm-r0drv.c \
+ memobj-r0drv.c \
diff --git a/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-freebsd-files_vboxguest b/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-freebsd-files_vboxguest
new file mode 100644
index 000000000000..57eed06c6dbe
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-freebsd-files_vboxguest
@@ -0,0 +1,34 @@
+--- src/VBox/Additions/common/VBoxGuest/freebsd/files_vboxguest.orig 2025-08-13 19:41:14 UTC
++++ src/VBox/Additions/common/VBoxGuest/freebsd/files_vboxguest
+@@ -74,6 +74,7 @@ FILES_VBOXGUEST_NOBIN=" \
+ ${PATH_ROOT}/include/iprt/time.h=>include/iprt/time.h \
+ ${PATH_ROOT}/include/iprt/timer.h=>include/iprt/timer.h \
+ ${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \
++ ${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \
+ ${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \
+ ${PATH_ROOT}/include/iprt/uuid.h=>include/iprt/uuid.h \
+ ${PATH_ROOT}/include/iprt/crc.h=>include/iprt/crc.h \
+@@ -125,6 +126,7 @@ FILES_VBOXGUEST_NOBIN=" \
+ ${PATH_ROOT}/src/VBox/Runtime/common/misc/handletable.h=>common/misc/handletable.h \
+ ${PATH_ROOT}/src/VBox/Runtime/common/misc/handletablectx.cpp=>common/misc/handletablectx.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/misc/once.cpp=>common/misc/once.c \
++ ${PATH_ROOT}/src/VBox/Runtime/common/misc/term.cpp=>common/misc/term.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/misc/thread.cpp=>common/misc/thread.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/misc/RTAssertMsg1Weak.cpp=>common/misc/RTAssertMsg1Weak.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/misc/RTAssertMsg2.cpp=>common/misc/RTAssertMsg2.c \
+@@ -200,6 +202,7 @@ FILES_VBOXGUEST_NOBIN=" \
+ ${PATH_ROOT}/src/VBox/Runtime/generic/errvars-generic.cpp=>generic/errvars-generic.c \
+ ${PATH_ROOT}/src/VBox/Runtime/generic/timer-generic.cpp=>generic/timer-generic.c \
+ ${PATH_ROOT}/src/VBox/Runtime/generic/mppresent-generic.cpp=>generic/mppresent-generic.c \
++ ${PATH_ROOT}/src/VBox/Runtime/r0drv/alloc-ef-r0drv.cpp=>r0drv/alloc-ef-r0drv.c \
+ ${PATH_ROOT}/src/VBox/Runtime/r0drv/alloc-r0drv.cpp=>r0drv/alloc-r0drv.c \
+ ${PATH_ROOT}/src/VBox/Runtime/r0drv/alloc-r0drv.h=>r0drv/alloc-r0drv.h \
+ ${PATH_ROOT}/src/VBox/Runtime/r0drv/initterm-r0drv.cpp=>r0drv/initterm-r0drv.c \
+@@ -226,6 +229,7 @@ FILES_VBOXGUEST_NOBIN=" \
+ ${PATH_ROOT}/src/VBox/Runtime/r0drv/freebsd/sleepqueue-r0drv-freebsd.h=>r0drv/freebsd/sleepqueue-r0drv-freebsd.h \
+ ${PATH_ROOT}/src/VBox/Runtime/r0drv/generic/semspinmutex-r0drv-generic.c=>r0drv/generic/semspinmutex-r0drv-generic.c \
+ ${PATH_ROOT}/src/VBox/Runtime/r0drv/generic/mpnotification-r0drv-generic.cpp=>r0drv/generic/mpnotification-r0drv-generic.c \
++ ${PATH_ROOT}/src/VBox/Runtime/r0drv/generic/threadctxhooks-r0drv-generic.cpp=>r0drv/generic/threadctxhooks-r0drv-generic.c \
+ ${PATH_ROOT}/src/VBox/Runtime/r0drv/generic/RTMpIsCpuWorkPending-r0drv-generic.cpp=>r0drv/generic/RTMpIsCpuWorkPending-r0drv-generic.c \
+ ${PATH_ROOT}/src/VBox/Runtime/r0drv/memobj-r0drv.cpp=>r0drv/memobj-r0drv.c \
+ ${PATH_ROOT}/src/VBox/Runtime/VBox/log-vbox.cpp=>VBox/log-vbox.c \
diff --git a/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-x11-Installer-98vboxadd-xclient b/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-x11-Installer-98vboxadd-xclient
new file mode 100644
index 000000000000..5ac88befbb88
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-x11-Installer-98vboxadd-xclient
@@ -0,0 +1,25 @@
+--- src/VBox/Additions/x11/Installer/98vboxadd-xclient.orig 2025-08-13 19:41:21 UTC
++++ src/VBox/Additions/x11/Installer/98vboxadd-xclient
+@@ -42,15 +42,15 @@ elif test -z "${SSH_CONNECTION}"; then
+ # not use "exit" here as this script is "source"d, not executed.
+
+ # Check wheather X11 or Wayland version of VBoxClient should be started.
+- vbox_wl_check=$(/usr/bin/vboxwl --check 2> /dev/null)
++ vbox_wl_check=$(/usr/local/bin/vboxwl --check 2> /dev/null)
+ if test "$vbox_wl_check" = "WL"; then
+- /usr/bin/VBoxClient --wayland
++ /usr/local/bin/VBoxClient --wayland
+ else
+- /usr/bin/VBoxClient --clipboard
+- /usr/bin/VBoxClient --seamless
+- /usr/bin/VBoxClient --draganddrop
++ /usr/local/bin/VBoxClient --clipboard
++ /usr/local/bin/VBoxClient --seamless
++ /usr/local/bin/VBoxClient --draganddrop
+ fi
+
+- /usr/bin/VBoxClient --checkhostversion
+- /usr/bin/VBoxClient --vmsvga-session # In case VMSVGA emulation is enabled
++ /usr/local/bin/VBoxClient --checkhostversion
++ /usr/local/bin/VBoxClient --vmsvga-session # In case VMSVGA emulation is enabled
+ fi
diff --git a/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-x11-Installer-vboxclient.desktop b/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-x11-Installer-vboxclient.desktop
new file mode 100644
index 000000000000..a76eb7616038
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-x11-Installer-vboxclient.desktop
@@ -0,0 +1,10 @@
+--- src/VBox/Additions/x11/Installer/vboxclient.desktop.orig 2020-05-13 19:37:09 UTC
++++ src/VBox/Additions/x11/Installer/vboxclient.desktop
+@@ -8,6 +8,6 @@ Comment[C]=VirtualBox User Session Services
+ Comment=VirtualBox User Session Services
+ Comment[it]=Servizi di sessione utente di VirtualBox
+ Comment[pl]=Usługi sesji użytkownika VirtualBox
+-Exec=/usr/bin/VBoxClient-all
++Exec=/usr/local/bin/VBoxClient-all
+ X-GNOME-Autostart-enabled=true
+ X-KDE-autostart-after=panel
diff --git a/emulators/virtualbox-ose-72/files/patch-src-VBox-HostDrivers-VBoxNetAdp-Makefile.kmk b/emulators/virtualbox-ose-72/files/patch-src-VBox-HostDrivers-VBoxNetAdp-Makefile.kmk
new file mode 100644
index 000000000000..2427e708059b
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src-VBox-HostDrivers-VBoxNetAdp-Makefile.kmk
@@ -0,0 +1,20 @@
+--- src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk.orig 2025-08-13 19:51:10 UTC
++++ src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk
+@@ -220,10 +220,14 @@ ifeq ($(KBUILD_TARGET),freebsd)
+ $$(if $$(eq $$(VBoxNetAdp/freebsd/Makefile_VBOX_HARDENED),$$(VBOX_WITH_HARDENING)),,FORCE) \
+ | $$(dir $$@)
+ $(QUIET)$(RM) -f -- $@
+- ifndef VBOX_WITH_HARDENING
+- $(QUIET)$(SED) -e "s;VBOX_WITH_HARDENING;;g" --output $@ $<
+- else
+ $(QUIET)$(CP) -f $< $@
++ ifndef VBOX_WITH_HARDENING
++ $(QUIET)$(SED) -e "s;-DVBOX_WITH_HARDENING;;g" --output $@.tmp $@
++ $(QUIET)$(MV) -f $@.tmp $@
++ endif
++ ifndef VBOX_WITH_NETFLT_VIMAGE
++ $(QUIET)$(SED) -e "s;-DVIMAGE;;g" --output $@.tmp $@
++ $(QUIET)$(MV) -f $@.tmp $@
+ endif
+
+ endif # freebsd
diff --git a/emulators/virtualbox-ose-72/files/patch-src-VBox-HostDrivers-VBoxNetFlt-freebsd-files_vboxnetflt b/emulators/virtualbox-ose-72/files/patch-src-VBox-HostDrivers-VBoxNetFlt-freebsd-files_vboxnetflt
new file mode 100644
index 000000000000..1ee95be5b24d
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src-VBox-HostDrivers-VBoxNetFlt-freebsd-files_vboxnetflt
@@ -0,0 +1,10 @@
+--- src/VBox/HostDrivers/VBoxNetFlt/freebsd/files_vboxnetflt.orig 2025-08-13 19:51:11 UTC
++++ src/VBox/HostDrivers/VBoxNetFlt/freebsd/files_vboxnetflt
+@@ -73,6 +73,7 @@ VBOX_VBOXNETFLT_SOURCES=" \
+ ${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \
+ ${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \
+ ${PATH_ROOT}/include/iprt/uuid.h=>include/iprt/uuid.h \
++ ${PATH_ROOT}/include/iprt/x86.h=>include/iprt/x86.h \
+ ${PATH_ROOT}/include/iprt/x86-helpers.h=>include/iprt/x86-helpers.h \
+ ${PATH_ROOT}/include/iprt/nocrt/limits.h=>include/iprt/nocrt/limits.h \
+ ${PATH_ROOT}/include/VBox/cdefs.h=>include/VBox/cdefs.h \
diff --git a/emulators/virtualbox-ose-72/files/patch-src-VBox-Installer-Makefile.kmk b/emulators/virtualbox-ose-72/files/patch-src-VBox-Installer-Makefile.kmk
new file mode 100644
index 000000000000..f9e9ce8ec516
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src-VBox-Installer-Makefile.kmk
@@ -0,0 +1,14 @@
+--- src/VBox/Installer/Makefile.kmk.orig 2025-08-13 19:51:15 UTC
++++ src/VBox/Installer/Makefile.kmk
+@@ -51,9 +51,11 @@ ifndef VBOX_ONLY_SDK
+ if "$(KBUILD_TARGET)" == "win" && "$(KBUILD_HOST)" == "win"
+ include $(PATH_SUB_CURRENT)/win/Makefile.kmk
+ endif
++if 0
+ if "$(KBUILD_TARGET)" == "freebsd" && "$(KBUILD_HOST)" == "freebsd"
+ include $(PATH_SUB_CURRENT)/freebsd/Makefile.kmk
+ endif
++endif
+ endif
+
+ include $(PATH_SUB_CURRENT)/common/Makefile.kmk
diff --git a/emulators/virtualbox-ose-72/files/patch-src-VBox-Installer-freebsd-VBox.sh b/emulators/virtualbox-ose-72/files/patch-src-VBox-Installer-freebsd-VBox.sh
new file mode 100644
index 000000000000..b4c177a54d1c
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src-VBox-Installer-freebsd-VBox.sh
@@ -0,0 +1,77 @@
+--- src/VBox/Installer/freebsd/VBox.sh.orig 2016-08-27 05:10:34 UTC
++++ src/VBox/Installer/freebsd/VBox.sh
+@@ -0,0 +1,74 @@
++#!/bin/sh
++#
++# Oracle VM VirtualBox startup script, FreeBSD hosts.
++#
++# Copyright (C) 2006-2012 Oracle Corporation
++#
++# This file is part of VirtualBox Open Source Edition (OSE), as
++# available from http://www.virtualbox.org. This file is free software;
++# you can redistribute it and/or modify it under the terms of the GNU
++# General Public License (GPL) as published by the Free Software
++# Foundation, in version 2 as it comes in the "COPYING" file of the
++# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
++# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
++#
++
++PATH="/sbin:/bin:/usr/sbin:/usr/bin:%%LOCALBASE%%/sbin:%%LOCALBASE%%/bin"
++CONFIG="%%VBOX_ETC%%/vbox.cfg"
++
++test -r "${CONFIG}" &&
++ . "${CONFIG}"
++test -z "${INSTALL_DIR}" &&
++ if test -d %%VBOX_DIR%% &&
++ test -f %%VBOX_DIR%%/VBoxRT.so; then
++ INSTALL_DIR=%%VBOX_DIR%%
++ else
++ >&2 echo "Could not find VirtualBox installation. Please reinstall."
++ exit 1
++ fi
++
++if [ -d /etc/vbox ]; then
++ >&2 cat <<-EOH
++ WARNING: Directory /etc/vbox found, but ignored. VirtualBox
++ configuration files are stored in %%VBOX_ETC%%/.
++ EOH
++fi
++
++# workaround for the KDE dialog problem
++KDE_FORK_SLAVES=1; export KDE_FORK_SLAVES
++
++APP=`basename $0`
++case "$APP" in
++ VirtualBox|virtualbox)
++ exec "$INSTALL_DIR/VirtualBox" "$@"
++ ;;
++ VirtualBoxVM|virtualboxvm)
++ exec "$INSTALL_DIR/VirtualBoxVM" "$@"
++ ;;
++ VBoxManage|vboxmanage)
++ exec "$INSTALL_DIR/VBoxManage" "$@"
++ ;;
++ VBoxSDL|vboxsdl)
++ exec "$INSTALL_DIR/VBoxSDL" "$@"
++ ;;
++ VBoxVRDP|VBoxHeadless|vboxheadless)
++ exec "$INSTALL_DIR/VBoxHeadless" "$@"
++ ;;
++ VBoxAutostart|vboxautostart)
++ exec "$INSTALL_DIR/VBoxAutostart" "$@"
++ ;;
++ VBoxBalloonCtrl|vboxballoonctrl)
++ exec "$INSTALL_DIR/VBoxBalloonCtrl" "$@"
++ ;;
++ VBoxBugReport|vboxbugreport)
++ exec "$INSTALL_DIR/VBoxBugReport" "$@"
++ ;;
++ vboxwebsrv)
++ exec "$INSTALL_DIR/vboxwebsrv" "$@"
++ ;;
++ *)
++ >&2 echo "Unknown application - $APP"
++ exit 1
++ ;;
++esac
++exit 0
diff --git a/emulators/virtualbox-ose-72/files/patch-src-VBox-Main-src-server-VirtualBoxImpl.cpp b/emulators/virtualbox-ose-72/files/patch-src-VBox-Main-src-server-VirtualBoxImpl.cpp
new file mode 100644
index 000000000000..85c886d9ec84
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src-VBox-Main-src-server-VirtualBoxImpl.cpp
@@ -0,0 +1,11 @@
+--- src/VBox/Main/src-server/VirtualBoxImpl.cpp.orig 2025-08-13 19:51:27 UTC
++++ src/VBox/Main/src-server/VirtualBoxImpl.cpp
+@@ -3097,7 +3097,7 @@ int VirtualBox::i_encryptSettingBytes(const uint8_t *a
+ if (aCiphertextSize < 32)
+ return VERR_INVALID_PARAMETER;
+
+- AssertCompile(sizeof(m->SettingsCipherKey) >= 32);
++ // AssertCompile(sizeof(m->SettingsCipherKey) >= 32);
+
+ /* store the first 8 bytes of the cipherkey for verification */
+ for (i = 0, j = 0; i < 8; i++, j++)
diff --git a/emulators/virtualbox-ose-72/files/patch-src-VBox-Runtime-r0drv-freebsd-sleepqueue-r0drv-freebsd.h b/emulators/virtualbox-ose-72/files/patch-src-VBox-Runtime-r0drv-freebsd-sleepqueue-r0drv-freebsd.h
new file mode 100644
index 000000000000..d3f79ede9e50
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src-VBox-Runtime-r0drv-freebsd-sleepqueue-r0drv-freebsd.h
@@ -0,0 +1,39 @@
+Without the first part of this patch, any waits for periods shorter than a
+single tick return immediately leading to a lot of unnecessary spinning. For
+example, I observe that my guest's idle loop does a lot of sleeps with periods
+slightly shorter than 1 ms (1/hz), e.g. 900us. All that waiting turns into pure
+spinning and VirtualBox eats 100% of a core.
+
+The clamping improves the situation significantly. Also, it (approximately)
+follows what tvtohz does. The rest of the patch just chases an upstream
+KPI change.
+
+Submitted by: Andriy Gapon <avg@FreeBSD.org>
+--- src/VBox/Runtime/r0drv/freebsd/sleepqueue-r0drv-freebsd.h.orig 2025-08-13 19:51:51 UTC
++++ src/VBox/Runtime/r0drv/freebsd/sleepqueue-r0drv-freebsd.h
+@@ -94,6 +94,8 @@ DECLINLINE(uint32_t) rtR0SemBsdWaitUpdateTimeout(PRTR0
+ uint64_t cTicks = ASMMultU64ByU32DivByU32(uTimeout, hz, UINT32_C(1000000000));
+ if (cTicks >= INT_MAX)
+ return RTSEMWAIT_FLAGS_INDEFINITE;
++ else if (cTicks == 0 && uTimeout > 0)
++ pWait->iTimeout = 1;
+ else
+ pWait->iTimeout = (int)cTicks;
+ #endif
+@@ -310,10 +312,16 @@ DECLINLINE(void) rtR0SemBsdSignal(void *pvWaitChan)
+ DECLINLINE(void) rtR0SemBsdSignal(void *pvWaitChan)
+ {
+ sleepq_lock(pvWaitChan);
++#if __FreeBSD_version < 1500022
+ int fWakeupSwapProc = sleepq_signal(pvWaitChan, SLEEPQ_CONDVAR, 0, 0);
++#else
++ sleepq_signal(pvWaitChan, SLEEPQ_CONDVAR, 0, 0);
++#endif
+ sleepq_release(pvWaitChan);
++#if __FreeBSD_version < 1500022
+ if (fWakeupSwapProc)
+ kick_proc0();
++#endif
+ }
+
+ /**
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_common_VBoxService_VBoxServiceVMInfo.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_common_VBoxService_VBoxServiceVMInfo.cpp
new file mode 100644
index 000000000000..0c463e3d9923
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_common_VBoxService_VBoxServiceVMInfo.cpp
@@ -0,0 +1,71 @@
+--- src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp.orig 2025-08-13 19:41:16 UTC
++++ src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp
+@@ -77,8 +77,8 @@
+ # include <net/if.h>
+ # include <pwd.h> /* getpwuid */
+ # include <unistd.h>
+-# if !defined(RT_OS_OS2) && !defined(RT_OS_FREEBSD) && !defined(RT_OS_HAIKU)
+-# include <utmpx.h> /** @todo FreeBSD 9 should have this. */
++# if !defined(RT_OS_OS2) && !defined(RT_OS_HAIKU)
++# include <utmpx.h>
+ # endif
+ # ifdef RT_OS_OS2
+ # include <net/if_dl.h>
+@@ -573,7 +573,7 @@ static void vgsvcVMInfoWriteFixedProperties(void)
+ }
+
+
+-#if defined(VBOX_WITH_DBUS) && defined(RT_OS_LINUX) /* Not yet for Solaris/FreeBSB. */
++#if defined(VBOX_WITH_DBUS) && (defined(RT_OS_LINUX) || defined(RT_OS_FREEBSD)) /* Not yet for Solaris. */
+ /*
+ * Simple wrappers to work around compiler-specific va_list madness.
+ */
+@@ -702,12 +702,6 @@ static int vgsvcVMInfoWriteUsers(void)
+ #ifdef RT_OS_WINDOWS
+ rc = VGSvcVMInfoWinWriteUsers(&g_VMInfoPropCache, &pszUserList, &cUsersInList);
+
+-#elif defined(RT_OS_FREEBSD)
+- /** @todo FreeBSD: Port logged on user info retrieval.
+- * However, FreeBSD 9 supports utmpx, so we could use the code
+- * block below (?). */
+- rc = VERR_NOT_IMPLEMENTED;
+-
+ #elif defined(RT_OS_HAIKU)
+ /** @todo Haiku: Port logged on user info retrieval. */
+ rc = VERR_NOT_IMPLEMENTED;
+@@ -733,7 +727,7 @@ static int vgsvcVMInfoWriteUsers(void)
+ while ( (ut_user = getutxent())
+ && RT_SUCCESS(rc))
+ {
+-# ifdef RT_OS_DARWIN /* No ut_user->ut_session on Darwin */
++# if defined(RT_OS_DARWIN) || defined(RT_OS_FREEBSD) /* No ut_user->ut_session on Darwin/FreeBSD */
+ VGSvcVerbose(4, "Found entry '%s' (type: %d, PID: %RU32)\n", ut_user->ut_user, ut_user->ut_type, ut_user->ut_pid);
+ # else
+ VGSvcVerbose(4, "Found entry '%s' (type: %d, PID: %RU32, session: %RU32)\n",
+@@ -749,7 +743,7 @@ static int vgsvcVMInfoWriteUsers(void)
+ }
+
+ # ifdef VBOX_WITH_DBUS
+-# if defined(RT_OS_LINUX) /* Not yet for Solaris/FreeBSB. */
++# if defined(RT_OS_LINUX) || defined(RT_OS_FREEBSD) /* Not yet for Solaris. */
+ DBusError dbErr;
+ DBusConnection *pConnection = NULL;
+ int rc2 = RTDBusLoadLib();
+@@ -1074,7 +1068,7 @@ static int vgsvcVMInfoWriteUsers(void)
+ if ( fHaveLibDbus
+ && dbus_error_is_set(&dbErr))
+ dbus_error_free(&dbErr);
+-# endif /* RT_OS_LINUX */
++# endif /* RT_OS_LINUX || RT_OS_FREEBSD */
+ # endif /* VBOX_WITH_DBUS */
+
+ /* Calc the string length. */
+@@ -1109,7 +1103,7 @@ static int vgsvcVMInfoWriteUsers(void)
+ RTMemFree(papszUsers);
+
+ endutxent(); /* Close utmpx file. */
+-#endif /* !RT_OS_WINDOWS && !RT_OS_FREEBSD && !RT_OS_HAIKU && !RT_OS_OS2 */
++#endif /* !RT_OS_WINDOWS && !RT_OS_HAIKU && !RT_OS_OS2 */
+
+ Assert(RT_FAILURE(rc) || cUsersInList == 0 || (pszUserList && *pszUserList));
+
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_common_pam_pam__vbox.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_common_pam_pam__vbox.cpp
new file mode 100644
index 000000000000..ff9853417bdd
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_common_pam_pam__vbox.cpp
@@ -0,0 +1,20 @@
+--- src/VBox/Additions/common/pam/pam_vbox.cpp.orig 2025-08-13 19:41:17 UTC
++++ src/VBox/Additions/common/pam/pam_vbox.cpp
+@@ -113,7 +113,7 @@ static void pam_vbox_writesyslog(char *pszBuf)
+ openlog("pam_vbox", LOG_PID, LOG_AUTHPRIV);
+ syslog(LOG_ERR, "%s", pszBuf);
+ closelog();
+-#elif defined(RT_OS_SOLARIS)
++#elif defined(RT_OS_FREEBSD) || defined(RT_OS_SOLARIS)
+ syslog(LOG_ERR, "pam_vbox: %s\n", pszBuf);
+ #endif
+ }
+@@ -192,7 +192,7 @@ static int vbox_set_msg(pam_handle_t *hPAM, int iStyle
+
+ pam_message msg;
+ msg.msg_style = iStyle;
+-#ifdef RT_OS_SOLARIS
++#if defined(RT_OS_FREEBSD) || defined(RT_OS_SOLARIS)
+ msg.msg = (char*)pszText;
+ #else
+ msg.msg = pszText;
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_Makefile b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_Makefile
new file mode 100644
index 000000000000..4f026e38c70a
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_Makefile
@@ -0,0 +1,38 @@
+--- src/VBox/Additions/freebsd/Makefile.orig 2025-08-13 19:41:17 UTC
++++ src/VBox/Additions/freebsd/Makefile
+@@ -40,6 +40,14 @@ all:
+ cp vboxvfs/vboxvfs.ko .; \
+ fi; \
+ fi
++ @echo
++ @if [ -d mount_vboxvfs ]; then \
++ echo "=== Building mount_vboxvfs binary ==="; \
++ $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C mount_vboxvfs clean obj depend all; \
++ if [ -f mount_vboxvfs ]; then \
++ cp mount_vboxvfs/mount_vboxvfs .; \
++ fi; \
++ fi
+
+
+ install:
+@@ -47,13 +55,19 @@ install:
+ @if [ -d vboxvfs ]; then \
+ $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxvfs install; \
+ fi
++ @if [ -d mount_vboxvfs ]; then \
++ $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C mount_vboxvfs install; \
++ fi
+
+ clean:
+ @$(MAKE) -C vboxguest clean
+ @if [ -d vboxvfs ]; then \
+ $(MAKE) -C vboxvfs clean; \
+ fi
+- rm -f vboxguest.*o vboxvfs.*o
++ @if [ -d mount_vboxvfs ]; then \
++ $(MAKE) -C mount_vboxvfs clean; \
++ fi
++ rm -f vboxguest.*o vboxvfs.*o mount_vboxvfs
+
+ load:
+ @/sbin/kldunload vboxvfs || true
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_Makefile.kmk b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_Makefile.kmk
new file mode 100644
index 000000000000..821e1fc5d431
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_Makefile.kmk
@@ -0,0 +1,31 @@
+--- src/VBox/Additions/freebsd/Makefile.kmk.orig 2025-08-13 19:41:17 UTC
++++ src/VBox/Additions/freebsd/Makefile.kmk
+@@ -33,8 +33,9 @@ endif
+ endif
+
+ # Include sub-makefiles.
+-#include $(PATH_SUB_CURRENT)/vboxvfs/Makefile.kmk
+-include $(PATH_SUB_CURRENT)/drm/Makefile.kmk
++include $(PATH_SUB_CURRENT)/vboxvfs/Makefile.kmk
++#include $(PATH_SUB_CURRENT)/drm/Makefile.kmk
++include $(PATH_SUB_CURRENT)/mount_vboxvfs/Makefile.kmk
+
+ #
+ # Globals
+@@ -76,11 +77,14 @@ VBOX_FBSD_ADD_STRIP_BIN = \
+ vboxvideo_drv_14.so \
+ vboxvideo_drv_15.so \
+ vboxvideo_drv_16.so \
+- vboxvideo_drv_17.so
++ vboxvideo_drv_17.so \
++ $(if $(VBOX_WITH_PAM),pam_vbox.so,) \
++ VBoxOGL.so \
++ mount_vboxvfs
+
+ VBOX_FBSD_ADD_MODULES = \
+ vboxguest \
+- vboxvideo_drm
++ vboxvfs
+
+ #
+ # All the bin files that go into the archives.
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_drm_vboxvideo__drm.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_drm_vboxvideo__drm.c
new file mode 100644
index 000000000000..3ab11cbd1ed7
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_drm_vboxvideo__drm.c
@@ -0,0 +1,17 @@
+--- src/VBox/Additions/freebsd/drm/vboxvideo_drm.c.orig 2025-08-13 19:41:18 UTC
++++ src/VBox/Additions/freebsd/drm/vboxvideo_drm.c
+@@ -164,10 +164,14 @@ static driver_t vboxvideo_driver = {
+ sizeof(struct drm_device)
+ };
+
++#if __FreeBSD_version >= 1400058
++DRIVER_MODULE(vboxvideo, vgapci, vboxvideo_driver, 0, 0);
++#else
+ extern devclass_t drm_devclass;
+ #if __FreeBSD_version >= 700010
+ DRIVER_MODULE(vboxvideo, vgapci, vboxvideo_driver, drm_devclass, 0, 0);
+ #else
+ DRIVER_MODULE(vboxvideo, pci, vboxvideo_driver, drm_devclass, 0, 0);
++#endif
+ #endif
+ MODULE_DEPEND(vboxvideo, drm, 1, 1, 1);
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_mount__vboxvfs_Makefile.kmk b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_mount__vboxvfs_Makefile.kmk
new file mode 100644
index 000000000000..270472c045e3
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_mount__vboxvfs_Makefile.kmk
@@ -0,0 +1,31 @@
+--- src/VBox/Additions/freebsd/mount_vboxvfs/Makefile.kmk.orig 2025-05-11 03:54:13 UTC
++++ src/VBox/Additions/freebsd/mount_vboxvfs/Makefile.kmk
+@@ -0,0 +1,28 @@
++# $Id: Makefile.kmk $
++## @file
++# Sub-Makefile for the FreeBSD Shared folder mount utility.
++#
++
++SUB_DEPTH = ../../../../..
++include $(KBUILD_PATH)/subheader.kmk
++
++ifneq ($(KBUILD_HOST),freebsd)
++$(error "The FreeBSD guest additions can only be built on FreeBSD!")
++endif
++
++MOUNT= $(VBOX_FREEBSD_SRC)/../sbin/mount
++
++CFLAGS+=-I$(MOUNT)
++
++PROGRAMS += mount_vboxvfs
++mount_vboxvfs_TEMPLATE = NewVBoxGuestR3Exe
++mount_vboxvfs_SOURCES = mount_vboxvfs.c
++
++ifdef HAVE_MNTOPTS_IN_LIBUTIL
++mount_vboxvfs_LIBS = util
++else
++mount_vboxvfs_SOURCES += $(MOUNT)/getmntopts.c
++endif
++
++include $(FILE_KBUILD_SUB_FOOTER)
++
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_mount__vboxvfs_mount__vboxvfs.8 b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_mount__vboxvfs_mount__vboxvfs.8
new file mode 100644
index 000000000000..41fcdd6d019b
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_mount__vboxvfs_mount__vboxvfs.8
@@ -0,0 +1,56 @@
+--- src/VBox/Additions/freebsd/mount_vboxvfs/mount_vboxvfs.8.orig 2025-08-28 22:09:24 UTC
++++ src/VBox/Additions/freebsd/mount_vboxvfs/mount_vboxvfs.8
+@@ -0,0 +1,53 @@
++.\"
++.\" Copyright (c) 1992, 1993, 1994
++.\" The Regents of the University of California. All rights reserved.
++.\"
++.\" Redistribution and use in source and binary forms, with or without
++.\" modification, are permitted provided that the following conditions
++.\" are met:
++.\" 1. Redistributions of source code must retain the above copyright
++.\" notice, this list of conditions and the following disclaimer.
++.\" 2. Redistributions in binary form must reproduce the above copyright
++.\" notice, this list of conditions and the following disclaimer in the
++.\" documentation and/or other materials provided with the distribution.
++.\" 4. Neither the name of the University nor the names of its contributors
++.\" may be used to endorse or promote products derived from this software
++.\" without specific prior written permission.
++.\"
++.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
++.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
++.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++.\" SUCH DAMAGE.
++.\"
++.Dd August 5, 2013
++.Dt MOUNT_VBOXFS 8
++.Os
++.Sh NAME
++.Nm mount_vboxfs
++.Nd "Mount the VirtualBox shared folder NAME from the host system to MOUNTPOINT"
++.Sh SYNOPSIS
++.Nm
++.Op Fl o Ar options
++.Ar NAME
++.Ar MOUNTPOINT
++.Sh DESCRIPTION
++The
++.Nm
++Mount the VirtualBox shared folder NAME from the host system to MOUNTPOINT
++.Pp
++The options are as follows:
++.Bl -tag -width indent
++.Fl w
++mount the shared folder writably (the default)
++.Fl r
++mount the shared folder read-only
++.Fl o
++OPTION[,OPTION...] use the mount options specified
++.El
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_mount__vboxvfs_mount__vboxvfs.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_mount__vboxvfs_mount__vboxvfs.c
new file mode 100644
index 000000000000..1f85abc198b9
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_mount__vboxvfs_mount__vboxvfs.c
@@ -0,0 +1,171 @@
+--- src/VBox/Additions/freebsd/mount_vboxvfs/mount_vboxvfs.c.orig 2025-08-28 22:09:24 UTC
++++ src/VBox/Additions/freebsd/mount_vboxvfs/mount_vboxvfs.c
+@@ -0,0 +1,168 @@
++/*
++* Copyright (c) 1992, 1993, 1994
++* The Regents of the University of California. All rights reserved.
++*
++* Redistribution and use in source and binary forms, with or without
++* modification, are permitted provided that the following conditions
++* are met:
++* 1. Redistributions of source code must retain the above copyright
++* notice, this list of conditions and the following disclaimer.
++* 2. Redistributions in binary form must reproduce the above copyright
++* notice, this list of conditions and the following disclaimer in the
++* documentation and/or other materials provided with the distribution.
++* 4. Neither the name of the University nor the names of its contributors
++* may be used to endorse or promote products derived from this software
++* without specific prior written permission.
++*
++* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
++* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
++* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++* SUCH DAMAGE.
++*/
++
++#include <sys/cdio.h>
++#include <sys/stat.h>
++#include <sys/file.h>
++#include <sys/iconv.h>
++#include <sys/param.h>
++#include <sys/linker.h>
++#include <sys/module.h>
++#include <sys/mount.h>
++#include <sys/uio.h>
++
++#include <err.h>
++#include <errno.h>
++#include <stdlib.h>
++#include <stdio.h>
++#include <string.h>
++#include <sysexits.h>
++#include <unistd.h>
++
++#include "mntopts.h"
++
++#define MAX_HOST_NAME 256
++static char mount_point[MAXPATHLEN + 1];
++static char vboxfs_vfsname[] = "vboxvfs";
++static struct mntopt mopts[] = {
++ MOPT_STDOPTS,
++ MOPT_END
++};
++
++static void usage(void) __dead2;
++
++static void
++usage(void)
++{
++ fprintf(stderr,
++ "Usage: [OPTIONS] NAME MOUNTPOINT\n"
++ "Mount the VirtualBox shared folder NAME to MOUNTPOINT.\n"
++ "\nOptions:\n"
++ " -w mount the shared folder writable \n"
++ " -r mount the shared folder read-only (the default)\n");
++ exit(1);
++}
++
++int
++main(int argc, char *argv[])
++{
++ struct iovec *iov;
++ struct stat st;
++ char *host_name;
++ char errmsg[255];
++ uid_t uid;
++ gid_t gid;
++ mode_t dir_mode, file_mode;
++ int iovlen;
++ int ronly = 0;
++ int error, ch;
++ int mntflags = 0;
++
++ iov = NULL;
++ iovlen = 0;
++ errmsg[0] = '\0';
++ uid = (uid_t)-1;
++ gid = (gid_t)-1;
++ file_mode = 0;
++ dir_mode = 0;
++
++ while ((ch = getopt(argc, argv, "rwo:h")) != -1)
++ switch(ch) {
++ default:
++ fprintf(stderr, "unknown option `%c:%#x'\n", ch, ch);
++ return (1);
++
++ case '?':
++ case 'h':
++ usage();
++ case 'r':
++ ronly = 1;
++ break;
++ case 'w':
++ ronly = 0;
++ break;
++ case 'o':
++ getmntopts(optarg, mopts, &mntflags, 0);
++ break;
++ }
++
++ if (argc - optind < 2)
++ usage();
++
++ host_name = argv[optind];
++ realpath(argv[optind+1], mount_point);
++
++ if (stat(mount_point, &st) == -1)
++ err(EX_OSERR, "could not find mount point %s", mount_point);
++
++ if (!S_ISDIR(st.st_mode)) {
++ errno = ENOTDIR;
++ err(EX_OSERR, "can't mount on %s", mount_point);
++ }
++
++ if (strlen(host_name) > MAX_HOST_NAME - 1)
++ err(EX_OSERR, "host name is too big %s", host_name);
++
++ if (ronly == 0)
++ mntflags |= MNT_ASYNC;
++ if (uid == (uid_t)-1)
++ uid = st.st_uid;
++ if (gid == (gid_t)-1)
++ gid = st.st_gid;
++ if (file_mode == 0)
++ file_mode = st.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO);
++ if (dir_mode == 0) {
++ dir_mode = file_mode;
++ if (dir_mode & S_IRUSR)
++ dir_mode |= S_IXUSR;
++ if (dir_mode & S_IRGRP)
++ dir_mode |= S_IXGRP;
++ if (dir_mode & S_IROTH)
++ dir_mode |= S_IXOTH;
++ }
++
++ build_iovec(&iov, &iovlen, "fstype", vboxfs_vfsname, (size_t)-1);
++ build_iovec(&iov, &iovlen, "fspath", mount_point, (size_t)-1);
++ build_iovec(&iov, &iovlen, "from", host_name, (size_t)-1);
++ build_iovec_argf(&iov, &iovlen, "uid", "%d", uid);
++ build_iovec_argf(&iov, &iovlen, "gid", "%d", gid);
++ build_iovec_argf(&iov, &iovlen, "file_mode", "%o", file_mode);
++ build_iovec_argf(&iov, &iovlen, "dir_mode", "%o", dir_mode);
++ build_iovec(&iov, &iovlen, "errmsg", errmsg, sizeof(errmsg));
++
++ error = nmount(iov, iovlen, mntflags);
++ if (error == -1) {
++ if (errmsg[0] != '\0')
++ err(1, "%s: error: %s", mount_point, errmsg);
++ else
++ err(1, "%s: error %d", mount_point, error);
++ }
++
++ return (0);
++}
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_bcmp.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_bcmp.c
new file mode 100644
index 000000000000..fb4d7fac8c06
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_bcmp.c
@@ -0,0 +1,12 @@
+--- src/VBox/Additions/freebsd/vboxvfs/bcmp.c.orig 2021-02-21 19:09:22 UTC
++++ src/VBox/Additions/freebsd/vboxvfs/bcmp.c
+@@ -0,0 +1,9 @@
++#include <sys/types.h>
++
++int bcmp(const void *b1, const void *b2, size_t len);
++
++int
++bcmp(const void *b1, const void *b2, size_t len)
++{
++ return __builtin_memcmp((b1), (b2), (len));
++}
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs.h b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs.h
new file mode 100644
index 000000000000..46b57e5a9d13
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs.h
@@ -0,0 +1,428 @@
+--- src/VBox/Additions/freebsd/vboxvfs/vboxvfs.h.orig 2025-08-13 19:41:18 UTC
++++ src/VBox/Additions/freebsd/vboxvfs/vboxvfs.h
+@@ -1,8 +1,3 @@
+-/* $Id: vboxvfs.h $ */
+-/** @file
+- * Description.
+- */
+-
+ /*
+ * Copyright (C) 2010-2025 Oracle and/or its affiliates.
+ *
+@@ -34,72 +29,378 @@
+ #define VBOXVFS_VFSNAME "vboxvfs"
+ #define VBOXVFS_VERSION 1
+
+-#define MAX_HOST_NAME 256
+-#define MAX_NLS_NAME 32
++#define MAX_HOST_NAME 256
++#define MAX_NLS_NAME 32
++//#define MODEMASK 07777 /* mode bits plus permission bits */
++/** Helper macros */
++#define VFSTOVBOXFS(mp) ((struct vboxfs_mnt *)((mp)->mnt_data))
++#define VP_TO_VBOXFS_NODE(vp) ((struct vboxfs_node *)(vp)->v_data)
++#define VBOXTOV(np) ((struct vnode *)(np)->n_vnode)
+
+-struct vboxvfs_mount_info {
+- char name[MAX_HOST_NAME];
+- char nls_name[MAX_NLS_NAME];
+- int uid;
+- int gid;
+- int ttl;
+-};
++#define ROOTDIR_INO 1
++#define THEFILE_INO 2
++#define THEFILE_NAME "thefile"
+
++#define VBOXFS_NODE_LOCK(node) mtx_lock(&(node)->sf_interlock)
++#define VBOXFS_NODE_UNLOCK(node) mtx_unlock(&(node)->sf_interlock)
++#define VBOXFS_NODE_MTX(node) (&(node)->sf_interlock)
++#define VBOXFS_NODE_ASSERT_LOCKED(node) mtx_assert(VBOXFS_NODE_MTX(node), \
++ MA_OWNED)
++
++#ifdef INVARIANTS
++#define VBOXFS_ASSERT_LOCKED(node) do { \
++ MPASS(node != NULL); \
++ MPASS(node->sf_vnode != NULL); \
++ if (!VOP_ISLOCKED(node->sf_vnode) && \
++ !mtx_owned(VBOXFS_NODE_MTX(node))) \
++ panic("vboxfs: node is not locked: %p", node); \
++ } while (0)
++#define VBOXFS_ASSERT_ELOCKED(node) do { \
++ MPASS((node) != NULL); \
++ MPASS((node)->sf_vnode != NULL); \
++ mtx_assert(VBOXFS_NODE_MTX(node), MA_OWNED); \
++ ASSERT_VOP_LOCKED((node)->sf_vnode, "vboxfs"); \
++ } while (0)
++#else
++#define VBOXFS_ASSERT_LOCKED(node) (void)0
++#define VBOXFS_ASSERT_ELOCKED(node) (void)0
++#endif
++
++#define VBOXFS_VNODE_ALLOCATING 1
++#define VBOXFS_VNODE_WANT 2
++#define VBOXFS_VNODE_DOOMED 4
++#define VBOXFS_VNODE_WRECLAIM 8
++
++MALLOC_DECLARE(M_VBOXVFS);
++
+ #ifdef _KERNEL
++#ifndef FREEBSD_STYLE
++#include "../../../../../include/iprt/nocrt/limits.h"
++#include "../../../../../include/iprt/alloc.h"
++#include "../../../../../include/iprt/asm.h"
++#include "../../../../../include/iprt/asm-amd64-x86.h"
++#include "../../../../../include/iprt/asm-math.h"
++#include "../../../../../include/iprt/assert.h"
++#include "../../../../../include/iprt/cdefs.h"
++#include "../../../../../include/iprt/err.h"
++#include "../../../../../include/iprt/fs.h"
++#include "../../../../../include/iprt/log.h"
++#include "../../../../../include/iprt/mem.h"
++#include "../../../../../include/iprt/param.h"
++#include "../../../../../include/iprt/path.h"
++#include "../../../../../include/iprt/semaphore.h"
++#include "../../../../../include/iprt/stdarg.h"
++#include "../../../../../include/iprt/stdint.h"
++#include "../../../../../include/iprt/string.h"
++#include "../../../../../include/iprt/time.h"
++#include "../../../../../include/iprt/types.h"
++#include "../../../../../include/iprt/uni.h"
+
+-#include <VBox/VBoxGuestLibSharedFolders.h>
++#else
++
++#include "iprt/nocrt/limits.h"
++#include "iprt/alloc.h"
++#include "iprt/asm.h"
++#include "iprt/asm-amd64-x86.h"
++#include "iprt/asm-math.h"
++#include "iprt/assert.h"
++#include "iprt/cdefs.h"
++#include "iprt/err.h"
++#include "iprt/fs.h"
++#include "iprt/log.h"
++#include "iprt/mem.h"
++#include "iprt/param.h"
++#include "iprt/path.h"
++#include "iprt/semaphore.h"
++#include "iprt/stdarg.h"
++#include "iprt/stdint.h"
++#include "iprt/string.h"
++#include "iprt/time.h"
++#include "iprt/types.h"
++#include "iprt/uni.h"
++
++#include "common/VBoxGuestLib/SysHlp.h"
++
++#endif /* !FREEBSD_STYLE */
++
+ #include <sys/mount.h>
+ #include <sys/vnode.h>
++#include <sys/_timespec.h>
+
+-struct vboxvfsmount {
+- uid_t uid;
+- gid_t gid;
+- mode_t file_mode;
+- mode_t dir_mode;
+- struct mount *mp;
+- struct ucred *owner;
+- u_int flags;
+- long nextino;
+- int caseopt;
+- int didrele;
++#include <VBox/VBoxGuestLibSharedFolders.h>
++
++#if __FreeBSD_version >= 1400093
++typedef __enum_uint8(vtype) enum_vtype_t;
++#else
++typedef enum vtype enum_vtype_t;
++#endif
++
++#define VBOXVFS_DEBUG(lvl, ...) do { \
++ if (vboxvfs_debug >= (lvl)) { \
++ printf("VBOXVFS[%u]: ", lvl); \
++ printf(__VA_ARGS__); \
++ printf("\n"); \
++ } \
++} while (0)
++
++/*
++ * representation of an active mount point
++ */
++struct sfp_mount {
++ VBGLSFMAP map;
+ };
+
+-/* structs - stolen from the linux shared module code */
++/*
++ * Mount / Unmount a shared folder.
++ *
++ * sfprov_mount() takes as input the connection pointer and the name of
++ * the shared folder. On success, it returns zero and supplies an
++ * sfp_mount_t handle. On failure it returns any relevant errno value.
++ *
++ * sfprov_unmount() unmounts the mounted file system. It returns 0 on
++ * success and any relevant errno on failure.
++ */
++typedef struct sfp_mount sfp_mount_t;
++
++struct sfp_file {
++ SHFLHANDLE handle;
++ VBGLSFMAP map; /* need this again for the close operation */
++};
++
++typedef struct sfp_file sfp_file_t;
++
++/*
++ * File operations: open/close/read/write/etc.
++ *
++ * open/create can return any relevant errno, however ENOENT
++ * generally means that the host file didn't exist.
++ */
++typedef struct sffs_stat {
++ mode_t sf_mode;
++ off_t sf_size;
++ off_t sf_alloc;
++ struct timespec sf_atime;
++ struct timespec sf_mtime;
++ struct timespec sf_ctime;
++} sffs_stat_t;
++
++/*
++ * Read directory entries.
++ */
++/*
++ * a singly linked list of buffers, each containing an array of stat's+dirent's.
++ * sf_len is length of the sf_entries array, in bytes.
++ */
++typedef struct sffs_dirents {
++ struct sffs_dirents *sf_next;
++ long long sf_len;
++ struct sffs_dirent {
++ sffs_stat_t sf_stat;
++ struct dirent sf_entry; /* this is variable length */
++ off_t sf_off;
++ } sf_entries[1];
++} sffs_dirents_t;
++
++/*
++ * Shared Folders filesystem per-mount data structure.
++ */
++struct vboxfs_mnt {
++ struct mount *sf_vfsp; /* filesystem's vfs struct */
++ sfp_mount_t *sf_handle; /* guest-host communication handle */
++ uid_t sf_uid; /* owner of all shared folders */
++ gid_t sf_gid; /* group of all shared folders */
++ mode_t sf_dmode; /* mode of all directories */
++ mode_t sf_fmode; /* mode of all files */
++ mode_t sf_dmask; /* mask of all directories */
++ mode_t sf_fmask; /* mask of all files */
++ int sf_stat_ttl; /* ttl for stat caches (in ms) */
++ int sf_fsync; /* whether to honor fsync or not */
++ uint64_t sf_ino; /* per FS ino generator */
++ uma_zone_t sf_node_pool;
++ struct vboxfs_node *sf_root;
++};
++
++/*
++ * vboxfs_node is the file system dependent vnode data for vboxfs.
++ * vboxfs_node's also track all files ever accessed, both open and closed.
++ * It duplicates some of the information in vnode, since it holds
++ * information for files that may have been completely closed.
++ *
++ */
++struct vboxfs_node {
++ struct vboxfs_mnt *vboxfsmp; /* containing mounted file system */
++ char *sf_path; /* full pathname to file or dir */
++ uint64_t sf_ino; /* assigned unique ID number */
++ struct vnode *sf_vnode; /* vnode if active */
++ sfp_file_t *sf_file; /* non NULL if open */
++ struct vboxfs_node *sf_parent; /* parent sfnode of this one */
++ uint32_t sf_opencnt; /* sf_file reference counter */
++ uint16_t sf_children; /* number of children sfnodes */
++ uint8_t sf_type; /* VDIR or VREG */
++ uint8_t sf_vpstate; /* XXX: ADD COMMENT */
++ uint8_t sf_is_stale; /* this is stale and should be purged */
++ sffs_stat_t sf_stat; /* cached file attrs for this node */
++ uint64_t sf_stat_time; /* last-modified time of sf_stat */
++ sffs_dirents_t *sf_dir_list; /* list of entries for this directory */
++
++ /* interlock to protect sf_vpstate, sf_file and sf_opencnt */
++ struct mtx sf_interlock;
++};
++
++struct vboxfs_mount_info {
++ char name[MAX_HOST_NAME]; /* share name */
++ char nls_name[MAX_NLS_NAME];/* name of an I/O charset */
++ int uid; /* user ID for all entries, default 0=root */
++ int gid; /* group ID for all entries, default 0=root */
++ int ttl; /* time to live */
++ int dmode; /* mode for directories if != 0xffffffff */
++ int fmode; /* mode for regular files if != 0xffffffff */
++ int dmask; /* umask applied to directories */
++ int fmask; /* umask applied to regular files */
++};
++
+ struct sf_glob_info {
+- VBGLSFMAP map;
+-/* struct nls_table *nls;*/
+- int ttl;
+- int uid;
+- int gid;
+- struct vnode *vnode_root;
++ VBGLSFMAP map;
++/* struct nls_table *nls;*/
++ int ttl;
++ int uid;
++ int gid;
++ struct vnode *vnode_root;
+ };
+
++/** Per-file system mount instance data. */
++typedef struct vboxfs_globinfo
++{
++ VBGLSFMAP Map;
++ int Ttl;
++ int Uid;
++ int Gid;
++ struct mount *pVFS;
++ struct vboxfs_node *pVNodeRoot;
++} vboxfs_globinfo_t;
++
+ struct sf_inode_info {
+- SHFLSTRING *path;
+- int force_restat;
++ SHFLSTRING *path;
++ int force_restat;
+ };
+
+ #if 0
+ struct sf_dir_info {
+- struct list_head info_list;
++ struct list_head info_list;
+ };
+ #endif
+
+ struct sf_dir_buf {
+- size_t nb_entries;
+- size_t free_bytes;
+- size_t used_bytes;
+- void *buf;
++ size_t nb_entries;
++ size_t free_bytes;
++ size_t used_bytes;
++ void *buf;
+ #if 0
+- struct list_head head;
++ struct list_head head;
+ #endif
+ };
+
+ struct sf_reg_info {
+- SHFLHANDLE handle;
++ SHFLHANDLE handle;
+ };
+
++int vboxfs_alloc_vp(struct mount *, struct vboxfs_node *, int,
++ struct vnode **);
++void vboxfs_free_vp(struct vnode *);
++
++int vboxfs_alloc_node(struct mount *, struct vboxfs_mnt *, const char*,
++ enum_vtype_t, uid_t, gid_t, mode_t, struct vboxfs_node *,
++ struct vboxfs_node **);
++void vboxfs_free_node(struct vboxfs_mnt *, struct vboxfs_node *);
++
++/*
++ * These are the provider interfaces used by sffs to access the underlying
++ * shared file system.
++ */
++#define SFPROV_VERSION 1
++
++/*
++ * Initialization and termination.
++ * sfprov_connect() is called once before any other interfaces and returns
++ * a handle used in further calls. The argument should be SFPROV_VERSION
++ * from above. On failure it returns a NULL pointer.
++ *
++ * sfprov_disconnect() must only be called after all sf file systems have been
++ * unmounted.
++ */
++typedef struct sfp_connection sfp_connection_t;
++
++extern sfp_connection_t *sfprov_connect(int);
++extern void sfprov_disconnect(void);
++
++extern int sfprov_mount(char *, sfp_mount_t **);
++extern int sfprov_unmount(sfp_mount_t *);
++
++/*
++ * query information about a mounted file system
++ */
++typedef struct sffs_fsinfo {
++ uint64_t blksize;
++ uint64_t blksused;
++ uint64_t blksavail;
++ uint32_t maxnamesize;
++ uint32_t readonly;
++ uint32_t serial;
++} sffs_fsinfo_t;
++
++extern int sfprov_get_fsinfo(sfp_mount_t *, sffs_fsinfo_t *);
++
++extern int sfprov_create(sfp_mount_t *, char *path, mode_t mode,
++ sffs_stat_t *stat);
++extern int sfprov_open(sfp_mount_t *, char *path, sfp_file_t **fp);
++extern int sfprov_close(sfp_file_t *fp);
++extern int sfprov_read(sfp_file_t *, char * buffer, uint64_t offset,
++ uint32_t *numbytes, int buflocked);
++extern int sfprov_write(sfp_file_t *, char * buffer, uint64_t offset,
++ uint32_t *numbytes, int buflocked);
++extern int sfprov_fsync(sfp_file_t *fp);
++
++
++/*
++ * get/set information about a file (or directory) using pathname
++ */
++extern int sfprov_get_mode(sfp_mount_t *, char *, mode_t *);
++extern int sfprov_get_size(sfp_mount_t *, char *, uint64_t *);
++extern int sfprov_get_atime(sfp_mount_t *, char *, struct timespec *);
++extern int sfprov_get_mtime(sfp_mount_t *, char *, struct timespec *);
++extern int sfprov_get_ctime(sfp_mount_t *, char *, struct timespec *);
++extern int sfprov_get_attr(sfp_mount_t *, char *, sffs_stat_t *);
++extern int sfprov_set_attr(sfp_mount_t *, char *, mode_t,
++ struct timespec, struct timespec, struct timespec);
++extern int sfprov_set_size(sfp_mount_t *, char *, uint64_t);
++
++
++/*
++ * File/Directory operations
++ */
++extern int sfprov_trunc(sfp_mount_t *, char *);
++extern int sfprov_remove(sfp_mount_t *, char *path, u_int is_link);
++extern int sfprov_mkdir(sfp_mount_t *, char *path, mode_t mode,
++ sffs_stat_t *stat);
++extern int sfprov_rmdir(sfp_mount_t *, char *path);
++extern int sfprov_rename(sfp_mount_t *, char *from, char *to, u_int is_dir);
++
++
++/*
++ * Symbolic link operations
++ */
++extern int sfprov_set_show_symlinks(void);
++extern int sfprov_readlink(sfp_mount_t *, char *path, char *target,
++ size_t tgt_size);
++extern int sfprov_symlink(sfp_mount_t *, char *linkname, char *target,
++ sffs_stat_t *stat);
++
++#define SFFS_DIRENTS_SIZE 8192
++#define SFFS_DIRENTS_OFF (offsetof(sffs_dirents_t, sf_entries[0]))
++
++extern int sfprov_readdir(sfp_mount_t *mnt, char *path,
++ sffs_dirents_t **dirents);
++
+ #endif /* KERNEL */
+
+ #endif /* !GA_INCLUDED_SRC_freebsd_vboxvfs_vboxvfs_h */
+-
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__prov.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__prov.c
new file mode 100644
index 000000000000..1d793f39e3bc
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__prov.c
@@ -0,0 +1,1015 @@
+--- src/VBox/Additions/freebsd/vboxvfs/vboxvfs_prov.c.orig 2025-08-28 22:09:24 UTC
++++ src/VBox/Additions/freebsd/vboxvfs/vboxvfs_prov.c
+@@ -0,0 +1,1012 @@
++/*
++ * Copyright (C) 2008-2016 Oracle Corporation
++ *
++ * This file is part of VirtualBox Open Source Edition (OSE), as
++ * available from http://www.virtualbox.org. This file is free software;
++ * you can redistribute it and/or modify it under the terms of the GNU
++ * General Public License (GPL) as published by the Free Software
++ * Foundation, in version 2 as it comes in the "COPYING" file of the
++ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
++ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
++ *
++ * The contents of this file may alternatively be used under the terms
++ * of the Common Development and Distribution License Version 1.0
++ * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
++ * VirtualBox OSE distribution, in which case the provisions of the
++ * CDDL are applicable instead of those of the GPL.
++ *
++ * You may elect to license modified versions of this file under the
++ * terms and conditions of either the GPL or the CDDL or both.
++ */
++
++/*
++ * Provider interfaces for shared folder file system.
++ */
++
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <sys/param.h>
++#include <sys/systm.h>
++#include <sys/kernel.h>
++#include <sys/malloc.h>
++#include <sys/mount.h>
++#include <sys/vnode.h>
++#include <sys/dirent.h>
++#include <sys/proc.h>
++#include <vm/vm.h>
++#include <vm/pmap.h>
++#include <vm/vm_kern.h>
++#include <vm/vm_map.h>
++#include <vm/vm_object.h>
++#include <vm/vm_extern.h>
++#include <vm/uma.h>
++#include "vboxvfs.h"
++
++#define DIRENT_RECLEN(namelen) \
++ ((offsetof(struct dirent, d_name[0]) + 1 + (namelen) + 7) & ~ 7)
++#define DIRENT_NAMELEN(reclen) \
++ ((reclen) - (offsetof(struct dirent, d_name[0])))
++
++static VBGLSFCLIENT vbox_client;
++
++extern u_int vboxvfs_debug;
++
++static int
++sfprov_vbox2errno(int rc)
++{
++ if (rc == VERR_ACCESS_DENIED)
++ return (EACCES);
++ if (rc == VERR_INVALID_NAME)
++ return (ENOENT);
++ return (RTErrConvertToErrno(rc));
++}
++
++/*
++ * utility to create strings
++ */
++static SHFLSTRING *
++sfprov_string(char *path, int *sz)
++{
++ SHFLSTRING *str;
++ int len = strlen(path);
++
++ *sz = len + 1 + sizeof (*str) - sizeof (str->String);
++ str = malloc(*sz, M_VBOXVFS, M_WAITOK | M_ZERO);
++ str->u16Size = len + 1;
++ str->u16Length = len;
++ strcpy(str->String.utf8, path);
++ return (str);
++}
++
++sfp_connection_t *
++sfprov_connect(int version)
++{
++ /* only one version for now, so must match */
++ int error = -1;
++
++ if (version != SFPROV_VERSION) {
++ printf("%s: version mismatch (%d, expected %d)\n", __func__,
++ version, SFPROV_VERSION);
++ return (NULL);
++ }
++
++ if (RT_FAILURE(VbglR0SfInit()))
++ return (NULL);
++
++ if (RT_FAILURE(VbglR0SfConnect(&vbox_client))) {
++ VbglR0SfTerm();
++ return (NULL);
++ }
++
++ if (RT_FAILURE(VbglR0SfSetUtf8(&vbox_client))) {
++ VbglR0SfDisconnect(&vbox_client);
++ VbglR0SfTerm();
++ return (NULL);
++ }
++ return ((sfp_connection_t *)&vbox_client);
++}
++
++void
++sfprov_disconnect()
++{
++ VbglR0SfDisconnect(&vbox_client);
++ VbglR0SfTerm();
++}
++
++int
++sfprov_mount(char *path, sfp_mount_t **mnt)
++{
++ sfp_mount_t *m;
++ SHFLSTRING *str;
++ int size;
++ int rc;
++
++ VBOXVFS_DEBUG(1, "%s: Enter", __FUNCTION__);
++ VBOXVFS_DEBUG(1, "%s: path: [%s]", __FUNCTION__, path);
++
++ m = malloc(sizeof (*m), M_VBOXVFS, M_WAITOK | M_ZERO);
++ str = sfprov_string(path, &size);
++
++ int error;
++ rc = VbglR0SfMapFolder(&vbox_client, str, &m->map);
++ if (RT_FAILURE(rc)) {
++ free(m, M_VBOXVFS);
++ *mnt = NULL;
++ error = sfprov_vbox2errno(rc);
++ } else {
++ *mnt = m;
++ error = 0;
++ }
++ free(str, M_VBOXVFS);
++ printf("%s(%s): error=%d rc=%d\n", __func__, path, error, rc);
++ return (error);
++}
++
++int
++sfprov_unmount(sfp_mount_t *mnt)
++{
++ int rc;
++
++ rc = VbglR0SfUnmapFolder(&vbox_client, &mnt->map);
++ if (RT_FAILURE(rc)) {
++ printf("sfprov_unmount: VbglR0SfUnmapFolder() failed rc=%d\n", rc);
++ rc = sfprov_vbox2errno(rc);
++ } else {
++ rc = 0;
++ }
++
++ free(mnt, M_VBOXVFS);
++ return (rc);
++}
++
++/*
++ * query information about a mounted file system
++ */
++int
++sfprov_get_fsinfo(sfp_mount_t *mnt, sffs_fsinfo_t *fsinfo)
++{
++ int rc;
++ SHFLVOLINFO info;
++ uint32_t bytes = sizeof(SHFLVOLINFO);
++ size_t bytesused;
++
++ rc = VbglR0SfFsInfo(&vbox_client, &mnt->map, 0,
++ (SHFL_INFO_GET | SHFL_INFO_VOLUME), &bytes, (SHFLDIRINFO *)&info);
++ if (RT_FAILURE(rc))
++ return (sfprov_vbox2errno(rc));
++
++ fsinfo->blksize = info.ulBytesPerAllocationUnit;
++ bytesused =
++ info.ullTotalAllocationBytes - info.ullAvailableAllocationBytes;
++ fsinfo->blksused = bytesused / info.ulBytesPerAllocationUnit;
++ fsinfo->blksavail = info.ullAvailableAllocationBytes /
++ info.ulBytesPerAllocationUnit;
++ fsinfo->maxnamesize = info.fsProperties.cbMaxComponent;
++ fsinfo->readonly = info.fsProperties.fReadOnly;
++ fsinfo->serial = info.ulSerial;
++ return (0);
++}
++
++/*
++ * file/directory information conversions.
++ */
++static void
++sfprov_fmode_from_mode(RTFMODE *fMode, mode_t mode)
++{
++ RTFMODE m = 0;
++
++#define mode_set(r) ((mode & (S_##r)) ? RTFS_UNIX_##r : 0)
++ m = mode_set (ISUID);
++ m |= mode_set (ISGID);
++ m |= (mode & S_ISVTX) ? RTFS_UNIX_ISTXT : 0;
++ m |= mode_set (IRUSR);
++ m |= mode_set (IWUSR);
++ m |= mode_set (IXUSR);
++ m |= mode_set (IRGRP);
++ m |= mode_set (IWGRP);
++ m |= mode_set (IXGRP);
++ m |= mode_set (IROTH);
++ m |= mode_set (IWOTH);
++ m |= mode_set (IXOTH);
++
++ if (S_ISDIR(mode))
++ m |= RTFS_TYPE_DIRECTORY;
++ else if (S_ISREG(mode))
++ m |= RTFS_TYPE_FILE;
++ else if (S_ISFIFO(mode))
++ m |= RTFS_TYPE_FIFO;
++ else if (S_ISCHR(mode))
++ m |= RTFS_TYPE_DEV_CHAR;
++ else if (S_ISBLK(mode))
++ m |= RTFS_TYPE_DEV_BLOCK;
++ else if (S_ISLNK(mode))
++ m |= RTFS_TYPE_SYMLINK;
++ else if (S_ISSOCK(mode))
++ m |= RTFS_TYPE_SOCKET;
++ else
++ m |= RTFS_TYPE_FILE;
++
++ *fMode = m;
++}
++
++static void
++sfprov_mode_from_fmode(mode_t *mode, RTFMODE fMode)
++{
++ mode_t m = 0;
++
++ if (RTFS_IS_DIRECTORY(fMode))
++ m |= S_IFDIR;
++ else if (RTFS_IS_FILE(fMode))
++ m |= S_IFREG;
++ else if (RTFS_IS_FIFO(fMode))
++ m |= S_IFIFO;
++ else if (RTFS_IS_DEV_CHAR(fMode))
++ m |= S_IFCHR;
++ else if (RTFS_IS_DEV_BLOCK(fMode))
++ m |= S_IFBLK;
++ else if (RTFS_IS_SYMLINK(fMode))
++ m |= S_IFLNK;
++ else if (RTFS_IS_SOCKET(fMode))
++ m |= S_IFSOCK;
++
++ if (fMode & RTFS_UNIX_IRUSR)
++ m |= S_IRUSR;
++ if (fMode & RTFS_UNIX_IWUSR)
++ m |= S_IWUSR;
++ if (fMode & RTFS_UNIX_IXUSR)
++ m |= S_IXUSR;
++ if (fMode & RTFS_UNIX_IRGRP)
++ m |= S_IRGRP;
++ if (fMode & RTFS_UNIX_IWGRP)
++ m |= S_IWGRP;
++ if (fMode & RTFS_UNIX_IXGRP)
++ m |= S_IXGRP;
++ if (fMode & RTFS_UNIX_IROTH)
++ m |= S_IROTH;
++ if (fMode & RTFS_UNIX_IWOTH)
++ m |= S_IWOTH;
++ if (fMode & RTFS_UNIX_IXOTH)
++ m |= S_IXOTH;
++ if (fMode & RTFS_UNIX_ISUID)
++ m |= S_ISUID;
++ if (fMode & RTFS_UNIX_ISGID)
++ m |= S_ISGID;
++ if (fMode & RTFS_UNIX_ISTXT)
++ m |= S_ISVTX;
++ *mode = m;
++}
++
++static void
++sfprov_ftime_from_timespec(struct timespec *time, RTTIMESPEC *ts)
++{
++ uint64_t nanosec = RTTimeSpecGetNano(ts);
++ time->tv_sec = nanosec / UINT64_C(1000000000);
++ time->tv_nsec = nanosec % UINT64_C(1000000000);
++}
++
++static void
++sfprov_stat_from_info(sffs_stat_t *stat, SHFLFSOBJINFO *info)
++{
++ sfprov_mode_from_fmode(&stat->sf_mode, info->Attr.fMode);
++ stat->sf_size = info->cbObject;
++ stat->sf_alloc = info->cbAllocated;
++ sfprov_ftime_from_timespec(&stat->sf_atime, &info->AccessTime);
++ sfprov_ftime_from_timespec(&stat->sf_mtime, &info->ModificationTime);
++ sfprov_ftime_from_timespec(&stat->sf_ctime, &info->ChangeTime);
++}
++
++/*
++ * File operations: open/close/read/write/etc.
++ *
++ * open/create can return any relevant errno, however ENOENT
++ * generally means that the host file didn't exist.
++ */
++int
++sfprov_create(
++ sfp_mount_t *mnt,
++ char *path,
++ mode_t mode,
++ sffs_stat_t *stat)
++{
++ int rc;
++ SHFLCREATEPARMS parms;
++ SHFLSTRING *str;
++ int size;
++ sfp_file_t *newfp;
++
++ str = sfprov_string(path, &size);
++ parms.Handle = SHFL_HANDLE_NIL;
++ parms.Info.cbObject = 0;
++ sfprov_fmode_from_mode(&parms.Info.Attr.fMode, mode);
++ parms.CreateFlags = SHFL_CF_ACT_CREATE_IF_NEW |
++ SHFL_CF_ACT_REPLACE_IF_EXISTS | SHFL_CF_ACCESS_READWRITE;
++ rc = VbglR0SfCreate(&vbox_client, &mnt->map, str, &parms);
++ free(str, M_VBOXVFS);
++
++ if (RT_FAILURE(rc))
++ return (sfprov_vbox2errno(rc));
++ if (parms.Handle == SHFL_HANDLE_NIL) {
++ if (parms.Result == SHFL_FILE_EXISTS)
++ return (EEXIST);
++ return (ENOENT);
++ }
++ (void)VbglR0SfClose(&vbox_client, &mnt->map, parms.Handle);
++ sfprov_stat_from_info(stat, &parms.Info);
++ return (0);
++}
++
++int
++sfprov_open(sfp_mount_t *mnt, char *path, sfp_file_t **fp)
++{
++ int rc;
++ SHFLCREATEPARMS parms;
++ SHFLSTRING *str;
++ int size;
++ sfp_file_t *newfp;
++
++ /*
++ * First we attempt to open it read/write. If that fails we
++ * try read only.
++ */
++ bzero(&parms, sizeof(parms));
++ str = sfprov_string(path, &size);
++ parms.Handle = SHFL_HANDLE_NIL;
++ parms.Info.cbObject = 0;
++ parms.CreateFlags = SHFL_CF_ACT_FAIL_IF_NEW | SHFL_CF_ACCESS_READWRITE;
++ rc = VbglR0SfCreate(&vbox_client, &mnt->map, str, &parms);
++ if (RT_FAILURE(rc) && rc != VERR_ACCESS_DENIED) {
++ free(str, M_VBOXVFS);
++ return (sfprov_vbox2errno(rc));
++ }
++ if (parms.Handle == SHFL_HANDLE_NIL) {
++ if (parms.Result == SHFL_PATH_NOT_FOUND ||
++ parms.Result == SHFL_FILE_NOT_FOUND) {
++ free(str, M_VBOXVFS);
++ return (ENOENT);
++ }
++ parms.CreateFlags =
++ SHFL_CF_ACT_FAIL_IF_NEW | SHFL_CF_ACCESS_READ;
++ rc = VbglR0SfCreate(&vbox_client, &mnt->map, str, &parms);
++ if (RT_FAILURE(rc)) {
++ free(str, M_VBOXVFS);
++ return (sfprov_vbox2errno(rc));
++ }
++ if (parms.Handle == SHFL_HANDLE_NIL) {
++ free(str, M_VBOXVFS);
++ return (ENOENT);
++ }
++ }
++ else
++ free(str, M_VBOXVFS);
++ newfp = malloc(sizeof(sfp_file_t), M_VBOXVFS, M_WAITOK | M_ZERO);
++ newfp->handle = parms.Handle;
++ newfp->map = mnt->map;
++ *fp = newfp;
++ return (0);
++}
++
++int
++sfprov_trunc(sfp_mount_t *mnt, char *path)
++{
++ int rc;
++ SHFLCREATEPARMS parms;
++ SHFLSTRING *str;
++ int size;
++
++ /*
++ * open it read/write.
++ */
++ str = sfprov_string(path, &size);
++ parms.Handle = 0;
++ parms.Info.cbObject = 0;
++ parms.CreateFlags = SHFL_CF_ACT_FAIL_IF_NEW | SHFL_CF_ACCESS_READWRITE |
++ SHFL_CF_ACT_OVERWRITE_IF_EXISTS;
++ rc = VbglR0SfCreate(&vbox_client, &mnt->map, str, &parms);
++ free(str, M_VBOXVFS);
++
++ if (RT_FAILURE(rc)) {
++ return (sfprov_vbox2errno(rc));
++ }
++ (void)VbglR0SfClose(&vbox_client, &mnt->map, parms.Handle);
++ return (0);
++}
++
++int
++sfprov_close(sfp_file_t *fp)
++{
++ int rc;
++
++ rc = VbglR0SfClose(&vbox_client, &fp->map, fp->handle);
++ free(fp, M_VBOXVFS);
++ return (0);
++}
++
++int
++sfprov_read(sfp_file_t *fp, char *buffer, uint64_t offset, uint32_t *numbytes,
++ int buflocked)
++{
++ int rc;
++
++ rc = VbglR0SfRead(&vbox_client, &fp->map, fp->handle, offset,
++ numbytes, (uint8_t *)buffer, buflocked);
++ if (RT_FAILURE(rc))
++ return (sfprov_vbox2errno(rc));
++ return (0);
++}
++
++int
++sfprov_write(sfp_file_t *fp, char *buffer, uint64_t offset, uint32_t *numbytes,
++ int buflocked)
++{
++ int rc;
++
++ rc = VbglR0SfWrite(&vbox_client, &fp->map, fp->handle, offset,
++ numbytes, (uint8_t *)buffer, buflocked);
++ if (RT_FAILURE(rc))
++ return (sfprov_vbox2errno(rc));
++ return (0);
++}
++
++int
++sfprov_fsync(sfp_file_t *fp)
++{
++ int rc;
++
++ rc = VbglR0SfFlush(&vbox_client, &fp->map, fp->handle);
++ if (RT_FAILURE(rc))
++ return (sfprov_vbox2errno(rc));
++ return (0);
++}
++
++
++static int
++sfprov_getinfo(sfp_mount_t *mnt, char *path, PSHFLFSOBJINFO info)
++{
++ int rc;
++ SHFLCREATEPARMS parms;
++ SHFLSTRING *str;
++ int size;
++
++ str = sfprov_string(path, &size);
++ parms.Handle = 0;
++ parms.Info.cbObject = 0;
++ parms.CreateFlags = SHFL_CF_LOOKUP | SHFL_CF_ACT_FAIL_IF_NEW;
++ rc = VbglR0SfCreate(&vbox_client, &mnt->map, str, &parms);
++ free(str, M_VBOXVFS);
++
++ if (RT_FAILURE(rc))
++ return (sfprov_vbox2errno(rc));
++ if (parms.Result != SHFL_FILE_EXISTS)
++ return (ENOENT);
++ *info = parms.Info;
++ return (0);
++}
++
++/*
++ * get information about a file (or directory)
++ */
++int
++sfprov_get_mode(sfp_mount_t *mnt, char *path, mode_t *mode)
++{
++ int rc;
++ SHFLFSOBJINFO info;
++
++ rc = sfprov_getinfo(mnt, path, &info);
++ if (rc)
++ return (rc);
++ sfprov_mode_from_fmode(mode, info.Attr.fMode);
++ return (0);
++}
++
++int
++sfprov_get_size(sfp_mount_t *mnt, char *path, uint64_t *size)
++{
++ int rc;
++ SHFLFSOBJINFO info;
++
++ rc = sfprov_getinfo(mnt, path, &info);
++ if (rc)
++ return (rc);
++ *size = info.cbObject;
++ return (0);
++}
++
++
++int
++sfprov_get_atime(sfp_mount_t *mnt, char *path, struct timespec *time)
++{
++ int rc;
++ SHFLFSOBJINFO info;
++
++ rc = sfprov_getinfo(mnt, path, &info);
++ if (rc)
++ return (rc);
++ sfprov_ftime_from_timespec(time, &info.AccessTime);
++ return (0);
++}
++
++int
++sfprov_get_mtime(sfp_mount_t *mnt, char *path, struct timespec *time)
++{
++ int rc;
++ SHFLFSOBJINFO info;
++
++ rc = sfprov_getinfo(mnt, path, &info);
++ if (rc)
++ return (rc);
++ sfprov_ftime_from_timespec(time, &info.ModificationTime);
++ return (0);
++}
++
++int
++sfprov_get_ctime(sfp_mount_t *mnt, char *path, struct timespec *time)
++{
++ int rc;
++ SHFLFSOBJINFO info;
++
++ rc = sfprov_getinfo(mnt, path, &info);
++ if (rc)
++ return (rc);
++ sfprov_ftime_from_timespec(time, &info.ChangeTime);
++ return (0);
++}
++
++int
++sfprov_get_attr(sfp_mount_t *mnt, char *path, sffs_stat_t *attr)
++{
++ int rc;
++ SHFLFSOBJINFO info;
++
++ rc = sfprov_getinfo(mnt, path, &info);
++ if (rc)
++ return (rc);
++ sfprov_stat_from_info(attr, &info);
++ return (0);
++}
++
++static void
++sfprov_timespec_from_ftime(RTTIMESPEC *ts, struct timespec time)
++{
++ uint64_t nanosec = UINT64_C(1000000000) * time.tv_sec + time.tv_nsec;
++ RTTimeSpecSetNano(ts, nanosec);
++}
++
++int
++sfprov_set_attr(
++ sfp_mount_t *mnt,
++ char *path,
++ mode_t mode,
++ struct timespec atime,
++ struct timespec mtime,
++ struct timespec ctime)
++{
++ int rc, err;
++ SHFLCREATEPARMS parms;
++ SHFLSTRING *str;
++ SHFLFSOBJINFO info;
++ uint32_t bytes;
++ int str_size;
++
++ str = sfprov_string(path, &str_size);
++ parms.Handle = 0;
++ parms.Info.cbObject = 0;
++ parms.CreateFlags = SHFL_CF_ACT_OPEN_IF_EXISTS
++ | SHFL_CF_ACT_FAIL_IF_NEW
++ | SHFL_CF_ACCESS_ATTR_WRITE;
++
++ rc = VbglR0SfCreate(&vbox_client, &mnt->map, str, &parms);
++
++ if (RT_FAILURE(rc)) {
++ printf("sfprov_set_attr: VbglR0SfCreate(%s) failed rc=%d\n",
++ path, rc);
++ err = sfprov_vbox2errno(rc);
++ goto fail2;
++ }
++ if (parms.Result != SHFL_FILE_EXISTS) {
++ err = ENOENT;
++ goto fail1;
++ }
++
++ RT_ZERO(info);
++#if 0
++ if (mask & AT_MODE)
++ sfprov_fmode_from_mode(&info.Attr.fMode, mode);
++ if (mask & AT_ATIME)
++ sfprov_timespec_from_ftime(&info.AccessTime, atime);
++ if (mask & AT_MTIME)
++ sfprov_timespec_from_ftime(&info.ModificationTime, mtime);
++ if (mask & AT_CTIME)
++ sfprov_timespec_from_ftime(&info.ChangeTime, ctime);
++#endif
++ bytes = sizeof(info);
++ rc = VbglR0SfFsInfo(&vbox_client, &mnt->map, parms.Handle,
++ (SHFL_INFO_SET | SHFL_INFO_FILE), &bytes, (SHFLDIRINFO *)&info);
++ if (RT_FAILURE(rc)) {
++ if (rc != VERR_ACCESS_DENIED && rc != VERR_WRITE_PROTECT)
++ {
++ printf("sfprov_set_attr: VbglR0SfFsInfo(%s, FILE) failed rc=%d\n",
++ path, rc);
++ }
++ err = sfprov_vbox2errno(rc);
++ goto fail1;
++ }
++
++ err = 0;
++
++fail1:
++ rc = VbglR0SfClose(&vbox_client, &mnt->map, parms.Handle);
++ if (RT_FAILURE(rc)) {
++ printf("sfprov_set_attr: VbglR0SfClose(%s) failed rc=%d\n",
++ path, rc);
++ }
++fail2:
++ free(str, M_VBOXVFS);
++ return err;
++}
++
++int
++sfprov_set_size(sfp_mount_t *mnt, char *path, uint64_t size)
++{
++ int rc, err;
++ SHFLCREATEPARMS parms;
++ SHFLSTRING *str;
++ SHFLFSOBJINFO info;
++ uint32_t bytes;
++ int str_size;
++
++ str = sfprov_string(path, &str_size);
++ parms.Handle = 0;
++ parms.Info.cbObject = 0;
++ parms.CreateFlags = SHFL_CF_ACT_OPEN_IF_EXISTS
++ | SHFL_CF_ACT_FAIL_IF_NEW
++ | SHFL_CF_ACCESS_WRITE;
++
++ rc = VbglR0SfCreate(&vbox_client, &mnt->map, str, &parms);
++
++ if (RT_FAILURE(rc)) {
++ printf("sfprov_set_size: VbglR0SfCreate(%s) failed rc=%d\n",
++ path, rc);
++ err = sfprov_vbox2errno(rc);
++ goto fail2;
++ }
++ if (parms.Result != SHFL_FILE_EXISTS) {
++ err = ENOENT;
++ goto fail1;
++ }
++
++ RT_ZERO(info);
++ info.cbObject = size;
++ bytes = sizeof(info);
++ rc = VbglR0SfFsInfo(&vbox_client, &mnt->map, parms.Handle,
++ (SHFL_INFO_SET | SHFL_INFO_SIZE), &bytes, (SHFLDIRINFO *)&info);
++ if (RT_FAILURE(rc)) {
++ printf("sfprov_set_size: VbglR0SfFsInfo(%s, SIZE) failed rc=%d\n",
++ path, rc);
++ err = sfprov_vbox2errno(rc);
++ goto fail1;
++ }
++
++ err = 0;
++
++fail1:
++ rc = VbglR0SfClose(&vbox_client, &mnt->map, parms.Handle);
++ if (RT_FAILURE(rc)) {
++ printf("sfprov_set_size: VbglR0SfClose(%s) failed rc=%d\n",
++ path, rc);
++ }
++fail2:
++ free(str, M_VBOXVFS);
++ return err;
++}
++
++/*
++ * Directory operations
++ */
++int
++sfprov_mkdir(
++ sfp_mount_t *mnt,
++ char *path,
++ mode_t mode,
++ sffs_stat_t *stat)
++{
++ int rc;
++ SHFLCREATEPARMS parms;
++ SHFLSTRING *str;
++ int size;
++
++ str = sfprov_string(path, &size);
++ parms.Handle = SHFL_HANDLE_NIL;
++ parms.Info.cbObject = 0;
++ sfprov_fmode_from_mode(&parms.Info.Attr.fMode, mode);
++ parms.CreateFlags = SHFL_CF_DIRECTORY | SHFL_CF_ACT_CREATE_IF_NEW |
++ SHFL_CF_ACT_FAIL_IF_EXISTS | SHFL_CF_ACCESS_READ;
++ rc = VbglR0SfCreate(&vbox_client, &mnt->map, str, &parms);
++ free(str, M_VBOXVFS);
++
++ if (RT_FAILURE(rc))
++ return (sfprov_vbox2errno(rc));
++ if (parms.Handle == SHFL_HANDLE_NIL) {
++ if (parms.Result == SHFL_FILE_EXISTS)
++ return (EEXIST);
++ return (ENOENT);
++ }
++ (void)VbglR0SfClose(&vbox_client, &mnt->map, parms.Handle);
++ sfprov_stat_from_info(stat, &parms.Info);
++ return (0);
++}
++
++int
++sfprov_set_show_symlinks(void)
++{
++ int rc;
++
++ rc = VbglR0SfSetSymlinks(&vbox_client);
++ if (RT_FAILURE(rc))
++ return (sfprov_vbox2errno(rc));
++
++ return (0);
++}
++
++int
++sfprov_remove(sfp_mount_t *mnt, char *path, u_int is_link)
++{
++ int rc;
++ SHFLSTRING *str;
++ int size;
++
++ str = sfprov_string(path, &size);
++ rc = VbglR0SfRemove(&vbox_client, &mnt->map, str,
++ SHFL_REMOVE_FILE | (is_link ? SHFL_REMOVE_SYMLINK : 0));
++ free(str, M_VBOXVFS);
++ if (RT_FAILURE(rc))
++ return (sfprov_vbox2errno(rc));
++ return (0);
++}
++
++int
++sfprov_readlink(
++ sfp_mount_t *mnt,
++ char *path,
++ char *target,
++ size_t tgt_size)
++{
++ int rc;
++ SHFLSTRING *str;
++ int size;
++
++ str = sfprov_string(path, &size);
++
++ rc = VbglR0SfReadLink(&vbox_client, &mnt->map, str, (uint32_t) tgt_size,
++ target);
++ if (RT_FAILURE(rc))
++ rc = sfprov_vbox2errno(rc);
++
++ free(str, M_VBOXVFS);
++ return (rc);
++}
++
++int
++sfprov_symlink(
++ sfp_mount_t *mnt,
++ char *linkname,
++ char *target,
++ sffs_stat_t *stat)
++{
++ int rc;
++ SHFLSTRING *lnk, *tgt;
++ int lnk_size, tgt_size;
++ SHFLFSOBJINFO info;
++
++ lnk = sfprov_string(linkname, &lnk_size);
++ tgt = sfprov_string(target, &tgt_size);
++
++ rc = VbglR0SfSymlink(&vbox_client, &mnt->map, lnk, tgt, &info);
++ if (RT_FAILURE(rc)) {
++ rc = sfprov_vbox2errno(rc);
++ goto done;
++ }
++
++ if (stat != NULL)
++ sfprov_stat_from_info(stat, &info);
++
++done:
++ free(lnk, M_VBOXVFS);
++ free(tgt, M_VBOXVFS);
++
++ return (rc);
++}
++
++int
++sfprov_rmdir(sfp_mount_t *mnt, char *path)
++{
++ int rc;
++ SHFLSTRING *str;
++ int size;
++
++ str = sfprov_string(path, &size);
++ rc = VbglR0SfRemove(&vbox_client, &mnt->map, str, SHFL_REMOVE_DIR);
++ free(str, M_VBOXVFS);
++ if (RT_FAILURE(rc))
++ return (sfprov_vbox2errno(rc));
++ return (0);
++}
++
++int
++sfprov_rename(sfp_mount_t *mnt, char *from, char *to, u_int is_dir)
++{
++ int rc;
++ SHFLSTRING *old, *new;
++ int old_size, new_size;
++
++ old = sfprov_string(from, &old_size);
++ new = sfprov_string(to, &new_size);
++ rc = VbglR0SfRename(&vbox_client, &mnt->map, old, new,
++ (is_dir ? SHFL_RENAME_DIR : SHFL_RENAME_FILE) |
++ SHFL_RENAME_REPLACE_IF_EXISTS);
++ free(old, M_VBOXVFS);
++ free(new, M_VBOXVFS);
++ if (RT_FAILURE(rc))
++ return (sfprov_vbox2errno(rc));
++ return (0);
++}
++
++/*
++ * Read all filenames in a directory.
++ *
++ * - success - all entries read and returned
++ * - ENOENT - Couldn't open the directory for reading
++ * - EINVAL - Internal error of some kind
++ *
++ * On successful return, *dirents points to a list of sffs_dirents_t;
++ * for each dirent, all fields except the d_ino will be set appropriately.
++ * The caller is responsible for freeing the dirents buffer.
++ */
++int
++sfprov_readdir(
++ sfp_mount_t *mnt,
++ char *path,
++ sffs_dirents_t **dirents)
++{
++ int error;
++ char *cp;
++ int len;
++ SHFLSTRING *mask_str = NULL; /* must be path with "/" appended */
++ int mask_size;
++ sfp_file_t *fp;
++ uint32_t infobuff_alloc = 16384;
++ SHFLDIRINFO *infobuff = NULL, *info;
++ uint32_t numbytes;
++ uint32_t nents;
++ uint32_t size;
++ off_t offset;
++ sffs_dirents_t *cur_buf;
++ struct sffs_dirent *dirent;
++ unsigned short reclen;
++ unsigned short entlen;
++
++ *dirents = NULL;
++
++ error = sfprov_open(mnt, path, &fp);
++ if (error != 0)
++ return (ENOENT);
++
++ /*
++ * Allocate the first dirents buffers.
++ */
++ *dirents = malloc(SFFS_DIRENTS_SIZE, M_VBOXVFS, M_WAITOK | M_ZERO);
++ if (*dirents == NULL) {
++ error = (ENOSPC);
++ goto done;
++ }
++ cur_buf = *dirents;
++ cur_buf->sf_next = NULL;
++ cur_buf->sf_len = 0;
++
++ /*
++ * Create mask that VBox expects. This needs to be the directory path,
++ * plus a "*" wildcard to get all files.
++ */
++ len = strlen(path) + 3;
++ cp = malloc(len, M_VBOXVFS, M_WAITOK | M_ZERO);
++ if (cp == NULL) {
++ error = (ENOSPC);
++ goto done;
++ }
++ strcpy(cp, path);
++ strcat(cp, "/*");
++ mask_str = sfprov_string(cp, &mask_size);
++ free(cp, M_VBOXVFS);
++
++ /*
++ * Now loop using VbglR0SfDirInfo
++ */
++ infobuff = malloc(infobuff_alloc, M_VBOXVFS, M_WAITOK | M_ZERO);
++ if (infobuff == NULL) {
++ error = (ENOSPC);
++ goto done;
++ }
++
++ offset = 0;
++ for (;;) {
++ numbytes = infobuff_alloc;
++ error = VbglR0SfDirInfo(&vbox_client, &fp->map, fp->handle,
++ mask_str, 0, 0, &numbytes, infobuff, &nents);
++
++ switch (error) {
++ case VINF_SUCCESS:
++ /* fallthrough */
++ case VERR_NO_MORE_FILES:
++ break;
++ case VERR_NO_TRANSLATION:
++ /* XXX ??? */
++ break;
++ default:
++ error = sfprov_vbox2errno(error);
++ goto done;
++ }
++
++ /*
++ * Create the dirent_t's and save the stats for each name
++ */
++ for (info = infobuff; (char *) info < (char *) infobuff + numbytes; nents--) {
++ size_t buflen;
++
++ /* expand buffers if we need more space */
++ reclen = DIRENT_RECLEN(strlen(info->name.String.utf8));
++ entlen = sizeof(struct sffs_dirent) + reclen;
++ buflen = SFFS_DIRENTS_OFF + cur_buf->sf_len + entlen;
++ if (buflen > SFFS_DIRENTS_SIZE) {
++ cur_buf->sf_next = malloc(SFFS_DIRENTS_SIZE,
++ M_VBOXVFS, M_WAITOK | M_ZERO);
++ if (cur_buf->sf_next == NULL) {
++ error = ENOSPC;
++ goto done;
++ }
++ cur_buf = cur_buf->sf_next;
++ cur_buf->sf_next = NULL;
++ cur_buf->sf_len = 0;
++ }
++
++ /* create the dirent with the name, offset, and len */
++ dirent = (struct sffs_dirent *)
++ (((char *) &cur_buf->sf_entries[0]) + cur_buf->sf_len);
++ strncpy(&dirent->sf_entry.d_name[0],
++ info->name.String.utf8, DIRENT_NAMELEN(reclen));
++ dirent->sf_entry.d_reclen = reclen;
++ dirent->sf_entry.d_namlen = strlen(info->name.String.utf8);
++ dirent->sf_entry.d_name[dirent->sf_entry.d_namlen] = 0;
++ offset += entlen;
++ dirent->sf_off = offset;
++
++ /* save the stats */
++ sfprov_stat_from_info(&dirent->sf_stat, &info->Info);
++
++ /* next info */
++ cur_buf->sf_len += entlen;
++ size = offsetof (SHFLDIRINFO, name.String) + info->name.u16Size;
++ info = (SHFLDIRINFO *) ((uintptr_t) info + size);
++ }
++ KASSERT(nents == 0, ("nents != 0"));
++ KASSERT((char *) info == (char *) infobuff + numbytes, "(char *) info != (char *) infobuff + numbytes");
++
++ if (error == VERR_NO_MORE_FILES)
++ break;
++ }
++ error = 0;
++
++done:
++ if (error != 0) {
++ while (*dirents) {
++ cur_buf = (*dirents)->sf_next;
++ free(*dirents, M_VBOXVFS);
++ *dirents = cur_buf;
++ }
++ }
++ if (infobuff != NULL)
++ free(infobuff, M_VBOXVFS);
++ if (mask_str != NULL)
++ free(mask_str, M_VBOXVFS);
++ sfprov_close(fp);
++
++ return (error);
++}
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__vfsops.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__vfsops.c
new file mode 100644
index 000000000000..cd272f0205e8
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__vfsops.c
@@ -0,0 +1,644 @@
+--- src/VBox/Additions/freebsd/vboxvfs/vboxvfs_vfsops.c.orig 2025-08-13 19:41:18 UTC
++++ src/VBox/Additions/freebsd/vboxvfs/vboxvfs_vfsops.c
+@@ -1,8 +1,3 @@
+-/* $Id: vboxvfs_vfsops.c $ */
+-/** @file
+- * Description.
+- */
+-
+ /*
+ * Copyright (C) 2008-2025 Oracle and/or its affiliates.
+ *
+@@ -24,245 +19,478 @@
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+-
+-#include "vboxvfs.h"
++#include <sys/types.h>
+ #include <sys/param.h>
+ #include <sys/systm.h>
+ #include <sys/proc.h>
+ #include <sys/bio.h>
+ #include <sys/buf.h>
++#include <sys/conf.h>
++#include <sys/dirent.h>
+ #include <sys/kernel.h>
+ #include <sys/sysctl.h>
+ #include <sys/vnode.h>
+ #include <sys/mount.h>
++#include <sys/namei.h>
++#include <sys/fcntl.h>
++#include <sys/priv.h>
+ #include <sys/stat.h>
+ #include <sys/malloc.h>
+ #include <sys/module.h>
++#include <sys/sbuf.h>
+
+-#include <iprt/mem.h>
++#include <geom/geom.h>
++#include <geom/geom_vfs.h>
++#include <vm/uma.h>
++#include "vboxvfs.h"
+
+ #define VFSMP2SFGLOBINFO(mp) ((struct sf_glob_info *)mp->mnt_data)
+
+-static int vboxvfs_version = VBOXVFS_VERSION;
++#ifdef MALLOC_DECLARE
++MALLOC_DEFINE(M_VBOXVFS, "vboxvfs", "VBOX VFS");
++#endif
+
+-SYSCTL_NODE(_vfs, OID_AUTO, vboxvfs, CTLFLAG_RW, 0, "VirtualBox shared filesystem");
+-SYSCTL_INT(_vfs_vboxvfs, OID_AUTO, version, CTLFLAG_RD, &vboxvfs_version, 0, "");
++static sfp_connection_t *sfprov = NULL;
+
+-/* global connection to the host service. */
+-static VBGLSFCLIENT g_vboxSFClient;
++static int vboxfs_version = VBOXVFS_VERSION;
++u_int vboxvfs_debug = 1;
+
+-static vfs_init_t vboxvfs_init;
+-static vfs_uninit_t vboxvfs_uninit;
+-static vfs_cmount_t vboxvfs_cmount;
+-static vfs_mount_t vboxvfs_mount;
+-static vfs_root_t vboxvfs_root;
+-static vfs_quotactl_t vboxvfs_quotactl;
+-static vfs_statfs_t vboxvfs_statfs;
+-static vfs_unmount_t vboxvfs_unmount;
++SYSCTL_NODE(_vfs, OID_AUTO, vboxfs, CTLFLAG_RW, 0, "VirtualBox shared filesystem");
++SYSCTL_INT(_vfs_vboxfs, OID_AUTO, version, CTLFLAG_RD, &vboxfs_version, 0, "");
++SYSCTL_UINT(_vfs_vboxfs, OID_AUTO, debug, CTLFLAG_RW, &vboxvfs_debug, 0, "Debug level");
+
+-static struct vfsops vboxvfs_vfsops = {
+- .vfs_init = vboxvfs_init,
+- .vfs_cmount = vboxvfs_cmount,
+- .vfs_mount = vboxvfs_mount,
+- .vfs_quotactl = vboxvfs_quotactl,
+- .vfs_root = vboxvfs_root,
+- .vfs_statfs = vboxvfs_statfs,
+- .vfs_sync = vfs_stdsync,
+- .vfs_uninit = vboxvfs_uninit,
+- .vfs_unmount = vboxvfs_unmount,
++static vfs_init_t vboxfs_init;
++static vfs_uninit_t vboxfs_uninit;
++static vfs_cmount_t vboxfs_cmount;
++static vfs_mount_t vboxfs_mount;
++static vfs_root_t vboxfs_root;
++static vfs_quotactl_t vboxfs_quotactl;
++static vfs_statfs_t vboxfs_statfs;
++static vfs_unmount_t vboxfs_unmount;
++
++static struct vfsops vboxfs_vfsops = {
++ .vfs_init = vboxfs_init,
++ .vfs_cmount = vboxfs_cmount,
++ .vfs_mount = vboxfs_mount,
++ .vfs_quotactl = vboxfs_quotactl,
++ .vfs_root = vboxfs_root,
++ .vfs_statfs = vboxfs_statfs,
++ .vfs_sync = vfs_stdsync,
++ .vfs_uninit = vboxfs_uninit,
++ .vfs_unmount = vboxfs_unmount
+ };
+
+
+-VFS_SET(vboxvfs_vfsops, vboxvfs, VFCF_NETWORK);
++VFS_SET(vboxfs_vfsops, vboxvfs, VFCF_NETWORK);
+ MODULE_DEPEND(vboxvfs, vboxguest, 1, 1, 1);
+
+-static int vboxvfs_cmount(struct mntarg *ma, void * data, int flags, struct thread *td)
++/*
++ * Allocates a new node of type 'type' inside the 'tmp' mount point, with
++ * its owner set to 'uid', its group to 'gid' and its mode set to 'mode',
++ * using the credentials of the process 'p'.
++ *
++ * If the node type is set to 'VDIR', then the parent parameter must point
++ * to the parent directory of the node being created. It may only be NULL
++ * while allocating the root node.
++ *
++ * If the node type is set to 'VBLK' or 'VCHR', then the rdev parameter
++ * specifies the device the node represents.
++ *
++ * If the node type is set to 'VLNK', then the parameter target specifies
++ * the file name of the target file for the symbolic link that is being
++ * created.
++ *
++ * Note that new nodes are retrieved from the available list if it has
++ * items or, if it is empty, from the node pool as long as there is enough
++ * space to create them.
++ *
++ * Returns zero on success or an appropriate error code on failure.
++ */
++int
++vboxfs_alloc_node(struct mount *mp, struct vboxfs_mnt *vsfmp, const char *fullpath,
++ enum_vtype_t type, uid_t uid, gid_t gid, mode_t mode, struct vboxfs_node *parent,
++ struct vboxfs_node **node)
+ {
+- struct vboxvfs_mount_info args;
+- int rc = 0;
++ struct vboxfs_node *nnode;
+
+- printf("%s: Enter\n", __FUNCTION__);
++ if ((mp->mnt_kern_flag & MNTK_UNMOUNT) != 0) {
++ /*
++ * When a new tmpfs node is created for fully
++ * constructed mount point, there must be a parent
++ * node, which vnode is locked exclusively. As
++ * consequence, if the unmount is executing in
++ * parallel, vflush() cannot reclaim the parent vnode.
++ * Due to this, the check for MNTK_UNMOUNT flag is not
++ * racy: if we did not see MNTK_UNMOUNT flag, then tmp
++ * cannot be destroyed until node construction is
++ * finished and the parent vnode unlocked.
++ *
++ * Tmpfs does not need to instantiate new nodes during
++ * unmount.
++ */
++ return (EBUSY);
++ }
+
+- rc = copyin(data, &args, sizeof(struct vboxvfs_mount_info));
+- if (rc)
+- return rc;
++ nnode = (struct vboxfs_node *)uma_zalloc_arg(
++ vsfmp->sf_node_pool, vsfmp, M_WAITOK);
+
+- ma = mount_argf(ma, "uid", "%d", args.uid);
+- ma = mount_argf(ma, "gid", "%d", args.gid);
+- ma = mount_arg(ma, "from", args.name, -1);
++ /* Generic initialization. */
++ nnode->sf_type = type;
++ nnode->sf_ino = vsfmp->sf_ino++;
++ nnode->sf_path = strdup(fullpath, M_VBOXVFS);
++ nnode->sf_parent = parent;
++ nnode->vboxfsmp = vsfmp;
+
+- rc = kernel_mount(ma, flags);
++ /* Type-specific initialization. */
++ switch (nnode->sf_type) {
++ case VBLK:
++ case VCHR:
++ case VDIR:
++ case VFIFO:
++ case VSOCK:
++ case VLNK:
++ case VREG:
++ break;
+
+- printf("%s: Leave rc=%d\n", __FUNCTION__, rc);
++ default:
++ panic("vboxfs_alloc_node: type %p %d", nnode, (int)nnode->sf_type);
++ }
+
+- return rc;
++ *node = nnode;
++ return 0;
+ }
+
+-static const char *vboxvfs_opts[] = {
+- "uid", "gid", "from", "fstype", "fspath", "errmsg", NULL
+-};
+-
+-static int vboxvfs_mount(struct mount *mp, struct thread *td)
++void
++vboxfs_free_node(struct vboxfs_mnt *vboxfs, struct vboxfs_node *node)
+ {
+- int rc;
+- char *pszShare;
+- int cbShare, cbOption;
+- int uid = 0, gid = 0;
+- struct sf_glob_info *pShFlGlobalInfo;
+- SHFLSTRING *pShFlShareName = NULL;
+- int cbShFlShareName;
+
+- printf("%s: Enter\n", __FUNCTION__);
++#ifdef INVARIANTS
++ TMPFS_NODE_LOCK(node);
++ MPASS(node->sf_vnode == NULL);
++ MPASS((node->sf_vpstate & TMPFS_VNODE_ALLOCATING) == 0);
++ TMPFS_NODE_UNLOCK(node);
++#endif
++ if (node->sf_path)
++ free(node->sf_path, M_VBOXVFS);
+
+- if (mp->mnt_flag & (MNT_UPDATE | MNT_ROOTFS))
+- return EOPNOTSUPP;
++ uma_zfree(vboxfs->sf_node_pool, node);
++}
+
+- if (vfs_filteropt(mp->mnt_optnew, vboxvfs_opts))
+- {
+- vfs_mount_error(mp, "%s", "Invalid option");
+- return EINVAL;
+- }
++static int
++vboxfs_cmount(struct mntarg *ma, void *data, uint64_t flags)
++{
++ struct vboxfs_mount_info args;
++ int error = 0;
+
+- rc = vfs_getopt(mp->mnt_optnew, "from", (void **)&pszShare, &cbShare);
+- if (rc || pszShare[cbShare-1] != '\0' || cbShare > 0xfffe)
+- return EINVAL;
++ if (data == NULL)
++ return (EINVAL);
++ error = copyin(data, &args, sizeof(struct vboxfs_mount_info));
++ if (error)
++ return (error);
+
+- rc = vfs_getopt(mp->mnt_optnew, "gid", (void **)&gid, &cbOption);
+- if ((rc != ENOENT) && (rc || cbOption != sizeof(gid)))
+- return EINVAL;
++ ma = mount_argf(ma, "uid", "%d", args.uid);
++ ma = mount_argf(ma, "gid", "%d", args.gid);
++ ma = mount_argf(ma, "file_mode", "%d", args.fmode);
++ ma = mount_argf(ma, "dir_mode", "%d", args.dmode);
++ ma = mount_arg(ma, "from", args.name, -1);
+
+- rc = vfs_getopt(mp->mnt_optnew, "uid", (void **)&uid, &cbOption);
+- if ((rc != ENOENT) && (rc || cbOption != sizeof(uid)))
+- return EINVAL;
++ return (kernel_mount(ma, flags));
++}
+
+- pShFlGlobalInfo = RTMemAllocZ(sizeof(struct sf_glob_info));
+- if (!pShFlGlobalInfo)
+- return ENOMEM;
++static const char *vboxfs_opts[] = {
++ "fstype",
++ "fspath",
++ "from",
++ "uid",
++ "gid",
++ "file_mode",
++ "dir_mode",
++ "errmsg",
++ NULL
++};
+
+- cbShFlShareName = offsetof (SHFLSTRING, String.utf8) + cbShare + 1;
+- pShFlShareName = RTMemAllocZ(cbShFlShareName);
+- if (!pShFlShareName)
+- return VERR_NO_MEMORY;
++#define VBOX_INTOPT(optname, val, base) do { \
++ char *ep, *optarg = NULL; \
++ if (vfs_getopt(opts, optname, (void **)&optarg, NULL) == 0) { \
++ if (optarg != NULL && *optarg == '\0') \
++ optarg = NULL; \
++ if (optarg != NULL) \
++ val = strtoul(optarg, &ep, base); \
++ if (optarg == NULL || *ep != '\0') { \
++ struct sbuf *sb = sbuf_new_auto(); \
++ sbuf_printf(sb, "Invalid %s: \"%s\"", optname, \
++ optarg); \
++ sbuf_finish(sb); \
++ vfs_mount_error(mp, sbuf_data(sb)); \
++ sbuf_delete(sb); \
++ return (EINVAL); \
++ } \
++ } \
++} while (0)
+
+- pShFlShareName->u16Length = cbShare;
+- pShFlShareName->u16Size = cbShare + 1;
+- memcpy (pShFlShareName->String.utf8, pszShare, cbShare + 1);
++static int
++vboxfs_node_ctor(void *mem, int size, void *arg, int flags)
++{
++ struct vboxfs_node *node = (struct vboxfs_node *)mem;
+
+- rc = VbglR0SfMapFolder (&g_vboxSFClient, pShFlShareName, &pShFlGlobalInfo->map);
+- RTMemFree(pShFlShareName);
++ node->sf_vnode = NULL;
++ node->sf_vpstate = 0;
+
+- if (RT_FAILURE (rc))
+- {
+- RTMemFree(pShFlGlobalInfo);
+- printf("VbglR0SfMapFolder failed rc=%d\n", rc);
+- return EPROTO;
+- }
++ return (0);
++}
+
+- pShFlGlobalInfo->uid = uid;
+- pShFlGlobalInfo->gid = gid;
++static void
++vboxfs_node_dtor(void *mem, int size, void *arg)
++{
++ struct vboxfs_node *node = (struct vboxfs_node *)mem;
++ node->sf_type = VNON;
++}
+
+- mp->mnt_data = pShFlGlobalInfo;
++static int
++vboxfs_node_init(void *mem, int size, int flags)
++{
++ struct vboxfs_node *node = (struct vboxfs_node *)mem;
++ node->sf_ino = 0;
+
+- /** @todo root vnode. */
++ mtx_init(&node->sf_interlock, "tmpfs node interlock", NULL, MTX_DEF);
+
+- vfs_getnewfsid(mp);
+- vfs_mountedfrom(mp, pszShare);
++ return (0);
++}
+
+- printf("%s: Leave rc=0\n", __FUNCTION__);
++static void
++vboxfs_node_fini(void *mem, int size)
++{
++ struct vboxfs_node *node = (struct vboxfs_node *)mem;
+
+- return 0;
++ mtx_destroy(&node->sf_interlock);
+ }
+
+-static int vboxvfs_unmount(struct mount *mp, int mntflags, struct thread *td)
++static int
++vboxfs_mount(struct mount *mp)
+ {
+- struct sf_glob_info *pShFlGlobalInfo = VFSMP2SFGLOBINFO(mp);
+- int rc;
+- int flags = 0;
++ struct vboxfs_mnt *vboxfsmp = NULL;
++ struct vfsoptlist *opts = mp->mnt_optnew;
++ sfp_mount_t *handle = NULL;
++ int readonly = 0;
++ sffs_fsinfo_t fsinfo;
++ int error, share_len;
++ char *share_name;
++ mode_t file_mode = 0, dir_mode = 0;
++ uid_t uid = 0;
++ gid_t gid = 0;
++ struct vboxfs_node *root;
+
+- rc = VbglR0SfUnmapFolder(&g_vboxSFClient, &pShFlGlobalInfo->map);
+- if (RT_FAILURE(rc))
+- printf("Failed to unmap shared folder\n");
++ if (mp->mnt_flag & (MNT_UPDATE | MNT_ROOTFS))
++ return (EOPNOTSUPP);
+
+- if (mntflags & MNT_FORCE)
+- flags |= FORCECLOSE;
++ if (vfs_filteropt(opts, vboxfs_opts)) {
++ vfs_mount_error(mp, "%s", "Invalid option");
++ return (EINVAL);
++ }
+
+- /* There is 1 extra root vnode reference (vnode_root). */
+- rc = vflush(mp, 1, flags, td);
+- if (rc)
+- return rc;
++ VBOX_INTOPT("uid", uid, 10);
++ VBOX_INTOPT("gid", gid, 10);
++ VBOX_INTOPT("file_mode", file_mode, 8);
++ VBOX_INTOPT("dir_mode", dir_mode, 8);
++ VBOX_INTOPT("ro", readonly, 10);
+
++ error = vfs_getopt(opts, "from", (void **)&share_name, &share_len);
++ if (error != 0 || share_len == 0) {
++ vfs_mount_error(mp, "Invalid from");
++ return (EINVAL);
++ }
+
+- RTMemFree(pShFlGlobalInfo);
+- mp->mnt_data = NULL;
++ vboxfsmp = malloc(sizeof(struct vboxfs_mnt), M_VBOXVFS, M_WAITOK | M_ZERO);
++ vboxfsmp->sf_uid = uid;
++ vboxfsmp->sf_gid = gid;
++ vboxfsmp->sf_fmode = file_mode & (S_IRWXU | S_IRWXG | S_IRWXO);
++ vboxfsmp->sf_dmode = dir_mode & (S_IRWXU | S_IRWXG | S_IRWXO);
++ vboxfsmp->sf_ino = 3;
++ vboxfsmp->sf_stat_ttl = 200;
+
+- return 0;
++ /* Invoke Hypervisor mount interface before proceeding */
++ error = sfprov_mount(share_name, &handle);
++ if (error)
++ return (error);
++
++ /* Determine whether the filesystem must be read-only. */
++ error = sfprov_get_fsinfo(handle, &fsinfo);
++ if (error != 0) {
++ sfprov_unmount(handle);
++ return (error);
++ }
++ if (readonly == 0)
++ readonly = (fsinfo.readonly != 0);
++
++ vboxfsmp->sf_handle = handle;
++ vboxfsmp->sf_vfsp = mp;
++
++ vboxfsmp->sf_node_pool = uma_zcreate("VBOXFS node",
++ sizeof(struct vboxfs_node),
++ vboxfs_node_ctor, vboxfs_node_dtor,
++ vboxfs_node_init, vboxfs_node_fini,
++ UMA_ALIGN_PTR, 0);
++
++ /* Allocate the root node. */
++ error = vboxfs_alloc_node(mp, vboxfsmp, "", VDIR, 0,
++ 0, 0755, NULL, &root);
++
++ if (error != 0 || root == NULL) {
++ uma_zdestroy(vboxfsmp->sf_node_pool);
++ free(vboxfsmp, M_VBOXVFS);
++ return error;
++ }
++
++ root->sf_parent = root;
++ vboxfsmp->sf_root = root;
++
++ MNT_ILOCK(mp);
++ mp->mnt_data = vboxfsmp;
++ mp->mnt_stat.f_fsid.val[0] = fsinfo.serial;
++ mp->mnt_stat.f_fsid.val[1] = 0;
++ mp->mnt_flag |= MNT_LOCAL;
++ if (readonly != 0)
++ mp->mnt_flag |= MNT_RDONLY;
++
++ mp->mnt_kern_flag |= MNTK_LOOKUP_SHARED | MNTK_EXTENDED_SHARED;
++ MNT_IUNLOCK(mp);
++ vfs_mountedfrom(mp, share_name);
++
++ return (0);
+ }
+
+-static int vboxvfs_root(struct mount *mp, int flags, struct vnode **vpp, struct thread *td)
++/*
++ * Unmount a shared folder.
++ *
++ * vboxfs_unmount umounts the mounted file system. It return 0
++ * on sucess and any relevant errno on failure.
++ */
++static int
++vboxfs_unmount(struct mount *mp, int mntflags)
+ {
+- int rc = 0;
+- struct sf_glob_info *pShFlGlobalInfo = VFSMP2SFGLOBINFO(mp);
+- struct vnode *vp;
++ struct vboxfs_mnt *vboxfsmp;
++ struct thread *td;
++ int error;
++ int flags;
+
+- printf("%s: Enter\n", __FUNCTION__);
++ vboxfsmp = VFSTOVBOXFS(mp);
++ td = curthread;
++ flags = 0;
++ if (mntflags & MNT_FORCE)
++ flags |= FORCECLOSE;
+
+- vp = pShFlGlobalInfo->vnode_root;
+- VREF(vp);
++ error = vflush(mp, 0, flags, td);
++ if (error)
++ return (error);
+
+- vn_lock(vp, flags | LK_RETRY, td);
+- *vpp = vp;
++ /* Invoke Hypervisor unmount interface before proceeding */
++ error = sfprov_unmount(vboxfsmp->sf_handle);
++ if (error != 0) {
++ /* TBD anything here? */
++ }
+
+- printf("%s: Leave\n", __FUNCTION__);
++ uma_zdestroy(vboxfsmp->sf_node_pool);
+
+- return rc;
++ free(vboxfsmp, M_VBOXVFS);
++ MNT_ILOCK(mp);
++ mp->mnt_data = NULL;
++ mp->mnt_flag &= ~MNT_LOCAL;
++ MNT_IUNLOCK(mp);
++
++ return (0);
+ }
+
+-static int vboxvfs_quotactl(struct mount *mp, int cmd, uid_t uid, void *arg, struct thread *td)
++static int
++vboxfs_root(struct mount *mp, int flags, struct vnode **vpp)
+ {
+- return EOPNOTSUPP;
++ int error;
++ error = vboxfs_alloc_vp(mp, VFSTOVBOXFS(mp)->sf_root, flags, vpp);
++
++ if (!error)
++ (*vpp)->v_vflag |= VV_ROOT;
++
++ return error;
+ }
+
+-int vboxvfs_init(struct vfsconf *vfsp)
++/*
++ * Do operation associated with quotas, not supported
++ */
++static int
++vboxfs_quotactl(struct mount *mp, int cmd, uid_t uid, void *arg
++#if __FreeBSD_version >= 1400018
++ , bool *mp_busy
++#endif
++ )
+ {
+- int rc;
++ return (EOPNOTSUPP);
++}
+
+- /* Initialize the R0 guest library. */
+- rc = VbglR0SfInit();
+- if (RT_FAILURE(rc))
+- return ENXIO;
++/*
++ * Initialize the filesystem globals.
++ */
++static int
++vboxfs_init(struct vfsconf *vfsp)
++{
++ int error;
+
+- /* Connect to the host service. */
+- rc = VbglR0SfConnect(&g_vboxSFClient);
+- if (RT_FAILURE(rc))
+- {
+- printf("Failed to get connection to host! rc=%d\n", rc);
+- VbglR0SfTerm();
+- return ENXIO;
+- }
++ DROP_GIANT();
+
+- rc = VbglR0SfSetUtf8(&g_vboxSFClient);
+- if (RT_FAILURE (rc))
+- {
+- printf("VbglR0SfSetUtf8 failed, rc=%d\n", rc);
+- VbglR0SfDisconnect(&g_vboxSFClient);
+- VbglR0SfTerm();
+- return EPROTO;
+- }
++ sfprov = sfprov_connect(SFPROV_VERSION);
++ if (sfprov == NULL) {
++ printf("%s: couldn't connect to sf provider", __func__);
++ return (ENODEV);
++ }
+
+- printf("Successfully loaded shared folder module\n");
++ error = sfprov_set_show_symlinks();
++ if (error != 0)
++ printf("%s: host unable to show symlinks, error=%d\n",
++ __func__, error);
+
+- return 0;
++ PICKUP_GIANT();
++ return (0);
+ }
+
+-int vboxvfs_uninit(struct vfsconf *vfsp)
++/*
++ * Undo the work of vboxfs_init().
++ */
++static int
++vboxfs_uninit(struct vfsconf *vfsp)
+ {
+- VbglR0SfDisconnect(&g_vboxSFClient);
+- VbglR0SfTerm();
+
+- return 0;
++ DROP_GIANT();
++ sfprov_disconnect();
++ PICKUP_GIANT();
++ return (0);
+ }
+
+-int vboxvfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
++/*
++ * Get filesystem statistics.
++ */
++static int
++vboxfs_statfs(struct mount *mp, struct statfs *sbp)
+ {
+- return 0;
++ struct vboxfs_mnt *vboxfsmp;
++ sffs_fsinfo_t fsinfo;
++ int error;
++
++ vboxfsmp = VFSTOVBOXFS(mp);
++
++ error = sfprov_get_fsinfo(vboxfsmp->sf_handle, &fsinfo);
++ if (error != 0)
++ return (error);
++
++ sbp->f_iosize = fsinfo.blksize;
++ sbp->f_bsize = fsinfo.blksize;
++
++ sbp->f_bfree = fsinfo.blksavail;
++ sbp->f_bavail = fsinfo.blksavail;
++ sbp->f_files = fsinfo.blksavail / 4; /* some kind of reasonable value */
++ sbp->f_ffree = fsinfo.blksavail / 4;
++
++ sbp->f_blocks = fsinfo.blksused + sbp->f_bavail;
++ sbp->f_fsid.val[0] = mp->mnt_stat.f_fsid.val[0];
++ sbp->f_fsid.val[1] = mp->mnt_stat.f_fsid.val[1];
++ sbp->f_namemax = fsinfo.maxnamesize;
++
++ return (0);
+ }
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__vnops.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__vnops.c
new file mode 100644
index 000000000000..90a799eef1db
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__vnops.c
@@ -0,0 +1,1543 @@
+--- src/VBox/Additions/freebsd/vboxvfs/vboxvfs_vnops.c.orig 2025-08-13 19:41:18 UTC
++++ src/VBox/Additions/freebsd/vboxvfs/vboxvfs_vnops.c
+@@ -24,228 +24,1416 @@
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+-
+-#include "vboxvfs.h"
+ #include <sys/param.h>
+ #include <sys/systm.h>
+ #include <sys/namei.h>
+ #include <sys/kernel.h>
+-#include <sys/proc.h>
++#include <sys/types.h>
++#include <sys/malloc.h>
++#include <sys/stat.h>
+ #include <sys/bio.h>
++#include <sys/conf.h>
+ #include <sys/buf.h>
+-#include <sys/fcntl.h>
++#include <sys/iconv.h>
+ #include <sys/mount.h>
+-#include <sys/unistd.h>
+ #include <sys/vnode.h>
+-#include <sys/limits.h>
+-#include <sys/lockf.h>
+-#include <sys/stat.h>
++#include <sys/dirent.h>
++#include <sys/queue.h>
++#include <sys/unistd.h>
++#include <sys/endian.h>
+
+-#include <vm/vm.h>
+-#include <vm/vm_extern.h>
++#include <vm/uma.h>
+
++#include "vboxvfs.h"
++
++#if __FreeBSD_version < 1300063
++#define VN_IS_DOOMED(vp) (((vp)->v_iflag & VI_DOOMED) != 0)
++#endif
++
+ /*
+ * Prototypes for VBOXVFS vnode operations
+ */
+-static vop_create_t vboxvfs_create;
+-static vop_mknod_t vboxvfs_mknod;
+-static vop_open_t vboxvfs_open;
+-static vop_close_t vboxvfs_close;
+-static vop_access_t vboxvfs_access;
+-static vop_getattr_t vboxvfs_getattr;
+-static vop_setattr_t vboxvfs_setattr;
+-static vop_read_t vboxvfs_read;
+-static vop_write_t vboxvfs_write;
+-static vop_fsync_t vboxvfs_fsync;
+-static vop_remove_t vboxvfs_remove;
+-static vop_link_t vboxvfs_link;
+-static vop_lookup_t vboxvfs_lookup;
+-static vop_rename_t vboxvfs_rename;
+-static vop_mkdir_t vboxvfs_mkdir;
+-static vop_rmdir_t vboxvfs_rmdir;
+-static vop_symlink_t vboxvfs_symlink;
+-static vop_readdir_t vboxvfs_readdir;
+-static vop_strategy_t vboxvfs_strategy;
+-static vop_print_t vboxvfs_print;
+-static vop_pathconf_t vboxvfs_pathconf;
+-static vop_advlock_t vboxvfs_advlock;
+-static vop_getextattr_t vboxvfs_getextattr;
+-static vop_ioctl_t vboxvfs_ioctl;
+-static vop_getpages_t vboxvfs_getpages;
+-static vop_inactive_t vboxvfs_inactive;
+-static vop_putpages_t vboxvfs_putpages;
+-static vop_reclaim_t vboxvfs_reclaim;
++static vop_create_t vboxfs_create;
++static vop_open_t vboxfs_open;
++static vop_close_t vboxfs_close;
++static vop_access_t vboxfs_access;
++static vop_getattr_t vboxfs_getattr;
++static vop_setattr_t vboxfs_setattr;
++static vop_read_t vboxfs_read;
++static vop_readlink_t vboxfs_readlink;
++static vop_write_t vboxfs_write;
++static vop_fsync_t vboxfs_fsync;
++static vop_remove_t vboxfs_remove;
++static vop_link_t vboxfs_link;
++static vop_lookup_t vboxfs_lookup;
++static vop_cachedlookup_t vboxfs_cachedlookup;
++static vop_rename_t vboxfs_rename;
++static vop_mkdir_t vboxfs_mkdir;
++static vop_rmdir_t vboxfs_rmdir;
++static vop_symlink_t vboxfs_symlink;
++static vop_readdir_t vboxfs_readdir;
++static vop_print_t vboxfs_print;
++static vop_pathconf_t vboxfs_pathconf;
++static vop_advlock_t vboxfs_advlock;
++static vop_ioctl_t vboxfs_ioctl;
++static vop_inactive_t vboxfs_inactive;
++static vop_reclaim_t vboxfs_reclaim;
++static vop_vptofh_t vboxfs_vptofh;
+
+-struct vop_vector vboxvfs_vnodeops = {
+- .vop_default = &default_vnodeops,
++struct vop_vector vboxfs_vnodeops = {
++ .vop_default = &default_vnodeops,
+
+- .vop_access = vboxvfs_access,
+- .vop_advlock = vboxvfs_advlock,
+- .vop_close = vboxvfs_close,
+- .vop_create = vboxvfs_create,
+- .vop_fsync = vboxvfs_fsync,
+- .vop_getattr = vboxvfs_getattr,
+- .vop_getextattr = vboxvfs_getextattr,
+- .vop_getpages = vboxvfs_getpages,
+- .vop_inactive = vboxvfs_inactive,
+- .vop_ioctl = vboxvfs_ioctl,
+- .vop_link = vboxvfs_link,
+- .vop_lookup = vboxvfs_lookup,
+- .vop_mkdir = vboxvfs_mkdir,
+- .vop_mknod = vboxvfs_mknod,
+- .vop_open = vboxvfs_open,
+- .vop_pathconf = vboxvfs_pathconf,
+- .vop_print = vboxvfs_print,
+- .vop_putpages = vboxvfs_putpages,
+- .vop_read = vboxvfs_read,
+- .vop_readdir = vboxvfs_readdir,
+- .vop_reclaim = vboxvfs_reclaim,
+- .vop_remove = vboxvfs_remove,
+- .vop_rename = vboxvfs_rename,
+- .vop_rmdir = vboxvfs_rmdir,
+- .vop_setattr = vboxvfs_setattr,
+- .vop_strategy = vboxvfs_strategy,
+- .vop_symlink = vboxvfs_symlink,
+- .vop_write = vboxvfs_write,
++ .vop_access = vboxfs_access,
++ .vop_advlock = VOP_EOPNOTSUPP,
++ .vop_close = vboxfs_close,
++ .vop_create = vboxfs_create,
++ .vop_fsync = vboxfs_fsync,
++ .vop_getattr = vboxfs_getattr,
++ .vop_getextattr = VOP_EOPNOTSUPP,
++ .vop_inactive = vboxfs_inactive,
++ .vop_ioctl = vboxfs_ioctl,
++ .vop_link = vboxfs_link,
++ .vop_lookup = vboxfs_lookup,
++ .vop_cachedlookup = vboxfs_cachedlookup,
++ .vop_mkdir = vboxfs_mkdir,
++ .vop_mknod = VOP_EOPNOTSUPP,
++ .vop_open = vboxfs_open,
++ .vop_pathconf = vboxfs_pathconf,
++ .vop_print = vboxfs_print,
++ .vop_read = vboxfs_read,
++ .vop_readdir = vboxfs_readdir,
++ .vop_readlink = vboxfs_readlink,
++ .vop_reclaim = vboxfs_reclaim,
++ .vop_remove = vboxfs_remove,
++ .vop_rename = vboxfs_rename,
++ .vop_rmdir = vboxfs_rmdir,
++ .vop_setattr = vboxfs_setattr,
++ .vop_vptofh = vboxfs_vptofh,
++ .vop_symlink = vboxfs_symlink,
++ .vop_write = vboxfs_write,
++ .vop_bmap = VOP_EOPNOTSUPP
+ };
++#if __FreeBSD_version > 1300068
++VFS_VOP_VECTOR_REGISTER(vboxfs_vnodeops);
++#endif
+
+-static int vboxvfs_access(struct vop_access_args *ap)
++static uint64_t
++vsfnode_cur_time_usec(void)
+ {
+- return 0;
++ struct timeval now;
++
++ getmicrotime(&now);
++
++ return (now.tv_sec*1000 + now.tv_usec);
+ }
+
+-static int vboxvfs_open(struct vop_open_args *ap)
++static int
++vsfnode_stat_cached(struct vboxfs_node *np)
+ {
+- return 0;
++ return (vsfnode_cur_time_usec() - np->sf_stat_time) <
++ np->vboxfsmp->sf_stat_ttl * 1000UL;
+ }
+
+-static int vboxvfs_close(struct vop_close_args *ap)
++static int
++vsfnode_update_stat_cache(struct vboxfs_node *np)
+ {
+- return 0;
++ int error;
++
++ error = sfprov_get_attr(np->vboxfsmp->sf_handle, np->sf_path,
++ &np->sf_stat);
++#if 0
++ if (error == ENOENT)
++ sfnode_make_stale(node);
++#endif
++ if (error == 0)
++ np->sf_stat_time = vsfnode_cur_time_usec();
++
++ return (error);
+ }
+
+-static int vboxvfs_getattr(struct vop_getattr_args *ap)
++/*
++ * Need to clear v_object for insmntque failure.
++ */
++static void
++vboxfs_insmntque_dtr(struct vnode *vp, void *dtr_arg)
+ {
+- return 0;
++
++ // XXX: vboxfs_destroy_vobject(vp, vp->v_object);
++ vp->v_object = NULL;
++ vp->v_data = NULL;
++ vp->v_op = &dead_vnodeops;
++ vgone(vp);
++ vput(vp);
+ }
+
+-static int vboxvfs_setattr(struct vop_setattr_args *ap)
++/*
++ * Allocates a new vnode for the node node or returns a new reference to
++ * an existing one if the node had already a vnode referencing it. The
++ * resulting locked vnode is returned in *vpp.
++ *
++ * Returns zero on success or an appropriate error code on failure.
++ */
++int
++vboxfs_alloc_vp(struct mount *mp, struct vboxfs_node *node, int lkflag,
++ struct vnode **vpp)
+ {
+- return 0;
++ struct vnode *vp;
++ int error;
++
++ error = 0;
++loop:
++ VBOXFS_NODE_LOCK(node);
++loop1:
++ if ((vp = node->sf_vnode) != NULL) {
++ MPASS((node->sf_vpstate & VBOXFS_VNODE_DOOMED) == 0);
++ VI_LOCK(vp);
++ if ((node->sf_type == VDIR && node->sf_parent == NULL) ||
++ (VN_IS_DOOMED(vp) &&
++ (lkflag & LK_NOWAIT) != 0)) {
++ VI_UNLOCK(vp);
++ VBOXFS_NODE_UNLOCK(node);
++ error = ENOENT;
++ vp = NULL;
++ goto out;
++ }
++ if (VN_IS_DOOMED(vp)) {
++ VI_UNLOCK(vp);
++ node->sf_vpstate |= VBOXFS_VNODE_WRECLAIM;
++ while ((node->sf_vpstate & VBOXFS_VNODE_WRECLAIM) != 0) {
++ msleep(&node->sf_vnode, VBOXFS_NODE_MTX(node),
++ 0, "vsfE", 0);
++ }
++ goto loop1;
++ }
++ VBOXFS_NODE_UNLOCK(node);
++#if __FreeBSD_version < 1300109
++ error = vget(vp, lkflag | LK_INTERLOCK, curthread);
++#else
++ error = vget(vp, lkflag | LK_INTERLOCK);
++#endif
++ if (error == ENOENT)
++ goto loop;
++ if (error != 0) {
++ vp = NULL;
++ goto out;
++ }
++
++ /*
++ * Make sure the vnode is still there after
++ * getting the interlock to avoid racing a free.
++ */
++ if (node->sf_vnode == NULL || node->sf_vnode != vp) {
++ vput(vp);
++ goto loop;
++ }
++
++ goto out;
++ }
++
++ if ((node->sf_vpstate & VBOXFS_VNODE_DOOMED) ||
++ (node->sf_type == VDIR && node->sf_parent == NULL)) {
++ VBOXFS_NODE_UNLOCK(node);
++ error = ENOENT;
++ vp = NULL;
++ goto out;
++ }
++
++ /*
++ * otherwise lock the vp list while we call getnewvnode
++ * since that can block.
++ */
++ if (node->sf_vpstate & VBOXFS_VNODE_ALLOCATING) {
++ node->sf_vpstate |= VBOXFS_VNODE_WANT;
++ error = msleep((caddr_t) &node->sf_vpstate,
++ VBOXFS_NODE_MTX(node), PDROP | PCATCH,
++ "vboxfs_alloc_vp", 0);
++ if (error)
++ return error;
++
++ goto loop;
++ } else
++ node->sf_vpstate |= VBOXFS_VNODE_ALLOCATING;
++
++ VBOXFS_NODE_UNLOCK(node);
++
++ /* Get a new vnode and associate it with our node. */
++ error = getnewvnode("vboxfs", mp, &vboxfs_vnodeops, &vp);
++ if (error != 0)
++ goto unlock;
++ MPASS(vp != NULL);
++
++ /* lkflag is ignored, the lock is exclusive */
++ (void) vn_lock(vp, lkflag | LK_RETRY);
++
++ vp->v_data = node;
++ vp->v_type = node->sf_type;
++
++ /* Type-specific initialization. */
++ switch (node->sf_type) {
++ case VBLK:
++ /* FALLTHROUGH */
++ case VCHR:
++ /* FALLTHROUGH */
++ case VLNK:
++ /* FALLTHROUGH */
++ case VSOCK:
++ /* FALLTHROUGH */
++ case VFIFO:
++ /* FALLTHROUGH */
++ case VREG:
++ break;
++ case VDIR:
++ MPASS(node->sf_parent != NULL);
++ if (node->sf_parent == node)
++ vp->v_vflag |= VV_ROOT;
++ break;
++
++ default:
++ panic("vboxfs_alloc_vp: type %p %d", node, (int)node->sf_type);
++ }
++
++ if (vp->v_type != VFIFO)
++ VN_LOCK_ASHARE(vp);
++
++#if __FreeBSD_version < 1400051
++ error = insmntque1(vp, mp, vboxfs_insmntque_dtr, NULL);
++#else
++ error = insmntque(vp, mp);
++#endif
++ if (error) {
++#if __FreeBSD_version >= 1400051
++ vboxfs_insmntque_dtr(vp, NULL);
++#endif
++ vp = NULL;
++ }
++
++unlock:
++ VBOXFS_NODE_LOCK(node);
++
++ MPASS(node->sf_vpstate & VBOXFS_VNODE_ALLOCATING);
++ node->sf_vpstate &= ~VBOXFS_VNODE_ALLOCATING;
++ node->sf_vnode = vp;
++
++ if (node->sf_vpstate & VBOXFS_VNODE_WANT) {
++ node->sf_vpstate &= ~VBOXFS_VNODE_WANT;
++ VBOXFS_NODE_UNLOCK(node);
++ wakeup((caddr_t) &node->sf_vpstate);
++ } else
++ VBOXFS_NODE_UNLOCK(node);
++
++out:
++ *vpp = vp;
++
++#ifdef INVARIANTS
++ if (error == 0) {
++ MPASS(*vpp != NULL && VOP_ISLOCKED(*vpp));
++ VBOXFS_NODE_LOCK(node);
++ MPASS(*vpp == node->sf_vnode);
++ VBOXFS_NODE_UNLOCK(node);
++ }
++#endif
++
++ return error;
+ }
+
+-static int vboxvfs_read(struct vop_read_args *ap)
++/*
++ * Destroys the association between the vnode vp and the node it
++ * references.
++ */
++void
++vboxfs_free_vp(struct vnode *vp)
+ {
+- return 0;
++ struct vboxfs_node *node;
++
++ node = VP_TO_VBOXFS_NODE(vp);
++
++ VBOXFS_NODE_ASSERT_LOCKED(node);
++ node->sf_vnode = NULL;
++ if ((node->sf_vpstate & VBOXFS_VNODE_WRECLAIM) != 0)
++ wakeup(&node->sf_vnode);
++ node->sf_vpstate &= ~VBOXFS_VNODE_WRECLAIM;
++ vp->v_data = NULL;
+ }
+
+-static int vboxvfs_write(struct vop_write_args *ap)
++/*
++ * Allocate new vboxfs_node and vnode for given file
++ */
++static int
++vboxfs_alloc_file(struct vboxfs_mnt *vboxfsmp, const char *fullpath,
++ enum_vtype_t type, mode_t mode, struct vboxfs_node *parent,
++ int lkflag, struct vnode **vpp)
+ {
+- return 0;
++ int error;
++ struct vboxfs_node *unode;
++
++ error = vboxfs_alloc_node(vboxfsmp->sf_vfsp, vboxfsmp, fullpath, type,
++ vboxfsmp->sf_uid, vboxfsmp->sf_gid, mode, parent, &unode);
++
++ if (error)
++ goto out;
++
++ error = vboxfs_alloc_vp(vboxfsmp->sf_vfsp, unode, lkflag, vpp);
++ if (error)
++ vboxfs_free_node(vboxfsmp, unode);
++
++out:
++ return (error);
+ }
+
+-static int vboxvfs_create(struct vop_create_args *ap)
++static int
++vboxfs_vn_get_ino_alloc(struct mount *mp, void *arg, int lkflags,
++ struct vnode **rvp)
+ {
+- return 0;
++
++ return (vboxfs_alloc_vp(mp, arg, lkflags, rvp));
+ }
+
+-static int vboxvfs_remove(struct vop_remove_args *ap)
++/*
++ * Construct a new pathname given an sfnode plus an optional tail
++ * component of length len
++ * This handles ".." and "."
++ */
++static char *
++sfnode_construct_path(struct vboxfs_node *node, char *tail, int len)
+ {
+- return 0;
++ char *p;
++ size_t dstsz;
++
++ if (len <= 2 && tail[0] == '.' && (len == 1 || tail[1] == '.'))
++ panic("construct path for %s", tail);
++ dstsz = strlen(node->sf_path) + 1 + len + 1;
++ p = malloc(dstsz, M_VBOXVFS, M_WAITOK);
++ strcpy(p, node->sf_path);
++ strcat(p, "/");
++ strlcat(p, tail, dstsz);
++ return (p);
+ }
+
+-static int vboxvfs_rename(struct vop_rename_args *ap)
++static int
++vboxfs_access(struct vop_access_args *ap)
+ {
+- return 0;
++ struct vnode *vp = ap->a_vp;
++ accmode_t accmode = ap->a_accmode;
++ struct vboxfs_node *node;
++ int error;
++ mode_t m;
++
++ MPASS(VOP_ISLOCKED(vp));
++
++ node = VP_TO_VBOXFS_NODE(vp);
++
++ if ((accmode & VWRITE) && (vp->v_mount->mnt_flag & MNT_RDONLY)) {
++ switch (vp->v_type) {
++ case VDIR:
++ case VLNK:
++ case VREG:
++ return (EROFS);
++ /* NOT REACHED */
++ default:
++ break;
++ }
++ }
++
++ if (vsfnode_stat_cached(node))
++ error = 0;
++ else
++ error = vsfnode_update_stat_cache(node);
++ m = (error == 0) ? node->sf_stat.sf_mode : 0;
++
++#if __FreeBSD_version < 1300105
++ return (vaccess(vp->v_type, m, node->vboxfsmp->sf_uid,
++ node->vboxfsmp->sf_gid, accmode, ap->a_cred, NULL));
++#else
++ return (vaccess(vp->v_type, m, node->vboxfsmp->sf_uid,
++ node->vboxfsmp->sf_gid, accmode, ap->a_cred));
++#endif
+ }
+
+-static int vboxvfs_link(struct vop_link_args *ap)
++/*
++ * Clears the (cached) directory listing for the node.
++ */
++static void
++vfsnode_clear_dir_list(struct vboxfs_node *np)
+ {
+- return EOPNOTSUPP;
++ while (np->sf_dir_list != NULL) {
++ sffs_dirents_t *next = np->sf_dir_list->sf_next;
++ free(np->sf_dir_list, M_VBOXVFS);
++ np->sf_dir_list = next;
++ }
+ }
+
+-static int vboxvfs_symlink(struct vop_symlink_args *ap)
++static int
++vboxfs_get_sfp_file(struct vboxfs_node *np)
+ {
+- return EOPNOTSUPP;
++ sfp_file_t *fp;
++ int error;
++
++ fp = NULL;
++ VBOXFS_NODE_LOCK(np);
++ for (;;) {
++ if (np->sf_file != NULL) {
++ if (fp != NULL)
++ (void) sfprov_close(fp);
++ np->sf_opencnt++;
++ fp = np->sf_file;
++ break;
++ } else if (fp != NULL) {
++ np->sf_file = fp;
++ KASSERT(np->sf_opencnt == 0,
++ ("np %p opencnt (%d) must be zero.",
++ np, np->sf_opencnt));
++ np->sf_opencnt = 1;
++ break;
++ }
++ VBOXFS_NODE_UNLOCK(np);
++ error = sfprov_open(np->vboxfsmp->sf_handle, np->sf_path, &fp);
++ if (error != 0)
++ return (error);
++ VBOXFS_NODE_LOCK(np);
++ }
++ VBOXFS_NODE_UNLOCK(np);
++
++ return (0);
+ }
+
+-static int vboxvfs_mknod(struct vop_mknod_args *ap)
++static void
++vboxfs_put_sfp_file(struct vboxfs_node *np)
+ {
+- return EOPNOTSUPP;
++ VBOXFS_NODE_LOCK(np);
++ np->sf_opencnt--;
++ if (np->sf_opencnt == 0) {
++ (void) sfprov_close(np->sf_file);
++ np->sf_file = NULL;
++ }
++ VBOXFS_NODE_UNLOCK(np);
+ }
+
+-static int vboxvfs_mkdir(struct vop_mkdir_args *ap)
++static int
++vboxfs_open(struct vop_open_args *ap)
+ {
+- return 0;
++ struct vboxfs_node *np;
++ int error;
++
++ MPASS(VOP_ISLOCKED(vp));
++
++ np = VP_TO_VBOXFS_NODE(ap->a_vp);
++ error = vboxfs_get_sfp_file(np);
++ if (error != 0)
++ goto out;
++
++ vnode_create_vobject(ap->a_vp, 0, ap->a_td);
++out:
++ MPASS(VOP_ISLOCKED(vp));
++
++ return (error);
+ }
+
+-static int vboxvfs_rmdir(struct vop_rmdir_args *ap)
++static void
++vfsnode_invalidate_stat_cache(struct vboxfs_node *np)
+ {
+- return 0;
++ np->sf_stat_time = 0;
+ }
+
+-static int vboxvfs_readdir(struct vop_readdir_args *ap)
++static int
++vboxfs_close(struct vop_close_args *ap)
+ {
+- return 0;
++ struct vnode *vp = ap->a_vp;
++ struct vboxfs_node *np;
++
++ np = VP_TO_VBOXFS_NODE(vp);
++
++ /*
++ * Free the directory entries for the node. We do this on this call
++ * here because the directory node may not become inactive for a long
++ * time after the readdir is over. Case in point, if somebody cd's into
++ * the directory then it won't become inactive until they cd away again.
++ * In such a case we would end up with the directory listing not getting
++ * updated (i.e. the result of 'ls' always being the same) until they
++ * change the working directory.
++ */
++ vfsnode_clear_dir_list(np);
++
++ vfsnode_invalidate_stat_cache(np);
++
++ vboxfs_put_sfp_file(np);
++
++ return (0);
+ }
+
+-static int vboxvfs_fsync(struct vop_fsync_args *ap)
++static int
++vboxfs_getattr(struct vop_getattr_args *ap)
+ {
+- return 0;
++ struct vnode *vp = ap->a_vp;
++ struct vattr *vap = ap->a_vap;
++ struct vboxfs_node *np = VP_TO_VBOXFS_NODE(vp);
++ struct vboxfs_mnt *mp = np->vboxfsmp;
++ mode_t mode;
++ int error = 0;
++
++ mode = 0;
++ vap->va_type = vp->v_type;
++
++ vap->va_nlink = 1; /* number of references to file */
++ vap->va_uid = mp->sf_uid; /* owner user id */
++ vap->va_gid = mp->sf_gid; /* owner group id */
++ vap->va_rdev = NODEV; /* device the special file represents */
++ vap->va_gen = VNOVAL; /* generation number of file */
++ vap->va_flags = 0; /* flags defined for file */
++ vap->va_filerev = 0; /* file modification number */
++ vap->va_vaflags = 0; /* operations flags */
++ vap->va_fileid = np->sf_ino; /* file id */
++ vap->va_fsid = vp->v_mount->mnt_stat.f_fsid.val[0];
++ if (vap->va_fileid == 0)
++ vap->va_fileid = 2;
++
++ vap->va_atime.tv_sec = VNOVAL;
++ vap->va_atime.tv_nsec = VNOVAL;
++ vap->va_mtime.tv_sec = VNOVAL;
++ vap->va_mtime.tv_nsec = VNOVAL;
++ vap->va_ctime.tv_sec = VNOVAL;
++ vap->va_ctime.tv_nsec = VNOVAL;
++
++ if (!vsfnode_stat_cached(np)) {
++ error = vsfnode_update_stat_cache(np);
++ if (error != 0)
++ goto done;
++ }
++
++ vap->va_atime = np->sf_stat.sf_atime;
++ vap->va_mtime = np->sf_stat.sf_mtime;
++ vap->va_ctime = np->sf_stat.sf_ctime;
++
++ mode = np->sf_stat.sf_mode;
++
++ vap->va_mode = mode;
++ if (S_ISDIR(mode)) {
++ vap->va_type = VDIR; /* vnode type (for create) */
++ vap->va_mode = mp->sf_dmode != 0 ? (mp->sf_dmode & 0777) : vap->va_mode;
++ vap->va_mode &= ~mp->sf_dmask;
++ vap->va_mode |= S_IFDIR;
++ } else if (S_ISREG(mode)) {
++ vap->va_type = VREG;
++ vap->va_mode = mp->sf_fmode != 0 ? (mp->sf_fmode & 0777) : vap->va_mode;
++ vap->va_mode &= ~mp->sf_fmask;
++ vap->va_mode |= S_IFREG;
++ } else if (S_ISFIFO(mode))
++ vap->va_type = VFIFO;
++ else if (S_ISCHR(mode))
++ vap->va_type = VCHR;
++ else if (S_ISBLK(mode))
++ vap->va_type = VBLK;
++ else if (S_ISLNK(mode)) {
++ vap->va_type = VLNK;
++ vap->va_mode = mp->sf_fmode != 0 ? (mp->sf_fmode & 0777) : vap->va_mode;
++ vap->va_mode &= ~mp->sf_fmask;
++ vap->va_mode |= S_IFLNK;
++ } else if (S_ISSOCK(mode))
++ vap->va_type = VSOCK;
++
++ vap->va_size = np->sf_stat.sf_size;
++ vap->va_blocksize = 512;
++ /* bytes of disk space held by file */
++ vap->va_bytes = (np->sf_stat.sf_alloc + 511) / 512;
++
++done:
++ return (error);
+ }
+
+-static int vboxvfs_print (struct vop_print_args *ap)
++static int
++vboxfs_setattr(struct vop_setattr_args *ap)
+ {
+- return 0;
++ struct vnode *vp = ap->a_vp;
++ struct vattr *vap = ap->a_vap;
++ struct vboxfs_node *np = VP_TO_VBOXFS_NODE(vp);
++ int error;
++ mode_t mode;
++
++ mode = vap->va_mode;
++ if (vp->v_type == VREG)
++ mode |= S_IFREG;
++ else if (vp->v_type == VDIR)
++ mode |= S_IFDIR;
++ else if (vp->v_type == VBLK)
++ mode |= S_IFBLK;
++ else if (vp->v_type == VCHR)
++ mode |= S_IFCHR;
++ else if (vp->v_type == VLNK)
++ mode |= S_IFLNK;
++ else if (vp->v_type == VFIFO)
++ mode |= S_IFIFO;
++ else if (vp->v_type == VSOCK)
++ mode |= S_IFSOCK;
++
++ vfsnode_invalidate_stat_cache(np);
++
++ error = sfprov_set_attr(np->vboxfsmp->sf_handle, np->sf_path,
++ mode, vap->va_atime, vap->va_mtime, vap->va_ctime);
++#if 0
++ if (error == ENOENT)
++ sfnode_make_stale(np);
++#endif
++ if (vap->va_size != (u_quad_t)VNOVAL) {
++ switch (vp->v_type) {
++ case VDIR:
++ return (EISDIR);
++ case VLNK:
++ /* FALLTHROUGH */
++ case VREG:
++ error = sfprov_set_size(np->vboxfsmp->sf_handle, np->sf_path, vap->va_size);
++ break;
++ case VCHR:
++ /* FALLTHROUGH */
++ case VBLK:
++ /* FALLTHROUGH */
++ case VSOCK:
++ /* FALLTHROUGH */
++ case VFIFO:
++ /* FALLTHROUGH */
++ case VNON:
++ /* FALLTHROUGH */
++ case VBAD:
++ /* FALLTHROUGH */
++ case VMARKER:
++ return (0);
++ }
++ }
++
++ return (error);
+ }
+
+-static int vboxvfs_pathconf (struct vop_pathconf_args *ap)
++#define blkoff(vboxfsmp, loc) ((loc) & (vboxfsmp)->bmask)
++
++static int
++vboxfs_read(struct vop_read_args *ap)
+ {
+- return 0;
++ struct vnode *vp = ap->a_vp;
++ struct uio *uio = ap->a_uio;
++ struct vboxfs_node *np = VP_TO_VBOXFS_NODE(vp);
++ int error = 0;
++ uint32_t bytes;
++ uint32_t done;
++ unsigned long offset;
++ ssize_t total;
++ void *tmpbuf;
++
++ if (vp->v_type == VDIR)
++ return (EISDIR);
++
++ if (vp->v_type != VREG)
++ return (EINVAL);
++
++ if (uio->uio_offset < 0)
++ return (EINVAL);
++
++ total = uio->uio_resid;
++ if (total == 0)
++ return (0);
++
++ /*
++ * XXXGONZO: this is just to get things working
++ * should be optimized
++ */
++ tmpbuf = contigmalloc(PAGE_SIZE, M_DEVBUF, M_WAITOK, 0, ~0, PAGE_SIZE, 0);
++ if (tmpbuf == 0)
++ return (ENOMEM);
++
++ /*
++ * XXX VOP_READ() is called without VOP_OPEN() on exec case.
++ * We need to ensure the file is opened here.
++ */
++ error = vboxfs_get_sfp_file(np);
++ if (error != 0) /* Maybe removed on the host. */
++ return (EIO);
++ do {
++ offset = uio->uio_offset;
++ done = bytes = min(PAGE_SIZE, uio->uio_resid);
++ error = sfprov_read(np->sf_file, tmpbuf,
++ offset, &done, 0);
++ if (error == 0 && done > 0)
++ error = uiomove(tmpbuf, done, uio);
++ } while (error == 0 && uio->uio_resid > 0 && done > 0);
++ vboxfs_put_sfp_file(np);
++
++ contigfree(tmpbuf, PAGE_SIZE, M_DEVBUF);
++
++ /* a partial read is never an error */
++ if (total != uio->uio_resid)
++ error = 0;
++
++ return (error);
+ }
+
+-static int vboxvfs_strategy (struct vop_strategy_args *ap)
++static int
++vboxfs_write(struct vop_write_args *ap)
+ {
+- return 0;
++ struct vnode *vp = ap->a_vp;
++ struct uio *uio = ap->a_uio;
++ struct vboxfs_node *np = VP_TO_VBOXFS_NODE(vp);
++ int error = 0;
++ uint32_t bytes;
++ uint32_t done;
++ unsigned long offset;
++ ssize_t total;
++ void *tmpbuf;
++
++ if (vp->v_type == VDIR)
++ return (EISDIR);
++
++ if (vp->v_type != VREG)
++ return (EINVAL);
++
++ if (uio->uio_offset < 0)
++ return (EINVAL);
++
++ total = uio->uio_resid;
++ if (total == 0)
++ return (0);
++
++ /*
++ * XXXGONZO: this is just to get things working
++ * should be optimized
++ */
++ tmpbuf = contigmalloc(PAGE_SIZE, M_DEVBUF, M_WAITOK, 0, ~0, PAGE_SIZE, 0);
++ if (tmpbuf == 0)
++ return (ENOMEM);
++
++ do {
++ offset = uio->uio_offset;
++ bytes = min(PAGE_SIZE, uio->uio_resid);
++ error = uiomove(tmpbuf, bytes, uio);
++ if (error != 0)
++ break;
++ done = bytes;
++ error = sfprov_write(np->sf_file, tmpbuf,
++ offset, &done, 0);
++ if (error != 0)
++ break;
++ total -= done;
++ if (done != bytes)
++ uio->uio_resid += bytes - done;
++ } while (error == 0 && uio->uio_resid > 0 && done > 0);
++
++ contigfree(tmpbuf, PAGE_SIZE, M_DEVBUF);
++
++ /* a partial write is never an error */
++ if (total != uio->uio_resid)
++ error = 0;
++
++ return (error);
+ }
+
+-static int vboxvfs_ioctl(struct vop_ioctl_args *ap)
++static int
++vboxfs_create(struct vop_create_args *ap)
+ {
+- return ENOTTY;
++ struct vnode *dvp = ap->a_dvp;
++ struct vnode **vpp = ap->a_vpp;
++ struct componentname *cnp = ap->a_cnp;
++ struct vattr *vap = ap->a_vap;
++ sffs_stat_t stat;
++ char *fullpath = NULL;
++ struct vboxfs_node *dir = VP_TO_VBOXFS_NODE(dvp);
++ int error;
++ struct vboxfs_mnt *vboxfsmp = dir->vboxfsmp;
++
++ MPASS(vap->va_type == VREG);
++
++ fullpath = sfnode_construct_path(dir, cnp->cn_nameptr, cnp->cn_namelen);
++ error = sfprov_create(dir->vboxfsmp->sf_handle, fullpath, vap->va_mode,
++ &stat);
++
++ if (error)
++ goto out;
++
++ error = vboxfs_alloc_file(vboxfsmp, fullpath, VREG, vap->va_mode, dir, cnp->cn_lkflags, vpp);
++
++out:
++ if (fullpath)
++ free(fullpath, M_VBOXVFS);
++
++ if (error == 0) {
++ vfsnode_clear_dir_list(dir);
++ if ((cnp->cn_flags & MAKEENTRY) != 0)
++ cache_enter(dvp, *vpp, cnp);
++ }
++
++ return (error);
+ }
+
+-static int vboxvfs_getextattr(struct vop_getextattr_args *ap)
++static int
++vboxfs_remove(struct vop_remove_args *ap)
+ {
+- return 0;
++ struct vnode *dvp = ap->a_dvp;
++ struct vnode *vp = ap->a_vp;
++ struct vboxfs_node *np, *dir;
++
++ int error;
++
++ MPASS(VOP_ISLOCKED(dvp));
++ MPASS(VOP_ISLOCKED(vp));
++
++ error = 0;
++
++ np = VP_TO_VBOXFS_NODE(vp);
++ dir = VP_TO_VBOXFS_NODE(vp);
++
++ error = sfprov_remove(np->vboxfsmp->sf_handle, np->sf_path,
++ np->sf_type == VLNK);
++
++#if 0
++ if (error == ENOENT || error == 0)
++ sfnode_make_stale(np);
++#endif
++
++ if (error == 0)
++ vfsnode_clear_dir_list(dir);
++
++out:
++ return (error);
+ }
+
+-static int vboxvfs_advlock(struct vop_advlock_args *ap)
++static int
++vboxfs_rename(struct vop_rename_args *ap)
+ {
+- return 0;
++ struct vnode *fvp;
++ struct vnode *fdvp;
++ struct vnode *tvp;
++ struct vnode *tdvp;
++ struct componentname *fcnp;
++ struct componentname *tcnp;
++ struct vboxfs_node *np;
++ int ret;
++
++ fvp = ap->a_fvp;
++ fdvp = ap->a_fdvp;
++ tvp = ap->a_tvp;
++ tdvp = ap->a_tdvp;
++ fcnp = ap->a_fcnp;
++ tcnp = ap->a_tcnp;
++
++ /* Check for cross-device rename */
++ if ((fvp->v_mount != tdvp->v_mount) ||
++ (tvp && (fvp->v_mount != tvp->v_mount))) {
++ ret = EXDEV;
++ goto out;
++ }
++ np = VP_TO_VBOXFS_NODE(fvp);
++ if (np == NULL)
++ return (0);
++ ret = sfprov_rename(np->vboxfsmp->sf_handle,
++ fcnp->cn_nameptr, tcnp->cn_nameptr, fvp->v_type == VDIR);
++out:
++ if (tdvp == tvp)
++ vrele(tdvp);
++ else
++ vput(tdvp);
++ if (tvp)
++ vput(tvp);
++ vrele(fdvp);
++ vrele(fvp);
++ return (ret);
+ }
+
+-static int vboxvfs_lookup(struct vop_lookup_args *ap)
++static int
++vboxfs_link(struct vop_link_args *ap)
+ {
+- return 0;
++ return (EOPNOTSUPP);
+ }
+
+-static int vboxvfs_inactive(struct vop_inactive_args *ap)
++static int
++vboxfs_symlink(struct vop_symlink_args *ap)
+ {
+- return 0;
++ struct vnode *dvp = ap->a_dvp;
++ struct vnode **vpp = ap->a_vpp;
++ struct componentname *cnp = ap->a_cnp;
++ struct vattr *vap = ap->a_vap;
++ sffs_stat_t stat;
++ char *fullpath = NULL;
++ struct vboxfs_node *dir = VP_TO_VBOXFS_NODE(dvp);
++ int error;
++ struct vboxfs_mnt *vboxfsmp = dir->vboxfsmp;
++
++ MPASS(vap->va_type == VLNK);
++
++ fullpath = sfnode_construct_path(dir, cnp->cn_nameptr, cnp->cn_namelen);
++ error = sfprov_symlink(dir->vboxfsmp->sf_handle, fullpath, ap->a_target, &stat);
++
++ if (error)
++ goto out;
++
++ error = vboxfs_alloc_file(vboxfsmp, fullpath, VLNK, vap->va_mode, dir, cnp->cn_lkflags, vpp);
++
++out:
++ if (fullpath)
++ free(fullpath, M_VBOXVFS);
++
++ if (error == 0)
++ vfsnode_clear_dir_list(dir);
++
++ return (error);
+ }
+
+-static int vboxvfs_reclaim(struct vop_reclaim_args *ap)
++static int
++vboxfs_mkdir(struct vop_mkdir_args *ap)
+ {
+- return 0;
++ struct vnode *dvp = ap->a_dvp;
++ struct vnode **vpp = ap->a_vpp;
++ struct componentname *cnp = ap->a_cnp;
++ struct vattr *vap = ap->a_vap;
++ sffs_stat_t stat;
++ char *fullpath = NULL;
++ struct vboxfs_node *dir = VP_TO_VBOXFS_NODE(dvp);
++ int error;
++ struct vboxfs_mnt *vboxfsmp = dir->vboxfsmp;
++
++ MPASS(vap->va_type == VDIR);
++
++ fullpath = sfnode_construct_path(dir, cnp->cn_nameptr, cnp->cn_namelen);
++ error = sfprov_mkdir(dir->vboxfsmp->sf_handle, fullpath, vap->va_mode,
++ &stat);
++
++ if (error)
++ goto out;
++
++ error = vboxfs_alloc_file(vboxfsmp, fullpath, VDIR, vap->va_mode, dir, cnp->cn_lkflags, vpp);
++
++out:
++ if (fullpath)
++ free(fullpath, M_VBOXVFS);
++
++ if (error == 0)
++ vfsnode_clear_dir_list(dir);
++
++ return (error);
+ }
+
+-static int vboxvfs_getpages(struct vop_getpages_args *ap)
++static int
++vboxfs_rmdir(struct vop_rmdir_args *ap)
+ {
+- return 0;
++ struct vnode *dvp = ap->a_dvp;
++ struct vnode *vp = ap->a_vp;
++ struct vboxfs_node *np, *dir;
++
++ int error;
++
++ MPASS(VOP_ISLOCKED(dvp));
++ MPASS(VOP_ISLOCKED(vp));
++
++ error = 0;
++
++ np = VP_TO_VBOXFS_NODE(vp);
++ dir = VP_TO_VBOXFS_NODE(vp);
++
++ error = sfprov_rmdir(np->vboxfsmp->sf_handle, np->sf_path);
++
++#if 0
++ if (error == ENOENT || error == 0)
++ sfnode_make_stale(np);
++#endif
++
++ if (error == 0)
++ vfsnode_clear_dir_list(dir);
++
++out:
++ return (error);
+ }
+
+-static int vboxvfs_putpages(struct vop_putpages_args *ap)
++static int
++vboxfs_readdir(struct vop_readdir_args *ap)
+ {
+- return 0;
++ int *eofp = ap->a_eofflag;
++ struct vnode *vp = ap->a_vp;
++ struct uio *uio = ap->a_uio;
++ struct vboxfs_node *dir = VP_TO_VBOXFS_NODE(vp);
++ struct vboxfs_node *node = NULL;
++ struct sffs_dirent *dirent = NULL;
++ sffs_dirents_t *cur_buf;
++ off_t offset = 0;
++ off_t orig_off = uio->uio_offset;
++ int error = 0;
++ int dummy_eof;
++
++ if (vp->v_type != VDIR)
++ return (ENOTDIR);
++
++ if (eofp == NULL)
++ eofp = &dummy_eof;
++ *eofp = 0;
++
++ /*
++ * Get the directory entry names from the host. This gets all
++ * entries. These are stored in a linked list of sffs_dirents_t
++ * buffers, each of which contains a list of dirent64_t's.
++ */
++ if (dir->sf_dir_list == NULL) {
++ error = sfprov_readdir(dir->vboxfsmp->sf_handle, dir->sf_path,
++ &dir->sf_dir_list);
++ if (error != 0)
++ goto done;
++ }
++
++ /*
++ * Validate and skip to the desired offset.
++ */
++ cur_buf = dir->sf_dir_list;
++ offset = 0;
++
++ while (cur_buf != NULL && offset + cur_buf->sf_len <= uio->uio_offset) {
++ offset += cur_buf->sf_len;
++ cur_buf = cur_buf->sf_next;
++ }
++
++ if (cur_buf == NULL && offset != uio->uio_offset) {
++ error = EINVAL;
++ goto done;
++ }
++
++ if (cur_buf != NULL && offset != uio->uio_offset) {
++ off_t off = offset;
++ int step;
++ dirent = &cur_buf->sf_entries[0];
++
++ while (off < uio->uio_offset) {
++ if (dirent->sf_off == uio->uio_offset)
++ break;
++ step = sizeof(struct sffs_dirent) + dirent->sf_entry.d_reclen;
++ dirent = (struct sffs_dirent *) (((char *) dirent) + step);
++ off += step;
++ }
++
++ if (off >= uio->uio_offset) {
++ error = EINVAL;
++ goto done;
++ }
++ }
++
++ offset = uio->uio_offset - offset;
++
++ /*
++ * Lookup each of the names, so that we have ino's, and copy to
++ * result buffer.
++ */
++ while (cur_buf != NULL) {
++ if (offset >= cur_buf->sf_len) {
++ cur_buf = cur_buf->sf_next;
++ offset = 0;
++ continue;
++ }
++
++ dirent = (struct sffs_dirent *)
++ (((char *) &cur_buf->sf_entries[0]) + offset);
++ if (dirent->sf_entry.d_reclen > uio->uio_resid)
++ break;
++
++ if (strcmp(dirent->sf_entry.d_name, ".") == 0) {
++ node = dir;
++ } else if (strcmp(dirent->sf_entry.d_name, "..") == 0) {
++ node = dir->sf_parent;
++ if (node == NULL)
++ node = dir;
++ } else {
++#if 0
++ node = vsfnode_lookup(dir, dirent->sf_entry.d_name, VNON,
++ 0, &dirent->sf_stat, vsfnode_cur_time_usec(), NULL);
++ if (node == NULL)
++ panic("sffs_readdir() lookup failed");
++#endif
++ }
++
++ if (node)
++ dirent->sf_entry.d_fileno = node->sf_ino;
++ else
++ dirent->sf_entry.d_fileno = 0xdeadbeef;
++
++ error = uiomove(&dirent->sf_entry, dirent->sf_entry.d_reclen, uio);
++ if (error != 0)
++ break;
++
++ uio->uio_offset = dirent->sf_off;
++ offset += sizeof(struct sffs_dirent) + dirent->sf_entry.d_reclen;
++ }
++
++ if (error == 0 && cur_buf == NULL)
++ *eofp = 1;
++done:
++ if (error != 0)
++ uio->uio_offset = orig_off;
++ return (error);
+ }
+
++static int
++vboxfs_readlink(struct vop_readlink_args *v)
++{
++ struct vnode *vp = v->a_vp;
++ struct uio *uio = v->a_uio;
++
++ int error;
++ struct vboxfs_node *np;
++ void *tmpbuf;
++
++ MPASS(uio->uio_offset == 0);
++ MPASS(vp->v_type == VLNK);
++
++ np = VP_TO_VBOXFS_NODE(vp);
++
++ tmpbuf = contigmalloc(MAXPATHLEN, M_DEVBUF, M_WAITOK, 0, ~0, 1, 0);
++ if (tmpbuf == NULL)
++ return (ENOMEM);
++
++ error = sfprov_readlink(np->vboxfsmp->sf_handle, np->sf_path, tmpbuf,
++ MAXPATHLEN);
++ if (error)
++ goto done;
++
++ error = uiomove(tmpbuf, strlen(tmpbuf), uio);
++
++done:
++ if (tmpbuf)
++ contigfree(tmpbuf, MAXPATHLEN, M_DEVBUF);
++ return (error);
++}
++
++static int
++vboxfs_fsync(struct vop_fsync_args *ap)
++{
++ struct vnode *vp;
++ struct vboxfs_node *np;
++ int ret;
++
++ vp = ap->a_vp;
++ np = VP_TO_VBOXFS_NODE(vp);
++ if (np == NULL)
++ return (0);
++ ret = sfprov_fsync(np->sf_file);
++ return (ret);
++}
++
++static int
++vboxfs_print(struct vop_print_args *ap)
++{
++ struct vnode *vp = ap->a_vp;
++ struct vboxfs_node *np;
++
++ np = VP_TO_VBOXFS_NODE(vp);
++
++ if (np == NULL) {
++ printf("No vboxfs_node data\n");
++ return (0);
++ }
++
++ printf("\tpath = %s, parent = %p", np->sf_path,
++ np->sf_parent ? np->sf_parent : NULL);
++ printf("\n");
++ return (0);
++}
++
++static int
++vboxfs_pathconf(struct vop_pathconf_args *ap)
++{
++ register_t *retval = ap->a_retval;
++ int error = 0;
++
++ switch (ap->a_name) {
++ case _PC_LINK_MAX:
++ *retval = 65535;
++ break;
++ case _PC_NAME_MAX:
++ *retval = NAME_MAX;
++ break;
++ case _PC_PATH_MAX:
++ *retval = PATH_MAX;
++ break;
++ default:
++ error = EINVAL;
++ break;
++ }
++ return (error);
++}
++
++/*
++ * File specific ioctls.
++ */
++static int
++vboxfs_ioctl(struct vop_ioctl_args *ap)
++{
++ return (ENOTTY);
++}
++
++/*
++ * Lookup an entry in a directory and create a new vnode if found.
++ */
++static int
++vboxfs_lookup1(struct vnode *dvp, struct vnode **vpp,
++ struct componentname *cnp)
++{
++ char *nameptr = cnp->cn_nameptr; /* the name of the file or directory */
++ struct vnode *tdp = NULL;
++ struct vboxfs_node *node = VP_TO_VBOXFS_NODE(dvp);
++ struct vboxfs_mnt *vboxfsmp = node->vboxfsmp;
++ u_long nameiop = cnp->cn_nameiop;
++ u_long flags = cnp->cn_flags;
++ sffs_stat_t stat;
++ //long namelen;
++ ino_t id = 0;
++ int ltype, type, error = 0;
++ int lkflags = cnp->cn_lkflags;
++ char *fullpath = NULL;
++
++ *vpp = NULLVP;
++ error = ENOENT;
++ if (cnp->cn_flags & ISDOTDOT) {
++ error = vn_vget_ino_gen(dvp, vboxfs_vn_get_ino_alloc,
++ node->sf_parent, cnp->cn_lkflags, vpp);
++ error = ENOENT;
++ if (error != 0)
++ goto out;
++
++ } else if (cnp->cn_namelen == 1 && cnp->cn_nameptr[0] == '.') {
++ VREF(dvp);
++ *vpp = dvp;
++ error = 0;
++ } else {
++ mode_t m;
++ type = VNON;
++ fullpath = sfnode_construct_path(node, cnp->cn_nameptr, cnp->cn_namelen);
++ error = sfprov_get_attr(node->vboxfsmp->sf_handle,
++ fullpath, &stat);
++ // stat_time = vsfnode_cur_time_usec();
++
++ m = stat.sf_mode;
++ if (error != 0) {
++ /* The entry was not found in the directory.
++ * This is OK if we are creating or renaming an
++ * entry and are working on the last component of
++ * the path name. */
++ if ((cnp->cn_flags & ISLASTCN) &&
++ (cnp->cn_nameiop == CREATE || \
++ cnp->cn_nameiop == RENAME ||
++ (cnp->cn_nameiop == DELETE &&
++ cnp->cn_flags & DOWHITEOUT &&
++ cnp->cn_flags & ISWHITEOUT))) {
++ error = VOP_ACCESS(dvp, VWRITE, cnp->cn_cred,
++#if __FreeBSD_version < 1400037
++ cnp->cn_thread);
++#else
++ curthread);
++#endif
++ if (error != 0)
++ goto out;
++
++#if __FreeBSD_version < 1400068
++ /* Keep the component name in the buffer for
++ * future uses. */
++ cnp->cn_flags |= SAVENAME;
++#endif
++
++ error = EJUSTRETURN;
++ } else
++ error = ENOENT;
++ }
++ else {
++ if (S_ISDIR(m))
++ type = VDIR;
++ else if (S_ISREG(m))
++ type = VREG;
++ else if (S_ISLNK(m))
++ type = VLNK;
++ error = vboxfs_alloc_file(vboxfsmp, fullpath, type, 0755, node, cnp->cn_lkflags, vpp);
++ }
++ }
++
++ if ((cnp->cn_flags & MAKEENTRY) != 0)
++ cache_enter(dvp, *vpp, cnp);
++out:
++ if (fullpath)
++ free(fullpath, M_VBOXVFS);
++
++ return (error);
++}
++
++static int
++vboxfs_cachedlookup(struct vop_cachedlookup_args *ap)
++{
++ return (vboxfs_lookup1(ap->a_dvp, ap->a_vpp, ap->a_cnp));
++}
++
++static int
++vboxfs_lookup(struct vop_lookup_args *ap)
++{
++ struct vnode *dvp = ap->a_dvp;
++ struct componentname *cnp = ap->a_cnp;
++ struct vboxfs_node *np = VP_TO_VBOXFS_NODE(dvp);
++ struct timespec mtime;
++ int flags = cnp->cn_flags;
++ int error;
++
++ if (dvp->v_type != VDIR)
++ return (ENOTDIR);
++
++ if ((flags & ISLASTCN) && (dvp->v_mount->mnt_flag & MNT_RDONLY) &&
++ (cnp->cn_nameiop == DELETE || cnp->cn_nameiop == RENAME))
++ return (EROFS);
++
++ error = vn_dir_check_exec(dvp, cnp);
++ if (error != 0)
++ return (error);
++
++ /* Check if the directory is unmodified on the host. */
++ mtime = np->sf_stat.sf_mtime;
++ error = vsfnode_update_stat_cache(np);
++ if (error == 0) {
++ if (mtime.tv_sec == np->sf_stat.sf_mtime.tv_sec &&
++ mtime.tv_nsec == np->sf_stat.sf_mtime.tv_nsec)
++ return (vfs_cache_lookup(ap));
++ }
++
++ cache_purge(dvp);
++
++ return (vboxfs_lookup1(ap->a_dvp, ap->a_vpp, ap->a_cnp));
++}
++
++static int
++vboxfs_inactive(struct vop_inactive_args *ap)
++{
++ return (0);
++}
++
++static int
++vboxfs_reclaim(struct vop_reclaim_args *ap)
++{
++ struct vnode *vp;
++ struct vboxfs_node *node;
++ struct vboxfs_mnt *vboxfsmp;
++
++ vp = ap->a_vp;
++ node = VP_TO_VBOXFS_NODE(vp);
++ vboxfsmp = node->vboxfsmp;
++
++ vnode_destroy_vobject(vp);
++ vp->v_object = NULL;
++ cache_purge(vp);
++
++ VBOXFS_NODE_LOCK(node);
++ VBOXFS_ASSERT_ELOCKED(node);
++ vboxfs_free_vp(vp);
++
++ /* If the node referenced by this vnode was deleted by the user,
++ * we must free its associated data structures (now that the vnode
++ * is being reclaimed). */
++ if ((node->sf_vpstate & VBOXFS_VNODE_ALLOCATING) == 0) {
++ node->sf_vpstate = VBOXFS_VNODE_DOOMED;
++ VBOXFS_NODE_UNLOCK(node);
++ vboxfs_free_node(vboxfsmp, node);
++ } else
++ VBOXFS_NODE_UNLOCK(node);
++
++ MPASS(vp->v_data == NULL);
++
++ return (0);
++}
++
++static int
++vboxfs_vptofh(struct vop_vptofh_args *ap)
++{
++
++ return (EOPNOTSUPP);
++}
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_x11_vboxmouse_Makefile.kmk b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_x11_vboxmouse_Makefile.kmk
new file mode 100644
index 000000000000..bd5e626ecea2
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_x11_vboxmouse_Makefile.kmk
@@ -0,0 +1,29 @@
+--- src/VBox/Additions/x11/vboxmouse/Makefile.kmk.orig 2025-08-13 19:41:22 UTC
++++ src/VBox/Additions/x11/vboxmouse/Makefile.kmk
+@@ -237,10 +237,22 @@ ifdef VBOX_USE_SYSTEM_XORG_HEADERS
+
+
+ ifdef VBOX_USE_SYSTEM_XORG_HEADERS
+- # As vboxmouse_drv is not needed at all for X.Org Server 1.7 and later do not
+- # build it in this case.
+- DLLS := $(filter-out vboxmouse_drv_%,$(DLLS))
+- SYSMODS := $(filter-out vboxmouse_drv%,$(SYSMODS))
++ ifeq ($(KBUILD_TARGET),freebsd)
++ DLLS += vboxmouse_drv_system
++ vboxmouse_drv_system_TEMPLATE = VBOXGUESTR3XORGMOD
++ vboxmouse_drv_system_DEFS := $(vboxmouse_drv_70_DEFS) NO_ANSIC
++ vboxmouse_drv_system_INCS := \
++ /usr/local/include/pixman-1 \
++ /usr/local/include/xorg \
++ $(PATH_SUB_CURRENT)
++ vboxmouse_drv_system_SOURCES = \
++ vboxmouse.c
++ else
++ # As vboxmouse_drv is not needed at all for X.Org Server 1.7 and later do not
++ # build it in this case.
++ DLLS := $(filter-out vboxmouse_drv_%,$(DLLS))
++ SYSMODS := $(filter-out vboxmouse_drv%,$(SYSMODS))
++ endif
+ endif
+
+
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA.cpp
new file mode 100644
index 000000000000..de5a81911c03
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA.cpp
@@ -0,0 +1,20 @@
+--- src/VBox/Devices/Graphics/DevVGA-SVGA.cpp.orig 2025-08-13 19:47:43 UTC
++++ src/VBox/Devices/Graphics/DevVGA-SVGA.cpp
+@@ -178,7 +178,7 @@
+ # ifdef RT_OS_DARWIN
+ # include "DevVGA-SVGA3d-cocoa.h"
+ # endif
+-# ifdef RT_OS_LINUX
++# if defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX)
+ # ifdef IN_RING3
+ # include "DevVGA-SVGA3d-glLdr.h"
+ # endif
+@@ -7949,7 +7949,7 @@ static void vmsvgaR3PowerOnDevice(PPDMDEVINS pDevIns,
+ }
+ # endif
+
+-# if defined(VBOX_WITH_VMSVGA3D) && defined(RT_OS_LINUX)
++# if defined(VBOX_WITH_VMSVGA3D) && (defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX))
+ if (pThis->svga.f3DEnabled)
+ {
+ /* The FIFO thread may use X API for accelerated screen output. */
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-dx-dx11.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-dx-dx11.cpp
new file mode 100644
index 000000000000..4d74ec64cec0
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-dx-dx11.cpp
@@ -0,0 +1,11 @@
+--- src/VBox/Devices/Graphics/DevVGA-SVGA3d-dx-dx11.cpp.orig 2025-08-13 19:47:43 UTC
++++ src/VBox/Devices/Graphics/DevVGA-SVGA3d-dx-dx11.cpp
+@@ -3021,7 +3021,7 @@ static DECLCALLBACK(int) vmsvga3dBackInit(PPDMDEVINS p
+ RT_NOREF(pDevIns, pThis);
+
+ int rc;
+-#ifdef RT_OS_LINUX /** @todo Remove, this is currently needed for loading the X11 library in order to call XInitThreads(). */
++#if defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX) /** @todo Remove, this is currently needed for loading the X11 library in order to call XInitThreads(). */
+ rc = glLdrInit(pDevIns);
+ if (RT_FAILURE(rc))
+ {
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-glLdr.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-glLdr.cpp
new file mode 100644
index 000000000000..e9ae5d0b71f9
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-glLdr.cpp
@@ -0,0 +1,29 @@
+--- src/VBox/Devices/Graphics/DevVGA-SVGA3d-glLdr.cpp.orig 2025-04-14 17:55:41 UTC
++++ src/VBox/Devices/Graphics/DevVGA-SVGA3d-glLdr.cpp
+@@ -196,7 +196,7 @@ int glLdrInit(PPDMDEVINS pDevIns)
+ pfn_wglDeleteContext = 0;
+ pfn_wglMakeCurrent = 0;
+ pfn_wglShareLists = 0;
+-#elif defined(RT_OS_LINUX)
++#elif defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX)
+ pfn_XConfigureWindow = 0;
+ pfn_XCloseDisplay = 0;
+ pfn_XCreateColormap = 0;
+@@ -306,7 +306,7 @@ int glLdrInit(PPDMDEVINS pDevIns)
+ GLGETPROC_(wglDeleteContext, "");
+ GLGETPROC_(wglMakeCurrent, "");
+ GLGETPROC_(wglShareLists, "");
+-#elif defined(RT_OS_LINUX)
++#elif defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX)
+ X11GETPROC_(XConfigureWindow);
+ X11GETPROC_(XCloseDisplay);
+ X11GETPROC_(XCreateColormap);
+@@ -407,7 +407,7 @@ int glLdrInit(PPDMDEVINS pDevIns)
+ GLGETPROC_(glVertexPointer, "");
+ GLGETPROC_(glViewport, "");
+
+-#ifdef RT_OS_LINUX
++#if defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX)
+ XInitThreads();
+ #endif
+ return VINF_SUCCESS;
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-glLdr.h b/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-glLdr.h
new file mode 100644
index 000000000000..52d86f546033
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-glLdr.h
@@ -0,0 +1,11 @@
+--- src/VBox/Devices/Graphics/DevVGA-SVGA3d-glLdr.h.orig 2025-04-14 17:55:41 UTC
++++ src/VBox/Devices/Graphics/DevVGA-SVGA3d-glLdr.h
+@@ -346,7 +346,7 @@ GLPFN BOOL (WINAPI *pfn_wglShareLists)(HGLRC, HGLRC);
+ GLPFN BOOL (WINAPI *pfn_wglShareLists)(HGLRC, HGLRC);
+ #define wglShareLists pfn_wglShareLists
+
+-#elif defined(RT_OS_LINUX)
++#elif defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX)
+ /*
+ * GLX
+ */
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-ogl.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-ogl.cpp
new file mode 100644
index 000000000000..74106db011ff
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Graphics_DevVGA-SVGA3d-ogl.cpp
@@ -0,0 +1,56 @@
+--- src/VBox/Devices/Graphics/DevVGA-SVGA3d-ogl.cpp.orig 2025-04-14 17:55:42 UTC
++++ src/VBox/Devices/Graphics/DevVGA-SVGA3d-ogl.cpp
+@@ -1198,7 +1198,7 @@ static DECLCALLBACK(int) vmsvga3dBackTerminate(PVGASTA
+ RTSemEventDestroy(pState->WndRequestSem);
+ #elif defined(RT_OS_DARWIN)
+
+-#elif defined(RT_OS_LINUX)
++#elif defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX)
+ /* signal to the thread that it is supposed to exit */
+ pState->bTerminate = true;
+ /* wait for it to terminate */
+@@ -3216,7 +3216,7 @@ static DECLCALLBACK(int) vmsvga3dBackGenerateMipmaps(P
+ }
+
+
+-#ifdef RT_OS_LINUX
++#if defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX)
+ /**
+ * X11 event handling thread.
+ *
+@@ -3246,7 +3246,7 @@ static DECLCALLBACK(int) vmsvga3dXEventThread(RTTHREAD
+ }
+ return VINF_SUCCESS;
+ }
+-#endif // RT_OS_LINUX
++#endif // RT_OS_FREEBSD || RT_OS_LINUX
+
+
+ /**
+@@ -3484,7 +3484,7 @@ int vmsvga3dContextDefineOgl(PVGASTATECC pThisCC, uint
+ return VINF_SUCCESS;
+ }
+
+-#if defined(RT_OS_LINUX)
++#if defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX)
+ /*
+ * HW accelerated graphics output.
+ */
+@@ -3976,7 +3976,7 @@ static DECLCALLBACK(int) vmsvga3dBackSurfaceBlitToScre
+ return VINF_SUCCESS;
+ }
+
+-#else /* !RT_OS_LINUX */
++#else /* !RT_OS_FREEBSD && !RT_OS_LINUX */
+
+ static DECLCALLBACK(int) vmsvga3dBackDefineScreen(PVGASTATE pThis, PVGASTATECC pThisCC, VMSVGASCREENOBJECT *pScreen)
+ {
+@@ -4096,7 +4096,7 @@ static int vmsvga3dContextDestroyOgl(PVGASTATECC pThis
+ AssertRC(rc);
+ #elif defined(RT_OS_DARWIN)
+ vmsvga3dCocoaDestroyViewAndContext(pContext->cocoaView, pContext->cocoaContext);
+-#elif defined(RT_OS_LINUX)
++#elif defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX)
+ glXMakeCurrent(pState->display, None, NULL);
+ glXDestroyContext(pState->display, pContext->glxContext);
+ XDestroyWindow(pState->display, pContext->window);
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Makefile.kmk b/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Makefile.kmk
new file mode 100644
index 000000000000..b66a828f5eb2
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Makefile.kmk
@@ -0,0 +1,44 @@
+--- src/VBox/Devices/Makefile.kmk.orig 2025-08-13 19:48:02 UTC
++++ src/VBox/Devices/Makefile.kmk
+@@ -135,6 +135,7 @@ if !defined(VBOX_ONLY_EXTPACKS)
+ VBoxDDU_LDFLAGS.darwin += -framework IOKit
+ endif
+
++ VBoxDDU_LDFLAGS.freebsd = $(VBOX_GCC_NO_UNDEFINED)
+ VBoxDDU_LDFLAGS.linux = $(VBOX_GCC_NO_UNDEFINED)
+ $(call VBOX_SET_VER_INFO_DLL,VBoxDDU,VirtualBox VMM Devices and Drivers Utilities)
+
+@@ -290,6 +291,7 @@ if !defined(VBOX_ONLY_EXTPACKS) && "$(intersects $(KBU
+ -framework SystemConfiguration \
+ -framework AVFoundation \
+ -framework Foundation
++ VBoxDD_LDFLAGS.freebsd = $(VBOX_GCC_NO_UNDEFINED)
+ VBoxDD_LDFLAGS.linux = $(VBOX_GCC_NO_UNDEFINED)
+
+ # --- Tracing bits. ---
+@@ -334,7 +336,7 @@ if !defined(VBOX_ONLY_EXTPACKS) && "$(intersects $(KBU
+ Graphics/DevVGA-SVGA-cmd.cpp
+ endif
+ ifdef VBOX_WITH_VMSVGA3D
+- if1of ($(KBUILD_TARGET), linux win)
++ if1of ($(KBUILD_TARGET), linux win freebsd)
+ # Dynamically load 3D library (opengl32, libGL).
+ # This is a temporary solution. In future the 3D backend will be in a separate library.
+ VBOX_WITH_VMSVGA3D_DYNAMIC_LOAD = 1
+@@ -410,6 +412,7 @@ if !defined(VBOX_ONLY_EXTPACKS) && "$(intersects $(KBU
+ Graphics/DevVGA-SVGA3d-glLdr.cpp
+ else
+ VBoxDD_LIBS.linux += X11 GL
++ VBoxDD_LIBS.freebsd += X11 GL
+ VBoxDD_LIBS.win += $(PATH_SDK_$(VBOX_WINPSDK)_LIB)/Opengl32.lib
+ endif
+ VBoxDD_LDFLAGS.darwin += -framework OpenGL
+@@ -1523,6 +1526,8 @@ if defined(VBOX_WITH_VMSVGA3D) && !defined(VBOX_ONLY_E
+ VBoxSVGA3D_INCS = $(VBOX_GRAPHICS_INCS)
+ VBoxSVGA3D_INCS.win := \
+ Graphics/shaderlib/libWineStub/include
++ VBoxSVGA3D_INCS.freebsd := \
++ Graphics/shaderlib/wine/include
+ VBoxSVGA3D_INCS.linux := \
+ Graphics/shaderlib/wine/include
+ VBoxSVGA3D_INCS.darwin := \
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Network_DrvNAT.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Network_DrvNAT.cpp
new file mode 100644
index 000000000000..088c8e1fe3c1
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_Network_DrvNAT.cpp
@@ -0,0 +1,10 @@
+--- src/VBox/Devices/Network/DrvNAT.cpp.orig 2025-08-13 19:48:03 UTC
++++ src/VBox/Devices/Network/DrvNAT.cpp
+@@ -57,6 +57,7 @@
+
+ #ifdef RT_OS_FREEBSD
+ # include <netinet/in.h>
++# include <sys/socket.h>
+ #endif
+
+ #include <iprt/asm.h>
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_PC_ipxe_Makefile.kmk b/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_PC_ipxe_Makefile.kmk
new file mode 100644
index 000000000000..fa3a87062c6c
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_PC_ipxe_Makefile.kmk
@@ -0,0 +1,29 @@
+--- src/VBox/Devices/PC/ipxe/Makefile.kmk.orig 2025-08-13 19:48:06 UTC
++++ src/VBox/Devices/PC/ipxe/Makefile.kmk
+@@ -45,7 +45,7 @@ iPxeBiosBin_CLEAN = \
+ iPxeBiosBin_CLEAN = \
+ $(iPxeBiosBin_0_OUTDIR)/iPxeBiosBin.c \
+
+-if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), darwin.amd64 darwin.arm64 linux.arm64 os2.x86 solaris.amd64 win.amd64 win.arm64)
++if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), darwin.amd64 darwin.arm64 linux.arm64 os2.x86 solaris.amd64 win.amd64 win.arm64 linux.amd64 freebsd.amd64)
+ $$(iPxeBiosBin_0_OUTDIR)/iPxeBiosBin.c: $(PATH_SUB_CURRENT)/iPxeBiosBin.rom $(VBOX_BIN2C) | $$(dir $$@)
+ $(call MSG_TOOL,bin2c,iPxeBiosBin,$<,$@)
+ $(QUIET)$(VBOX_BIN2C) -min 32 -max 56 -mask 0x1ff -export NetBiosBinary $< $@
+@@ -131,7 +131,7 @@ endif
+ -falign-loops=1 \
+ -Os \
+ -falign-functions=1 \
+- -mpreferred-stack-boundary=2 \
++ -mstack-alignment=2 \
+ -mregparm=3 \
+ -mrtd \
+ -freg-struct-return \
+@@ -154,7 +154,7 @@ endif
+ -falign-jumps=1 \
+ -falign-loops=1 \
+ -falign-functions=1 \
+- -mpreferred-stack-boundary=2 \
++ -mstack-alignment=2 \
+ -mregparm=3 \
+ -mrtd \
+ -freg-struct-return \
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_USB_freebsd_USBProxyDevice-freebsd.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_USB_freebsd_USBProxyDevice-freebsd.cpp
new file mode 100644
index 000000000000..8258164501b2
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Devices_USB_freebsd_USBProxyDevice-freebsd.cpp
@@ -0,0 +1,11 @@
+--- src/VBox/Devices/USB/freebsd/USBProxyDevice-freebsd.cpp.orig 2025-08-13 19:49:01 UTC
++++ src/VBox/Devices/USB/freebsd/USBProxyDevice-freebsd.cpp
+@@ -67,7 +67,7 @@
+ #include "../USBProxyDevice.h"
+
+ /** Maximum endpoints supported. */
+-#define USBFBSD_MAXENDPOINTS 127
++#define USBFBSD_MAXENDPOINTS 126
+ #define USBFBSD_MAXFRAMES 56
+
+ /** This really needs to be defined in vusb.h! */
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_ExtPacks_VNC_VBoxVNC.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_ExtPacks_VNC_VBoxVNC.cpp
new file mode 100644
index 000000000000..d4bae4a6c016
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_ExtPacks_VNC_VBoxVNC.cpp
@@ -0,0 +1,58 @@
+--- src/VBox/ExtPacks/VNC/VBoxVNC.cpp.orig 2025-08-13 19:50:02 UTC
++++ src/VBox/ExtPacks/VNC/VBoxVNC.cpp
+@@ -55,7 +55,7 @@
+
+ #ifdef LIBVNCSERVER_IPv6
+ // enable manually!
+-// #define VBOX_USE_IPV6
++#define VBOX_USE_IPV6
+ #endif
+
+
+@@ -431,7 +431,7 @@ DECLCALLBACK(int) VNCServerImpl::VRDEEnableConnections
+
+ // get address
+ char *pszTCPAddress = (char *)RTMemTmpAllocZ(VNC_ADDRESS_OPTION_MAX);
+- rc = instance->mCallbacks->VRDECallbackProperty(instance->mCallback,
++ int rc = instance->mCallbacks->VRDECallbackProperty(instance->mCallback,
+ VRDE_QP_NETWORK_ADDRESS,
+ pszTCPAddress,
+ VNC_ADDRESS_OPTION_MAX,
+@@ -592,19 +592,35 @@ DECLCALLBACK(int) VNCServerImpl::VRDEEnableConnections
+ pszServerAddress6 = szIPv6ListenAll;
+ }
+
+- if (pszVNCPort4 && uServerPort4 == 0)
++ if (strlen(pszVNCPort4) > 0 && uServerPort4 == 0)
+ {
+ rc = RTStrToUInt32Ex(pszVNCPort4, NULL, 10, &uServerPort4);
+ if (!RT_SUCCESS(rc) || uServerPort4 > 65535)
+ uServerPort4 = 0;
+ }
+
+- if (pszVNCPort6 && uServerPort6 == 0)
++ if (strlen(pszVNCPort6) > 0 && uServerPort6 == 0)
+ {
+ rc = RTStrToUInt32Ex(pszVNCPort6, NULL, 10, &uServerPort6);
+ if (!RT_SUCCESS(rc) || uServerPort6 > 65535)
+ uServerPort6 = 0;
+ }
++
++/* Backward compatibility with set port in "TCP/Ports" only { */
++ if (uServerPort4 == 0 && strlen(pszTCPPort) > 0)
++ {
++ rc = RTStrToUInt32Ex(pszTCPPort, NULL, 10, &uServerPort4);
++ if (!RT_SUCCESS(rc) || uServerPort4 > 65535)
++ uServerPort4 = 0;
++ }
++
++ if (uServerPort6 == 0 && strlen(pszTCPPort) > 0)
++ {
++ rc = RTStrToUInt32Ex(pszTCPPort, NULL, 10, &uServerPort6);
++ if (!RT_SUCCESS(rc) || uServerPort6 > 65535)
++ uServerPort6 = 0;
++ }
++/* } */
+
+ if (uServerPort4 == 0 || uServerPort6 == 0)
+ vncServer->autoPort = 1;
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VBoxHeadless_VBoxHeadless.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VBoxHeadless_VBoxHeadless.cpp
new file mode 100644
index 000000000000..ed1f32e0ce97
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VBoxHeadless_VBoxHeadless.cpp
@@ -0,0 +1,11 @@
+--- src/VBox/Frontends/VBoxHeadless/VBoxHeadless.cpp.orig 2025-08-13 19:50:04 UTC
++++ src/VBox/Frontends/VBoxHeadless/VBoxHeadless.cpp
+@@ -63,7 +63,7 @@ using namespace com;
+ # include <iprt/process.h>
+ #endif
+
+-#if defined(RT_OS_LINUX) || defined(RT_OS_DARWIN) || defined(RT_OS_SOLARIS)
++#if defined(RT_OS_LINUX) || defined(RT_OS_DARWIN) || defined(RT_OS_SOLARIS) || defined(RT_OS_FREEBSD)
+ # include <cerrno>
+ #endif
+
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VBoxManage_VBoxManageModifyVM.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VBoxManage_VBoxManageModifyVM.cpp
new file mode 100644
index 000000000000..838da1e0f15d
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VBoxManage_VBoxManageModifyVM.cpp
@@ -0,0 +1,29 @@
+--- src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp.orig 2025-08-13 19:50:05 UTC
++++ src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp
+@@ -151,7 +151,7 @@ enum
+ MODIFYVM_UARTMODE,
+ MODIFYVM_UARTTYPE,
+ MODIFYVM_UART,
+-#if defined(RT_OS_LINUX) || defined(RT_OS_WINDOWS)
++#if defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX) || defined(RT_OS_WINDOWS)
+ MODIFYVM_LPTMODE,
+ MODIFYVM_LPT,
+ #endif
+@@ -393,7 +393,7 @@ static const RTGETOPTDEF g_aModifyVMOptions[] =
+ OPT2("--uart-mode", "--uartmode", MODIFYVM_UARTMODE, RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX),
+ OPT2("--uart-type", "--uarttype", MODIFYVM_UARTTYPE, RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX),
+ OPT1("--uart", MODIFYVM_UART, RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX),
+-#if defined(RT_OS_LINUX) || defined(RT_OS_WINDOWS)
++#if defined(RT_OS_LINUX) || defined(RT_OS_WINDOWS) || defined(RT_OS_FREEBSD)
+ OPT2("--lpt-mode", "--lptmode", MODIFYVM_LPTMODE, RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX),
+ OPT1("--lpt", MODIFYVM_LPT, RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX),
+ #endif
+@@ -2680,7 +2680,7 @@ RTEXITCODE handleModifyVM(HandlerArg *a)
+ break;
+ }
+
+-#if defined(RT_OS_LINUX) || defined(RT_OS_WINDOWS)
++#if defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX) || defined(RT_OS_WINDOWS)
+ case MODIFYVM_LPTMODE:
+ {
+ ComPtr<IParallelPort> lpt;
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VirtualBox_src_manager_UIVirtualBoxManager.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VirtualBox_src_manager_UIVirtualBoxManager.cpp
new file mode 100644
index 000000000000..7f18eb80356b
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VirtualBox_src_manager_UIVirtualBoxManager.cpp
@@ -0,0 +1,46 @@
+--- src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp.orig 2025-08-13 19:50:55 UTC
++++ src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp
+@@ -2402,6 +2402,9 @@ void UIVirtualBoxManager::prepare()
+ qApp->installEventFilter(this);
+ #endif
+
++ /* Prepare notification-center invisibvle way: */
++ prepareNotificationCenter();
++
+ /* Cache media data early if necessary: */
+ if (uiCommon().agressiveCaching())
+ gpMediumEnumerator->enumerateMedia();
+@@ -2446,6 +2449,12 @@ void UIVirtualBoxManager::prepare()
+ #endif /* VBOX_GUI_WITH_NETWORK_MANAGER && VBOX_WITH_UPDATE_REQUEST */
+ }
+
++void UIVirtualBoxManager::prepareNotificationCenter()
++{
++ UINotificationCenter::create();
++
++}
++
+ void UIVirtualBoxManager::prepareCloudMachineManager()
+ {
+ UICloudMachineManager::create();
+@@ -2805,6 +2814,12 @@ void UIVirtualBoxManager::cleanupCloudMachineManager()
+ UICloudMachineManager::destroy();
+ }
+
++void UIVirtualBoxManager::cleanupNotificationCenter()
++{
++ UINotificationCenter::destroy();
++
++}
++
+ void UIVirtualBoxManager::cleanup()
+ {
+ /* Ask sub-dialogs to commit data: */
+@@ -2814,6 +2829,7 @@ void UIVirtualBoxManager::cleanup()
+ cleanupWidgets();
+ cleanupMenuBar();
+ cleanupCloudMachineManager();
++ cleanupNotificationCenter();
+ }
+
+ UIVirtualMachineItem *UIVirtualBoxManager::currentItem() const
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VirtualBox_src_manager_UIVirtualBoxManager.h b/emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VirtualBox_src_manager_UIVirtualBoxManager.h
new file mode 100644
index 000000000000..80daea0c318c
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VirtualBox_src_manager_UIVirtualBoxManager.h
@@ -0,0 +1,20 @@
+--- src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.h.orig 2025-08-13 19:50:55 UTC
++++ src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.h
+@@ -341,6 +341,8 @@ private slots: (private)
+ * @{ */
+ /** Prepares window. */
+ void prepare();
++ /** Prepares notification-center. */
++ void prepareNotificationCenter();
+ /** Prepares cloud machine manager. */
+ void prepareCloudMachineManager();
+ /** Prepares icon. */
+@@ -366,6 +368,8 @@ private slots: (private)
+ void cleanupMenuBar();
+ /** Cleanups cloud machine manager. */
+ void cleanupCloudMachineManager();
++ /** Cleanups notification-center. */
++ void cleanupNotificationCenter();
+ /** Cleanups window. */
+ void cleanup();
+ /** @} */
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VirtualBox_src_manager_UIVirtualBoxWidget.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VirtualBox_src_manager_UIVirtualBoxWidget.cpp
new file mode 100644
index 000000000000..52f736783c17
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Frontends_VirtualBox_src_manager_UIVirtualBoxWidget.cpp
@@ -0,0 +1,24 @@
+--- src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxWidget.cpp.orig 2025-08-13 19:50:55 UTC
++++ src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxWidget.cpp
+@@ -399,8 +399,8 @@ void UIVirtualBoxWidget::prepareWidgets()
+ }
+ }
+
+- /* Create notification-center: */
+- UINotificationCenter::create(this);
++ /* Reparent notification-center: */
++ gpNotificationCenter->setParent(this);
+
+ /* Update toolbar finally: */
+ updateToolbar();
+@@ -746,8 +746,8 @@ void UIVirtualBoxWidget::cleanup()
+
+ void UIVirtualBoxWidget::cleanup()
+ {
+- /* Destroy notification-center: */
+- UINotificationCenter::destroy();
++ /* Reparent notification-center: */
++ gpNotificationCenter->setParent(0);
+ }
+
+ UIGlobalToolsWidget *UIVirtualBoxWidget::globalToolsWidget() const
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_SUPDrv.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_SUPDrv.cpp
new file mode 100644
index 000000000000..9c25da533123
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_SUPDrv.cpp
@@ -0,0 +1,13 @@
+--- src/VBox/HostDrivers/Support/SUPDrv.cpp.orig 2025-08-13 19:51:08 UTC
++++ src/VBox/HostDrivers/Support/SUPDrv.cpp
+@@ -322,8 +322,8 @@ static SUPFUNC g_aFunctions[] =
+ SUPEXP_STK_BACK( 2, SUPR0PageFree),
+ SUPEXP_STK_BACK( 6, SUPR0PageMapKernel),
+ SUPEXP_STK_BACK( 6, SUPR0PageProtect),
+-#if defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS) || defined(RT_OS_FREEBSD)
+- SUPEXP_STK_OKAY( 2, SUPR0HCPhysToVirt), /* only-linux, only-solaris, only-freebsd */
++#if defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS)
++ SUPEXP_STK_OKAY( 2, SUPR0HCPhysToVirt), /* only-linux, only-solaris */
+ #endif
+ SUPEXP_STK_BACK( 2, SUPR0PrintfV),
+ SUPEXP_STK_BACK( 1, SUPR0GetSessionGVM),
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_SUPDrvInternal.h b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_SUPDrvInternal.h
new file mode 100644
index 000000000000..df4d3cd76817
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_SUPDrvInternal.h
@@ -0,0 +1,11 @@
+--- src/VBox/HostDrivers/Support/SUPDrvInternal.h.orig 2025-08-13 19:51:08 UTC
++++ src/VBox/HostDrivers/Support/SUPDrvInternal.h
+@@ -368,7 +368,7 @@
+ # define SUPDRV_WITHOUT_MSR_PROBER
+ #endif
+
+-#if 1
++#if 0
+ /** @def SUPDRV_USE_TSC_DELTA_THREAD
+ * Use a dedicated kernel thread to service TSC-delta measurement requests.
+ * @todo Test on servers with many CPUs and sockets. */
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_freebsd_Makefile b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_freebsd_Makefile
new file mode 100644
index 000000000000..f0d605f2addd
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_freebsd_Makefile
@@ -0,0 +1,30 @@
+--- src/VBox/HostDrivers/Support/freebsd/Makefile.orig 2025-08-13 19:51:09 UTC
++++ src/VBox/HostDrivers/Support/freebsd/Makefile
+@@ -93,6 +93,7 @@ SRCS += \
+ assert.c \
+ handletable.c \
+ handletablectx.c \
++ handletablesimple.c \
+ once.c \
+ term.c \
+ thread.c
+@@ -117,7 +118,8 @@ SRCS += \
+ strprintf2-ellipsis.c \
+ strtonum.c \
+ memchr.c \
+- stringalloc.c
++ stringalloc.c \
++ utf-8.c
+
+ .PATH: ${.CURDIR}/common/rand
+ SRCS += \
+@@ -163,7 +165,8 @@ SRCS += \
+ rtStrFormatKernelAddress-generic.c \
+ errvars-generic.c \
+ mppresent-generic.c \
+- timer-generic.c
++ timer-generic.c \
++ system-page-size-generic.c
+
+ .PATH: ${.CURDIR}/r0drv
+ SRCS += \
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_freebsd_SUPDrv-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_freebsd_SUPDrv-freebsd.c
new file mode 100644
index 000000000000..7faa07739f14
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_freebsd_SUPDrv-freebsd.c
@@ -0,0 +1,234 @@
+--- src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c.orig 2025-01-21 14:06:14 UTC
++++ src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c
+@@ -44,9 +44,13 @@
+ #include <sys/fcntl.h>
+ #include <sys/conf.h>
+ #include <sys/uio.h>
++#include <vm/vm.h>
+ #include <vm/pmap.h> /* for pmap_map() */
++#include <sys/mutex.h>
++#include <sys/smp.h> /* mp_maxcpus */
+
+ #include "../SUPDrvInternal.h"
++#include "freebsd/the-freebsd-kernel.h"
+ #include <VBox/version.h>
+ #include <iprt/initterm.h>
+ #include <iprt/string.h>
+@@ -58,7 +62,15 @@
+ #include <iprt/alloc.h>
+ #include <iprt/err.h>
+ #include <iprt/asm.h>
++#include <iprt/x86.h>
+
++
++#ifdef VBOX_WITH_EFLAGS_AC_SET_IN_VBOXDRV
++# include <machine/cpufunc.h>
++# include <machine/md_var.h>
++# include <machine/specialreg.h>
++#endif
++
+ #ifdef VBOX_WITH_HARDENING
+ # define VBOXDRV_PERM 0600
+ #else
+@@ -77,7 +89,9 @@ static d_ioctl_t VBoxDrvFreeBSDIOCtl;
+ static d_open_t VBoxDrvFreeBSDOpenSys;
+ static void vboxdrvFreeBSDDtr(void *pvData);
+ static d_ioctl_t VBoxDrvFreeBSDIOCtl;
++static d_ioctl_t VBoxDrvFreeBSDIOCtlSMAP;
+ static int VBoxDrvFreeBSDIOCtlSlow(PSUPDRVSESSION pSession, u_long ulCmd, caddr_t pvData, struct thread *pTd);
++static bool VBoxDrvFreeBSDCpuHasSMAP(void);
+
+
+ /*********************************************************************************************************************************
+@@ -94,7 +108,8 @@ static moduledata_t g_VBoxDrvFreeBSDModule =
+ };
+
+ /** Declare the module as a pseudo device. */
+-DECLARE_MODULE(vboxdrv, g_VBoxDrvFreeBSDModule, SI_SUB_PSEUDO, SI_ORDER_ANY);
++#define KERNEL_RELBRANCHEND (roundup(__FreeBSD_version, 500) - 1)
++DECLARE_MODULE_WITH_MAXVER(vboxdrv, g_VBoxDrvFreeBSDModule, SI_SUB_PSEUDO, SI_ORDER_ANY, KERNEL_RELBRANCHEND);
+ MODULE_VERSION(vboxdrv, 1);
+
+ /**
+@@ -141,6 +156,13 @@ static int VBoxDrvFreeBSDModuleEvent(struct module *pM
+ static int VBoxDrvFreeBSDModuleEvent(struct module *pMod, int enmEventType, void *pvArg)
+ {
+ int rc;
++
++ /* Refuse to load if mp_maxcpus is wrong */
++ if (MAXCPU != mp_maxcpus) {
++ printf("vboxdrv: MAXCPU != mp_maxcpus (%d != %d)\n", MAXCPU, mp_maxcpus);
++ return EINVAL;
++ }
++
+ switch (enmEventType)
+ {
+ case MOD_LOAD:
+@@ -183,6 +205,13 @@ static int VBoxDrvFreeBSDLoad(void)
+ rc = supdrvInitDevExt(&g_VBoxDrvFreeBSDDevExt, sizeof(SUPDRVSESSION));
+ if (RT_SUCCESS(rc))
+ {
++ if (VBoxDrvFreeBSDCpuHasSMAP())
++ {
++ LogRel(("disabling SMAP for VBoxDrvFreeBSDIOCtl\n"));
++ g_VBoxDrvFreeBSDChrDevSwSys.d_ioctl = VBoxDrvFreeBSDIOCtlSMAP;
++ g_VBoxDrvFreeBSDChrDevSwUsr.d_ioctl = VBoxDrvFreeBSDIOCtlSMAP;
++ }
++
+ /*
+ * Configure character devices. Add symbolic links for compatibility.
+ */
+@@ -322,7 +351,45 @@ static int VBoxDrvFreeBSDIOCtl(struct cdev *pDev, u_lo
+ return VBoxDrvFreeBSDIOCtlSlow(pSession, ulCmd, pvData, pTd);
+ }
+
++/**
++ * Alternative Device I/O Control entry point on hosts with SMAP support.
++ *
++ * @returns depends...
++ * @param pDev The device.
++ * @param ulCmd The command.
++ * @param pvData Pointer to the data.
++ * @param fFile The file descriptor flags.
++ * @param pTd The calling thread.
++ */
++static int VBoxDrvFreeBSDIOCtlSMAP(struct cdev *pDev, u_long ulCmd, caddr_t pvData, int fFile, struct thread *pTd)
++{
++ /*
++ * Allow VBox R0 code to touch R3 memory. Setting the AC bit disables the
++ * SMAP check.
++ */
++ RTCCUINTREG fSavedEfl = ASMAddFlags(X86_EFL_AC);
+
++ int rc = VBoxDrvFreeBSDIOCtl(pDev, ulCmd, pvData, fFile, pTd);
++
++#ifdef VBOX_WITH_EFLAGS_AC_SET_IN_VBOXDRV
++ /*
++ * Before we restore AC and the rest of EFLAGS, check if the IOCtl handler code
++ * accidentially modified it or some other important flag.
++ */
++ if (RT_UNLIKELY( (ASMGetFlags() & (X86_EFL_AC | X86_EFL_IF | X86_EFL_DF | X86_EFL_IOPL))
++ != ((fSavedEfl & (X86_EFL_AC | X86_EFL_IF | X86_EFL_DF | X86_EFL_IOPL)) | X86_EFL_AC) ))
++ {
++ char szTmp[48];
++ RTStrPrintf(szTmp, sizeof(szTmp), "ulCmd=%#x: %#x->%#x!", ulCmd, (uint32_t)fSavedEfl, (uint32_t)ASMGetFlags());
++ supdrvBadContext(&g_VBoxDrvFreeBSDDevExt, "SUPDrv-freebsd.c", __LINE__, szTmp);
++ }
++#endif
++
++ ASMSetFlags(fSavedEfl);
++ return rc;
++}
++
++
+ /**
+ * Deal with the 'slow' I/O control requests.
+ *
+@@ -372,11 +439,10 @@ static int VBoxDrvFreeBSDIOCtlSlow(PSUPDRVSESSION pSes
+ */
+ SUPREQHDR Hdr;
+ pvUser = *(void **)pvData;
+- int rc = copyin(pvUser, &Hdr, sizeof(Hdr));
+- if (RT_UNLIKELY(rc))
++ if (RT_FAILURE(RTR0MemUserCopyFrom(&Hdr, (uintptr_t)pvUser, sizeof(Hdr))))
+ {
+- OSDBGPRINT(("VBoxDrvFreeBSDIOCtlSlow: copyin(%p,Hdr,) -> %#x; ulCmd=%#lx\n", pvUser, rc, ulCmd));
+- return rc;
++ OSDBGPRINT(("VBoxDrvFreeBSDIOCtlSlow: copyin(%p,Hdr,); ulCmd=%#lx\n", pvUser, ulCmd));
++ return EFAULT;
+ }
+ if (RT_UNLIKELY((Hdr.fFlags & SUPREQHDR_FLAGS_MAGIC_MASK) != SUPREQHDR_FLAGS_MAGIC))
+ {
+@@ -401,13 +467,12 @@ static int VBoxDrvFreeBSDIOCtlSlow(PSUPDRVSESSION pSes
+ OSDBGPRINT(("VBoxDrvFreeBSDIOCtlSlow: failed to allocate buffer of %d bytes; ulCmd=%#lx\n", cbReq, ulCmd));
+ return ENOMEM;
+ }
+- rc = copyin(pvUser, pHdr, Hdr.cbIn);
+- if (RT_UNLIKELY(rc))
++ if (RT_FAILURE(RTR0MemUserCopyFrom(pHdr, (uintptr_t)pvUser, Hdr.cbIn)))
+ {
+- OSDBGPRINT(("VBoxDrvFreeBSDIOCtlSlow: copyin(%p,%p,%#x) -> %#x; ulCmd=%#lx\n",
+- pvUser, pHdr, Hdr.cbIn, rc, ulCmd));
++ OSDBGPRINT(("VBoxDrvFreeBSDIOCtlSlow: copyin(%p,%p,%#x); ulCmd=%#lx\n",
++ pvUser, pHdr, Hdr.cbIn, ulCmd));
+ RTMemTmpFree(pHdr);
+- return rc;
++ return EFAULT;
+ }
+ if (Hdr.cbIn < cbReq)
+ RT_BZERO((uint8_t *)pHdr + Hdr.cbIn, cbReq - Hdr.cbIn);
+@@ -435,9 +500,8 @@ static int VBoxDrvFreeBSDIOCtlSlow(PSUPDRVSESSION pSes
+ OSDBGPRINT(("VBoxDrvFreeBSDIOCtlSlow: too much output! %#x > %#x; uCmd=%#lx!\n", cbOut, cbReq, ulCmd));
+ cbOut = cbReq;
+ }
+- rc = copyout(pHdr, pvUser, cbOut);
+- if (RT_UNLIKELY(rc))
+- OSDBGPRINT(("VBoxDrvFreeBSDIOCtlSlow: copyout(%p,%p,%#x) -> %d; uCmd=%#lx!\n", pHdr, pvUser, cbOut, rc, ulCmd));
++ if (RT_FAILURE(RTR0MemUserCopyTo((uintptr_t)pvUser, pHdr, cbOut)))
++ OSDBGPRINT(("VBoxDrvFreeBSDIOCtlSlow: copyout(%p,%p,%#x); uCmd=%#lx!\n", pHdr, pvUser, cbOut, ulCmd));
+
+ Log(("VBoxDrvFreeBSDIOCtlSlow: returns %d / %d ulCmd=%lx\n", 0, pHdr->rc, ulCmd));
+
+@@ -540,8 +604,7 @@ bool VBOXCALL supdrvOSAreCpusOfflinedOnSuspend(void)
+
+ bool VBOXCALL supdrvOSAreCpusOfflinedOnSuspend(void)
+ {
+- /** @todo verify this. */
+- return false;
++ return true;
+ }
+
+
+@@ -637,31 +700,44 @@ int VBOXCALL supdrvOSMsrProberModify(RTCPUID idCpu,
+ #endif /* SUPDRV_WITH_MSR_PROBER */
+
+
+-#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_ARM64)
+-SUPR0DECL(int) SUPR0HCPhysToVirt(RTHCPHYS HCPhys, void **ppv)
++/**
++ * Check if the CPU has SMAP support.
++ */
++static bool VBoxDrvFreeBSDCpuHasSMAP(void)
+ {
+- AssertReturn(!(HCPhys & PAGE_OFFSET_MASK), VERR_INVALID_POINTER);
+- AssertReturn(HCPhys != NIL_RTHCPHYS, VERR_INVALID_POINTER);
+- *ppv = (void *)(uintptr_t)pmap_map(NULL, HCPhys, (HCPhys | PAGE_OFFSET_MASK) + 1, VM_PROT_WRITE | VM_PROT_READ);
+- return VINF_SUCCESS;
+-}
++#ifdef VBOX_WITH_EFLAGS_AC_SET_IN_VBOXDRV
++ if ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0)
++ return true;
+ #endif
++ return false;
++}
+
+
+ SUPR0DECL(int) SUPR0PrintfV(const char *pszFormat, va_list va)
+ {
+ char szMsg[256];
++ IPRT_FREEBSD_SAVE_EFL_AC();
++
+ RTStrPrintfV(szMsg, sizeof(szMsg), pszFormat, va);
+ szMsg[sizeof(szMsg) - 1] = '\0';
+
+ printf("%s", szMsg);
++
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return 0;
+ }
+
+
+ SUPR0DECL(uint32_t) SUPR0GetKernelFeatures(void)
+ {
+- return 0;
++ uint32_t fFlags = 0;
++#ifdef VBOX_WITH_EFLAGS_AC_SET_IN_VBOXDRV
++ if (g_VBoxDrvFreeBSDChrDevSwSys.d_ioctl == VBoxDrvFreeBSDIOCtlSMAP)
++ fFlags |= SUPKERNELFEATURES_SMAP;
++ else
++ Assert(!(ASMGetCR4() & X86_CR4_SMAP));
++#endif
++ return fFlags;
+ }
+
+
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_freebsd_SUPLib-freebsd.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_freebsd_SUPLib-freebsd.cpp
new file mode 100644
index 000000000000..11813244f938
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_freebsd_SUPLib-freebsd.cpp
@@ -0,0 +1,11 @@
+--- src/VBox/HostDrivers/Support/freebsd/SUPLib-freebsd.cpp.orig 2025-08-13 19:51:09 UTC
++++ src/VBox/HostDrivers/Support/freebsd/SUPLib-freebsd.cpp
+@@ -88,7 +88,7 @@ DECLHIDDEN(int) suplibOsInit(PSUPLIBDATA pThis, bool f
+ /*
+ * Try open the BSD device.
+ */
+- const char * const *pszDeviceNm = fFlags & SUPR3INIT_F_UNRESTRICTED ? DEVICE_NAME_SYS : DEVICE_NAME_USR;
++ const char * pszDeviceNm = fFlags & SUPR3INIT_F_UNRESTRICTED ? DEVICE_NAME_SYS : DEVICE_NAME_USR;
+ int hDevice = open(pszDeviceNm, O_RDWR, 0);
+ if (hDevice < 0)
+ {
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_freebsd_files__vboxdrv b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_freebsd_files__vboxdrv
new file mode 100644
index 000000000000..013a5e605910
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_Support_freebsd_files__vboxdrv
@@ -0,0 +1,34 @@
+--- src/VBox/HostDrivers/Support/freebsd/files_vboxdrv.orig 2025-08-13 19:51:09 UTC
++++ src/VBox/HostDrivers/Support/freebsd/files_vboxdrv
+@@ -71,6 +71,7 @@ FILES_VBOXDRV_NOBIN=" \
+ ${PATH_ROOT}/include/iprt/stdarg.h=>include/iprt/stdarg.h \
+ ${PATH_ROOT}/include/iprt/stdint.h=>include/iprt/stdint.h \
+ ${PATH_ROOT}/include/iprt/string.h=>include/iprt/string.h \
++ ${PATH_ROOT}/include/iprt/system.h=>include/iprt/system.h \
+ ${PATH_ROOT}/include/iprt/thread.h=>include/iprt/thread.h \
+ ${PATH_ROOT}/include/iprt/time.h=>include/iprt/time.h \
+ ${PATH_ROOT}/include/iprt/timer.h=>include/iprt/timer.h \
+@@ -133,6 +134,7 @@ FILES_VBOXDRV_NOBIN=" \
+ ${PATH_ROOT}/src/VBox/Runtime/common/misc/handletable.cpp=>common/misc/handletable.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/misc/handletable.h=>common/misc/handletable.h \
+ ${PATH_ROOT}/src/VBox/Runtime/common/misc/handletablectx.cpp=>common/misc/handletablectx.c \
++ ${PATH_ROOT}/src/VBox/Runtime/common/misc/handletablesimple.cpp=>common/misc/handletablesimple.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/misc/once.cpp=>common/misc/once.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/misc/term.cpp=>common/misc/term.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/misc/thread.cpp=>common/misc/thread.c \
+@@ -154,6 +156,7 @@ FILES_VBOXDRV_NOBIN=" \
+ ${PATH_ROOT}/src/VBox/Runtime/common/string/strprintf2-ellipsis.cpp=>common/string/strprintf2-ellipsis.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/string/strtonum.cpp=>common/string/strtonum.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/string/memchr.cpp=>common/string/memchr.c \
++ ${PATH_ROOT}/src/VBox/Runtime/common/string/utf-8.cpp=>common/string/utf-8.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/string/stringalloc.cpp=>common/string/stringalloc.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/rand/rand.cpp=>common/rand/rand.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/rand/randadv.cpp=>common/rand/randadv.c \
+@@ -200,6 +203,7 @@ FILES_VBOXDRV_NOBIN=" \
+ ${PATH_ROOT}/src/VBox/Runtime/generic/RTMpOnPair-generic.cpp=>generic/RTMpOnPair-generic.c \
+ ${PATH_ROOT}/src/VBox/Runtime/generic/errvars-generic.cpp=>generic/errvars-generic.c \
+ ${PATH_ROOT}/src/VBox/Runtime/generic/mppresent-generic.cpp=>generic/mppresent-generic.c \
++ ${PATH_ROOT}/src/VBox/Runtime/generic/system-page-size-generic.cpp=>generic/system-page-size-generic.c \
+ ${PATH_ROOT}/src/VBox/Runtime/generic/timer-generic.cpp=>generic/timer-generic.c \
+ ${PATH_ROOT}/src/VBox/Runtime/generic/uuid-generic.cpp=>generic/uuid-generic.c \
+ ${PATH_ROOT}/src/VBox/Runtime/r0drv/alloc-r0drv.cpp=>r0drv/alloc-r0drv.c \
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetAdp_freebsd_Makefile b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetAdp_freebsd_Makefile
new file mode 100644
index 000000000000..7275c942126d
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetAdp_freebsd_Makefile
@@ -0,0 +1,11 @@
+--- src/VBox/HostDrivers/VBoxNetAdp/freebsd/Makefile.orig 2025-08-13 19:51:10 UTC
++++ src/VBox/HostDrivers/VBoxNetAdp/freebsd/Makefile
+@@ -36,7 +36,7 @@ KMOD = vboxnetadp
+
+ KMOD = vboxnetadp
+
+-CFLAGS += -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -Iinclude -I. -Ir0drv -w -DVBOX_WITH_HARDENING -DVIMAGE
++CFLAGS += -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -DVBOX_WITH_HARDENING -DVBOX_WITH_64_BITS_GUESTS -DVIMAGE -Iinclude -I. -Ir0drv -w
+
+ .if (${MACHINE_ARCH} == "i386")
+ CFLAGS += -DRT_ARCH_X86
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetAdp_freebsd_VBoxNetAdp-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetAdp_freebsd_VBoxNetAdp-freebsd.c
new file mode 100644
index 000000000000..8da432449fe1
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetAdp_freebsd_VBoxNetAdp-freebsd.c
@@ -0,0 +1,147 @@
+--- src/VBox/HostDrivers/VBoxNetAdp/freebsd/VBoxNetAdp-freebsd.c.orig 2024-01-11 12:25:08 UTC
++++ src/VBox/HostDrivers/VBoxNetAdp/freebsd/VBoxNetAdp-freebsd.c
+@@ -216,7 +216,11 @@ static void VBoxNetAdpFreeBSDNetinit(void *priv)
+ PVBOXNETADP pThis = priv;
+ struct ifnet *ifp = pThis->u.s.ifp;
+
++#if __FreeBSD_version >= 1500000
++ if_setdrvflagbits(ifp, IFF_DRV_RUNNING, 0);
++#else
+ ifp->if_drv_flags |= IFF_DRV_RUNNING;
++#endif
+ }
+
+ /**
+@@ -226,25 +230,46 @@ static void VBoxNetAdpFreeBSDNetstart(struct ifnet *if
+ */
+ static void VBoxNetAdpFreeBSDNetstart(struct ifnet *ifp)
+ {
++#if __FreeBSD_version >= 1500000
++ PVBOXNETADP pThis = if_getsoftc(ifp);
++#else
+ PVBOXNETADP pThis = ifp->if_softc;
++#endif
+ struct mbuf *m;
+
++#if __FreeBSD_version >= 1500000
++ if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING)
++#else
+ if ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING)
++#endif
+ return;
+
++#if __FreeBSD_version >= 1500000
++ if_setdrvflagbits(ifp, IFF_DRV_OACTIVE, 0);
++ while (!if_sendq_empty(ifp))
++#else
+ ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+ while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
++#endif
+ {
+ #if __FreeBSD_version >= 1100036
+ if_inc_counter(ifp, IFCOUNTER_OPACKETS, 1);
+ #else
+ ifp->if_opackets++;
+ #endif
++#if __FreeBSD_version >= 1500000
++ m = if_dequeue(ifp);
++#else
+ IFQ_DRV_DEQUEUE(&ifp->if_snd, m);
++#endif
+ BPF_MTAP(ifp, m);
+ m_freem(m);
+ }
++#if __FreeBSD_version >= 1500000
++ if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
++#else
+ ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
++#endif
+ }
+
+ /**
+@@ -257,6 +282,18 @@ static int VBoxNetAdpFreeBSDNetioctl(struct ifnet *ifp
+ switch (cmd)
+ {
+ case SIOCSIFFLAGS:
++#if __FreeBSD_version >= 1500000
++ if (if_getflags(ifp) & IFF_UP)
++ {
++ if (!(if_getdrvflags(ifp) & IFF_DRV_RUNNING))
++ if_init(ifp, if_getsoftc(ifp));
++ }
++ else
++ {
++ if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
++ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
++ }
++#else
+ if (ifp->if_flags & IFF_UP)
+ {
+ if (!(ifp->if_drv_flags & IFF_DRV_RUNNING))
+@@ -267,6 +304,7 @@ static int VBoxNetAdpFreeBSDNetioctl(struct ifnet *ifp
+ if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+ ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ }
++#endif
+ break;
+ case SIOCGIFMEDIA:
+ {
+@@ -301,7 +339,11 @@ int vboxNetAdpOsCreate(PVBOXNETADP pThis, PCRTMAC pMac
+
+ int vboxNetAdpOsCreate(PVBOXNETADP pThis, PCRTMAC pMac)
+ {
++#if __FreeBSD_version >= 1500000
++ if_t ifp;
++#else
+ struct ifnet *ifp;
++#endif
+
+ VBOXCURVNET_SET_FROM_UCRED();
+ ifp = if_alloc(IFT_ETHER);
+@@ -309,6 +351,16 @@ int vboxNetAdpOsCreate(PVBOXNETADP pThis, PCRTMAC pMac
+ return VERR_NO_MEMORY;
+
+ if_initname(ifp, VBOXNETADP_NAME, pThis->iUnit);
++#if __FreeBSD_version >= 1500000
++ if_setsoftc(ifp, pThis);
++ if_setmtu(ifp, ETHERMTU);
++ if_setflagbits(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST, 0);
++ if_setioctlfn(ifp, VBoxNetAdpFreeBSDNetioctl);
++ if_setstartfn(ifp, VBoxNetAdpFreeBSDNetstart);
++ if_setinitfn(ifp, VBoxNetAdpFreeBSDNetinit);
++ if_setsendqlen(ifp, IFQ_MAXLEN);
++ if_setsendqready(ifp);
++#else
+ ifp->if_softc = pThis;
+ ifp->if_mtu = ETHERMTU;
+ ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
+@@ -318,10 +370,17 @@ int vboxNetAdpOsCreate(PVBOXNETADP pThis, PCRTMAC pMac
+ IFQ_SET_MAXLEN(&ifp->if_snd, IFQ_MAXLEN);
+ ifp->if_snd.ifq_drv_maxlen = IFQ_MAXLEN;
+ IFQ_SET_READY(&ifp->if_snd);
++#endif
+ ether_ifattach(ifp, (void *)pMac);
++#if __FreeBSD_version >= 1500000
++ (void)if_setbaudrate(ifp, 0);
++
++ strncpy(pThis->szName, if_name(ifp), VBOXNETADP_MAX_NAME_LEN);
++#else
+ ifp->if_baudrate = 0;
+
+ strncpy(pThis->szName, ifp->if_xname, VBOXNETADP_MAX_NAME_LEN);
++#endif
+ pThis->u.s.ifp = ifp;
+ VBOXCURVNET_RESTORE();
+ return 0;
+@@ -332,7 +391,11 @@ void vboxNetAdpOsDestroy(PVBOXNETADP pThis)
+ struct ifnet *ifp;
+
+ ifp = pThis->u.s.ifp;
++#if __FreeBSD_version >= 1500000
++ VBOXCURVNET_SET(if_getvnet(ifp));
++#else
+ VBOXCURVNET_SET(ifp->if_vnet);
++#endif
+ ether_ifdetach(ifp);
+ if_free(ifp);
+ VBOXCURVNET_RESTORE();
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetFlt_Makefile.kmk b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetFlt_Makefile.kmk
new file mode 100644
index 000000000000..1bf366252bc2
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetFlt_Makefile.kmk
@@ -0,0 +1,11 @@
+--- src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk.orig 2025-08-13 19:51:11 UTC
++++ src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk
+@@ -337,7 +337,7 @@ ifeq ($(KBUILD_TARGET),freebsd)
+ $(QUIET)$(RM) -f -- $@
+ $(QUIET)$(CP) -f $< $@
+ ifndef VBOX_WITH_HARDENING
+- $(QUIET)$(SED) -e "s;VBOX_WITH_HARDENING;;g" --output $@.tmp $@
++ $(QUIET)$(SED) -e "s;-DVBOX_WITH_HARDENING;;g" --output $@.tmp $@
+ ${QUIET}$(MV) -f $@.tmp $@
+ endif
+ ifndef VBOX_WITH_NETFLT_VIMAGE
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetFlt_freebsd_Makefile b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetFlt_freebsd_Makefile
new file mode 100644
index 000000000000..e1db154e2347
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetFlt_freebsd_Makefile
@@ -0,0 +1,11 @@
+--- src/VBox/HostDrivers/VBoxNetFlt/freebsd/Makefile.orig 2025-08-13 19:51:11 UTC
++++ src/VBox/HostDrivers/VBoxNetFlt/freebsd/Makefile
+@@ -36,7 +36,7 @@ KMOD = vboxnetflt
+
+ KMOD = vboxnetflt
+
+-CFLAGS += -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -Iinclude -I. -Ir0drv -w -DVBOX_WITH_HARDENING -DVIMAGE
++CFLAGS += -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -DVBOX_WITH_HARDENING -DVBOX_WITH_64_BITS_GUESTS -DVIMAGE -Iinclude -I. -Ir0drv -w
+
+ .if (${MACHINE_ARCH} == "i386")
+ CFLAGS += -DRT_ARCH_X86
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetFlt_freebsd_VBoxNetFlt-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetFlt_freebsd_VBoxNetFlt-freebsd.c
new file mode 100644
index 000000000000..6e3d40a42e43
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_VBoxNetFlt_freebsd_VBoxNetFlt-freebsd.c
@@ -0,0 +1,471 @@
+--- src/VBox/HostDrivers/VBoxNetFlt/freebsd/VBoxNetFlt-freebsd.c.orig 2024-01-11 12:25:08 UTC
++++ src/VBox/HostDrivers/VBoxNetFlt/freebsd/VBoxNetFlt-freebsd.c
+@@ -52,6 +52,7 @@
+ #include <net/if_dl.h>
+ #include <net/if_types.h>
+ #include <net/ethernet.h>
++#include <net/if_vlan_var.h>
+
+ #include <netgraph/ng_message.h>
+ #include <netgraph/netgraph.h>
+@@ -73,6 +74,7 @@
+
+ #define VBOXNETFLT_OS_SPECFIC 1
+ #include "../VBoxNetFltInternal.h"
++#include "freebsd/the-freebsd-kernel.h"
+
+ static int vboxnetflt_modevent(struct module *, int, void *);
+ static ng_constructor_t ng_vboxnetflt_constructor;
+@@ -149,6 +151,7 @@ MODULE_DEPEND(ng_vboxnetflt, vboxdrv, 1, 1, 1);
+ */
+ MODULE_VERSION(vboxnetflt, 1);
+ MODULE_DEPEND(ng_vboxnetflt, vboxdrv, 1, 1, 1);
++MODULE_DEPEND(ng_vboxnetflt, ng_ether, 1, 1, 1);
+
+ /**
+ * The (common) global data.
+@@ -181,8 +184,6 @@ static int vboxnetflt_modevent(struct module *pMod, in
+ printf("vboxNetFltInitGlobalsAndIdc failed %d\n", rc);
+ return RTErrConvertToErrno(rc);
+ }
+- /* No MODULE_VERSION in ng_ether so we can't MODULE_DEPEND it */
+- kern_kldload(curthread, "ng_ether", NULL);
+ break;
+
+ case MOD_UNLOAD:
+@@ -334,12 +335,20 @@ static int ng_vboxnetflt_rcvdata(hook_p hook, item_p i
+ {
+ const node_p node = NG_HOOK_NODE(hook);
+ PVBOXNETFLTINS pThis = NG_NODE_PRIVATE(node);
++#if __FreeBSD_version >= 1500000
++ if_t ifp = pThis->u.s.ifp;
++#else
+ struct ifnet *ifp = pThis->u.s.ifp;
++#endif
+ struct mbuf *m;
+ struct m_tag *mtag;
+ bool fActive;
+
++#if __FreeBSD_version >= 1500000
++ VBOXCURVNET_SET(if_getvnet(ifp));
++#else
+ VBOXCURVNET_SET(ifp->if_vnet);
++#endif
+ fActive = vboxNetFltTryRetainBusyActive(pThis);
+
+ NGI_GET_M(item, m);
+@@ -361,7 +370,14 @@ static int ng_vboxnetflt_rcvdata(hook_p hook, item_p i
+ {
+ if (mtag != NULL || !fActive)
+ {
++#if __FreeBSD_version >= 1300049
++ struct epoch_tracker et;
++ NET_EPOCH_ENTER(et);
++#endif
+ ether_demux(ifp, m);
++#if __FreeBSD_version >= 1300049
++ NET_EPOCH_EXIT(et);
++#endif
+ if (fActive)
+ vboxNetFltRelease(pThis, true /*fBusy*/);
+ VBOXCURVNET_RESTORE();
+@@ -433,12 +449,22 @@ static void vboxNetFltFreeBSDinput(void *arg, int pend
+ {
+ PVBOXNETFLTINS pThis = (PVBOXNETFLTINS)arg;
+ struct mbuf *m, *m0;
++#if __FreeBSD_version >= 1500000
++ if_t ifp = pThis->u.s.ifp;
++#else
+ struct ifnet *ifp = pThis->u.s.ifp;
++#endif
+ unsigned int cSegs = 0;
+ bool fDropIt = false, fActive;
++ bool is_vl_tagged = false;
++ uint16_t vl_tag;
+ PINTNETSG pSG;
+
++#if __FreeBSD_version >= 1500000
++ VBOXCURVNET_SET(if_getvnet(ifp));
++#else
+ VBOXCURVNET_SET(ifp->if_vnet);
++#endif
+ vboxNetFltRetain(pThis, true /* fBusy */);
+ for (;;)
+ {
+@@ -448,6 +474,19 @@ static void vboxNetFltFreeBSDinput(void *arg, int pend
+ if (m == NULL)
+ break;
+
++ /* Prepend a VLAN header for consumption by the virtual switch */
++ if (m->m_flags & M_VLANTAG) {
++ vl_tag = m->m_pkthdr.ether_vtag;
++ is_vl_tagged = true;
++
++ m = ether_vlanencap(m, m->m_pkthdr.ether_vtag);
++ if (m == NULL) {
++ printf("vboxflt: unable to prepend VLAN header\n");
++ break;
++ }
++ m->m_flags &= ~M_VLANTAG;
++ }
++
+ for (m0 = m; m0 != NULL; m0 = m0->m_next)
+ if (m0->m_len > 0)
+ cSegs++;
+@@ -462,10 +501,39 @@ static void vboxNetFltFreeBSDinput(void *arg, int pend
+ vboxNetFltFreeBSDMBufToSG(pThis, m, pSG, cSegs, 0);
+ fDropIt = pThis->pSwitchPort->pfnRecv(pThis->pSwitchPort, NULL /* pvIf */, pSG, INTNETTRUNKDIR_WIRE);
+ RTMemTmpFree(pSG);
++
++ /* Restore the VLAN flags before re-injecting the packet */
++ if (is_vl_tagged && !fDropIt) {
++ struct ether_vlan_header *vl_hdr;
++
++ /* This shouldn't fail, as the header was just prepended */
++ if (m->m_len < sizeof(*vl_hdr) && (m = m_pullup(m, sizeof(*vl_hdr))) == NULL) {
++ printf("vboxflt: unable to pullup VLAN header\n");
++ m_freem(m);
++ break;
++ }
++
++ /* Copy the MAC dhost/shost over the 802.1q field */
++ vl_hdr = mtod(m, struct ether_vlan_header *);
++ bcopy((char *)vl_hdr, (char *)vl_hdr + ETHER_VLAN_ENCAP_LEN, ETHER_HDR_LEN - ETHER_TYPE_LEN);
++ m_adj(m, ETHER_VLAN_ENCAP_LEN);
++
++ m->m_pkthdr.ether_vtag = vl_tag;
++ m->m_flags |= M_VLANTAG;
++ }
++
+ if (fDropIt)
+ m_freem(m);
+- else
++ else {
++#if __FreeBSD_version >= 1300049
++ struct epoch_tracker et;
++ NET_EPOCH_ENTER(et);
++#endif
+ ether_demux(ifp, m);
++#if __FreeBSD_version >= 1300049
++ NET_EPOCH_EXIT(et);
++#endif
++ }
+ }
+ vboxNetFltRelease(pThis, true /* fBusy */);
+ VBOXCURVNET_RESTORE();
+@@ -478,12 +546,20 @@ static void vboxNetFltFreeBSDoutput(void *arg, int pen
+ {
+ PVBOXNETFLTINS pThis = (PVBOXNETFLTINS)arg;
+ struct mbuf *m, *m0;
++#if __FreeBSD_version >= 1500000
++ if_t ifp = pThis->u.s.ifp;
++#else
+ struct ifnet *ifp = pThis->u.s.ifp;
++#endif
+ unsigned int cSegs = 0;
+ bool fDropIt = false, fActive;
+ PINTNETSG pSG;
+
++#if __FreeBSD_version >= 1500000
++ VBOXCURVNET_SET(if_getvnet(ifp));
++#else
+ VBOXCURVNET_SET(ifp->if_vnet);
++#endif
+ vboxNetFltRetain(pThis, true /* fBusy */);
+ for (;;)
+ {
+@@ -521,26 +597,41 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p
+ */
+ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *pvIfData, PINTNETSG pSG, uint32_t fDst)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ NOREF(pvIfData);
+
+ void (*input_f)(struct ifnet *, struct mbuf *);
++#if __FreeBSD_version >= 1500000
++ if_t ifp;
++#else
+ struct ifnet *ifp;
++#endif
+ struct mbuf *m;
+ struct m_tag *mtag;
+ bool fActive;
+ int error;
+
+ ifp = ASMAtomicUoReadPtrT(&pThis->u.s.ifp, struct ifnet *);
++#if __FreeBSD_version >= 1500000
++ VBOXCURVNET_SET(if_getvnet(ifp));
++#else
+ VBOXCURVNET_SET(ifp->if_vnet);
++#endif
+
+ if (fDst & INTNETTRUNKDIR_WIRE)
+ {
+ m = vboxNetFltFreeBSDSGMBufFromSG(pThis, pSG);
+ if (m == NULL)
++ {
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VERR_NO_MEMORY;
++ }
+ m = m_pullup(m, ETHER_HDR_LEN);
+ if (m == NULL)
++ {
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VERR_NO_MEMORY;
++ }
+
+ m->m_flags |= M_PKTHDR;
+ ether_output_frame(ifp, m);
+@@ -550,10 +641,16 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p
+ {
+ m = vboxNetFltFreeBSDSGMBufFromSG(pThis, pSG);
+ if (m == NULL)
++ {
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VERR_NO_MEMORY;
++ }
+ m = m_pullup(m, ETHER_HDR_LEN);
+ if (m == NULL)
++ {
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VERR_NO_MEMORY;
++ }
+ /*
+ * Delivering packets to the host will be captured by the
+ * input hook. Tag the packet with a mbuf tag so that we
+@@ -564,6 +661,7 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p
+ if (mtag == NULL)
+ {
+ m_freem(m);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VERR_NO_MEMORY;
+ }
+
+@@ -571,9 +669,21 @@ int vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *p
+ m_tag_prepend(m, mtag);
+ m->m_flags |= M_PKTHDR;
+ m->m_pkthdr.rcvif = ifp;
++#if __FreeBSD_version >= 1300049
++ struct epoch_tracker et;
++ NET_EPOCH_ENTER(et);
++#endif
++#if __FreeBSD_version >= 1500000
++ if_input(ifp, m);
++#else
+ ifp->if_input(ifp, m);
++#endif
++#if __FreeBSD_version >= 1300049
++ NET_EPOCH_EXIT(et);
++#endif
+ }
+ VBOXCURVNET_RESTORE();
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
+@@ -586,15 +696,23 @@ int vboxNetFltOsInitInstance(PVBOXNETFLTINS pThis, voi
+
+ int vboxNetFltOsInitInstance(PVBOXNETFLTINS pThis, void *pvContext)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ char nam[NG_NODESIZ];
++#if __FreeBSD_version >= 1500000
++ if_t ifp;
++#else
+ struct ifnet *ifp;
++#endif
+ node_p node;
+
+ VBOXCURVNET_SET_FROM_UCRED();
+ NOREF(pvContext);
+ ifp = ifunit(pThis->szName);
+ if (ifp == NULL)
++ {
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VERR_INTNET_FLT_IF_NOT_FOUND;
++ }
+
+ /* Create a new netgraph node for this instance */
+ if (ng_make_node_common(&ng_vboxnetflt_typestruct, &node) != 0)
+@@ -604,7 +722,11 @@ int vboxNetFltOsInitInstance(PVBOXNETFLTINS pThis, voi
+
+ ASMAtomicUoWritePtr(&pThis->u.s.ifp, ifp);
+ pThis->u.s.node = node;
++#if __FreeBSD_version >= 1500000
++ bcopy(if_getlladdr(ifp), &pThis->u.s.MacAddr, ETHER_ADDR_LEN);
++#else
+ bcopy(IF_LLADDR(ifp), &pThis->u.s.MacAddr, ETHER_ADDR_LEN);
++#endif
+ ASMAtomicUoWriteBool(&pThis->fDisconnectedFromHost, false);
+
+ /* Initialize deferred input queue */
+@@ -638,16 +760,26 @@ int vboxNetFltOsInitInstance(PVBOXNETFLTINS pThis, voi
+ vboxNetFltRelease(pThis, true /*fBusy*/);
+ }
+ VBOXCURVNET_RESTORE();
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+
+ return VINF_SUCCESS;
+ }
+
+ bool vboxNetFltOsMaybeRediscovered(PVBOXNETFLTINS pThis)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
++#if __FreeBSD_version >= 1500000
++ if_t ifp, ifp0;
++#else
+ struct ifnet *ifp, *ifp0;
++#endif
+
+ ifp = ASMAtomicUoReadPtrT(&pThis->u.s.ifp, struct ifnet *);
++#if __FreeBSD_version >= 1500000
++ VBOXCURVNET_SET(if_getvnet(ifp));
++#else
+ VBOXCURVNET_SET(ifp->if_vnet);
++#endif
+ /*
+ * Attempt to check if the interface is still there and re-initialize if
+ * something has changed.
+@@ -660,6 +792,7 @@ bool vboxNetFltOsMaybeRediscovered(PVBOXNETFLTINS pThi
+ pThis->u.s.node = NULL;
+ }
+ VBOXCURVNET_RESTORE();
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+
+ if (ifp0 != NULL)
+ {
+@@ -672,6 +805,7 @@ void vboxNetFltOsDeleteInstance(PVBOXNETFLTINS pThis)
+
+ void vboxNetFltOsDeleteInstance(PVBOXNETFLTINS pThis)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+
+ taskqueue_drain(taskqueue_fast, &pThis->u.s.tskin);
+ taskqueue_drain(taskqueue_fast, &pThis->u.s.tskout);
+@@ -684,6 +818,7 @@ void vboxNetFltOsDeleteInstance(PVBOXNETFLTINS pThis)
+ ng_rmnode_self(pThis->u.s.node);
+ VBOXCURVNET_RESTORE();
+ pThis->u.s.node = NULL;
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ }
+
+ int vboxNetFltOsPreInitInstance(PVBOXNETFLTINS pThis)
+@@ -697,7 +832,12 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
+
+ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, bool fActive)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
++#if __FreeBSD_version >= 1500000
++ if_t ifp;
++#else
+ struct ifnet *ifp;
++#endif
+ struct ifreq ifreq;
+ int error;
+ node_p node;
+@@ -709,18 +849,30 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
+ Log(("%s: fActive:%d\n", __func__, fActive));
+
+ ifp = ASMAtomicUoReadPtrT(&pThis->u.s.ifp, struct ifnet *);
++#if __FreeBSD_version >= 1500000
++ VBOXCURVNET_SET(if_getvnet(ifp));
++#else
+ VBOXCURVNET_SET(ifp->if_vnet);
++#endif
+ node = ASMAtomicUoReadPtrT(&pThis->u.s.node, node_p);
+
+ memset(&ifreq, 0, sizeof(struct ifreq));
+ /* Activate interface */
+ if (fActive)
+ {
++#if __FreeBSD_version >= 1500000
++ pThis->u.s.flags = if_getflags(ifp);
++#else
+ pThis->u.s.flags = ifp->if_flags;
++#endif
+ ifpromisc(ifp, 1);
+
+ /* ng_ether nodes are named after the interface name */
++#if __FreeBSD_version >= 1500000
++ snprintf(path, sizeof(path), "%s:", if_name(ifp));
++#else
+ snprintf(path, sizeof(path), "%s:", ifp->if_xname);
++#endif
+
+ /*
+ * Send a netgraph connect message to the ng_ether node
+@@ -730,9 +882,16 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
+ NG_MKMESSAGE(msg, NGM_GENERIC_COOKIE, NGM_CONNECT,
+ sizeof(struct ngm_connect), M_NOWAIT);
+ if (msg == NULL)
++ {
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return;
++ }
+ con = (struct ngm_connect *)msg->data;
++#if __FreeBSD_version >= 1500000
++ snprintf(con->path, NG_PATHSIZ, "vboxnetflt_%s:", if_name(ifp));
++#else
+ snprintf(con->path, NG_PATHSIZ, "vboxnetflt_%s:", ifp->if_xname);
++#endif
+ strlcpy(con->ourhook, "lower", NG_HOOKSIZ);
+ strlcpy(con->peerhook, "input", NG_HOOKSIZ);
+ NG_SEND_MSG_PATH(error, node, msg, path, 0);
+@@ -744,10 +903,17 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
+ NG_MKMESSAGE(msg, NGM_GENERIC_COOKIE, NGM_CONNECT,
+ sizeof(struct ngm_connect), M_NOWAIT);
+ if (msg == NULL)
++ {
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return;
++ }
+ con = (struct ngm_connect *)msg->data;
+ snprintf(con->path, NG_PATHSIZ, "vboxnetflt_%s:",
++#if __FreeBSD_version >= 1500000
++ if_name(ifp));
++#else
+ ifp->if_xname);
++#endif
+ strlcpy(con->ourhook, "upper", sizeof(con->ourhook));
+ strlcpy(con->peerhook, "output", sizeof(con->peerhook));
+ NG_SEND_MSG_PATH(error, node, msg, path, 0);
+@@ -759,7 +925,11 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
+ ifpromisc(ifp, 0);
+
+ /* Disconnect msgs are addressed to ourself */
++#if __FreeBSD_version >= 1500000
++ snprintf(path, sizeof(path), "vboxnetflt_%s:", if_name(ifp));
++#else
+ snprintf(path, sizeof(path), "vboxnetflt_%s:", ifp->if_xname);
++#endif
+
+ /*
+ * Send a netgraph message to disconnect our 'input' hook
+@@ -767,7 +937,10 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
+ NG_MKMESSAGE(msg, NGM_GENERIC_COOKIE, NGM_RMHOOK,
+ sizeof(struct ngm_rmhook), M_NOWAIT);
+ if (msg == NULL)
++ {
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return;
++ }
+ rm = (struct ngm_rmhook *)msg->data;
+ strlcpy(rm->ourhook, "input", NG_HOOKSIZ);
+ NG_SEND_MSG_PATH(error, node, msg, path, 0);
+@@ -778,12 +951,16 @@ void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, b
+ NG_MKMESSAGE(msg, NGM_GENERIC_COOKIE, NGM_RMHOOK,
+ sizeof(struct ngm_rmhook), M_NOWAIT);
+ if (msg == NULL)
++ {
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return;
++ }
+ rm = (struct ngm_rmhook *)msg->data;
+ strlcpy(rm->ourhook, "output", NG_HOOKSIZ);
+ NG_SEND_MSG_PATH(error, node, msg, path, 0);
+ }
+ VBOXCURVNET_RESTORE();
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ }
+
+ int vboxNetFltOsDisconnectIt(PVBOXNETFLTINS pThis)
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_adpctl_VBoxNetAdpCtl.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_adpctl_VBoxNetAdpCtl.cpp
new file mode 100644
index 000000000000..2c13b666afaf
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_HostDrivers_adpctl_VBoxNetAdpCtl.cpp
@@ -0,0 +1,11 @@
+--- src/VBox/HostDrivers/adpctl/VBoxNetAdpCtl.cpp.orig 2025-08-13 19:51:12 UTC
++++ src/VBox/HostDrivers/adpctl/VBoxNetAdpCtl.cpp
+@@ -759,7 +759,7 @@ int Adapter::doIOCtl(unsigned long iCmd, VBOXNETADPREQ
+ * Global config file implementation *
+ *********************************************************************************************************************************/
+
+-#define VBOX_GLOBAL_NETWORK_CONFIG_PATH "/etc/vbox/networks.conf"
++#define VBOX_GLOBAL_NETWORK_CONFIG_PATH "%%VBOX_ETC%%/networks.conf"
+ #define VBOXNET_DEFAULT_IPV4MASK "255.255.255.0"
+
+ class NetworkAddress
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Main_Makefile.kmk b/emulators/virtualbox-ose-72/files/patch-src_VBox_Main_Makefile.kmk
new file mode 100644
index 000000000000..48ced38ac98c
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Main_Makefile.kmk
@@ -0,0 +1,10 @@
+--- src/VBox/Main/Makefile.kmk.orig 2025-08-13 19:51:19 UTC
++++ src/VBox/Main/Makefile.kmk
+@@ -771,6 +771,7 @@ if !defined(VBOX_ONLY_SDK) && !defined(VBOX_ONLY_EXTPA
+
+ VBoxSVC_SOURCES.freebsd = \
+ src-server/freebsd/HostHardwareFreeBSD.cpp \
++ $(if $(VBOX_WITH_DBUS),src-server/linux/HostPowerLinux.cpp) \
+ src-server/HostDnsServiceResolvConf.cpp
+
+ VBoxSVC_LDFLAGS.freebsd += -lcam
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Main_include_HostPower.h b/emulators/virtualbox-ose-72/files/patch-src_VBox_Main_include_HostPower.h
new file mode 100644
index 000000000000..90bd737f000d
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Main_include_HostPower.h
@@ -0,0 +1,20 @@
+--- src/VBox/Main/include/HostPower.h.orig 2025-08-13 19:51:21 UTC
++++ src/VBox/Main/include/HostPower.h
+@@ -41,7 +41,7 @@
+
+ #include <vector>
+
+-#ifdef RT_OS_LINUX
++#if defined(RT_OS_LINUX) || defined(RT_OS_FREEBSD)
+ # include <VBox/dbus.h>
+ #endif
+
+@@ -77,7 +77,7 @@ class HostPowerServiceWin : public HostPowerService (p
+ RTTHREAD mThread;
+ };
+ # endif
+-# if defined(RT_OS_LINUX) || defined(DOXYGEN_RUNNING)
++# if defined(RT_OS_LINUX) || defined(RT_OS_FREEBSD) || defined(DOXYGEN_RUNNING)
+ /**
+ * The Linux hosted Power Service.
+ */
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Main_src-server_HostImpl.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_Main_src-server_HostImpl.cpp
new file mode 100644
index 000000000000..3327edf47c79
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Main_src-server_HostImpl.cpp
@@ -0,0 +1,11 @@
+--- src/VBox/Main/src-server/HostImpl.cpp.orig 2025-08-13 19:51:26 UTC
++++ src/VBox/Main/src-server/HostImpl.cpp
+@@ -339,7 +339,7 @@ HRESULT Host::init(VirtualBox *aParent)
+
+ #if defined(RT_OS_WINDOWS)
+ m->pHostPowerService = new HostPowerServiceWin(m->pParent);
+-#elif defined(RT_OS_LINUX) && defined(VBOX_WITH_DBUS)
++#elif (defined(RT_OS_LINUX) || defined(RT_OS_FREEBSD)) && defined(VBOX_WITH_DBUS)
+ m->pHostPowerService = new HostPowerServiceLinux(m->pParent);
+ #elif defined(RT_OS_DARWIN)
+ m->pHostPowerService = new HostPowerServiceDarwin(m->pParent);
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Main_src-server_freebsd_PerformanceFreeBSD.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_Main_src-server_freebsd_PerformanceFreeBSD.cpp
new file mode 100644
index 000000000000..ec8a2226f1c9
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Main_src-server_freebsd_PerformanceFreeBSD.cpp
@@ -0,0 +1,24 @@
+--- src/VBox/Main/src-server/freebsd/PerformanceFreeBSD.cpp.orig 2025-08-13 19:51:28 UTC
++++ src/VBox/Main/src-server/freebsd/PerformanceFreeBSD.cpp
+@@ -90,8 +90,10 @@ int CollectorFreeBSD::getHostMemoryUsage(ULONG *total,
+ cbParameter = sizeof(cPagesMemInactive);
+ if (!sysctlbyname("vm.stats.vm.v_inactive_count", &cPagesMemInactive, &cbParameter, NULL, 0))
+ cProcessed++;
++#if __FreeBSD_version < 1200016
+ cbParameter = sizeof(cPagesMemCached);
+ if (!sysctlbyname("vm.stats.vm.v_cache_count", &cPagesMemCached, &cbParameter, NULL, 0))
++#endif
+ cProcessed++;
+ cbParameter = sizeof(cbPage);
+ if (!sysctlbyname("hw.pagesize", &cbPage, &cbParameter, NULL, 0))
+@@ -100,8 +102,8 @@ int CollectorFreeBSD::getHostMemoryUsage(ULONG *total,
+ if (cProcessed == 6)
+ {
+ *total = cbMemPhys / _1K;
+- *used = cPagesMemUsed * (cbPage / _1K);
+- *available = (cPagesMemFree + cPagesMemInactive + cPagesMemCached ) * (cbPage / _1K);
++ *used = (uint64_t)cPagesMemUsed * (cbPage / _1K);
++ *available = ((uint64_t)cPagesMemFree + cPagesMemInactive + cPagesMemCached) * (cbPage / _1K);
+ }
+ else
+ vrc = VERR_NOT_SUPPORTED;
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_Makefile.kmk b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_Makefile.kmk
new file mode 100644
index 000000000000..7d80c20cb908
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_Makefile.kmk
@@ -0,0 +1,29 @@
+--- src/VBox/Runtime/Makefile.kmk.orig 2025-08-28 22:09:24 UTC
++++ src/VBox/Runtime/Makefile.kmk
+@@ -233,6 +233,9 @@ $(IPRT_OUT_DIR)/oiddb.h.ts +| $(IPRT_OUT_DIR)/oiddb.h:
+ $(QUIET)$(oiddb2c_1_TARGET) "$@" $(filter %.cfg,$^)
+ $(QUIET)$(CP) --changed -fv "$@" "$(IPRT_OUT_DIR)/oiddb.h"
+
++# Set the defines that utf8-posix.cpp needs. It's used by several targets.
++#
++r3/posix/utf8-posix.cpp_DEFS.freebsd = $(VBOX_ICONV_DEFS)
+
+ #
+ # Unicode Specification reader used to regenerate unidata-*.cpp.
+@@ -1516,6 +1519,7 @@ RuntimeBaseR3_SOURCES.freebsd = \
+ generic/RTProcDaemonize-generic.cpp \
+ generic/RTProcIsRunningByName-generic.cpp \
+ generic/RTThreadGetNativeState-generic.cpp \
++ generic/system-page-size-generic.cpp \
+ r3/freebsd/fileaio-freebsd.cpp \
+ r3/freebsd/RTFileQuerySectorSize-freebsd.cpp \
+ r3/freebsd/mp-freebsd.cpp \
+@@ -3072,6 +3076,8 @@ VBoxRT_LDFLAGS.win = /MANIFEST \
+ /delayload:ole32.dll \
+ /delayload:oleaut32.dll \
+ /delayload:advapi32.dll
++VBoxRT_LDFLAGS.freebsd = \
++ -Wl,--allow-multiple-definition
+
+ if1of (VBoxRT, $(DLLS))
+ $(call VBOX_SET_VER_INFO_DLL,VBoxRT,VirtualBox Runtime)
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_alloc-r0drv-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_alloc-r0drv-freebsd.c
new file mode 100644
index 000000000000..564b70a0f108
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_alloc-r0drv-freebsd.c
@@ -0,0 +1,58 @@
+--- src/VBox/Runtime/r0drv/freebsd/alloc-r0drv-freebsd.c.orig 2025-08-13 19:51:51 UTC
++++ src/VBox/Runtime/r0drv/freebsd/alloc-r0drv-freebsd.c
+@@ -88,6 +88,7 @@ DECLHIDDEN(int) rtR0MemAllocEx(size_t cb, uint32_t fFl
+
+ DECLHIDDEN(int) rtR0MemAllocEx(size_t cb, uint32_t fFlags, PRTMEMHDR *ppHdr)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ size_t cbAllocated = cb;
+ PRTMEMHDR pHdr = (PRTMEMHDR)malloc(cb + sizeof(RTMEMHDR), M_IPRTHEAP,
+ fFlags & RTMEMHDR_FLAG_ZEROED ? M_NOWAIT | M_ZERO : M_NOWAIT);
+@@ -99,21 +100,28 @@ DECLHIDDEN(int) rtR0MemAllocEx(size_t cb, uint32_t fFl
+ pHdr->cbReq = cb;
+
+ *ppHdr = pHdr;
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+- }
++ }
++
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VERR_NO_MEMORY;
+ }
+
+
+ DECLHIDDEN(void) rtR0MemFree(PRTMEMHDR pHdr)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
++
+ pHdr->u32Magic += 1;
+ free(pHdr, M_IPRTHEAP);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ }
+
+
+ RTR0DECL(void *) RTMemContAlloc(PRTCCPHYS pPhys, size_t cb)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ void *pv;
+
+ /*
+@@ -138,6 +146,7 @@ RTR0DECL(void *) RTMemContAlloc(PRTCCPHYS pPhys, size_
+ *pPhys = vtophys(pv);
+ Assert(!(*pPhys & PAGE_OFFSET_MASK));
+ }
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return pv;
+ }
+
+@@ -147,7 +156,9 @@ RTR0DECL(void) RTMemContFree(void *pv, size_t cb)
+ if (pv)
+ {
+ AssertMsg(!((uintptr_t)pv & PAGE_OFFSET_MASK), ("pv=%p\n", pv));
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ contigfree(pv, cb, M_IPRTCONT);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ }
+ }
+
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_assert-r0drv-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_assert-r0drv-freebsd.c
new file mode 100644
index 000000000000..53f7659961b2
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_assert-r0drv-freebsd.c
@@ -0,0 +1,29 @@
+--- src/VBox/Runtime/r0drv/freebsd/assert-r0drv-freebsd.c.orig 2025-08-13 19:51:51 UTC
++++ src/VBox/Runtime/r0drv/freebsd/assert-r0drv-freebsd.c
+@@ -78,15 +78,18 @@ DECLHIDDEN(void) rtR0AssertNativeMsg1(const char *pszE
+
+ DECLHIDDEN(void) rtR0AssertNativeMsg1(const char *pszExpr, unsigned uLine, const char *pszFile, const char *pszFunction)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ printf("\r\n!!Assertion Failed!!\r\n"
+ "Expression: %s\r\n"
+ "Location : %s(%d) %s\r\n",
+ pszExpr, pszFile, uLine, pszFunction);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ }
+
+
+ DECLHIDDEN(void) rtR0AssertNativeMsg2V(bool fInitial, const char *pszFormat, va_list va)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ char szMsg[256];
+
+ RTStrPrintfV(szMsg, sizeof(szMsg) - 1, pszFormat, va);
+@@ -94,6 +97,7 @@ DECLHIDDEN(void) rtR0AssertNativeMsg2V(bool fInitial,
+ printf("%s", szMsg);
+
+ NOREF(fInitial);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ }
+
+
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_memobj-r0drv-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_memobj-r0drv-freebsd.c
new file mode 100644
index 000000000000..4c0ed355709c
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_memobj-r0drv-freebsd.c
@@ -0,0 +1,408 @@
+--- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c.orig 2025-04-14 17:59:13 UTC
++++ src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c
+@@ -140,8 +140,10 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
+
+ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)pMem;
+ int rc;
++ vm_map_t pMap;
+
+ switch (pMemFreeBSD->Core.enmType)
+ {
+@@ -156,8 +158,6 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
+
+ case RTR0MEMOBJTYPE_LOCK:
+ {
+- vm_map_t pMap = kernel_map;
+-
+ if (pMemFreeBSD->Core.u.Lock.R0Process != NIL_RTR0PROCESS)
+ pMap = &((struct proc *)pMemFreeBSD->Core.u.Lock.R0Process)->p_vmspace->vm_map;
+
+@@ -198,6 +198,7 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
+ case RTR0MEMOBJTYPE_PHYS_NC:
+ {
+ VM_OBJECT_WLOCK(pMemFreeBSD->pObject);
++#if __FreeBSD_version < 1500038
+ vm_page_t pPage = vm_page_find_least(pMemFreeBSD->pObject, 0);
+ #if __FreeBSD_version < 1000000
+ vm_page_lock_queues();
+@@ -211,6 +212,14 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
+ #if __FreeBSD_version < 1000000
+ vm_page_unlock_queues();
+ #endif
++#else /* __FreeBSD_version >= 1500038 */
++ struct pctrie_iter pages;
++ vm_page_t page;
++
++ vm_page_iter_init(&pages, pMemFreeBSD->pObject);
++ VM_RADIX_FORALL(page, &pages)
++ (void)vm_page_unwire_noq(page);
++#endif
+ VM_OBJECT_WUNLOCK(pMemFreeBSD->pObject);
+ vm_object_deallocate(pMemFreeBSD->pObject);
+ break;
+@@ -221,6 +230,7 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
+ return VERR_INTERNAL_ERROR;
+ }
+
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
+@@ -330,7 +340,8 @@ static int rtR0MemObjFreeBSDAllocHelper(PRTR0MEMOBJFRE
+ size_t cPages = atop(pMemFreeBSD->Core.cb);
+ int rc;
+
+- pMemFreeBSD->pObject = vm_object_allocate(OBJT_PHYS, cPages);
++ pMemFreeBSD->pObject = vm_pager_allocate(OBJT_PHYS, NULL,
++ pMemFreeBSD->Core.cb, VM_PROT_ALL, 0, curthread->td_ucred);
+
+ /* No additional object reference for auto-deallocation upon unmapping. */
+ #if __FreeBSD_version >= 1000055
+@@ -372,6 +383,7 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocPage(PPRTR0MEMOBJ
+
+ DECLHIDDEN(int) rtR0MemObjNativeAllocPage(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable, const char *pszTag)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(*pMemFreeBSD), RTR0MEMOBJTYPE_PAGE,
+ NULL, cb, pszTag);
+ if (pMemFreeBSD)
+@@ -381,8 +393,10 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocPage(PPRTR0MEMOBJ
+ *ppMem = &pMemFreeBSD->Core;
+ else
+ rtR0MemObjDelete(&pMemFreeBSD->Core);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return rc;
+ }
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VERR_NO_MEMORY;
+ }
+
+@@ -396,6 +410,7 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocLow(PPRTR0MEMOBJI
+
+ DECLHIDDEN(int) rtR0MemObjNativeAllocLow(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable, const char *pszTag)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(*pMemFreeBSD), RTR0MEMOBJTYPE_LOW, NULL, cb, pszTag);
+ if (pMemFreeBSD)
+ {
+@@ -404,8 +419,10 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocLow(PPRTR0MEMOBJI
+ *ppMem = &pMemFreeBSD->Core;
+ else
+ rtR0MemObjDelete(&pMemFreeBSD->Core);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return rc;
+ }
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VERR_NO_MEMORY;
+ }
+
+@@ -413,6 +430,7 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocCont(PPRTR0MEMOBJ
+ DECLHIDDEN(int) rtR0MemObjNativeAllocCont(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, RTHCPHYS PhysHigest,
+ bool fExecutable, const char *pszTag)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(*pMemFreeBSD), RTR0MEMOBJTYPE_CONT,
+ NULL, cb, pszTag);
+ if (pMemFreeBSD)
+@@ -425,8 +443,10 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocCont(PPRTR0MEMOBJ
+ }
+ else
+ rtR0MemObjDelete(&pMemFreeBSD->Core);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return rc;
+ }
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VERR_NO_MEMORY;
+ }
+
+@@ -434,6 +454,7 @@ static int rtR0MemObjFreeBSDAllocPhysPages(PPRTR0MEMOB
+ static int rtR0MemObjFreeBSDAllocPhysPages(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJTYPE enmType, size_t cb, RTHCPHYS PhysHighest,
+ size_t uAlignment, bool fContiguous, int rcNoMem, const char *pszTag)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ /* create the object. */
+ PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(*pMemFreeBSD), enmType, NULL, cb, pszTag);
+ if (pMemFreeBSD)
+@@ -441,7 +462,8 @@ static int rtR0MemObjFreeBSDAllocPhysPages(PPRTR0MEMOB
+ vm_paddr_t const VmPhysAddrHigh = PhysHighest != NIL_RTHCPHYS ? PhysHighest : ~(vm_paddr_t)0;
+ u_long const cPages = atop(cb);
+
+- pMemFreeBSD->pObject = vm_object_allocate(OBJT_PHYS, cPages);
++ pMemFreeBSD->pObject = vm_pager_allocate(OBJT_PHYS, NULL,
++ pMemFreeBSD->Core.cb, VM_PROT_ALL, 0, curthread->td_ucred);
+
+ int rc = rtR0MemObjFreeBSDPhysAllocHelper(pMemFreeBSD->pObject, cPages, VmPhysAddrHigh,
+ uAlignment, fContiguous, true, rcNoMem);
+@@ -451,7 +473,7 @@ static int rtR0MemObjFreeBSDAllocPhysPages(PPRTR0MEMOB
+ {
+ Assert(enmType == RTR0MEMOBJTYPE_PHYS);
+ VM_OBJECT_WLOCK(pMemFreeBSD->pObject);
+- pMemFreeBSD->Core.u.Phys.PhysBase = VM_PAGE_TO_PHYS(vm_page_find_least(pMemFreeBSD->pObject, 0));
++ pMemFreeBSD->Core.u.Phys.PhysBase = VM_PAGE_TO_PHYS(vm_radix_lookup_ge(&pMemFreeBSD->pObject->rtree, 0));
+ VM_OBJECT_WUNLOCK(pMemFreeBSD->pObject);
+ pMemFreeBSD->Core.u.Phys.fAllocated = true;
+ }
+@@ -464,8 +486,10 @@ static int rtR0MemObjFreeBSDAllocPhysPages(PPRTR0MEMOB
+ vm_object_deallocate(pMemFreeBSD->pObject);
+ rtR0MemObjDelete(&pMemFreeBSD->Core);
+ }
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return rc;
+ }
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VERR_NO_MEMORY;
+ }
+
+@@ -488,6 +512,7 @@ DECLHIDDEN(int) rtR0MemObjNativeEnterPhys(PPRTR0MEMOBJ
+ const char *pszTag)
+ {
+ AssertReturn(uCachePolicy == RTMEM_CACHE_POLICY_DONT_CARE, VERR_NOT_SUPPORTED);
++ IPRT_FREEBSD_SAVE_EFL_AC();
+
+ /* create the object. */
+ PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(*pMemFreeBSD), RTR0MEMOBJTYPE_PHYS,
+@@ -499,8 +524,10 @@ DECLHIDDEN(int) rtR0MemObjNativeEnterPhys(PPRTR0MEMOBJ
+ pMemFreeBSD->Core.u.Phys.PhysBase = Phys;
+ pMemFreeBSD->Core.u.Phys.uCachePolicy = uCachePolicy;
+ *ppMem = &pMemFreeBSD->Core;
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VERR_NO_MEMORY;
+ }
+
+@@ -512,6 +539,7 @@ static int rtR0MemObjNativeLockInMap(PPRTR0MEMOBJINTER
+ vm_offset_t AddrStart, size_t cb, uint32_t fAccess,
+ RTR0PROCESS R0Process, int fFlags, const char *pszTag)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ int rc;
+ NOREF(fAccess);
+
+@@ -521,21 +549,28 @@ static int rtR0MemObjNativeLockInMap(PPRTR0MEMOBJINTER
+ if (!pMemFreeBSD)
+ return VERR_NO_MEMORY;
+
+- /*
+- * We could've used vslock here, but we don't wish to be subject to
+- * resource usage restrictions, so we'll call vm_map_wire directly.
+- */
+- rc = vm_map_wire(pVmMap, /* the map */
+- AddrStart, /* start */
+- AddrStart + cb, /* end */
+- fFlags); /* flags */
++ if (pVmMap != kernel_map) {
++ /*
++ * We could've used vslock here, but we don't wish to be subject to
++ * resource usage restrictions, so we'll call vm_map_wire directly.
++ */
++ rc = vm_map_wire(pVmMap, /* the map */
++ AddrStart, /* start */
++ AddrStart + cb, /* end */
++ fFlags); /* flags */
++ }
++ else
++ rc = KERN_SUCCESS;
++
+ if (rc == KERN_SUCCESS)
+ {
+ pMemFreeBSD->Core.u.Lock.R0Process = R0Process;
+ *ppMem = &pMemFreeBSD->Core;
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+ rtR0MemObjDelete(&pMemFreeBSD->Core);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VERR_NO_MEMORY;/** @todo fix mach -> vbox error conversion for freebsd. */
+ }
+
+@@ -575,6 +610,7 @@ static int rtR0MemObjNativeReserveInMap(PPRTR0MEMOBJIN
+ static int rtR0MemObjNativeReserveInMap(PPRTR0MEMOBJINTERNAL ppMem, void *pvFixed, size_t cb, size_t uAlignment,
+ RTR0PROCESS R0Process, vm_map_t pMap, const char *pszTag)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ int rc;
+
+ /*
+@@ -633,11 +669,13 @@ static int rtR0MemObjNativeReserveInMap(PPRTR0MEMOBJIN
+ pMemFreeBSD->Core.pv = (void *)MapAddress;
+ pMemFreeBSD->Core.u.ResVirt.R0Process = R0Process;
+ *ppMem = &pMemFreeBSD->Core;
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
+ rc = VERR_NO_MEMORY; /** @todo fix translation (borrow from darwin) */
+ rtR0MemObjDelete(&pMemFreeBSD->Core);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return rc;
+
+ }
+@@ -661,6 +699,8 @@ DECLHIDDEN(int) rtR0MemObjNativeMapKernel(PPRTR0MEMOBJ
+ DECLHIDDEN(int) rtR0MemObjNativeMapKernel(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJ pMemToMap, void *pvFixed, size_t uAlignment,
+ unsigned fProt, size_t offSub, size_t cbSub, const char *pszTag)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
++
+ // AssertMsgReturn(!offSub && !cbSub, ("%#x %#x\n", offSub, cbSub), VERR_NOT_SUPPORTED);
+ AssertMsgReturn(pvFixed == (void *)-1, ("%p\n", pvFixed), VERR_NOT_SUPPORTED);
+
+@@ -715,6 +755,7 @@ DECLHIDDEN(int) rtR0MemObjNativeMapKernel(PPRTR0MEMOBJ
+ Assert((vm_offset_t)pMemFreeBSD->Core.pv == Addr);
+ pMemFreeBSD->Core.u.Mapping.R0Process = NIL_RTR0PROCESS;
+ *ppMem = &pMemFreeBSD->Core;
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+ rc = vm_map_remove(kernel_map, Addr, Addr + cbSub);
+@@ -723,6 +764,7 @@ DECLHIDDEN(int) rtR0MemObjNativeMapKernel(PPRTR0MEMOBJ
+ else
+ vm_object_deallocate(pMemToMapFreeBSD->pObject);
+
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VERR_NO_MEMORY;
+ }
+
+@@ -730,6 +772,8 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser(PPRTR0MEMOBJIN
+ DECLHIDDEN(int) rtR0MemObjNativeMapUser(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJ pMemToMap, RTR3PTR R3PtrFixed, size_t uAlignment,
+ unsigned fProt, RTR0PROCESS R0Process, size_t offSub, size_t cbSub, const char *pszTag)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
++
+ /*
+ * Check for unsupported stuff.
+ */
+@@ -787,44 +831,50 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser(PPRTR0MEMOBJIN
+
+ if (rc == KERN_SUCCESS)
+ {
+- rc = vm_map_wire(pProcMap, AddrR3, AddrR3 + pMemToMap->cb, VM_MAP_WIRE_USER|VM_MAP_WIRE_NOHOLES);
++ rc = vm_map_wire(pProcMap, AddrR3, AddrR3 + cbSub, VM_MAP_WIRE_USER|VM_MAP_WIRE_NOHOLES);
+ AssertMsg(rc == KERN_SUCCESS, ("%#x\n", rc));
+
+- rc = vm_map_inherit(pProcMap, AddrR3, AddrR3 + pMemToMap->cb, VM_INHERIT_SHARE);
++ rc = vm_map_inherit(pProcMap, AddrR3, AddrR3 + cbSub, VM_INHERIT_SHARE);
+ AssertMsg(rc == KERN_SUCCESS, ("%#x\n", rc));
+
+ /*
+ * Create a mapping object for it.
+ */
+ PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(RTR0MEMOBJFREEBSD), RTR0MEMOBJTYPE_MAPPING,
+- (void *)AddrR3, pMemToMap->cb, pszTag);
++ (void *)AddrR3, cbSub, pszTag);
+ if (pMemFreeBSD)
+ {
+ Assert((vm_offset_t)pMemFreeBSD->Core.pv == AddrR3);
+ pMemFreeBSD->Core.u.Mapping.R0Process = R0Process;
+ *ppMem = &pMemFreeBSD->Core;
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
+- rc = vm_map_remove(pProcMap, AddrR3, AddrR3 + pMemToMap->cb);
++ rc = vm_map_remove(pProcMap, AddrR3, AddrR3 + cbSub);
+ AssertMsg(rc == KERN_SUCCESS, ("Deleting mapping failed\n"));
+ }
+ else
+ vm_object_deallocate(pMemToMapFreeBSD->pObject);
+
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VERR_NO_MEMORY;
+ }
+
+
+ DECLHIDDEN(int) rtR0MemObjNativeProtect(PRTR0MEMOBJINTERNAL pMem, size_t offSub, size_t cbSub, uint32_t fProt)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ vm_prot_t ProtectionFlags = 0;
+ vm_offset_t AddrStart = (uintptr_t)pMem->pv + offSub;
+ vm_offset_t AddrEnd = AddrStart + cbSub;
+ vm_map_t pVmMap = rtR0MemObjFreeBSDGetMap(pMem);
+
+ if (!pVmMap)
++ {
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VERR_NOT_SUPPORTED;
++ }
+
+ if ((fProt & RTMEM_PROT_NONE) == RTMEM_PROT_NONE)
+ ProtectionFlags = VM_PROT_NONE;
+@@ -835,7 +885,12 @@ DECLHIDDEN(int) rtR0MemObjNativeProtect(PRTR0MEMOBJINT
+ if ((fProt & RTMEM_PROT_EXEC) == RTMEM_PROT_EXEC)
+ ProtectionFlags |= VM_PROT_EXECUTE;
+
++#if __FreeBSD_version >= 1300135
++ int krc = vm_map_protect(pVmMap, AddrStart, AddrEnd, ProtectionFlags, 0, VM_MAP_PROTECT_SET_PROT);
++#else
+ int krc = vm_map_protect(pVmMap, AddrStart, AddrEnd, ProtectionFlags, FALSE);
++#endif
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ if (krc == KERN_SUCCESS)
+ return VINF_SUCCESS;
+
+@@ -860,11 +915,19 @@ DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(P
+
+ vm_offset_t pb = (vm_offset_t)pMemFreeBSD->Core.pv + ptoa(iPage);
+
+- struct proc *pProc = (struct proc *)pMemFreeBSD->Core.u.Lock.R0Process;
+- struct vm_map *pProcMap = &pProc->p_vmspace->vm_map;
+- pmap_t pPhysicalMap = vm_map_pmap(pProcMap);
++ if (pMemFreeBSD->Core.u.Mapping.R0Process != NIL_RTR0PROCESS)
++ {
++ RTHCPHYS addr;
++ IPRT_FREEBSD_SAVE_EFL_AC();
++ struct proc *pProc = (struct proc *)pMemFreeBSD->Core.u.Lock.R0Process;
++ struct vm_map *pProcMap = &pProc->p_vmspace->vm_map;
++ pmap_t pPhysicalMap = vm_map_pmap(pProcMap);
+
+- return pmap_extract(pPhysicalMap, pb);
++ addr = pmap_extract(pPhysicalMap, pb);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
++ return addr;
++ }
++ return vtophys(pb);
+ }
+
+ case RTR0MEMOBJTYPE_MAPPING:
+@@ -873,11 +936,15 @@ DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(P
+
+ if (pMemFreeBSD->Core.u.Mapping.R0Process != NIL_RTR0PROCESS)
+ {
++ RTHCPHYS addr;
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ struct proc *pProc = (struct proc *)pMemFreeBSD->Core.u.Mapping.R0Process;
+ struct vm_map *pProcMap = &pProc->p_vmspace->vm_map;
+ pmap_t pPhysicalMap = vm_map_pmap(pProcMap);
+
+- return pmap_extract(pPhysicalMap, pb);
++ addr = pmap_extract(pPhysicalMap, pb);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
++ return addr;
+ }
+ return vtophys(pb);
+ }
+@@ -888,9 +955,11 @@ DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(P
+ {
+ RTHCPHYS addr;
+
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ VM_OBJECT_WLOCK(pMemFreeBSD->pObject);
+ addr = VM_PAGE_TO_PHYS(vm_page_lookup(pMemFreeBSD->pObject, iPage));
+ VM_OBJECT_WUNLOCK(pMemFreeBSD->pObject);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return addr;
+ }
+
+@@ -910,7 +979,7 @@ DECLHIDDEN(int) rtR0MemObjNativeZeroInitWithoutMapping
+ DECLHIDDEN(int) rtR0MemObjNativeZeroInitWithoutMapping(PRTR0MEMOBJINTERNAL pMem)
+ {
+ PRTR0MEMOBJFREEBSD const pMemFreeBsd = (PRTR0MEMOBJFREEBSD)pMem;
+- size_t const cPages = pMemSolaris->Core.cb >> PAGE_SHIFT;
++ size_t const cPages = atop(pMemFreeBsd->Core.cb);
+ size_t iPage;
+ for (iPage = 0; iPage < cPages; iPage++)
+ {
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_memuserkernel-r0drv-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_memuserkernel-r0drv-freebsd.c
new file mode 100644
index 000000000000..637f67bbe59a
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_memuserkernel-r0drv-freebsd.c
@@ -0,0 +1,22 @@
+--- src/VBox/Runtime/r0drv/freebsd/memuserkernel-r0drv-freebsd.c.orig 2025-08-13 19:51:51 UTC
++++ src/VBox/Runtime/r0drv/freebsd/memuserkernel-r0drv-freebsd.c
+@@ -46,7 +46,9 @@ RTR0DECL(int) RTR0MemUserCopyFrom(void *pvDst, RTR3PTR
+
+ RTR0DECL(int) RTR0MemUserCopyFrom(void *pvDst, RTR3PTR R3PtrSrc, size_t cb)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ int rc = copyin((const void *)R3PtrSrc, pvDst, cb);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ if (RT_LIKELY(rc == 0))
+ return VINF_SUCCESS;
+ return VERR_ACCESS_DENIED;
+@@ -55,7 +57,9 @@ RTR0DECL(int) RTR0MemUserCopyTo(RTR3PTR R3PtrDst, void
+
+ RTR0DECL(int) RTR0MemUserCopyTo(RTR3PTR R3PtrDst, void const *pvSrc, size_t cb)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ int rc = copyout(pvSrc, (void *)R3PtrDst, cb);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ if (RT_LIKELY(rc == 0))
+ return VINF_SUCCESS;
+ return VERR_ACCESS_DENIED;
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_mp-r0drv-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_mp-r0drv-freebsd.c
new file mode 100644
index 000000000000..5548551e9ab5
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_mp-r0drv-freebsd.c
@@ -0,0 +1,92 @@
+--- src/VBox/Runtime/r0drv/freebsd/mp-r0drv-freebsd.c.orig 2025-08-13 19:51:51 UTC
++++ src/VBox/Runtime/r0drv/freebsd/mp-r0drv-freebsd.c
+@@ -157,7 +157,9 @@ static void rtmpOnAllFreeBSDWrapper(void *pvArg)
+ static void rtmpOnAllFreeBSDWrapper(void *pvArg)
+ {
+ PRTMPARGS pArgs = (PRTMPARGS)pvArg;
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ pArgs->pfnWorker(curcpu, pArgs->pvUser1, pArgs->pvUser2);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ }
+
+
+@@ -169,7 +171,9 @@ RTDECL(int) RTMpOnAll(PFNRTMPWORKER pfnWorker, void *p
+ Args.pvUser2 = pvUser2;
+ Args.idCpu = NIL_RTCPUID;
+ Args.cHits = 0;
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ smp_rendezvous(NULL, rtmpOnAllFreeBSDWrapper, smp_no_rendezvous_barrier, &Args);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
+@@ -185,7 +189,11 @@ static void rtmpOnOthersFreeBSDWrapper(void *pvArg)
+ PRTMPARGS pArgs = (PRTMPARGS)pvArg;
+ RTCPUID idCpu = curcpu;
+ if (pArgs->idCpu != idCpu)
++ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ pArgs->pfnWorker(idCpu, pArgs->pvUser1, pArgs->pvUser2);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
++ }
+ }
+
+
+@@ -206,6 +214,7 @@ RTDECL(int) RTMpOnOthers(PFNRTMPWORKER pfnWorker, void
+ Args.pvUser2 = pvUser2;
+ Args.idCpu = RTMpCpuId();
+ Args.cHits = 0;
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ #if __FreeBSD_version >= 700000
+ # if __FreeBSD_version >= 900000
+ Mask = all_cpus;
+@@ -217,6 +226,7 @@ RTDECL(int) RTMpOnOthers(PFNRTMPWORKER pfnWorker, void
+ #else
+ smp_rendezvous(NULL, rtmpOnOthersFreeBSDWrapper, NULL, &Args);
+ #endif
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ }
+ return VINF_SUCCESS;
+ }
+@@ -234,8 +244,10 @@ static void rtmpOnSpecificFreeBSDWrapper(void *pvArg)
+ RTCPUID idCpu = curcpu;
+ if (pArgs->idCpu == idCpu)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ pArgs->pfnWorker(idCpu, pArgs->pvUser1, pArgs->pvUser2);
+ ASMAtomicIncU32(&pArgs->cHits);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ }
+ }
+
+@@ -258,6 +270,7 @@ RTDECL(int) RTMpOnSpecific(RTCPUID idCpu, PFNRTMPWORKE
+ Args.pvUser2 = pvUser2;
+ Args.idCpu = idCpu;
+ Args.cHits = 0;
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ #if __FreeBSD_version >= 700000
+ # if __FreeBSD_version >= 900000
+ CPU_SETOF(idCpu, &Mask);
+@@ -268,6 +281,7 @@ RTDECL(int) RTMpOnSpecific(RTCPUID idCpu, PFNRTMPWORKE
+ #else
+ smp_rendezvous(NULL, rtmpOnSpecificFreeBSDWrapper, NULL, &Args);
+ #endif
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return Args.cHits == 1
+ ? VINF_SUCCESS
+ : VERR_CPU_NOT_FOUND;
+@@ -297,12 +311,14 @@ RTDECL(int) RTMpPokeCpu(RTCPUID idCpu)
+ if (!RTMpIsCpuOnline(idCpu))
+ return VERR_CPU_NOT_FOUND;
+
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ # if __FreeBSD_version >= 900000
+ CPU_SETOF(idCpu, &Mask);
+ # else
+ Mask = (cpumask_t)1 << idCpu;
+ # endif
+ smp_rendezvous_cpus(Mask, NULL, rtmpFreeBSDPokeCallback, smp_no_rendezvous_barrier, NULL);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+
+ return VINF_SUCCESS;
+ }
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_semevent-r0drv-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_semevent-r0drv-freebsd.c
new file mode 100644
index 000000000000..cb5deba5ce97
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_semevent-r0drv-freebsd.c
@@ -0,0 +1,53 @@
+--- src/VBox/Runtime/r0drv/freebsd/semevent-r0drv-freebsd.c.orig 2025-08-13 19:51:51 UTC
++++ src/VBox/Runtime/r0drv/freebsd/semevent-r0drv-freebsd.c
+@@ -111,7 +111,9 @@ RTDECL(int) RTSemEventCreateEx(PRTSEMEVENT phEventSem
+ Assert(!(fFlags & RTSEMEVENT_FLAGS_BOOTSTRAP_HACK) || (fFlags & RTSEMEVENT_FLAGS_NO_LOCK_VAL));
+ AssertPtrReturn(phEventSem, VERR_INVALID_POINTER);
+
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ PRTSEMEVENTINTERNAL pThis = (PRTSEMEVENTINTERNAL)RTMemAllocZ(sizeof(*pThis));
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ if (!pThis)
+ return VERR_NO_MEMORY;
+
+@@ -162,10 +164,12 @@ RTDECL(int) RTSemEventDestroy(RTSEMEVENT hEventSem)
+ /*
+ * Invalidate it and signal the object just in case.
+ */
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ ASMAtomicWriteU32(&pThis->u32Magic, ~RTSEMEVENT_MAGIC);
+ ASMAtomicWriteU32(&pThis->fState, 0);
+ rtR0SemBsdBroadcast(pThis);
+ rtR0SemEventBsdRelease(pThis);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
+@@ -183,9 +187,11 @@ RTDECL(int) RTSemEventSignal(RTSEMEVENT hEventSem)
+ /*
+ * Signal the event object.
+ */
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ ASMAtomicWriteU32(&pThis->fState, 1);
+ rtR0SemBsdSignal(pThis);
+ rtR0SemEventBsdRelease(pThis);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
+@@ -209,6 +215,7 @@ static int rtR0SemEventWait(PRTSEMEVENTINTERNAL pThis,
+ AssertPtrReturn(pThis, VERR_INVALID_PARAMETER);
+ AssertMsgReturn(pThis->u32Magic == RTSEMEVENT_MAGIC, ("%p u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_PARAMETER);
+ AssertReturn(RTSEMWAIT_FLAGS_ARE_VALID(fFlags), VERR_INVALID_PARAMETER);
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ rtR0SemEventBsdRetain(pThis);
+
+ /*
+@@ -258,6 +265,7 @@ static int rtR0SemEventWait(PRTSEMEVENTINTERNAL pThis,
+ }
+
+ rtR0SemEventBsdRelease(pThis);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return rc;
+ }
+
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_semeventmulti-r0drv-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_semeventmulti-r0drv-freebsd.c
new file mode 100644
index 000000000000..dab1b22fcd36
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_semeventmulti-r0drv-freebsd.c
@@ -0,0 +1,73 @@
+--- src/VBox/Runtime/r0drv/freebsd/semeventmulti-r0drv-freebsd.c.orig 2025-08-13 19:51:51 UTC
++++ src/VBox/Runtime/r0drv/freebsd/semeventmulti-r0drv-freebsd.c
+@@ -130,7 +130,9 @@ RTDECL(int) RTSemEventMultiCreateEx(PRTSEMEVENTMULTI
+ PRTSEMEVENTMULTIINTERNAL pThis;
+
+ AssertReturn(!(fFlags & ~RTSEMEVENTMULTI_FLAGS_NO_LOCK_VAL), VERR_INVALID_PARAMETER);
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ pThis = (PRTSEMEVENTMULTIINTERNAL)RTMemAlloc(sizeof(*pThis));
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ if (pThis)
+ {
+ pThis->u32Magic = RTSEMEVENTMULTI_MAGIC;
+@@ -186,10 +188,12 @@ RTDECL(int) RTSemEventMultiDestroy(RTSEMEVENTMULTI hE
+ /*
+ * Invalidate it and signal the object just in case.
+ */
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ ASMAtomicWriteU32(&pThis->u32Magic, ~RTSEMEVENTMULTI_MAGIC);
+ ASMAtomicAndU32(&pThis->fStateAndGen, RTSEMEVENTMULTIBSD_GEN_MASK);
+ rtR0SemBsdBroadcast(pThis);
+ rtR0SemEventMultiBsdRelease(pThis);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
+@@ -198,6 +202,7 @@ RTDECL(int) RTSemEventMultiSignal(RTSEMEVENTMULTI hEv
+ {
+ uint32_t fNew;
+ uint32_t fOld;
++ IPRT_FREEBSD_SAVE_EFL_AC();
+
+ /*
+ * Validate input.
+@@ -224,12 +229,15 @@ RTDECL(int) RTSemEventMultiSignal(RTSEMEVENTMULTI hEv
+
+ rtR0SemBsdBroadcast(pThis);
+ rtR0SemEventMultiBsdRelease(pThis);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
+
+ RTDECL(int) RTSemEventMultiReset(RTSEMEVENTMULTI hEventMultiSem)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
++
+ /*
+ * Validate input.
+ */
+@@ -246,6 +254,7 @@ RTDECL(int) RTSemEventMultiReset(RTSEMEVENTMULTI hEve
+ ASMAtomicAndU32(&pThis->fStateAndGen, ~RTSEMEVENTMULTIBSD_STATE_MASK);
+
+ rtR0SemEventMultiBsdRelease(pThis);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
+@@ -262,6 +271,7 @@ static int rtR0SemEventMultiBsdWait(PRTSEMEVENTMULTIIN
+ static int rtR0SemEventMultiBsdWait(PRTSEMEVENTMULTIINTERNAL pThis, uint32_t fFlags, uint64_t uTimeout,
+ PCRTLOCKVALSRCPOS pSrcPos)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ uint32_t fOrgStateAndGen;
+ int rc;
+
+@@ -321,6 +331,7 @@ static int rtR0SemEventMultiBsdWait(PRTSEMEVENTMULTIIN
+ }
+
+ rtR0SemEventMultiBsdRelease(pThis);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return rc;
+ }
+
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_semfastmutex-r0drv-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_semfastmutex-r0drv-freebsd.c
new file mode 100644
index 000000000000..21c03b87326e
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_semfastmutex-r0drv-freebsd.c
@@ -0,0 +1,59 @@
+--- src/VBox/Runtime/r0drv/freebsd/semfastmutex-r0drv-freebsd.c.orig 2025-08-13 19:51:51 UTC
++++ src/VBox/Runtime/r0drv/freebsd/semfastmutex-r0drv-freebsd.c
+@@ -96,6 +96,7 @@ RTDECL(int) RTSemFastMutexCreate(PRTSEMFASTMUTEX phFa
+ {
+ AssertCompile(sizeof(RTSEMFASTMUTEXINTERNAL) > sizeof(void *));
+ AssertPtrReturn(phFastMtx, VERR_INVALID_POINTER);
++ IPRT_FREEBSD_SAVE_EFL_AC();
+
+ PRTSEMFASTMUTEXINTERNAL pThis = (PRTSEMFASTMUTEXINTERNAL)RTMemAllocZ(sizeof(*pThis));
+ if (pThis)
+@@ -104,8 +105,10 @@ RTDECL(int) RTSemFastMutexCreate(PRTSEMFASTMUTEX phFa
+ sx_init_flags(&pThis->SxLock, "IPRT Fast Mutex Semaphore", SX_DUPOK);
+
+ *phFastMtx = pThis;
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VERR_NO_MEMORY;
+ }
+
+@@ -117,11 +120,13 @@ RTDECL(int) RTSemFastMutexDestroy(RTSEMFASTMUTEX hFas
+ return VINF_SUCCESS;
+ AssertPtrReturn(pThis, VERR_INVALID_HANDLE);
+ AssertMsgReturn(pThis->u32Magic == RTSEMFASTMUTEX_MAGIC, ("%p: u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_HANDLE);
++ IPRT_FREEBSD_SAVE_EFL_AC();
+
+ ASMAtomicWriteU32(&pThis->u32Magic, RTSEMFASTMUTEX_MAGIC_DEAD);
+ sx_destroy(&pThis->SxLock);
+ RTMemFree(pThis);
+
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
+@@ -131,8 +136,11 @@ RTDECL(int) RTSemFastMutexRequest(RTSEMFASTMUTEX hFas
+ PRTSEMFASTMUTEXINTERNAL pThis = hFastMtx;
+ AssertPtrReturn(pThis, VERR_INVALID_HANDLE);
+ AssertMsgReturn(pThis->u32Magic == RTSEMFASTMUTEX_MAGIC, ("%p: u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_HANDLE);
++ IPRT_FREEBSD_SAVE_EFL_AC();
+
+ sx_xlock(&pThis->SxLock);
++
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
+@@ -142,8 +150,11 @@ RTDECL(int) RTSemFastMutexRelease(RTSEMFASTMUTEX hFas
+ PRTSEMFASTMUTEXINTERNAL pThis = hFastMtx;
+ AssertPtrReturn(pThis, VERR_INVALID_HANDLE);
+ AssertMsgReturn(pThis->u32Magic == RTSEMFASTMUTEX_MAGIC, ("%p: u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_HANDLE);
++ IPRT_FREEBSD_SAVE_EFL_AC();
+
+ sx_xunlock(&pThis->SxLock);
++
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_semmutex-r0drv-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_semmutex-r0drv-freebsd.c
new file mode 100644
index 000000000000..048d345398eb
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_semmutex-r0drv-freebsd.c
@@ -0,0 +1,80 @@
+--- src/VBox/Runtime/r0drv/freebsd/semmutex-r0drv-freebsd.c.orig 2025-08-13 19:51:51 UTC
++++ src/VBox/Runtime/r0drv/freebsd/semmutex-r0drv-freebsd.c
+@@ -72,6 +72,7 @@ RTDECL(int) RTSemMutexCreate(PRTSEMMUTEX phMutexSem)
+ {
+ AssertCompile(sizeof(RTSEMMUTEXINTERNAL) > sizeof(void *));
+ AssertPtrReturn(phMutexSem, VERR_INVALID_POINTER);
++ IPRT_FREEBSD_SAVE_EFL_AC();
+
+ PRTSEMMUTEXINTERNAL pThis = (PRTSEMMUTEXINTERNAL)RTMemAllocZ(sizeof(*pThis));
+ if (pThis)
+@@ -80,8 +81,10 @@ RTDECL(int) RTSemMutexCreate(PRTSEMMUTEX phMutexSem)
+ sx_init_flags(&pThis->SxLock, "IPRT Mutex Semaphore", SX_RECURSE);
+
+ *phMutexSem = pThis;
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VERR_NO_MEMORY;
+ }
+
+@@ -93,12 +96,14 @@ RTDECL(int) RTSemMutexDestroy(RTSEMMUTEX hMutexSem)
+ return VINF_SUCCESS;
+ AssertPtrReturn(pThis, VERR_INVALID_HANDLE);
+ AssertMsgReturn(pThis->u32Magic == RTSEMMUTEX_MAGIC, ("%p: u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_HANDLE);
++ IPRT_FREEBSD_SAVE_EFL_AC();
+
+ AssertReturn(ASMAtomicCmpXchgU32(&pThis->u32Magic, RTSEMMUTEX_MAGIC_DEAD, RTSEMMUTEX_MAGIC), VERR_INVALID_HANDLE);
+
+ sx_destroy(&pThis->SxLock);
+ RTMemFree(pThis);
+
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
+@@ -109,6 +114,7 @@ RTDECL(int) RTSemMutexRequest(RTSEMMUTEX hMutexSem, R
+ int rc;
+ AssertPtrReturn(pThis, VERR_INVALID_HANDLE);
+ AssertMsgReturn(pThis->u32Magic == RTSEMMUTEX_MAGIC, ("%p: u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_HANDLE);
++ IPRT_FREEBSD_SAVE_EFL_AC();
+
+ if (cMillies == RT_INDEFINITE_WAIT)
+ {
+@@ -143,6 +149,7 @@ RTDECL(int) RTSemMutexRequest(RTSEMMUTEX hMutexSem, R
+ } while (RTTimeSystemMilliTS() - StartTS < cMillies);
+ }
+
++ IPRT_FREEBSD_RESTORE_EFL_ONLY_AC();
+ return VINF_SUCCESS;
+ }
+
+@@ -159,6 +166,7 @@ RTDECL(int) RTSemMutexRequestNoResume(RTSEMMUTEX hMut
+ int rc;
+ AssertPtrReturn(pThis, VERR_INVALID_HANDLE);
+ AssertMsgReturn(pThis->u32Magic == RTSEMMUTEX_MAGIC, ("%p: u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_HANDLE);
++ IPRT_FREEBSD_SAVE_EFL_AC();
+
+ if (cMillies == RT_INDEFINITE_WAIT)
+ {
+@@ -196,6 +204,7 @@ RTDECL(int) RTSemMutexRequestNoResume(RTSEMMUTEX hMut
+ } while (RTTimeSystemMilliTS() - StartTS < cMillies);
+ }
+
++ IPRT_FREEBSD_RESTORE_EFL_ONLY_AC();
+ return VINF_SUCCESS;
+ }
+
+@@ -211,8 +220,11 @@ RTDECL(int) RTSemMutexRelease(RTSEMMUTEX hMutexSem)
+ PRTSEMMUTEXINTERNAL pThis = hMutexSem;
+ AssertPtrReturn(pThis, VERR_INVALID_HANDLE);
+ AssertMsgReturn(pThis->u32Magic == RTSEMMUTEX_MAGIC, ("%p: u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_HANDLE);
++ IPRT_FREEBSD_SAVE_EFL_AC();
+
+ sx_xunlock(&pThis->SxLock);
++
++ IPRT_FREEBSD_RESTORE_EFL_ONLY_AC();
+ return VINF_SUCCESS;
+ }
+
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_spinlock-r0drv-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_spinlock-r0drv-freebsd.c
new file mode 100644
index 000000000000..442c6e1c243d
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_spinlock-r0drv-freebsd.c
@@ -0,0 +1,30 @@
+--- src/VBox/Runtime/r0drv/freebsd/spinlock-r0drv-freebsd.c.orig 2025-08-13 19:51:51 UTC
++++ src/VBox/Runtime/r0drv/freebsd/spinlock-r0drv-freebsd.c
+@@ -116,7 +116,9 @@ RTDECL(int) RTSpinlockCreate(PRTSPINLOCK pSpinlock, u
+ * Allocate.
+ */
+ AssertCompile(sizeof(RTSPINLOCKINTERNAL) > sizeof(void *));
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ PRTSPINLOCKINTERNAL pThis = (PRTSPINLOCKINTERNAL)RTMemAllocZ(sizeof(*pThis));
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ if (!pThis)
+ return VERR_NO_MEMORY;
+
+@@ -150,7 +152,9 @@ RTDECL(int) RTSpinlockDestroy(RTSPINLOCK Spinlock)
+ * Make the lock invalid and release the memory.
+ */
+ ASMAtomicIncU32(&pThis->u32Magic);
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ RTMemFree(pThis);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
+@@ -176,6 +180,7 @@ RTDECL(void) RTSpinlockAcquire(RTSPINLOCK Spinlock)
+ {
+ RT_ASSERT_PREEMPT_CPUID_SPIN_ACQUIRED(pThis);
+ pThis->fIntSaved = fIntSaved;
++ IPRT_FREEBSD_RESTORE_EFL_ONLY_AC_EX(fIntSaved);
+ return;
+ }
+ if (--c <= 0)
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_the-freebsd-kernel.h b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_the-freebsd-kernel.h
new file mode 100644
index 000000000000..c783814425f5
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_the-freebsd-kernel.h
@@ -0,0 +1,48 @@
+--- src/VBox/Runtime/r0drv/freebsd/the-freebsd-kernel.h.orig 2025-04-14 17:59:14 UTC
++++ src/VBox/Runtime/r0drv/freebsd/the-freebsd-kernel.h
+@@ -97,6 +97,7 @@
+ #include <sys/smp.h>
+ #include <sys/sleepqueue.h>
+ #include <sys/sx.h>
++#include <sys/vmmeter.h> /* vm_cnt */
+ #include <vm/vm.h>
+ #include <vm/pmap.h> /* for vtophys */
+ #include <vm/vm_map.h>
+@@ -104,10 +105,11 @@
+ #include <vm/vm_kern.h>
+ #include <vm/vm_param.h> /* KERN_SUCCESS ++ */
+ #include <vm/vm_page.h>
++#include <vm/vm_pager.h>
+ #include <vm/vm_phys.h> /* vm_phys_alloc_* */
+ #include <vm/vm_extern.h> /* kmem_alloc_attr */
+ #include <vm/vm_pageout.h> /* vm_contig_grow_cache */
+-#include <sys/vmmeter.h> /* cnt */
++#include <vm/vm_radix.h>
+ #include <sys/resourcevar.h>
+ #include <machine/cpu.h>
+
+@@ -165,6 +167,24 @@
+ */
+ #if 0 /** @todo Not available yet. */
+ # define USE_KMEM_ALLOC_PROT
++#endif
++
++/**
++ * Macros for preserving EFLAGS.AC (despair / paranoid)
++ */
++#if __FreeBSD_version >= 1200076 && defined(RT_ARCH_AMD64)
++# include <iprt/asm-amd64-x86.h>
++# include <iprt/x86.h>
++# define IPRT_FREEBSD_SAVE_EFL_AC() RTCCUINTREG const fSavedEfl = ASMGetFlags()
++# define IPRT_FREEBSD_RESTORE_EFL_AC() ASMSetFlags(fSavedEfl)
++# define IPRT_FREEBSD_RESTORE_EFL_ONLY_AC() ASMChangeFlags(~X86_EFL_AC, fSavedEfl & X86_EFL_AC)
++# define IPRT_FREEBSD_RESTORE_EFL_ONLY_AC_EX(f) ASMChangeFlags(~X86_EFL_AC, (f) & X86_EFL_AC)
++# define VBOX_WITH_EFLAGS_AC_SET_IN_VBOXDRV
++#else
++# define IPRT_FREEBSD_SAVE_EFL_AC() do { } while (0)
++# define IPRT_FREEBSD_RESTORE_EFL_AC() do { } while (0)
++# define IPRT_FREEBSD_RESTORE_EFL_ONLY_AC() do { } while (0)
++# define IPRT_FREEBSD_RESTORE_EFL_ONLY_AC_EX(f) do { } while (0)
+ #endif
+
+ #endif /* !IPRT_INCLUDED_SRC_r0drv_freebsd_the_freebsd_kernel_h */
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_thread-r0drv-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_thread-r0drv-freebsd.c
new file mode 100644
index 000000000000..73a0eab649ad
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_thread-r0drv-freebsd.c
@@ -0,0 +1,91 @@
+--- src/VBox/Runtime/r0drv/freebsd/thread-r0drv-freebsd.c.orig 2025-08-13 19:51:51 UTC
++++ src/VBox/Runtime/r0drv/freebsd/thread-r0drv-freebsd.c
+@@ -59,7 +59,6 @@ static int rtR0ThreadFbsdSleepCommon(RTMSINTERVAL cMil
+ static int rtR0ThreadFbsdSleepCommon(RTMSINTERVAL cMillies)
+ {
+ int rc;
+- int cTicks;
+
+ /*
+ * 0 ms sleep -> yield.
+@@ -70,30 +69,34 @@ static int rtR0ThreadFbsdSleepCommon(RTMSINTERVAL cMil
+ return VINF_SUCCESS;
+ }
+
++ IPRT_FREEBSD_SAVE_EFL_AC();
++
+ /*
+ * Translate milliseconds into ticks and go to sleep.
+ */
+ if (cMillies != RT_INDEFINITE_WAIT)
+ {
+- if (hz == 1000)
+- cTicks = cMillies;
+- else if (hz == 100)
+- cTicks = cMillies / 10;
+- else
+- {
+- int64_t cTicks64 = ((uint64_t)cMillies * hz) / 1000;
+- cTicks = (int)cTicks64;
+- if (cTicks != cTicks64)
+- cTicks = INT_MAX;
+- }
++ struct timeval tv;
++
++ tv.tv_sec = cMillies / 1000;
++ tv.tv_usec = cMillies * 1000;
++
++ rc = tsleep_sbt((void *)RTThreadSleep,
++ PZERO | PCATCH,
++ "iprtsl", /* max 6 chars */
++ tvtosbt(tv),
++ 0,
++ C_ABSOLUTE);
+ }
+ else
+- cTicks = 0; /* requires giant lock! */
+-
+- rc = tsleep((void *)RTThreadSleep,
+- PZERO | PCATCH,
+- "iprtsl", /* max 6 chars */
+- cTicks);
++ {
++ /* requires giant lock! */
++ rc = tsleep((void *)RTThreadSleep,
++ PZERO | PCATCH,
++ "iprts0", /* max 6 chars */
++ 0);
++ }
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ switch (rc)
+ {
+ case 0:
+@@ -124,11 +127,13 @@ RTDECL(bool) RTThreadYield(void)
+
+ RTDECL(bool) RTThreadYield(void)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ #if __FreeBSD_version >= 900032
+ kern_yield(curthread->td_user_pri);
+ #else
+ uio_yield();
+ #endif
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return false; /** @todo figure this one ... */
+ }
+
+@@ -177,12 +182,14 @@ RTDECL(void) RTThreadPreemptRestore(PRTTHREADPREEMPTST
+
+ RTDECL(void) RTThreadPreemptRestore(PRTTHREADPREEMPTSTATE pState)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC(); /* paranoia */
+ AssertPtr(pState);
+ Assert(pState->u32Reserved == 42);
+ pState->u32Reserved = 0;
+
+ RT_ASSERT_PREEMPT_CPUID_RESTORE(pState);
+ critical_exit();
++ IPRT_FREEBSD_RESTORE_EFL_ONLY_AC(); /* paranoia */
+ }
+
+
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_thread2-r0drv-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_thread2-r0drv-freebsd.c
new file mode 100644
index 000000000000..2af30cf1e27a
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_thread2-r0drv-freebsd.c
@@ -0,0 +1,35 @@
+--- src/VBox/Runtime/r0drv/freebsd/thread2-r0drv-freebsd.c.orig 2025-08-13 19:51:51 UTC
++++ src/VBox/Runtime/r0drv/freebsd/thread2-r0drv-freebsd.c
+@@ -104,6 +104,8 @@ DECLHIDDEN(int) rtThreadNativeSetPriority(PRTTHREADINT
+ return VERR_INVALID_PARAMETER;
+ }
+
++ IPRT_FREEBSD_SAVE_EFL_AC();
++
+ #if __FreeBSD_version < 700000
+ /* Do like they're doing in subr_ntoskrnl.c... */
+ mtx_lock_spin(&sched_lock);
+@@ -120,6 +122,7 @@ DECLHIDDEN(int) rtThreadNativeSetPriority(PRTTHREADINT
+ thread_unlock(curthread);
+ #endif
+
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
+@@ -169,6 +172,7 @@ DECLHIDDEN(int) rtThreadNativeCreate(PRTTHREADINT pThr
+
+ DECLHIDDEN(int) rtThreadNativeCreate(PRTTHREADINT pThreadInt, PRTNATIVETHREAD pNativeThread)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
+ int rc;
+ struct proc *pProc;
+
+@@ -184,6 +188,7 @@ DECLHIDDEN(int) rtThreadNativeCreate(PRTTHREADINT pThr
+ }
+ else
+ rc = RTErrConvertFromErrno(rc);
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return rc;
+ }
+
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_time-r0drv-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_time-r0drv-freebsd.c
new file mode 100644
index 000000000000..cf453e69a1f9
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_time-r0drv-freebsd.c
@@ -0,0 +1,43 @@
+--- src/VBox/Runtime/r0drv/freebsd/time-r0drv-freebsd.c.orig 2025-08-13 19:51:51 UTC
++++ src/VBox/Runtime/r0drv/freebsd/time-r0drv-freebsd.c
+@@ -74,16 +74,23 @@ RTDECL(uint64_t) RTTimeNanoTS(void)
+
+ RTDECL(uint64_t) RTTimeNanoTS(void)
+ {
+- struct timespec tsp;
+- nanouptime(&tsp);
+- return tsp.tv_sec * RT_NS_1SEC_64
+- + tsp.tv_nsec;
++ struct bintime bt;
++ uint64_t ns;
++ binuptime(&bt);
++ ns = RT_NS_1SEC_64 * bt.sec;
++ ns += (RT_NS_1SEC_64 * (uint32_t)(bt.frac >> 32)) >> 32;
++ return ns;
+ }
+
+
+ RTDECL(uint64_t) RTTimeMilliTS(void)
+ {
+- return RTTimeNanoTS() / RT_NS_1MS;
++ struct bintime bt;
++ uint64_t ms;
++ binuptime(&bt);
++ ms = RT_MS_1SEC_64 * bt.sec;
++ ms += (RT_MS_1SEC_64 * (uint32_t)(bt.frac >> 32)) >> 32;
++ return ms;
+ }
+
+
+@@ -101,8 +108,7 @@ RTDECL(PRTTIMESPEC) RTTimeNow(PRTTIMESPEC pTime)
+
+ RTDECL(PRTTIMESPEC) RTTimeNow(PRTTIMESPEC pTime)
+ {
+- struct timespec tsp;
+- nanotime(&tsp);
+- return RTTimeSpecSetTimespec(pTime, &tsp);
++ struct timespec ts;
++ nanotime(&ts);
++ return RTTimeSpecSetTimespec(pTime, &ts);
+ }
+-
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_timer-r0drv-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_timer-r0drv-freebsd.c
new file mode 100644
index 000000000000..537199743da8
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_timer-r0drv-freebsd.c
@@ -0,0 +1,68 @@
+--- src/VBox/Runtime/r0drv/freebsd/timer-r0drv-freebsd.c.orig 2025-08-13 19:51:51 UTC
++++ src/VBox/Runtime/r0drv/freebsd/timer-r0drv-freebsd.c
+@@ -126,6 +126,7 @@ RTDECL(int) RTTimerCreateEx(PRTTIMER *ppTimer, uint64_
+ RTDECL(int) RTTimerCreateEx(PRTTIMER *ppTimer, uint64_t u64NanoInterval, uint32_t fFlags, PFNRTTIMER pfnTimer, void *pvUser)
+ {
+ *ppTimer = NULL;
++ IPRT_FREEBSD_SAVE_EFL_AC();
+
+ /*
+ * Validate flags.
+@@ -155,6 +156,7 @@ RTDECL(int) RTTimerCreateEx(PRTTIMER *ppTimer, uint64_
+ callout_init(&pTimer->Callout, CALLOUT_MPSAFE);
+
+ *ppTimer = pTimer;
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
+@@ -175,6 +177,8 @@ RTDECL(int) RTTimerDestroy(PRTTIMER pTimer)
+
+ RTDECL(int) RTTimerDestroy(PRTTIMER pTimer)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
++
+ /* It's ok to pass NULL pointer. */
+ if (pTimer == /*NIL_RTTIMER*/ NULL)
+ return VINF_SUCCESS;
+@@ -187,6 +191,8 @@ RTDECL(int) RTTimerDestroy(PRTTIMER pTimer)
+ pTimer->u32Magic++;
+ callout_stop(&pTimer->Callout);
+ RTMemFree(pTimer);
++
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
+@@ -194,6 +200,7 @@ RTDECL(int) RTTimerStart(PRTTIMER pTimer, uint64_t u64
+ RTDECL(int) RTTimerStart(PRTTIMER pTimer, uint64_t u64First)
+ {
+ struct timeval tv;
++ IPRT_FREEBSD_SAVE_EFL_AC();
+
+ if (!rtTimerIsValid(pTimer))
+ return VERR_INVALID_HANDLE;
+@@ -217,12 +224,15 @@ RTDECL(int) RTTimerStart(PRTTIMER pTimer, uint64_t u64
+ tv.tv_usec = (u64First % 1000000000) / 1000;
+ callout_reset(&pTimer->Callout, tvtohz(&tv), rtTimerFreeBSDCallback, pTimer);
+
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
+
+ RTDECL(int) RTTimerStop(PRTTIMER pTimer)
+ {
++ IPRT_FREEBSD_SAVE_EFL_AC();
++
+ if (!rtTimerIsValid(pTimer))
+ return VERR_INVALID_HANDLE;
+ if (pTimer->fSuspended)
+@@ -234,6 +244,7 @@ RTDECL(int) RTTimerStop(PRTTIMER pTimer)
+ pTimer->fSuspended = true;
+ callout_stop(&pTimer->Callout);
+
++ IPRT_FREEBSD_RESTORE_EFL_AC();
+ return VINF_SUCCESS;
+ }
+
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r3_freebsd_systemmem-freebsd.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r3_freebsd_systemmem-freebsd.cpp
new file mode 100644
index 000000000000..87ae993446a3
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r3_freebsd_systemmem-freebsd.cpp
@@ -0,0 +1,39 @@
+--- src/VBox/Runtime/r3/freebsd/systemmem-freebsd.cpp.orig 2025-04-14 17:59:18 UTC
++++ src/VBox/Runtime/r3/freebsd/systemmem-freebsd.cpp
+@@ -75,7 +75,6 @@ RTDECL(int) RTSystemQueryAvailableRam(uint64_t *pcb)
+ u_int cPagesMemFree = 0;
+ u_int cPagesMemInactive = 0;
+ u_int cPagesMemCached = 0;
+- u_int cPagesMemUsed = 0;
+ int cbPage = 0;
+ size_t cbParameter;
+ int cProcessed = 0;
+@@ -83,25 +82,23 @@ RTDECL(int) RTSystemQueryAvailableRam(uint64_t *pcb)
+ cbParameter = sizeof(cPagesMemFree);
+ if (sysctlbyname("vm.stats.vm.v_free_count", &cPagesMemFree, &cbParameter, NULL, 0))
+ rc = RTErrConvertFromErrno(errno);
+- cbParameter = sizeof(cPagesMemUsed);
+- if ( RT_SUCCESS(rc)
+- && sysctlbyname("vm.stats.vm.v_active_count", &cPagesMemUsed, &cbParameter, NULL, 0))
+- rc = RTErrConvertFromErrno(errno);
+ cbParameter = sizeof(cPagesMemInactive);
+ if ( RT_SUCCESS(rc)
+ && sysctlbyname("vm.stats.vm.v_inactive_count", &cPagesMemInactive, &cbParameter, NULL, 0))
+ rc = RTErrConvertFromErrno(errno);
++#if __FreeBSD_version < 1200016
+ cbParameter = sizeof(cPagesMemCached);
+ if ( RT_SUCCESS(rc)
+ && sysctlbyname("vm.stats.vm.v_cache_count", &cPagesMemCached, &cbParameter, NULL, 0))
+ rc = RTErrConvertFromErrno(errno);
++#endif
+ cbParameter = sizeof(cbPage);
+ if ( RT_SUCCESS(rc)
+ && sysctlbyname("hw.pagesize", &cbPage, &cbParameter, NULL, 0))
+ rc = RTErrConvertFromErrno(errno);
+
+ if (RT_SUCCESS(rc))
+- *pcb = (cPagesMemFree + cPagesMemInactive + cPagesMemCached ) * cbPage;
++ *pcb = ((uint64_t)cPagesMemFree + cPagesMemInactive + cPagesMemCached) * cbPage;
+
+ return rc;
+ }
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r3_posix_process-creation-posix.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r3_posix_process-creation-posix.cpp
new file mode 100644
index 000000000000..06bfba5d3dac
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r3_posix_process-creation-posix.cpp
@@ -0,0 +1,38 @@
+--- src/VBox/Runtime/r3/posix/process-creation-posix.cpp.orig 2025-08-13 19:51:58 UTC
++++ src/VBox/Runtime/r3/posix/process-creation-posix.cpp
+@@ -40,7 +40,7 @@
+ *********************************************************************************************************************************/
+ #define LOG_GROUP RTLOGGROUP_PROCESS
+ #include <iprt/cdefs.h>
+-#ifdef RT_OS_LINUX
++#if defined(RT_OS_LINUX) || defined(RT_OS_FREEBSD)
+ # define IPRT_WITH_DYNAMIC_CRYPT_R
+ #endif
+ #if (defined(RT_OS_LINUX) || defined(RT_OS_OS2)) && !defined(_GNU_SOURCE)
+@@ -85,7 +85,7 @@
+ # include <xlocale.h> /* for newlocale() */
+ #endif
+
+-#if defined(RT_OS_LINUX) || defined(RT_OS_OS2)
++#if defined(RT_OS_LINUX) || defined(RT_OS_OS2) || defined(RT_OS_FREEBSD)
+ /* While Solaris has posix_spawn() of course we don't want to use it as
+ * we need to have the child in a different process contract, no matter
+ * whether it is started detached or not. */
+@@ -174,7 +174,7 @@
+ # define IPRT_LIBPAM_FILE_3 "libpam.1.dylib"
+ # define IPRT_LIBPAM_FILE_3_FIRST_VER 0
+ # define IPRT_LIBPAM_FILE_3_END_VER 0
+-# elif RT_OS_LINUX
++# elif RT_OS_LINUX || RT_OS_FREEBSD
+ # define IPRT_LIBPAM_FILE_1 "libpam.so.0"
+ # define IPRT_LIBPAM_FILE_1_FIRST_VER 0
+ # define IPRT_LIBPAM_FILE_1_END_VER 0
+@@ -681,7 +681,7 @@ static int rtCheckCredentials(const char *pszUser, con
+ if (pPw->pw_passwd && *pPw->pw_passwd)
+ # endif
+ {
+-# if defined(RT_OS_LINUX) || defined(RT_OS_OS2)
++# if defined(RT_OS_LINUX) || defined(RT_OS_OS2) || defined(RT_OS_FREEBSD)
+ # ifdef IPRT_WITH_DYNAMIC_CRYPT_R
+ size_t const cbCryptData = RT_MAX(sizeof(struct crypt_data) * 2, _256K);
+ # else
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_VMM_Config.kmk b/emulators/virtualbox-ose-72/files/patch-src_VBox_VMM_Config.kmk
new file mode 100644
index 000000000000..cb294d7cd898
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_VMM_Config.kmk
@@ -0,0 +1,11 @@
+--- src/VBox/VMM/Config.kmk.orig 2025-08-13 19:52:06 UTC
++++ src/VBox/VMM/Config.kmk
+@@ -133,7 +133,7 @@ endif
+ VMM_COMMON_DEFS += VBOX_WITH_NATIVE_NEM VBOX_WITH_NEM_R0
+ endif
+ endif
+-if1of ($(KBUILD_TARGET), freebsd linux solaris) # Hosts that implements SUPR0HCPhysToVirt.
++if1of ($(KBUILD_TARGET), linux solaris) # Hosts that implements SUPR0HCPhysToVirt.
+ VMM_COMMON_DEFS += VBOX_WITH_LINEAR_HOST_PHYS_MEM
+ endif
+
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_VMM_VMMR3_PDMAsyncCompletionFileNormal.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_VMM_VMMR3_PDMAsyncCompletionFileNormal.cpp
new file mode 100644
index 000000000000..b460847d13f0
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_VMM_VMMR3_PDMAsyncCompletionFileNormal.cpp
@@ -0,0 +1,59 @@
+--- src/VBox/VMM/VMMR3/PDMAsyncCompletionFileNormal.cpp.orig 2025-08-13 19:52:13 UTC
++++ src/VBox/VMM/VMMR3/PDMAsyncCompletionFileNormal.cpp
+@@ -37,6 +37,13 @@
+ #include <iprt/string.h>
+ #include <iprt/assert.h>
+ #include <VBox/log.h>
++/* TBR: we need a complicated crawl through the data structure to get the AIO system limits
++ to check when considering growing the number of active AIO requests.... */
++/* We need the PDMInternal *before* the UVM, or it isn't visible afterwards. (src/VBox/VMM/include/PDMInternal.h) */
++#include <PDMInternal.h>
++#include <VBox/vmm/uvm.h>
++#include <VBox/vmm/vm.h>
++/* TBR: end of extra includes. */
+
+ #include "PDMAsyncCompletionFileInternal.h"
+
+@@ -1119,8 +1126,40 @@ static int pdmacFileAioMgrNormalProcessTaskList(PPDMAC
+ */
+ pdmacFileAioMgrNormalBalanceLoad(pAioMgr);
+ #else
+- /* Grow the I/O manager */
+- pAioMgr->enmState = PDMACEPFILEMGRSTATE_GROWING;
++ /* TBR: Check the global AIO system limit before growing.
++ This is the complicateds crawl through the data structure mentioned
++ near the start of this file.
++ There HAS to be a better way and better time to get this limit! */
++ PPDMASYNCCOMPLETIONEPCLASS pEpClass = NULL;
++ PCPDMASYNCCOMPLETIONEPCLASSOPS pEndpointOps = NULL;
++ PDMASYNCCOMPLETIONEPCLASSTYPE enmClassType;
++ PPDMASYNCCOMPLETIONEPCLASSFILE pEpClassFile = NULL;
++ PVM pVM = NULL;
++ PUVM pUVM = NULL;
++ unsigned int aio_system_reqests_max = RTFILEAIO_UNLIMITED_REQS;
++ pEpClass = pEndpoint->Core.pEpClass;
++ AssertMsg((NULL != pEpClass),("ep->class is NULL"));
++ pEndpointOps = pEpClass->pEndpointOps;
++ AssertMsg((NULL != pEndpointOps),("ep->class->ops is NULL"));
++ enmClassType = pEndpointOps->enmClassType;
++ AssertMsg((PDMASYNCCOMPLETIONEPCLASSTYPE_FILE == enmClassType),
++ ("ep->class->ops->type != PDMASYNCCOMPLETIONEPCLASSTYPE_FILE"));
++ pVM = pEpClass->pVM;
++ AssertMsg((NULL != pVM),("ep->class->VM is NULL"));
++ pUVM = pVM->pUVM;
++ AssertMsg((NULL != pUVM),("ep->class->VM->UVM is NULL"));
++ pEpClassFile = (PPDMASYNCCOMPLETIONEPCLASSFILE) (pUVM->pdm.s.apAsyncCompletionEndpointClass[enmClassType]);
++ AssertMsg((NULL != pEpClassFile),("ep->class->VM->UVM->pdn[globals] is NULL"));
++ aio_system_reqests_max = pEpClassFile->cReqsOutstandingMax;
++#if 0
++ /* A one time check during development to verify getting the right number. */
++ AssertMsg((256 != aio_system_reqests_max),
++ ("aio_system_reqests_max != 256 (val=%u)",aio_system_reqests_max));
++#endif
++ if (RT_UNLIKELY( aio_system_reqests_max == RTFILEAIO_UNLIMITED_REQS
++ || (pAioMgr->cRequestsActiveMax+PDMACEPFILEMGR_REQS_STEP) <= aio_system_reqests_max))
++ /* Grow the I/O manager */
++ pAioMgr->enmState = PDMACEPFILEMGRSTATE_GROWING;
+ #endif
+ }
+ }
diff --git a/emulators/virtualbox-ose-72/files/patch-src_libs_xpcom18a4_Makefile.kmk b/emulators/virtualbox-ose-72/files/patch-src_libs_xpcom18a4_Makefile.kmk
new file mode 100644
index 000000000000..95f5972ce7f8
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_libs_xpcom18a4_Makefile.kmk
@@ -0,0 +1,11 @@
+--- src/libs/xpcom18a4/Makefile.kmk.orig 2025-08-13 19:56:45 UTC
++++ src/libs/xpcom18a4/Makefile.kmk
+@@ -601,6 +601,8 @@ VBoxXPCOM_LIBS = \
+ $(VBox-xpcom-proxy_1_TARGET) \
+ $(VBox-xpcom-nspr_1_TARGET) \
+ $(VBoxXPCOMGlue_s_1_TARGET)
++VBoxXPCOM_LIBS.freebsd = \
++ pthread
+ VBoxXPCOM_LIBS.linux = \
+ pthread dl
+
diff --git a/emulators/virtualbox-ose-72/files/patch-src_libs_xpcom18a4_nsprpub_pr_src_pthreads_ptsynch.c b/emulators/virtualbox-ose-72/files/patch-src_libs_xpcom18a4_nsprpub_pr_src_pthreads_ptsynch.c
new file mode 100644
index 000000000000..6bd41290d6ee
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_libs_xpcom18a4_nsprpub_pr_src_pthreads_ptsynch.c
@@ -0,0 +1,13 @@
+--- src/libs/xpcom18a4/nsprpub/pr/src/pthreads/ptsynch.c.orig 2025-08-13 19:56:47 UTC
++++ src/libs/xpcom18a4/nsprpub/pr/src/pthreads/ptsynch.c
+@@ -45,6 +45,10 @@
+ #include <string.h>
+ #include <pthread.h>
+ #include <sys/time.h>
++#ifdef FREEBSD
++#include <sys/param.h>
++#endif
++
+ #include <errno.h>
+
+ #include <iprt/asm.h>
diff --git a/emulators/virtualbox-ose-72/files/patch-src_libs_xpcom18a4_xpcom_io_nsLocalFileUnix.h b/emulators/virtualbox-ose-72/files/patch-src_libs_xpcom18a4_xpcom_io_nsLocalFileUnix.h
new file mode 100644
index 000000000000..50f117437106
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_libs_xpcom18a4_xpcom_io_nsLocalFileUnix.h
@@ -0,0 +1,17 @@
+--- src/libs/xpcom18a4/xpcom/io/nsLocalFileUnix.h.orig 2025-08-13 19:56:51 UTC
++++ src/libs/xpcom18a4/xpcom/io/nsLocalFileUnix.h
+@@ -74,14 +74,6 @@
+ #define STATFS statfs
+ #endif
+
+-// so we can statfs on freebsd
+-#if defined(__FreeBSD__)
+- #define HAVE_SYS_STATFS_H
+- #define STATFS statfs
+- #include <sys/param.h>
+- #include <sys/mount.h>
+-#endif
+-
+ class NS_COM nsLocalFile : public nsILocalFile
+ {
+ public:
diff --git a/emulators/virtualbox-ose-72/files/pkg-message.in b/emulators/virtualbox-ose-72/files/pkg-message.in
new file mode 100644
index 000000000000..27c14e0a2e2a
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/pkg-message.in
@@ -0,0 +1,120 @@
+[
+{ type: install
+ message: <<EOM
+VirtualBox was installed.
+
+You need to load the vboxdrv kernel module via /boot/loader.conf:
+
+vboxdrv_load="YES"
+
+You also have to add all users to your vboxusers group in order to use vbox.
+
+% pw groupmod vboxusers -m jerry
+
+Reboot the machine to load the needed kernel modules.
+
+
+Bridging Support:
+=================
+
+For bridged networking please add the following line to your /etc/rc.conf:
+
+vboxnet_enable="YES"
+
+
+USB Support:
+============
+
+For USB support your user needs to be in the operator group and needs read
+and write permissions to the USB device.
+
+% pw groupmod operator -m jerry
+
+Add the following to /etc/devfs.rules (create if it doesn't exist):
+
+[system=10]
+add path 'usb/*' mode 0660 group operator
+
+To load these new rule add the following to /etc/rc.conf:
+
+devfs_system_ruleset="system"
+
+Then restart devfs to load the new rules:
+
+% /etc/rc.d/devfs restart
+
+
+Troubleshooting:
+================
+
+Running VirtualBox as non-root user may fail with a fatal error
+NS_ERROR_FACTORY_NOT_REGISTERED. In this case delete /tmp/.vbox-*-ipc file.
+
+If you experience "Network: write Failed: Cannot allocate memory" errors
+try to increase net.graph.maxdata in /boot/loader.conf
+
+If you are using AIO, then increase these limits (https://bugs.freebsd.org/168298):
+vfs.aio.max_buf_aio=8192
+vfs.aio.max_aio_queue_per_proc=65536
+vfs.aio.max_aio_per_proc=8192
+vfs.aio.max_aio_queue=65536
+To check if AIO is used use: kldstat -v | grep aio
+
+If you are experiencing VMs freezes with an error in VBox.log such as:
+"
+00:01:29.590192 AssertLogRel /usr/ports/emulators/virtualbox-ose/work/VirtualBox-6.1.44
+/src/VBox/VMM/VMMR3/PGMPhys.cpp(5148) int PGMR3PhysAllocateHandyPages(PVM): RT_SUCCESS(rc)
+00:01:29.590221 87/128: idPage=0x3d400 HCPhysGCPhys=000000027eaed000 rc=VERR_NO_MEMORY
+00:01:29.590247 Changing the VM state from 'RUNNING' to 'GURU_MEDITATION'
+00:01:29.590261 Console: Machine state changed to 'GuruMeditation'
+00:01:29.590695 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+00:01:29.590696 !!
+00:01:29.590697 !! VCPU0: Guru Meditation -8 (VERR_NO_MEMORY)
+"
+and see a lot of free RAM, then increase sysctl vm.max_user_wired
+(https://bugs.freebsd.org/252227).
+For dedicated VM servers, a good start is:
+("RAM in GB" - max(1, "RAM in GB" / 32)) * 1024*1024*1024 / PAGE_SIZE
+PAGE_SIZE on x86 is 4096.
+Examples with different RAM sizes in GB:
+ 16: ( 16-max(1, 16/32)*1024*1024*1024/4096 = 3932160 => 15GB
+ 32: ( 32-max(1, 32/32)*1024*1024*1024/4096 = 8126464 => 31GB
+ 48: ( 48-max(1, 48/32)*1024*1024*1024/4096 = 12189696 => 46.5GB
+ 64: ( 64-max(1, 64/32)*1024*1024*1024/4096 = 16252928 => 62GB
+128: (128-max(1,128/32)*1024*1024*1024/4096 = 32505856 => 124GB
+256: (256-max(1,256/32)*1024*1024*1024/4096 = 65011712 => 248GB
+
+When assigning IP addresses in host-only mode from ranges outside
+of VirtualBox's defaults, the respective ranges need to be listed
+in %%VBOX_ETC%%/networks.conf (https://bugs.freebsd.org/259399).
+
+Check the wiki page for known issues and troubleshooting:
+https://wiki.freebsd.org/VirtualBox
+
+Please report any problems to emulation@. Thanks!
+EOM
+}
+{ type: upgrade
+ maximum_version: 6.1.22
+ message: <<EOM
+The PULSEAUDIO option has been forcibly disabled since VirtualBox
+version 6.1.24 due to a bug in it preventing virtual machines
+configured to use it from starting.
+
+When upgrading from a previous version please reconfigure any virtual
+machines using the Pulseaudio host audio driver to use another
+supported one.
+EOM
+}
+{ type: upgrade
+ minimum_version: 6.1.26
+ maximum_version: 6.1.32_1
+ message: <<EOM
+To comply to hier(7) requirements, networks.conf's location changed
+to %%VBOX_ETC%%/networks.conf.
+
+In case /etc/vbox/networks.conf exists, it needs to be moved to
+%%VBOX_ETC%% and /etc/vbox should be deleted.
+EOM
+}
+]
diff --git a/emulators/virtualbox-ose-72/files/vboxheadless.in b/emulators/virtualbox-ose-72/files/vboxheadless.in
new file mode 100644
index 000000000000..5ddc5fc21d6c
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/vboxheadless.in
@@ -0,0 +1,140 @@
+#!/bin/sh
+
+# PROVIDE: vboxheadless
+# REQUIRE: LOGIN vboxnet
+# KEYWORD: shutdown
+#
+# Add the following line to /etc/rc.conf[.local] to enable vboxheadless
+#
+# vboxheadless_enable (bool): Set to "NO" by default.
+# Set it to "YES" to enable vboxheadless.
+# vboxheadless_machines (str): Space separated list of machines
+# vboxheadless_user (str): Default user account to run with.
+# (default: %%VBOXUSER%%)
+# vboxheadless_stop (str): Default stop cmd for VBoxManage controlvm.
+# (default: savestate)
+# vboxheadless_delay (int): Default startup/shutdown delay in seconds.
+# (default: 0)
+# vboxheadless_<machine>_name (str): Virtualbox machine name or UUID.
+# vboxheadless_<machine>_user (str): User account to run with.
+# vboxheadless_<machine>_flags (str): Additional flags for VBoxHeadless.
+# vboxheadless_<machine>_stop (str): Stop command for VBoxManage controlvm.
+# vboxheadless_<machine>_delay (int): Startup and shutdown delay in seconds.
+
+. /etc/rc.subr
+
+name="vboxheadless"
+rcvar=vboxheadless_enable
+rc_fast="YES"
+
+command="%%VBOXDIR%%/VBoxHeadless"
+pidbase="/var/run/${name}"
+
+start_cmd="${name}_start"
+stop_cmd="${name}_stop"
+status_cmd="${name}_status"
+
+vboxheadless_start()
+{
+ local machine mpidfile pid vmname vmuser vmflags vmdelay
+
+ echo "Starting Virtual Machines:"
+ for machine in ${vboxheadless_machines}; do
+ mpidfile="${pidbase}_${machine}.pid"
+ pid=$(check_pidfile $mpidfile $command)
+ eval vmname="\${vboxheadless_${machine}_name:-${machine}}"
+ eval vmuser="\${vboxheadless_${machine}_user:-${vboxheadless_user}}"
+ eval vmflags="\${vboxheadless_${machine}_flags:-}"
+ eval vmdelay="\${vboxheadless_${machine}_delay:-${vboxheadless_delay}}"
+
+ HOME=$(/usr/sbin/pw usershow -7 -n "${vmuser}" | /usr/bin/cut -d: -f6)
+
+ /usr/bin/printf "%25s " "${vmname}"
+
+ /usr/bin/su ${vmuser} -c "%%VBOXDIR%%/VBoxManage showvminfo '${vmname}' >/dev/null" 2>/dev/null
+
+ if [ $? != 0 ]; then
+ echo "Unknown machine"
+ continue
+ fi
+
+ if [ -n "${pid}" ]; then
+ echo "Already running? (pid=${pid})"
+ continue
+ fi
+
+ /bin/sleep ${vmdelay}
+ /usr/bin/install -o ${vmuser} -g %%VBOXGROUP%% -m 644 /dev/null ${mpidfile}
+ /usr/sbin/daemon -f -p ${mpidfile} -u ${vmuser} ${command} --startvm "${vmname}" ${vmflags}
+ echo "Started"
+ done
+}
+
+vboxheadless_stop()
+{
+ local machine mpidfile pid pids vmname vmuser vmstop vmdelay
+
+ echo "Saving states for Virtual Machines:"
+ for machine in ${vboxheadless_machines}; do
+ mpidfile="${pidbase}_${machine}.pid"
+ pid=$(check_pidfile $mpidfile $command)
+ eval vmname="\${vboxheadless_${machine}_name:-${machine}}"
+ eval vmuser="\${vboxheadless_${machine}_user:-${vboxheadless_user}}"
+ eval vmstop="\${vboxheadless_${machine}_stop:-${vboxheadless_stop}}"
+ eval vmdelay="\${vboxheadless_${machine}_delay:-${vboxheadless_delay}}"
+
+ /usr/bin/printf "%25s " "${vmname}"
+
+ if [ -n "${pid}" ]; then
+ pids="${pids} ${pid}"
+ /bin/sleep ${vmdelay}
+ /usr/bin/su ${vmuser} -c "%%VBOXDIR%%/VBoxManage controlvm '${vmname}' ${vmstop} >/dev/null &" 2>/dev/null
+ fi
+ done
+ if [ -n "${pids}" ]; then
+ wait_for_pids $pids >/dev/null
+ echo "Stopped"
+ else
+ echo "Not running?"
+ fi
+}
+
+vboxheadless_status()
+{
+ local machine mpidfile pid vmname vmuser
+
+ /usr/bin/printf "%25s %s\n" "Machine" "Status"
+ /usr/bin/printf "%25s %s\n" "-------------------------" "------------"
+
+ for machine in ${vboxheadless_machines}; do
+ mpidfile="${pidbase}_${machine}.pid"
+ pid=$(check_pidfile $mpidfile $command)
+ eval vmname="\${vboxheadless_${machine}_name:-${machine}}"
+ eval vmuser="\${vboxheadless_${machine}_user:-${vboxheadless_user}}"
+
+ /usr/bin/su ${vmuser} -c "%%VBOXDIR%%/VBoxManage showvminfo '${vmname}' >/dev/null" 2>/dev/null
+
+ if [ $? != 0 ]; then
+ /usr/bin/printf "%20s %s\n" "${vmname}" "Unknown Machine"
+ elif [ -n "${pid}" ]; then
+ /usr/bin/printf "%25s %s\n" "${vmname}" "Running"
+ else
+ /usr/bin/printf "%25s %s\n" "${vmname}" "Powered Off"
+ fi
+ done
+}
+
+load_rc_config $name
+
+: ${vboxheadless_enable="NO"}
+: ${vboxheadless_user="%%VBOXUSER%%"}
+: ${vboxheadless_stop="savestate"}
+: ${vboxheadless_delay="0"}
+
+cmd_arg="$1" ; shift
+
+if [ -n "$*" ]; then
+ vboxheadless_machines="$*"
+fi
+
+run_rc_command "${cmd_arg}"
diff --git a/emulators/virtualbox-ose-72/files/vboxinit.in b/emulators/virtualbox-ose-72/files/vboxinit.in
new file mode 100644
index 000000000000..9895da9e362e
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/vboxinit.in
@@ -0,0 +1,91 @@
+#!/bin/sh
+
+# PROVIDE: vboxinit
+# REQUIRE: LOGIN vboxnet vboxwebsrv sshd
+# KEYWORD: shutdown
+#
+# Add the following line to /etc/rc.conf[.local] to enable vboxinit
+#
+# vboxinit_enable (bool): Set to "NO" by default.
+# Set it to "YES" to enable vboxinit.
+# stop and faststop are always enabled.
+# vboxinit_user (str): Default user account to run with.
+# (default: %%VBOXUSER%%)
+# vboxinit_home (str): Default home directory to run with.
+# (default: home of user ${vboxinit_user}
+# vboxinit_stop (str): Default stop cmd for VBoxManage controlvm.
+# (default: savestate)
+# vboxinit_start_delay (int): Default startup delay in seconds.
+# (default: 0)
+# vboxinit_stop_delay (int): Default shutdown delay in seconds.
+# (default: 0)
+#
+# Set the "Startup Mode" to "Automatic" for the virtual machine in
+# phpvirtualbox to automatically start the virtual machine during OS boot.
+#
+
+. /etc/rc.subr
+
+name="vboxinit"
+rcvar="${name}_enable"
+
+start_cmd="${name}_start"
+stop_cmd="${name}_stop"
+status_cmd="${name}_status"
+restart_cmd="${name}_restart"
+
+vboxinit_start()
+{
+ # Get a list of all machines with autorun enabled in phpvirtualbox
+ ${su_command} "${command} list vms | /usr/bin/tr -d '{}\"'" | /usr/bin/sort | while read VMNAME UUID; do
+ STARTUP=$(${su_command} "${command} getextradata ${UUID} 'pvbx/startupMode'" | /usr/bin/cut -d' ' -f2)
+ if [ "${STARTUP}" == "auto" ]; then
+ echo "${name}: starting machine ${VMNAME} ..."
+ ${su_command} "${command} startvm ${UUID} --type headless"
+ sleep "${vboxinit_start_delay}"
+ fi
+ done
+}
+
+vboxinit_stop()
+{
+ # Get all running machines
+ ${su_command} "${command} list runningvms | /usr/bin/tr -d '{}\"'" | /usr/bin/sort -r | while read VMNAME UUID; do
+ echo "${name}: stopping machine ${VMNAME} with action '${vboxinit_stop}' ..."
+ ${su_command} "${command} controlvm ${UUID} ${vboxinit_stop}"
+ sleep "${vboxinit_stop_delay}"
+ done
+}
+
+vboxinit_status()
+{
+ # List all running machines
+ ${su_command} "${command} list runningvms"
+}
+
+vboxinit_restart()
+{
+ vboxinit_stop
+ vboxinit_start
+}
+
+load_rc_config $name
+
+: ${vboxinit_enable="NO"}
+: ${vboxinit_user="%%VBOXUSER%%"}
+: ${vboxinit_home=$(/usr/sbin/pw usershow -7 -n "${vboxinit_user}" | /usr/bin/cut -d: -f6)}
+: ${vboxinit_stop="savestate"}
+: ${vboxinit_start_delay="1"}
+: ${vboxinit_stop_delay="0"}
+HOME=${vboxinit_home}
+USER=${vboxinit_user}
+export HOME USER
+
+command="%%VBOXDIR%%/VBoxManage"
+su_command="/usr/bin/su -m ${vboxinit_user} -c"
+
+if [ "x$1" = "xstop" ] || [ "x$1" = "xfaststop" ]; then
+ vboxinit_enable="YES"
+fi
+
+run_rc_command "$1"
diff --git a/emulators/virtualbox-ose-72/files/vboxwatchdog.in b/emulators/virtualbox-ose-72/files/vboxwatchdog.in
new file mode 100644
index 000000000000..c21bc03b3523
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/vboxwatchdog.in
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+# PROVIDE: vboxwatchdog
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Add the following line to /etc/rc.conf[.local] to enable vboxwatchdog
+#
+# vboxwatchdog_enable (bool): Set to "NO" by default.
+# Set it to "YES" to enable vboxwatchdog.
+# vboxwatchdog_user (str): User account to run with.
+# vboxwatchdog_flags (str): Custom flags for VBoxWatchdog.
+
+. /etc/rc.subr
+
+name=vboxwatchdog
+rcvar=vboxwatchdog_enable
+
+command="%%VBOXDIR%%/VBoxBalloonCtrl"
+pidfile="/var/run/${name}.pid"
+
+start_cmd="${name}_start"
+
+vboxwatchdog_start()
+{
+ local pid
+
+ HOME=$(/usr/sbin/pw usershow -7 -n "${vboxwatchdog_user}" | /usr/bin/cut -d: -f6)
+ pid=$(check_pidfile $pidfile $command)
+
+ if [ -n "${pid}" ]; then
+ echo "${name} already running? (pid=${pid})."
+ return 1
+ fi
+
+ # prevent inheriting this setting to VBoxSVC
+ unset VBOX_RELEASE_LOG_DEST
+
+ echo -n "Starting ${name}"
+ /usr/bin/install -o ${vboxwatchdog_user} -g %%VBOXGROUP%% -m 644 /dev/null ${pidfile}
+ /usr/sbin/daemon -f -p ${pidfile} -u ${vboxwatchdog_user} ${command} ${vboxwatchdog_flags}
+ echo '.'
+}
+
+load_rc_config $name
+
+: ${vboxwatchdog_enable="NO"}
+: ${vboxwatchdog_user="%%VBOXUSER%%"}
+: ${vboxwatchdog_flags=""}
+
+run_rc_command "$1"
diff --git a/emulators/virtualbox-ose-72/files/vboxwebsrv.in b/emulators/virtualbox-ose-72/files/vboxwebsrv.in
new file mode 100644
index 000000000000..a7e1e38e3090
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/vboxwebsrv.in
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+# PROVIDE: vboxwebsrv
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Add the following line to /etc/rc.conf[.local] to enable vboxwebsrv
+#
+# vboxwebsrv_enable (bool): Set to "NO" by default.
+# Set it to "YES" to enable vboxwebsrv.
+# vboxwebsrv_user (str): User account to run with.
+# vboxwebsrv_flags (str): Custom flags for vboxwebsrv.
+
+. /etc/rc.subr
+
+name=vboxwebsrv
+rcvar=vboxwebsrv_enable
+
+command="%%VBOXDIR%%/vboxwebsrv"
+pidfile="/var/run/${name}.pid"
+
+start_cmd="${name}_start"
+
+vboxwebsrv_start()
+{
+ local pid
+
+ HOME=$(/usr/sbin/pw usershow -7 -n "${vboxwebsrv_user}" | /usr/bin/cut -d: -f6)
+ pid=$(check_pidfile $pidfile $command)
+
+ if [ -n "${pid}" ]; then
+ echo "${name} already running? (pid=${pid})."
+ return 1
+ fi
+
+ echo -n "Starting ${name}"
+ /usr/bin/install -o ${vboxwebsrv_user} -g %%VBOXGROUP%% -m 644 /dev/null ${pidfile}
+ /usr/sbin/daemon -f -p ${pidfile} -u ${vboxwebsrv_user} ${command} ${vboxwebsrv_flags}
+ echo '.'
+}
+
+load_rc_config $name
+
+: ${vboxwebsrv_enable="NO"}
+: ${vboxwebsrv_user="%%VBOXWSUSER%%"}
+
+run_rc_command "$1"
diff --git a/emulators/virtualbox-ose-72/files/virtualbox.desktop b/emulators/virtualbox-ose-72/files/virtualbox.desktop
new file mode 100644
index 000000000000..b0d09e2128b7
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/virtualbox.desktop
@@ -0,0 +1,17 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=1.0
+Name=Oracle VM VirtualBox
+GenericName=Virtual Machine
+Type=Application
+Exec=VirtualBox
+TryExec=VirtualBox
+Icon=VBox
+Categories=Emulator;System;
+Comment=Run several virtual systems on a single host computer
+Comment[de]=Windows und andere Betriebssysteme unter FreeBSD ausführen
+Comment[it]=Esegui più macchine virtuali su un singolo computer
+Comment[ko]=가상 머신
+Comment[pl]=Uruchamianie wielu systemów wirtualnych na jednym komputerze gospodarza
+Comment[ru]=Запуск нескольких виртуальных машин на одном компьютере
+Comment[sv]=Kör flera virtuella system på en enda värddator
diff --git a/emulators/virtualbox-ose-72/pkg-descr b/emulators/virtualbox-ose-72/pkg-descr
new file mode 100644
index 000000000000..1ba975e84e68
--- /dev/null
+++ b/emulators/virtualbox-ose-72/pkg-descr
@@ -0,0 +1,8 @@
+Oracle VM VirtualBox is a hosted hypervisor for x86 virtualisation.
+Supported guests include BSD, Haiku, Linux, OS/2, ReactOS, Solaris and
+Windows.
+
+Guest Additions are available from: emulators/virtualbox-ose-additions
+
+For the Extension Pack: FreeBSD is not a supported host platform.
+Installation of the Pack will not extend the feature set.
diff --git a/emulators/virtualbox-ose-72/pkg-plist b/emulators/virtualbox-ose-72/pkg-plist
new file mode 100644
index 000000000000..d2dfcb82d4d5
--- /dev/null
+++ b/emulators/virtualbox-ose-72/pkg-plist
@@ -0,0 +1,452 @@
+bin/VBoxAutostart
+bin/VBoxBalloonCtrl
+bin/VBoxBugReport
+bin/VBoxHeadless
+bin/VBoxManage
+bin/VBoxVRDP
+%%QT%%bin/VirtualBox
+%%QT%%bin/VirtualBoxVM
+bin/vboxautostart
+bin/vboxballoonctrl
+bin/vboxbugreport
+bin/vboxheadless
+%%VBOXIMG%%bin/vboximg-mount
+bin/vboxmanage
+%%WEBSERVICE%%bin/vboxwebsrv
+%%QT%%bin/virtualbox
+%%QT%%bin/virtualboxvm
+include/virtualbox/VirtualBox_XPCOM.h
+include/virtualbox/ipcIClientObserver.h
+include/virtualbox/ipcIDConnectService.h
+include/virtualbox/ipcIMessageObserver.h
+include/virtualbox/ipcIService.h
+include/virtualbox/ipcd/ipcCID.h
+include/virtualbox/ipcd/ipcdclient.h
+include/virtualbox/nsIArray.h
+include/virtualbox/nsIAtom.h
+include/virtualbox/nsIAtomService.h
+include/virtualbox/nsIBinaryInputStream.h
+include/virtualbox/nsIBinaryOutputStream.h
+include/virtualbox/nsICategoryManager.h
+include/virtualbox/nsIClassInfo.h
+include/virtualbox/nsICollection.h
+include/virtualbox/nsIComponentLoader.h
+include/virtualbox/nsIComponentLoaderManager.h
+include/virtualbox/nsIComponentManager.h
+include/virtualbox/nsIComponentManagerObsolete.h
+include/virtualbox/nsIComponentRegistrar.h
+include/virtualbox/nsIDebug.h
+include/virtualbox/nsIDirectoryEnumerator.h
+include/virtualbox/nsIDirectoryService.h
+include/virtualbox/nsIEnumerator.h
+include/virtualbox/nsIErrorService.h
+include/virtualbox/nsIEventQueue.h
+include/virtualbox/nsIEventQueueService.h
+include/virtualbox/nsIEventTarget.h
+include/virtualbox/nsIException.h
+include/virtualbox/nsIExceptionService.h
+include/virtualbox/nsIFactory.h
+include/virtualbox/nsIFile.h
+include/virtualbox/nsIHashable.h
+include/virtualbox/nsIInputStream.h
+include/virtualbox/nsIInterfaceInfo.h
+include/virtualbox/nsIInterfaceInfoManager.h
+include/virtualbox/nsIInterfaceRequestor.h
+include/virtualbox/nsILocalFile.h
+include/virtualbox/nsILocalFileMac.h
+include/virtualbox/nsIModule.h
+include/virtualbox/nsINativeComponentLoader.h
+include/virtualbox/nsIObjectInputStream.h
+include/virtualbox/nsIObjectOutputStream.h
+include/virtualbox/nsIObserver.h
+include/virtualbox/nsIObserverService.h
+include/virtualbox/nsIOutputStream.h
+include/virtualbox/nsIProgrammingLanguage.h
+include/virtualbox/nsIProperties.h
+include/virtualbox/nsIProxyObjectManager.h
+include/virtualbox/nsIRunnable.h
+include/virtualbox/nsISerializable.h
+include/virtualbox/nsIServiceManager.h
+include/virtualbox/nsISimpleEnumerator.h
+include/virtualbox/nsIStringEnumerator.h
+include/virtualbox/nsISupports.h
+include/virtualbox/nsISupportsArray.h
+include/virtualbox/nsISupportsIterators.h
+include/virtualbox/nsISupportsPrimitives.h
+include/virtualbox/nsITraceRefcnt.h
+include/virtualbox/nsIVariant.h
+include/virtualbox/nsIWeakReference.h
+include/virtualbox/nsIXPTLoader.h
+include/virtualbox/nsprpub/nspr.h
+include/virtualbox/nsprpub/plarena.h
+include/virtualbox/nsprpub/plarenas.h
+include/virtualbox/nsprpub/plhash.h
+include/virtualbox/nsprpub/prbit.h
+include/virtualbox/nsprpub/prcpucfg.h
+include/virtualbox/nsprpub/prlong.h
+include/virtualbox/nsprpub/prmem.h
+include/virtualbox/nsprpub/prmon.h
+include/virtualbox/nsprpub/prtime.h
+include/virtualbox/nsprpub/prtypes.h
+include/virtualbox/nsrootidl.h
+include/virtualbox/string/nsAString.h
+include/virtualbox/string/nsAlgorithm.h
+include/virtualbox/string/nsCharTraits.h
+include/virtualbox/string/nsDependentString.h
+include/virtualbox/string/nsDependentSubstring.h
+include/virtualbox/string/nsEmbedString.h
+include/virtualbox/string/nsLiteralString.h
+include/virtualbox/string/nsObsoleteAString.h
+include/virtualbox/string/nsPrintfCString.h
+include/virtualbox/string/nsPromiseFlatString.h
+include/virtualbox/string/nsReadableUtils.h
+include/virtualbox/string/nsString.h
+include/virtualbox/string/nsStringAPI.h
+include/virtualbox/string/nsStringFwd.h
+include/virtualbox/string/nsStringIterator.h
+include/virtualbox/string/nsSubstring.h
+include/virtualbox/string/nsSubstringTuple.h
+include/virtualbox/string/nsTAString.h
+include/virtualbox/string/nsTDependentString.h
+include/virtualbox/string/nsTDependentSubstring.h
+include/virtualbox/string/nsTObsoleteAString.h
+include/virtualbox/string/nsTPromiseFlatString.h
+include/virtualbox/string/nsTString.h
+include/virtualbox/string/nsTSubstring.h
+include/virtualbox/string/nsTSubstringTuple.h
+include/virtualbox/string/nsUTF8Utils.h
+include/virtualbox/string/nsXPIDLString.h
+include/virtualbox/string/string-template-def-char.h
+include/virtualbox/string/string-template-def-unichar.h
+include/virtualbox/string/string-template-undef.h
+include/virtualbox/xpcom/nsAgg.h
+include/virtualbox/xpcom/nsAppDirectoryServiceDefs.h
+include/virtualbox/xpcom/nsArray.h
+include/virtualbox/xpcom/nsArrayEnumerator.h
+include/virtualbox/xpcom/nsAtomService.h
+include/virtualbox/xpcom/nsAutoLock.h
+include/virtualbox/xpcom/nsAutoPtr.h
+include/virtualbox/xpcom/nsBaseHashtable.h
+include/virtualbox/xpcom/nsCOMArray.h
+include/virtualbox/xpcom/nsCOMPtr.h
+include/virtualbox/xpcom/nsCRT.h
+include/virtualbox/xpcom/nsCategoryManagerUtils.h
+include/virtualbox/xpcom/nsClassHashtable.h
+include/virtualbox/xpcom/nsComponentManagerObsolete.h
+include/virtualbox/xpcom/nsComponentManagerUtils.h
+include/virtualbox/xpcom/nsDataHashtable.h
+include/virtualbox/xpcom/nsDebug.h
+include/virtualbox/xpcom/nsDebugImpl.h
+include/virtualbox/xpcom/nsDeque.h
+include/virtualbox/xpcom/nsDirectoryService.h
+include/virtualbox/xpcom/nsDirectoryServiceDefs.h
+include/virtualbox/xpcom/nsDirectoryServiceUtils.h
+include/virtualbox/xpcom/nsDoubleHashtable.h
+include/virtualbox/xpcom/nsEnumeratorUtils.h
+include/virtualbox/xpcom/nsError.h
+include/virtualbox/xpcom/nsEventQueueUtils.h
+include/virtualbox/xpcom/nsGenericFactory.h
+include/virtualbox/xpcom/nsHashKeys.h
+include/virtualbox/xpcom/nsHashSets.h
+include/virtualbox/xpcom/nsHashtable.h
+include/virtualbox/xpcom/nsID.h
+include/virtualbox/xpcom/nsIGenericFactory.h
+include/virtualbox/xpcom/nsIID.h
+include/virtualbox/xpcom/nsIInterfaceRequestorUtils.h
+include/virtualbox/xpcom/nsIServiceManagerObsolete.h
+include/virtualbox/xpcom/nsIServiceManagerUtils.h
+include/virtualbox/xpcom/nsISupportsBase.h
+include/virtualbox/xpcom/nsISupportsImpl.h
+include/virtualbox/xpcom/nsISupportsUtils.h
+include/virtualbox/xpcom/nsIWeakReferenceUtils.h
+include/virtualbox/xpcom/nsInt64.h
+include/virtualbox/xpcom/nsInterfaceHashtable.h
+include/virtualbox/xpcom/nsLocalFile.h
+include/virtualbox/xpcom/nsLocalFileUnix.h
+include/virtualbox/xpcom/nsMemory.h
+include/virtualbox/xpcom/nsModule.h
+include/virtualbox/xpcom/nsNativeCharsetUtils.h
+include/virtualbox/xpcom/nsNativeComponentLoader.h
+include/virtualbox/xpcom/nsObserverService.h
+include/virtualbox/xpcom/nsObsoleteModuleLoading.h
+include/virtualbox/xpcom/nsProxiedService.h
+include/virtualbox/xpcom/nsProxyEvent.h
+include/virtualbox/xpcom/nsProxyRelease.h
+include/virtualbox/xpcom/nsRefPtrHashtable.h
+include/virtualbox/xpcom/nsStaticAtom.h
+include/virtualbox/xpcom/nsStaticComponent.h
+include/virtualbox/xpcom/nsStringEnumerator.h
+include/virtualbox/xpcom/nsStringIO.h
+include/virtualbox/xpcom/nsSupportsArray.h
+include/virtualbox/xpcom/nsSupportsPrimitives.h
+include/virtualbox/xpcom/nsTHashtable.h
+include/virtualbox/xpcom/nsTraceRefcnt.h
+include/virtualbox/xpcom/nsTraceRefcntImpl.h
+include/virtualbox/xpcom/nsVariant.h
+include/virtualbox/xpcom/nsVoidArray.h
+include/virtualbox/xpcom/nsWeakPtr.h
+include/virtualbox/xpcom/nsWeakReference.h
+include/virtualbox/xpcom/nsXPCOM.h
+include/virtualbox/xpcom/nsXPCOMCID.h
+include/virtualbox/xpcom/nsXPCOMGlue.h
+include/virtualbox/xpcom/nscore.h
+include/virtualbox/xpcom/pldhash.h
+include/virtualbox/xpcom/plevent.h
+include/virtualbox/xpcom/xcDll.h
+include/virtualbox/xpcom/xpcom-config.h
+include/virtualbox/xpcom/xpt_arena.h
+include/virtualbox/xpcom/xpt_struct.h
+include/virtualbox/xpcom/xpt_xdr.h
+include/virtualbox/xpcom/xptcall.h
+include/virtualbox/xpcom/xptcstubsdecl.inc
+include/virtualbox/xpcom/xptcstubsdef.inc
+include/virtualbox/xpcom/xptinfo.h
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/vboxapi-1-py%%PYTHON_VER%%.egg-info/PKG-INFO
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/vboxapi-1-py%%PYTHON_VER%%.egg-info/SOURCES.txt
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/vboxapi-1-py%%PYTHON_VER%%.egg-info/dependency_links.txt
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/vboxapi-1-py%%PYTHON_VER%%.egg-info/requires.txt
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/vboxapi-1-py%%PYTHON_VER%%.egg-info/top_level.txt
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/vboxapi/VirtualBox_constants.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/vboxapi%%PYTHON_PYCDIR%%VirtualBox_constants%%PYTHON_PYCEXT%%
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/vboxapi/__init__.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/vboxapi%%PYTHON_PYCDIR%%__init__%%PYTHON_PYCEXT%%
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/__init__.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom%%PYTHON_PYCDIR%%__init__%%PYTHON_PYCEXT%%
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/components.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom%%PYTHON_PYCDIR%%components%%PYTHON_PYCEXT%%
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/nsError.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom%%PYTHON_PYCDIR%%nsError%%PYTHON_PYCEXT%%
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/primitives.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom%%PYTHON_PYCDIR%%primitives%%PYTHON_PYCEXT%%
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/vboxxpcom.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom%%PYTHON_PYCDIR%%vboxxpcom%%PYTHON_PYCEXT%%
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/xpcom_consts.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom%%PYTHON_PYCDIR%%xpcom_consts%%PYTHON_PYCEXT%%
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/xpt.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom%%PYTHON_PYCDIR%%xpt%%PYTHON_PYCEXT%%
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/client/__init__.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/client%%PYTHON_PYCDIR%%__init__%%PYTHON_PYCEXT%%
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/server/__init__.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/server%%PYTHON_PYCDIR%%__init__%%PYTHON_PYCEXT%%
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/server/enumerator.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/server%%PYTHON_PYCDIR%%enumerator%%PYTHON_PYCEXT%%
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/server/factory.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/server%%PYTHON_PYCDIR%%factory%%PYTHON_PYCEXT%%
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/server/loader.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/server%%PYTHON_PYCDIR%%loader%%PYTHON_PYCEXT%%
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/server/module.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/server%%PYTHON_PYCDIR%%module%%PYTHON_PYCEXT%%
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/server/policy.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/xpcom/server%%PYTHON_PYCDIR%%policy%%PYTHON_PYCEXT%%
+%%QT%%lib/virtualbox/DbgPlugInDiggers.so
+lib/virtualbox/VBox.sh
+lib/virtualbox/VBoxAuth.so
+lib/virtualbox/VBoxAuthSimple.so
+lib/virtualbox/VBoxAutostart
+lib/virtualbox/VBoxBalloonCtrl
+lib/virtualbox/VBoxBugReport
+lib/virtualbox/VBoxDD.so
+lib/virtualbox/VBoxDD2.so
+lib/virtualbox/VBoxDDR0.r0
+lib/virtualbox/VBoxDDU.so
+%%QT%%lib/virtualbox/UICommon.so
+%%QT%%lib/virtualbox/VBoxDbg.so
+%%QT%%lib/virtualbox/VBoxDragAndDropSvc.so
+lib/virtualbox/VBoxEFI-amd64.fd
+lib/virtualbox/VBoxEFI-arm32.fd
+lib/virtualbox/VBoxEFI-arm64.fd
+lib/virtualbox/VBoxEFI-x86.fd
+lib/virtualbox/VBoxExtPackHelperApp
+lib/virtualbox/VBoxGuestControlSvc.so
+lib/virtualbox/VBoxGuestPropSvc.so
+@(root,%%VBOXGROUP%%,4510) lib/virtualbox/VBoxHeadless
+lib/virtualbox/VBoxHeadless.so
+lib/virtualbox/VBoxHostChannel.so
+%%QT%%lib/virtualbox/VBoxKeyboard.so
+lib/virtualbox/VBoxManage
+@(root,%%VBOXGROUP%%,4510) lib/virtualbox/VBoxNetAdpCtl
+@(root,%%VBOXGROUP%%,4510) lib/virtualbox/VBoxNetDHCP
+lib/virtualbox/VBoxNetDHCP.so
+@(root,%%VBOXGROUP%%,4510) lib/virtualbox/VBoxNetNAT
+lib/virtualbox/VBoxNetNAT.so
+%%PYTHON%%lib/virtualbox/VBoxPython3.so
+%%PYTHON%%lib/virtualbox/VBoxPython3m.so
+lib/virtualbox/VBoxRT.so
+lib/virtualbox/VBoxSVC
+%%X11%%lib/virtualbox/VBoxSVGA3D.so
+lib/virtualbox/VBoxSharedClipboard.so
+lib/virtualbox/VBoxSharedFolders.so
+lib/virtualbox/VBoxTraceLogDecoders.so
+lib/virtualbox/VBoxVMM.so
+lib/virtualbox/VBoxVMMArm.so
+lib/virtualbox/VBoxVMMPreload.so
+lib/virtualbox/VBoxXPCOM.so
+lib/virtualbox/VBoxXPCOMC.so
+lib/virtualbox/VBoxXPCOMIPCD.so
+lib/virtualbox/VMMR0.r0
+%%QT%%lib/virtualbox/VirtualBox
+%%QT%%@(root,%%VBOXGROUP%%,4510) lib/virtualbox/VirtualBoxVM
+%%QT%%lib/virtualbox/VirtualBoxVM.so
+%%SDK%%lib/virtualbox/sdk
+%%VBOXIMG%%lib/virtualbox/vboximg-mount
+%%WEBSERVICE%%lib/virtualbox/vboxwebsrv
+%%WEBSERVICE%%lib/virtualbox/webtest
+%%VNC%%lib/virtualbox/ExtensionPacks/VNC/ExtPack-license.html
+%%VNC%%lib/virtualbox/ExtensionPacks/VNC/ExtPack-license.rtf
+%%VNC%%lib/virtualbox/ExtensionPacks/VNC/ExtPack-license.txt
+%%VNC%%lib/virtualbox/ExtensionPacks/VNC/ExtPack.xml
+%%VNC%%lib/virtualbox/ExtensionPacks/VNC/%%ARCH%%/VBoxVNC.so
+%%VNC%%lib/virtualbox/ExtensionPacks/VNC/%%ARCH%%/VBoxVNCMain.so
+%%GUESTADDITIONS%%lib/virtualbox/additions/VBoxGuestAdditions.iso
+%%GUESTADDITIONS%%lib/virtualbox/additions/VBoxGuestAdditions_%%GUEST_VER%%.iso
+lib/virtualbox/components/VBoxC.so
+lib/virtualbox/components/VBoxSVCM.so
+lib/virtualbox/components/VBoxXPCOMBase.xpt
+lib/virtualbox/components/VBoxXPCOMIPCC.so
+lib/virtualbox/components/VirtualBox_XPCOM.xpt
+%%QT%%share/applications/virtualbox.desktop
+%%DOCS%%%%DOCSDIR%%/UserManual.pdf
+%%QT%%share/pixmaps/VBox.png
+%%DATADIR%%/idl/VirtualBox_XPCOM.idl
+%%DATADIR%%/idl/ipcIClientObserver.idl
+%%DATADIR%%/idl/ipcIDConnectService.idl
+%%DATADIR%%/idl/ipcIMessageObserver.idl
+%%DATADIR%%/idl/ipcIService.idl
+%%DATADIR%%/idl/nsIArray.idl
+%%DATADIR%%/idl/nsIAtom.idl
+%%DATADIR%%/idl/nsIAtomService.idl
+%%DATADIR%%/idl/nsIBinaryInputStream.idl
+%%DATADIR%%/idl/nsIBinaryOutputStream.idl
+%%DATADIR%%/idl/nsICategoryManager.idl
+%%DATADIR%%/idl/nsIClassInfo.idl
+%%DATADIR%%/idl/nsICollection.idl
+%%DATADIR%%/idl/nsIComponentLoader.idl
+%%DATADIR%%/idl/nsIComponentLoaderManager.idl
+%%DATADIR%%/idl/nsIComponentManager.idl
+%%DATADIR%%/idl/nsIComponentManagerObsolete.idl
+%%DATADIR%%/idl/nsIComponentRegistrar.idl
+%%DATADIR%%/idl/nsIDebug.idl
+%%DATADIR%%/idl/nsIDirectoryEnumerator.idl
+%%DATADIR%%/idl/nsIDirectoryService.idl
+%%DATADIR%%/idl/nsIEnumerator.idl
+%%DATADIR%%/idl/nsIErrorService.idl
+%%DATADIR%%/idl/nsIEventQueue.idl
+%%DATADIR%%/idl/nsIEventQueueService.idl
+%%DATADIR%%/idl/nsIEventTarget.idl
+%%DATADIR%%/idl/nsIException.idl
+%%DATADIR%%/idl/nsIExceptionService.idl
+%%DATADIR%%/idl/nsIFactory.idl
+%%DATADIR%%/idl/nsIFile.idl
+%%DATADIR%%/idl/nsIHashable.idl
+%%DATADIR%%/idl/nsIInputStream.idl
+%%DATADIR%%/idl/nsIInterfaceInfo.idl
+%%DATADIR%%/idl/nsIInterfaceInfoManager.idl
+%%DATADIR%%/idl/nsIInterfaceRequestor.idl
+%%DATADIR%%/idl/nsILocalFile.idl
+%%DATADIR%%/idl/nsILocalFileMac.idl
+%%DATADIR%%/idl/nsIModule.idl
+%%DATADIR%%/idl/nsINativeComponentLoader.idl
+%%DATADIR%%/idl/nsIObjectInputStream.idl
+%%DATADIR%%/idl/nsIObjectOutputStream.idl
+%%DATADIR%%/idl/nsIObserver.idl
+%%DATADIR%%/idl/nsIObserverService.idl
+%%DATADIR%%/idl/nsIOutputStream.idl
+%%DATADIR%%/idl/nsIProgrammingLanguage.idl
+%%DATADIR%%/idl/nsIProperties.idl
+%%DATADIR%%/idl/nsIProxyObjectManager.idl
+%%DATADIR%%/idl/nsIRunnable.idl
+%%DATADIR%%/idl/nsISerializable.idl
+%%DATADIR%%/idl/nsIServiceManager.idl
+%%DATADIR%%/idl/nsISimpleEnumerator.idl
+%%DATADIR%%/idl/nsIStringEnumerator.idl
+%%DATADIR%%/idl/nsISupports.idl
+%%DATADIR%%/idl/nsISupportsArray.idl
+%%DATADIR%%/idl/nsISupportsIterators.idl
+%%DATADIR%%/idl/nsISupportsPrimitives.idl
+%%DATADIR%%/idl/nsITraceRefcnt.idl
+%%DATADIR%%/idl/nsIVariant.idl
+%%DATADIR%%/idl/nsIWeakReference.idl
+%%DATADIR%%/idl/nsIXPTLoader.idl
+%%DATADIR%%/idl/nsrootidl.idl
+%%NLS%%%%DATADIR%%/nls/VirtualBox_bg.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_ca.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_ca_VA.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_cs.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_da.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_de.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_el.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_en.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_es.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_eu.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_fa.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_fi.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_fr.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_gl.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_he.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_hr_HR.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_hu.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_id.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_it.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_ja.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_ka.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_km_KH.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_ko.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_lt.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_nl.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_pl.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_pt.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_pt_BR.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_ro.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_ru.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_sk.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_sl.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_sr.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_sv.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_th.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_tr.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_uk.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_zh_CN.qm
+%%NLS%%%%DATADIR%%/nls/VirtualBox_zh_TW.qm
+%%NLS%%%%DATADIR%%/nls/qt_bg.qm
+%%NLS%%%%DATADIR%%/nls/qt_ca.qm
+%%NLS%%%%DATADIR%%/nls/qt_ca_VA.qm
+%%NLS%%%%DATADIR%%/nls/qt_cs.qm
+%%NLS%%%%DATADIR%%/nls/qt_da.qm
+%%NLS%%%%DATADIR%%/nls/qt_de.qm
+%%NLS%%%%DATADIR%%/nls/qt_el.qm
+%%NLS%%%%DATADIR%%/nls/qt_en.qm
+%%NLS%%%%DATADIR%%/nls/qt_es.qm
+%%NLS%%%%DATADIR%%/nls/qt_eu.qm
+%%NLS%%%%DATADIR%%/nls/qt_fa.qm
+%%NLS%%%%DATADIR%%/nls/qt_fi.qm
+%%NLS%%%%DATADIR%%/nls/qt_fr.qm
+%%NLS%%%%DATADIR%%/nls/qt_gl.qm
+%%NLS%%%%DATADIR%%/nls/qt_he.qm
+%%NLS%%%%DATADIR%%/nls/qt_hr_HR.qm
+%%NLS%%%%DATADIR%%/nls/qt_hu.qm
+%%NLS%%%%DATADIR%%/nls/qt_id.qm
+%%NLS%%%%DATADIR%%/nls/qt_it.qm
+%%NLS%%%%DATADIR%%/nls/qt_ja.qm
+%%NLS%%%%DATADIR%%/nls/qt_ka.qm
+%%NLS%%%%DATADIR%%/nls/qt_km_KH.qm
+%%NLS%%%%DATADIR%%/nls/qt_ko.qm
+%%NLS%%%%DATADIR%%/nls/qt_lt.qm
+%%NLS%%%%DATADIR%%/nls/qt_nl.qm
+%%NLS%%%%DATADIR%%/nls/qt_pl.qm
+%%NLS%%%%DATADIR%%/nls/qt_pt.qm
+%%NLS%%%%DATADIR%%/nls/qt_pt_BR.qm
+%%NLS%%%%DATADIR%%/nls/qt_ro.qm
+%%NLS%%%%DATADIR%%/nls/qt_ru.qm
+%%NLS%%%%DATADIR%%/nls/qt_sk.qm
+%%NLS%%%%DATADIR%%/nls/qt_sl.qm
+%%NLS%%%%DATADIR%%/nls/qt_sr.qm
+%%NLS%%%%DATADIR%%/nls/qt_sv.qm
+%%NLS%%%%DATADIR%%/nls/qt_th.qm
+%%NLS%%%%DATADIR%%/nls/qt_tr.qm
+%%NLS%%%%DATADIR%%/nls/qt_uk.qm
+%%NLS%%%%DATADIR%%/nls/qt_zh_CN.qm
+%%NLS%%%%DATADIR%%/nls/qt_zh_TW.qm
+%%DATADIR%%/samples/Makefile
+%%DATADIR%%/samples/tstVBoxAPIXPCOM.cpp
+%%WEBSERVICE%%%%DATADIR%%/sdk/bindings/webservice/vboxweb.wsdl
+%%PYTHON%%%%DATADIR%%/sdk/bindings/xpcom/python/xpcom
diff --git a/emulators/virtualbox-ose-kmod-72/Makefile b/emulators/virtualbox-ose-kmod-72/Makefile
new file mode 100644
index 000000000000..0990aebfbc08
--- /dev/null
+++ b/emulators/virtualbox-ose-kmod-72/Makefile
@@ -0,0 +1,114 @@
+PORTNAME= virtualbox-ose
+DISTVERSION= 7.2.0
+CATEGORIES= emulators
+MASTER_SITES= https://download.virtualbox.org/virtualbox/${DISTVERSION}/
+PKGNAMESUFFIX= -kmod-72
+DISTNAME= VirtualBox-${DISTVERSION}
+
+MAINTAINER= vbox@FreeBSD.org
+COMMENT= VirtualBox kernel module for FreeBSD
+WWW= https://www.virtualbox.org/
+
+LICENSE= GPLv2
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+ONLY_FOR_ARCHS= amd64
+
+BUILD_DEPENDS= kmk:devel/kBuild
+
+USES= cpe compiler:c++17-lang kmod tar:bzip2
+CPE_VENDOR= oracle
+CPE_PRODUCT= vm_virtualbox
+USE_RC_SUBR= vboxnet
+
+HAS_CONFIGURE= yes
+CONFIGURE_ARGS+= --build-headless
+CONFIGURE_ARGS+= --disable-alsa \
+ --disable-dbus \
+ --disable-docs \
+ --disable-libvpx \
+ --disable-pulse \
+ --disable-python \
+ --disable-sdl-ttf \
+ --disable-xpcom
+CONFIGURE_ARGS+= --nofatal --with-gcc="${CC}" --with-g++="${CXX}"
+
+CONFLICTS_INSTALL= virtualbox-ose-kmod-legacy \
+ virtualbox-ose-kmod \
+ virtualbox-ose-kmod-70
+
+PATCHDIR= ${.CURDIR}/../${PORTNAME}-72/files
+PORTSCOUT= limit:^7\.2\.
+SUB_FILES= pkg-message
+SUB_LIST= OPSYS=${OPSYS} OSREL=${OSREL}
+
+WRKSRC= ${WRKDIR}/VirtualBox-${DISTVERSION}
+
+OPTIONS_DEFINE= DEBUG INVARIANTS VIMAGE
+OPTIONS_DEFAULT= VIMAGE
+OPTIONS_SUB= yes
+DEBUG_DESC= Debug symbols, additional logs and assertions
+INVARIANTS_DESC= Use if kernel is compiled with INVARIANTS option
+VIMAGE_DESC= VIMAGE virtual networking support
+INVARIANTS_CFLAGS= -DINVARIANTS
+
+.include <bsd.port.options.mk>
+
+VBOX_BIN= ${WRKSRC}/out/${KMK_ARCH}/${KMK_BUILDTYPE}/bin/src
+VBOX_KMODS= vboxdrv \
+ vboxnetadp \
+ vboxnetflt
+
+BUILD_WRKSRC= ${VBOX_BIN}
+
+KMK_BUILDTYPE= release
+KMK_CONFIG= VBOX_LIBPATH_X11=${LOCALBASE} VBOX_FREEBSD_SRC=${SRC_BASE}/sys
+KMK_FLAGS= HostDrivers-scripts vboxdrv-src VBoxNetFlt-src VBoxNetAdp-src
+
+.if ${PORT_OPTIONS:MDEBUG}
+KMK_FLAGS+= BUILD_TYPE=debug
+KMK_BUILDTYPE= debug
+EXTRA_PATCHES+= ${PATCHDIR}/extrapatch-Config.kmk \
+ ${PATCHDIR}/extrapatch-src-VBox-HostDrivers-Support-freebsd-Makefile
+MAKE_ARGS+= DEBUG_FLAGS="-O1 -g"
+.endif
+
+.if ${ARCH} == i386
+KMK_ARCH= freebsd.x86
+.else
+KMK_ARCH= freebsd.${ARCH}
+.endif
+
+.include <bsd.port.pre.mk>
+
+SYMBOLSUFFIX= debug
+PLIST_SUB+= SYMBOLSUFFIX=${SYMBOLSUFFIX}
+
+post-patch:
+ @${ECHO_CMD} 'VBOX_WITH_VBOXDRV = 1' > ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_WITH_NETFLT = 1' >> ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_WITH_NETADP = 1' >> ${WRKSRC}/LocalConfig.kmk
+ @${ECHO_CMD} 'VBOX_WITH_ADDITIONS =' >> ${WRKSRC}/LocalConfig.kmk
+.if ${PORT_OPTIONS:MVIMAGE}
+ @${ECHO_CMD} 'VBOX_WITH_NETFLT_VIMAGE = 1' >> ${WRKSRC}/LocalConfig.kmk
+.endif
+ @${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g; s|which \$$\*|which \$$1|g' \
+ ${WRKSRC}/Config.kmk ${WRKSRC}/configure
+ @${REINPLACE_CMD} \
+ -e 's|\$$KBUILDDIR_BIN/kmk_sed|${LOCALBASE}/bin/kmk_sed|g' \
+ ${WRKSRC}/configure
+
+pre-build:
+ cd ${WRKSRC}/src/VBox/HostDrivers && ${SH} -c \
+ '. ${WRKSRC}/env.sh && ${KMK_CONFIG} ${LOCALBASE}/bin/kmk ${KMK_FLAGS}'
+
+do-install:
+ ${MKDIR} ${STAGEDIR}${KMODDIR}
+.for i in ${VBOX_KMODS}
+ ${INSTALL_KLD} ${VBOX_BIN}/${i}/${i}.ko ${STAGEDIR}${KMODDIR}
+.if ${PORT_OPTIONS:MDEBUG}
+ ${INSTALL_KLD} ${VBOX_BIN}/${i}/${i}.ko.${SYMBOLSUFFIX} ${STAGEDIR}${KMODDIR}
+.endif
+.endfor
+
+.include <bsd.port.post.mk>
diff --git a/emulators/virtualbox-ose-kmod-72/distinfo b/emulators/virtualbox-ose-kmod-72/distinfo
new file mode 100644
index 000000000000..c67534681918
--- /dev/null
+++ b/emulators/virtualbox-ose-kmod-72/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1755276527
+SHA256 (VirtualBox-7.2.0.tar.bz2) = 4f2804ff27848ea772aee6b637bb1e10ee74ec2da117c257413e2d2c4f670ba0
+SIZE (VirtualBox-7.2.0.tar.bz2) = 206755781
diff --git a/emulators/virtualbox-ose-kmod-72/files/pkg-message.in b/emulators/virtualbox-ose-kmod-72/files/pkg-message.in
new file mode 100644
index 000000000000..4e03cc0b5ec7
--- /dev/null
+++ b/emulators/virtualbox-ose-kmod-72/files/pkg-message.in
@@ -0,0 +1,10 @@
+[
+{ type: install
+ message: <<EOM
+The vboxdrv kernel module uses internal kernel APIs.
+
+To avoid crashes due to kernel incompatibility, this module will only
+load on %%OPSYS%% %%OSREL%% kernels.
+EOM
+}
+]
diff --git a/emulators/virtualbox-ose-kmod-72/files/vboxnet.in b/emulators/virtualbox-ose-kmod-72/files/vboxnet.in
new file mode 100644
index 000000000000..af3d18884273
--- /dev/null
+++ b/emulators/virtualbox-ose-kmod-72/files/vboxnet.in
@@ -0,0 +1,67 @@
+#!/bin/sh
+
+# PROVIDE: vboxnet
+# BEFORE: NETWORKING
+# REQUIRE: FILESYSTEMS
+# KEYWORD: nojail
+
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# vboxnet_enable (bool): Set to NO by default.
+# Set it to YES to load network related kernel modules on startup
+
+. /etc/rc.subr
+
+name="vboxnet"
+rcvar=vboxnet_enable
+start_cmd="vboxnet_start"
+stop_cmd="vboxnet_stop"
+
+vboxnet_modules="vboxdrv vboxnetflt:ng_vboxnetflt vboxnetadp"
+
+vboxnet_start()
+{
+ local _k _m
+
+ for _m in ${vboxnet_modules}; do
+ _k=${_m%:*}
+ _m=${_m#*:}
+ if ! kldstat -q -m ${_m}; then
+ if ! kldload ${_k} > /dev/null 2>&1; then
+ warn "Can't load ${_k} module."
+ return 1
+ fi
+ fi
+ done
+
+ # initialize configured host-only interfaces
+ LD_LIBRARY_PATH=%%PREFIX%%/lib %%PREFIX%%/bin/VBoxManage list hostonlyifs >/dev/null
+}
+
+vboxnet_stop()
+{
+ local _k _m _r
+
+ _r=
+ for _m in ${vboxnet_modules}; do
+ _r="${_m} ${_r}"
+ done
+ for _m in ${_r}; do
+ _k=${_m%:*}
+ _m=${_m#*:}
+ if kldstat -q -m ${_m}; then
+ if ! kldunload ${_k} > /dev/null 2>&1; then
+ warn "Can't unload ${_k} module."
+ return 1
+ fi
+ fi
+ done
+}
+
+load_rc_config $name
+
+: ${vboxnet_enable="NO"}
+
+run_rc_command "$1"
diff --git a/emulators/virtualbox-ose-kmod-72/pkg-descr b/emulators/virtualbox-ose-kmod-72/pkg-descr
new file mode 100644
index 000000000000..d11d42a81c78
--- /dev/null
+++ b/emulators/virtualbox-ose-kmod-72/pkg-descr
@@ -0,0 +1,5 @@
+VirtualBox is a family of powerful x86 virtualization products for
+enterprise as well as home use. Not only is VirtualBox an extremely
+feature rich, high performance product for enterprise customers, it
+is also the only professional solution that is freely available as
+Open Source Software under the terms of the GNU General Public License.
diff --git a/emulators/virtualbox-ose-kmod-72/pkg-plist b/emulators/virtualbox-ose-kmod-72/pkg-plist
new file mode 100644
index 000000000000..b08a5706a028
--- /dev/null
+++ b/emulators/virtualbox-ose-kmod-72/pkg-plist
@@ -0,0 +1,6 @@
+/%%KMODDIR%%/vboxdrv.ko
+%%DEBUG%%/%%KMODDIR%%/vboxdrv.ko.%%SYMBOLSUFFIX%%
+/%%KMODDIR%%/vboxnetadp.ko
+%%DEBUG%%/%%KMODDIR%%/vboxnetadp.ko.%%SYMBOLSUFFIX%%
+/%%KMODDIR%%/vboxnetflt.ko
+%%DEBUG%%/%%KMODDIR%%/vboxnetflt.ko.%%SYMBOLSUFFIX%%
diff --git a/emulators/virtualbox-ose-nox11-72/Makefile b/emulators/virtualbox-ose-nox11-72/Makefile
new file mode 100644
index 000000000000..d415932ea096
--- /dev/null
+++ b/emulators/virtualbox-ose-nox11-72/Makefile
@@ -0,0 +1,11 @@
+PORTREVISION= 0
+PKGNAMESUFFIX= -nox11-72
+
+MASTERDIR= ${.CURDIR}/../virtualbox-ose-72
+
+OPTIONS_EXCLUDE= ALSA DBUS DEBUG GUESTADDITIONS DOCS NLS OGG PULSEAUDIO \
+ QT6 VORBIS VPX X11
+
+SLAVE_PORT= yes
+
+.include "${MASTERDIR}/Makefile"
diff --git a/filesystems/Makefile b/filesystems/Makefile
index 18d57a3d5f91..4f7065513f9a 100644
--- a/filesystems/Makefile
+++ b/filesystems/Makefile
@@ -110,6 +110,7 @@
SUBDIR += s3backer
SUBDIR += s3fs
SUBDIR += sandboxfs
+ SUBDIR += sasquatch
SUBDIR += scan_ffs
SUBDIR += securefs
SUBDIR += simple-mtpfs
diff --git a/filesystems/sasquatch/Makefile b/filesystems/sasquatch/Makefile
new file mode 100644
index 000000000000..71946e990520
--- /dev/null
+++ b/filesystems/sasquatch/Makefile
@@ -0,0 +1,35 @@
+PORTNAME= sasquatch
+DISTVERSION= 4.3
+CATEGORIES= filesystems sysutils
+
+MAINTAINER= tiago.gasiba@gmail.com
+COMMENT= SquashFS extractor with patches for firmware analysis
+WWW= https://gitlab.com/tgasiba/sasquatch/
+
+LICENSE= CPL GPLv2 LGPL21 PUBLIC
+LICENSE_COMB= multi
+LICENSE_NAME_CPL= Common Public License V. 1.0
+LICENSE_NAME_PUBLIC= Public Domain
+LICENSE_FILE_CPL= ${WRKSRC}/LZMA/lzmadaptive/CPL.html
+LICENSE_FILE_GPLv2= ${WRKSRC}/LICENSE
+LICENSE_FILE_LGPL21= ${WRKSRC}/LZMA/lzmadaptive/LGPL.txt
+LICENSE_FILE_PUBLIC= ${WRKSRC}/LZMA/lzma465/lzma.txt
+LICENSE_PERMS_CPL= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
+LICENSE_PERMS_PUBLIC= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
+
+LIB_DEPENDS= liblz4.so:archivers/liblz4 \
+ liblzo2.so:archivers/lzo2
+
+USES= compiler:c++11-lang
+USE_GITLAB= yes
+GL_ACCOUNT= tgasiba
+
+MAKE_ENV= CC="${CC}" \
+ CXX="${CXX}"
+
+PLIST_FILES= bin/${PORTNAME}
+
+do-install:
+ ${INSTALL_PROGRAM} ${WRKSRC}/${PORTNAME} ${STAGEDIR}${PREFIX}/bin
+
+.include <bsd.port.mk>
diff --git a/filesystems/sasquatch/distinfo b/filesystems/sasquatch/distinfo
new file mode 100644
index 000000000000..fc694081ebee
--- /dev/null
+++ b/filesystems/sasquatch/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1755444495
+SHA256 (sasquatch-4.3.tar.bz2) = 3fa1f0f5be2d9be66e0f4f87f5690e4c770f87718c7861ae59943fe9eb0c585d
+SIZE (sasquatch-4.3.tar.bz2) = 271643
diff --git a/filesystems/sasquatch/pkg-descr b/filesystems/sasquatch/pkg-descr
new file mode 100644
index 000000000000..310014639119
--- /dev/null
+++ b/filesystems/sasquatch/pkg-descr
@@ -0,0 +1,16 @@
+The sasquatch project is a set of patches to the standard unsquashfs utility
+(part of squashfs-tools) that attempts to add support for as many hacked-up
+vendor-specific SquashFS implementations as possible.
+
+It can be used in conjunction with binwalk to extract firmware images where
+unsquashfs would fail, e.g.
+
+ If the vendor has done something simple like just muck a bit with the header
+ fields, sasquatch should sort it out.
+
+ If the vendor has made changes to the underlying LZMA compression options,
+ or to how these options are stored in the compressed data blocks, sasquatch
+ will attempt to automatically resolve such customizations via a brute-force
+ method.
+
+Original project under: https://github.com/devttys0/sasquatch
diff --git a/graphics/colmap/Makefile b/graphics/colmap/Makefile
index bf5d67418a56..eb5f3a155473 100644
--- a/graphics/colmap/Makefile
+++ b/graphics/colmap/Makefile
@@ -1,5 +1,5 @@
PORTNAME= colmap
-DISTVERSION= 3.12.4
+DISTVERSION= 3.12.5
CATEGORIES= graphics
MAINTAINER= fuz@FreeBSD.org
diff --git a/graphics/colmap/distinfo b/graphics/colmap/distinfo
index 5b5eeb3ba7a4..08882ff634f1 100644
--- a/graphics/colmap/distinfo
+++ b/graphics/colmap/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1754391753
-SHA256 (colmap-colmap-3.12.4_GH0.tar.gz) = 320cb5a411cd0aa713adc05e208ec34067638e776260efd8098271342d408997
-SIZE (colmap-colmap-3.12.4_GH0.tar.gz) = 3580471
+TIMESTAMP = 1756392724
+SHA256 (colmap-colmap-3.12.5_GH0.tar.gz) = 93dfb220cce24d988506bbb1d27d4278eacfd4e372df61d380559d414c1bd9e4
+SIZE (colmap-colmap-3.12.5_GH0.tar.gz) = 3584697
diff --git a/graphics/colmap/files/patch-cmake_FindDependencies.cmake b/graphics/colmap/files/patch-cmake_FindDependencies.cmake
deleted file mode 100644
index cdb62cbe1cf7..000000000000
--- a/graphics/colmap/files/patch-cmake_FindDependencies.cmake
+++ /dev/null
@@ -1,19 +0,0 @@
---- cmake/FindDependencies.cmake.orig 2025-07-31 15:20:30 UTC
-+++ cmake/FindDependencies.cmake
-@@ -21,8 +21,7 @@ find_package(Boost ${COLMAP_FIND_TYPE} COMPONENTS
-
- find_package(Boost ${COLMAP_FIND_TYPE} COMPONENTS
- graph
-- program_options
-- system)
-+ program_options)
-
- find_package(Eigen3 ${COLMAP_FIND_TYPE})
-
-@@ -247,4 +246,4 @@ if(OPENGL_ENABLED OR CUDA_ENABLED)
- list(APPEND COLMAP_COMPILE_DEFINITIONS COLMAP_GPU_ENABLED)
- message(STATUS "Enabling GPU support (OpenGL: ${OPENGL_ENABLED}, CUDA: ${CUDA_ENABLED})")
- set(GPU_ENABLED ON)
--endif()
-\ No newline at end of file
-+endif()
diff --git a/graphics/mesa-devel/Makefile b/graphics/mesa-devel/Makefile
index d52c62435c94..33b934a06a3e 100644
--- a/graphics/mesa-devel/Makefile
+++ b/graphics/mesa-devel/Makefile
@@ -1,6 +1,6 @@
PORTNAME= mesa
-DISTVERSION= 25.2-branchpoint-2377
-DISTVERSIONSUFFIX= -gdac9360bacf
+DISTVERSION= 25.2-branchpoint-2486
+DISTVERSIONSUFFIX= -g443446aa82c
CATEGORIES= graphics
PKGNAMESUFFIX= -devel
diff --git a/graphics/mesa-devel/distinfo b/graphics/mesa-devel/distinfo
index f7f0963f0711..8a07361e0125 100644
--- a/graphics/mesa-devel/distinfo
+++ b/graphics/mesa-devel/distinfo
@@ -1,6 +1,6 @@
-TIMESTAMP = 1756336715
-SHA256 (mesa-25.2-branchpoint-2377-gdac9360bacf.tar.bz2) = 6d11bfede9154bc0ba4ecbf8687d04cc139435f2dc9ad5310872b345cf7302cc
-SIZE (mesa-25.2-branchpoint-2377-gdac9360bacf.tar.bz2) = 58593807
+TIMESTAMP = 1756506972
+SHA256 (mesa-25.2-branchpoint-2486-g443446aa82c.tar.bz2) = 99473b50954a52067bea039c05eeec02663d43013c42e58b6e0ba06504e3ab9e
+SIZE (mesa-25.2-branchpoint-2486-g443446aa82c.tar.bz2) = 58604647
SHA256 (700efacda59c.patch) = 0d567fe737ad1404e1f12d7cd018826d9095c23835f1ed5aaa1c81cb58d3d008
SIZE (700efacda59c.patch) = 983
SHA256 (de5cf0a44b50.patch) = c9e02e5eb1fb4e3aa2bc7a7e0a70f28f3ee609835ff0b59e827893a821983851
diff --git a/graphics/zathura/Makefile b/graphics/zathura/Makefile
index 619f39bd68a4..058ced747a95 100644
--- a/graphics/zathura/Makefile
+++ b/graphics/zathura/Makefile
@@ -1,5 +1,5 @@
PORTNAME= zathura
-DISTVERSION= 0.5.11
+DISTVERSION= 0.5.12
CATEGORIES= graphics print
MASTER_SITES= https://pwmt.org/projects/zathura/download/
@@ -13,7 +13,8 @@ LICENSE_FILE= ${WRKSRC}/LICENSE
LIB_DEPENDS= libgirara-gtk3.so:x11-toolkits/girara \
libjson-glib-1.0.so:devel/json-glib
-USES= compiler:c17 gettext gnome meson ninja pkgconfig sqlite tar:xz
+USES= compiler:c17 gettext-runtime gettext-tools gnome meson ninja \
+ pkgconfig sqlite tar:xz
USE_GNOME= glib20 gtk30
MESON_ARGS= -Dlandlock=disabled \
-Dseccomp=disabled \
@@ -26,15 +27,15 @@ OPTIONS_SUB= yes
SYNCTEX_DESC= Direct and reverse synchronisation support with SyncTeX
MANPAGES_BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pytz>0:devel/py-pytz@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}sphinx>=1.2.2,1:textproc/py-sphinx@${PY_FLAVOR}
-MANPAGES_USES= python
+ ${PYTHON_PKGNAMEPREFIX}sphinx>0:textproc/py-sphinx@${PY_FLAVOR}
+MANPAGES_USES= python:build
MANPAGES_MESON_ENABLED= manpages
-SYNCTEX_BUILD_DEPENDS= tex-synctex>=1.19.0:devel/tex-synctex
+SYNCTEX_BUILD_DEPENDS= tex-synctex>0:devel/tex-synctex
SYNCTEX_RUN_DEPENDS= ${SYNCTEX_BUILD_DEPENDS}
SYNCTEX_MESON_ENABLED= synctex
-post-patch:
+post-patch-MANPAGES-on:
@${REINPLACE_CMD} -e 's|^/etc|${PREFIX}/etc|' ${WRKSRC}/doc/man/zathurarc.5.rst
.include <bsd.port.mk>
diff --git a/graphics/zathura/distinfo b/graphics/zathura/distinfo
index 212920c6447d..cad74c287206 100644
--- a/graphics/zathura/distinfo
+++ b/graphics/zathura/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1734525804
-SHA256 (zathura-0.5.11.tar.xz) = 54458a9998af0fb8faef2e934a81127bbe4b790c86dcd2c8b8f32365f3d1b53c
-SIZE (zathura-0.5.11.tar.xz) = 167820
+TIMESTAMP = 1751616442
+SHA256 (zathura-0.5.12.tar.xz) = e84870fbf96b766b8224a3f3a6ce7ccfa36efa3b6919cc8a2fbf765ea4dfe476
+SIZE (zathura-0.5.12.tar.xz) = 176368
diff --git a/graphics/zathura/pkg-plist b/graphics/zathura/pkg-plist
index 71d20bc03aad..73742d7712cf 100644
--- a/graphics/zathura/pkg-plist
+++ b/graphics/zathura/pkg-plist
@@ -30,7 +30,6 @@ share/locale/es_CL/LC_MESSAGES/zathura.mo
share/locale/et/LC_MESSAGES/zathura.mo
share/locale/fr/LC_MESSAGES/zathura.mo
share/locale/he/LC_MESSAGES/zathura.mo
-share/locale/hr/LC_MESSAGES/zathura.mo
share/locale/id_ID/LC_MESSAGES/zathura.mo
share/locale/it/LC_MESSAGES/zathura.mo
share/locale/lt/LC_MESSAGES/zathura.mo
diff --git a/irc/py-sopel/Makefile b/irc/py-sopel/Makefile
index 4b4e1ba06602..8e33cfd7f015 100644
--- a/irc/py-sopel/Makefile
+++ b/irc/py-sopel/Makefile
@@ -1,5 +1,5 @@
PORTNAME= sopel
-DISTVERSION= 8.0.3
+DISTVERSION= 8.0.4
CATEGORIES= irc python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/irc/py-sopel/distinfo b/irc/py-sopel/distinfo
index 3d8440494a6a..0d15ee158f3b 100644
--- a/irc/py-sopel/distinfo
+++ b/irc/py-sopel/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1754007890
-SHA256 (sopel-8.0.3.tar.gz) = 961a0481f61aa9a65fadf560c874b097f6a582a8e7bc073fa6754fc0af187427
-SIZE (sopel-8.0.3.tar.gz) = 250478
+TIMESTAMP = 1756499040
+SHA256 (sopel-8.0.4.tar.gz) = d7a403cec642aae00f1f714fc818f179719cbd276360b6454d73740129de44e5
+SIZE (sopel-8.0.4.tar.gz) = 250580
diff --git a/lang/php85/Makefile b/lang/php85/Makefile
index 4cd024aca5ea..3243c851d01d 100644
--- a/lang/php85/Makefile
+++ b/lang/php85/Makefile
@@ -1,8 +1,9 @@
PORTNAME= php85
-DISTVERSION= 8.5.0beta1
+DISTVERSION= 8.5.0beta2
PORTREVISION?= 0
CATEGORIES?= lang devel www
-MASTER_SITES= https://downloads.php.net/~edorian/
+MASTER_SITES= https://downloads.php.net/~edorian/ \
+ https://downloads.php.net/~daniels/
DISTNAME= php-${DISTVERSION}
MAINTAINER= bofh@FreeBSD.org
diff --git a/lang/php85/distinfo b/lang/php85/distinfo
index 4c473c0e48cd..d2d1566c9672 100644
--- a/lang/php85/distinfo
+++ b/lang/php85/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1755580765
-SHA256 (php-8.5.0beta1.tar.gz) = d28f6de0744fa733db898ddcdeaa784a5e87ec1b4b4822e83529d9a76229ea61
-SIZE (php-8.5.0beta1.tar.gz) = 23797736
+TIMESTAMP = 1756465955
+SHA256 (php-8.5.0beta2.tar.gz) = 237833015ab63d5441fb781bc9848ae9bac4a7c3bdb1b6157139c41c1ea98b44
+SIZE (php-8.5.0beta2.tar.gz) = 24019611
diff --git a/lang/php85/pkg-plist b/lang/php85/pkg-plist
index 15aebd735077..9b085c0d576a 100644
--- a/lang/php85/pkg-plist
+++ b/lang/php85/pkg-plist
@@ -335,7 +335,6 @@ include/php/ext/lexbor/ns/ns.h
include/php/ext/lexbor/ns/res.h
include/php/ext/lexbor/punycode/base.h
include/php/ext/lexbor/punycode/punycode.h
-include/php/ext/lexbor/selectors/selectors.h
include/php/ext/lexbor/tag/base.h
include/php/ext/lexbor/tag/res.h
include/php/ext/lexbor/tag/tag.h
@@ -475,10 +474,10 @@ include/php/ext/standard/url.h
include/php/ext/standard/url_scanner_ex.h
include/php/ext/standard/user_filters_arginfo.h
include/php/ext/standard/winver.h
-include/php/ext/uri/php_lexbor.h
include/php/ext/uri/php_uri.h
include/php/ext/uri/php_uri_common.h
-include/php/ext/uri/php_uriparser.h
+include/php/ext/uri/uri_parser_rfc3986.h
+include/php/ext/uri/uri_parser_whatwg.h
@touch include/php/ext/php_config.h
@rmempty include/php/ext/php_config.h
include/php/main/SAPI.h
diff --git a/lang/s7/Makefile.master b/lang/s7/Makefile.master
index 528bb554cb8b..8a4023492e50 100644
--- a/lang/s7/Makefile.master
+++ b/lang/s7/Makefile.master
@@ -1,7 +1,7 @@
PORTNAME= s7
CATEGORIES= lang lisp
# S7_MAJOR_VERSION / S7_MINOR_VERSION / S7_DATE from s7.h
-PORTVERSION= 11.4.20250505
+PORTVERSION= 11.5.20250902
MAINTAINER?= fuz@FreeBSD.org
WWW= https://ccrma.stanford.edu/software/snd/snd/s7.html
@@ -12,7 +12,7 @@ USES= localbase:ldflags
USE_GITLAB= yes
GL_SITE= https://cm-gitlab.stanford.edu
GL_ACCOUNT= bil
-GL_TAGNAME= f9a99df1cb1470b7daa19daf7148e76363f7bceb
+GL_TAGNAME= d839d9edb74cb898fa366cbb76596a3d04185fc8
CFLAGS+= -DS7_LOAD_PATH=\"${DATADIR}\" \
-DHAVE_COMPLEX_NUMBERS \
diff --git a/lang/s7/distinfo b/lang/s7/distinfo
index f47e005d8ac9..65eed96d86ab 100644
--- a/lang/s7/distinfo
+++ b/lang/s7/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1746427498
-SHA256 (bil-s7-f9a99df1cb1470b7daa19daf7148e76363f7bceb_GL0.tar.gz) = 3833f0226fdeda4691189ee38702aec52ed98d67253a002c21fb671c109e2400
-SIZE (bil-s7-f9a99df1cb1470b7daa19daf7148e76363f7bceb_GL0.tar.gz) = 2818205
+TIMESTAMP = 1756478740
+SHA256 (bil-s7-d839d9edb74cb898fa366cbb76596a3d04185fc8_GL0.tar.gz) = 1881d5a8275d70a9ba3b0e191e52f8b12473573e8d003a61359d7a5e6465f7b9
+SIZE (bil-s7-d839d9edb74cb898fa366cbb76596a3d04185fc8_GL0.tar.gz) = 2845766
diff --git a/mail/mew-devel/Makefile b/mail/mew-devel/Makefile
index e9775fe817f1..303e25494b43 100644
--- a/mail/mew-devel/Makefile
+++ b/mail/mew-devel/Makefile
@@ -1,8 +1,7 @@
PORTNAME= mew
DISTVERSIONPREFIX= v
-DISTVERSION= 6.10
-PORTREVISION= 1
-DISTVERSIONSUFFIX=
+DISTVERSION= 6.10-18
+DISTVERSIONSUFFIX= -g377b685
CATEGORIES= mail elisp
PKGNAMESUFFIX= -devel${EMACS_PKGNAMESUFFIX}
diff --git a/mail/mew-devel/distinfo b/mail/mew-devel/distinfo
index 3395ef946412..b0844f43a2ad 100644
--- a/mail/mew-devel/distinfo
+++ b/mail/mew-devel/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1751976896
-SHA256 (kazu-yamamoto-Mew-v6.10_GH0.tar.gz) = 39a273dcf6caad0659151b87710a961471f666e020d799d9a61421b6e83013ca
-SIZE (kazu-yamamoto-Mew-v6.10_GH0.tar.gz) = 1021646
+TIMESTAMP = 1756491998
+SHA256 (kazu-yamamoto-Mew-v6.10-18-g377b685_GH0.tar.gz) = 860657f3469c02fabe7a5fe00d4023e3f6a32c2ddd1589327ef45711e68f8ebc
+SIZE (kazu-yamamoto-Mew-v6.10-18-g377b685_GH0.tar.gz) = 1022715
diff --git a/math/maxima/Makefile b/math/maxima/Makefile
index 8e95b719ceb6..b99a5ef93316 100644
--- a/math/maxima/Makefile
+++ b/math/maxima/Makefile
@@ -3,7 +3,7 @@ DISTVERSION= 5.48.1
CATEGORIES= math lisp tk
MASTER_SITES= SF/maxima/Maxima-source/${PORTVERSION}-source
-MAINTAINER= ports@FreeBSD.org
+MAINTAINER= tiago.gasiba@gmail.com
COMMENT= Symbolic mathematics program
WWW= http://maxima.sourceforge.net/
diff --git a/math/wxmaxima/Makefile b/math/wxmaxima/Makefile
index a93108f6392e..6e3b73c56c8c 100644
--- a/math/wxmaxima/Makefile
+++ b/math/wxmaxima/Makefile
@@ -1,10 +1,10 @@
PORTNAME= wxmaxima
DISTVERSIONPREFIX= Version-
-DISTVERSION= 23.12.0
+DISTVERSION= 25.04.0
PORTEPOCH= 1
CATEGORIES= math
-MAINTAINER= ports@FreeBSD.org
+MAINTAINER= tiago.gasiba@gmail.com
COMMENT= WxWidgets GUI for the computer algebra system maxima
WWW= https://wxmaxima-developers.github.io/wxmaxima/
diff --git a/math/wxmaxima/distinfo b/math/wxmaxima/distinfo
index 620412ceb844..b8f87424109f 100644
--- a/math/wxmaxima/distinfo
+++ b/math/wxmaxima/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1703439889
-SHA256 (wxMaxima-Developers-wxmaxima-Version-23.12.0_GH0.tar.gz) = abec636e96474adf6451e81728b16afaa83ed1a70b86a695fa083ecec65aaae1
-SIZE (wxMaxima-Developers-wxmaxima-Version-23.12.0_GH0.tar.gz) = 16491009
+TIMESTAMP = 1756398955
+SHA256 (wxMaxima-Developers-wxmaxima-Version-25.04.0_GH0.tar.gz) = ec0b3005c3663f1bb86b0cc5028c2ba121e1563e3d5b671afcb9774895f4191b
+SIZE (wxMaxima-Developers-wxmaxima-Version-25.04.0_GH0.tar.gz) = 16017552
diff --git a/math/wxmaxima/files/patch-src_wxMaxima.cpp b/math/wxmaxima/files/patch-src_wxMaxima.cpp
deleted file mode 100644
index 7f2ef251df91..000000000000
--- a/math/wxmaxima/files/patch-src_wxMaxima.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/wxMaxima.cpp.orig 2023-12-25 16:45:03 UTC
-+++ src/wxMaxima.cpp
-@@ -3393,8 +3393,6 @@ void wxMaxima::VariableActionMaximaHtmldir(const wxStr
- wxLogMessage(_("Maxima's HTML manuals are in directory %s"),
- dir_canonical.utf8_str());
- GetWorksheet()->SetMaximaDocDir(dir_canonical);
-- GetWorksheet()->LoadHelpFileAnchors(dir_canonical,
-- GetWorksheet()->GetMaximaVersion());
- }
- void wxMaxima::GnuplotCommandName(wxString gnuplot) {
- m_gnuplotcommand = gnuplot;
diff --git a/math/wxmaxima/pkg-plist b/math/wxmaxima/pkg-plist
index d5768c477b18..3689400b8be7 100644
--- a/math/wxmaxima/pkg-plist
+++ b/math/wxmaxima/pkg-plist
@@ -34,6 +34,26 @@ share/bash-completion/completions/wxmaxima
%%PORTDOCS%%%%DOCSDIR%%/wxmaxima.uk.html
%%PORTDOCS%%%%DOCSDIR%%/wxmaxima.zh_CN.html
%%PORTDOCS%%%%DOCSDIR%%/wxsubscripts.png
+share/icons/hicolor/1024x1024/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/128x128/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/150x150/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/16x16/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/192x192/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/22x22/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/24x24/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/256x256/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/310x310/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/32x32/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/36x36/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/42x42/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/44x44/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/48x48/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/512x512/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/64x64/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/72x72/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/8x8/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/96x96/apps/io.github.wxmaxima_developers.wxMaxima.png
+share/icons/hicolor/scalable/apps/io.github.wxmaxima_developers.wxMaxima.svg
%%NLS%%share/locale/ca/LC_MESSAGES/wxMaxima.mo
%%NLS%%share/locale/cs/LC_MESSAGES/wxMaxima.mo
%%NLS%%share/locale/da/LC_MESSAGES/wxMaxima.mo
diff --git a/misc/py-hf-xet/Makefile b/misc/py-hf-xet/Makefile
index d541c2f50007..1b2de3ce2db9 100644
--- a/misc/py-hf-xet/Makefile
+++ b/misc/py-hf-xet/Makefile
@@ -1,5 +1,5 @@
PORTNAME= hf-xet
-DISTVERSION= 1.1.8
+DISTVERSION= 1.1.9
CATEGORIES= misc python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
@@ -11,7 +11,7 @@ COMMENT= Fast transfer of large files with the Hugging Face Hub
WWW= https://github.com/huggingface/xet-core
LICENSE= APACHE20
-LICENSE_FILE= ${WRKSRC}/LICENSE
+LICENSE_FILE= ${WRKSRC}/hf_xet/LICENSE
BROKEN_i386= fails to build: cannot find function `_mm256_insert_epi64` in this scope
diff --git a/misc/py-hf-xet/Makefile.crates b/misc/py-hf-xet/Makefile.crates
index 99a45732257e..fdf7f3bf102f 100644
--- a/misc/py-hf-xet/Makefile.crates
+++ b/misc/py-hf-xet/Makefile.crates
@@ -5,40 +5,47 @@ CARGO_CRATES= addr2line-0.24.2 \
aligned-vec-0.6.4 \
android-tzdata-0.1.1 \
android_system_properties-0.1.5 \
- anstream-0.6.19 \
+ anstream-0.6.20 \
anstyle-1.0.11 \
anstyle-parse-0.2.7 \
- anstyle-query-1.1.3 \
- anstyle-wincon-3.0.9 \
- anyhow-1.0.98 \
+ anstyle-query-1.1.4 \
+ anstyle-wincon-3.0.10 \
+ anyhow-1.0.99 \
arrayref-0.3.9 \
arrayvec-0.7.6 \
- async-scoped-0.7.1 \
- async-trait-0.1.88 \
- autocfg-1.4.0 \
+ async-stream-0.3.6 \
+ async-stream-impl-0.3.6 \
+ async-trait-0.1.89 \
+ atomic-waker-1.1.2 \
+ autocfg-1.5.0 \
+ axum-0.7.9 \
+ axum-core-0.4.5 \
backtrace-0.3.75 \
+ base64-0.21.7 \
base64-0.22.1 \
bincode-1.3.3 \
bipbuffer-0.1.2 \
bitflags-1.3.2 \
- bitflags-2.9.1 \
+ bitflags-2.9.2 \
blake3-1.8.2 \
block-buffer-0.10.4 \
- bumpalo-3.18.1 \
- bytemuck-1.23.1 \
+ bumpalo-3.19.0 \
+ bytemuck-1.23.2 \
byteorder-1.5.0 \
bytes-1.10.1 \
- cc-1.2.26 \
+ cc-1.2.33 \
cfg-if-0.1.10 \
cfg-if-1.0.1 \
cfg_aliases-0.2.1 \
chrono-0.4.41 \
- clap-4.5.40 \
- clap_builder-4.5.40 \
- clap_derive-4.5.40 \
+ clap-4.5.45 \
+ clap_builder-4.5.44 \
+ clap_derive-4.5.45 \
clap_lex-0.7.5 \
colorchoice-1.0.4 \
colored-2.2.0 \
+ console-api-0.8.1 \
+ console-subscriber-0.4.1 \
constant_time_eq-0.3.1 \
core-foundation-0.9.4 \
core-foundation-0.10.1 \
@@ -46,23 +53,25 @@ CARGO_CRATES= addr2line-0.24.2 \
countio-0.2.19 \
cpp_demangle-0.4.4 \
cpufeatures-0.2.17 \
- crc32fast-1.4.2 \
+ crc32fast-1.5.0 \
crossbeam-channel-0.5.15 \
crossbeam-queue-0.3.12 \
crossbeam-utils-0.8.21 \
- crunchy-0.2.3 \
+ crunchy-0.2.4 \
crypto-common-0.1.6 \
csv-1.3.1 \
csv-core-0.1.12 \
- ctor-0.4.2 \
- ctor-proc-macro-0.0.5 \
+ ctor-0.4.3 \
+ ctor-proc-macro-0.0.6 \
ctrlc-3.4.7 \
debugid-0.8.0 \
deranged-0.4.0 \
derivative-2.2.0 \
digest-0.10.7 \
dirs-5.0.1 \
+ dirs-6.0.0 \
dirs-sys-0.4.1 \
+ dirs-sys-0.5.0 \
displaydoc-0.2.5 \
downcast-0.11.0 \
dtor-0.0.6 \
@@ -71,9 +80,10 @@ CARGO_CRATES= addr2line-0.24.2 \
equator-0.4.2 \
equator-macro-0.4.2 \
equivalent-1.0.2 \
- errno-0.3.12 \
+ errno-0.3.13 \
fastrand-2.3.0 \
findshlibs-0.10.2 \
+ flate2-1.1.2 \
fnv-1.0.7 \
foreign-types-0.3.2 \
foreign-types-shared-0.1.1 \
@@ -93,8 +103,11 @@ CARGO_CRATES= addr2line-0.24.2 \
getrandom-0.2.16 \
getrandom-0.3.3 \
gimli-0.31.1 \
+ h2-0.4.12 \
half-2.6.0 \
- hashbrown-0.15.4 \
+ hashbrown-0.12.3 \
+ hashbrown-0.15.5 \
+ hdrhistogram-7.5.4 \
heapify-0.2.0 \
heck-0.5.0 \
heed-0.11.0 \
@@ -105,10 +118,13 @@ CARGO_CRATES= addr2line-0.24.2 \
http-body-1.0.1 \
http-body-util-0.1.3 \
httparse-1.10.1 \
- hyper-1.6.0 \
+ httpdate-1.0.3 \
+ humantime-2.2.0 \
+ hyper-1.7.0 \
hyper-rustls-0.27.7 \
+ hyper-timeout-0.5.2 \
hyper-tls-0.6.0 \
- hyper-util-0.1.14 \
+ hyper-util-0.1.16 \
iana-time-zone-0.1.63 \
iana-time-zone-haiku-0.1.2 \
icu_collections-2.0.0 \
@@ -120,7 +136,8 @@ CARGO_CRATES= addr2line-0.24.2 \
icu_provider-2.0.0 \
idna-1.0.3 \
idna_adapter-1.2.1 \
- indexmap-2.9.0 \
+ indexmap-1.9.3 \
+ indexmap-2.10.0 \
indoc-2.0.6 \
inferno-0.11.21 \
instant-0.1.13 \
@@ -135,19 +152,22 @@ CARGO_CRATES= addr2line-0.24.2 \
js-sys-0.3.77 \
jsonwebtoken-9.3.1 \
lazy_static-1.5.0 \
- libc-0.2.172 \
- libredox-0.1.3 \
+ libc-0.2.175 \
+ libredox-0.1.9 \
linux-raw-sys-0.9.4 \
litemap-0.8.0 \
lmdb-rkv-sys-0.11.2 \
lock_api-0.4.13 \
log-0.4.27 \
lru-slab-0.1.2 \
- lz4_flex-0.11.3 \
+ lz4_flex-0.11.5 \
matchers-0.1.0 \
+ matchit-0.7.3 \
memchr-2.7.5 \
- memmap2-0.9.5 \
+ memmap2-0.9.7 \
memoffset-0.9.1 \
+ mime-0.3.17 \
+ minimal-lexical-0.2.1 \
miniz_oxide-0.8.9 \
mio-1.0.4 \
mockall-0.13.1 \
@@ -156,6 +176,7 @@ CARGO_CRATES= addr2line-0.24.2 \
native-tls-0.2.14 \
nix-0.26.4 \
nix-0.30.1 \
+ nom-7.1.3 \
nu-ansi-term-0.46.0 \
num-bigint-0.4.6 \
num-conv-0.1.0 \
@@ -169,7 +190,7 @@ CARGO_CRATES= addr2line-0.24.2 \
openssl-0.10.73 \
openssl-macros-0.1.1 \
openssl-probe-0.1.6 \
- openssl-src-300.5.0+3.5.0 \
+ openssl-src-300.5.2+3.5.2 \
openssl-sys-0.9.109 \
option-ext-0.2.0 \
overload-0.1.1 \
@@ -188,15 +209,18 @@ CARGO_CRATES= addr2line-0.24.2 \
portable-atomic-1.11.1 \
potential_utf-0.1.2 \
powerfmt-0.2.0 \
- pprof-0.14.0 \
+ pprof-0.14.1 \
ppv-lite86-0.2.21 \
predicates-3.1.3 \
predicates-core-1.0.9 \
predicates-tree-1.0.12 \
- proc-macro2-1.0.95 \
+ proc-macro2-1.0.101 \
prometheus-0.14.0 \
prost-0.12.6 \
+ prost-0.13.5 \
prost-derive-0.12.6 \
+ prost-derive-0.13.5 \
+ prost-types-0.13.5 \
protobuf-2.28.0 \
protobuf-3.7.2 \
protobuf-codegen-2.28.0 \
@@ -210,9 +234,9 @@ CARGO_CRATES= addr2line-0.24.2 \
quick-xml-0.26.0 \
quinn-0.11.8 \
quinn-proto-0.11.12 \
- quinn-udp-0.5.12 \
+ quinn-udp-0.5.13 \
quote-1.0.40 \
- r-efi-5.2.0 \
+ r-efi-5.3.0 \
rand-0.8.5 \
rand-0.9.2 \
rand_chacha-0.3.1 \
@@ -220,38 +244,39 @@ CARGO_CRATES= addr2line-0.24.2 \
rand_core-0.6.4 \
rand_core-0.9.3 \
redox_syscall-0.2.16 \
- redox_syscall-0.5.13 \
+ redox_syscall-0.5.17 \
redox_users-0.4.6 \
+ redox_users-0.5.2 \
regex-1.11.1 \
regex-automata-0.1.10 \
regex-automata-0.4.9 \
regex-syntax-0.6.29 \
regex-syntax-0.8.5 \
- reqwest-0.12.22 \
+ reqwest-0.12.23 \
reqwest-middleware-0.4.2 \
reqwest-retry-0.7.0 \
retry-policies-0.4.0 \
- rgb-0.8.50 \
+ rgb-0.8.52 \
ring-0.17.14 \
- rustc-demangle-0.1.25 \
+ rustc-demangle-0.1.26 \
rustc-hash-2.1.1 \
- rustix-1.0.7 \
- rustls-0.23.27 \
+ rustix-1.0.8 \
+ rustls-0.23.31 \
rustls-native-certs-0.8.1 \
rustls-pki-types-1.12.0 \
- rustls-webpki-0.103.3 \
- rustversion-1.0.21 \
+ rustls-webpki-0.103.4 \
+ rustversion-1.0.22 \
ryu-1.0.20 \
safe-transmute-0.11.3 \
same-file-1.0.6 \
schannel-0.1.27 \
scopeguard-1.2.0 \
security-framework-2.11.1 \
- security-framework-3.2.0 \
+ security-framework-3.3.0 \
security-framework-sys-2.14.0 \
serde-1.0.219 \
serde_derive-1.0.219 \
- serde_json-1.0.140 \
+ serde_json-1.0.142 \
serde_repr-0.1.20 \
serde_urlencoded-0.7.1 \
sha2-0.10.9 \
@@ -260,21 +285,22 @@ CARGO_CRATES= addr2line-0.24.2 \
shellexpand-3.1.1 \
shlex-1.3.0 \
signal-hook-0.3.18 \
- signal-hook-registry-1.4.5 \
+ signal-hook-registry-1.4.6 \
simple_asn1-0.6.3 \
- slab-0.4.9 \
+ slab-0.4.11 \
smallvec-1.15.1 \
socket2-0.5.10 \
socket2-0.6.0 \
+ spin-0.10.0 \
stable_deref_trait-1.2.0 \
static_assertions-1.1.0 \
str_stack-0.1.0 \
strsim-0.11.1 \
subtle-2.6.1 \
- symbolic-common-12.15.5 \
- symbolic-demangle-12.15.5 \
+ symbolic-common-12.16.2 \
+ symbolic-demangle-12.16.2 \
syn-1.0.109 \
- syn-2.0.102 \
+ syn-2.0.106 \
sync_wrapper-1.0.2 \
synchronoise-1.0.1 \
synstructure-0.13.2 \
@@ -284,10 +310,10 @@ CARGO_CRATES= addr2line-0.24.2 \
tempfile-3.20.0 \
termtree-0.5.1 \
thiserror-1.0.69 \
- thiserror-2.0.12 \
+ thiserror-2.0.15 \
thiserror-impl-1.0.69 \
- thiserror-impl-2.0.12 \
- thread_local-1.1.8 \
+ thiserror-impl-2.0.15 \
+ thread_local-1.1.9 \
time-0.3.41 \
time-core-0.1.4 \
time-macros-0.2.22 \
@@ -299,20 +325,23 @@ CARGO_CRATES= addr2line-0.24.2 \
tokio-native-tls-0.3.1 \
tokio-retry-0.3.0 \
tokio-rustls-0.26.2 \
- tokio-util-0.7.15 \
+ tokio-stream-0.1.17 \
+ tokio-util-0.7.16 \
+ tonic-0.12.3 \
+ tower-0.4.13 \
tower-0.5.2 \
tower-http-0.6.6 \
tower-layer-0.3.3 \
tower-service-0.3.3 \
tracing-0.1.41 \
tracing-appender-0.2.3 \
- tracing-attributes-0.1.29 \
+ tracing-attributes-0.1.30 \
tracing-core-0.1.34 \
tracing-log-0.2.0 \
tracing-serde-0.2.0 \
tracing-subscriber-0.3.19 \
try-lock-0.2.5 \
- twox-hash-1.6.3 \
+ twox-hash-2.1.1 \
typenum-1.18.0 \
ulid-1.2.1 \
unicode-ident-1.0.18 \
@@ -321,7 +350,7 @@ CARGO_CRATES= addr2line-0.24.2 \
url-2.5.4 \
utf8_iter-1.0.4 \
utf8parse-0.2.2 \
- uuid-1.17.0 \
+ uuid-1.18.0 \
valuable-0.1.1 \
vcpkg-0.2.15 \
version_check-0.9.5 \
@@ -340,8 +369,8 @@ CARGO_CRATES= addr2line-0.24.2 \
wasm-timer-0.2.5 \
web-sys-0.3.77 \
web-time-1.1.0 \
- webpki-roots-1.0.0 \
- whoami-1.6.0 \
+ webpki-roots-1.0.2 \
+ whoami-1.6.1 \
winapi-0.3.9 \
winapi-i686-pc-windows-gnu-0.4.0 \
winapi-util-0.1.9 \
@@ -356,32 +385,42 @@ CARGO_CRATES= addr2line-0.24.2 \
windows-sys-0.48.0 \
windows-sys-0.52.0 \
windows-sys-0.59.0 \
+ windows-sys-0.60.2 \
windows-targets-0.48.5 \
windows-targets-0.52.6 \
+ windows-targets-0.53.3 \
windows_aarch64_gnullvm-0.48.5 \
windows_aarch64_gnullvm-0.52.6 \
+ windows_aarch64_gnullvm-0.53.0 \
windows_aarch64_msvc-0.48.5 \
windows_aarch64_msvc-0.52.6 \
+ windows_aarch64_msvc-0.53.0 \
windows_i686_gnu-0.48.5 \
windows_i686_gnu-0.52.6 \
+ windows_i686_gnu-0.53.0 \
windows_i686_gnullvm-0.52.6 \
+ windows_i686_gnullvm-0.53.0 \
windows_i686_msvc-0.48.5 \
windows_i686_msvc-0.52.6 \
+ windows_i686_msvc-0.53.0 \
windows_x86_64_gnu-0.48.5 \
windows_x86_64_gnu-0.52.6 \
+ windows_x86_64_gnu-0.53.0 \
windows_x86_64_gnullvm-0.48.5 \
windows_x86_64_gnullvm-0.52.6 \
+ windows_x86_64_gnullvm-0.53.0 \
windows_x86_64_msvc-0.48.5 \
windows_x86_64_msvc-0.52.6 \
+ windows_x86_64_msvc-0.53.0 \
wit-bindgen-rt-0.39.0 \
writeable-0.6.1 \
yoke-0.8.0 \
yoke-derive-0.8.0 \
- zerocopy-0.8.25 \
- zerocopy-derive-0.8.25 \
+ zerocopy-0.8.26 \
+ zerocopy-derive-0.8.26 \
zerofrom-0.1.6 \
zerofrom-derive-0.1.6 \
zeroize-1.8.1 \
zerotrie-0.2.2 \
- zerovec-0.11.2 \
+ zerovec-0.11.4 \
zerovec-derive-0.11.1
diff --git a/misc/py-hf-xet/distinfo b/misc/py-hf-xet/distinfo
index 8aa49e3c8826..2fff8dd9fcd5 100644
--- a/misc/py-hf-xet/distinfo
+++ b/misc/py-hf-xet/distinfo
@@ -1,6 +1,6 @@
-TIMESTAMP = 1755640942
-SHA256 (hf_xet-1.1.8.tar.gz) = 62a0043e441753bbc446dcb5a3fe40a4d03f5fb9f13589ef1df9ab19252beb53
-SIZE (hf_xet-1.1.8.tar.gz) = 484065
+TIMESTAMP = 1756544028
+SHA256 (hf_xet-1.1.9.tar.gz) = c99073ce404462e909f1d5839b2d14a3827b8fe75ed8aed551ba6609c026c803
+SIZE (hf_xet-1.1.9.tar.gz) = 484242
SHA256 (rust/crates/addr2line-0.24.2.crate) = dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1
SIZE (rust/crates/addr2line-0.24.2.crate) = 39015
SHA256 (rust/crates/adler2-2.0.1.crate) = 320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa
@@ -15,30 +15,40 @@ SHA256 (rust/crates/android-tzdata-0.1.1.crate) = e999941b234f3131b00bc13c22d06e
SIZE (rust/crates/android-tzdata-0.1.1.crate) = 7674
SHA256 (rust/crates/android_system_properties-0.1.5.crate) = 819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311
SIZE (rust/crates/android_system_properties-0.1.5.crate) = 5243
-SHA256 (rust/crates/anstream-0.6.19.crate) = 301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933
-SIZE (rust/crates/anstream-0.6.19.crate) = 28767
+SHA256 (rust/crates/anstream-0.6.20.crate) = 3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192
+SIZE (rust/crates/anstream-0.6.20.crate) = 28797
SHA256 (rust/crates/anstyle-1.0.11.crate) = 862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd
SIZE (rust/crates/anstyle-1.0.11.crate) = 15880
SHA256 (rust/crates/anstyle-parse-0.2.7.crate) = 4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2
SIZE (rust/crates/anstyle-parse-0.2.7.crate) = 21707
-SHA256 (rust/crates/anstyle-query-1.1.3.crate) = 6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9
-SIZE (rust/crates/anstyle-query-1.1.3.crate) = 10190
-SHA256 (rust/crates/anstyle-wincon-3.0.9.crate) = 403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882
-SIZE (rust/crates/anstyle-wincon-3.0.9.crate) = 12561
-SHA256 (rust/crates/anyhow-1.0.98.crate) = e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487
-SIZE (rust/crates/anyhow-1.0.98.crate) = 53334
+SHA256 (rust/crates/anstyle-query-1.1.4.crate) = 9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2
+SIZE (rust/crates/anstyle-query-1.1.4.crate) = 10192
+SHA256 (rust/crates/anstyle-wincon-3.0.10.crate) = 3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a
+SIZE (rust/crates/anstyle-wincon-3.0.10.crate) = 12558
+SHA256 (rust/crates/anyhow-1.0.99.crate) = b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100
+SIZE (rust/crates/anyhow-1.0.99.crate) = 53809
SHA256 (rust/crates/arrayref-0.3.9.crate) = 76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb
SIZE (rust/crates/arrayref-0.3.9.crate) = 9186
SHA256 (rust/crates/arrayvec-0.7.6.crate) = 7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50
SIZE (rust/crates/arrayvec-0.7.6.crate) = 31237
-SHA256 (rust/crates/async-scoped-0.7.1.crate) = 0e7a6a57c8aeb40da1ec037f5d455836852f7a57e69e1b1ad3d8f38ac1d6cadf
-SIZE (rust/crates/async-scoped-0.7.1.crate) = 9163
-SHA256 (rust/crates/async-trait-0.1.88.crate) = e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5
-SIZE (rust/crates/async-trait-0.1.88.crate) = 32084
-SHA256 (rust/crates/autocfg-1.4.0.crate) = ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26
-SIZE (rust/crates/autocfg-1.4.0.crate) = 17712
+SHA256 (rust/crates/async-stream-0.3.6.crate) = 0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476
+SIZE (rust/crates/async-stream-0.3.6.crate) = 13823
+SHA256 (rust/crates/async-stream-impl-0.3.6.crate) = c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d
+SIZE (rust/crates/async-stream-impl-0.3.6.crate) = 4312
+SHA256 (rust/crates/async-trait-0.1.89.crate) = 9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb
+SIZE (rust/crates/async-trait-0.1.89.crate) = 32171
+SHA256 (rust/crates/atomic-waker-1.1.2.crate) = 1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0
+SIZE (rust/crates/atomic-waker-1.1.2.crate) = 12422
+SHA256 (rust/crates/autocfg-1.5.0.crate) = c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8
+SIZE (rust/crates/autocfg-1.5.0.crate) = 18729
+SHA256 (rust/crates/axum-0.7.9.crate) = edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f
+SIZE (rust/crates/axum-0.7.9.crate) = 155272
+SHA256 (rust/crates/axum-core-0.4.5.crate) = 09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199
+SIZE (rust/crates/axum-core-0.4.5.crate) = 22183
SHA256 (rust/crates/backtrace-0.3.75.crate) = 6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002
SIZE (rust/crates/backtrace-0.3.75.crate) = 92665
+SHA256 (rust/crates/base64-0.21.7.crate) = 9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567
+SIZE (rust/crates/base64-0.21.7.crate) = 82576
SHA256 (rust/crates/base64-0.22.1.crate) = 72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6
SIZE (rust/crates/base64-0.22.1.crate) = 81597
SHA256 (rust/crates/bincode-1.3.3.crate) = b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad
@@ -47,22 +57,22 @@ SHA256 (rust/crates/bipbuffer-0.1.2.crate) = 8e33e34adc0a815a65c7ef9a443c5a12655
SIZE (rust/crates/bipbuffer-0.1.2.crate) = 4522
SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
-SHA256 (rust/crates/bitflags-2.9.1.crate) = 1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967
-SIZE (rust/crates/bitflags-2.9.1.crate) = 47913
+SHA256 (rust/crates/bitflags-2.9.2.crate) = 6a65b545ab31d687cff52899d4890855fec459eb6afe0da6417b8a18da87aa29
+SIZE (rust/crates/bitflags-2.9.2.crate) = 47977
SHA256 (rust/crates/blake3-1.8.2.crate) = 3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0
SIZE (rust/crates/blake3-1.8.2.crate) = 205967
SHA256 (rust/crates/block-buffer-0.10.4.crate) = 3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71
SIZE (rust/crates/block-buffer-0.10.4.crate) = 10538
-SHA256 (rust/crates/bumpalo-3.18.1.crate) = 793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee
-SIZE (rust/crates/bumpalo-3.18.1.crate) = 96348
-SHA256 (rust/crates/bytemuck-1.23.1.crate) = 5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422
-SIZE (rust/crates/bytemuck-1.23.1.crate) = 52585
+SHA256 (rust/crates/bumpalo-3.19.0.crate) = 46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43
+SIZE (rust/crates/bumpalo-3.19.0.crate) = 96414
+SHA256 (rust/crates/bytemuck-1.23.2.crate) = 3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677
+SIZE (rust/crates/bytemuck-1.23.2.crate) = 53021
SHA256 (rust/crates/byteorder-1.5.0.crate) = 1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b
SIZE (rust/crates/byteorder-1.5.0.crate) = 23288
SHA256 (rust/crates/bytes-1.10.1.crate) = d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a
SIZE (rust/crates/bytes-1.10.1.crate) = 76779
-SHA256 (rust/crates/cc-1.2.26.crate) = 956a5e21988b87f372569b66183b78babf23ebc2e744b733e4350a752c4dafac
-SIZE (rust/crates/cc-1.2.26.crate) = 107013
+SHA256 (rust/crates/cc-1.2.33.crate) = 3ee0f8803222ba5a7e2777dd72ca451868909b1ac410621b676adf07280e9b5f
+SIZE (rust/crates/cc-1.2.33.crate) = 111970
SHA256 (rust/crates/cfg-if-0.1.10.crate) = 4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822
SIZE (rust/crates/cfg-if-0.1.10.crate) = 7933
SHA256 (rust/crates/cfg-if-1.0.1.crate) = 9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268
@@ -71,18 +81,22 @@ SHA256 (rust/crates/cfg_aliases-0.2.1.crate) = 613afe47fcd5fac7ccf1db93babcb082c
SIZE (rust/crates/cfg_aliases-0.2.1.crate) = 6355
SHA256 (rust/crates/chrono-0.4.41.crate) = c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d
SIZE (rust/crates/chrono-0.4.41.crate) = 234621
-SHA256 (rust/crates/clap-4.5.40.crate) = 40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f
-SIZE (rust/crates/clap-4.5.40.crate) = 57419
-SHA256 (rust/crates/clap_builder-4.5.40.crate) = e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e
-SIZE (rust/crates/clap_builder-4.5.40.crate) = 169191
-SHA256 (rust/crates/clap_derive-4.5.40.crate) = d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce
-SIZE (rust/crates/clap_derive-4.5.40.crate) = 33470
+SHA256 (rust/crates/clap-4.5.45.crate) = 1fc0e74a703892159f5ae7d3aac52c8e6c392f5ae5f359c70b5881d60aaac318
+SIZE (rust/crates/clap-4.5.45.crate) = 58337
+SHA256 (rust/crates/clap_builder-4.5.44.crate) = b3e7f4214277f3c7aa526a59dd3fbe306a370daee1f8b7b8c987069cd8e888a8
+SIZE (rust/crates/clap_builder-4.5.44.crate) = 169799
+SHA256 (rust/crates/clap_derive-4.5.45.crate) = 14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6
+SIZE (rust/crates/clap_derive-4.5.45.crate) = 33545
SHA256 (rust/crates/clap_lex-0.7.5.crate) = b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675
SIZE (rust/crates/clap_lex-0.7.5.crate) = 13469
SHA256 (rust/crates/colorchoice-1.0.4.crate) = b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75
SIZE (rust/crates/colorchoice-1.0.4.crate) = 8196
SHA256 (rust/crates/colored-2.2.0.crate) = 117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c
SIZE (rust/crates/colored-2.2.0.crate) = 35062
+SHA256 (rust/crates/console-api-0.8.1.crate) = 8030735ecb0d128428b64cd379809817e620a40e5001c54465b99ec5feec2857
+SIZE (rust/crates/console-api-0.8.1.crate) = 33145
+SHA256 (rust/crates/console-subscriber-0.4.1.crate) = 6539aa9c6a4cd31f4b1c040f860a1eac9aa80e7df6b05d506a6e7179936d6a01
+SIZE (rust/crates/console-subscriber-0.4.1.crate) = 125969
SHA256 (rust/crates/constant_time_eq-0.3.1.crate) = 7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6
SIZE (rust/crates/constant_time_eq-0.3.1.crate) = 11561
SHA256 (rust/crates/core-foundation-0.9.4.crate) = 91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f
@@ -97,26 +111,26 @@ SHA256 (rust/crates/cpp_demangle-0.4.4.crate) = 96e58d342ad113c2b878f16d5d034c03
SIZE (rust/crates/cpp_demangle-0.4.4.crate) = 79650
SHA256 (rust/crates/cpufeatures-0.2.17.crate) = 59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280
SIZE (rust/crates/cpufeatures-0.2.17.crate) = 13466
-SHA256 (rust/crates/crc32fast-1.4.2.crate) = a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3
-SIZE (rust/crates/crc32fast-1.4.2.crate) = 38491
+SHA256 (rust/crates/crc32fast-1.5.0.crate) = 9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511
+SIZE (rust/crates/crc32fast-1.5.0.crate) = 40723
SHA256 (rust/crates/crossbeam-channel-0.5.15.crate) = 82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2
SIZE (rust/crates/crossbeam-channel-0.5.15.crate) = 92716
SHA256 (rust/crates/crossbeam-queue-0.3.12.crate) = 0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115
SIZE (rust/crates/crossbeam-queue-0.3.12.crate) = 16270
SHA256 (rust/crates/crossbeam-utils-0.8.21.crate) = d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28
SIZE (rust/crates/crossbeam-utils-0.8.21.crate) = 42691
-SHA256 (rust/crates/crunchy-0.2.3.crate) = 43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929
-SIZE (rust/crates/crunchy-0.2.3.crate) = 3775
+SHA256 (rust/crates/crunchy-0.2.4.crate) = 460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5
+SIZE (rust/crates/crunchy-0.2.4.crate) = 3887
SHA256 (rust/crates/crypto-common-0.1.6.crate) = 1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3
SIZE (rust/crates/crypto-common-0.1.6.crate) = 8760
SHA256 (rust/crates/csv-1.3.1.crate) = acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf
SIZE (rust/crates/csv-1.3.1.crate) = 888542
SHA256 (rust/crates/csv-core-0.1.12.crate) = 7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d
SIZE (rust/crates/csv-core-0.1.12.crate) = 26298
-SHA256 (rust/crates/ctor-0.4.2.crate) = a4735f265ba6a1188052ca32d461028a7d1125868be18e287e756019da7607b5
-SIZE (rust/crates/ctor-0.4.2.crate) = 13814
-SHA256 (rust/crates/ctor-proc-macro-0.0.5.crate) = 4f211af61d8efdd104f96e57adf5e426ba1bc3ed7a4ead616e15e5881fd79c4d
-SIZE (rust/crates/ctor-proc-macro-0.0.5.crate) = 2040
+SHA256 (rust/crates/ctor-0.4.3.crate) = ec09e802f5081de6157da9a75701d6c713d8dc3ba52571fd4bd25f412644e8a6
+SIZE (rust/crates/ctor-0.4.3.crate) = 13805
+SHA256 (rust/crates/ctor-proc-macro-0.0.6.crate) = e2931af7e13dc045d8e9d26afccc6fa115d64e115c9c84b1166288b46f6782c2
+SIZE (rust/crates/ctor-proc-macro-0.0.6.crate) = 6435
SHA256 (rust/crates/ctrlc-3.4.7.crate) = 46f93780a459b7d656ef7f071fe699c4d3d2cb201c4b24d085b6ddc505276e73
SIZE (rust/crates/ctrlc-3.4.7.crate) = 14606
SHA256 (rust/crates/debugid-0.8.0.crate) = bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d
@@ -129,8 +143,12 @@ SHA256 (rust/crates/digest-0.10.7.crate) = 9ed9a281f7bc9b7576e61468ba615a66a5c8c
SIZE (rust/crates/digest-0.10.7.crate) = 19557
SHA256 (rust/crates/dirs-5.0.1.crate) = 44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225
SIZE (rust/crates/dirs-5.0.1.crate) = 12255
+SHA256 (rust/crates/dirs-6.0.0.crate) = c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e
+SIZE (rust/crates/dirs-6.0.0.crate) = 14190
SHA256 (rust/crates/dirs-sys-0.4.1.crate) = 520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c
SIZE (rust/crates/dirs-sys-0.4.1.crate) = 10719
+SHA256 (rust/crates/dirs-sys-0.5.0.crate) = e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab
+SIZE (rust/crates/dirs-sys-0.5.0.crate) = 10157
SHA256 (rust/crates/displaydoc-0.2.5.crate) = 97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0
SIZE (rust/crates/displaydoc-0.2.5.crate) = 24219
SHA256 (rust/crates/downcast-0.11.0.crate) = 1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1
@@ -147,12 +165,14 @@ SHA256 (rust/crates/equator-macro-0.4.2.crate) = 44f23cf4b44bfce11a86ace86f8a73f
SIZE (rust/crates/equator-macro-0.4.2.crate) = 6407
SHA256 (rust/crates/equivalent-1.0.2.crate) = 877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f
SIZE (rust/crates/equivalent-1.0.2.crate) = 7419
-SHA256 (rust/crates/errno-0.3.12.crate) = cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18
-SIZE (rust/crates/errno-0.3.12.crate) = 12423
+SHA256 (rust/crates/errno-0.3.13.crate) = 778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad
+SIZE (rust/crates/errno-0.3.13.crate) = 12449
SHA256 (rust/crates/fastrand-2.3.0.crate) = 37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be
SIZE (rust/crates/fastrand-2.3.0.crate) = 15076
SHA256 (rust/crates/findshlibs-0.10.2.crate) = 40b9e59cd0f7e0806cca4be089683ecb6434e602038df21fe6bf6711b2f07f64
SIZE (rust/crates/findshlibs-0.10.2.crate) = 20101
+SHA256 (rust/crates/flate2-1.1.2.crate) = 4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d
+SIZE (rust/crates/flate2-1.1.2.crate) = 76495
SHA256 (rust/crates/fnv-1.0.7.crate) = 3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1
SIZE (rust/crates/fnv-1.0.7.crate) = 11266
SHA256 (rust/crates/foreign-types-0.3.2.crate) = f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1
@@ -191,10 +211,16 @@ SHA256 (rust/crates/getrandom-0.3.3.crate) = 26145e563e54f2cadc477553f1ec5ee650b
SIZE (rust/crates/getrandom-0.3.3.crate) = 49493
SHA256 (rust/crates/gimli-0.31.1.crate) = 07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f
SIZE (rust/crates/gimli-0.31.1.crate) = 279515
+SHA256 (rust/crates/h2-0.4.12.crate) = f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386
+SIZE (rust/crates/h2-0.4.12.crate) = 176264
SHA256 (rust/crates/half-2.6.0.crate) = 459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9
SIZE (rust/crates/half-2.6.0.crate) = 59507
-SHA256 (rust/crates/hashbrown-0.15.4.crate) = 5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5
-SIZE (rust/crates/hashbrown-0.15.4.crate) = 140447
+SHA256 (rust/crates/hashbrown-0.12.3.crate) = 8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888
+SIZE (rust/crates/hashbrown-0.12.3.crate) = 102968
+SHA256 (rust/crates/hashbrown-0.15.5.crate) = 9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1
+SIZE (rust/crates/hashbrown-0.15.5.crate) = 140908
+SHA256 (rust/crates/hdrhistogram-7.5.4.crate) = 765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d
+SIZE (rust/crates/hdrhistogram-7.5.4.crate) = 319746
SHA256 (rust/crates/heapify-0.2.0.crate) = 0049b265b7f201ca9ab25475b22b47fe444060126a51abe00f77d986fc5cc52e
SIZE (rust/crates/heapify-0.2.0.crate) = 10727
SHA256 (rust/crates/heck-0.5.0.crate) = 2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea
@@ -215,14 +241,20 @@ SHA256 (rust/crates/http-body-util-0.1.3.crate) = b021d93e26becf5dc7e1b75b1bed1f
SIZE (rust/crates/http-body-util-0.1.3.crate) = 16975
SHA256 (rust/crates/httparse-1.10.1.crate) = 6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87
SIZE (rust/crates/httparse-1.10.1.crate) = 45190
-SHA256 (rust/crates/hyper-1.6.0.crate) = cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80
-SIZE (rust/crates/hyper-1.6.0.crate) = 153923
+SHA256 (rust/crates/httpdate-1.0.3.crate) = df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9
+SIZE (rust/crates/httpdate-1.0.3.crate) = 10639
+SHA256 (rust/crates/humantime-2.2.0.crate) = 9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f
+SIZE (rust/crates/humantime-2.2.0.crate) = 20646
+SHA256 (rust/crates/hyper-1.7.0.crate) = eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e
+SIZE (rust/crates/hyper-1.7.0.crate) = 157006
SHA256 (rust/crates/hyper-rustls-0.27.7.crate) = e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58
SIZE (rust/crates/hyper-rustls-0.27.7.crate) = 35435
+SHA256 (rust/crates/hyper-timeout-0.5.2.crate) = 2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0
+SIZE (rust/crates/hyper-timeout-0.5.2.crate) = 19222
SHA256 (rust/crates/hyper-tls-0.6.0.crate) = 70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0
SIZE (rust/crates/hyper-tls-0.6.0.crate) = 15052
-SHA256 (rust/crates/hyper-util-0.1.14.crate) = dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb
-SIZE (rust/crates/hyper-util-0.1.14.crate) = 101462
+SHA256 (rust/crates/hyper-util-0.1.16.crate) = 8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e
+SIZE (rust/crates/hyper-util-0.1.16.crate) = 101184
SHA256 (rust/crates/iana-time-zone-0.1.63.crate) = b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8
SIZE (rust/crates/iana-time-zone-0.1.63.crate) = 32919
SHA256 (rust/crates/iana-time-zone-haiku-0.1.2.crate) = f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f
@@ -245,8 +277,10 @@ SHA256 (rust/crates/idna-1.0.3.crate) = 686f825264d630750a544639377bae737628043f
SIZE (rust/crates/idna-1.0.3.crate) = 142515
SHA256 (rust/crates/idna_adapter-1.2.1.crate) = 3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344
SIZE (rust/crates/idna_adapter-1.2.1.crate) = 10389
-SHA256 (rust/crates/indexmap-2.9.0.crate) = cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e
-SIZE (rust/crates/indexmap-2.9.0.crate) = 91214
+SHA256 (rust/crates/indexmap-1.9.3.crate) = bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99
+SIZE (rust/crates/indexmap-1.9.3.crate) = 54653
+SHA256 (rust/crates/indexmap-2.10.0.crate) = fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661
+SIZE (rust/crates/indexmap-2.10.0.crate) = 95836
SHA256 (rust/crates/indoc-2.0.6.crate) = f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd
SIZE (rust/crates/indoc-2.0.6.crate) = 17164
SHA256 (rust/crates/inferno-0.11.21.crate) = 232929e1d75fe899576a3d5c7416ad0d88dbfbb3c3d6aa00873a7408a50ddb88
@@ -275,10 +309,10 @@ SHA256 (rust/crates/jsonwebtoken-9.3.1.crate) = 5a87cc7a48537badeae96744432de36f
SIZE (rust/crates/jsonwebtoken-9.3.1.crate) = 49398
SHA256 (rust/crates/lazy_static-1.5.0.crate) = bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe
SIZE (rust/crates/lazy_static-1.5.0.crate) = 14025
-SHA256 (rust/crates/libc-0.2.172.crate) = d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa
-SIZE (rust/crates/libc-0.2.172.crate) = 791646
-SHA256 (rust/crates/libredox-0.1.3.crate) = c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d
-SIZE (rust/crates/libredox-0.1.3.crate) = 6068
+SHA256 (rust/crates/libc-0.2.175.crate) = 6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543
+SIZE (rust/crates/libc-0.2.175.crate) = 788728
+SHA256 (rust/crates/libredox-0.1.9.crate) = 391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3
+SIZE (rust/crates/libredox-0.1.9.crate) = 7281
SHA256 (rust/crates/linux-raw-sys-0.9.4.crate) = cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12
SIZE (rust/crates/linux-raw-sys-0.9.4.crate) = 2311088
SHA256 (rust/crates/litemap-0.8.0.crate) = 241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956
@@ -291,16 +325,22 @@ SHA256 (rust/crates/log-0.4.27.crate) = 13dc2df351e3202783a1fe0d44375f7295ffb404
SIZE (rust/crates/log-0.4.27.crate) = 48120
SHA256 (rust/crates/lru-slab-0.1.2.crate) = 112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154
SIZE (rust/crates/lru-slab-0.1.2.crate) = 9090
-SHA256 (rust/crates/lz4_flex-0.11.3.crate) = 75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5
-SIZE (rust/crates/lz4_flex-0.11.3.crate) = 40633
+SHA256 (rust/crates/lz4_flex-0.11.5.crate) = 08ab2867e3eeeca90e844d1940eab391c9dc5228783db2ed999acbc0a9ed375a
+SIZE (rust/crates/lz4_flex-0.11.5.crate) = 41977
SHA256 (rust/crates/matchers-0.1.0.crate) = 8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558
SIZE (rust/crates/matchers-0.1.0.crate) = 6948
+SHA256 (rust/crates/matchit-0.7.3.crate) = 0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94
+SIZE (rust/crates/matchit-0.7.3.crate) = 30372
SHA256 (rust/crates/memchr-2.7.5.crate) = 32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0
SIZE (rust/crates/memchr-2.7.5.crate) = 97603
-SHA256 (rust/crates/memmap2-0.9.5.crate) = fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f
-SIZE (rust/crates/memmap2-0.9.5.crate) = 33280
+SHA256 (rust/crates/memmap2-0.9.7.crate) = 483758ad303d734cec05e5c12b41d7e93e6a6390c5e9dae6bdeb7c1259012d28
+SIZE (rust/crates/memmap2-0.9.7.crate) = 33915
SHA256 (rust/crates/memoffset-0.9.1.crate) = 488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a
SIZE (rust/crates/memoffset-0.9.1.crate) = 9032
+SHA256 (rust/crates/mime-0.3.17.crate) = 6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a
+SIZE (rust/crates/mime-0.3.17.crate) = 15712
+SHA256 (rust/crates/minimal-lexical-0.2.1.crate) = 68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a
+SIZE (rust/crates/minimal-lexical-0.2.1.crate) = 94841
SHA256 (rust/crates/miniz_oxide-0.8.9.crate) = 1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316
SIZE (rust/crates/miniz_oxide-0.8.9.crate) = 67132
SHA256 (rust/crates/mio-1.0.4.crate) = 78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c
@@ -317,6 +357,8 @@ SHA256 (rust/crates/nix-0.26.4.crate) = 598beaf3cc6fdd9a5dfb1630c2800c7acd31df7a
SIZE (rust/crates/nix-0.26.4.crate) = 279099
SHA256 (rust/crates/nix-0.30.1.crate) = 74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6
SIZE (rust/crates/nix-0.30.1.crate) = 342015
+SHA256 (rust/crates/nom-7.1.3.crate) = d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a
+SIZE (rust/crates/nom-7.1.3.crate) = 117570
SHA256 (rust/crates/nu-ansi-term-0.46.0.crate) = 77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84
SIZE (rust/crates/nu-ansi-term-0.46.0.crate) = 24311
SHA256 (rust/crates/num-bigint-0.4.6.crate) = a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9
@@ -343,8 +385,8 @@ SHA256 (rust/crates/openssl-macros-0.1.1.crate) = a948666b637a0f465e8564c73e89d4
SIZE (rust/crates/openssl-macros-0.1.1.crate) = 5601
SHA256 (rust/crates/openssl-probe-0.1.6.crate) = d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e
SIZE (rust/crates/openssl-probe-0.1.6.crate) = 8128
-SHA256 (rust/crates/openssl-src-300.5.0+3.5.0.crate) = e8ce546f549326b0e6052b649198487d91320875da901e7bd11a06d1ee3f9c2f
-SIZE (rust/crates/openssl-src-300.5.0+3.5.0.crate) = 10488436
+SHA256 (rust/crates/openssl-src-300.5.2+3.5.2.crate) = d270b79e2926f5150189d475bc7e9d2c69f9c4697b185fa917d5a32b792d21b4
+SIZE (rust/crates/openssl-src-300.5.2+3.5.2.crate) = 10557986
SHA256 (rust/crates/openssl-sys-0.9.109.crate) = 90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571
SIZE (rust/crates/openssl-sys-0.9.109.crate) = 78247
SHA256 (rust/crates/option-ext-0.2.0.crate) = 04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d
@@ -381,8 +423,8 @@ SHA256 (rust/crates/potential_utf-0.1.2.crate) = e5a7c30837279ca13e7c867e9e40053
SIZE (rust/crates/potential_utf-0.1.2.crate) = 9613
SHA256 (rust/crates/powerfmt-0.2.0.crate) = 439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391
SIZE (rust/crates/powerfmt-0.2.0.crate) = 15165
-SHA256 (rust/crates/pprof-0.14.0.crate) = ebbe2f8898beba44815fdc9e5a4ae9c929e21c5dc29b0c774a15555f7f58d6d0
-SIZE (rust/crates/pprof-0.14.0.crate) = 45438
+SHA256 (rust/crates/pprof-0.14.1.crate) = afad4d4df7b31280028245f152d5a575083e2abb822d05736f5e47653e77689f
+SIZE (rust/crates/pprof-0.14.1.crate) = 45413
SHA256 (rust/crates/ppv-lite86-0.2.21.crate) = 85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9
SIZE (rust/crates/ppv-lite86-0.2.21.crate) = 22522
SHA256 (rust/crates/predicates-3.1.3.crate) = a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573
@@ -391,14 +433,20 @@ SHA256 (rust/crates/predicates-core-1.0.9.crate) = 727e462b119fe9c93fd0eb1429a5f
SIZE (rust/crates/predicates-core-1.0.9.crate) = 8618
SHA256 (rust/crates/predicates-tree-1.0.12.crate) = 72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c
SIZE (rust/crates/predicates-tree-1.0.12.crate) = 8392
-SHA256 (rust/crates/proc-macro2-1.0.95.crate) = 02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778
-SIZE (rust/crates/proc-macro2-1.0.95.crate) = 51820
+SHA256 (rust/crates/proc-macro2-1.0.101.crate) = 89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de
+SIZE (rust/crates/proc-macro2-1.0.101.crate) = 53886
SHA256 (rust/crates/prometheus-0.14.0.crate) = 3ca5326d8d0b950a9acd87e6a3f94745394f62e4dae1b1ee22b2bc0c394af43a
SIZE (rust/crates/prometheus-0.14.0.crate) = 90035
SHA256 (rust/crates/prost-0.12.6.crate) = deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29
SIZE (rust/crates/prost-0.12.6.crate) = 21552
+SHA256 (rust/crates/prost-0.13.5.crate) = 2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5
+SIZE (rust/crates/prost-0.13.5.crate) = 32469
SHA256 (rust/crates/prost-derive-0.12.6.crate) = 81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1
SIZE (rust/crates/prost-derive-0.12.6.crate) = 19556
+SHA256 (rust/crates/prost-derive-0.13.5.crate) = 8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d
+SIZE (rust/crates/prost-derive-0.13.5.crate) = 20600
+SHA256 (rust/crates/prost-types-0.13.5.crate) = 52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16
+SIZE (rust/crates/prost-types-0.13.5.crate) = 49145
SHA256 (rust/crates/protobuf-2.28.0.crate) = 106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94
SIZE (rust/crates/protobuf-2.28.0.crate) = 167541
SHA256 (rust/crates/protobuf-3.7.2.crate) = d65a1d4ddae7d8b5de68153b48f6aa3bba8cb002b243dbdbc55a5afbc98f99f4
@@ -425,12 +473,12 @@ SHA256 (rust/crates/quinn-0.11.8.crate) = 626214629cda6781b6dc1d316ba307189c85ba
SIZE (rust/crates/quinn-0.11.8.crate) = 79949
SHA256 (rust/crates/quinn-proto-0.11.12.crate) = 49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e
SIZE (rust/crates/quinn-proto-0.11.12.crate) = 235821
-SHA256 (rust/crates/quinn-udp-0.5.12.crate) = ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842
-SIZE (rust/crates/quinn-udp-0.5.12.crate) = 31825
+SHA256 (rust/crates/quinn-udp-0.5.13.crate) = fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970
+SIZE (rust/crates/quinn-udp-0.5.13.crate) = 32621
SHA256 (rust/crates/quote-1.0.40.crate) = 1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d
SIZE (rust/crates/quote-1.0.40.crate) = 31063
-SHA256 (rust/crates/r-efi-5.2.0.crate) = 74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5
-SIZE (rust/crates/r-efi-5.2.0.crate) = 64764
+SHA256 (rust/crates/r-efi-5.3.0.crate) = 69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f
+SIZE (rust/crates/r-efi-5.3.0.crate) = 64532
SHA256 (rust/crates/rand-0.8.5.crate) = 34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404
SIZE (rust/crates/rand-0.8.5.crate) = 87113
SHA256 (rust/crates/rand-0.9.2.crate) = 6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1
@@ -445,10 +493,12 @@ SHA256 (rust/crates/rand_core-0.9.3.crate) = 99d9a13982dcf210057a8a78572b2217b66
SIZE (rust/crates/rand_core-0.9.3.crate) = 24543
SHA256 (rust/crates/redox_syscall-0.2.16.crate) = fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a
SIZE (rust/crates/redox_syscall-0.2.16.crate) = 24012
-SHA256 (rust/crates/redox_syscall-0.5.13.crate) = 0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6
-SIZE (rust/crates/redox_syscall-0.5.13.crate) = 29489
+SHA256 (rust/crates/redox_syscall-0.5.17.crate) = 5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77
+SIZE (rust/crates/redox_syscall-0.5.17.crate) = 30002
SHA256 (rust/crates/redox_users-0.4.6.crate) = ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43
SIZE (rust/crates/redox_users-0.4.6.crate) = 15585
+SHA256 (rust/crates/redox_users-0.5.2.crate) = a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac
+SIZE (rust/crates/redox_users-0.5.2.crate) = 17280
SHA256 (rust/crates/regex-1.11.1.crate) = b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191
SIZE (rust/crates/regex-1.11.1.crate) = 254170
SHA256 (rust/crates/regex-automata-0.1.10.crate) = 6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132
@@ -459,34 +509,34 @@ SHA256 (rust/crates/regex-syntax-0.6.29.crate) = f162c6dd7b008981e4d40210aca20b4
SIZE (rust/crates/regex-syntax-0.6.29.crate) = 299752
SHA256 (rust/crates/regex-syntax-0.8.5.crate) = 2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c
SIZE (rust/crates/regex-syntax-0.8.5.crate) = 357541
-SHA256 (rust/crates/reqwest-0.12.22.crate) = cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531
-SIZE (rust/crates/reqwest-0.12.22.crate) = 200283
+SHA256 (rust/crates/reqwest-0.12.23.crate) = d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb
+SIZE (rust/crates/reqwest-0.12.23.crate) = 161307
SHA256 (rust/crates/reqwest-middleware-0.4.2.crate) = 57f17d28a6e6acfe1733fe24bcd30774d13bffa4b8a22535b4c8c98423088d4e
SIZE (rust/crates/reqwest-middleware-0.4.2.crate) = 28290
SHA256 (rust/crates/reqwest-retry-0.7.0.crate) = 29c73e4195a6bfbcb174b790d9b3407ab90646976c55de58a6515da25d851178
SIZE (rust/crates/reqwest-retry-0.7.0.crate) = 16006
SHA256 (rust/crates/retry-policies-0.4.0.crate) = 5875471e6cab2871bc150ecb8c727db5113c9338cc3354dc5ee3425b6aa40a1c
SIZE (rust/crates/retry-policies-0.4.0.crate) = 12127
-SHA256 (rust/crates/rgb-0.8.50.crate) = 57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a
-SIZE (rust/crates/rgb-0.8.50.crate) = 21980
+SHA256 (rust/crates/rgb-0.8.52.crate) = 0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce
+SIZE (rust/crates/rgb-0.8.52.crate) = 22449
SHA256 (rust/crates/ring-0.17.14.crate) = a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7
SIZE (rust/crates/ring-0.17.14.crate) = 1502610
-SHA256 (rust/crates/rustc-demangle-0.1.25.crate) = 989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f
-SIZE (rust/crates/rustc-demangle-0.1.25.crate) = 29590
+SHA256 (rust/crates/rustc-demangle-0.1.26.crate) = 56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace
+SIZE (rust/crates/rustc-demangle-0.1.26.crate) = 30340
SHA256 (rust/crates/rustc-hash-2.1.1.crate) = 357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d
SIZE (rust/crates/rustc-hash-2.1.1.crate) = 14154
-SHA256 (rust/crates/rustix-1.0.7.crate) = c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266
-SIZE (rust/crates/rustix-1.0.7.crate) = 414500
-SHA256 (rust/crates/rustls-0.23.27.crate) = 730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321
-SIZE (rust/crates/rustls-0.23.27.crate) = 355915
+SHA256 (rust/crates/rustix-1.0.8.crate) = 11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8
+SIZE (rust/crates/rustix-1.0.8.crate) = 416688
+SHA256 (rust/crates/rustls-0.23.31.crate) = c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc
+SIZE (rust/crates/rustls-0.23.31.crate) = 371259
SHA256 (rust/crates/rustls-native-certs-0.8.1.crate) = 7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3
SIZE (rust/crates/rustls-native-certs-0.8.1.crate) = 31129
SHA256 (rust/crates/rustls-pki-types-1.12.0.crate) = 229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79
SIZE (rust/crates/rustls-pki-types-1.12.0.crate) = 64740
-SHA256 (rust/crates/rustls-webpki-0.103.3.crate) = e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435
-SIZE (rust/crates/rustls-webpki-0.103.3.crate) = 81840
-SHA256 (rust/crates/rustversion-1.0.21.crate) = 8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d
-SIZE (rust/crates/rustversion-1.0.21.crate) = 21001
+SHA256 (rust/crates/rustls-webpki-0.103.4.crate) = 0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc
+SIZE (rust/crates/rustls-webpki-0.103.4.crate) = 84241
+SHA256 (rust/crates/rustversion-1.0.22.crate) = b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d
+SIZE (rust/crates/rustversion-1.0.22.crate) = 21096
SHA256 (rust/crates/ryu-1.0.20.crate) = 28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f
SIZE (rust/crates/ryu-1.0.20.crate) = 48738
SHA256 (rust/crates/safe-transmute-0.11.3.crate) = 3944826ff8fa8093089aba3acb4ef44b9446a99a16f3bf4e74af3f77d340ab7d
@@ -499,16 +549,16 @@ SHA256 (rust/crates/scopeguard-1.2.0.crate) = 94143f37725109f92c262ed2cf5e59bce7
SIZE (rust/crates/scopeguard-1.2.0.crate) = 11619
SHA256 (rust/crates/security-framework-2.11.1.crate) = 897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02
SIZE (rust/crates/security-framework-2.11.1.crate) = 80188
-SHA256 (rust/crates/security-framework-3.2.0.crate) = 271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316
-SIZE (rust/crates/security-framework-3.2.0.crate) = 86095
+SHA256 (rust/crates/security-framework-3.3.0.crate) = 80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c
+SIZE (rust/crates/security-framework-3.3.0.crate) = 86425
SHA256 (rust/crates/security-framework-sys-2.14.0.crate) = 49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32
SIZE (rust/crates/security-framework-sys-2.14.0.crate) = 20537
SHA256 (rust/crates/serde-1.0.219.crate) = 5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6
SIZE (rust/crates/serde-1.0.219.crate) = 78983
SHA256 (rust/crates/serde_derive-1.0.219.crate) = 5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00
SIZE (rust/crates/serde_derive-1.0.219.crate) = 57798
-SHA256 (rust/crates/serde_json-1.0.140.crate) = 20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373
-SIZE (rust/crates/serde_json-1.0.140.crate) = 154852
+SHA256 (rust/crates/serde_json-1.0.142.crate) = 030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7
+SIZE (rust/crates/serde_json-1.0.142.crate) = 155363
SHA256 (rust/crates/serde_repr-0.1.20.crate) = 175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c
SIZE (rust/crates/serde_repr-0.1.20.crate) = 12627
SHA256 (rust/crates/serde_urlencoded-0.7.1.crate) = d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd
@@ -525,18 +575,20 @@ SHA256 (rust/crates/shlex-1.3.0.crate) = 0fda2ff0d084019ba4d7c6f371c95d8fd75ce35
SIZE (rust/crates/shlex-1.3.0.crate) = 18713
SHA256 (rust/crates/signal-hook-0.3.18.crate) = d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2
SIZE (rust/crates/signal-hook-0.3.18.crate) = 50862
-SHA256 (rust/crates/signal-hook-registry-1.4.5.crate) = 9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410
-SIZE (rust/crates/signal-hook-registry-1.4.5.crate) = 19004
+SHA256 (rust/crates/signal-hook-registry-1.4.6.crate) = b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b
+SIZE (rust/crates/signal-hook-registry-1.4.6.crate) = 19277
SHA256 (rust/crates/simple_asn1-0.6.3.crate) = 297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb
SIZE (rust/crates/simple_asn1-0.6.3.crate) = 18505
-SHA256 (rust/crates/slab-0.4.9.crate) = 8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67
-SIZE (rust/crates/slab-0.4.9.crate) = 17108
+SHA256 (rust/crates/slab-0.4.11.crate) = 7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589
+SIZE (rust/crates/slab-0.4.11.crate) = 18549
SHA256 (rust/crates/smallvec-1.15.1.crate) = 67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03
SIZE (rust/crates/smallvec-1.15.1.crate) = 38116
SHA256 (rust/crates/socket2-0.5.10.crate) = e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678
SIZE (rust/crates/socket2-0.5.10.crate) = 58169
SHA256 (rust/crates/socket2-0.6.0.crate) = 233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807
SIZE (rust/crates/socket2-0.6.0.crate) = 57974
+SHA256 (rust/crates/spin-0.10.0.crate) = d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591
+SIZE (rust/crates/spin-0.10.0.crate) = 39654
SHA256 (rust/crates/stable_deref_trait-1.2.0.crate) = a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3
SIZE (rust/crates/stable_deref_trait-1.2.0.crate) = 8054
SHA256 (rust/crates/static_assertions-1.1.0.crate) = a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f
@@ -547,14 +599,14 @@ SHA256 (rust/crates/strsim-0.11.1.crate) = 7da8b5736845d9f2fcb837ea5d9e2628564b3
SIZE (rust/crates/strsim-0.11.1.crate) = 14266
SHA256 (rust/crates/subtle-2.6.1.crate) = 13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292
SIZE (rust/crates/subtle-2.6.1.crate) = 14562
-SHA256 (rust/crates/symbolic-common-12.15.5.crate) = 6a1150bdda9314f6cfeeea801c23f5593c6e6a6c72e64f67e48d723a12b8efdb
-SIZE (rust/crates/symbolic-common-12.15.5.crate) = 27926
-SHA256 (rust/crates/symbolic-demangle-12.15.5.crate) = 9f66537def48fbc704a92e4fdaab7833bc7cb2255faca8182592fb5fa617eb82
-SIZE (rust/crates/symbolic-demangle-12.15.5.crate) = 192344
+SHA256 (rust/crates/symbolic-common-12.16.2.crate) = 9da12f8fecbbeaa1ee62c1d50dc656407e007c3ee7b2a41afce4b5089eaef15e
+SIZE (rust/crates/symbolic-common-12.16.2.crate) = 27976
+SHA256 (rust/crates/symbolic-demangle-12.16.2.crate) = 6fd35afe0ef9d35d3dcd41c67ddf882fc832a387221338153b7cd685a105495c
+SIZE (rust/crates/symbolic-demangle-12.16.2.crate) = 192834
SHA256 (rust/crates/syn-1.0.109.crate) = 72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237
SIZE (rust/crates/syn-1.0.109.crate) = 237611
-SHA256 (rust/crates/syn-2.0.102.crate) = f6397daf94fa90f058bd0fd88429dd9e5738999cca8d701813c80723add80462
-SIZE (rust/crates/syn-2.0.102.crate) = 298760
+SHA256 (rust/crates/syn-2.0.106.crate) = ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6
+SIZE (rust/crates/syn-2.0.106.crate) = 301514
SHA256 (rust/crates/sync_wrapper-1.0.2.crate) = 0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263
SIZE (rust/crates/sync_wrapper-1.0.2.crate) = 6958
SHA256 (rust/crates/synchronoise-1.0.1.crate) = 3dbc01390fc626ce8d1cffe3376ded2b72a11bb70e1c75f404a210e4daa4def2
@@ -573,14 +625,14 @@ SHA256 (rust/crates/termtree-0.5.1.crate) = 8f50febec83f5ee1df3015341d8bd429f2d1
SIZE (rust/crates/termtree-0.5.1.crate) = 8498
SHA256 (rust/crates/thiserror-1.0.69.crate) = b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52
SIZE (rust/crates/thiserror-1.0.69.crate) = 22198
-SHA256 (rust/crates/thiserror-2.0.12.crate) = 567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708
-SIZE (rust/crates/thiserror-2.0.12.crate) = 28693
+SHA256 (rust/crates/thiserror-2.0.15.crate) = 80d76d3f064b981389ecb4b6b7f45a0bf9fdac1d5b9204c7bd6714fecc302850
+SIZE (rust/crates/thiserror-2.0.15.crate) = 29026
SHA256 (rust/crates/thiserror-impl-1.0.69.crate) = 4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1
SIZE (rust/crates/thiserror-impl-1.0.69.crate) = 18365
-SHA256 (rust/crates/thiserror-impl-2.0.12.crate) = 7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d
-SIZE (rust/crates/thiserror-impl-2.0.12.crate) = 21141
-SHA256 (rust/crates/thread_local-1.1.8.crate) = 8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c
-SIZE (rust/crates/thread_local-1.1.8.crate) = 13962
+SHA256 (rust/crates/thiserror-impl-2.0.15.crate) = 44d29feb33e986b6ea906bd9c3559a856983f92371b3eaa5e83782a351623de0
+SIZE (rust/crates/thiserror-impl-2.0.15.crate) = 21214
+SHA256 (rust/crates/thread_local-1.1.9.crate) = f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185
+SIZE (rust/crates/thread_local-1.1.9.crate) = 19315
SHA256 (rust/crates/time-0.3.41.crate) = 8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40
SIZE (rust/crates/time-0.3.41.crate) = 138369
SHA256 (rust/crates/time-core-0.1.4.crate) = c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c
@@ -603,8 +655,14 @@ SHA256 (rust/crates/tokio-retry-0.3.0.crate) = 7f57eb36ecbe0fc510036adff84824dd3
SIZE (rust/crates/tokio-retry-0.3.0.crate) = 6146
SHA256 (rust/crates/tokio-rustls-0.26.2.crate) = 8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b
SIZE (rust/crates/tokio-rustls-0.26.2.crate) = 31655
-SHA256 (rust/crates/tokio-util-0.7.15.crate) = 66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df
-SIZE (rust/crates/tokio-util-0.7.15.crate) = 124255
+SHA256 (rust/crates/tokio-stream-0.1.17.crate) = eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047
+SIZE (rust/crates/tokio-stream-0.1.17.crate) = 38477
+SHA256 (rust/crates/tokio-util-0.7.16.crate) = 14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5
+SIZE (rust/crates/tokio-util-0.7.16.crate) = 127775
+SHA256 (rust/crates/tonic-0.12.3.crate) = 877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52
+SIZE (rust/crates/tonic-0.12.3.crate) = 99380
+SHA256 (rust/crates/tower-0.4.13.crate) = b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c
+SIZE (rust/crates/tower-0.4.13.crate) = 106906
SHA256 (rust/crates/tower-0.5.2.crate) = d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9
SIZE (rust/crates/tower-0.5.2.crate) = 109417
SHA256 (rust/crates/tower-http-0.6.6.crate) = adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2
@@ -617,8 +675,8 @@ SHA256 (rust/crates/tracing-0.1.41.crate) = 784e0ac535deb450455cbfa28a6f0df145ea
SIZE (rust/crates/tracing-0.1.41.crate) = 82448
SHA256 (rust/crates/tracing-appender-0.2.3.crate) = 3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf
SIZE (rust/crates/tracing-appender-0.2.3.crate) = 21964
-SHA256 (rust/crates/tracing-attributes-0.1.29.crate) = 1b1ffbcf9c6f6b99d386e7444eb608ba646ae452a36b39737deb9663b610f662
-SIZE (rust/crates/tracing-attributes-0.1.29.crate) = 38683
+SHA256 (rust/crates/tracing-attributes-0.1.30.crate) = 81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903
+SIZE (rust/crates/tracing-attributes-0.1.30.crate) = 39142
SHA256 (rust/crates/tracing-core-0.1.34.crate) = b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678
SIZE (rust/crates/tracing-core-0.1.34.crate) = 63760
SHA256 (rust/crates/tracing-log-0.2.0.crate) = ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3
@@ -629,8 +687,8 @@ SHA256 (rust/crates/tracing-subscriber-0.3.19.crate) = e8189decb5ac0fa7bc8b96b7c
SIZE (rust/crates/tracing-subscriber-0.3.19.crate) = 198345
SHA256 (rust/crates/try-lock-0.2.5.crate) = e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b
SIZE (rust/crates/try-lock-0.2.5.crate) = 4314
-SHA256 (rust/crates/twox-hash-1.6.3.crate) = 97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675
-SIZE (rust/crates/twox-hash-1.6.3.crate) = 21842
+SHA256 (rust/crates/twox-hash-2.1.1.crate) = 8b907da542cbced5261bd3256de1b3a1bf340a3d37f93425a07362a1d687de56
+SIZE (rust/crates/twox-hash-2.1.1.crate) = 35627
SHA256 (rust/crates/typenum-1.18.0.crate) = 1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f
SIZE (rust/crates/typenum-1.18.0.crate) = 74871
SHA256 (rust/crates/ulid-1.2.1.crate) = 470dbf6591da1b39d43c14523b2b469c86879a53e8b758c8e090a470fe7b1fbe
@@ -647,8 +705,8 @@ SHA256 (rust/crates/utf8_iter-1.0.4.crate) = b6c140620e7ffbb22c2dee59cafe6084a59
SIZE (rust/crates/utf8_iter-1.0.4.crate) = 10437
SHA256 (rust/crates/utf8parse-0.2.2.crate) = 06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821
SIZE (rust/crates/utf8parse-0.2.2.crate) = 13499
-SHA256 (rust/crates/uuid-1.17.0.crate) = 3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d
-SIZE (rust/crates/uuid-1.17.0.crate) = 59014
+SHA256 (rust/crates/uuid-1.18.0.crate) = f33196643e165781c20a5ead5582283a7dacbb87855d867fbc2df3f81eddc1be
+SIZE (rust/crates/uuid-1.18.0.crate) = 59782
SHA256 (rust/crates/valuable-0.1.1.crate) = ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65
SIZE (rust/crates/valuable-0.1.1.crate) = 28679
SHA256 (rust/crates/vcpkg-0.2.15.crate) = accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426
@@ -685,10 +743,10 @@ SHA256 (rust/crates/web-sys-0.3.77.crate) = 33b6dd2ef9186f1f2072e409e99cd22a9753
SIZE (rust/crates/web-sys-0.3.77.crate) = 638246
SHA256 (rust/crates/web-time-1.1.0.crate) = 5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb
SIZE (rust/crates/web-time-1.1.0.crate) = 18026
-SHA256 (rust/crates/webpki-roots-1.0.0.crate) = 2853738d1cc4f2da3a225c18ec6c3721abb31961096e9dbf5ab35fa88b19cfdb
-SIZE (rust/crates/webpki-roots-1.0.0.crate) = 248893
-SHA256 (rust/crates/whoami-1.6.0.crate) = 6994d13118ab492c3c80c1f81928718159254c53c472bf9ce36f8dae4add02a7
-SIZE (rust/crates/whoami-1.6.0.crate) = 24691
+SHA256 (rust/crates/webpki-roots-1.0.2.crate) = 7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2
+SIZE (rust/crates/webpki-roots-1.0.2.crate) = 255109
+SHA256 (rust/crates/whoami-1.6.1.crate) = 5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d
+SIZE (rust/crates/whoami-1.6.1.crate) = 24975
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
@@ -717,40 +775,60 @@ SHA256 (rust/crates/windows-sys-0.52.0.crate) = 282be5f36a8ce781fad8c8ae18fa3f9b
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-sys-0.60.2.crate) = f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb
+SIZE (rust/crates/windows-sys-0.60.2.crate) = 2518479
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-targets-0.53.3.crate) = d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91
+SIZE (rust/crates/windows-targets-0.53.3.crate) = 7099
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_gnullvm-0.53.0.crate) = 86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764
+SIZE (rust/crates/windows_aarch64_gnullvm-0.53.0.crate) = 782443
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_aarch64_msvc-0.53.0.crate) = c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c
+SIZE (rust/crates/windows_aarch64_msvc-0.53.0.crate) = 834446
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_gnu-0.53.0.crate) = c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3
+SIZE (rust/crates/windows_i686_gnu-0.53.0.crate) = 936973
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_gnullvm-0.53.0.crate) = 9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11
+SIZE (rust/crates/windows_i686_gnullvm-0.53.0.crate) = 854056
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_i686_msvc-0.53.0.crate) = 581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d
+SIZE (rust/crates/windows_i686_msvc-0.53.0.crate) = 903450
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_gnu-0.53.0.crate) = 2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba
+SIZE (rust/crates/windows_x86_64_gnu-0.53.0.crate) = 902585
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_gnullvm-0.53.0.crate) = 0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57
+SIZE (rust/crates/windows_x86_64_gnullvm-0.53.0.crate) = 782434
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/windows_x86_64_msvc-0.53.0.crate) = 271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486
+SIZE (rust/crates/windows_x86_64_msvc-0.53.0.crate) = 834400
SHA256 (rust/crates/wit-bindgen-rt-0.39.0.crate) = 6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1
SIZE (rust/crates/wit-bindgen-rt-0.39.0.crate) = 12241
SHA256 (rust/crates/writeable-0.6.1.crate) = ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb
@@ -759,10 +837,10 @@ SHA256 (rust/crates/yoke-0.8.0.crate) = 5f41bb01b8226ef4bfd589436a297c53d118f659
SIZE (rust/crates/yoke-0.8.0.crate) = 28726
SHA256 (rust/crates/yoke-derive-0.8.0.crate) = 38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6
SIZE (rust/crates/yoke-derive-0.8.0.crate) = 7521
-SHA256 (rust/crates/zerocopy-0.8.25.crate) = a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb
-SIZE (rust/crates/zerocopy-0.8.25.crate) = 252714
-SHA256 (rust/crates/zerocopy-derive-0.8.25.crate) = 28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef
-SIZE (rust/crates/zerocopy-derive-0.8.25.crate) = 87671
+SHA256 (rust/crates/zerocopy-0.8.26.crate) = 1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f
+SIZE (rust/crates/zerocopy-0.8.26.crate) = 249223
+SHA256 (rust/crates/zerocopy-derive-0.8.26.crate) = 9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181
+SIZE (rust/crates/zerocopy-derive-0.8.26.crate) = 88080
SHA256 (rust/crates/zerofrom-0.1.6.crate) = 50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5
SIZE (rust/crates/zerofrom-0.1.6.crate) = 5669
SHA256 (rust/crates/zerofrom-derive-0.1.6.crate) = d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502
@@ -771,7 +849,7 @@ SHA256 (rust/crates/zeroize-1.8.1.crate) = ced3678a2879b30306d323f4542626697a464
SIZE (rust/crates/zeroize-1.8.1.crate) = 20029
SHA256 (rust/crates/zerotrie-0.2.2.crate) = 36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595
SIZE (rust/crates/zerotrie-0.2.2.crate) = 74423
-SHA256 (rust/crates/zerovec-0.11.2.crate) = 4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428
-SIZE (rust/crates/zerovec-0.11.2.crate) = 124500
+SHA256 (rust/crates/zerovec-0.11.4.crate) = e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b
+SIZE (rust/crates/zerovec-0.11.4.crate) = 125080
SHA256 (rust/crates/zerovec-derive-0.11.1.crate) = 5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f
SIZE (rust/crates/zerovec-derive-0.11.1.crate) = 21294
diff --git a/multimedia/handbrake/Makefile b/multimedia/handbrake/Makefile
index 6a6567b03279..01d2a8acfc69 100644
--- a/multimedia/handbrake/Makefile
+++ b/multimedia/handbrake/Makefile
@@ -1,6 +1,5 @@
PORTNAME= handbrake
-DISTVERSION= 1.9.2
-PORTREVISION= 3
+DISTVERSION= 1.10.1
CATEGORIES= multimedia
MASTER_SITES= https://github.com/HandBrake/HandBrake/releases/download/${DISTVERSION}/
MASTER_SITES+= https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/:contrib
@@ -13,10 +12,11 @@ MAINTAINER= naito.yuichiro@gmail.com
COMMENT= Versatile DVD ripper and video transcoder
WWW= https://handbrake.fr/
-LICENSE= GPLv2
+LICENSE= GPLv2 FDK_AAC
+LICENSE_COMB= multi
LICENSE_NAME_FDK_AAC= Software License for The Fraunhofer FDK AAC Codec Library for Android
LICENSE_FILE_FDK_AAC= ${WRKDIR}/${DISTFILES:Mfdk*:R:R}/NOTICE
-LICENSE_FILE= ${WRKSRC}/COPYING
+LICENSE_FILE_GPLv2= ${WRKSRC}/COPYING
LICENSE_PERMS_FDK_AAC= dist-mirror pkg-mirror auto-accept
ONLY_FOR_ARCHS= amd64 powerpc powerpc64 powerpc64le
@@ -45,16 +45,16 @@ LIB_DEPENDS= libdbus-1.so:devel/dbus \
USES= autoreconf:build compiler:c11 gmake iconv libtool:build \
localbase:ldflags ninja:build pkgconfig python:build
-CONTRIB_FILES= SVT-AV1-v2.3.0.tar.gz \
+CONTRIB_FILES= SVT-AV1-v3.1.0.tar.gz \
fdk-aac-2.0.3.tar.gz \
- ffmpeg-7.1.tar.bz2 \
+ ffmpeg-7.1.1.tar.bz2 \
libbluray-1.3.4.tar.bz2 \
libdvdnav-6.1.1.tar.bz2 \
libdvdread-6.1.3.tar.bz2 \
dav1d-1.5.1.tar.bz2 \
- dovi_tool-libdovi-3.1.2.tar.gz \
- x265_4.1.tar.gz \
- zimg-3.0.5.tar.gz
+ dovi_tool-libdovi-3.3.2.tar.gz \
+ x265-snapshot-20250729-13276.tar.gz \
+ zimg-snapshot-20250624.tar.gz
.if !defined(PACKAGE_BUILDING)
# DVDCSS version hardcoded in contrib/libdvdread/libdvdread-5.0.0-6-gcb1ae87/src/dvd_input.c (dlopen'ed)
diff --git a/multimedia/handbrake/distinfo b/multimedia/handbrake/distinfo
index 6f6d4ac82c9b..9ad80a170b71 100644
--- a/multimedia/handbrake/distinfo
+++ b/multimedia/handbrake/distinfo
@@ -1,12 +1,12 @@
-TIMESTAMP = 1740479422
-SHA256 (handbrake/HandBrake-1.9.2-source.tar.bz2) = f56696b9863a6c926c0eabdcb980cece9aa222c650278d455ac6873d3220ce49
-SIZE (handbrake/HandBrake-1.9.2-source.tar.bz2) = 9431665
-SHA256 (handbrake/SVT-AV1-v2.3.0.tar.gz) = ebb0b484ef4a0dc281e94342a9f73ad458496f5d3457eca7465bec943910c6c3
-SIZE (handbrake/SVT-AV1-v2.3.0.tar.gz) = 10839376
+TIMESTAMP = 1756263493
+SHA256 (handbrake/HandBrake-1.10.1-source.tar.bz2) = eafa87d64b99c457240675f6b89a7f6aa3c1eb56352ec057a0a0949ba449fe8e
+SIZE (handbrake/HandBrake-1.10.1-source.tar.bz2) = 9484661
+SHA256 (handbrake/SVT-AV1-v3.1.0.tar.gz) = 3999586c261dc3d8690fd1489fc74da4e0fdff9159c8ce2b76ddfac001ad96d3
+SIZE (handbrake/SVT-AV1-v3.1.0.tar.gz) = 10908555
SHA256 (handbrake/fdk-aac-2.0.3.tar.gz) = e25671cd96b10bad896aa42ab91a695a9e573395262baed4e4a2ff178d6a3a78
SIZE (handbrake/fdk-aac-2.0.3.tar.gz) = 2518649
-SHA256 (handbrake/ffmpeg-7.1.tar.bz2) = fd59e6160476095082e94150ada5a6032d7dcc282fe38ce682a00c18e7820528
-SIZE (handbrake/ffmpeg-7.1.tar.bz2) = 13260188
+SHA256 (handbrake/ffmpeg-7.1.1.tar.bz2) = 0c8da2f11579a01e014fc007cbacf5bb4da1d06afd0b43c7f8097ec7c0f143ba
+SIZE (handbrake/ffmpeg-7.1.1.tar.bz2) = 13278839
SHA256 (handbrake/libbluray-1.3.4.tar.bz2) = 478ffd68a0f5dde8ef6ca989b7f035b5a0a22c599142e5cd3ff7b03bbebe5f2b
SIZE (handbrake/libbluray-1.3.4.tar.bz2) = 756323
SHA256 (handbrake/libdvdnav-6.1.1.tar.bz2) = c191a7475947d323ff7680cf92c0fb1be8237701885f37656c64d04e98d18d48
@@ -15,9 +15,9 @@ SHA256 (handbrake/libdvdread-6.1.3.tar.bz2) = ce35454997a208cbe50e91232f0e73fb1a
SIZE (handbrake/libdvdread-6.1.3.tar.bz2) = 395439
SHA256 (handbrake/dav1d-1.5.1.tar.bz2) = 4eddffd108f098e307b93c9da57b6125224dc5877b1b3d157b31be6ae8f1f093
SIZE (handbrake/dav1d-1.5.1.tar.bz2) = 1214503
-SHA256 (handbrake/dovi_tool-libdovi-3.1.2.tar.gz) = 3c74f8f6afdb7d4be97210df201a28a48676b2ebe10c20961176e81e2fd98c36
-SIZE (handbrake/dovi_tool-libdovi-3.1.2.tar.gz) = 450556
-SHA256 (handbrake/x265_4.1.tar.gz) = ef05940bdbf8e2f24c93d799ae8c5d19f43cd235d01c17fa5acf3fa77b48c032
-SIZE (handbrake/x265_4.1.tar.gz) = 1722231
-SHA256 (handbrake/zimg-3.0.5.tar.gz) = a9a0226bf85e0d83c41a8ebe4e3e690e1348682f6a2a7838f1b8cbff1b799bcf
-SIZE (handbrake/zimg-3.0.5.tar.gz) = 326694
+SHA256 (handbrake/dovi_tool-libdovi-3.3.2.tar.gz) = 8ccb1922d7dbb57bc4f2c15c10b90c462f7a5f292efe317c116db923728dd3f1
+SIZE (handbrake/dovi_tool-libdovi-3.3.2.tar.gz) = 489628
+SHA256 (handbrake/x265-snapshot-20250729-13276.tar.gz) = 3feb40d5f7fc37aba193a686a4445efff332f18d0f4830c6af565c3e18d340a8
+SIZE (handbrake/x265-snapshot-20250729-13276.tar.gz) = 1738652
+SHA256 (handbrake/zimg-snapshot-20250624.tar.gz) = 19a96cdc266466be58be86a9271bedb1f080bf4cc14f5ed58ac39dc5b970fd17
+SIZE (handbrake/zimg-snapshot-20250624.tar.gz) = 3217869
diff --git a/multimedia/handbrake/files/patch-contrib_ffmpeg_module.defs b/multimedia/handbrake/files/patch-contrib_ffmpeg_module.defs
index 178198ba7762..1ab6fbcaafbd 100644
--- a/multimedia/handbrake/files/patch-contrib_ffmpeg_module.defs
+++ b/multimedia/handbrake/files/patch-contrib_ffmpeg_module.defs
@@ -1,20 +1,10 @@
-Disable vulkan support.
-Handbrake doesn't require Vulkan but if it is installed in build environment
-(for other ports like QT5), It fails to build Handbrake, because following
-definitions has been removed since vulkan-headers-1.3.238.
-
-* VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME
-* VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME
-
---- contrib/ffmpeg/module.defs.orig 2024-12-01 15:28:40 UTC
+--- contrib/ffmpeg/module.defs.orig 2025-08-08 16:41:24 UTC
+++ contrib/ffmpeg/module.defs
-@@ -34,8 +34,10 @@ FFMPEG.CONFIGURE.extra = \
- --enable-filters \
+@@ -35,6 +35,7 @@ FFMPEG.CONFIGURE.extra = \
--disable-hwaccels \
--disable-vdpau \
-+ --disable-vulkan \
--disable-postproc \
++ --disable-vulkan \
--disable-encoders \
-+ --disable-xlib \
--enable-libmp3lame \
- --enable-encoder=ac3 \
+ --enable-encoder=aac \
diff --git a/multimedia/handbrake/files/patch-libhb_enc__qsv.c b/multimedia/handbrake/files/patch-libhb_enc__qsv.c
deleted file mode 100644
index 51f61011c734..000000000000
--- a/multimedia/handbrake/files/patch-libhb_enc__qsv.c
+++ /dev/null
@@ -1,67 +0,0 @@
---- libhb/enc_qsv.c.orig 2024-12-01 15:28:40 UTC
-+++ libhb/enc_qsv.c
-@@ -174,7 +174,9 @@ static int log_encoder_params(const hb_work_private_t
- {
- const mfxExtCodingOption *option1 = NULL;
- const mfxExtCodingOption2 *option2 = NULL;
-+#if (MFX_VERSION >= 2012)
- const mfxExtAV1ScreenContentTools *extScreenContentCoding = NULL;
-+#endif
- const mfxExtHyperModeParam *extHyperModeOption = NULL;
-
- for (int i = 0; i < videoParam->NumExtParam; i++)
-@@ -188,10 +190,12 @@ static int log_encoder_params(const hb_work_private_t
- {
- option2 = (mfxExtCodingOption2*)videoParam->ExtParam[i];
- }
-+#if (MFX_VERSION >= 2012)
- else if (option->Header.BufferId == MFX_EXTBUFF_AV1_SCREEN_CONTENT_TOOLS)
- {
- extScreenContentCoding = (mfxExtAV1ScreenContentTools*)videoParam->ExtParam[i];
- }
-+#endif
- else if (option->Header.BufferId == MFX_EXTBUFF_HYPER_MODE_PARAM)
- {
- extHyperModeOption = (mfxExtHyperModeParam*)videoParam->ExtParam[i];
-@@ -221,13 +225,14 @@ static int log_encoder_params(const hb_work_private_t
- hb_log("encqsvInit: GopRefDist %"PRIu16" GopPicSize %"PRIu16" NumRefFrame %"PRIu16" IdrInterval %"PRIu16"",
- videoParam->mfx.GopRefDist, videoParam->mfx.GopPicSize, videoParam->mfx.NumRefFrame, videoParam->mfx.IdrInterval);
-
-+#if (MFX_VERSION >= 2012)
- if (extScreenContentCoding && ((extScreenContentCoding->IntraBlockCopy == MFX_CODINGOPTION_ON) || (extScreenContentCoding->Palette == MFX_CODINGOPTION_ON)))
- {
- hb_log("encqsvInit: ScreenContentCoding is enabled IBC %s, Palette %s",
- (extScreenContentCoding->IntraBlockCopy == MFX_CODINGOPTION_ON) ? "on" : "off",
- (extScreenContentCoding->Palette == MFX_CODINGOPTION_ON) ? "on" : "off");
- }
--
-+#endif
- if (pv->qsv_info->capabilities & HB_QSV_CAP_B_REF_PYRAMID)
- {
- hb_log("encqsvInit: BFramesMax %d BRefType %s",
-@@ -1670,7 +1675,9 @@ int encqsvInit(hb_work_object_t *w, hb_job_t *job)
- mfxSession session = (mfxSession)0;
- mfxExtCodingOption option1_buf, *option1 = &option1_buf;
- mfxExtCodingOption2 option2_buf, *option2 = &option2_buf;
-+#if (MFX_VERSION >= 2012)
- mfxExtAV1ScreenContentTools screencont_coding_buf, *screencont_coding = &screencont_coding_buf;
-+#endif
- mfxExtCodingOptionSPSPPS sps_pps_buf, *sps_pps = &sps_pps_buf;
- mfxExtAV1BitstreamParam av1_bitstream_buf, *av1_bitstream = &av1_bitstream_buf;
- mfxExtChromaLocInfo chroma_loc_info_buf, *chroma_loc_info = &chroma_loc_info_buf;
-@@ -1795,6 +1802,7 @@ int encqsvInit(hb_work_object_t *w, hb_job_t *job)
- {
- videoParam.ExtParam[videoParam.NumExtParam++] = (mfxExtBuffer*)hyper_encode;
- }
-+#if (MFX_VERSION >= 2012)
- memset(screencont_coding, 0, sizeof(mfxExtAV1ScreenContentTools));
- screencont_coding->Header.BufferId = MFX_EXTBUFF_AV1_SCREEN_CONTENT_TOOLS;
- screencont_coding->Header.BufferSz = sizeof(mfxExtAV1ScreenContentTools);
-@@ -1802,6 +1810,7 @@ int encqsvInit(hb_work_object_t *w, hb_job_t *job)
- {
- videoParam.ExtParam[videoParam.NumExtParam++] = (mfxExtBuffer*)screencont_coding;
- }
-+#endif
- /* Query actual encoding parameters after MFXVideoENCODE_Init, some of them could be overridden */
- sts = MFXVideoENCODE_GetVideoParam(session, &videoParam);
- if (sts != MFX_ERR_NONE)
diff --git a/multimedia/handbrake/files/patch-libhb_handbrake_qsv__common.h b/multimedia/handbrake/files/patch-libhb_handbrake_qsv__common.h
index 87c487304cad..d96a628ca015 100644
--- a/multimedia/handbrake/files/patch-libhb_handbrake_qsv__common.h
+++ b/multimedia/handbrake/files/patch-libhb_handbrake_qsv__common.h
@@ -1,12 +1,17 @@
---- libhb/handbrake/qsv_common.h.orig 2024-12-01 15:28:40 UTC
+--- libhb/handbrake/qsv_common.h.orig 2025-08-08 16:41:24 UTC
+++ libhb/handbrake/qsv_common.h
-@@ -171,7 +171,9 @@ typedef struct
+@@ -260,8 +260,13 @@ typedef struct
+ {
mfxExtCodingOption2 codingOption2;
- mfxExtVideoSignalInfo videoSignalInfo;
- mfxExtHyperModeParam hyperEncodeParam;
+ hb_triplet_t* hyperEncodeParam;
+#if (MFX_VERSION >= 2012)
mfxExtAV1ScreenContentTools av1ScreenContentToolsParam;
+-
+#endif
- mfxExtChromaLocInfo chromaLocInfo;
- mfxExtMasteringDisplayColourVolume masteringDisplayColourVolume;
- mfxExtContentLightLevelInfo contentLightLevelInfo;
++ mfxExtChromaLocInfo chromaLocInfo;
++ mfxExtMasteringDisplayColourVolume masteringDisplayColourVolume;
++ mfxExtContentLightLevelInfo contentLightLevelInfo;
++ mfxExtAV1BitstreamParam av1BitstreamParam;
+ struct
+ {
+ int b_pyramid;
diff --git a/multimedia/handbrake/files/patch-libhb_qsv__common.c b/multimedia/handbrake/files/patch-libhb_qsv__common.c
index 78580b06be46..b0b892e337e7 100644
--- a/multimedia/handbrake/files/patch-libhb_qsv__common.c
+++ b/multimedia/handbrake/files/patch-libhb_qsv__common.c
@@ -1,6 +1,6 @@
---- libhb/qsv_common.c.orig 2024-12-01 15:28:40 UTC
+--- libhb/qsv_common.c.orig 2025-08-08 16:41:24 UTC
+++ libhb/qsv_common.c
-@@ -463,6 +463,7 @@ int qsv_map_mfx_platform_codename(int mfx_platform_cod
+@@ -390,6 +390,7 @@ int qsv_map_mfx_platform_codename(int mfx_platform_cod
case MFX_PLATFORM_DG2:
case MFX_PLATFORM_ALDERLAKE_N:
case MFX_PLATFORM_KEEMBAY:
@@ -8,7 +8,7 @@
case MFX_PLATFORM_METEORLAKE:
case MFX_PLATFORM_BATTLEMAGE:
case MFX_PLATFORM_ARROWLAKE:
-@@ -471,6 +472,7 @@ int qsv_map_mfx_platform_codename(int mfx_platform_cod
+@@ -398,6 +399,7 @@ int qsv_map_mfx_platform_codename(int mfx_platform_cod
case MFX_PLATFORM_LUNARLAKE:
platform = HB_CPU_PLATFORM_INTEL_LNL;
break;
@@ -16,35 +16,34 @@
default:
platform = HB_CPU_PLATFORM_UNSPECIFIED;
}
-@@ -984,7 +986,7 @@ static void init_ext_av1bitstream_option(mfxExtAV1Bits
- extAV1BitstreamParam->Header.BufferSz = sizeof(mfxExtAV1BitstreamParam);
- extAV1BitstreamParam->WriteIVFHeaders = MFX_CODINGOPTION_OFF;
+@@ -928,6 +930,7 @@ static void init_ext_coding_option2(mfxExtCodingOption
+ extCodingOption2->NumMbPerSlice = 2040; // 1920x1088/4
}
--
+
+#if (MFX_VERSION >= 2012)
- static void init_ext_av1screencontent_tools(mfxExtAV1ScreenContentTools *extScreenContentTools)
+ static void init_ext_av1bitstream_option(mfxExtAV1BitstreamParam *extAV1BitstreamParam)
{
- if (extScreenContentTools == NULL)
-@@ -998,7 +1000,7 @@ static void init_ext_av1screencontent_tools(mfxExtAV1S
+ if (extAV1BitstreamParam == NULL)
+@@ -954,6 +957,7 @@ static void init_ext_av1screencontent_tools(mfxExtAV1S
extScreenContentTools->IntraBlockCopy = MFX_CODINGOPTION_OFF;
extScreenContentTools->Palette = MFX_CODINGOPTION_OFF;
}
--
+#endif
+
static int query_capabilities(mfxSession session, int index, mfxVersion version, hb_qsv_info_t *info, int lowpower)
{
- /*
-@@ -1026,7 +1028,9 @@ static int query_capabilities(mfxSession session, int
+@@ -981,8 +985,10 @@ static int query_capabilities(mfxSession session, int
+ mfxExtChromaLocInfo extChromaLocInfo;
mfxExtMasteringDisplayColourVolume extMasteringDisplayColourVolume;
mfxExtContentLightLevelInfo extContentLightLevelInfo;
- mfxExtAV1BitstreamParam extAV1BitstreamParam;
+#if (MFX_VERSION >= 2012)
+ mfxExtAV1BitstreamParam extAV1BitstreamParam;
mfxExtAV1ScreenContentTools extAV1ScreenContentToolsParam;
+#endif
mfxExtHyperModeParam extHyperEncodeParam;
/* Reset capabilities before querying */
-@@ -1460,6 +1464,7 @@ static int query_capabilities(mfxSession session, int
+@@ -1416,6 +1422,7 @@ static int query_capabilities(mfxSession session, int
info->capabilities |= HB_QSV_CAP_HYPERENCODE;
}
}
@@ -52,7 +51,7 @@
if ((lowpower == MFX_CODINGOPTION_ON) && (info->codec_id == MFX_CODEC_AV1))
{
init_video_param(&videoParam);
-@@ -1494,6 +1499,7 @@ static int query_capabilities(mfxSession session, int
+@@ -1450,6 +1457,7 @@ static int query_capabilities(mfxSession session, int
info->capabilities |= HB_QSV_CAP_AV1_SCREENCONTENT;
}
}
@@ -60,7 +59,7 @@
}
return 0;
-@@ -1935,10 +1941,12 @@ static void log_encoder_capabilities(const int log_lev
+@@ -1891,10 +1899,12 @@ static void log_encoder_capabilities(const int log_lev
strcat(buffer, "+nmpslice");
}
}
@@ -73,15 +72,31 @@
if (caps & HB_QSV_CAP_HYPERENCODE)
{
strcat(buffer, " hyperencode");
-@@ -3011,6 +3019,7 @@ int hb_qsv_param_parse(hb_qsv_param_t *param, hb_qsv_i
- param->hyperEncodeParam.Mode = mode->value;
+@@ -2686,6 +2696,7 @@ int hb_qsv_select_ffmpeg_options(qsv_data_t * qsv_data
+ hb_log("encavcodec: using Low Power mode");
+ }
+
++#if (MFX_VERSION >= 2012)
+ if((qsv_data->qsv_info->capabilities & HB_QSV_CAP_AV1_SCREENCONTENT) &&
+ qsv_data->param.av1ScreenContentToolsParam.IntraBlockCopy)
+ {
+@@ -2705,6 +2716,7 @@ int hb_qsv_select_ffmpeg_options(qsv_data_t * qsv_data
+ hb_log("encavcodec: ScreenContentCoding is enabled Palette %s",
+ qsv_data->param.av1ScreenContentToolsParam.Palette ? "on" : "off");
+ }
++#endif
+
+ // Transcoding Info
+ MFX_STRUCT_TO_AV_OPTS(BRCParamMultiplier)
+@@ -3318,6 +3330,7 @@ int hb_qsv_param_parse(AVDictionary** av_opts, hb_qsv_
+ param->hyperEncodeParam = mode;
}
}
+#if (MFX_VERSION >= 2012)
else if (!strcasecmp(key, "palette"))
{
if (info->capabilities & HB_QSV_CAP_AV1_SCREENCONTENT)
-@@ -3041,6 +3050,7 @@ int hb_qsv_param_parse(hb_qsv_param_t *param, hb_qsv_i
+@@ -3348,6 +3361,7 @@ int hb_qsv_param_parse(AVDictionary** av_opts, hb_qsv_
return HB_QSV_PARAM_UNSUPPORTED;
}
}
@@ -89,32 +104,24 @@
else if (!strcasecmp(key, "async-depth"))
{
int async_depth = hb_qsv_atoi(value, &error);
-@@ -3527,13 +3537,14 @@ int hb_qsv_param_default(hb_qsv_param_t *param, mfxVid
- param->av1BitstreamParam.Header.BufferId = MFX_EXTBUFF_AV1_BITSTREAM_PARAM;
- param->av1BitstreamParam.Header.BufferSz = sizeof(mfxExtAV1BitstreamParam);
- param->av1BitstreamParam.WriteIVFHeaders = MFX_CODINGOPTION_OFF;
+@@ -3617,6 +3631,12 @@ int hb_qsv_param_default(hb_qsv_param_t *param, hb_qsv
+ // introduced in API 2.5
+ param->hyperEncodeParam = hb_triplet4key(hb_qsv_hyper_encode_modes, "off");
+
++ memset(&param->av1BitstreamParam, 0, sizeof(mfxExtAV1BitstreamParam));
++ param->av1BitstreamParam.Header.BufferId = MFX_EXTBUFF_AV1_BITSTREAM_PARAM;
++ param->av1BitstreamParam.Header.BufferSz = sizeof(mfxExtAV1BitstreamParam);
++ param->av1BitstreamParam.WriteIVFHeaders = MFX_CODINGOPTION_OFF;
++
+#if (MFX_VERSION >= 2012)
// introduced in API 2.11
memset(&param->av1ScreenContentToolsParam, 0, sizeof(mfxExtAV1ScreenContentTools));
param->av1ScreenContentToolsParam.Header.BufferId = MFX_EXTBUFF_AV1_SCREEN_CONTENT_TOOLS;
- param->av1ScreenContentToolsParam.Header.BufferSz = sizeof(mfxExtAV1ScreenContentTools);
- param->av1ScreenContentToolsParam.IntraBlockCopy = MFX_CODINGOPTION_OFF;
- param->av1ScreenContentToolsParam.Palette = MFX_CODINGOPTION_OFF;
--
-+#endif
- // GOP & rate control
- param->gop.b_pyramid = 1; // enabled by default (if supported)
- param->gop.gop_pic_size = -1; // set automatically
-@@ -3607,10 +3618,12 @@ int hb_qsv_param_default(hb_qsv_param_t *param, mfxVid
- {
- param->videoParam->ExtParam[param->videoParam->NumExtParam++] = (mfxExtBuffer*)&param->av1BitstreamParam;
- }
-+#if (MFX_VERSION >= 2012)
- if (info->capabilities & HB_QSV_CAP_AV1_SCREENCONTENT)
- {
- param->videoParam->ExtParam[param->videoParam->NumExtParam++] = (mfxExtBuffer*)&param->av1ScreenContentToolsParam;
- }
+@@ -3639,6 +3659,7 @@ int hb_qsv_param_default(hb_qsv_param_t *param, hb_qsv
+ param->rc.vbv_buffer_init = .0; // set automatically
+
+ param->low_power = 0;
+#endif
+
#if defined(_WIN32) || defined(__MINGW32__)
if (info->capabilities & HB_QSV_CAP_LOWPOWER_ENCODE)
- {
diff --git a/multimedia/handbrake/files/patch-make_include_contrib.defs b/multimedia/handbrake/files/patch-make_include_contrib.defs
new file mode 100644
index 000000000000..058246d98b42
--- /dev/null
+++ b/multimedia/handbrake/files/patch-make_include_contrib.defs
@@ -0,0 +1,11 @@
+--- make/include/contrib.defs.orig 2025-08-23 10:38:18 UTC
++++ make/include/contrib.defs
+@@ -60,7 +60,7 @@ define import.CONTRIB.defs
+ $(1).EXTRACT.target = $$($(1).build/).stamp.$$($(1).name).extract
+ define $(1).EXTRACT
+ $$(RM.exe) -fr $$($(1).EXTRACT.dir/)
+- $$(TAR.exe) xfC $$($(1).FETCH.distfile) $$($(1).build/)
++ $$(TAR.exe) xfC $$($(1).FETCH.distfile) $$($(1).build/) --no-xattrs
+ $$(TOUCH.exe) $$@
+ endef
+
diff --git a/multimedia/handbrake/pkg-plist b/multimedia/handbrake/pkg-plist
index 58dff1638400..47c05301ae8f 100644
--- a/multimedia/handbrake/pkg-plist
+++ b/multimedia/handbrake/pkg-plist
@@ -3,37 +3,20 @@ bin/HandBrakeCLI
%%X11%%bin/HandBrake
%%X11%%share/applications/fr.handbrake.ghb.desktop
%%X11%%share/icons/hicolor/scalable/apps/fr.handbrake.ghb.svg
-%%X11%%share/locale/af/LC_MESSAGES/ghb.mo
%%X11%%share/locale/bg/LC_MESSAGES/ghb.mo
%%X11%%share/locale/ca/LC_MESSAGES/ghb.mo
%%X11%%share/locale/co/LC_MESSAGES/ghb.mo
-%%X11%%share/locale/cs/LC_MESSAGES/ghb.mo
-%%X11%%share/locale/da/LC_MESSAGES/ghb.mo
%%X11%%share/locale/de/LC_MESSAGES/ghb.mo
%%X11%%share/locale/es/LC_MESSAGES/ghb.mo
%%X11%%share/locale/eu/LC_MESSAGES/ghb.mo
%%X11%%share/locale/fi/LC_MESSAGES/ghb.mo
%%X11%%share/locale/fr/LC_MESSAGES/ghb.mo
-%%X11%%share/locale/he/LC_MESSAGES/ghb.mo
-%%X11%%share/locale/hr/LC_MESSAGES/ghb.mo
%%X11%%share/locale/it/LC_MESSAGES/ghb.mo
%%X11%%share/locale/ja/LC_MESSAGES/ghb.mo
-%%X11%%share/locale/ka/LC_MESSAGES/ghb.mo
%%X11%%share/locale/ko/LC_MESSAGES/ghb.mo
%%X11%%share/locale/nl/LC_MESSAGES/ghb.mo
-%%X11%%share/locale/no/LC_MESSAGES/ghb.mo
-%%X11%%share/locale/pl/LC_MESSAGES/ghb.mo
-%%X11%%share/locale/pt/LC_MESSAGES/ghb.mo
%%X11%%share/locale/pt_BR/LC_MESSAGES/ghb.mo
-%%X11%%share/locale/ro/LC_MESSAGES/ghb.mo
-%%X11%%share/locale/ru/LC_MESSAGES/ghb.mo
-%%X11%%share/locale/si/LC_MESSAGES/ghb.mo
-%%X11%%share/locale/sk/LC_MESSAGES/ghb.mo
%%X11%%share/locale/sl_SI/LC_MESSAGES/ghb.mo
%%X11%%share/locale/sv/LC_MESSAGES/ghb.mo
-%%X11%%share/locale/th/LC_MESSAGES/ghb.mo
-%%X11%%share/locale/tr/LC_MESSAGES/ghb.mo
-%%X11%%share/locale/uk_UA/LC_MESSAGES/ghb.mo
%%X11%%share/locale/zh_CN/LC_MESSAGES/ghb.mo
-%%X11%%share/locale/zh_TW/LC_MESSAGES/ghb.mo
%%X11%%share/metainfo/fr.handbrake.ghb.metainfo.xml
diff --git a/multimedia/wf-recorder/files/patch-fix-ffmpeg8 b/multimedia/wf-recorder/files/patch-fix-ffmpeg8
new file mode 100644
index 000000000000..68bf8d5643ce
--- /dev/null
+++ b/multimedia/wf-recorder/files/patch-fix-ffmpeg8
@@ -0,0 +1,27 @@
+From 560bb92d3ddaeb31d7af77d22d01b0050b45bebe Mon Sep 17 00:00:00 2001
+From: Scott Moreau <oreaus@gmail.com>
+Date: Tue, 8 Oct 2024 12:56:55 -0600
+Subject: [PATCH] frame-writer: Track ffmpeg changes (#279)
+
+* frame-writer: Track ffmpeg changes
+
+The frame_rate variable has been made private API.
+
+* frame-writer: Remove comment
+---
+ src/frame-writer.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git src/frame-writer.cpp src/frame-writer.cpp
+index 2a5ba17..b8abe51 100644
+--- src/frame-writer.cpp
++++ src/frame-writer.cpp
+@@ -371,7 +371,7 @@ void FrameWriter::init_video_filters(const AVCodec *codec)
+ this->videoCodecCtx->height = filter_output->h;
+ this->videoCodecCtx->pix_fmt = (AVPixelFormat)filter_output->format;
+ this->videoCodecCtx->time_base = filter_output->time_base;
+- this->videoCodecCtx->framerate = filter_output->frame_rate; // can be 1/0 if unknown
++ this->videoCodecCtx->framerate = AVRational{1,0};
+ this->videoCodecCtx->sample_aspect_ratio = filter_output->sample_aspect_ratio;
+
+ this->hw_frame_context = av_buffersink_get_hw_frames_ctx(
diff --git a/net-mgmt/netdata/pkg-plist b/net-mgmt/netdata/pkg-plist
index 50c65f5bfefd..8619498d2a60 100644
--- a/net-mgmt/netdata/pkg-plist
+++ b/net-mgmt/netdata/pkg-plist
@@ -566,7 +566,7 @@ sbin/systemd-cat-native
%%DASHBOARD%%%%DATADIR%%/web/v3/1083.bfcffcae47e37eafd532.chunk.js.LICENSE.txt
%%DASHBOARD%%%%DATADIR%%/web/v3/1083.d61abf3771ce679d59cf.css
%%DASHBOARD%%%%DATADIR%%/web/v3/1220.308e2174e62c44e06938.chunk.js
-%%DASHBOARD%%%%DATADIR%%/web/v3/127.b38f17ae8eb1%%PYTHON_SUFFIX%%d3aa9.chunk.js
+%%DASHBOARD%%%%DATADIR%%/web/v3/127.b38f17ae8eb1311d3aa9.chunk.js
%%DASHBOARD%%%%DATADIR%%/web/v3/1526.ea56050e11a00e20d98f.chunk.js
%%DASHBOARD%%%%DATADIR%%/web/v3/1608.b6e817e2bb513f0f92f7.chunk.js
%%DASHBOARD%%%%DATADIR%%/web/v3/1658.bbd335679cb24cf069ef.chunk.js
diff --git a/net-mgmt/tcpreplay/Makefile b/net-mgmt/tcpreplay/Makefile
index bfe73313f623..375e86229fd9 100644
--- a/net-mgmt/tcpreplay/Makefile
+++ b/net-mgmt/tcpreplay/Makefile
@@ -1,5 +1,5 @@
PORTNAME= tcpreplay
-DISTVERSION= 4.5.1
+DISTVERSION= 4.5.2
CATEGORIES= net-mgmt
MASTER_SITES= https://github.com/appneta/${PORTNAME}/releases/download/v${DISTVERSION}/
@@ -23,10 +23,15 @@ CONFIGURE_ARGS= --disable-libopts-install \
TEST_TARGET= test
-OPTIONS_DEFINE= LIBPCAP_PORTS
-LIBPCAP_PORTS_DESC= Build with net/libpcap instead of from the base OS
-# needs .so version (see: 262976)
+OPTIONS_DEFINE= LIBPCAP_PORTS
+LIBPCAP_PORTS_DESC= Build with net/libpcap instead of from the base OS
+
+# needs .so version (libpcap.so:net/libpcap uses libpcap from the base system)
LIBPCAP_PORTS_LIB_DEPENDS= libpcap.so.1:net/libpcap
LIBPCAP_PORTS_CONFIGURE_OFF= --with-libpcap=/usr/lib
+post-patch:
+ @${REINPLACE_CMD} -e '/make test/s|make|${MAKE_CMD}|' \
+ ${WRKSRC}/Makefile.in
+
.include <bsd.port.mk>
diff --git a/net-mgmt/tcpreplay/distinfo b/net-mgmt/tcpreplay/distinfo
index fc9e9a47463a..7675ec8b79ba 100644
--- a/net-mgmt/tcpreplay/distinfo
+++ b/net-mgmt/tcpreplay/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1721131125
-SHA256 (tcpreplay-4.5.1.tar.xz) = 5126613f783062b43f514b05ad981376050a8fee35b03c8de4445ddeefd95049
-SIZE (tcpreplay-4.5.1.tar.xz) = 809628
+TIMESTAMP = 1756274419
+SHA256 (tcpreplay-4.5.2.tar.xz) = 2df15bc6d49f96a77617d137049f998193bbae95c1a31b04ca02856a24cbf384
+SIZE (tcpreplay-4.5.2.tar.xz) = 818824
diff --git a/net-mgmt/tcpreplay/files/patch-Makefile.in b/net-mgmt/tcpreplay/files/patch-Makefile.in
deleted file mode 100644
index 9d6e23e9e94a..000000000000
--- a/net-mgmt/tcpreplay/files/patch-Makefile.in
+++ /dev/null
@@ -1,11 +0,0 @@
---- Makefile.in.orig 2024-07-12 17:15:27 UTC
-+++ Makefile.in
-@@ -900,7 +900,7 @@ test:
-
- test:
- echo Making test in $(TEST_DIR)
-- cd $(TEST_DIR) && make test
-+ cd $(TEST_DIR) && gmake test
-
- dlt_names:
- cat @SAVEFILE_C@ | $(top_builddir)/scripts/dlt2name.pl src/dlt_names.h
diff --git a/net-mgmt/tcpreplay/files/patch-lib_queue.h b/net-mgmt/tcpreplay/files/patch-lib_queue.h
new file mode 100644
index 000000000000..8159c28745ae
--- /dev/null
+++ b/net-mgmt/tcpreplay/files/patch-lib_queue.h
@@ -0,0 +1,18 @@
+--- lib/queue.h.orig 2025-08-27 06:21:35 UTC
++++ lib/queue.h
+@@ -36,7 +36,8 @@
+ * @(#)queue.h 8.5 (Berkeley) 8/20/94
+ */
+
+-#pragma once
++#ifndef _SYS_QUEUE_H_
++#define _SYS_QUEUE_H_
+
+ /*
+ * This file defines five types of data structures: singly-linked lists,
+@@ -506,3 +507,5 @@ struct { \
+ else \
+ (elm2)->field.cqe_prev->field.cqe_next = (elm2); \
+ } while (0)
++
++#endif /* !_SYS_QUEUE_H_ */
diff --git a/net-mgmt/tcpreplay/files/patch-src_fragroute_mod.c b/net-mgmt/tcpreplay/files/patch-src_fragroute_mod.c
deleted file mode 100644
index d4eb02fa98b1..000000000000
--- a/net-mgmt/tcpreplay/files/patch-src_fragroute_mod.c
+++ /dev/null
@@ -1,15 +0,0 @@
---- src/fragroute/mod.c.orig 2023-12-31 18:39:02 UTC
-+++ src/fragroute/mod.c
-@@ -8,11 +8,11 @@
- */
-
- #include "mod.h"
-+#include "lib/queue.h"
- #include "defines.h"
- #include "config.h"
- #include "common.h"
- #include "argv.h"
--#include "lib/queue.h"
- #include <ctype.h>
- #include <stdio.h>
- #include <stdlib.h>
diff --git a/net-mgmt/tcpreplay/files/patch-src_fragroute_pkt.h b/net-mgmt/tcpreplay/files/patch-src_fragroute_pkt.h
deleted file mode 100644
index ec36392985f8..000000000000
--- a/net-mgmt/tcpreplay/files/patch-src_fragroute_pkt.h
+++ /dev/null
@@ -1,13 +0,0 @@
---- src/fragroute/pkt.h.orig 2023-12-31 18:39:02 UTC
-+++ src/fragroute/pkt.h
-@@ -8,9 +8,9 @@
-
- #pragma once
-
-+#include "lib/queue.h"
- #include "defines.h"
- #include "config.h"
--#include "lib/queue.h"
- #include <sys/time.h>
-
- #ifdef HAVE_LIBDNET
diff --git a/ports-mgmt/Makefile b/ports-mgmt/Makefile
index cf436293cf0f..1803545359c4 100644
--- a/ports-mgmt/Makefile
+++ b/ports-mgmt/Makefile
@@ -82,5 +82,6 @@
SUBDIR += submodules2tuple
SUBDIR += synth
SUBDIR += wanted-ports
+ SUBDIR += zig2tuple
.include <bsd.port.subdir.mk>
diff --git a/ports-mgmt/zig2tuple/Makefile b/ports-mgmt/zig2tuple/Makefile
new file mode 100644
index 000000000000..409d788e9355
--- /dev/null
+++ b/ports-mgmt/zig2tuple/Makefile
@@ -0,0 +1,20 @@
+PORTNAME= zig2tuple
+DISTVERSION= g20250703
+CATEGORIES= ports-mgmt
+
+MAINTAINER= kenrap@kennethraplee.com
+COMMENT= Generate ZIG_TUPLE knob for Zig ports
+WWW= https://github.com/kenrap/zig2tuple
+
+LICENSE= BSD2CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+USES= zig
+
+USE_GITHUB= yes
+GH_ACCOUNT= kenrap
+GH_TAGNAME= cead685e8f565c60f611b88eb51fd529a76752cf
+
+PLIST_FILES= bin/${PORTNAME}
+
+.include <bsd.port.mk>
diff --git a/ports-mgmt/zig2tuple/distinfo b/ports-mgmt/zig2tuple/distinfo
new file mode 100644
index 000000000000..f72a20df04f4
--- /dev/null
+++ b/ports-mgmt/zig2tuple/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1751726671
+SHA256 (zig/kenrap-zig2tuple-g20250703-cead685e8f565c60f611b88eb51fd529a76752cf_GH0.tar.gz) = 000d6ee991f7eaa28cafd78973933ef98cbf0feecb5f1005ad662ffd1a13fce4
+SIZE (zig/kenrap-zig2tuple-g20250703-cead685e8f565c60f611b88eb51fd529a76752cf_GH0.tar.gz) = 3062
diff --git a/ports-mgmt/zig2tuple/pkg-descr b/ports-mgmt/zig2tuple/pkg-descr
new file mode 100644
index 000000000000..6e86a4926a36
--- /dev/null
+++ b/ports-mgmt/zig2tuple/pkg-descr
@@ -0,0 +1,3 @@
+zig2tuple is a FreeBSD ports utility that converts Zig Object Notation
+dependency entries (build.zig.zon files) to the ZIG_TUPLE knob that is later
+consumed the USES=zig machinery.
diff --git a/security/logcheck/Makefile b/security/logcheck/Makefile
index 4f25c9303239..3b7ac320f85c 100644
--- a/security/logcheck/Makefile
+++ b/security/logcheck/Makefile
@@ -1,6 +1,5 @@
PORTNAME= logcheck
-DISTVERSION= 1.4.6
-PORTREVISION= 1
+DISTVERSION= 1.4.7
CATEGORIES= security
MASTER_SITES= DEBIAN_POOL
DISTNAME= ${PORTNAME}_${PORTVERSION}
@@ -27,7 +26,7 @@ SUB_LIST+= CRON=${PORT_OPTIONS:MCRON} \
DBDIR=${DBDIR} \
LOGCHECK_GROUP=${LOGCHECK_GROUP} \
LOGCHECK_USER=${LOGCHECK_USER}
-WRKSRC= ${WRKDIR}/${PORTNAME}
+WRKSRC= ${WRKDIR}/${PORTNAME}-${DISTVERSION}
USERS= ${LOGCHECK_USER}
GROUPS= ${LOGCHECK_GROUP}
PLIST_SUB+= CHGRP=${CHGRP} \
diff --git a/security/logcheck/distinfo b/security/logcheck/distinfo
index 85c870f831b1..17a096f598ac 100644
--- a/security/logcheck/distinfo
+++ b/security/logcheck/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1754867993
-SHA256 (logcheck_1.4.6.tar.xz) = 1c038ac8bfce551e84d7be5022bfd56482f2d70ee6a8cb7a4499227f318b627d
-SIZE (logcheck_1.4.6.tar.xz) = 143620
+TIMESTAMP = 1756511752
+SHA256 (logcheck_1.4.7.tar.xz) = cc160cbcac28f39388e8b96e462c4e62d005453b6957f1f0eaa8c093ff9cf3df
+SIZE (logcheck_1.4.7.tar.xz) = 143776
diff --git a/security/logcheck/files/patch-rulefiles_linux_ignore.d.paranoid_ssh b/security/logcheck/files/patch-rulefiles_linux_ignore.d.paranoid_ssh
index 6b8987a2c2fc..924527f2d62d 100644
--- a/security/logcheck/files/patch-rulefiles_linux_ignore.d.paranoid_ssh
+++ b/security/logcheck/files/patch-rulefiles_linux_ignore.d.paranoid_ssh
@@ -1,10 +1,10 @@
---- rulefiles/linux/ignore.d.paranoid/ssh.orig 2025-08-06 20:24:39 UTC
+--- rulefiles/linux/ignore.d.paranoid/ssh.orig 2025-08-25 23:42:11 UTC
+++ rulefiles/linux/ignore.d.paranoid/ssh
@@ -1,5 +1,5 @@
# https://sources.debian.org/src/pam/1.5.3-7/modules/pam_unix/pam_unix_sess.c/#L100
--^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[0-9]+\]: pam_[[:alnum:]]+\(sshd?:session\): session opened for user [^[:space:]]+\(uid=[0-9]+\) by \(uid=[0-9]+\)$
-+^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[0-9]+\]: pam_[[:alnum:]]+\(sshd?:session\): session opened for user [^[:space:]]+\(uid=[0-9]+\) by \(uid=[0-9]+\)$
+-^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[0-9]+\]: pam_[[:alnum:]]+\(sshd?:session\): session opened for user [^[:space:]]+\(uid=[0-9]+\) by [^[:space:]]*\(uid=[0-9]+\)$
++^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[0-9]+\]: pam_[[:alnum:]]+\(sshd?:session\): session opened for user [^[:space:]]+\(uid=[0-9]+\) by [^[:space:]]*\(uid=[0-9]+\)$
# https://sources.debian.org/src/pam/1.5.3-7/modules/pam_unix/pam_unix_sess.c/#L130
--^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[0-9]+\]: pam_[[:alnum:]]+\(sshd?:session\): session closed for user [^[:space:]]+$
-+^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)\[[0-9]+\]: pam_[[:alnum:]]+\(sshd?:session\): session closed for user [^[:space:]]+$
+-^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[0-9]+\]: pam_[[:alnum:]]+\(sshd?:session\): session closed for user [^[:space:]]+$
++^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[0-9]+\]: pam_[[:alnum:]]+\(sshd?:session\): session closed for user [^[:space:]]+$
diff --git a/security/logcheck/files/patch-rulefiles_linux_ignore.d.server_ssh b/security/logcheck/files/patch-rulefiles_linux_ignore.d.server_ssh
index ce4fbbc0d9f5..3deda7e94af3 100644
--- a/security/logcheck/files/patch-rulefiles_linux_ignore.d.server_ssh
+++ b/security/logcheck/files/patch-rulefiles_linux_ignore.d.server_ssh
@@ -1,147 +1,147 @@
---- rulefiles/linux/ignore.d.server/ssh.orig 2025-08-06 20:24:39 UTC
+--- rulefiles/linux/ignore.d.server/ssh.orig 2025-08-25 23:42:06 UTC
+++ rulefiles/linux/ignore.d.server/ssh
@@ -2,108 +2,108 @@
# gssapi-keyex is added by https://salsa.debian.org/ssh-team/openssh/-/blob/master/debian/patches/gssapi.patch -- this may be moved to a different package in future!
# sshd_config(5) lists: gssapi-with-mic,hostbased, keyboard-interactive, none, password, publickey
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: Accepted (gssapi(-with-mic|-keyex)?|password|publickey|keyboard-interactive/pam|hostbased) for [^[:space:]]+ from [.:[:xdigit:]]+ port [[:digit:]]+ ssh2(: (RSA|ECDSA|ED25519) (SHA256:[0-9a-zA-Z+/=]{43}|(MD5:)?([[:xdigit:]]{2}:){15}[[:xdigit:]]{2}))?$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: Accepted (gssapi(-with-mic|-keyex)?|password|publickey|keyboard-interactive/pam|hostbased) for [^[:space:]]+ from [.:[:xdigit:]]+ port [[:digit:]]+ ssh2(: (RSA|ECDSA|ED25519) (SHA256:[0-9a-zA-Z+/=]{43}|(MD5:)?([[:xdigit:]]{2}:){15}[[:xdigit:]]{2}))?$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: Accepted (gssapi(-with-mic|-keyex)?|password|publickey|keyboard-interactive/pam|hostbased) for [^[:space:]]+ from [.:[:xdigit:]]+ port [[:digit:]]+ ssh2(: (RSA|ECDSA|ED25519) (SHA256:[0-9a-zA-Z+/=]{43}|(MD5:)?([[:xdigit:]]{2}:){15}[[:xdigit:]]{2}))?$
# https://salsa.debian.org/ssh-team/openssh/-/blob/master/gss-serv-krb5.c#L103
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: Authorized to [^[:space:]]+, krb5 principal [^[:space:]]+ \(krb5_kuserok\)$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: Authorized to [^[:space:]]+, krb5 principal [^[:space:]]+ \(krb5_kuserok\)$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: Authorized to [^[:space:]]+, krb5 principal [^[:space:]]+ \(krb5_kuserok\)$
# possibly https://salsa.debian.org/ssh-team/openssh/-/blob/master/packet.c#L1985 and #L1508
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: Disconnecting: Bad packet length [[:digit:]]+\.$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: Disconnecting: Bad packet length [[:digit:]]+\.$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: Disconnecting: Bad packet length [[:digit:]]+\.$
# # possibly https://salsa.debian.org/ssh-team/openssh/-/blob/master/packet.c#L1586 (via #L1985)
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: Disconnecting: Corrupted MAC on input\.$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: Disconnecting: Corrupted MAC on input\.$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: Disconnecting: Corrupted MAC on input\.$
# https://salsa.debian.org/ssh-team/openssh/-/blob/master/packet.c#L1735
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: Received disconnect from [.:[:xdigit:]]+ port [[:digit:]]+:[[:digit:]]+: .+$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: Received disconnect from [.:[:xdigit:]]+ port [[:digit:]]+:[[:digit:]]+: .+$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: Received disconnect from [.:[:xdigit:]]+ port [[:digit:]]+:[[:digit:]]+: .+$
# https://salsa.debian.org/ssh-team/openssh/-/blob/master/packet.c#1912
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: Disconnected from ((invalid|authenticating) )?(user [^[:space:]]+ )?[.:[:xdigit:]]+ port [[:digit:]]+( \[preauth\])?$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: Disconnected from ((invalid|authenticating) )?(user [^[:space:]]+ )?[.:[:xdigit:]]+ port [[:digit:]]+( \[preauth\])?$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: Disconnected from ((invalid|authenticating) )?(user [^[:space:]]+ )?[.:[:xdigit:]]+ port [[:digit:]]+( \[preauth\])?$
# https://salsa.debian.org/ssh-team/openssh/-/blob/master/packet.c#1905 and 1906
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: Connection (closed|reset) by ((invalid|authenticating) )?(user [^[:space:]]+ )?[.:[:xdigit:]]+ port [[:digit:]]+( \[preauth\])?$
-+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: Connection (closed|reset) by ((invalid|authenticating) )?(user [^[:space:]]+ )?[.:[:xdigit:]]+ port [[:digit:]]+( \[preauth\])?$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: Connection (closed|reset) by ((invalid|authenticating) )?(user [^[:space:]]* )?[.:[:xdigit:]]+ port [[:digit:]]+( \[preauth\])?$
++^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: Connection (closed|reset) by ((invalid|authenticating) )?(user [^[:space:]]* )?[.:[:xdigit:]]+ port [[:digit:]]+( \[preauth\])?$
^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: Server listening on [.:[:xdigit:]]+ port [[:digit:]]+\.$
## packet.c#1927 (logdie("Unable to negotiate with %s: %s. "...))
# offer is something like diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 or ecdsa-sha2-nistp256-cert-v01@openssh.com
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: Unable to negotiate with [.:[:xdigit:]]+ port [[:digit:]]+: no matching (key exchange|host key) method found\. Their offer: [[:alnum:]@.,-]+ \[preauth\]$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: Unable to negotiate with [.:[:xdigit:]]+ port [[:digit:]]+: no matching (key exchange|host key) method found\. Their offer: [[:alnum:]@.,-]+ \[preauth\]$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: Unable to negotiate with [.:[:xdigit:]]+ port [[:digit:]]+: no matching (key exchange|host key) method found\. Their offer: [[:alnum:]@.,-]+ \[preauth\]$
# packet.c#L133 (message is at ssherr.c#L87)
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: ssh_dispatch_run_fatal: Connection from user [^[:space:]]+ [.:[:xdigit:]]+ port [[:digit:]]+: message authentication code incorrect$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: ssh_dispatch_run_fatal: Connection from user [^[:space:]]+ [.:[:xdigit:]]+ port [[:digit:]]+: message authentication code incorrect$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: ssh_dispatch_run_fatal: Connection from user [^[:space:]]+ [.:[:xdigit:]]+ port [[:digit:]]+: message authentication code incorrect$
# possibly https://salsa.debian.org/ssh-team/openssh/-/blob/master/auth.c#L344 (via packet.c#L1985)
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: Disconnecting: Too many authentication failures for [^[:space:]]* \[preauth\]$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: Disconnecting: Too many authentication failures for [^[:space:]]* \[preauth\]$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: Disconnecting: Too many authentication failures for [^[:space:]]* \[preauth\]$
# https://salsa.debian.org/ssh-team/openssh/-/blob/master/auth.c#L290-297
# 'invalid user' and UNKNOWN can be returned by ssh_remote_ipaddr() - see packet.c
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: Failed (keyboard-interactive/pam|password|none) for (invalid user )?[^[:space:]]+ from ([.:[:xdigit:]]+|UNKNOWN) port [[:digit:]]+ ssh2$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: Failed (keyboard-interactive/pam|password|none) for (invalid user )?[^[:space:]]+ from ([.:[:xdigit:]]+|UNKNOWN) port [[:digit:]]+ ssh2$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: Failed (keyboard-interactive/pam|password|none) for (invalid user )?[^[:space:]]+ from ([.:[:xdigit:]]+|UNKNOWN) port [[:digit:]]+ ssh2$
# https://salsa.debian.org/ssh-team/openssh/-/blob/master/auth.c#L494
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: Invalid user [^[:space:]]+ from ([.:[:xdigit:]]+|UNKNOWN) port [[:digit:]]+$
-+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: Invalid user [^[:space:]]+ from ([.:[:xdigit:]]+|UNKNOWN) port [[:digit:]]+$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: Invalid user [^[:space:]]* from ([.:[:xdigit:]]+|UNKNOWN) port [[:digit:]]+$
++^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: Invalid user [^[:space:]]* from ([.:[:xdigit:]]+|UNKNOWN) port [[:digit:]]+$
# auth.c #L286
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: Postponed keyboard-interactive(/pam)? for (invalid user )?[^[:space:]]+ from [.:[:xdigit:]]+ port [[:digit:]]+ ssh2( \[preauth\])?$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: Postponed keyboard-interactive(/pam)? for (invalid user )?[^[:space:]]+ from [.:[:xdigit:]]+ port [[:digit:]]+ ssh2( \[preauth\])?$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: Postponed keyboard-interactive(/pam)? for (invalid user )?[^[:space:]]+ from [.:[:xdigit:]]+ port [[:digit:]]+ ssh2( \[preauth\])?$
# not found in code?
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: input_userauth_request: invalid user [^[:space:]]+ \[preauth\]$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: input_userauth_request: invalid user [^[:space:]]+ \[preauth\]$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: input_userauth_request: invalid user [^[:space:]]+ \[preauth\]$
# https://salsa.debian.org/ssh-team/openssh/-/blob/master/auth.c#L157-158 and #L185-186
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: User [^[:space:]]+ from [-_.[:alnum:]]+ not allowed because (listed in Deny|not listed in Allow)Users$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: User [^[:space:]]+ from [-_.[:alnum:]]+ not allowed because (listed in Deny|not listed in Allow)Users$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: User [^[:space:]]+ from [-_.[:alnum:]]+ not allowed because (listed in Deny|not listed in Allow)Users$
#https://salsa.debian.org/ssh-team/openssh/-/blob/master/auth.c#L208-209
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: User [^[:space:]]+ from [-_.[:alnum:]]+ not allowed because none of user's groups are listed in AllowGroups$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: User [^[:space:]]+ from [-_.[:alnum:]]+ not allowed because none of user's groups are listed in AllowGroups$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: User [^[:space:]]+ from [-_.[:alnum:]]+ not allowed because none of user's groups are listed in AllowGroups$
#' https://salsa.debian.org/ssh-team/openssh/-/blob/master/auth.c#L195-196
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: User [^[:space:]]+ from [-_.[:alnum:]]+ not allowed because a group is listed in DenyGroups$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: User [^[:space:]]+ from [-_.[:alnum:]]+ not allowed because a group is listed in DenyGroups$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: User [^[:space:]]+ from [-_.[:alnum:]]+ not allowed because a group is listed in DenyGroups$
# not found - auth_pam.c#L397 is close (but wont match without a ":" after "PAM")
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: PAM pam_putenv: delete non-existent entry; [[:alnum:]]+$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: PAM pam_putenv: delete non-existent entry; [[:alnum:]]+$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: PAM pam_putenv: delete non-existent entry; [[:alnum:]]+$
# canohost.c#L85
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: Nasty PTR record "[.:[:xdigit:]]+" is set up for [.:[:xdigit:]]+, ignoring$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: Nasty PTR record "[.:[:xdigit:]]+" is set up for [.:[:xdigit:]]+, ignoring$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: Nasty PTR record "[.:[:xdigit:]]+" is set up for [.:[:xdigit:]]+, ignoring$
# possibly from auth-shadow.c#L96? think you would want to know if this was happening
--#^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: error: Could not get shadow information for NOUSER$
+-#^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: error: Could not get shadow information for NOUSER$
+#^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: error: Could not get shadow information for NOUSER$
# sshd.c#L380
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: fatal: Timeout before authentication for [.:[:xdigit:]]+ port [[:digit:]]+$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: fatal: Timeout before authentication for [.:[:xdigit:]]+ port [[:digit:]]+$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: fatal: Timeout before authentication for [.:[:xdigit:]]+ port [[:digit:]]+$
# sshd.c#L977
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: fatal: recv_rexec_state: ssh_msg_recv failed$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: fatal: recv_rexec_state: ssh_msg_recv failed$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: fatal: recv_rexec_state: ssh_msg_recv failed$
# eg from auth2-pubkey.c#L291
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: fatal: userauth_pubkey: send packet: Connection reset by peer \[preauth\]$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: fatal: userauth_pubkey: send packet: Connection reset by peer \[preauth\]$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: fatal: userauth_pubkey: send packet: Connection reset by peer \[preauth\]$
# kex.c#1630 (verbose_f("Connection closed by remote host"))
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: error: kex_exchange_identification: Connection closed by remote host$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: error: kex_exchange_identification: Connection closed by remote host$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: error: kex_exchange_identification: Connection closed by remote host$
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: error: kex_exchange_identification: read: Connection reset by peer$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: error: kex_exchange_identification: read: Connection reset by peer$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: error: kex_exchange_identification: read: Connection reset by peer$
# kex.c#L1672 (verbose_f("client sent invalid protocol identifier "...))
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: error: kex_exchange_identification: client sent invalid protocol identifier ".+"$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: error: kex_exchange_identification: client sent invalid protocol identifier ".+"$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: error: kex_exchange_identification: client sent invalid protocol identifier ".+"$
# sshconnect.c#L1585 (sshpkt_fatal(ssh, r, "banner exchange"))
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: banner exchange: Connection from [.:[:xdigit:]]+ port [[:digit:]]+: invalid format$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: banner exchange: Connection from [.:[:xdigit:]]+ port [[:digit:]]+: invalid format$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: banner exchange: Connection from [.:[:xdigit:]]+ port [[:digit:]]+: invalid format$
# kex.c#L1646-1647
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: error: kex_exchange_identification: banner line contains invalid characters$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: error: kex_exchange_identification: banner line contains invalid characters$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: error: kex_exchange_identification: banner line contains invalid characters$
# kex.c#L1720
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: error: Protocol major versions differ: 2 vs\. 1$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: error: Protocol major versions differ: 2 vs\. 1$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: error: Protocol major versions differ: 2 vs\. 1$
# ssherr.c#L101 (SSH_ERR_NO_PROTOCOL_VERSION)
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: banner exchange: Connection from [.:[:xdigit:]]+ port [[:digit:]]+: could not read protocol version$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: banner exchange: Connection from [.:[:xdigit:]]+ port [[:digit:]]+: could not read protocol version$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: banner exchange: Connection from [.:[:xdigit:]]+ port [[:digit:]]+: could not read protocol version$
# subsystem.c#L1964
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: subsystem request for sftp by user [^[:space:]]+$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: subsystem request for sftp by user [^[:space:]]+$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: subsystem request for sftp by user [^[:space:]]+$
# loginrec.c#L1439 --- you would want this message reported?
--#^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: syslogin_perform_logout: logout\(\) returned an error$
+-#^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: syslogin_perform_logout: logout\(\) returned an error$
+#^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: syslogin_perform_logout: logout\(\) returned an error$
# not sure where this is from
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: refused connect from [:[:alnum:]._-]+ \([:[:alnum:].]+\)$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: refused connect from [:[:alnum:]._-]+ \([:[:alnum:].]+\)$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: refused connect from [:[:alnum:]._-]+ \([:[:alnum:].]+\)$
# unclear if this is still generated
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: nss_ldap: reconnect(ing|ed) to LDAP server(\.\.\.| after [[:digit:]]+ attempt\(s\))$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: nss_ldap: reconnect(ing|ed) to LDAP server(\.\.\.| after [[:digit:]]+ attempt\(s\))$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: nss_ldap: reconnect(ing|ed) to LDAP server(\.\.\.| after [[:digit:]]+ attempt\(s\))$
# tcp wrappers - not sure what generates these, or if they are up-to-date
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: warning: /etc/hosts\.(allow|deny), line [[:digit:]]+: can't verify hostname: getaddrinfo\([._[:alnum:]-]+, AF_INET\) failed$
--^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd\[[[:digit:]]+\]: warning: /etc/hosts\.(allow|deny), line [[:digit:]]+: host name/(name|address) mismatch: [._[:alnum:]-]+ != [._[:alnum:]-]+$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: warning: /etc/hosts\.(allow|deny), line [[:digit:]]+: can't verify hostname: getaddrinfo\([._[:alnum:]-]+, AF_INET\) failed$
+-^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd-session\[[[:digit:]]+\]: warning: /etc/hosts\.(allow|deny), line [[:digit:]]+: host name/(name|address) mismatch: [._[:alnum:]-]+ != [._[:alnum:]-]+$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: warning: /etc/hosts\.(allow|deny), line [[:digit:]]+: can't verify hostname: getaddrinfo\([._[:alnum:]-]+, AF_INET\) failed$
+^(\w{3} [ :[:digit:]]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ sshd(-session)?\[[[:digit:]]+\]: warning: /etc/hosts\.(allow|deny), line [[:digit:]]+: host name/(name|address) mismatch: [._[:alnum:]-]+ != [._[:alnum:]-]+$
diff --git a/sysutils/Makefile b/sysutils/Makefile
index 6d3010facc14..ef56557ae95d 100755
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -1204,6 +1204,7 @@
SUBDIR += rubygem-license_scout
SUBDIR += rubygem-log4r
SUBDIR += rubygem-logify
+ SUBDIR += rubygem-mdless
SUBDIR += rubygem-mogilefs-client
SUBDIR += rubygem-mothra
SUBDIR += rubygem-murder
diff --git a/sysutils/backrest/Makefile b/sysutils/backrest/Makefile
index 1131474364d9..a32d4618d3ed 100644
--- a/sysutils/backrest/Makefile
+++ b/sysutils/backrest/Makefile
@@ -1,6 +1,6 @@
PORTNAME= backrest
DISTVERSIONPREFIX= v
-DISTVERSION= 1.9.1
+DISTVERSION= 1.9.2
CATEGORIES= sysutils
MASTER_SITES= LOCAL/dtxdf/${PORTNAME}/
DISTFILES= ${PORTNAME}-${DISTVERSIONPREFIX}${DISTVERSION}.frontend${EXTRACT_SUFX}
diff --git a/sysutils/backrest/distinfo b/sysutils/backrest/distinfo
index 014848e583e4..a36034c35da4 100644
--- a/sysutils/backrest/distinfo
+++ b/sysutils/backrest/distinfo
@@ -1,7 +1,7 @@
-TIMESTAMP = 1754687606
-SHA256 (go/sysutils_backrest/backrest-v1.9.1/backrest-v1.9.1.frontend.tar.gz) = a98f2a5118a8ae21195810a74d2dd75edfbe2a42b9640a9d5ed0ecee763fe217
-SIZE (go/sysutils_backrest/backrest-v1.9.1/backrest-v1.9.1.frontend.tar.gz) = 3921109
-SHA256 (go/sysutils_backrest/backrest-v1.9.1/v1.9.1.mod) = d54134afa60728e72c45328001a861c4b8c5252da6b8bb15c4719de6857479cc
-SIZE (go/sysutils_backrest/backrest-v1.9.1/v1.9.1.mod) = 3643
-SHA256 (go/sysutils_backrest/backrest-v1.9.1/v1.9.1.zip) = d4f21ba819d16e122acfcd3eb321845d85a69972263040f00936c29abcf3d274
-SIZE (go/sysutils_backrest/backrest-v1.9.1/v1.9.1.zip) = 814669
+TIMESTAMP = 1756425760
+SHA256 (go/sysutils_backrest/backrest-v1.9.2/backrest-v1.9.2.frontend.tar.gz) = 4ba2eb8bd3e4e72b29d8d46449fcac8320cfdc721f997974df48fedaf8af4024
+SIZE (go/sysutils_backrest/backrest-v1.9.2/backrest-v1.9.2.frontend.tar.gz) = 3923028
+SHA256 (go/sysutils_backrest/backrest-v1.9.2/v1.9.2.mod) = d54134afa60728e72c45328001a861c4b8c5252da6b8bb15c4719de6857479cc
+SIZE (go/sysutils_backrest/backrest-v1.9.2/v1.9.2.mod) = 3643
+SHA256 (go/sysutils_backrest/backrest-v1.9.2/v1.9.2.zip) = e16fc7dc2f0f352f101f9d2cddd299752322113ad1f8b5debddf4b6066c31eda
+SIZE (go/sysutils_backrest/backrest-v1.9.2/v1.9.2.zip) = 819691
diff --git a/sysutils/kassiber/Makefile b/sysutils/kassiber/Makefile
index fb88788fcf60..9e968019d444 100644
--- a/sysutils/kassiber/Makefile
+++ b/sysutils/kassiber/Makefile
@@ -1,12 +1,13 @@
PORTNAME= kassiber
DISTVERSIONPREFIX= v
-DISTVERSION= 0.0.2
+DISTVERSION= 0.0.3
CATEGORIES= sysutils
MAINTAINER= fuz@FreeBSD.org
COMMENT= Smuggle programs into jails
LICENSE= BSD2CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE.txt
USES= uidfix
USE_GITHUB= yes
diff --git a/sysutils/kassiber/distinfo b/sysutils/kassiber/distinfo
index 666ac10c2681..71b9a41d888f 100644
--- a/sysutils/kassiber/distinfo
+++ b/sysutils/kassiber/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1752687787
-SHA256 (crest-kassiber-v0.0.2_GH0.tar.gz) = f8b990c797f9f7360187da0210ba1eadc0856f30e4c9ecb622861e57c2512735
-SIZE (crest-kassiber-v0.0.2_GH0.tar.gz) = 9799
+TIMESTAMP = 1756249184
+SHA256 (crest-kassiber-v0.0.3_GH0.tar.gz) = 89aa3237b3787270b2d4d32d731c1503b10ca4f56d9ad073979c21f240dbbeff
+SIZE (crest-kassiber-v0.0.3_GH0.tar.gz) = 10644
diff --git a/sysutils/kassiber/files/patch-main.c b/sysutils/kassiber/files/patch-main.c
deleted file mode 100644
index 3a6e598e28ff..000000000000
--- a/sysutils/kassiber/files/patch-main.c
+++ /dev/null
@@ -1,14 +0,0 @@
---- main.c.orig 2025-07-30 19:54:07 UTC
-+++ main.c
-@@ -302,7 +302,11 @@ openat_retry(const int dfd, const char *const path, in
- if (fd >= 0 || errno != EINTR) {
- return fd;
- } else {
-+#ifdef __powerpc__
-+ return openat_retry(dfd, path, flags, mode);
-+#else
- __attribute__((musttail)) return openat_retry(dfd, path, flags, mode);
-+#endif
- }
- }
-
diff --git a/sysutils/py-healthchecks/Makefile b/sysutils/py-healthchecks/Makefile
index 04f881daa09c..dc1371790a93 100644
--- a/sysutils/py-healthchecks/Makefile
+++ b/sysutils/py-healthchecks/Makefile
@@ -1,6 +1,6 @@
PORTNAME= healthchecks
DISTVERSIONPREFIX= v
-DISTVERSION= 3.10
+DISTVERSION= 3.11
CATEGORIES= sysutils python
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/sysutils/py-healthchecks/distinfo b/sysutils/py-healthchecks/distinfo
index ab854ba59b73..14a3b585457c 100644
--- a/sysutils/py-healthchecks/distinfo
+++ b/sysutils/py-healthchecks/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1749595062
-SHA256 (healthchecks-healthchecks-v3.10_GH0.tar.gz) = 81fcc6577771ba966e45e35976f084419e1637b3f595e42d91556054a7a1b6d6
-SIZE (healthchecks-healthchecks-v3.10_GH0.tar.gz) = 4868195
+TIMESTAMP = 1756493028
+SHA256 (healthchecks-healthchecks-v3.11_GH0.tar.gz) = bd0249067128d2b1be0a9d528c9bb536573ec51f4de98105c50369c49b3e840e
+SIZE (healthchecks-healthchecks-v3.11_GH0.tar.gz) = 5153184
diff --git a/sysutils/py-healthchecks/files/patch-hc_lib_webauthn.py b/sysutils/py-healthchecks/files/patch-hc_lib_webauthn.py
deleted file mode 100644
index 24494bdf19db..000000000000
--- a/sysutils/py-healthchecks/files/patch-hc_lib_webauthn.py
+++ /dev/null
@@ -1,11 +0,0 @@
---- hc/lib/webauthn.py.orig 2025-06-11 05:51:38 UTC
-+++ hc/lib/webauthn.py
-@@ -14,8 +14,6 @@ from fido2.webauthn import (
- UserVerificationRequirement,
- )
-
--fido2.features.webauthn_json_mapping.enabled = True
--
-
- class CreateHelper:
- def __init__(self, rp_id: str, credentials: Iterable[bytes]):
diff --git a/sysutils/py-healthchecks/pkg-plist b/sysutils/py-healthchecks/pkg-plist
index 8cf35605944b..f6a6f063afa9 100644
--- a/sysutils/py-healthchecks/pkg-plist
+++ b/sysutils/py-healthchecks/pkg-plist
@@ -491,6 +491,7 @@ bin/hcks
%%HOMEDIR%%/hc/api/tests/__init__.py
%%HOMEDIR%%/hc/api/tests/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
%%HOMEDIR%%/hc/api/tests/__pycache__/test_admin%%PYTHON_TAG%%.opt-1.pyc
+%%HOMEDIR%%/hc/api/tests/__pycache__/test_auth%%PYTHON_TAG%%.opt-1.pyc
%%HOMEDIR%%/hc/api/tests/__pycache__/test_badge%%PYTHON_TAG%%.opt-1.pyc
%%HOMEDIR%%/hc/api/tests/__pycache__/test_bounces%%PYTHON_TAG%%.opt-1.pyc
%%HOMEDIR%%/hc/api/tests/__pycache__/test_channel_model%%PYTHON_TAG%%.opt-1.pyc
@@ -515,6 +516,7 @@ bin/hcks
%%HOMEDIR%%/hc/api/tests/__pycache__/test_notify_discord%%PYTHON_TAG%%.opt-1.pyc
%%HOMEDIR%%/hc/api/tests/__pycache__/test_notify_email%%PYTHON_TAG%%.opt-1.pyc
%%HOMEDIR%%/hc/api/tests/__pycache__/test_notify_github%%PYTHON_TAG%%.opt-1.pyc
+%%HOMEDIR%%/hc/api/tests/__pycache__/test_notify_googlechat%%PYTHON_TAG%%.opt-1.pyc
%%HOMEDIR%%/hc/api/tests/__pycache__/test_notify_gotify%%PYTHON_TAG%%.opt-1.pyc
%%HOMEDIR%%/hc/api/tests/__pycache__/test_notify_group%%PYTHON_TAG%%.opt-1.pyc
%%HOMEDIR%%/hc/api/tests/__pycache__/test_notify_matrix%%PYTHON_TAG%%.opt-1.pyc
@@ -551,6 +553,7 @@ bin/hcks
%%HOMEDIR%%/hc/api/tests/__pycache__/test_tokenbucket%%PYTHON_TAG%%.opt-1.pyc
%%HOMEDIR%%/hc/api/tests/__pycache__/test_update_check%%PYTHON_TAG%%.opt-1.pyc
%%HOMEDIR%%/hc/api/tests/test_admin.py
+%%HOMEDIR%%/hc/api/tests/test_auth.py
%%HOMEDIR%%/hc/api/tests/test_badge.py
%%HOMEDIR%%/hc/api/tests/test_bounces.py
%%HOMEDIR%%/hc/api/tests/test_channel_model.py
@@ -575,6 +578,7 @@ bin/hcks
%%HOMEDIR%%/hc/api/tests/test_notify_discord.py
%%HOMEDIR%%/hc/api/tests/test_notify_email.py
%%HOMEDIR%%/hc/api/tests/test_notify_github.py
+%%HOMEDIR%%/hc/api/tests/test_notify_googlechat.py
%%HOMEDIR%%/hc/api/tests/test_notify_gotify.py
%%HOMEDIR%%/hc/api/tests/test_notify_group.py
%%HOMEDIR%%/hc/api/tests/test_notify_matrix.py
@@ -663,6 +667,7 @@ bin/hcks
%%HOMEDIR%%/hc/front/tests/__pycache__/test_add_github%%PYTHON_TAG%%.opt-1.pyc
%%HOMEDIR%%/hc/front/tests/__pycache__/test_add_github_save%%PYTHON_TAG%%.opt-1.pyc
%%HOMEDIR%%/hc/front/tests/__pycache__/test_add_github_select%%PYTHON_TAG%%.opt-1.pyc
+%%HOMEDIR%%/hc/front/tests/__pycache__/test_add_googlechat%%PYTHON_TAG%%.opt-1.pyc
%%HOMEDIR%%/hc/front/tests/__pycache__/test_add_gotify%%PYTHON_TAG%%.opt-1.pyc
%%HOMEDIR%%/hc/front/tests/__pycache__/test_add_group%%PYTHON_TAG%%.opt-1.pyc
%%HOMEDIR%%/hc/front/tests/__pycache__/test_add_matrix%%PYTHON_TAG%%.opt-1.pyc
@@ -755,6 +760,7 @@ bin/hcks
%%HOMEDIR%%/hc/front/tests/test_add_github.py
%%HOMEDIR%%/hc/front/tests/test_add_github_save.py
%%HOMEDIR%%/hc/front/tests/test_add_github_select.py
+%%HOMEDIR%%/hc/front/tests/test_add_googlechat.py
%%HOMEDIR%%/hc/front/tests/test_add_gotify.py
%%HOMEDIR%%/hc/front/tests/test_add_group.py
%%HOMEDIR%%/hc/front/tests/test_add_matrix.py
@@ -989,16 +995,20 @@ bin/hcks
%%HOMEDIR%%/static-collected/CACHE/css/output.4118f003b752.css.gz
%%HOMEDIR%%/static-collected/CACHE/css/output.48b942e160d8.css
%%HOMEDIR%%/static-collected/CACHE/css/output.48b942e160d8.css.gz
+%%HOMEDIR%%/static-collected/CACHE/css/output.4f48555496c9.css
+%%HOMEDIR%%/static-collected/CACHE/css/output.4f48555496c9.css.gz
%%HOMEDIR%%/static-collected/CACHE/css/output.537f18b6ba12.css
%%HOMEDIR%%/static-collected/CACHE/css/output.537f18b6ba12.css.gz
-%%HOMEDIR%%/static-collected/CACHE/css/output.591dec56fbd3.css
-%%HOMEDIR%%/static-collected/CACHE/css/output.591dec56fbd3.css.gz
+%%HOMEDIR%%/static-collected/CACHE/css/output.5b5be2f67d28.css
+%%HOMEDIR%%/static-collected/CACHE/css/output.5b5be2f67d28.css.gz
%%HOMEDIR%%/static-collected/CACHE/css/output.5b9a3186b65a.css
%%HOMEDIR%%/static-collected/CACHE/css/output.5b9a3186b65a.css.gz
%%HOMEDIR%%/static-collected/CACHE/css/output.61b1757619db.css
%%HOMEDIR%%/static-collected/CACHE/css/output.61b1757619db.css.gz
%%HOMEDIR%%/static-collected/CACHE/css/output.651292eaad87.css
%%HOMEDIR%%/static-collected/CACHE/css/output.651292eaad87.css.gz
+%%HOMEDIR%%/static-collected/CACHE/css/output.67ce9cb7a3a5.css
+%%HOMEDIR%%/static-collected/CACHE/css/output.67ce9cb7a3a5.css.gz
%%HOMEDIR%%/static-collected/CACHE/css/output.7349cc459c54.css
%%HOMEDIR%%/static-collected/CACHE/css/output.7349cc459c54.css.gz
%%HOMEDIR%%/static-collected/CACHE/css/output.79bc4ba389df.css
@@ -1021,8 +1031,6 @@ bin/hcks
%%HOMEDIR%%/static-collected/CACHE/css/output.a28ec659c3ea.css.gz
%%HOMEDIR%%/static-collected/CACHE/css/output.a2931392e224.css
%%HOMEDIR%%/static-collected/CACHE/css/output.a2931392e224.css.gz
-%%HOMEDIR%%/static-collected/CACHE/css/output.afdd0d9e2c60.css
-%%HOMEDIR%%/static-collected/CACHE/css/output.afdd0d9e2c60.css.gz
%%HOMEDIR%%/static-collected/CACHE/css/output.b5314e6471ce.css
%%HOMEDIR%%/static-collected/CACHE/css/output.b5314e6471ce.css.gz
%%HOMEDIR%%/static-collected/CACHE/css/output.ba3a60f23b9a.css
@@ -1041,8 +1049,6 @@ bin/hcks
%%HOMEDIR%%/static-collected/CACHE/css/output.e3f0c67e857e.css.gz
%%HOMEDIR%%/static-collected/CACHE/css/output.eebd23618fe6.css
%%HOMEDIR%%/static-collected/CACHE/css/output.eebd23618fe6.css.gz
-%%HOMEDIR%%/static-collected/CACHE/css/output.f6cc102e1861.css
-%%HOMEDIR%%/static-collected/CACHE/css/output.f6cc102e1861.css.gz
%%HOMEDIR%%/static-collected/CACHE/css/output.fdf9c458f5a6.css
%%HOMEDIR%%/static-collected/CACHE/css/output.fdf9c458f5a6.css.gz
%%HOMEDIR%%/static-collected/CACHE/js/output.02b19c497817.js
@@ -1055,14 +1061,14 @@ bin/hcks
%%HOMEDIR%%/static-collected/CACHE/js/output.097d8334f506.js.gz
%%HOMEDIR%%/static-collected/CACHE/js/output.0e0937a580b2.js
%%HOMEDIR%%/static-collected/CACHE/js/output.0e0937a580b2.js.gz
+%%HOMEDIR%%/static-collected/CACHE/js/output.113a1ef56da7.js
+%%HOMEDIR%%/static-collected/CACHE/js/output.113a1ef56da7.js.gz
%%HOMEDIR%%/static-collected/CACHE/js/output.18f4718d4ce3.js
%%HOMEDIR%%/static-collected/CACHE/js/output.18f4718d4ce3.js.gz
%%HOMEDIR%%/static-collected/CACHE/js/output.26c3b45ec11c.js
%%HOMEDIR%%/static-collected/CACHE/js/output.26c3b45ec11c.js.gz
%%HOMEDIR%%/static-collected/CACHE/js/output.29ce58ce5705.js
%%HOMEDIR%%/static-collected/CACHE/js/output.29ce58ce5705.js.gz
-%%HOMEDIR%%/static-collected/CACHE/js/output.30713209972b.js
-%%HOMEDIR%%/static-collected/CACHE/js/output.30713209972b.js.gz
%%HOMEDIR%%/static-collected/CACHE/js/output.407d637b1928.js
%%HOMEDIR%%/static-collected/CACHE/js/output.407d637b1928.js.gz
%%HOMEDIR%%/static-collected/CACHE/js/output.430be6dfa998.js
@@ -1083,8 +1089,6 @@ bin/hcks
%%HOMEDIR%%/static-collected/CACHE/js/output.7505ee85b4a8.js.gz
%%HOMEDIR%%/static-collected/CACHE/js/output.866b0bf6a99c.js
%%HOMEDIR%%/static-collected/CACHE/js/output.866b0bf6a99c.js.gz
-%%HOMEDIR%%/static-collected/CACHE/js/output.8745e5647b67.js
-%%HOMEDIR%%/static-collected/CACHE/js/output.8745e5647b67.js.gz
%%HOMEDIR%%/static-collected/CACHE/js/output.903693c65e2f.js
%%HOMEDIR%%/static-collected/CACHE/js/output.903693c65e2f.js.gz
%%HOMEDIR%%/static-collected/CACHE/js/output.90b827a4394a.js
@@ -1127,6 +1131,8 @@ bin/hcks
%%HOMEDIR%%/static-collected/CACHE/js/output.eff9e36f847f.js.gz
%%HOMEDIR%%/static-collected/CACHE/js/output.f95b393f8094.js
%%HOMEDIR%%/static-collected/CACHE/js/output.f95b393f8094.js.gz
+%%HOMEDIR%%/static-collected/CACHE/js/output.fad6571c4af0.js
+%%HOMEDIR%%/static-collected/CACHE/js/output.fad6571c4af0.js.gz
%%HOMEDIR%%/static-collected/CACHE/manifest.json
%%HOMEDIR%%/static-collected/admin/css/autocomplete.css
%%HOMEDIR%%/static-collected/admin/css/base.css
@@ -1314,10 +1320,15 @@ bin/hcks
%%HOMEDIR%%/static-collected/img/docs/badges.png
%%HOMEDIR%%/static-collected/img/docs/checks_durations.png
%%HOMEDIR%%/static-collected/img/docs/checks_integrations.png
+%%HOMEDIR%%/static-collected/img/docs/checks_integrations.webm
+%%HOMEDIR%%/static-collected/img/docs/checks_uuid_slug_selector.png
%%HOMEDIR%%/static-collected/img/docs/create_copy.png
%%HOMEDIR%%/static-collected/img/docs/ddwrt.png
%%HOMEDIR%%/static-collected/img/docs/details_durations.png
%%HOMEDIR%%/static-collected/img/docs/details_integrations.png
+%%HOMEDIR%%/static-collected/img/docs/details_integrations.webm
+%%HOMEDIR%%/static-collected/img/docs/details_uuid_slug_selector.png
+%%HOMEDIR%%/static-collected/img/docs/duplicate_slugs.png
%%HOMEDIR%%/static-collected/img/docs/edit_cron_schedule.png
%%HOMEDIR%%/static-collected/img/docs/edit_name.png
%%HOMEDIR%%/static-collected/img/docs/edit_oncalendar_schedule.png
@@ -1328,8 +1339,9 @@ bin/hcks
%%HOMEDIR%%/static-collected/img/docs/filtering_rules.png
%%HOMEDIR%%/static-collected/img/docs/monthly_report.png
%%HOMEDIR%%/static-collected/img/docs/ping_details.png
+%%HOMEDIR%%/static-collected/img/docs/project_settings_ping_key.png
%%HOMEDIR%%/static-collected/img/docs/projects.png
-%%HOMEDIR%%/static-collected/img/docs/prometheus_endpoint.png
+%%HOMEDIR%%/static-collected/img/docs/prometheus_api_keys.png
%%HOMEDIR%%/static-collected/img/docs/routeros1.png
%%HOMEDIR%%/static-collected/img/docs/routeros2.png
%%HOMEDIR%%/static-collected/img/docs/run_ids.png
@@ -1348,6 +1360,7 @@ bin/hcks
%%HOMEDIR%%/static-collected/img/integrations/email.png
%%HOMEDIR%%/static-collected/img/integrations/github-white.png
%%HOMEDIR%%/static-collected/img/integrations/github.png
+%%HOMEDIR%%/static-collected/img/integrations/googlechat.png
%%HOMEDIR%%/static-collected/img/integrations/gotify.png
%%HOMEDIR%%/static-collected/img/integrations/group.png
%%HOMEDIR%%/static-collected/img/integrations/linenotify.png
@@ -1365,6 +1378,10 @@ bin/hcks
%%HOMEDIR%%/static-collected/img/integrations/prometheus.png
%%HOMEDIR%%/static-collected/img/integrations/pushbullet.png
%%HOMEDIR%%/static-collected/img/integrations/rocketchat.png
+%%HOMEDIR%%/static-collected/img/integrations/setup_googlechat_1.png
+%%HOMEDIR%%/static-collected/img/integrations/setup_googlechat_2.png
+%%HOMEDIR%%/static-collected/img/integrations/setup_googlechat_3.png
+%%HOMEDIR%%/static-collected/img/integrations/setup_googlechat_4.png
%%HOMEDIR%%/static-collected/img/integrations/setup_gotify_1.png
%%HOMEDIR%%/static-collected/img/integrations/setup_gotify_2.png
%%HOMEDIR%%/static-collected/img/integrations/setup_matrix_1.png
@@ -1543,10 +1560,15 @@ bin/hcks
%%HOMEDIR%%/static/img/docs/badges.png
%%HOMEDIR%%/static/img/docs/checks_durations.png
%%HOMEDIR%%/static/img/docs/checks_integrations.png
+%%HOMEDIR%%/static/img/docs/checks_integrations.webm
+%%HOMEDIR%%/static/img/docs/checks_uuid_slug_selector.png
%%HOMEDIR%%/static/img/docs/create_copy.png
%%HOMEDIR%%/static/img/docs/ddwrt.png
%%HOMEDIR%%/static/img/docs/details_durations.png
%%HOMEDIR%%/static/img/docs/details_integrations.png
+%%HOMEDIR%%/static/img/docs/details_integrations.webm
+%%HOMEDIR%%/static/img/docs/details_uuid_slug_selector.png
+%%HOMEDIR%%/static/img/docs/duplicate_slugs.png
%%HOMEDIR%%/static/img/docs/edit_cron_schedule.png
%%HOMEDIR%%/static/img/docs/edit_name.png
%%HOMEDIR%%/static/img/docs/edit_oncalendar_schedule.png
@@ -1557,8 +1579,9 @@ bin/hcks
%%HOMEDIR%%/static/img/docs/filtering_rules.png
%%HOMEDIR%%/static/img/docs/monthly_report.png
%%HOMEDIR%%/static/img/docs/ping_details.png
+%%HOMEDIR%%/static/img/docs/project_settings_ping_key.png
%%HOMEDIR%%/static/img/docs/projects.png
-%%HOMEDIR%%/static/img/docs/prometheus_endpoint.png
+%%HOMEDIR%%/static/img/docs/prometheus_api_keys.png
%%HOMEDIR%%/static/img/docs/routeros1.png
%%HOMEDIR%%/static/img/docs/routeros2.png
%%HOMEDIR%%/static/img/docs/run_ids.png
@@ -1577,6 +1600,7 @@ bin/hcks
%%HOMEDIR%%/static/img/integrations/email.png
%%HOMEDIR%%/static/img/integrations/github-white.png
%%HOMEDIR%%/static/img/integrations/github.png
+%%HOMEDIR%%/static/img/integrations/googlechat.png
%%HOMEDIR%%/static/img/integrations/gotify.png
%%HOMEDIR%%/static/img/integrations/group.png
%%HOMEDIR%%/static/img/integrations/linenotify.png
@@ -1594,6 +1618,10 @@ bin/hcks
%%HOMEDIR%%/static/img/integrations/prometheus.png
%%HOMEDIR%%/static/img/integrations/pushbullet.png
%%HOMEDIR%%/static/img/integrations/rocketchat.png
+%%HOMEDIR%%/static/img/integrations/setup_googlechat_1.png
+%%HOMEDIR%%/static/img/integrations/setup_googlechat_2.png
+%%HOMEDIR%%/static/img/integrations/setup_googlechat_3.png
+%%HOMEDIR%%/static/img/integrations/setup_googlechat_4.png
%%HOMEDIR%%/static/img/integrations/setup_gotify_1.png
%%HOMEDIR%%/static/img/integrations/setup_gotify_2.png
%%HOMEDIR%%/static/img/integrations/setup_matrix_1.png
@@ -1813,6 +1841,8 @@ bin/hcks
%%HOMEDIR%%/templates/docs/self_hosted_docker.md
%%HOMEDIR%%/templates/docs/signaling_failures.html-fragment
%%HOMEDIR%%/templates/docs/signaling_failures.md
+%%HOMEDIR%%/templates/docs/slug_urls.html-fragment
+%%HOMEDIR%%/templates/docs/slug_urls.md
%%HOMEDIR%%/templates/emails/alert-body-html.html
%%HOMEDIR%%/templates/emails/alert-body-text.html
%%HOMEDIR%%/templates/emails/alert-subject.html
@@ -1931,6 +1961,7 @@ bin/hcks
%%HOMEDIR%%/templates/integrations/add_discord.html
%%HOMEDIR%%/templates/integrations/add_github.html
%%HOMEDIR%%/templates/integrations/add_github_form.html
+%%HOMEDIR%%/templates/integrations/add_googlechat.html
%%HOMEDIR%%/templates/integrations/add_gotify.html
%%HOMEDIR%%/templates/integrations/add_matrix.html
%%HOMEDIR%%/templates/integrations/add_mattermost.html
diff --git a/sysutils/rubygem-mdless/Makefile b/sysutils/rubygem-mdless/Makefile
new file mode 100644
index 000000000000..f740b07c6ed6
--- /dev/null
+++ b/sysutils/rubygem-mdless/Makefile
@@ -0,0 +1,24 @@
+PORTNAME= mdless
+PORTVERSION= 2.1.62
+CATEGORIES= sysutils rubygems
+MASTER_SITES= RG
+
+MAINTAINER= tiago.gasiba@gmail.com
+COMMENT= Formatted and highlighted view of Markdown files
+WWW= https://rubygems.org/gems/mdless
+
+LICENSE= MIT
+
+RUN_DEPENDS= rubygem-redcarpet>=3.6:textproc/rubygem-redcarpet \
+ rubygem-rouge>=4.2:textproc/rubygem-rouge \
+ rubygem-tty-screen>=0.8:devel/rubygem-tty-screen \
+ rubygem-tty-spinner>=0.8:devel/rubygem-tty-spinner \
+ rubygem-tty-which>=0.5:devel/rubygem-tty-which
+
+USES= gem
+
+NO_ARCH= yes
+
+PLIST_FILES= bin/mdless
+
+.include <bsd.port.mk>
diff --git a/sysutils/rubygem-mdless/distinfo b/sysutils/rubygem-mdless/distinfo
new file mode 100644
index 000000000000..6742984dae7f
--- /dev/null
+++ b/sysutils/rubygem-mdless/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1756391157
+SHA256 (rubygem/mdless-2.1.62.gem) = bb15499dc4f7d37accbc1111660994879170f3df6740c5cef3606528ab6775d3
+SIZE (rubygem/mdless-2.1.62.gem) = 48128
diff --git a/sysutils/rubygem-mdless/pkg-descr b/sysutils/rubygem-mdless/pkg-descr
new file mode 100644
index 000000000000..026ae857aac7
--- /dev/null
+++ b/sysutils/rubygem-mdless/pkg-descr
@@ -0,0 +1,2 @@
+A CLI that provides a formatted and highlighted view of Markdown
+files in a terminal
diff --git a/textproc/Makefile b/textproc/Makefile
index 9f9508f45f72..8844023e0091 100644
--- a/textproc/Makefile
+++ b/textproc/Makefile
@@ -1228,6 +1228,7 @@
SUBDIR += pdfresurrect
SUBDIR += pdfsandwich
SUBDIR += pdftohtml
+ SUBDIR += pdjson
SUBDIR += pear-File_Fortune
SUBDIR += pear-File_MARC
SUBDIR += pear-Horde_CssMinify
diff --git a/textproc/go-yq/Makefile b/textproc/go-yq/Makefile
index 19294523b0d8..3d7940d4e52f 100644
--- a/textproc/go-yq/Makefile
+++ b/textproc/go-yq/Makefile
@@ -1,7 +1,6 @@
PORTNAME= go-yq
DISTVERSIONPREFIX= v
-DISTVERSION= 4.45.4
-PORTREVISION= 2
+DISTVERSION= 4.47.1
CATEGORIES= textproc
MAINTAINER= timp87@gmail.com
@@ -11,7 +10,7 @@ WWW= https://github.com/mikefarah/yq
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE
-USES= go:1.24,modules
+USES= go:modules
GO_MODULE= github.com/mikefarah/yq/v4
GO_TARGET= .:yq
diff --git a/textproc/go-yq/distinfo b/textproc/go-yq/distinfo
index f6a19e4e8f38..c2f56ba45655 100644
--- a/textproc/go-yq/distinfo
+++ b/textproc/go-yq/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1750777412
-SHA256 (go/textproc_go-yq/go-yq-v4.45.4/v4.45.4.mod) = 3828ced67e69ab15e357b5d5d065a4d1b5b4fede629b646c0699b6820c564ffa
-SIZE (go/textproc_go-yq/go-yq-v4.45.4/v4.45.4.mod) = 982
-SHA256 (go/textproc_go-yq/go-yq-v4.45.4/v4.45.4.zip) = dc3ddd7f4ad66e98d26e5deb8826c95fd4d22f1e11989cd3690ddd93780d3fca
-SIZE (go/textproc_go-yq/go-yq-v4.45.4/v4.45.4.zip) = 456199
+TIMESTAMP = 1756457073
+SHA256 (go/textproc_go-yq/go-yq-v4.47.1/v4.47.1.mod) = f89a8564b46efdf0ff77835df9392f1fef423bc6b904dd1f79d385fb54b0376d
+SIZE (go/textproc_go-yq/go-yq-v4.47.1/v4.47.1.mod) = 1015
+SHA256 (go/textproc_go-yq/go-yq-v4.47.1/v4.47.1.zip) = e0c57fe2e4965301ef42159e0149f1e814eb5c0cdd4982b68e0a962ff6865498
+SIZE (go/textproc_go-yq/go-yq-v4.47.1/v4.47.1.zip) = 484080
diff --git a/textproc/html2xhtml/Makefile b/textproc/html2xhtml/Makefile
index 21a72fd24638..0961bc88cea4 100644
--- a/textproc/html2xhtml/Makefile
+++ b/textproc/html2xhtml/Makefile
@@ -1,5 +1,5 @@
PORTNAME= html2xhtml
-PORTVERSION= 1.4
+DISTVERSION= 1.4
CATEGORIES= textproc
MASTER_SITES= http://www.it.uc3m.es/jaf/html2xhtml/downloads/
@@ -8,10 +8,10 @@ COMMENT= Convert HTML to XHTML
WWW= https://www.it.uc3m.es/jaf/html2xhtml
LICENSE= GPLv2
+LICENSE_FILE= ${WRKSRC}/COPYING
-GNU_CONFIGURE= yes
-GNU_CONFIGURE_MANPREFIX=${PREFIX}/share
USES= iconv
+GNU_CONFIGURE= yes
CONFLICTS_INSTALL= p5-HTML-HTML5-Parser p5-XML-Driver-HTML # bin/html2xhtml
diff --git a/textproc/pdjson/Makefile b/textproc/pdjson/Makefile
new file mode 100644
index 000000000000..087c1e6d1a8d
--- /dev/null
+++ b/textproc/pdjson/Makefile
@@ -0,0 +1,27 @@
+PORTNAME= pdjson
+DISTVERSION= g20250825
+CATEGORIES= textproc
+
+MAINTAINER= nsonack@herrhotzenplotz.de
+COMMENT= Public Domain JSON Parser Library for C
+
+LICENSE= UNLICENSE
+LICENSE_FILE= ${WRKSRC}/UNLICENSE
+
+USE_GITHUB= yes
+GH_ACCOUNT= skeeto
+GH_TAGNAME= 78fe04b820dc8817f540bdd87fb22887e0ef3981
+USE_LDCONFIG= yes
+
+TEST_TARGET= check
+
+SUB_FILES= pdjson.pc
+SUB_LIST= DISTVERSION=${DISTVERSION}
+
+do-install:
+ ${INSTALL_LIB} ${WRKSRC}/libpdjson.so ${STAGEDIR}${LOCALBASE}/lib/libpdjson.so.0
+ ${RLN} ${STAGEDIR}${LOCALBASE}/lib/libpdjson.so.0 ${STAGEDIR}${LOCALBASE}/lib/libpdjson.so
+ ${INSTALL} ${WRKSRC}/pdjson.h ${STAGEDIR}${LOCALBASE}/include
+ ${INSTALL_DATA} ${WRKDIR}/pdjson.pc ${STAGEDIR}${LOCALBASE}/libdata/pkgconfig
+
+.include <bsd.port.mk>
diff --git a/textproc/pdjson/distinfo b/textproc/pdjson/distinfo
new file mode 100644
index 000000000000..b457f5012f19
--- /dev/null
+++ b/textproc/pdjson/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1756138081
+SHA256 (skeeto-pdjson-g20250825-78fe04b820dc8817f540bdd87fb22887e0ef3981_GH0.tar.gz) = e6bf6a90e65736faa5cfa6641a1f3278b577504d63f7fd2bf6b1454d94fa223c
+SIZE (skeeto-pdjson-g20250825-78fe04b820dc8817f540bdd87fb22887e0ef3981_GH0.tar.gz) = 11698
diff --git a/textproc/pdjson/files/patch-Makefile b/textproc/pdjson/files/patch-Makefile
new file mode 100644
index 000000000000..bfe7b015e15f
--- /dev/null
+++ b/textproc/pdjson/files/patch-Makefile
@@ -0,0 +1,21 @@
+--- Makefile.orig 2024-02-22 11:12:52 UTC
++++ Makefile
+@@ -1,8 +1,8 @@
+ .POSIX:
+-CC = cc
+-CFLAGS = -std=c99 -pedantic -Wall -Wextra -Wno-missing-field-initializers
++CC ?= cc
++CFLAGS += -std=c99 -pedantic -Wall -Wextra -Wno-missing-field-initializers -fPIC
+
+-all: tests/pretty tests/stream tests/tests
++all: libpdjson.so tests/pretty tests/stream tests/tests
+
+ tests/pretty: tests/pretty.o pdjson.o
+ $(CC) $(LDFLAGS) -o $@ tests/pretty.o pdjson.o $(LDLIBS)
+@@ -28,3 +28,6 @@ clean:
+
+ .c.o:
+ $(CC) -c $(CFLAGS) -o $@ $<
++
++libpdjson.so: pdjson.o
++ $(CC) -shared -Wl,-soname=libpdjson.so.0 -o libpdjson.so pdjson.o
diff --git a/textproc/pdjson/files/pdjson.pc.in b/textproc/pdjson/files/pdjson.pc.in
new file mode 100644
index 000000000000..5feb5f556ec3
--- /dev/null
+++ b/textproc/pdjson/files/pdjson.pc.in
@@ -0,0 +1,11 @@
+prefix=%%PREFIX%%
+libdir=${prefix}/lib
+includedir=${prefix}/include
+
+Name: pdjson
+Version: %%DISTVERSION%%
+Description: Public Domain JSON parser
+URL: https://github.com/skeeto/pdjson
+Libs: -L${libdir} -lpdjson
+Cflags: -I${includedir}
+
diff --git a/textproc/pdjson/pkg-descr b/textproc/pdjson/pkg-descr
new file mode 100644
index 000000000000..9443bb133061
--- /dev/null
+++ b/textproc/pdjson/pkg-descr
@@ -0,0 +1,5 @@
+A public domain JSON parser focused on correctness, ANSI C99
+compliance, full Unicode (UTF-8) support, minimal memory footprint,
+and a simple API. As a streaming API, arbitrary large JSON could
+be processed with a small amount of memory (the size of the largest
+string in the JSON).
diff --git a/textproc/pdjson/pkg-plist b/textproc/pdjson/pkg-plist
new file mode 100644
index 000000000000..98c00cb58daa
--- /dev/null
+++ b/textproc/pdjson/pkg-plist
@@ -0,0 +1,4 @@
+include/pdjson.h
+lib/libpdjson.so
+lib/libpdjson.so.0
+libdata/pkgconfig/pdjson.pc
diff --git a/www/homepage/Makefile b/www/homepage/Makefile
index f30773c8cf73..7df2dfd50009 100644
--- a/www/homepage/Makefile
+++ b/www/homepage/Makefile
@@ -1,5 +1,5 @@
PORTNAME= homepage
-DISTVERSION= 1.4.5
+DISTVERSION= 1.4.6
CATEGORIES= www
MASTER_SITES= LOCAL/dtxdf/${PORTNAME}/
DISTFILES= ${PORTNAME}-${DISTVERSION}${EXTRACT_SUFX}
diff --git a/www/homepage/distinfo b/www/homepage/distinfo
index 2be5eba52bb7..9723ff1f283e 100644
--- a/www/homepage/distinfo
+++ b/www/homepage/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1755284700
-SHA256 (homepage-1.4.5.tar.gz) = 7e3af21014d5ed18db0f7270b02173622cf71ae3d95e71354cb4d9058fb9459b
-SIZE (homepage-1.4.5.tar.gz) = 12763514
+TIMESTAMP = 1756433341
+SHA256 (homepage-1.4.6.tar.gz) = 8e12e8990b1a3d7208e46888ed9af64faf135dd645be0f619a8312e4016eb3c9
+SIZE (homepage-1.4.6.tar.gz) = 12755151
diff --git a/www/homepage/pkg-plist b/www/homepage/pkg-plist
index f0c4df661cb5..8bd5b83f4a6c 100644
--- a/www/homepage/pkg-plist
+++ b/www/homepage/pkg-plist
@@ -366,7 +366,6 @@ etc/homepage.env
%%HOMEDIR%%/.next/static/chunks/5860.a10d0361279e6f9a.js
%%HOMEDIR%%/.next/static/chunks/5944.4bff334081a2eb22.js
%%HOMEDIR%%/.next/static/chunks/6002.f6ac6a7504802f1e.js
-%%HOMEDIR%%/.next/static/chunks/611.acdfd27946411a66.js
%%HOMEDIR%%/.next/static/chunks/6182.e82eb4ec3e4fa068.js
%%HOMEDIR%%/.next/static/chunks/6187.d0e3c9e2a14feb51.js
%%HOMEDIR%%/.next/static/chunks/6218.b4f08a33f469d76a.js
@@ -5170,8 +5169,9 @@ etc/homepage.env
%%HOMEDIR%%/src/widgets/whatsupdocker/component.jsx
%%HOMEDIR%%/src/widgets/xteve/component.jsx
%%HOMEDIR%%/src/widgets/zabbix/component.jsx
-%%WWWDIR%%/.next/static/C96yU3PHL1RBxfvfUwXg7/_buildManifest.js
-%%WWWDIR%%/.next/static/C96yU3PHL1RBxfvfUwXg7/_ssgManifest.js
-%%WWWDIR%%/.next/static/chunks/3121.062fa4a7824bc243.js
-%%WWWDIR%%/.next/static/chunks/9346.79cfeec7ac0908a1.js
-%%WWWDIR%%/.next/static/chunks/webpack-db160e9b591c440c.js
+%%HOMEDIR%%/.next/static/-dFR4Fpx7vGAuCNFyOPRb/_buildManifest.js
+%%HOMEDIR%%/.next/static/-dFR4Fpx7vGAuCNFyOPRb/_ssgManifest.js
+%%HOMEDIR%%/.next/static/chunks/3121.062fa4a7824bc243.js
+%%HOMEDIR%%/.next/static/chunks/9346.c6d566c362c5e060.js
+%%HOMEDIR%%/.next/static/chunks/611.47bd2aede4f96794.js
+%%HOMEDIR%%/.next/static/chunks/webpack-d2d287706f398086.js
diff --git a/www/librewolf/Makefile b/www/librewolf/Makefile
index 7c8195691bfd..78ceca2a5654 100644
--- a/www/librewolf/Makefile
+++ b/www/librewolf/Makefile
@@ -1,6 +1,5 @@
PORTNAME= librewolf
-DISTVERSION= 142.0
-PORTREVISION= 1
+DISTVERSION= 142.0.1
LWPATCH= -1
DISTVERSIONSUFFIX= ${LWPATCH}.source
CATEGORIES= www wayland
diff --git a/www/librewolf/distinfo b/www/librewolf/distinfo
index 28a7faab9c3e..a90acb98b906 100644
--- a/www/librewolf/distinfo
+++ b/www/librewolf/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1755670889
-SHA256 (librewolf-142.0-1.source.tar.gz) = 93038bb47402efefdc67a068a8b483ad1cac08286ec5083a4593816531fd1d12
-SIZE (librewolf-142.0-1.source.tar.gz) = 1010392198
+TIMESTAMP = 1756477960
+SHA256 (librewolf-142.0.1-1.source.tar.gz) = 770fd784b91a836edd327e816d735a91852872909933dd8a167cd59f388ffbe1
+SIZE (librewolf-142.0.1-1.source.tar.gz) = 1010630994
diff --git a/www/nginx-devel/Makefile b/www/nginx-devel/Makefile
index bdc0d6d52163..ac2452c94c6f 100644
--- a/www/nginx-devel/Makefile
+++ b/www/nginx-devel/Makefile
@@ -1,7 +1,7 @@
PORTNAME?= nginx
PORTVERSION= ${NGINX_VERSION}
.include "version.mk"
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= www
MASTER_SITES= https://nginx.org/download/ \
LOCAL/osa
diff --git a/www/nginx-devel/files/extra-patch-ngx_nats.c b/www/nginx-devel/files/extra-patch-ngx_nats.c
new file mode 100644
index 000000000000..76c3f2be7864
--- /dev/null
+++ b/www/nginx-devel/files/extra-patch-ngx_nats.c
@@ -0,0 +1,20 @@
+--- ../nginx-nats-6f7adf1/src/ngx_nats.c.orig 2025-07-25 14:52:57.670444000 -0400
++++ ../nginx-nats-6f7adf1/src/ngx_nats.c 2025-07-25 14:53:04.538387000 -0400
+@@ -55,7 +55,7 @@
+ * we can use for uniqueness and to reach the router in testing.
+ */
+
+-#if (NGX_LINUX) || (NGX_DARWIN)
++#if (NGX_LINUX) || (NGX_DARWIN) || (NGX_FREEBSD)
+ #include <net/if.h>
+ #include <ifaddrs.h>
+ #elif (NGX_WIN32)
+@@ -585,7 +585,7 @@
+ {
+ /* TODO: port to Windows when need it, extend to other platforms. */
+
+-#if (NGX_LINUX) || (NGX_DARWIN)
++#if (NGX_LINUX) || (NGX_DARWIN) || (NGX_FREEBSD)
+
+ struct ifaddrs *ifaddrs, *ifa;
+ int rc, family;
diff --git a/www/nginx-devel/files/nginx.in b/www/nginx-devel/files/nginx.in
index daba266d9192..5ec438dd7342 100644
--- a/www/nginx-devel/files/nginx.in
+++ b/www/nginx-devel/files/nginx.in
@@ -69,6 +69,7 @@ if [ -n "$2" ]; then
required_files="${nginx_configfile}"
eval nginx_enable="\${nginx_${profile}_enable:-${nginx_enable}}"
eval nginx_flags="\${nginx_${profile}_flags:-${nginx_flags}}"
+ eval nginx_svcj_options="\${nginx_${profile}_svcj_options:-${nginx_svcj_options}}"
eval nginxlimits_enable="\${nginxlimits_${profile}_enable:-${nginxlimits_enable}}"
eval nginxlimits_args="\${nginxlimits_${profile}_args:-${nginxlimits_args}}"
nginx_flags="-c ${nginx_configfile} -g \"pid ${pidfile};\" ${nginx_flags}"
diff --git a/www/phpvirtualbox-72/Makefile b/www/phpvirtualbox-72/Makefile
index 827927debe00..5cd673bbf480 100644
--- a/www/phpvirtualbox-72/Makefile
+++ b/www/phpvirtualbox-72/Makefile
@@ -1,5 +1,6 @@
PORTNAME= phpvirtualbox
DISTVERSION= 7.2-1
+PORTREVISION= 1
CATEGORIES= www
SUFFIX= -72
PKGNAMESUFFIX= ${SUFFIX}${PHP_PKGNAMESUFFIX}
diff --git a/www/phpvirtualbox-72/files/patch-endpoints_lib_vboxwebService-7.2.wsdl b/www/phpvirtualbox-72/files/patch-endpoints_lib_vboxwebService-7.2.wsdl
new file mode 100644
index 000000000000..40b0ff619005
--- /dev/null
+++ b/www/phpvirtualbox-72/files/patch-endpoints_lib_vboxwebService-7.2.wsdl
@@ -0,0 +1,11 @@
+--- endpoints/lib/vboxwebService-7.2.wsdl.orig 2025-08-28 05:41:35 UTC
++++ endpoints/lib/vboxwebService-7.2.wsdl
+@@ -5,7 +5,7 @@ -->
+ Generator: src/VBox/Main/webservice/websrv-wsdl-service.xsl
+ -->
+ <definitions xmlns:interface="urn:vbox" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:vbox="http://www.virtualbox.org/" xmlns="http://schemas.xmlsoap.org/wsdl/" name="VirtualBox" targetNamespace="http://www.virtualbox.org/Service">
+- <import location="vboxweb.wsdl" namespace="http://www.virtualbox.org/"/>
++ <import location="vboxweb-7.2.wsdl" namespace="http://www.virtualbox.org/"/>
+ <service name="vboxService">
+ <port binding="vbox:vboxBinding" name="vboxServicePort">
+ <soap:address location="http://localhost:18083/"/>
diff --git a/www/pocket-id/Makefile b/www/pocket-id/Makefile
index 6732c6454467..ab8b55ae4fc6 100644
--- a/www/pocket-id/Makefile
+++ b/www/pocket-id/Makefile
@@ -1,6 +1,6 @@
PORTNAME= pocket-id
DISTVERSIONPREFIX= v
-DISTVERSION= 1.9.1
+DISTVERSION= 1.10.0
CATEGORIES= www
MASTER_SITES= LOCAL/dtxdf/${PORTNAME}/
DISTFILES= ${PORTNAME}-${DISTVERSIONPREFIX}${DISTVERSION}.frontend${EXTRACT_SUFX}
diff --git a/www/pocket-id/distinfo b/www/pocket-id/distinfo
index 19b1a503227e..2fed86b8e729 100644
--- a/www/pocket-id/distinfo
+++ b/www/pocket-id/distinfo
@@ -1,7 +1,7 @@
-TIMESTAMP = 1756073537
-SHA256 (go/www_pocket-id/pocket-id-pocket-id-v1.9.1_GH0/pocket-id-v1.9.1.frontend.tar.gz) = 308477aa87321dc17323f77a8f48ed3cc5ce3b9c99b529648d35490d61e36d20
-SIZE (go/www_pocket-id/pocket-id-pocket-id-v1.9.1_GH0/pocket-id-v1.9.1.frontend.tar.gz) = 1496166
-SHA256 (go/www_pocket-id/pocket-id-pocket-id-v1.9.1_GH0/go.mod) = 407629c8229cd31ee5221adda1ac6926f22a6e1f938b86f73d7b95f3402db75d
-SIZE (go/www_pocket-id/pocket-id-pocket-id-v1.9.1_GH0/go.mod) = 7114
-SHA256 (go/www_pocket-id/pocket-id-pocket-id-v1.9.1_GH0/pocket-id-pocket-id-v1.9.1_GH0.tar.gz) = e79cb839ff1ac04692fbee3c95e233c8723f6318ed4cd0251194b8fec6bf4fd9
-SIZE (go/www_pocket-id/pocket-id-pocket-id-v1.9.1_GH0/pocket-id-pocket-id-v1.9.1_GH0.tar.gz) = 5637458
+TIMESTAMP = 1756427787
+SHA256 (go/www_pocket-id/pocket-id-pocket-id-v1.10.0_GH0/pocket-id-v1.10.0.frontend.tar.gz) = d316b82be00d698a820ac115663ae35f6485b885094ca47d430eec174f8cadb2
+SIZE (go/www_pocket-id/pocket-id-pocket-id-v1.10.0_GH0/pocket-id-v1.10.0.frontend.tar.gz) = 1488185
+SHA256 (go/www_pocket-id/pocket-id-pocket-id-v1.10.0_GH0/go.mod) = 407629c8229cd31ee5221adda1ac6926f22a6e1f938b86f73d7b95f3402db75d
+SIZE (go/www_pocket-id/pocket-id-pocket-id-v1.10.0_GH0/go.mod) = 7114
+SHA256 (go/www_pocket-id/pocket-id-pocket-id-v1.10.0_GH0/pocket-id-pocket-id-v1.10.0_GH0.tar.gz) = f6fc8cb49b65eae09ee9f46122d25557d141279970b157c5e29141c0080d969c
+SIZE (go/www_pocket-id/pocket-id-pocket-id-v1.10.0_GH0/pocket-id-pocket-id-v1.10.0_GH0.tar.gz) = 5638841
diff --git a/www/py-httpx-retries/Makefile b/www/py-httpx-retries/Makefile
index bc3702d822c4..92f0036b875d 100644
--- a/www/py-httpx-retries/Makefile
+++ b/www/py-httpx-retries/Makefile
@@ -1,5 +1,5 @@
PORTNAME= httpx-retries
-DISTVERSION= 0.4.0
+DISTVERSION= 0.4.1
CATEGORIES= www python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/www/py-httpx-retries/distinfo b/www/py-httpx-retries/distinfo
index 4ef455958702..727a38088bfc 100644
--- a/www/py-httpx-retries/distinfo
+++ b/www/py-httpx-retries/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1747637137
-SHA256 (httpx_retries-0.4.0.tar.gz) = a7aa513e3f1eef347aac69adecfad9f421210a84df88c88f935ec130f98e6642
-SIZE (httpx_retries-0.4.0.tar.gz) = 12571
+TIMESTAMP = 1756495143
+SHA256 (httpx_retries-0.4.1.tar.gz) = 008c10a57ee73665fa82bfa28466c736da5214b31ee6eacec8707c36493ed152
+SIZE (httpx_retries-0.4.1.tar.gz) = 12588
diff --git a/www/py-nicegui/Makefile b/www/py-nicegui/Makefile
index fc34341ad718..fce00807ef93 100644
--- a/www/py-nicegui/Makefile
+++ b/www/py-nicegui/Makefile
@@ -1,5 +1,5 @@
PORTNAME= nicegui
-DISTVERSION= 2.23.0
+DISTVERSION= 2.23.3
CATEGORIES= www graphics python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/www/py-nicegui/distinfo b/www/py-nicegui/distinfo
index 685aece27ba5..4ab63ccd99a0 100644
--- a/www/py-nicegui/distinfo
+++ b/www/py-nicegui/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1755889052
-SHA256 (nicegui-2.23.0.tar.gz) = 8180fcba79515fa14ce03977c31282aa17627822163d482f591020ff93b1efe0
-SIZE (nicegui-2.23.0.tar.gz) = 13108139
+TIMESTAMP = 1756499959
+SHA256 (nicegui-2.23.3.tar.gz) = 7fc99bc40d1682b37c54eda6275f77db863b9c7bcc7ad15006c507b69a30d22c
+SIZE (nicegui-2.23.3.tar.gz) = 13108186
diff --git a/www/py-wsgidav/Makefile b/www/py-wsgidav/Makefile
index 839c933ebc85..21b9489313a3 100644
--- a/www/py-wsgidav/Makefile
+++ b/www/py-wsgidav/Makefile
@@ -1,9 +1,9 @@
PORTNAME= WsgiDAV
-DISTVERSION= 4.3.2
-PORTREVISION= 2
+DISTVERSION= 4.3.3
CATEGORIES= www python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+DISTNAME= ${PORTNAME:tl}-${DISTVERSION}
MAINTAINER= ultima@FreeBSD.org
COMMENT= WSGI based WebDAV server for sharing resources
@@ -21,13 +21,19 @@ RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}defusedxml>=0.5:devel/py-defusedxml@${PY_FLA
${PYTHON_PKGNAMEPREFIX}six>=1.12:devel/py-six@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}Jinja2>=2.10:devel/py-Jinja2@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}pyyaml>=3.2:devel/py-pyyaml@${PY_FLAVOR}
-TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}cheroot>=6.0:www/py-cheroot@${PY_FLAVOR} \
+TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}CouchDB>=1.1:databases/py-couchdb@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}cheroot>=6.0:www/py-cheroot@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}pymongo>=3.13:databases/py-pymongo@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}mysqlclient>=2.2:databases/py-mysqlclient@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}pytest>=2.7:devel/py-pytest@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}pytest-cov>=1.8:devel/py-pytest-cov@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}pytest-html>=1.8:devel/py-pytest-html@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}python-pam>=1.8:security/py-python-pam@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}redis>=6.2:databases/py-redis@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}requests>=0:www/py-requests@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}tox>=2.0:devel/py-tox@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}webtest>=2.0:www/py-webtest@${PY_FLAVOR}
+ ${PYTHON_PKGNAMEPREFIX}webtest>=2.0:www/py-webtest@${PY_FLAVOR} \
+ mercurial>=0:devel/mercurial
USES= python
USE_PYTHON= distutils autoplist
diff --git a/www/py-wsgidav/distinfo b/www/py-wsgidav/distinfo
index 15316e92e385..2d99414ce925 100644
--- a/www/py-wsgidav/distinfo
+++ b/www/py-wsgidav/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1718387273
-SHA256 (WsgiDAV-4.3.2.tar.gz) = 4c3c24ac01b656a9edcb0014f31717ca8b9a3ec7d7cd9adc39d9ce1b00bfe759
-SIZE (WsgiDAV-4.3.2.tar.gz) = 167847
+TIMESTAMP = 1754464002
+SHA256 (wsgidav-4.3.3.tar.gz) = 5f0ad71bea72def3018b6ba52da3bcb83f61e0873c27225344582805d6e52b9e
+SIZE (wsgidav-4.3.3.tar.gz) = 168118
diff --git a/x11-toolkits/wlroots017/Makefile b/x11-toolkits/wlroots017/Makefile
index 4b8183d24a11..c7ccdfda65f7 100644
--- a/x11-toolkits/wlroots017/Makefile
+++ b/x11-toolkits/wlroots017/Makefile
@@ -1,6 +1,6 @@
PORTNAME= wlroots
DISTVERSION= 0.17.4
-PORTREVISION= 4
+PORTREVISION= 5
CATEGORIES= x11-toolkits
PKGNAMESUFFIX= 017
@@ -54,7 +54,8 @@ VULKAN_DESC= Vulkan renderer
VULKAN_BUILD_DEPENDS= glslangValidator:graphics/glslang \
vulkan-headers>0:graphics/vulkan-headers
VULKAN_LIB_DEPENDS= libvulkan.so:graphics/vulkan-loader
-VULKAN_RUN_DEPENDS= mesa-dri>0:graphics/mesa-dri
+VULKAN_RUN_DEPENDS= mesa-dri>0:graphics/mesa-dri \
+ vulkan-headers>0:graphics/vulkan-headers
VULKAN_VARS= RENDERERS+=vulkan
X11_LIB_DEPENDS= libxcb-errors.so:x11/xcb-util-errors \
diff --git a/x11-toolkits/wlroots018/Makefile b/x11-toolkits/wlroots018/Makefile
index 3a58fc4f3dc3..264f2c4f7bed 100644
--- a/x11-toolkits/wlroots018/Makefile
+++ b/x11-toolkits/wlroots018/Makefile
@@ -1,6 +1,6 @@
PORTNAME= wlroots
DISTVERSION= 0.18.2
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= x11-toolkits
PKGNAMESUFFIX= 018
@@ -57,7 +57,8 @@ VULKAN_DESC= Vulkan renderer
VULKAN_BUILD_DEPENDS= glslangValidator:graphics/glslang \
vulkan-headers>0:graphics/vulkan-headers
VULKAN_LIB_DEPENDS= libvulkan.so:graphics/vulkan-loader
-VULKAN_RUN_DEPENDS= mesa-dri>0:graphics/mesa-dri
+VULKAN_RUN_DEPENDS= mesa-dri>0:graphics/mesa-dri \
+ vulkan-headers>0:graphics/vulkan-headers
VULKAN_VARS= RENDERERS+=vulkan
X11_LIB_DEPENDS= libxcb-errors.so:x11/xcb-util-errors \
diff --git a/x11-toolkits/wlroots019/Makefile b/x11-toolkits/wlroots019/Makefile
index f785e46fa20d..679858b4f554 100644
--- a/x11-toolkits/wlroots019/Makefile
+++ b/x11-toolkits/wlroots019/Makefile
@@ -1,6 +1,6 @@
PORTNAME= wlroots
DISTVERSION= 0.19.0
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= x11-toolkits
PKGNAMESUFFIX= 019
@@ -58,7 +58,8 @@ VULKAN_DESC= Vulkan renderer
VULKAN_BUILD_DEPENDS= glslangValidator:graphics/glslang \
vulkan-headers>0:graphics/vulkan-headers
VULKAN_LIB_DEPENDS= libvulkan.so:graphics/vulkan-loader
-VULKAN_RUN_DEPENDS= mesa-dri>0:graphics/mesa-dri
+VULKAN_RUN_DEPENDS= mesa-dri>0:graphics/mesa-dri \
+ vulkan-headers>0:graphics/vulkan-headers
VULKAN_VARS= RENDERERS+=vulkan
X11_LIB_DEPENDS= libxcb-errors.so:x11/xcb-util-errors \
diff --git a/x11-wm/wayfire-plugins-extra/Makefile b/x11-wm/wayfire-plugins-extra/Makefile
index a4a1179f9345..be68e5c70a79 100644
--- a/x11-wm/wayfire-plugins-extra/Makefile
+++ b/x11-wm/wayfire-plugins-extra/Makefile
@@ -1,51 +1,43 @@
PORTNAME= wayfire-plugins-extra
DISTVERSIONPREFIX= v
-DISTVERSION= 0.9.0
-PORTREVISION= 1
+DISTVERSION= 0.10.0
CATEGORIES= x11-wm wayland
-MAINTAINER= jbeich@FreeBSD.org
+MAINTAINER= ports@FreeBSD.org
COMMENT= Additional plugins for Wayfire
WWW= https://wayfire.org/
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE
-BUILD_DEPENDS= evdev-proto>0:devel/evdev-proto \
+BUILD_DEPENDS= boost-libs>0:devel/boost-libs \
+ evdev-proto>0:devel/evdev-proto \
wayland-scanner:graphics/wayland \
wayland-protocols>0:graphics/wayland-protocols \
wayfire>0:x11-wm/wayfire
LIB_DEPENDS= libevdev.so:devel/libevdev \
libwf-config.so:devel/wf-config \
libwayland-server.so:graphics/wayland \
- libwlroots-0.17.so:x11-toolkits/wlroots017
+ libwlroots-0.19.so:x11-toolkits/wlroots019
-USES= compiler:c++17-lang gnome meson pkgconfig
+USES= compiler:c++17-lang gl gnome meson pkgconfig
USE_GITHUB= yes
USE_GITLAB= nodefault
+USE_GL= glesv2
USE_GNOME= cairo glibmm
GH_ACCOUNT= WayfireWM
-GH_TUPLE= timgott:wayfire-shadows:de32395:wayfire_shadows/subprojects/wayfire-shadows \
- soreau:pixdecor:d172e84:pixdecor/subprojects/pixdecor \
- soreau:filters:5850fee:filters/subprojects/filters
-GL_TUPLE= wayfireplugins:focus-request:bc41d54:focus_request/subprojects/focus-request \
- wayfireplugins:windecor:f609ac0:windecor/subprojects/windecor
+GH_TUPLE= timgott:wayfire-shadows:v0.9.0-1-g453c217:wayfire_shadows/subprojects/wayfire-shadows \
+ soreau:pixdecor:8a0b028:pixdecor/subprojects/pixdecor \
+ soreau:filters:00024b5:filters/subprojects/filters
+GL_TUPLE= wayfireplugins:focus-request:v0.9.0:focus_request/subprojects/focus-request
MESON_ARGS= -Denable_focus_request=true -Denable_wayfire_shadows=true \
-Denable_filters=true
-OPTIONS_DEFINE= LIBRSVG2 PANGO
-OPTIONS_DEFAULT=LIBRSVG2 PANGO
+OPTIONS_DEFINE= PANGO
+OPTIONS_DEFAULT=PANGO
OPTIONS_SUB= yes
PANGO_USE= GNOME=pango
PANGO_MESON_TRUE= enable_pixdecor
-LIBRSVG2_USE= GNOME=librsvg2
-LIBRSVG2_MESON_TRUE= enable_windecor
-
-post-patch:
-# Respect PREFIX for icons
- @${REINPLACE_CMD} 's,/usr/share,${DATADIR:H},' \
- ${WRKSRC}/subprojects/windecor/deco-icontheme.cpp
-
.include <bsd.port.mk>
diff --git a/x11-wm/wayfire-plugins-extra/distinfo b/x11-wm/wayfire-plugins-extra/distinfo
index 91f2faf8ccc6..b0ce7721887d 100644
--- a/x11-wm/wayfire-plugins-extra/distinfo
+++ b/x11-wm/wayfire-plugins-extra/distinfo
@@ -1,13 +1,11 @@
-TIMESTAMP = 1724488925
-SHA256 (WayfireWM-wayfire-plugins-extra-v0.9.0_GH0.tar.gz) = 5fd08387fb02ce541b7f9dfbeefbbef9cd19b2c88347517f40afab4da54b83bf
-SIZE (WayfireWM-wayfire-plugins-extra-v0.9.0_GH0.tar.gz) = 48580
-SHA256 (timgott-wayfire-shadows-de32395_GH0.tar.gz) = 2d6f0c4fc8524d2b4a926955d3f6856c090d08d37b8908979039e6e1291779c8
-SIZE (timgott-wayfire-shadows-de32395_GH0.tar.gz) = 11260
-SHA256 (soreau-pixdecor-d172e84_GH0.tar.gz) = ba938deac035e5f21e92d9f838b80b0539d6b8dc004f09f25cd400125376759c
-SIZE (soreau-pixdecor-d172e84_GH0.tar.gz) = 41145
-SHA256 (soreau-filters-5850fee_GH0.tar.gz) = 4a97738f07de6e3def04656226960090ebc2046ceb62c860a5cee94406da4188
-SIZE (soreau-filters-5850fee_GH0.tar.gz) = 6515
-SHA256 (focus-request-bc41d54.tar.bz2) = da114547ed0b3ccca593d44e4a01f6d86a45ff284e15610e8e465696e9446da9
-SIZE (focus-request-bc41d54.tar.bz2) = 1740
-SHA256 (windecor-f609ac0.tar.bz2) = 2b10209bb6e787af69b6115291330c37dfc8f1c39fb9f91a650cf3ad1c586c10
-SIZE (windecor-f609ac0.tar.bz2) = 32244
+TIMESTAMP = 1754971427
+SHA256 (WayfireWM-wayfire-plugins-extra-v0.10.0_GH0.tar.gz) = b986c7df5b25c9dfaad0ee17aadc21166042faa7c278bba98759fd5505d247ea
+SIZE (WayfireWM-wayfire-plugins-extra-v0.10.0_GH0.tar.gz) = 60234
+SHA256 (timgott-wayfire-shadows-v0.9.0-1-g453c217_GH0.tar.gz) = d4ad8fd9cbb27f743c9a79893699fe34e8ed99197174c2ee28bef0b399d15217
+SIZE (timgott-wayfire-shadows-v0.9.0-1-g453c217_GH0.tar.gz) = 12522
+SHA256 (soreau-pixdecor-8a0b028_GH0.tar.gz) = 5138125cf18f4281565fdfb8d9f59c922de629a1ae52718dcc74429f8bfe5c0e
+SIZE (soreau-pixdecor-8a0b028_GH0.tar.gz) = 47313
+SHA256 (soreau-filters-00024b5_GH0.tar.gz) = b3716287703b9b1c98bf769d8dbb2577d95b1f2891ea1cf863fab1fda7d24124
+SIZE (soreau-filters-00024b5_GH0.tar.gz) = 8923
+SHA256 (focus-request-v0.9.0.tar.bz2) = 07914e465db240d1153410a08a54c35086e10f3654e2e177830e24bbf4e56c81
+SIZE (focus-request-v0.9.0.tar.bz2) = 4344
diff --git a/x11-wm/wayfire-plugins-extra/files/patch-libc++ b/x11-wm/wayfire-plugins-extra/files/patch-libc++
deleted file mode 100644
index 0f971afea036..000000000000
--- a/x11-wm/wayfire-plugins-extra/files/patch-libc++
+++ /dev/null
@@ -1,14 +0,0 @@
-../subprojects/windecor/deco-theme.cpp:14:10: fatal error: 'bits/stdc++.h' file not found
-#include <bits/stdc++.h>
- ^~~~~~~~~~~~~~~
-
---- subprojects/windecor/deco-theme.cpp.orig 2023-09-30 05:08:04 UTC
-+++ subprojects/windecor/deco-theme.cpp
-@@ -11,7 +11,6 @@
- #include <sys/stat.h>
- #include <unistd.h>
- #include <fstream>
--#include <bits/stdc++.h>
-
- typedef struct {
- double x;
diff --git a/x11-wm/wayfire-plugins-extra/files/patch-wlroots017 b/x11-wm/wayfire-plugins-extra/files/patch-wlroots017
deleted file mode 100644
index 43194a59e84f..000000000000
--- a/x11-wm/wayfire-plugins-extra/files/patch-wlroots017
+++ /dev/null
@@ -1,30 +0,0 @@
-wayfire-shadows| Run-time dependency wlroots found: NO (tried pkgconfig and cmake)
-
-subprojects/wayfire-shadows/meson.build:17:11: ERROR: Dependency "wlroots" not found, tried pkgconfig and cmake
-
-windecor| Run-time dependency wlroots found: NO (tried pkgconfig and cmake)
-
-subprojects/windecor/meson.build:18:11: ERROR: Dependency "wlroots" not found, tried pkgconfig and cmake
-
---- subprojects/wayfire-shadows/meson.build.orig 2023-09-08 22:38:12 UTC
-+++ subprojects/wayfire-shadows/meson.build
-@@ -14,7 +14,7 @@ wayfire = dependency('wayfire')
- )
-
- wayfire = dependency('wayfire')
--wlroots = dependency('wlroots')
-+wlroots = dependency('wlroots-0.17')
- wfconfig = dependency('wf-config')
-
- add_project_arguments(['-DWLR_USE_UNSTABLE'], language: ['cpp', 'c'])
---- subprojects/windecor/meson.build.orig 2023-09-30 05:08:04 UTC
-+++ subprojects/windecor/meson.build
-@@ -15,7 +15,7 @@ pixman = dependency('pixman-1')
-
- wayfire = dependency('wayfire')
- pixman = dependency('pixman-1')
--wlroots = dependency('wlroots')
-+wlroots = dependency('wlroots-0.17')
- wfconfig = dependency('wf-config')
- cairo = dependency('cairo')
- rsvg = dependency( 'librsvg-2.0' )
diff --git a/x11-wm/wayfire-plugins-extra/pkg-plist b/x11-wm/wayfire-plugins-extra/pkg-plist
index 151a668557de..64314a5ac6dd 100644
--- a/x11-wm/wayfire-plugins-extra/pkg-plist
+++ b/x11-wm/wayfire-plugins-extra/pkg-plist
@@ -2,6 +2,7 @@ lib/wayfire/libannotate.so
lib/wayfire/libautorotate-iio.so
lib/wayfire/libbench.so
lib/wayfire/libcrosshair.so
+lib/wayfire/libextra-animations.so
lib/wayfire/libfilters.so
lib/wayfire/libfocus-change.so
lib/wayfire/libfocus-request.so
@@ -18,17 +19,17 @@ lib/wayfire/libobs.so
lib/wayfire/libpin-view.so
%%PANGO%%lib/wayfire/libpixdecor.so
lib/wayfire/libshowrepaint.so
+lib/wayfire/libshowtouch.so
lib/wayfire/libview-shot.so
lib/wayfire/libwater.so
-%%LIBRSVG2%%lib/wayfire/libwindecor.so
lib/wayfire/libwinshadows.so
lib/wayfire/libwinzoom.so
lib/wayfire/libworkspace-names.so
-%%LIBRSVG2%%share/wayfire/icons/plugin-windecor.svg
share/wayfire/metadata/annotate.xml
share/wayfire/metadata/autorotate-iio.xml
share/wayfire/metadata/bench.xml
share/wayfire/metadata/crosshair.xml
+share/wayfire/metadata/extra-animations.xml
share/wayfire/metadata/filters.xml
share/wayfire/metadata/focus-change.xml
share/wayfire/metadata/focus-request.xml
@@ -44,10 +45,9 @@ share/wayfire/metadata/obs.xml
share/wayfire/metadata/pin-view.xml
%%PANGO%%share/wayfire/metadata/pixdecor.xml
share/wayfire/metadata/showrepaint.xml
+share/wayfire/metadata/showtouch.xml
share/wayfire/metadata/view-shot.xml
share/wayfire/metadata/water.xml
-%%LIBRSVG2%%share/wayfire/metadata/windecor.xml
share/wayfire/metadata/window-zoom.xml
share/wayfire/metadata/winshadows.xml
share/wayfire/metadata/workspace-names.xml
-%%LIBRSVG2%%share/wayfire/windecor/executable.svg
diff --git a/x11-wm/wayfire/Makefile b/x11-wm/wayfire/Makefile
index c8af247557e0..0742aca84f0b 100644
--- a/x11-wm/wayfire/Makefile
+++ b/x11-wm/wayfire/Makefile
@@ -1,10 +1,9 @@
PORTNAME= wayfire
DISTVERSIONPREFIX= v
-DISTVERSION= 0.9.0
-PORTREVISION= 2
+DISTVERSION= 0.10.0
CATEGORIES= x11-wm wayland
-MAINTAINER= jbeich@FreeBSD.org
+MAINTAINER= ports@FreeBSD.org
COMMENT= 3D Wayland compositor
WWW= https://wayfire.org/
@@ -12,20 +11,20 @@ LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE
BUILD_DEPENDS= evdev-proto>0:devel/evdev-proto \
- nlohmann-json>0:devel/nlohmann-json \
- wf-config>=0.9.0<0.10.0:devel/wf-config \
+ wf-config>=0.10.0<0.11.0:devel/wf-config \
${LOCALBASE}/include/xf86drmMode.h:graphics/libdrm \
wayland-protocols>=1.12:graphics/wayland-protocols \
glm>=0.9.8:math/glm
LIB_DEPENDS= libevdev.so:devel/libevdev \
libinotify.so:devel/libinotify \
+ libudev.so:devel/libudev-devd \
libwf-config.so:devel/wf-config \
+ libyyjson.so:devel/yyjson \
libpng.so:graphics/png \
libwayland-server.so:graphics/wayland \
- libwlroots-0.17.so:x11-toolkits/wlroots017 \
+ libwlroots-0.19.so:x11-toolkits/wlroots019 \
libinput.so:x11/libinput \
libxkbcommon.so:x11/libxkbcommon
-RUN_DEPENDS= nlohmann-json>0:devel/nlohmann-json
TEST_DEPENDS= doctest>0:devel/doctest
USES= cmake:indirect compiler:c++17-lang gl gnome jpeg meson pkgconfig xorg
@@ -34,13 +33,15 @@ USE_GL= egl glesv2
USE_GNOME= cairo pango
USE_XORG= pixman
GH_ACCOUNT= WayfireWM
-GH_TUPLE= WayfireWM:wf-touch:b8b844f:wftouch/subprojects/wf-touch \
- WayfireWM:wf-utils:08553c4:wfutils/subprojects/wf-utils
+GH_TUPLE= WayfireWM:wf-touch:093d894:wftouch/subprojects/wf-touch \
+ WayfireWM:wf-utils:3ef27d1:wfutils/subprojects/wf-utils
MESON_ARGS= -Dtests=disabled \
-Dwf-touch:tests=disabled \
- -Dwf-utils:default_library=static \
${NULL}
+# XXX https://github.com/WayfireWM/wayfire/issues/2800
+USES+= localbase
+
.if !exists(/usr/include/omp.h)
# LLVM openmp in base doesn't support powerpc, armv6, armv7 yet
MESON_ARGS+= -Denable_openmp=false
@@ -58,12 +59,6 @@ post-patch:
-e '/project_version/s/@0@/${DISTVERSIONFULL}/' \
${WRKSRC}/meson.build
-.ifdef GH_TUPLE
-post-configure:
- @${REINPLACE_CMD} 's/meson install/& \
- --skip-subprojects/' ${BUILD_WRKSRC}/build.ninja
-.endif
-
post-install:
${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
${INSTALL_DATA} ${WRKSRC}/${PORTNAME}.ini ${STAGEDIR}${EXAMPLESDIR}
@@ -71,7 +66,8 @@ post-install:
pre-test:
@if [ ! -e ${WRKDIR}/.meson_build_tests ]; then \
${RM} ${CONFIGURE_COOKIE} ${BUILD_COOKIE}; \
- ${MAKE} -C${.CURDIR} build MESON_ARGS="${MESON_ARGS} --reconfigure -Dtests=enabled"; \
+ ${MAKE} -C${.CURDIR} build MESON_ARGS="${MESON_ARGS} --reconfigure \
+ ${MESON_ARGS:M*tests*:S/=dis/=en/}"; \
${TOUCH} ${WRKDIR}/.meson_build_tests; \
fi
diff --git a/x11-wm/wayfire/distinfo b/x11-wm/wayfire/distinfo
index 8e706d071d10..779fe7e32d9d 100644
--- a/x11-wm/wayfire/distinfo
+++ b/x11-wm/wayfire/distinfo
@@ -1,7 +1,7 @@
-TIMESTAMP = 1724497494
-SHA256 (WayfireWM-wayfire-v0.9.0_GH0.tar.gz) = 233fa0cf1c967a48d40a075ea7e34132e80ad30c2aef5e306c4466be1e585acb
-SIZE (WayfireWM-wayfire-v0.9.0_GH0.tar.gz) = 477667
-SHA256 (WayfireWM-wf-touch-b8b844f_GH0.tar.gz) = d4c1ba47e3f1561a4de2fc3166a46e9a3849526b62efab27b160a4a2804fb6b8
-SIZE (WayfireWM-wf-touch-b8b844f_GH0.tar.gz) = 9976
-SHA256 (WayfireWM-wf-utils-08553c4_GH0.tar.gz) = 0d5f9293fa0012b095c8e902884ca56f828928cf14a578ceac712f73e85b40d5
-SIZE (WayfireWM-wf-utils-08553c4_GH0.tar.gz) = 48507
+TIMESTAMP = 1756267943
+SHA256 (WayfireWM-wayfire-v0.10.0_GH0.tar.gz) = f4b3997ae0cc764d38226038d05291f44b02988782f27852c26b04387b9da440
+SIZE (WayfireWM-wayfire-v0.10.0_GH0.tar.gz) = 507994
+SHA256 (WayfireWM-wf-touch-093d894_GH0.tar.gz) = 7fa685012ed73363d507f093838b7d64264b6038bbdc5baab571171f5120d257
+SIZE (WayfireWM-wf-touch-093d894_GH0.tar.gz) = 10577
+SHA256 (WayfireWM-wf-utils-3ef27d1_GH0.tar.gz) = fcea63b4e4fd026fede0fc0fbeb4858c3d2df0eb9da400d26a322b2ff10a2d68
+SIZE (WayfireWM-wf-utils-3ef27d1_GH0.tar.gz) = 48507
diff --git a/x11-wm/wayfire/files/patch-wlroots017 b/x11-wm/wayfire/files/patch-wlroots017
deleted file mode 100644
index 28311aebc9a3..000000000000
--- a/x11-wm/wayfire/files/patch-wlroots017
+++ /dev/null
@@ -1,32 +0,0 @@
-Run-time dependency wlroots found: NO (tried pkgconfig and cmake)
-Looking for a fallback subproject for the dependency wlroots
-
-meson.build:45:11: ERROR: Subproject exists but has no meson.build file.
-
---- meson.build.orig 2024-08-24 11:04:54 UTC
-+++ meson.build
-@@ -42,11 +42,11 @@ elif get_option('use_system_wlroots').enabled()
-
- elif get_option('use_system_wlroots').enabled()
- use_system_wlroots = true
-- wlroots = dependency('wlroots', version: ['>=0.17.0', '<0.18.0'], required: true)
-+ wlroots = dependency('wlroots-0.17', version: ['>=0.17.0', '<0.18.0'], required: true)
-
- elif get_option('use_system_wlroots').auto()
- message( 'SEARCHING FOR WLROOTS' )
-- wlroots = dependency('wlroots', version: ['>=0.17.0', '<0.18.0'], required: false)
-+ wlroots = dependency('wlroots-0.17', version: ['>=0.17.0', '<0.18.0'], required: false)
- use_system_wlroots = true
- if not wlroots.found()
- use_system_wlroots = false
---- src/meson.build.orig 2024-08-24 11:04:54 UTC
-+++ src/meson.build
-@@ -147,7 +147,7 @@ public_api_requirements = [
- wayland_server,
- pixman,
- # These might be subprojects so we need to pass them as strings
-- 'wlroots',
-+ 'wlroots-0.17',
- 'wf-config',
- ]
-
diff --git a/x11-wm/wayfire/pkg-plist b/x11-wm/wayfire/pkg-plist
index 8775999874d7..c741060a3665 100644
--- a/x11-wm/wayfire/pkg-plist
+++ b/x11-wm/wayfire/pkg-plist
@@ -1,7 +1,13 @@
bin/wayfire
+include/wayfire/action/action.hpp
+include/wayfire/action/action_interface.hpp
include/wayfire/bindings-repository.hpp
include/wayfire/bindings.hpp
include/wayfire/compositor-view.hpp
+include/wayfire/condition/access_interface.hpp
+include/wayfire/condition/condition.hpp
+include/wayfire/condition/logic_condition.hpp
+include/wayfire/condition/test_condition.hpp
include/wayfire/config-backend.hpp
include/wayfire/config.h
include/wayfire/core.hpp
@@ -11,10 +17,13 @@ include/wayfire/geometry.hpp
include/wayfire/idle.hpp
include/wayfire/img.hpp
include/wayfire/input-device.hpp
+include/wayfire/lexer/lexer.hpp
+include/wayfire/lexer/literal.hpp
+include/wayfire/lexer/symbol.hpp
include/wayfire/matcher.hpp
+include/wayfire/nonstd/json.hpp
include/wayfire/nonstd/observer_ptr.h
include/wayfire/nonstd/reverse.hpp
-include/wayfire/nonstd/safe-list.hpp
include/wayfire/nonstd/tracking-allocator.hpp
include/wayfire/nonstd/wlroots-full.hpp
include/wayfire/nonstd/wlroots.hpp
@@ -23,8 +32,13 @@ include/wayfire/opengl.hpp
include/wayfire/option-wrapper.hpp
include/wayfire/output-layout.hpp
include/wayfire/output.hpp
+include/wayfire/parser/action_parser.hpp
+include/wayfire/parser/condition_parser.hpp
+include/wayfire/parser/lambda_rule_parser.hpp
+include/wayfire/parser/rule_parser.hpp
include/wayfire/per-output-plugin.hpp
include/wayfire/plugin.hpp
+include/wayfire/plugins/animate/animate.hpp
include/wayfire/plugins/blur/blur.hpp
include/wayfire/plugins/common/cairo-util.hpp
include/wayfire/plugins/common/geometry-animation.hpp
@@ -34,7 +48,6 @@ include/wayfire/plugins/common/move-drag-interface.hpp
include/wayfire/plugins/common/preview-indication.hpp
include/wayfire/plugins/common/shared-core-data.hpp
include/wayfire/plugins/common/simple-text-node.hpp
-include/wayfire/plugins/common/simple-texture.hpp
include/wayfire/plugins/common/util.hpp
include/wayfire/plugins/common/workspace-wall.hpp
include/wayfire/plugins/crossfade.hpp
@@ -43,12 +56,16 @@ include/wayfire/plugins/input-method-v1/input-method-v1.hpp
include/wayfire/plugins/ipc/ipc-activator.hpp
include/wayfire/plugins/ipc/ipc-helpers.hpp
include/wayfire/plugins/ipc/ipc-method-repository.hpp
+include/wayfire/plugins/ipc/ipc-rules-common.hpp
include/wayfire/plugins/scale-signal.hpp
include/wayfire/plugins/vswitch.hpp
include/wayfire/plugins/wm-actions-signals.hpp
include/wayfire/plugins/wobbly/wobbly-signal.hpp
include/wayfire/region.hpp
include/wayfire/render-manager.hpp
+include/wayfire/render.hpp
+include/wayfire/rule/lambda_rule.hpp
+include/wayfire/rule/rule.hpp
include/wayfire/scene-input.hpp
include/wayfire/scene-operations.hpp
include/wayfire/scene-render.hpp
@@ -58,6 +75,7 @@ include/wayfire/signal-definitions.hpp
include/wayfire/signal-provider.hpp
include/wayfire/toplevel-view.hpp
include/wayfire/toplevel.hpp
+include/wayfire/touch/touch.hpp
include/wayfire/txn/transaction-manager.hpp
include/wayfire/txn/transaction-object.hpp
include/wayfire/txn/transaction.hpp
@@ -71,6 +89,8 @@ include/wayfire/unstable/wlr-view-keyboard-interaction.hpp
include/wayfire/unstable/xdg-toplevel-base.hpp
include/wayfire/unstable/xwl-toplevel-base.hpp
include/wayfire/util.hpp
+include/wayfire/utils.hpp
+include/wayfire/variant.hpp
include/wayfire/view-access-interface.hpp
include/wayfire/view-helpers.hpp
include/wayfire/view-transform.hpp
@@ -80,6 +100,12 @@ include/wayfire/workarea.hpp
include/wayfire/workspace-set.hpp
include/wayfire/workspace-stream.hpp
lib/libwayfire-blur-base.so
+lib/libwayfire-move-drag-interface.a
+lib/libwayfire-workspace-wall.a
+lib/libwf-utils.so
+lib/libwf-utils.so.0
+lib/libwf-utils.so.0.4.0
+lib/libwftouch.a
lib/wayfire/libalpha.so
lib/wayfire/libanimate.so
lib/wayfire/libautostart.so
@@ -88,7 +114,6 @@ lib/wayfire/libcommand.so
lib/wayfire/libcube.so
lib/wayfire/libdecoration.so
lib/wayfire/libdefault-config-backend.so
-lib/wayfire/libdemo-ipc.so
lib/wayfire/libexpo.so
lib/wayfire/libextra-gestures.so
lib/wayfire/libfast-switcher.so
@@ -113,6 +138,7 @@ lib/wayfire/libshortcuts-inhibit.so
lib/wayfire/libsimple-tile.so
lib/wayfire/libstipc.so
lib/wayfire/libswitcher.so
+lib/wayfire/libvk-color-management.so
lib/wayfire/libvswipe.so
lib/wayfire/libvswitch.so
lib/wayfire/libwayfire-shell.so
@@ -125,6 +151,7 @@ lib/wayfire/libxdg-activation.so
lib/wayfire/libxkb-bindings.so
lib/wayfire/libzoom.so
libdata/pkgconfig/wayfire.pc
+libdata/pkgconfig/wf-utils.pc
share/man/man1/wayfire.1.gz
%%EXAMPLESDIR%%/wayfire.ini
%%DATADIR%%/metadata/alpha.xml
@@ -174,3 +201,4 @@ share/man/man1/wayfire.1.gz
%%DATADIR%%/metadata/zoom.xml
%%DATADIR%%/protocols/unstable/wayfire-shell-unstable-v2.xml
share/wayland-sessions/wayfire.desktop
+share/xdg-desktop-portal/wayfire-portals.conf
diff --git a/x11/Makefile b/x11/Makefile
index 4b4ee4a3f246..e641d7dcf4ed 100644
--- a/x11/Makefile
+++ b/x11/Makefile
@@ -460,6 +460,7 @@
SUBDIR += watershot
SUBDIR += way-displays
SUBDIR += waybar
+ SUBDIR += waycheck
SUBDIR += waycorner
SUBDIR += wayidle
SUBDIR += wayland-logout
diff --git a/x11/salut/Makefile b/x11/salut/Makefile
index 08bef05512b1..7977ed92222e 100644
--- a/x11/salut/Makefile
+++ b/x11/salut/Makefile
@@ -4,7 +4,7 @@ DISTVERSION= 0.3.1
PORTREVISION= 25
CATEGORIES= x11 wayland
-MAINTAINER= jbeich@FreeBSD.org
+MAINTAINER= ports@FreeBSD.org
COMMENT= Sleek notification daemon
LICENSE= MPL20
diff --git a/x11/sway-audio-idle-inhibit/Makefile b/x11/sway-audio-idle-inhibit/Makefile
index 585d62702df4..d00e00b9075f 100644
--- a/x11/sway-audio-idle-inhibit/Makefile
+++ b/x11/sway-audio-idle-inhibit/Makefile
@@ -4,7 +4,7 @@ PORTVERSION= 0.1.2
PORTREVISION= 1
CATEGORIES= x11 wayland
-MAINTAINER= jbeich@FreeBSD.org
+MAINTAINER= ports@FreeBSD.org
COMMENT= Disable swayidle during audio playback/recording
WWW= https://github.com/ErikReider/SwayAudioIdleInhibit
diff --git a/x11/swayfloatingswitcher/Makefile b/x11/swayfloatingswitcher/Makefile
index 99a792aad2bd..20d38b63a953 100644
--- a/x11/swayfloatingswitcher/Makefile
+++ b/x11/swayfloatingswitcher/Makefile
@@ -3,7 +3,7 @@ PORTVERSION= s20221131
PORTREVISION= 2
CATEGORIES= x11
-MAINTAINER= jbeich@FreeBSD.org
+MAINTAINER= ports@FreeBSD.org
COMMENT= Simple Alt+Tab switcher for floating windows
WWW= https://github.com/ErikReider/SwayFloatingSwitcher
diff --git a/x11/swaync/Makefile b/x11/swaync/Makefile
index 30ad36275dea..e5a620326a73 100644
--- a/x11/swaync/Makefile
+++ b/x11/swaync/Makefile
@@ -3,7 +3,7 @@ DISTVERSIONPREFIX= v
PORTVERSION= 0.12.2
CATEGORIES= x11 wayland
-MAINTAINER= jbeich@FreeBSD.org
+MAINTAINER= ports@FreeBSD.org
COMMENT= Simple Wayland notification daemon with GTK panel
WWW= https://github.com/ErikReider/SwayNotificationCenter
diff --git a/x11/swaync/pkg-descr b/x11/swaync/pkg-descr
index fe8221c507b9..fd7fb56cef28 100644
--- a/x11/swaync/pkg-descr
+++ b/x11/swaync/pkg-descr
@@ -2,18 +2,26 @@ A simple notification daemon with a GTK gui for notifications and the
control center
Features:
+- Grouped notifications
- Keyboard shortcuts
- Notification body markup with image support
+- Inline replies
- A panel to view previous notifications
- Show album art for notifications like Spotify
- Do not disturb
+- Inhibiting notifications through DBUS or client
+- Restores previous Do not disturb value after restart
- Click notification to execute default action
- Show alternative notification actions
+- Copy detected 2FA codes to clipboard
- Customization through a CSS file
- Trackpad/mouse gesture to close notification
- The same features as any other basic notification daemon
- Basic configuration through a JSON config file
- Hot-reload config through swaync-client
+- Customizable widgets
+- Select the preferred monitor to display on (with swaync-client
+ command for scripting)
Planned Features:
- Slick animations
diff --git a/x11/swaysettings/Makefile b/x11/swaysettings/Makefile
index 8ade08fd89b8..6e69f59d97c8 100644
--- a/x11/swaysettings/Makefile
+++ b/x11/swaysettings/Makefile
@@ -4,7 +4,7 @@ DISTVERSION= 0.5.0
PORTREVISION= 1
CATEGORIES= x11
-MAINTAINER= jbeich@FreeBSD.org
+MAINTAINER= ports@FreeBSD.org
COMMENT= GUI for setting Sway wallpaper, default apps, GTK themes, etc.
WWW= https://github.com/ErikReider/SwaySettings
diff --git a/x11/wapanel/Makefile b/x11/wapanel/Makefile
index 74a4849076d9..520343443625 100644
--- a/x11/wapanel/Makefile
+++ b/x11/wapanel/Makefile
@@ -3,7 +3,7 @@ DISTVERSION= 1.1.0
PORTREVISION= 7
CATEGORIES= x11 wayland
-MAINTAINER= jbeich@FreeBSD.org
+MAINTAINER= ports@FreeBSD.org
COMMENT= Desktop bar for Wayfire and other wlroots compositors
WWW= https://firstbober.github.io/wapanel/
diff --git a/x11/watershot/Makefile b/x11/watershot/Makefile
index fa553f474884..b5dbe3602509 100644
--- a/x11/watershot/Makefile
+++ b/x11/watershot/Makefile
@@ -4,7 +4,7 @@ DISTVERSION= 0.2.2
PORTREVISION= 16
CATEGORIES= x11 wayland
-MAINTAINER= jbeich@FreeBSD.org
+MAINTAINER= ports@FreeBSD.org
COMMENT= Simple Wayland-native screenshot tool
WWW= https://github.com/Kirottu/watershot
diff --git a/x11/waycheck/Makefile b/x11/waycheck/Makefile
new file mode 100644
index 000000000000..65b41ff8c51d
--- /dev/null
+++ b/x11/waycheck/Makefile
@@ -0,0 +1,30 @@
+PORTNAME= waycheck
+DISTVERSIONPREFIX= v
+DISTVERSION= 1.7.0
+CATEGORIES= x11 wayland
+
+MAINTAINER= tagattie@FreeBSD.org
+COMMENT= Simple GUI that displays the protocols implemented by a Wayland compositor
+WWW= https://gitlab.freedesktop.org/serebit/waycheck
+
+LICENSE= APACHE20 CC0-1.0
+LICENSE_COMB= multi
+LICENSE_FILE_APACHE20= ${WRKSRC}/LICENSES/Apache-2.0.txt
+LICENSE_FILE_CC0-1.0= ${WRKSRC}/LICENSES/CC0-1.0.txt
+
+LIB_DEPENDS= libwayland-client.so:graphics/wayland
+
+USES= meson pkgconfig qt:6
+
+USE_GITLAB= yes
+GL_SITE= https://gitlab.freedesktop.org/
+GL_ACCOUNT= serebit
+
+USE_QT= base wayland
+
+PLIST_FILES= bin/${PORTNAME} \
+ share/applications/dev.serebit.Waycheck.desktop \
+ share/icons/hicolor/scalable/apps/dev.serebit.Waycheck.svg \
+ share/metainfo/dev.serebit.Waycheck.metainfo.xml
+
+.include <bsd.port.mk>
diff --git a/x11/waycheck/distinfo b/x11/waycheck/distinfo
new file mode 100644
index 000000000000..c3dab321fc1d
--- /dev/null
+++ b/x11/waycheck/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1756195503
+SHA256 (waycheck-v1.7.0.tar.bz2) = 658caca3d967d9b23bb1f6d42c6fd67832263bb60fd600a26e97748d0e47e105
+SIZE (waycheck-v1.7.0.tar.bz2) = 21545
diff --git a/x11/waycheck/files/patch-meson.build b/x11/waycheck/files/patch-meson.build
new file mode 100644
index 000000000000..882534abc553
--- /dev/null
+++ b/x11/waycheck/files/patch-meson.build
@@ -0,0 +1,15 @@
+--- meson.build.orig 2025-08-27 20:19:12 UTC
++++ meson.build
+@@ -16,6 +16,12 @@ dep_wayland_client = dependency('wayland-client')
+ )
+ dep_wayland_client = dependency('wayland-client')
+
++cc = meson.get_compiler('cpp')
++dep_libutil = dependency('', required : false)
++if host_machine.system() == 'freebsd'
++ dep_libutil = cc.find_library('util', required : true)
++endif
++
+ datadir = get_option('datadir')
+
+ subdir('src')
diff --git a/x11/waycheck/files/patch-src_meson.build b/x11/waycheck/files/patch-src_meson.build
new file mode 100644
index 000000000000..decf26941ea7
--- /dev/null
+++ b/x11/waycheck/files/patch-src_meson.build
@@ -0,0 +1,10 @@
+--- src/meson.build.orig 2025-08-27 20:18:18 UTC
++++ src/meson.build
+@@ -15,6 +15,6 @@ waycheck = executable(
+ waycheck = executable(
+ 'waycheck',
+ sources: waycheck_sources,
+- dependencies: [dep_qt6, dep_wayland_client],
++ dependencies: [dep_qt6, dep_wayland_client, dep_libutil],
+ install: true,
+ )
diff --git a/x11/waycheck/files/patch-src_window.cpp b/x11/waycheck/files/patch-src_window.cpp
new file mode 100644
index 000000000000..6e976a9c5ffb
--- /dev/null
+++ b/x11/waycheck/files/patch-src_window.cpp
@@ -0,0 +1,56 @@
+--- src/window.cpp.orig 2025-06-27 19:43:51 UTC
++++ src/window.cpp
+@@ -13,7 +13,24 @@
+ #include <unistd.h>
+ #include <wayland-client-protocol.h>
+
++#if defined(__FreeBSD__)
++#include <sys/types.h>
++#include <sys/ucred.h>
++#include <sys/un.h>
++#include <sys/user.h>
++#include <libutil.h>
++#endif
++
+ static pid_t pid_from_fd(const int fd) {
++#if defined(__FreeBSD__)
++ xucred cred{};
++ socklen_t len = sizeof(struct xucred);
++ if (getsockopt(fd, SOL_LOCAL, LOCAL_PEERCRED, &cred, &len) == -1) {
++ perror("getsockopt failed");
++ exit(1);
++ }
++ return cred.cr_pid;
++#else
+ ucred cred{};
+ socklen_t len = sizeof(struct ucred);
+ if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &cred, &len) == -1) {
+@@ -21,9 +38,19 @@ static pid_t pid_from_fd(const int fd) {
+ exit(1);
+ }
+ return cred.pid;
++#endif
+ }
+
+ static std::string process_name_from_pid(const pid_t pid) {
++#if defined(__FreeBSD__)
++ struct kinfo_proc *proc = kinfo_getproc(pid);
++
++ if (proc) {
++ std::string out = proc->ki_comm;
++ free(proc);
++ return out;
++ }
++#else
+ const std::string procpath = QString::asprintf("/proc/%d/comm", pid).toStdString();
+
+ std::ifstream infile(procpath);
+@@ -38,7 +65,7 @@ static std::string process_name_from_pid(const pid_t p
+ // running in a flatpak or a snap, most likely
+ return "Unknown (Sandboxed)";
+ }
+-
++#endif
+ return "Unknown";
+ }
+
diff --git a/x11/waycheck/pkg-descr b/x11/waycheck/pkg-descr
new file mode 100644
index 000000000000..fcdbdc739f27
--- /dev/null
+++ b/x11/waycheck/pkg-descr
@@ -0,0 +1,5 @@
+Waycheck is a simple Qt6 application that displays all of the Wayland
+protocols that your compositor supports, and all of the protocols that
+it doesn't support. It can be used to compare protocol support between
+compositors, or if you're working on your own compositor, to keep
+track of which protocols you still need to implement.
diff --git a/x11/wcm/Makefile b/x11/wcm/Makefile
index 5c9a05933b71..c3d81a31bd04 100644
--- a/x11/wcm/Makefile
+++ b/x11/wcm/Makefile
@@ -1,10 +1,9 @@
PORTNAME= wcm
DISTVERSIONPREFIX= v
-DISTVERSION= 0.9.0
-PORTREVISION= 1
+DISTVERSION= 0.10.0
CATEGORIES= x11 wayland
-MAINTAINER= jbeich@FreeBSD.org
+MAINTAINER= ports@FreeBSD.org
COMMENT= Wayfire Config Manager
WWW= https://wayfire.org/
@@ -25,8 +24,6 @@ USES= compiler:c++17-lang gnome meson pkgconfig
USE_GITHUB= yes
USE_GNOME= gdkpixbuf gtk30 libxml2
GH_ACCOUNT= WayfireWM
-MESON_ARGS= -Denable_wdisplays=false # use package
-DATADIR= ${PREFIX}/share/wayfire
OPTIONS_DEFINE= WDISPLAYS WFSHELL
OPTIONS_DEFAULT=WDISPLAYS WFSHELL
diff --git a/x11/wcm/distinfo b/x11/wcm/distinfo
index c78b27154182..2db2654231bc 100644
--- a/x11/wcm/distinfo
+++ b/x11/wcm/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1724414952
-SHA256 (WayfireWM-wcm-v0.9.0_GH0.tar.gz) = 35205c165b83ac387235b0415f58f0e80a8975421de23250c7cb70c471aeee87
-SIZE (WayfireWM-wcm-v0.9.0_GH0.tar.gz) = 400778
+TIMESTAMP = 1756308383
+SHA256 (WayfireWM-wcm-v0.10.0_GH0.tar.gz) = 9d42754243d3eed44426b0e9efab92a40277df691e592ae990b4733f2243a841
+SIZE (WayfireWM-wcm-v0.10.0_GH0.tar.gz) = 333987
diff --git a/x11/wcm/pkg-plist b/x11/wcm/pkg-plist
index b05212e9a733..dc8520e57748 100644
--- a/x11/wcm/pkg-plist
+++ b/x11/wcm/pkg-plist
@@ -1,12 +1,6 @@
bin/wcm
-share/applications/wayfire-config-manager.desktop
-share/icons/hicolor/128x128/apps/wcm.png
-share/icons/hicolor/160x160/apps/wcm.png
-share/icons/hicolor/192x192/apps/wcm.png
-share/icons/hicolor/48x48/apps/wcm.png
-share/icons/hicolor/64x64/apps/wcm.png
-share/icons/hicolor/72x72/apps/wcm.png
-share/icons/hicolor/96x96/apps/wcm.png
+share/applications/wcm.desktop
+share/icons/wcm.svg
%%DATADIR%%/icons/plugin-alpha.svg
%%DATADIR%%/icons/plugin-animate.svg
%%DATADIR%%/icons/plugin-annotate.svg
@@ -63,4 +57,4 @@ share/icons/hicolor/96x96/apps/wcm.png
%%DATADIR%%/icons/plugin-workspace-names.svg
%%DATADIR%%/icons/plugin-wrot.svg
%%DATADIR%%/icons/plugin-zoom.svg
-%%DATADIR%%/icons/wcm.png
+%%DATADIR%%/icons/wcm.svg
diff --git a/x11/wf-shell/Makefile b/x11/wf-shell/Makefile
index 0ee84c20d8b8..d81d93925194 100644
--- a/x11/wf-shell/Makefile
+++ b/x11/wf-shell/Makefile
@@ -1,10 +1,9 @@
PORTNAME= wf-shell
DISTVERSIONPREFIX= v
-DISTVERSION= 0.9.0
-PORTREVISION= 1
+DISTVERSION= 0.10.0
CATEGORIES= x11 wayland
-MAINTAINER= jbeich@FreeBSD.org
+MAINTAINER= ports@FreeBSD.org
COMMENT= GTK3-based panel for wayfire
WWW= https://wayfire.org/
diff --git a/x11/wf-shell/distinfo b/x11/wf-shell/distinfo
index c01e68ccaa32..49f73aff85fc 100644
--- a/x11/wf-shell/distinfo
+++ b/x11/wf-shell/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1724498806
-SHA256 (WayfireWM-wf-shell-v0.9.0_GH0.tar.gz) = 71d14174c08cf51334ff8ec10aa5e055340bf291b993fef85d15f51892098e82
-SIZE (WayfireWM-wf-shell-v0.9.0_GH0.tar.gz) = 9045484
+TIMESTAMP = 1736771286
+SHA256 (WayfireWM-wf-shell-v0.10.0_GH0.tar.gz) = f90bf34ead49d996c950ce52cb6aca62fbaaffcedbbf35165edb4d82f970a3ff
+SIZE (WayfireWM-wf-shell-v0.10.0_GH0.tar.gz) = 9045441
SHA256 (GNOME-libgnome-volume-control-468022b_GH0.tar.gz) = 1c1d806ad1f57d7f644381b67ee87ef3e7e10f3a2da1432beef535ca50c0040f
SIZE (GNOME-libgnome-volume-control-468022b_GH0.tar.gz) = 45503