commit: 6ba3b909ae4163b63e6d44a5fc7c601dd4efc8f3 Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> AuthorDate: Thu Oct 23 13:46:25 2025 +0000 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> CommitDate: Thu Oct 23 13:47:39 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6ba3b909
sci-libs/indilib: Unbundle dev-libs/hidapi Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org> .../files/indilib-2.1.6-system-hidapi.patch | 370 +++++++++++++++++++++ sci-libs/indilib/indilib-2.1.6-r1.ebuild | 4 + 2 files changed, 374 insertions(+) diff --git a/sci-libs/indilib/files/indilib-2.1.6-system-hidapi.patch b/sci-libs/indilib/files/indilib-2.1.6-system-hidapi.patch new file mode 100644 index 000000000000..636e9b74204d --- /dev/null +++ b/sci-libs/indilib/files/indilib-2.1.6-system-hidapi.patch @@ -0,0 +1,370 @@ +From 3fe3a66ff3f89a5412f044fe098725b0437c3552 Mon Sep 17 00:00:00 2001 +From: Mattia Verga <[email protected]> +Date: Mon, 13 Oct 2025 19:27:50 +0200 +Subject: [PATCH] Allow using hidapi from system (#2272) + +Signed-off-by: Mattia Verga <[email protected]> +--- + CMakeLists.txt | 17 ++++++++++++++++- + drivers/focuser/CMakeLists.txt | 12 ++++++------ + drivers/focuser/activefocuser.h | 8 +++++++- + drivers/focuser/activefocuser_utils.h | 10 ++++++++-- + drivers/focuser/fcusb.h | 8 +++++++- + drivers/focuser/hitecastrodcfocuser.h | 7 ++++++- + drivers/focuser/perfectstar.h | 7 ++++++- + drivers/focuser/si_efs.h | 7 ++++++- + libs/hid/CMakeLists.txt | 6 +++--- + libs/hid/hid_libusb.c | 2 +- + libs/hid/hid_mac.c | 2 +- + libs/hid/hid_win.c | 2 +- + libs/hid/hidtest.cpp | 2 +- + libs/hid/{hidapi.h => indi_hidapi.h} | 0 + libs/indibase/CMakeLists.txt | 7 ++++++- + obsolete/focusmaster.h | 8 +++++++- + 16 files changed, 82 insertions(+), 23 deletions(-) + rename libs/hid/{hidapi.h => indi_hidapi.h} (100%) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e36fe1334d..0e84420db7 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -102,6 +102,7 @@ OPTION(INDI_BUILD_EXAMPLES "Build INDI examples" ON) + OPTION(INDI_INSTALL_UDEV_RULES "Install INDI udev rules" ON) + + # System provided or bundled libs ++OPTION(INDI_SYSTEM_HIDAPILIB "Use system provided hidapilib" OFF) + OPTION(INDI_SYSTEM_HTTPLIB "Use system provided httplib" OFF) + OPTION(INDI_SYSTEM_JSONLIB "Use system provided json library" OFF) + +@@ -177,6 +178,18 @@ install(FILES + # ################################################################################################## + # #################################### bundled libs ############################################## + # ################################################################################################## ++if(INDI_SYSTEM_HIDAPILIB) ++ find_package(hidapi REQUIRED) ++ set(SYSTEM_HIDAPILIB 1) ++ set(HIDAPILIB hidapi::libusb) ++ add_definitions(-D_USE_SYSTEM_HIDAPILIB) ++ message(STATUS "Using system provided hidapilib version ${hidapi_VERSION_STR}") ++else() ++ set(SYSTEM_HIDAPILIB 0) ++ set(HIDAPILIB "") ++ message(STATUS "Using bundled hidapi") ++endif(INDI_SYSTEM_HIDAPILIB) ++ + if(INDI_SYSTEM_HTTPLIB) + find_package(httplib REQUIRED) + include_directories(${HTTPLIB_INCLUDE_DIR}) +@@ -322,7 +335,9 @@ if(INDI_BUILD_DRIVERS OR INDI_BUILD_COMMON) + add_subdirectory(libs/eventloop) + add_subdirectory(libs/dsp) + add_subdirectory(libs/fpack) +- add_subdirectory(libs/hid) ++ if(NOT SYSTEM_HIDAPILIB) ++ add_subdirectory(libs/hid) ++ endif(NOT SYSTEM_HIDAPILIB) + + # ################################################# + # ########## INDI Driver Library ################## +diff --git a/drivers/focuser/CMakeLists.txt b/drivers/focuser/CMakeLists.txt +index 6ebe06711d..b8d4a9f522 100644 +--- a/drivers/focuser/CMakeLists.txt ++++ b/drivers/focuser/CMakeLists.txt +@@ -29,7 +29,7 @@ SET(fcusb_SRC + fcusb.cpp) + + add_executable(indi_fcusb_focus ${fcusb_SRC}) +-target_link_libraries(indi_fcusb_focus indidriver) ++target_link_libraries(indi_fcusb_focus indidriver ${HIDAPILIB}) + install(TARGETS indi_fcusb_focus RUNTIME DESTINATION bin) + + # ############### Rigelsys NFocus Focuser ################ +@@ -180,7 +180,7 @@ install(TARGETS indi_esattoarco_focus RUNTIME DESTINATION bin) + # focusmaster.cpp) + + # add_executable(indi_focusmaster_focus ${focusmaster_SRC}) +-# target_link_libraries(indi_focusmaster_focus indidriver) ++# target_link_libraries(indi_focusmaster_focus indidriver ${HIDAPILIB}) + # install(TARGETS indi_focusmaster_focus RUNTIME DESTINATION bin) + + # ############### RainbowAstro RSF Focuser ################ +@@ -310,7 +310,7 @@ SET(perfectstar_SRC + perfectstar.cpp) + + add_executable(indi_perfectstar_focus ${perfectstar_SRC}) +-target_link_libraries(indi_perfectstar_focus indidriver) ++target_link_libraries(indi_perfectstar_focus indidriver ${HIDAPILIB}) + install(TARGETS indi_perfectstar_focus RUNTIME DESTINATION bin) + + # ############### Starlight Instruments EFS ################ +@@ -318,7 +318,7 @@ SET(siefs_SRC + si_efs.cpp) + + add_executable(indi_siefs_focus ${siefs_SRC}) +-target_link_libraries(indi_siefs_focus indidriver) ++target_link_libraries(indi_siefs_focus indidriver ${HIDAPILIB}) + install(TARGETS indi_siefs_focus RUNTIME DESTINATION bin) + + # ############### hitechfocus Focuser ################ +@@ -326,7 +326,7 @@ SET(hitecastrodcfocuser_SRC + hitecastrodcfocuser.cpp) + + add_executable(indi_hitecastrodc_focus ${hitecastrodcfocuser_SRC}) +-target_link_libraries(indi_hitecastrodc_focus indidriver) ++target_link_libraries(indi_hitecastrodc_focus indidriver ${HIDAPILIB}) + install(TARGETS indi_hitecastrodc_focus RUNTIME DESTINATION bin) + + # ############### DeepSky Dad AF1 ################ +@@ -398,5 +398,5 @@ SET(activefocuser_SRC + + add_executable(indi_activefocuser_focus ${activefocuser_SRC}) + +-target_link_libraries(indi_activefocuser_focus indidriver) ++target_link_libraries(indi_activefocuser_focus indidriver ${HIDAPILIB}) + install(TARGETS indi_activefocuser_focus RUNTIME DESTINATION bin) +diff --git a/drivers/focuser/activefocuser.h b/drivers/focuser/activefocuser.h +index 8ace38e3b0..44c9ffa23f 100644 +--- a/drivers/focuser/activefocuser.h ++++ b/drivers/focuser/activefocuser.h +@@ -20,7 +20,13 @@ + #include <cstring> + #include <sstream> + #include <unistd.h> +-#include "hidapi.h" ++ ++#ifdef _USE_SYSTEM_HIDAPILIB ++#include <hidapi/hidapi.h> ++#else ++#include <indi_hidapi.h> ++#endif ++ + #include "indifocuser.h" + + class ActiveFocuser : public INDI::Focuser +diff --git a/drivers/focuser/activefocuser_utils.h b/drivers/focuser/activefocuser_utils.h +index ffbc420fa7..adf1ec7a65 100644 +--- a/drivers/focuser/activefocuser_utils.h ++++ b/drivers/focuser/activefocuser_utils.h +@@ -23,7 +23,13 @@ + + #include <map> + #include <string> +-#include <hidapi.h> ++ ++#ifdef _USE_SYSTEM_HIDAPILIB ++#include <hidapi/hidapi.h> ++#else ++#include <indi_hidapi.h> ++#endif ++ + #include <mutex> + #include <future> + #include <cstring> +@@ -130,4 +136,4 @@ class ActiveFocuserUtils + ~ActiveFocuserUtils() = delete; + void operator=(const ActiveFocuserUtils &) = delete; + +-}; +\ No newline at end of file ++}; +diff --git a/drivers/focuser/fcusb.h b/drivers/focuser/fcusb.h +index ade3f91cd8..27d62a2006 100644 +--- a/drivers/focuser/fcusb.h ++++ b/drivers/focuser/fcusb.h +@@ -21,7 +21,13 @@ + #pragma once + + #include "indifocuser.h" +-#include "hidapi.h" ++ ++#ifdef _USE_SYSTEM_HIDAPILIB ++#include <hidapi/hidapi.h> ++#else ++#include <indi_hidapi.h> ++#endif ++ + + #include <map> + +diff --git a/drivers/focuser/hitecastrodcfocuser.h b/drivers/focuser/hitecastrodcfocuser.h +index 7d0ad0ff3a..7dcb6f3b05 100644 +--- a/drivers/focuser/hitecastrodcfocuser.h ++++ b/drivers/focuser/hitecastrodcfocuser.h +@@ -20,7 +20,12 @@ + + #pragma once + +-#include "hidapi.h" ++#ifdef _USE_SYSTEM_HIDAPILIB ++#include <hidapi/hidapi.h> ++#else ++#include <indi_hidapi.h> ++#endif ++ + #include "indifocuser.h" + #include "indiusbdevice.h" + +diff --git a/drivers/focuser/perfectstar.h b/drivers/focuser/perfectstar.h +index 17c3e78e58..80e99dc6df 100644 +--- a/drivers/focuser/perfectstar.h ++++ b/drivers/focuser/perfectstar.h +@@ -21,7 +21,12 @@ + #pragma once + + #include "indifocuser.h" +-#include "hidapi.h" ++ ++#ifdef _USE_SYSTEM_HIDAPILIB ++#include <hidapi/hidapi.h> ++#else ++#include <indi_hidapi.h> ++#endif + + class PerfectStar : public INDI::Focuser + { +diff --git a/drivers/focuser/si_efs.h b/drivers/focuser/si_efs.h +index 52990d81d7..8477139e03 100644 +--- a/drivers/focuser/si_efs.h ++++ b/drivers/focuser/si_efs.h +@@ -21,7 +21,12 @@ + #pragma once + + #include "indifocuser.h" +-#include "hidapi.h" ++ ++#ifdef _USE_SYSTEM_HIDAPILIB ++#include <hidapi/hidapi.h> ++#else ++#include <indi_hidapi.h> ++#endif + + #include <map> + +diff --git a/libs/hid/CMakeLists.txt b/libs/hid/CMakeLists.txt +index a663b91ca2..3bfec800e4 100644 +--- a/libs/hid/CMakeLists.txt ++++ b/libs/hid/CMakeLists.txt +@@ -1,5 +1,5 @@ + cmake_minimum_required(VERSION 3.18) +-project(hid C) ++project(indi_hid C) + if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.31) + cmake_policy(SET CMP0177 NEW) + endif() +@@ -8,7 +8,7 @@ add_library(${PROJECT_NAME} OBJECT "") + + # Headers + list(APPEND ${PROJECT_NAME}_HEADERS +- hidapi.h ++ indi_hidapi.h + ) + + list(APPEND ${PROJECT_NAME}_PRIVATE_HEADERS +@@ -51,5 +51,5 @@ elseif(CYGWIN OR UNIX) + endif() + + add_executable(indi_hid_test hidtest.cpp) +-target_link_libraries(indi_hid_test hid ${USB1_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${LIBS}) ++target_link_libraries(indi_hid_test indi_hid ${USB1_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${LIBS}) + install(TARGETS indi_hid_test RUNTIME DESTINATION bin) +diff --git a/libs/hid/hid_libusb.c b/libs/hid/hid_libusb.c +index 527168f0f9..06a632334b 100644 +--- a/libs/hid/hid_libusb.c ++++ b/libs/hid/hid_libusb.c +@@ -33,7 +33,7 @@ + + #define _GNU_SOURCE // needed for wcsdup() before glibc 2.10 + +-#include "hidapi.h" ++#include "indi_hidapi.h" + #include "locale_compat.h" + + /* GNU / LibUSB */ +diff --git a/libs/hid/hid_mac.c b/libs/hid/hid_mac.c +index e752334ce1..25e0c09883 100644 +--- a/libs/hid/hid_mac.c ++++ b/libs/hid/hid_mac.c +@@ -29,7 +29,7 @@ + + /* See Apple Technical Note TN2187 for details on IOHidManager. */ + +-#include "hidapi.h" ++#include "indi_hidapi.h" + + #include <IOKit/hid/IOHIDManager.h> + #include <IOKit/hid/IOHIDKeys.h> +diff --git a/libs/hid/hid_win.c b/libs/hid/hid_win.c +index 0d214444c5..f70ede8599 100644 +--- a/libs/hid/hid_win.c ++++ b/libs/hid/hid_win.c +@@ -65,7 +65,7 @@ extern "C" { + #include <stdio.h> + #include <stdlib.h> + +-#include "hidapi.h" ++#include "indi_hidapi.h" + + #ifdef _MSC_VER + // Thanks Microsoft, but I know how to use strncpy(). +diff --git a/libs/hid/hidtest.cpp b/libs/hid/hidtest.cpp +index fe110329aa..2992bb7cb0 100644 +--- a/libs/hid/hidtest.cpp ++++ b/libs/hid/hidtest.cpp +@@ -18,7 +18,7 @@ + #include <wchar.h> + #include <string.h> + #include <stdlib.h> +-#include "hidapi.h" ++#include "indi_hidapi.h" + + // Headers needed for sleeping. + #ifdef _WIN32 +diff --git a/libs/hid/hidapi.h b/libs/hid/indi_hidapi.h +similarity index 100% +rename from libs/hid/hidapi.h +rename to libs/hid/indi_hidapi.h +diff --git a/libs/indibase/CMakeLists.txt b/libs/indibase/CMakeLists.txt +index f1a6e5d147..db1cc3a52c 100644 +--- a/libs/indibase/CMakeLists.txt ++++ b/libs/indibase/CMakeLists.txt +@@ -18,8 +18,8 @@ list(APPEND ${PROJECT_NAME}_LIBS + eventloop + dsp + fpack +- hid + AlignmentDriver ++ ${HIDAPILIB} + ${USB1_LIBRARIES} + ${NOVA_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} +@@ -31,6 +31,11 @@ list(APPEND ${PROJECT_NAME}_LIBS + ${CURL} + ) + ++# When bundled hid library is used ++if(NOT SYSTEM_HIDAPILIB) ++ list(APPEND ${PROJECT_NAME}_LIBS indi_hid) ++endif() ++ + # Add Iconv - FreeBSD/OpenBSD need to find the correct GNU iconv library. + if(CYGWIN OR UNIX OR (CMAKE_SYSTEM_NAME MATCHES "FreeBSD|OpenBSD")) + find_package(Iconv REQUIRED) +diff --git a/obsolete/focusmaster.h b/obsolete/focusmaster.h +index 68cdce9266..2756ea13f7 100644 +--- a/obsolete/focusmaster.h ++++ b/obsolete/focusmaster.h +@@ -21,7 +21,13 @@ + #pragma once + + #include "indifocuser.h" +-#include "hidapi.h" ++ ++#ifdef _USE_SYSTEM_HIDAPILIB ++#include <hidapi/hidapi.h> ++#else ++#include <indi_hidapi.h> ++#endif ++ + + class FocusMaster : public INDI::Focuser + { diff --git a/sci-libs/indilib/indilib-2.1.6-r1.ebuild b/sci-libs/indilib/indilib-2.1.6-r1.ebuild index 2c0e63f16a1b..863d8a02cb83 100644 --- a/sci-libs/indilib/indilib-2.1.6-r1.ebuild +++ b/sci-libs/indilib/indilib-2.1.6-r1.ebuild @@ -20,6 +20,7 @@ RESTRICT="!test? ( test )" RDEPEND=" dev-cpp/cpp-httplib:= dev-cpp/nlohmann_json + dev-libs/hidapi dev-libs/libev media-libs/libjpeg-turbo:= net-misc/curl @@ -40,8 +41,11 @@ DEPEND="${RDEPEND} test? ( >=dev-cpp/gtest-1.8.0 ) " +PATCHES=( "${FILESDIR}/${P}-system-hidapi.patch" ) # git master + src_configure() { local mycmakeargs=( + -DINDI_SYSTEM_HIDAPILIB=ON -DINDI_SYSTEM_HTTPLIB=ON -DINDI_SYSTEM_JSONLIB=ON -DINDI_BUILD_QT5_CLIENT=OFF
