Date: Wed, 4 Sep 2024 14:30:12 GMT From: Diane Bruce <db@FreeBSD.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org Subject: git: 7efae4b7a9e8 - main - net/libarcus: needed for cura 5.7 update Message-ID: <202409041430.484EUCe6072043@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by db: URL: https://cgit.FreeBSD.org/ports/commit/?id=7efae4b7a9e888020765ce3477f1239fe0a471bd commit 7efae4b7a9e888020765ce3477f1239fe0a471bd Author: Matthieu Volat <mazhe@alkumuna.eu> AuthorDate: 2024-09-04 14:25:17 +0000 Commit: Diane Bruce <db@FreeBSD.org> CommitDate: 2024-09-04 14:25:17 +0000 net/libarcus: needed for cura 5.7 update - Upstream repository changed - worked around changed build system - protobuf fixes --- net/libarcus/Makefile | 30 ++- net/libarcus/distinfo | 8 +- net/libarcus/files/ArcusConfig.cmake.in | 10 + net/libarcus/files/CMakeLists.txt | 167 +++++++++++++++ net/libarcus/files/COPYING-CMAKE-SCRIPTS | 22 ++ net/libarcus/files/CPackConfig.cmake | 24 +++ net/libarcus/files/FindSIP.cmake | 64 ++++++ net/libarcus/files/FindSIP.py | 60 ++++++ net/libarcus/files/SIPMacros.cmake | 231 +++++++++++++++++++++ net/libarcus/files/patch-include_Arcus_Error.h | 19 ++ .../files/patch-include_Arcus_MessageTypeStore.h | 27 +++ net/libarcus/files/patch-include_Arcus_Socket.h | 20 ++ .../files/patch-include_Arcus_SocketListener.h | 20 ++ net/libarcus/files/patch-protobuf | 11 - net/libarcus/files/patch-src_MessageTypeStore.cpp | 22 ++ net/libarcus/files/patch-src_Socket__p.h | 11 - net/libarcus/pkg-plist | 2 +- 17 files changed, 712 insertions(+), 36 deletions(-) diff --git a/net/libarcus/Makefile b/net/libarcus/Makefile index 1fde9d66c4b2..54b2df7681b9 100644 --- a/net/libarcus/Makefile +++ b/net/libarcus/Makefile @@ -1,6 +1,6 @@ PORTNAME= libArcus -PORTVERSION= 4.13.1 -PORTREVISION= 4 +PORTVERSION= 5.3.0 +PORTREVISION= 0 PORTEPOCH= 1 CATEGORIES= net cad DIST_SUBDIR= Ultimaker @@ -12,20 +12,30 @@ WWW= https://github.com/Ultimaker/libArcus LICENSE= LGPL3 LICENSE_FILE= ${WRKSRC}/LICENSE -DEPRECATED= Fails to build with modern python -EXPIRATION_DATE= 2024-06-29 - -BUILD_DEPENDS= sip:devel/py-sip4 +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sip>=0:devel/py-sip@${PY_FLAVOR} LIB_DEPENDS= libprotobuf.so:devel/protobuf -USES= cmake compiler:c++17-lang python pyqt:5 +USES= cmake compiler:c++17-lang python pyqt:6 USE_PYQT= pysip USE_GITHUB= yes GH_ACCOUNT= Ultimaker +GH_TUPLE= Ultimaker:pyArcus:${PORTVERSION}:pyArcus USE_LDCONFIG= yes -#GH_TAGNAME= 3afb644 -CMAKE_ARGS+= -DPYTHON_EXECUTABLE:STRING=${PYTHON_CMD} \ - -DPYTHON_INCLUDEDIR:STRING=${PYTHON_INCLUDEDIR} +CMAKE_ARGS+= -DBUILD_EXAMPLES:BOOL=OFF \ + -DPYTHON_EXECUTABLE:STRING=${PYTHON_CMD} \ + -DPYTHON_INCLUDEDIR:STRING=${PYTHON_INCLUDEDIR} + +post-extract: + @${MKDIR} ${WRKSRC}/cmake + @for f in COPYING-CMAKE-SCRIPTS FindSIP.cmake FindSIP.py SIPMacros.cmake; do \ + ${CP} ${FILESDIR}/$$f ${WRKSRC}/cmake; \ + done + @for f in CMakeLists.txt CPackConfig.cmake ArcusConfig.cmake.in; do \ + ${CP} ${FILESDIR}/$$f ${WRKSRC}; \ + done + @${MV} ${WRKSRC_pyArcus}/python ${WRKSRC} + @${MV} ${WRKSRC_pyArcus}/include/pyArcus ${WRKSRC}/include + @${MV} ${WRKSRC_pyArcus}/src/PythonMessage.cpp ${WRKSRC}/python .include <bsd.port.mk> diff --git a/net/libarcus/distinfo b/net/libarcus/distinfo index 6c9a03d525e3..bba623398e16 100644 --- a/net/libarcus/distinfo +++ b/net/libarcus/distinfo @@ -1,3 +1,5 @@ -TIMESTAMP = 1645698839 -SHA256 (Ultimaker/Ultimaker-libArcus-4.13.1_GH0.tar.gz) = 51e865cb648750ad9ea315fa7632ee7016890273f911270f60d28c8a4bc50240 -SIZE (Ultimaker/Ultimaker-libArcus-4.13.1_GH0.tar.gz) = 32077 +TIMESTAMP = 1715499868 +SHA256 (Ultimaker/Ultimaker-libArcus-5.3.0_GH0.tar.gz) = 3cf7411b573eda2de2aec9761bd6b539a5d5d67739761357f5f773d1490db0fb +SIZE (Ultimaker/Ultimaker-libArcus-5.3.0_GH0.tar.gz) = 26019 +SHA256 (Ultimaker/Ultimaker-pyArcus-5.3.0_GH0.tar.gz) = 2eda2a93592480a295fa338118aaf28cdcf24b7c6980740a1df94810652fc368 +SIZE (Ultimaker/Ultimaker-pyArcus-5.3.0_GH0.tar.gz) = 16436 diff --git a/net/libarcus/files/ArcusConfig.cmake.in b/net/libarcus/files/ArcusConfig.cmake.in new file mode 100644 index 000000000000..3208a6945264 --- /dev/null +++ b/net/libarcus/files/ArcusConfig.cmake.in @@ -0,0 +1,10 @@ +@PACKAGE_INIT@ + +# We want to have access to protobuf_generate_cpp and other FindProtobuf features. +# However, if ProtobufConfig is used instead, there is a CMake option that controls +# this, which defaults to OFF. We need to force this option to ON instead. +set(protobuf_MODULE_COMPATIBLE ON CACHE "" INTERNAL FORCE) +find_package(Protobuf 3.0.0 REQUIRED) + +get_filename_component(SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +include(${SELF_DIR}/Arcus-targets.cmake) diff --git a/net/libarcus/files/CMakeLists.txt b/net/libarcus/files/CMakeLists.txt new file mode 100644 index 000000000000..324db142912b --- /dev/null +++ b/net/libarcus/files/CMakeLists.txt @@ -0,0 +1,167 @@ +project(arcus) +cmake_minimum_required(VERSION 3.8) + +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) +include(GenerateExportHeader) + +option(BUILD_PYTHON "Build " ON) +option(BUILD_EXAMPLES "Build the example programs" ON) +option(BUILD_STATIC "Build as a static library" OFF) + +if(WIN32) + option(MSVC_STATIC_RUNTIME "Link the MSVC runtime statically" OFF) +endif() + +# We want to have access to protobuf_generate_cpp and other FindProtobuf features. +# However, if ProtobufConfig is used instead, there is a CMake option that controls +# this, which defaults to OFF. We need to force this option to ON instead. +set(protobuf_MODULE_COMPATIBLE ON CACHE INTERNAL "" FORCE) +find_package(Protobuf 3.0.0 REQUIRED) + +set(CMAKE_POSITION_INDEPENDENT_CODE ON) #Required if a patch to libArcus needs to be made via templates. + +if(BUILD_PYTHON) + list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) + + # FIXME: Remove the code for CMake <3.12 once we have switched over completely. + # FindPython3 is a new module since CMake 3.12. It deprecates FindPythonInterp and FindPythonLibs. + if(${CMAKE_VERSION} VERSION_LESS 3.12) + # FIXME: Use FindPython3 to find Python, new in CMake 3.12. + # However currently on our CI server it finds the wrong Python version and then doesn't find the headers. + find_package(PythonInterp 3.4 REQUIRED) + find_package(PythonLibs 3.4 REQUIRED) + + else() + # Use FindPython3 for CMake >=3.12 + find_package(Python3 3.4 REQUIRED COMPONENTS Interpreter Development) + endif() + execute_process(COMMAND ${Python_EXECUTABLE} -c "import sysconfig; print(sysconfig.get_path('platlib'), end='')" OUTPUT_VARIABLE Python_SITEARCH) + + find_package(SIP REQUIRED) + include(SIPMacros) + if(NOT DEFINED LIB_SUFFIX) + set(LIB_SUFFIX "") + endif() + + include_directories(python/ include/pyArcus/ src/ ${SIP_INCLUDE_DIRS} ${Python3_INCLUDE_DIRS}) +endif() + +set(CMAKE_CXX_STANDARD 17) + +if(APPLE AND CMAKE_CXX_COMPILER_ID MATCHES "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") +endif() + +set(arcus_SRCS + src/Socket.cpp + src/SocketListener.cpp + src/MessageTypeStore.cpp + src/PlatformSocket.cpp + src/Error.cpp +) + +set(arcus_HDRS + include/Arcus/Socket.h + include/Arcus/SocketListener.h + include/Arcus/Types.h + include/Arcus/MessageTypeStore.h + include/Arcus/Error.h + ${CMAKE_CURRENT_BINARY_DIR}/src/ArcusExport.h +) + +set(ARCUS_VERSION 1.1.0) +set(ARCUS_SOVERSION 3) + +set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}") + +if(BUILD_STATIC) + add_library(Arcus STATIC ${arcus_SRCS}) + if(NOT WIN32 OR CMAKE_COMPILER_IS_GNUCXX) + target_link_libraries(Arcus PRIVATE pthread) + set_target_properties(Arcus PROPERTIES COMPILE_FLAGS -fPIC) + endif() +else() + add_library(Arcus SHARED ${arcus_SRCS}) +endif() + +if(MSVC_STATIC_RUNTIME) + foreach(flag_var + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) + if(${flag_var} MATCHES "/MD") + string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") + endif(${flag_var} MATCHES "/MD") + endforeach(flag_var) +endif() + +if(BUILD_PYTHON) + set(SIP_EXTRA_FILES_DEPEND python/SocketListener.sip python/Types.sip python/PythonMessage.sip python/Error.sip) + set(SIP_EXTRA_SOURCE_FILES python/PythonMessage.cpp) + set(SIP_EXTRA_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_BINARY_DIR}/src) + set(SIP_EXTRA_OPTIONS -g -n PyQt6.sip) # -g means always release the GIL before calling C++ methods. -n PyQt6.sip is required to not get the PyCapsule error + generate_sip_python_module_code(pyArcus python/pyArcus.sip python/pyArcus.sip "${SIP_EXTRA_FILES_DEPEND}" pyArcus_cpp_files) + build_sip_python_module(pyArcus python/pyArcus.sip "${pyArcus_cpp_files};${SIP_EXTRA_SOURCE_FILES}" "" Arcus) +endif() + +target_include_directories(Arcus PUBLIC + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src> + $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> + ${PROTOBUF_INCLUDE_DIR} +) +target_link_libraries(Arcus PUBLIC ${PROTOBUF_LIBRARIES}) + +if(WIN32) + add_definitions(-D_WIN32_WINNT=0x0600) # Declare we require Vista or higher, this allows us to use IPv6 functions. + target_link_libraries(Arcus PUBLIC Ws2_32) +endif() + +if(${CMAKE_BUILD_TYPE}) + if(${CMAKE_BUILD_TYPE} STREQUAL "Debug" OR ${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo") + add_definitions(-DARCUS_DEBUG) + endif() +endif() + +set_target_properties(Arcus PROPERTIES + FRAMEWORK FALSE + VERSION ${ARCUS_VERSION} + SOVERSION ${ARCUS_SOVERSION} + PUBLIC_HEADER "${arcus_HDRS}" + DEFINE_SYMBOL MAKE_ARCUS_LIB + CXX_VISIBILITY_PRESET hidden + VISIBILITY_INLINES_HIDDEN 1 +) + +generate_export_header(Arcus + EXPORT_FILE_NAME src/ArcusExport.h +) +# This is required when building out-of-tree. +# The compiler won't find the generated header otherwise. +include_directories(${CMAKE_BINARY_DIR}/src include/) + +if(BUILD_EXAMPLES) + add_subdirectory(examples) +endif() + +install(TARGETS Arcus + EXPORT Arcus-targets + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/Arcus +) + +install(EXPORT Arcus-targets + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Arcus +) + +configure_package_config_file(ArcusConfig.cmake.in ${CMAKE_BINARY_DIR}/ArcusConfig.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Arcus) +write_basic_package_version_file(${CMAKE_BINARY_DIR}/ArcusConfigVersion.cmake VERSION ${ARCUS_VERSION} COMPATIBILITY SameMajorVersion) + +install(FILES + ${CMAKE_BINARY_DIR}/ArcusConfig.cmake + ${CMAKE_BINARY_DIR}/ArcusConfigVersion.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Arcus +) + +include(CPackConfig.cmake) diff --git a/net/libarcus/files/COPYING-CMAKE-SCRIPTS b/net/libarcus/files/COPYING-CMAKE-SCRIPTS new file mode 100644 index 000000000000..4b417765f3a8 --- /dev/null +++ b/net/libarcus/files/COPYING-CMAKE-SCRIPTS @@ -0,0 +1,22 @@ +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 copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. diff --git a/net/libarcus/files/CPackConfig.cmake b/net/libarcus/files/CPackConfig.cmake new file mode 100644 index 000000000000..bd1680e6cdc6 --- /dev/null +++ b/net/libarcus/files/CPackConfig.cmake @@ -0,0 +1,24 @@ +set(CPACK_PACKAGE_VENDOR "Ultimaker") +set(CPACK_PACKAGE_CONTACT "Ruben Dulek <r.dulek@ultimaker.com>") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "libArcus Communication library") +if(NOT DEFINED CPACK_PACKAGE_VERSION) + set(CPACK_PACKAGE_VERSION "15.05.91") +endif() +set(CPACK_GENERATOR "DEB") +if(NOT DEFINED CPACK_DEBIAN_PACKAGE_ARCHITECTURE) + execute_process(COMMAND dpkg --print-architecture OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE) +endif() +set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}") + +set(DEB_DEPENDS + "python3 (>= 3.4.0)" + "libgcc1 (>= 4.9.0)" + "libstdc++6 (>= 4.9.0)" + "libc6 (>= 2.19)" + "zlib1g (>= 1.2.0)" + "protobuf (>= 3.0.0)" +) +string(REPLACE ";" ", " DEB_DEPENDS "${DEB_DEPENDS}") +set(CPACK_DEBIAN_PACKAGE_DEPENDS ${DEB_DEPENDS}) + +include(CPack) diff --git a/net/libarcus/files/FindSIP.cmake b/net/libarcus/files/FindSIP.cmake new file mode 100644 index 000000000000..101a991d7de1 --- /dev/null +++ b/net/libarcus/files/FindSIP.cmake @@ -0,0 +1,64 @@ +# Find SIP +# ~~~~~~~~ +# +# SIP website: http://www.riverbankcomputing.co.uk/sip/index.php +# +# Find the installed version of SIP. FindSIP should be called after Python +# has been found. +# +# This file defines the following variables: +# +# SIP_VERSION - The version of SIP found expressed as a 6 digit hex number +# suitable for comparison as a string. +# +# SIP_VERSION_STR - The version of SIP found as a human readable string. +# +# SIP_BINARY_PATH - Path and filename of the SIP command line executable. +# +# SIP_INCLUDE_DIR - Directory holding the SIP C++ header file. +# +# SIP_DEFAULT_SIP_DIR - Default directory where .sip files should be installed +# into. + +# Copyright (c) 2007, Simon Edwards <simon@simonzone.com> +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + + + +IF(SIP_VERSION) + # Already in cache, be silent + SET(SIP_FOUND TRUE) +ELSE(SIP_VERSION) + + FIND_FILE(_find_sip_py FindSIP.py PATHS ${CMAKE_MODULE_PATH} NO_CMAKE_FIND_ROOT_PATH) + + EXECUTE_PROCESS(COMMAND ${Python_EXECUTABLE} ${_find_sip_py} OUTPUT_VARIABLE sip_config) + IF(sip_config) + STRING(REGEX REPLACE "^sip_version:([^\n]+).*$" "\\1" SIP_VERSION ${sip_config}) + STRING(REGEX REPLACE ".*\nsip_version_num:([^\n]+).*$" "\\1" SIP_VERSION_NUM ${sip_config}) + STRING(REGEX REPLACE ".*\nsip_version_str:([^\n]+).*$" "\\1" SIP_VERSION_STR ${sip_config}) + STRING(REGEX REPLACE ".*\ndefault_sip_dir:([^\n]+).*$" "\\1" SIP_DEFAULT_SIP_DIR ${sip_config}) + IF(${SIP_VERSION_STR} VERSION_LESS 5) + STRING(REGEX REPLACE ".*\nsip_bin:([^\n]+).*$" "\\1" SIP_BINARY_PATH ${sip_config}) + STRING(REGEX REPLACE ".*\nsip_inc_dir:([^\n]+).*$" "\\1" SIP_INCLUDE_DIR ${sip_config}) + STRING(REGEX REPLACE ".*\nsip_module_dir:([^\n]+).*$" "\\1" SIP_MODULE_DIR ${sip_config}) + ELSE(${SIP_VERSION_STR} VERSION_LESS 5) + FIND_PROGRAM(SIP_BUILD_EXECUTABLE sip-build) + ENDIF(${SIP_VERSION_STR} VERSION_LESS 5) + SET(SIP_FOUND TRUE) + ENDIF(sip_config) + + IF(SIP_FOUND) + IF(NOT SIP_FIND_QUIETLY) + MESSAGE(STATUS "Found SIP version: ${SIP_VERSION_STR}") + ENDIF(NOT SIP_FIND_QUIETLY) + ELSE(SIP_FOUND) + IF(SIP_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find SIP") + ENDIF(SIP_FIND_REQUIRED) + ENDIF(SIP_FOUND) + +ENDIF(SIP_VERSION) + +ADD_DEFINITIONS(-DSIP_VERSION=0x${SIP_VERSION}) diff --git a/net/libarcus/files/FindSIP.py b/net/libarcus/files/FindSIP.py new file mode 100644 index 000000000000..2e8eea04bb56 --- /dev/null +++ b/net/libarcus/files/FindSIP.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +# +# Copyright (c) 2007, Simon Edwards <simon@simonzone.com> +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * 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. +# * Neither the name of the Simon Edwards <simon@simonzone.com> 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 Simon Edwards <simon@simonzone.com> ''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 Simon Edwards <simon@simonzone.com> 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. +# +# FindSIP.py +# Copyright (c) 2007, Simon Edwards <simon@simonzone.com> +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +try: + import sipbuild + + print("sip_version:%06.0x" % sipbuild.version.SIP_VERSION) + print("sip_version_num:%d" % sipbuild.version.SIP_VERSION) + print("sip_version_str:%s" % sipbuild.version.SIP_VERSION_STR) + + import sysconfig + if "deb_system" in sysconfig.get_scheme_names(): + python_modules_dir = sysconfig.get_path("purelib", "deb_system") + else: + python_modules_dir = sysconfig.get_path("purelib") + print("default_sip_dir:%s" % python_modules_dir) +except ImportError: # Code for SIP v4 + import sipconfig + + sipcfg = sipconfig.Configuration() + print("sip_version:%06.0x" % sipcfg.sip_version) + print("sip_version_num:%d" % sipcfg.sip_version) + print("sip_version_str:%s" % sipcfg.sip_version_str) + print("sip_bin:%s" % sipcfg.sip_bin) + print("default_sip_dir:%s" % sipcfg.default_sip_dir) + print("sip_inc_dir:%s" % sipcfg.sip_inc_dir) + # SIP 4.19.10+ has new sipcfg.sip_module_dir + if hasattr(sipcfg, "sip_module_dir"): + print("sip_module_dir:%s" % sipcfg.sip_module_dir) + else: + print("sip_module_dir:%s" % sipcfg.sip_mod_dir) diff --git a/net/libarcus/files/SIPMacros.cmake b/net/libarcus/files/SIPMacros.cmake new file mode 100644 index 000000000000..9b3affa1ee1f --- /dev/null +++ b/net/libarcus/files/SIPMacros.cmake @@ -0,0 +1,231 @@ +# Macros for SIP +# ~~~~~~~~~~~~~~ +# Copyright (c) 2007, Simon Edwards <simon@simonzone.com> +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +# +# SIP website: http://www.riverbankcomputing.co.uk/sip/index.php +# +# This file defines the following macros: +# +# ADD_SIP_PYTHON_MODULE (MODULE_NAME MODULE_SIP [library1, libaray2, ...]) +# Specifies a SIP file to be built into a Python module and installed. +# MODULE_NAME is the name of Python module including any path name. (e.g. +# os.sys, Foo.bar etc). MODULE_SIP the path and filename of the .sip file +# to process and compile. libraryN are libraries that the Python module, +# which is typically a shared library, should be linked to. The built +# module will also be install into Python's site-packages directory. +# +# The behavior of the ADD_SIP_PYTHON_MODULE macro can be controlled by a +# number of variables: +# +# SIP_INCLUDES - List of directories which SIP will scan through when looking +# for included .sip files. (Corresponds to the -I option for SIP.) +# +# SIP_TAGS - List of tags to define when running SIP. (Corresponds to the -t +# option for SIP.) +# +# SIP_CONCAT_PARTS - An integer which defines the number of parts the C++ code +# of each module should be split into. Defaults to 8. (Corresponds to the +# -j option for SIP.) +# +# SIP_DISABLE_FEATURES - List of feature names which should be disabled +# running SIP. (Corresponds to the -x option for SIP.) +# +# SIP_EXTRA_OPTIONS - Extra command line options which should be passed on to +# SIP. + +# SIP_BUILD_EXTRA_OPTIONS - Extra command line options which should be passed on to +# sip-build. + +SET(SIP_INCLUDES) +SET(SIP_TAGS) +SET(SIP_CONCAT_PARTS 16) +SET(SIP_DISABLE_FEATURES) +SET(SIP_EXTRA_OPTIONS) +SET(SIP_EXTRA_OBJECTS) +SET(SIP_BUILD_EXTRA_OPTIONS) + +MACRO(GENERATE_SIP_PYTHON_MODULE_CODE MODULE_NAME MODULE_SIP SIP_FILES CPP_FILES) + + STRING(REPLACE "." "/" _x ${MODULE_NAME}) + GET_FILENAME_COMPONENT(_parent_module_path ${_x} PATH) + GET_FILENAME_COMPONENT(_child_module_name ${_x} NAME) + GET_FILENAME_COMPONENT(_module_path ${MODULE_SIP} PATH) + GET_FILENAME_COMPONENT(_abs_module_sip ${MODULE_SIP} ABSOLUTE) + + # If this is not need anymore (using input configuration file for SIP files) + # SIP could be run in the source rather than in binary directory + #SET(_configured_module_sip ${CMAKE_CURRENT_BINARY_DIR}/${_module_path}/${_module_path}.sip) + SET(_configured_module_sip ${CMAKE_CURRENT_BINARY_DIR}/${_module_path}/${_child_module_name}.sip) + FOREACH (_sip_file ${SIP_FILES}) + GET_FILENAME_COMPONENT(_sip_file_path ${_sip_file} PATH) + GET_FILENAME_COMPONENT(_sip_file_name_we ${_sip_file} NAME_WE) + #FILE(RELATIVE_PATH _sip_file_relpath ${BINDING_FILES_ROOT_DIR} "${_sip_file_path}/${_sip_file_name_we}") + SET(_sip_file_relpath "${_sip_file_path}/${_sip_file_name_we}") + SET(_out_sip_file "${CMAKE_CURRENT_BINARY_DIR}/${_sip_file_relpath}.sip") + CONFIGURE_FILE(${_sip_file} ${_out_sip_file}) + ENDFOREACH (_sip_file) + + SET(_message "-DMESSAGE=Generating CPP code for module ${MODULE_NAME}") + SET(_sip_output_files) + + # Suppress warnings + IF(PEDANTIC) + IF(MSVC) + ADD_DEFINITIONS( + /wd4189 # local variable is initialized but not referenced + /wd4996 # deprecation warnings (bindings re-export deprecated methods) + /wd4701 # potentially uninitialized variable used (sip generated code) + /wd4702 # unreachable code (sip generated code) + /wd4703 # potentially uninitialized local pointer variable 'sipType' used + ) + ELSE(MSVC) + # disable all warnings + ADD_DEFINITIONS( -w -Wno-deprecated-declarations ) + IF(NOT APPLE) + ADD_DEFINITIONS( -fpermissive ) + ENDIF(NOT APPLE) + ENDIF(MSVC) + ENDIF(PEDANTIC) + + IF(MSVC) + ADD_DEFINITIONS( /bigobj ) + ENDIF(MSVC) + + IF (SIP_BUILD_EXECUTABLE) + + FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_module_path}/build/${_child_module_name}) # Output goes in this dir. + + SET(_sip_output_files + ${CMAKE_CURRENT_BINARY_DIR}/${_module_path}/build/${_child_module_name}/sip_array.c + ${CMAKE_CURRENT_BINARY_DIR}/${_module_path}/build/${_child_module_name}/sip_bool.cpp + ${CMAKE_CURRENT_BINARY_DIR}/${_module_path}/build/${_child_module_name}/sip_core.c + ${CMAKE_CURRENT_BINARY_DIR}/${_module_path}/build/${_child_module_name}/sip_descriptors.c + ${CMAKE_CURRENT_BINARY_DIR}/${_module_path}/build/${_child_module_name}/sip_enum.c + ${CMAKE_CURRENT_BINARY_DIR}/${_module_path}/build/${_child_module_name}/sip_int_convertors.c + ${CMAKE_CURRENT_BINARY_DIR}/${_module_path}/build/${_child_module_name}/sip_object_map.c + ${CMAKE_CURRENT_BINARY_DIR}/${_module_path}/build/${_child_module_name}/sip_threads.c + ${CMAKE_CURRENT_BINARY_DIR}/${_module_path}/build/${_child_module_name}/sip_voidptr.c) + FOREACH(CONCAT_NUM RANGE 0 ${SIP_CONCAT_PARTS} ) + IF( ${CONCAT_NUM} LESS ${SIP_CONCAT_PARTS} ) + SET(_sip_output_files ${_sip_output_files} ${CMAKE_CURRENT_BINARY_DIR}/${_module_path}/build/${_child_module_name}/sip${_child_module_name}part${CONCAT_NUM}.cpp ) + ENDIF( ${CONCAT_NUM} LESS ${SIP_CONCAT_PARTS} ) + ENDFOREACH(CONCAT_NUM RANGE 0 ${SIP_CONCAT_PARTS} ) + + #SET(SIPCMD ${SIP_BUILD_EXECUTABLE} --no-protected-is-public --pep484-pyi --no-make --concatenate=${SIP_CONCAT_PARTS} --qmake=${QMAKE_EXECUTABLE} --include-dir=${CMAKE_CURRENT_BINARY_DIR} --include-dir=${PYQT_SIP_DIR} --api-dir ${CMAKE_BINARY_DIR}/python ${SIP_BUILD_EXTRA_OPTIONS}) + LIST(JOIN SIP_EXTRA_INCLUDE_DIRS "\",\"" _sip_extra_includes) + FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${_module_path}/pyproject.toml "\ +[build-system]\n\ +requires = [\"sip >=6, <7\"]\n\ +build-backend = \"sipbuild.api\" +[tool.sip.metadata]\n\ +name = \"${_child_module_name}\"\n\ +[tool.sip.bindings.${_child_module_name}]\n\ +concatenate = ${SIP_CONCAT_PARTS}\n\ +include-dirs = [\"${_sip_extra_includes}\"]\n\ +protected-is-public = false\n\ +pep484-pyi = true\n\ +[tool.sip.project]\n\ +sip-files-dir = \"${CMAKE_CURRENT_SOURCE_DIR}/${_module_path}\"\n\ +") + SET(SIPCMD ${SIP_BUILD_EXECUTABLE} --no-compile ${SIP_BUILD_EXTRA_OPTIONS}) + + ADD_CUSTOM_COMMAND( + OUTPUT ${_sip_output_files} + COMMAND ${CMAKE_COMMAND} -E echo ${message} + COMMAND ${SIPCMD} + COMMAND ${CMAKE_COMMAND} -E touch ${_sip_output_files} + WORKING_DIRECTORY ${_module_path} + MAIN_DEPENDENCY ${_configured_module_sip} + DEPENDS ${SIP_EXTRA_FILES_DEPEND} + VERBATIM + ) + + ELSE (SIP_BUILD_EXECUTABLE) + + FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_module_path}) # Output goes in this dir. + + SET(_sip_includes) + FOREACH (_inc ${SIP_INCLUDES}) + GET_FILENAME_COMPONENT(_abs_inc ${_inc} ABSOLUTE) + LIST(APPEND _sip_includes -I ${_abs_inc}) + ENDFOREACH (_inc ) + + SET(_sip_tags) + FOREACH (_tag ${SIP_TAGS}) + LIST(APPEND _sip_tags -t ${_tag}) + ENDFOREACH (_tag) + + SET(_sip_x) + FOREACH (_x ${SIP_DISABLE_FEATURES}) + LIST(APPEND _sip_x -x ${_x}) + ENDFOREACH (_x ${SIP_DISABLE_FEATURES}) + + FOREACH(CONCAT_NUM RANGE 0 ${SIP_CONCAT_PARTS} ) + IF( ${CONCAT_NUM} LESS ${SIP_CONCAT_PARTS} ) + SET(_sip_output_files ${_sip_output_files} ${CMAKE_CURRENT_BINARY_DIR}/${_module_path}/sip${_child_module_name}part${CONCAT_NUM}.cpp ) + ENDIF( ${CONCAT_NUM} LESS ${SIP_CONCAT_PARTS} ) + ENDFOREACH(CONCAT_NUM RANGE 0 ${SIP_CONCAT_PARTS} ) + + SET(SIPCMD ${SIP_BINARY_PATH} ${_sip_tags} -w -e ${_sip_x} ${SIP_EXTRA_OPTIONS} -j ${SIP_CONCAT_PARTS} -c ${CMAKE_CURRENT_BINARY_DIR}/${_module_path} -I ${CMAKE_CURRENT_BINARY_DIR}/${_module_path} ${_sip_includes} ${_configured_module_sip}) + ADD_CUSTOM_COMMAND( + OUTPUT ${_sip_output_files} + COMMAND ${CMAKE_COMMAND} -E echo ${message} + COMMAND ${CMAKE_COMMAND} -E touch ${_sip_output_files} + COMMAND ${SIPCMD} + MAIN_DEPENDENCY ${_configured_module_sip} + DEPENDS ${SIP_EXTRA_FILES_DEPEND} + VERBATIM + ) + + ENDIF (SIP_BUILD_EXECUTABLE) + + ADD_CUSTOM_TARGET(generate_sip_${MODULE_NAME}_cpp_files DEPENDS ${_sip_output_files}) + + SET(CPP_FILES ${_sip_output_files}) +ENDMACRO(GENERATE_SIP_PYTHON_MODULE_CODE) + +# Will compile and link the module +MACRO(BUILD_SIP_PYTHON_MODULE MODULE_NAME SIP_FILES EXTRA_OBJECTS) + SET(EXTRA_LINK_LIBRARIES ${ARGN}) + + # We give this target a long logical target name. + # (This is to avoid having the library name clash with any already + # install library names. If that happens then cmake dependency + # tracking get confused.) + STRING(REPLACE "." "_" _logical_name ${MODULE_NAME}) + SET(_logical_name "python_module_${_logical_name}") + GET_FILENAME_COMPONENT(_module_path ${SIP_FILES} PATH) + + ADD_LIBRARY(${_logical_name} MODULE ${_sip_output_files} ${EXTRA_OBJECTS}) + SET_PROPERTY(TARGET ${_logical_name} PROPERTY AUTOMOC OFF) + TARGET_INCLUDE_DIRECTORIES(${_logical_name} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/${_module_path}/build ${SIP_EXTRA_INCLUDE_DIRS}) + + IF (${SIP_VERSION_STR} VERSION_LESS 5.0.0) + # require c++14 only -- sip breaks with newer versions due to reliance on throw(...) annotations removed in c++17 + TARGET_COMPILE_FEATURES(${_logical_name} PRIVATE cxx_std_14) + ENDIF (${SIP_VERSION_STR} VERSION_LESS 5.0.0) + + SET_TARGET_PROPERTIES(${_logical_name} PROPERTIES CXX_VISIBILITY_PRESET default) + IF (NOT APPLE) + TARGET_LINK_LIBRARIES(${_logical_name} ${Python_LIBRARIES}) + ENDIF (NOT APPLE) + TARGET_LINK_LIBRARIES(${_logical_name} ${EXTRA_LINK_LIBRARIES}) + IF (APPLE) + SET_TARGET_PROPERTIES(${_logical_name} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") + ENDIF (APPLE) + SET_TARGET_PROPERTIES(${_logical_name} PROPERTIES PREFIX "" OUTPUT_NAME ${_child_module_name}) + + IF (WIN32) + SET_TARGET_PROPERTIES(${_logical_name} PROPERTIES SUFFIX ".pyd") + GET_TARGET_PROPERTY(_runtime_output ${_logical_name} RUNTIME_OUTPUT_DIRECTORY) + ADD_CUSTOM_COMMAND(TARGET ${_logical_name} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E echo "Copying extension ${_child_module_name}" + COMMAND ${CMAKE_COMMAND} -E copy_if_different "$<TARGET_FILE:${_logical_name}>" "${_runtime_output}/${_child_module_name}.pyd" + DEPENDS ${_logical_name} + ) + ENDIF(WIN32) + + INSTALL(TARGETS ${_logical_name} DESTINATION "${Python_SITEARCH}/${_parent_module_path}") +ENDMACRO(BUILD_SIP_PYTHON_MODULE MODULE_NAME SIP_FILES EXTRA_OBJECTS) diff --git a/net/libarcus/files/patch-include_Arcus_Error.h b/net/libarcus/files/patch-include_Arcus_Error.h new file mode 100644 index 000000000000..dd6dec1725a4 --- /dev/null +++ b/net/libarcus/files/patch-include_Arcus_Error.h @@ -0,0 +1,19 @@ +--- include/Arcus/Error.h.orig 2023-05-19 06:44:12 UTC ++++ include/Arcus/Error.h +@@ -5,6 +5,7 @@ + #define ARCUS_ERROR_H + + #include "Arcus/Types.h" ++#include "ArcusExport.h" + + namespace Arcus + { +@@ -32,7 +33,7 @@ enum class ErrorCode + /** + * A class representing an error with an error code and an error message. + */ +-class Error ++class ARCUS_EXPORT Error + { + public: + /** diff --git a/net/libarcus/files/patch-include_Arcus_MessageTypeStore.h b/net/libarcus/files/patch-include_Arcus_MessageTypeStore.h new file mode 100644 index 000000000000..f84ac305b4ae --- /dev/null +++ b/net/libarcus/files/patch-include_Arcus_MessageTypeStore.h @@ -0,0 +1,27 @@ +--- include/Arcus/MessageTypeStore.h.orig 2023-05-19 06:44:12 UTC ++++ include/Arcus/MessageTypeStore.h +@@ -8,12 +8,14 @@ + + #include "Arcus/Types.h" + ++#include "ArcusExport.h" ++ + namespace Arcus + { + /** + * A class to manage the different types of messages that are available. + */ +-class MessageTypeStore ++class ARCUS_EXPORT MessageTypeStore + { + public: + MessageTypeStore(); +@@ -87,7 +89,7 @@ class MessageTypeStore (private) + void dumpMessageTypes(); + + private: +- class Private; ++ class ARCUS_NO_EXPORT Private; + const std::unique_ptr<Private> d; + }; + } // namespace Arcus diff --git a/net/libarcus/files/patch-include_Arcus_Socket.h b/net/libarcus/files/patch-include_Arcus_Socket.h new file mode 100644 index 000000000000..7cefb35ad3ab --- /dev/null +++ b/net/libarcus/files/patch-include_Arcus_Socket.h @@ -0,0 +1,20 @@ +--- include/Arcus/Socket.h.orig 2023-05-19 06:44:12 UTC ++++ include/Arcus/Socket.h +@@ -9,6 +9,8 @@ + #include "Arcus/Error.h" + #include "Arcus/Types.h" + ++#include "ArcusExport.h" ++ + namespace Arcus + { + class SocketListener; +@@ -21,7 +23,7 @@ class SocketListener; + * + * Please see the README in libArcus for more details. + */ +-class Socket ++class ARCUS_EXPORT Socket + { + public: + Socket(); diff --git a/net/libarcus/files/patch-include_Arcus_SocketListener.h b/net/libarcus/files/patch-include_Arcus_SocketListener.h new file mode 100644 index 000000000000..073ae35b4373 --- /dev/null +++ b/net/libarcus/files/patch-include_Arcus_SocketListener.h @@ -0,0 +1,20 @@ +--- include/Arcus/SocketListener.h.orig 2023-05-19 06:44:12 UTC ++++ include/Arcus/SocketListener.h +@@ -6,6 +6,8 @@ + + #include "Arcus/Types.h" + ++#include "ArcusExport.h" ++ + namespace Arcus + { + class Socket; +@@ -24,7 +26,7 @@ class Error; + * signal from a subclass of this class, to make sure the actual event + * is handled on the main thread. + */ +-class SocketListener ++class ARCUS_EXPORT SocketListener + { + public: + SocketListener() : _socket(nullptr) diff --git a/net/libarcus/files/patch-protobuf b/net/libarcus/files/patch-protobuf deleted file mode 100644 index 5fccf07f15b7..000000000000 --- a/net/libarcus/files/patch-protobuf +++ /dev/null @@ -1,11 +0,0 @@ ---- examples/CMakeLists.txt.orig 2021-11-26 15:37:16 UTC -+++ examples/CMakeLists.txt -@@ -12,7 +12,7 @@ add_executable(example ${example_SRCS} ${example_PB_SR - target_link_libraries(example Arcus) - if(NOT WIN32 OR CMAKE_COMPILER_IS_GNUCXX) - target_link_libraries(example pthread) -- set_target_properties(example PROPERTIES COMPILE_FLAGS "-std=c++11") -+ set_target_properties(example PROPERTIES COMPILE_FLAGS "-std=c++17") - endif() - - add_custom_command( diff --git a/net/libarcus/files/patch-src_MessageTypeStore.cpp b/net/libarcus/files/patch-src_MessageTypeStore.cpp new file mode 100644 index 000000000000..c561beca5bd6 --- /dev/null +++ b/net/libarcus/files/patch-src_MessageTypeStore.cpp @@ -0,0 +1,22 @@ +--- src/MessageTypeStore.cpp.orig 2024-08-19 14:31:10.714537000 +0200 ++++ src/MessageTypeStore.cpp 2024-08-19 15:30:50.769879000 +0200 +@@ -39,7 +39,7 @@ + { + } + +- void AddError(const std::string& filename, int line, int column, const std::string& message) override ++ void AddError(const std::string& filename, int line, int column, const std::string& message) + { + _stream << "[" << filename << " (" << line << "," << column << ")] " << message << std::endl; + _error_count++; +@@ -53,6 +53,10 @@ + int getErrorCount() + { + return _error_count; ++ } ++ ++ void RecordError(absl::string_view filename, int line, int column, absl::string_view message) ++ { + } + + private: diff --git a/net/libarcus/files/patch-src_Socket__p.h b/net/libarcus/files/patch-src_Socket__p.h deleted file mode 100644 index b7321c40d56c..000000000000 --- a/net/libarcus/files/patch-src_Socket__p.h +++ /dev/null @@ -1,11 +0,0 @@ ---- src/Socket_p.h.orig 2022-04-14 03:31:38 UTC -+++ src/Socket_p.h -@@ -548,7 +548,7 @@ namespace Arcus - - google::protobuf::io::ArrayInputStream array(wire_message->data, wire_message->size); - google::protobuf::io::CodedInputStream stream(&array); -- stream.SetTotalBytesLimit(message_size_maximum, message_size_warning); -+ stream.SetTotalBytesLimit(message_size_maximum); - if(!message->ParseFromCodedStream(&stream)) - { - error(ErrorCode::ParseFailedError, "Failed to parse message:" + std::string(wire_message->data)); diff --git a/net/libarcus/pkg-plist b/net/libarcus/pkg-plist index 34afda836e1c..985e62a15b13 100644 --- a/net/libarcus/pkg-plist +++ b/net/libarcus/pkg-plist @@ -11,4 +11,4 @@ lib/cmake/Arcus/ArcusConfigVersion.cmake lib/libArcus.so lib/libArcus.so.1.1.0 lib/libArcus.so.3 -%%PYTHON_SITELIBDIR%%/Arcus.so +%%PYTHON_SITELIBDIR%%/pyArcus.so
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202409041430.484EUCe6072043>