Index | Thread | Search

From:
Peter Hessler <phessler@theapt.org>
Subject:
Re: UPDATE: multimedia/sfml
To:
Pascal Stumpf <pascal@stumpf.co>
Cc:
Rafael Sadowski <rafael@sizeofvoid.org>, ports@openbsd.org
Date:
Fri, 29 Aug 2025 22:50:30 +0200

Download raw body.

Thread
  • Pascal Stumpf:

    UPDATE: multimedia/sfml

  • On 2025 Aug 29 (Fri) at 20:58:36 +0200 (+0200), Pascal Stumpf wrote:
    :On Sun, 24 Aug 2025 21:14:13 +0200, Rafael Sadowski wrote:
    :> Simple update multimedia/sfml to 3.0. This update fix the
    :> build with libc++19.
    :
    :I'd rather update to 2.6.2 with a patch from FreeBSD.  3.0.0 is
    :apparently a major API change that breaks all dependent ports.
    :
    
    works for me on arm64.
    
    OK
    
    
    :
    :Index: Makefile
    :===================================================================
    :RCS file: /home/cvs/ports/multimedia/sfml/Makefile,v
    :diff -u -p -r1.18 Makefile
    :--- Makefile	15 Nov 2023 19:17:33 -0000	1.18
    :+++ Makefile	29 Aug 2025 18:54:56 -0000
    :@@ -1,16 +1,15 @@
    : COMMENT =		simple and fast multimedia library
    : 
    :-V =			2.5.1
    :+V =			2.6.2
    : DISTNAME =		SFML-${V}-sources
    : PKGNAME =		sfml-${V}
    :-REVISION =		0
    : EXTRACT_SUFX =		.zip
    : 
    :-SHARED_LIBS +=  sfml-audio                2.0 # 2.1
    :-SHARED_LIBS +=  sfml-graphics             2.0 # 2.1
    :-SHARED_LIBS +=  sfml-network              2.0 # 2.1
    :-SHARED_LIBS +=  sfml-system               2.0 # 2.1
    :-SHARED_LIBS +=  sfml-window               2.0 # 2.1
    :+SHARED_LIBS +=  sfml-audio                3.0 # 2.1
    :+SHARED_LIBS +=  sfml-graphics             3.0 # 2.1
    :+SHARED_LIBS +=  sfml-network              3.0 # 2.1
    :+SHARED_LIBS +=  sfml-system               3.0 # 2.1
    :+SHARED_LIBS +=  sfml-window               3.0 # 2.1
    : 
    : CATEGORIES =		multimedia
    : 
    :Index: distinfo
    :===================================================================
    :RCS file: /home/cvs/ports/multimedia/sfml/distinfo,v
    :diff -u -p -r1.3 distinfo
    :--- distinfo	30 Dec 2021 19:12:40 -0000	1.3
    :+++ distinfo	29 Aug 2025 18:44:54 -0000
    :@@ -1,2 +1,2 @@
    :-SHA256 (SFML-2.5.1-sources.zip) = vx4GQ6y5I2myRXK3A0c69gusgsr1r2HnfAY7d5Rxu38=
    :-SIZE (SFML-2.5.1-sources.zip) = 23283095
    :+SHA256 (SFML-2.6.2-sources.zip) = Gdbb2ckBx0RB2YiME8sTmfYU/omT1ZBipyz7zrAP7QQ=
    :+SIZE (SFML-2.6.2-sources.zip) = 29075976
    :Index: patches/patch-CMakeLists_txt
    :===================================================================
    :RCS file: patches/patch-CMakeLists_txt
    :diff -N patches/patch-CMakeLists_txt
    :--- /dev/null	1 Jan 1970 00:00:00 -0000
    :+++ patches/patch-CMakeLists_txt	29 Aug 2025 18:53:39 -0000
    :@@ -0,0 +1,16 @@
    :+Index: CMakeLists.txt
    :+--- CMakeLists.txt.orig
    :++++ CMakeLists.txt
    :+@@ -292,7 +292,11 @@ if(SFML_INSTALL_PKGCONFIG_FILES)
    :+     # this could be e.g. macports on mac or msys2 on windows etc.
    :+     set(SFML_PKGCONFIG_DIR "/${SFML_RELATIVE_INSTALL_LIBDIR}/pkgconfig")
    :+ 
    :+-    if(SFML_OS_FREEBSD OR SFML_OS_OPENBSD OR SFML_OS_NETBSD)
    :++    if(SFML_OS_OPENBSD)
    :++        set(SFML_PKGCONFIG_DIR "/lib/pkgconfig")
    :++    endif()
    :++
    :++    if(SFML_OS_FREEBSD OR SFML_OS_NETBSD)
    :+         set(SFML_PKGCONFIG_DIR "/libdata/pkgconfig")
    :+     endif()
    :+ 
    :Index: patches/patch-cmake_Config_cmake
    :===================================================================
    :RCS file: patches/patch-cmake_Config_cmake
    :diff -N patches/patch-cmake_Config_cmake
    :--- patches/patch-cmake_Config_cmake	11 Mar 2022 19:39:27 -0000	1.4
    :+++ /dev/null	1 Jan 1970 00:00:00 -0000
    :@@ -1,12 +0,0 @@
    :-Index: cmake/Config.cmake
    :---- cmake/Config.cmake.orig
    :-+++ cmake/Config.cmake
    :-@@ -73,7 +73,7 @@ endif()
    :- # this could be e.g. macports on mac or msys2 on windows etc.
    :- set(SFML_PKGCONFIG_DIR "/lib${LIB_SUFFIX}/pkgconfig")
    :- 
    :--if(SFML_OS_FREEBSD OR SFML_OS_OPENBSD)
    :-+if(SFML_OS_FREEBSD)
    :-     set(SFML_PKGCONFIG_DIR "/libdata/pkgconfig")
    :- endif()
    :- 
    :Index: patches/patch-cmake_SFMLConfigDependencies_cmake_in
    :===================================================================
    :RCS file: /home/cvs/ports/multimedia/sfml/patches/patch-cmake_SFMLConfigDependencies_cmake_in,v
    :diff -u -p -r1.2 patch-cmake_SFMLConfigDependencies_cmake_in
    :--- patches/patch-cmake_SFMLConfigDependencies_cmake_in	11 Mar 2022 19:39:27 -0000	1.2
    :+++ patches/patch-cmake_SFMLConfigDependencies_cmake_in	29 Aug 2025 18:48:51 -0000
    :@@ -1,21 +1,21 @@
    : Index: cmake/SFMLConfigDependencies.cmake.in
    : --- cmake/SFMLConfigDependencies.cmake.in.orig
    : +++ cmake/SFMLConfigDependencies.cmake.in
    :-@@ -12,6 +12,8 @@ if(SFML_STATIC_LIBRARIES)
    :-         set(FIND_SFML_OS_LINUX 1)
    :+@@ -16,6 +16,8 @@ if(SFML_STATIC_LIBRARIES)
    :+         endif()
    :      elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
    :          set(FIND_SFML_OS_FREEBSD 1)
    : +    elseif(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
    : +        set(FIND_SFML_OS_OPENBSD 1)
    :+     elseif(${CMAKE_SYSTEM_NAME} MATCHES "iOS")
    :+         set(FIND_SFML_OS_IOS 1)
    :      elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
    :-         if (DEFINED IOS)
    :-             set(FIND_SFML_OS_IOS 1)
    :-@@ -44,7 +46,7 @@ if(SFML_STATIC_LIBRARIES)
    :-     # sfml-window
    :-     list(FIND SFML_FIND_COMPONENTS "window" FIND_SFML_WINDOW_COMPONENT_INDEX)
    :-     if(FIND_SFML_WINDOW_COMPONENT_INDEX GREATER -1)
    :--        if(FIND_SFML_OS_LINUX OR FIND_SFML_OS_FREEBSD)
    :-+        if(FIND_SFML_OS_LINUX OR FIND_SFML_OS_FREEBSD OR FIND_SFML_OS_OPENBSD)
    :+@@ -49,7 +51,7 @@ if(SFML_STATIC_LIBRARIES)
    :+         if(FIND_SFML_USE_DRM)
    :+             sfml_bind_dependency(TARGET DRM FRIENDLY_NAME "drm" SEARCH_NAMES "drm")
    :+             sfml_bind_dependency(TARGET GBM FRIENDLY_NAME "gbm" SEARCH_NAMES "gbm")
    :+-        elseif(FIND_SFML_OS_LINUX OR FIND_SFML_OS_FREEBSD)
    :++        elseif(FIND_SFML_OS_LINUX OR FIND_SFML_OS_FREEBSD OR FIND_SFML_OS_OPENBSD)
    :              sfml_bind_dependency(TARGET X11 FRIENDLY_NAME "X11" SEARCH_NAMES "X11")
    :              sfml_bind_dependency(TARGET X11 FRIENDLY_NAME "Xrandr" SEARCH_NAMES "Xrandr")
    :-         endif()
    :+             sfml_bind_dependency(TARGET X11 FRIENDLY_NAME "Xcursor" SEARCH_NAMES "Xcursor")
    :Index: patches/patch-include_SFML_System_String_hpp
    :===================================================================
    :RCS file: patches/patch-include_SFML_System_String_hpp
    :diff -N patches/patch-include_SFML_System_String_hpp
    :--- /dev/null	1 Jan 1970 00:00:00 -0000
    :+++ patches/patch-include_SFML_System_String_hpp	29 Aug 2025 18:58:10 -0000
    :@@ -0,0 +1,138 @@
    :+Fix with libc++ 19, from FreeBSD.
    :+
    :+https://github.com/FreeBSD/freebsd-ports/commit/fab3a2f25cc1f31d87aa0094f884dd4e8f37180f
    :+
    :+Index: include/SFML/System/String.hpp
    :+--- include/SFML/System/String.hpp.orig
    :++++ include/SFML/System/String.hpp
    :+@@ -34,6 +34,130 @@
    :+ #include <locale>
    :+ #include <string>
    :+ 
    :++namespace std
    :++{
    :++
    :++namespace // anonymous
    :++{
    :++
    :++template<class CharType, class IntType, IntType EOFVal>
    :++struct char_traits_base
    :++{
    :++    using char_type  = CharType;
    :++    using int_type   = IntType;
    :++    using off_type   = streamoff;
    :++    using pos_type   = fpos<mbstate_t>;
    :++    using state_type = mbstate_t;
    :++
    :++    static inline constexpr void assign(char_type& c1, const char_type& c2) noexcept
    :++    {
    :++        c1 = c2;
    :++    }
    :++
    :++    static inline constexpr bool eq(char_type c1, char_type c2) noexcept
    :++    {
    :++        return c1 == c2;
    :++    }
    :++
    :++    static inline constexpr bool lt(char_type c1, char_type c2) noexcept
    :++    {
    :++        return c1 < c2;
    :++    }
    :++
    :++    static constexpr int compare(const char_type* lhs, const char_type* rhs, size_t count) noexcept
    :++    {
    :++        for (; count; --count, ++lhs, ++rhs)
    :++        {
    :++            if (lt(*lhs, *rhs))
    :++                return -1;
    :++            if (lt(*rhs, *lhs))
    :++                return 1;
    :++        }
    :++        return 0;
    :++    }
    :++
    :++    static inline size_t constexpr length(const char_type* s) noexcept
    :++    {
    :++        size_t i = 0;
    :++        for (; s[i] != '\0'; ++i)
    :++        {
    :++        }
    :++        return i;
    :++    }
    :++
    :++    static constexpr const char_type* find(const char_type* s, size_t n, const char_type& a) noexcept
    :++    {
    :++        for (; n; --n)
    :++        {
    :++            if (*s == a)
    :++                return s;
    :++            ++s;
    :++        }
    :++        return nullptr;
    :++    }
    :++
    :++    static inline char_type* move(char_type* s1, const char_type* s2, size_t n) noexcept
    :++    {
    :++        return reinterpret_cast<char_type*>(__builtin_memmove(s1, s2, n * sizeof(char_type)));
    :++    }
    :++
    :++    static inline char_type* copy(char_type* s1, const char_type* s2, size_t n) noexcept
    :++    {
    :++        __builtin_memmove(s1, s2, n * sizeof(char_type));
    :++        return s1;
    :++    }
    :++
    :++    static inline char_type* assign(char_type* s, size_t n, char_type a) noexcept
    :++    {
    :++        std::fill_n(s, n, a);
    :++        return s;
    :++    }
    :++
    :++    static inline constexpr int_type not_eof(int_type c) noexcept
    :++    {
    :++        return eq_int_type(c, eof()) ? ~eof() : c;
    :++    }
    :++
    :++    static inline constexpr char_type to_char_type(int_type c) noexcept
    :++    {
    :++        return char_type(c);
    :++    }
    :++
    :++    static inline constexpr int_type to_int_type(char_type c) noexcept
    :++    {
    :++        return int_type(c);
    :++    }
    :++
    :++    static inline constexpr bool eq_int_type(int_type c1, int_type c2) noexcept
    :++    {
    :++        return c1 == c2;
    :++    }
    :++
    :++    static inline constexpr int_type eof() noexcept
    :++    {
    :++        return int_type(EOF);
    :++    }
    :++};
    :++
    :++} // namespace anonymous
    :++
    :++template<>
    :++struct char_traits<unsigned char> : char_traits_base<unsigned char, unsigned int, static_cast<unsigned int>(EOF)>
    :++{
    :++};
    :++
    :++template<>
    :++struct char_traits<unsigned short> : char_traits_base<unsigned short, unsigned int, static_cast<unsigned int>(0xFFFF)>
    :++{
    :++};
    :++
    :++template<>
    :++struct char_traits<unsigned int> : char_traits_base<unsigned int, unsigned int, static_cast<unsigned int>(0xFFFFFFFF)>
    :++{
    :++};
    :++
    :++} // namespace std
    :++
    :+ 
    :+ namespace sf
    :+ {
    :Index: patches/patch-src_SFML_Window_Unix_WindowImplX11_cpp
    :===================================================================
    :RCS file: patches/patch-src_SFML_Window_Unix_WindowImplX11_cpp
    :diff -N patches/patch-src_SFML_Window_Unix_WindowImplX11_cpp
    :--- patches/patch-src_SFML_Window_Unix_WindowImplX11_cpp	11 Mar 2022 19:39:27 -0000	1.3
    :+++ /dev/null	1 Jan 1970 00:00:00 -0000
    :@@ -1,12 +0,0 @@
    :-Index: src/SFML/Window/Unix/WindowImplX11.cpp
    :---- src/SFML/Window/Unix/WindowImplX11.cpp.orig
    :-+++ src/SFML/Window/Unix/WindowImplX11.cpp
    :-@@ -1556,7 +1556,7 @@ void WindowImplX11::initialize()
    :-                                    m_window,
    :-                                    XNInputStyle,
    :-                                    XIMPreeditNothing | XIMStatusNothing,
    :--                                   reinterpret_cast<void*>(NULL));
    :-+                                   static_cast<void*>(NULL));
    :-     }
    :-     else
    :-     {
    :Index: pkg/PLIST
    :===================================================================
    :RCS file: /home/cvs/ports/multimedia/sfml/pkg/PLIST,v
    :diff -u -p -r1.4 PLIST
    :--- pkg/PLIST	11 Mar 2022 19:39:27 -0000	1.4
    :+++ pkg/PLIST	29 Aug 2025 18:54:20 -0000
    :@@ -108,7 +108,9 @@ include/SFML/Window/Mouse.hpp
    : include/SFML/Window/Sensor.hpp
    : include/SFML/Window/Touch.hpp
    : include/SFML/Window/VideoMode.hpp
    :+include/SFML/Window/Vulkan.hpp
    : include/SFML/Window/Window.hpp
    :+include/SFML/Window/WindowBase.hpp
    : include/SFML/Window/WindowHandle.hpp
    : include/SFML/Window/WindowStyle.hpp
    : lib/cmake/SFML/
    :@@ -128,6 +130,6 @@ lib/pkgconfig/sfml-graphics.pc
    : lib/pkgconfig/sfml-network.pc
    : lib/pkgconfig/sfml-system.pc
    : lib/pkgconfig/sfml-window.pc
    :-share/SFML/
    :-share/SFML/license.md
    :-share/SFML/readme.md
    :+share/doc/SFML/
    :+share/doc/SFML/license.md
    :+share/doc/SFML/readme.md
    :
    
    -- 
    You'll never be the man your mother was!
    
    
  • Pascal Stumpf:

    UPDATE: multimedia/sfml