From 39304de5b9cd82bfaa4b5a308d955fb6064f102f Mon Sep 17 00:00:00 2001 From: David Hale Date: Mon, 28 Sep 2026 12:22:29 -0700 Subject: [PATCH 1/4] raises minimum CMake to 3.24 and names md5.cpp explicitly --- ARC/CArcBase/CMakeLists.txt | 2 +- ARC/CArcDevice/CMakeLists.txt | 2 +- ARC/CArcFitsFile/CMakeLists.txt | 2 +- ARC/CMakeLists.txt | 2 +- CMakeLists.txt | 2 +- README.md | 2 +- camerad/CMakeLists.txt | 2 +- common/CMakeLists.txt | 2 +- docs/getting-started/index.md | 2 +- emulator/CMakeLists.txt | 2 +- packaging/tracking/pyproject.toml | 2 +- pyproject.toml | 2 +- tests/CMakeLists.txt | 2 +- utils/CMakeLists.txt | 4 ++-- 14 files changed, 15 insertions(+), 15 deletions(-) diff --git a/ARC/CArcBase/CMakeLists.txt b/ARC/CArcBase/CMakeLists.txt index bfecc04..6b0c6b7 100644 --- a/ARC/CArcBase/CMakeLists.txt +++ b/ARC/CArcBase/CMakeLists.txt @@ -4,7 +4,7 @@ # @author David Hale # ---------------------------------------------------------------------------- -cmake_minimum_required( VERSION 3.12 ) +cmake_minimum_required( VERSION 3.24 ) add_definitions( -std=c++17 -O3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF ) diff --git a/ARC/CArcDevice/CMakeLists.txt b/ARC/CArcDevice/CMakeLists.txt index eb2bea1..3668ff8 100644 --- a/ARC/CArcDevice/CMakeLists.txt +++ b/ARC/CArcDevice/CMakeLists.txt @@ -4,7 +4,7 @@ # @author David Hale # ---------------------------------------------------------------------------- -cmake_minimum_required( VERSION 3.12 ) +cmake_minimum_required( VERSION 3.24 ) include_directories( ${ARC_DIR}/CArcBase/inc ) include_directories( ${CARC_DEVICE_DIR}/inc ) diff --git a/ARC/CArcFitsFile/CMakeLists.txt b/ARC/CArcFitsFile/CMakeLists.txt index d29cc3e..af025d9 100644 --- a/ARC/CArcFitsFile/CMakeLists.txt +++ b/ARC/CArcFitsFile/CMakeLists.txt @@ -4,7 +4,7 @@ # @author David Hale # ---------------------------------------------------------------------------- -cmake_minimum_required( VERSION 3.12 ) +cmake_minimum_required( VERSION 3.24 ) add_definitions( -std=c++17 -O0 -Wall -c -fmessage-length=0 -D_REENTRANT -fPIC -MMD -MP -MF ) diff --git a/ARC/CMakeLists.txt b/ARC/CMakeLists.txt index 5f3eaad..d3dea28 100644 --- a/ARC/CMakeLists.txt +++ b/ARC/CMakeLists.txt @@ -4,7 +4,7 @@ # @author David Hale # ---------------------------------------------------------------------------- -cmake_minimum_required( VERSION 3.12 ) +cmake_minimum_required( VERSION 3.24 ) set( ARC_DIR ${PROJECT_BASE_DIR}/ARC ) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f9e212..10c6db9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,7 +34,7 @@ option(ENABLE_SHM_OUTPUT "Build shared-memory output support (requires ImageStre # un-comment the following to log verbose debug messages #add_definitions(-DLOGLEVEL_DEBUG) -cmake_minimum_required(VERSION 3.12) +cmake_minimum_required(VERSION 3.24) # Choosing the compiler belongs to whoever owns the build. A parent project has # already detected a compiler by the time it descends into this file, and diff --git a/README.md b/README.md index 075256a..dba8233 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ If you encounter any problems or have questions about this project, please open ## Requirements -- **CMake** 3.12 or higher +- **CMake** 3.24 or higher - **cfitsio** and **CCFits** libraries (expected in `/usr/local/lib`) - **gtest** (Google Test) library (needed to run unit tests) diff --git a/camerad/CMakeLists.txt b/camerad/CMakeLists.txt index 903c041..27a18e4 100644 --- a/camerad/CMakeLists.txt +++ b/camerad/CMakeLists.txt @@ -4,7 +4,7 @@ # @author David Hale # ---------------------------------------------------------------------------- -cmake_minimum_required( VERSION 3.12 ) +cmake_minimum_required( VERSION 3.24 ) set( CAMERAD_DIR ${PROJECT_BASE_DIR}/camerad ) diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 51c75a0..7cd8439 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -4,7 +4,7 @@ # @author David Hale # ---------------------------------------------------------------------------- -cmake_minimum_required(VERSION 3.12) +cmake_minimum_required(VERSION 3.24) set(PROJECT_UTILS_DIR ${PROJECT_BASE_DIR}/common) diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index 5957c21..eef95a5 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -5,7 +5,7 @@ emulator stands in for the hardware. ## Dependencies -`camerad` needs a C++20 compiler, CMake 3.12 or newer, and: +`camerad` needs a C++20 compiler, CMake 3.24 or newer, and: - cfitsio and CCfits, for FITS output - OpenCV, Boost (thread and chrono), nlohmann-json diff --git a/emulator/CMakeLists.txt b/emulator/CMakeLists.txt index 9ece14e..387eca1 100644 --- a/emulator/CMakeLists.txt +++ b/emulator/CMakeLists.txt @@ -2,7 +2,7 @@ # emulator/CMakeLists.txt # ---------------------------------------------------------------------------- -cmake_minimum_required( VERSION 3.12 ) +cmake_minimum_required( VERSION 3.24 ) set( EMULATOR_DIR ${PROJECT_BASE_DIR}/emulator ) diff --git a/packaging/tracking/pyproject.toml b/packaging/tracking/pyproject.toml index 54c7e61..e6f07e4 100644 --- a/packaging/tracking/pyproject.toml +++ b/packaging/tracking/pyproject.toml @@ -9,7 +9,7 @@ description = "camera_interface built for the HISPEC tracking camera" requires-python = ">=3.10" [tool.scikit-build] -cmake.version = ">=3.15" +cmake.version = ">=3.24" cmake.source-dir = "../.." wheel.packages = [] diff --git a/pyproject.toml b/pyproject.toml index 2f47fe4..12e65da 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ description = "Python bindings for the camera-interface detector controller soft requires-python = ">=3.10" [tool.scikit-build] -cmake.version = ">=3.15" +cmake.version = ">=3.24" # The wheel carries camerad and its tools as well as the module, so installing # the Python side gives a working command line too diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 134ab0e..3bee5f9 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.12) +cmake_minimum_required(VERSION 3.24) set(PROJECT_TESTS_DIR ${PROJECT_BASE_DIR}/tests) diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt index 21b544d..226e2bb 100644 --- a/utils/CMakeLists.txt +++ b/utils/CMakeLists.txt @@ -1,7 +1,7 @@ # ---------------------------------------------------------------------------- # utils/CMakeLists.txt # ---------------------------------------------------------------------------- -cmake_minimum_required(VERSION 3.12) +cmake_minimum_required(VERSION 3.24) set(PROJECT_UTILS_DIR ${PROJECT_BASE_DIR}/utils) @@ -9,7 +9,7 @@ add_compile_options(-Wall -O1 -Wno-variadic-macros -ggdb) add_library(utilities STATIC ${PROJECT_UTILS_DIR}/utilities.cpp - md5 + ${PROJECT_UTILS_DIR}/md5.cpp ) target_link_libraries(utilities nlohmann_json::nlohmann_json) From 089071cc2d57543b75fc9bf09afff4d0824342b5 Mon Sep 17 00:00:00 2001 From: David Hale Date: Mon, 28 Sep 2026 14:02:40 -0700 Subject: [PATCH 2/4] adds tool and install rules for subproject builds --- .github/workflows/cmake-workflow.yml | 67 ++++++++++++++++++++++++++++ CMakeLists.txt | 11 ++++- camerad/CMakeLists.txt | 7 ++- emulator/CMakeLists.txt | 4 +- python/CMakeLists.txt | 4 +- utils/CMakeLists.txt | 38 +++++++++------- 6 files changed, 110 insertions(+), 21 deletions(-) diff --git a/.github/workflows/cmake-workflow.yml b/.github/workflows/cmake-workflow.yml index 538c813..a86e183 100644 --- a/.github/workflows/cmake-workflow.yml +++ b/.github/workflows/cmake-workflow.yml @@ -121,3 +121,70 @@ jobs: shell: bash run: | cmake --build build -j"$(nproc)" + + cmake-3-24-subproject: + runs-on: ubuntu-latest + timeout-minutes: 30 + + env: + CMAKE_324: cmake-3.24.4-linux-x86_64 + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install dependencies + shell: bash + run: | + bash .github/workflows/install-deps.sh + + - name: Build and install zmqpp from source + shell: bash + run: | + git clone --depth 1 https://github.com/zeromq/zmqpp.git /tmp/zmqpp + cmake -S /tmp/zmqpp -B /tmp/zmqpp/build + cmake --build /tmp/zmqpp/build -j"$(nproc)" + sudo cmake --install /tmp/zmqpp/build + sudo ldconfig + + # The declared minimum is only true if something builds with it + - name: Install CMake 3.24.4 + shell: bash + run: | + cd "$RUNNER_TEMP" + curl -sSLO "https://github.com/Kitware/CMake/releases/download/v3.24.4/${CMAKE_324}.tar.gz" + echo "cac77d28fb8668c179ac02c283b058aeb846fe2133a57d40b503711281ed9f19 ${CMAKE_324}.tar.gz" | sha256sum -c + tar xzf "${CMAKE_324}.tar.gz" + echo "$RUNNER_TEMP/${CMAKE_324}/bin" >> "$GITHUB_PATH" + + - name: Build the core as a top-level project + shell: bash + run: | + cmake --version + cmake -G Ninja -S . -B build -DCONTROLLER=archon + cmake --build build -j"$(nproc)" + + # Stands in for an instrument's build: the core composed as a subproject, + # and a translation unit of the consumer's own that includes its headers + - name: Build the core as a subproject + shell: bash + run: | + mkdir -p "$RUNNER_TEMP/consumer" + cd "$RUNNER_TEMP/consumer" + cat > CMakeLists.txt <<'EOF' + cmake_minimum_required(VERSION 3.24) + project(consumer CXX) + # Below the core's C++17, so the core has to raise it for its headers + set(CMAKE_CXX_STANDARD 14) + set(CONTROLLER archon CACHE STRING "") + include(FetchContent) + FetchContent_Declare(camerad SOURCE_DIR ${CAMERAD_SOURCE_DIR}) + FetchContent_MakeAvailable(camerad) + add_library(consumer OBJECT consumer.cpp) + target_link_libraries(consumer PRIVATE camerad_base) + EOF + cat > consumer.cpp <<'EOF' + #include "camera_interface.h" + EOF + cmake -G Ninja -S . -B build -DCAMERAD_SOURCE_DIR="$GITHUB_WORKSPACE" + cmake --build build -j"$(nproc)" diff --git a/CMakeLists.txt b/CMakeLists.txt index 10c6db9..58d714e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,7 +62,7 @@ set(PROJECT_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) # A wheel build has nowhere to put a source-tree bin/, so let CMake keep its # outputs in the build directory. A project that add_subdirectory()s this one # has nowhere to put them either, and its source tree is not ours to write into -if (NOT SKBUILD AND CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) +if (NOT SKBUILD AND PROJECT_IS_TOP_LEVEL) set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BASE_DIR}/bin) set(LIBRARY_OUTPUT_PATH ${PROJECT_BASE_DIR}/lib) endif() @@ -88,8 +88,15 @@ if (BUILD_PYTHON_MODULE) set(CMAKE_POSITION_INDEPENDENT_CODE ON) endif() +# A project that composes this one gets the libraries; the programs and the +# install rules are built only if it asks for them +option(CAMERAD_BUILD_TOOLS "Build the emulator, listener, socksend and shm_reader" ${PROJECT_IS_TOP_LEVEL}) +option(CAMERAD_INSTALL "Generate install rules" ${PROJECT_IS_TOP_LEVEL}) + add_subdirectory(${PROJECT_BASE_DIR}/utils) add_subdirectory(${PROJECT_BASE_DIR}/common) add_subdirectory(${PROJECT_BASE_DIR}/camerad) -add_subdirectory(${PROJECT_BASE_DIR}/emulator) +if (CAMERAD_BUILD_TOOLS) + add_subdirectory(${PROJECT_BASE_DIR}/emulator) +endif() add_subdirectory(${PROJECT_BASE_DIR}/tests EXCLUDE_FROM_ALL) diff --git a/camerad/CMakeLists.txt b/camerad/CMakeLists.txt index 27a18e4..3770664 100644 --- a/camerad/CMakeLists.txt +++ b/camerad/CMakeLists.txt @@ -146,6 +146,9 @@ target_link_libraries(camerad_base PUBLIC logentry frame_output_factory ) +# The public headers need C++17. The standard set for this directory is not +# inherited by a project consuming this one, so it has to travel with the target +target_compile_features(camerad_base PUBLIC cxx_std_17) # ---------------------------------------------------------------------------- # controller implementation, linking the base PUBLIC so that anything @@ -223,7 +226,9 @@ target_link_libraries(camerad ${ZMQ_LIB} ) -install(TARGETS camerad RUNTIME DESTINATION ${CAMERAD_INSTALL_BINDIR}) +if (CAMERAD_INSTALL) + install(TARGETS camerad RUNTIME DESTINATION ${CAMERAD_INSTALL_BINDIR}) +endif() # ---------------------------------------------------------------------------- # optional Python module diff --git a/emulator/CMakeLists.txt b/emulator/CMakeLists.txt index 387eca1..18235f6 100644 --- a/emulator/CMakeLists.txt +++ b/emulator/CMakeLists.txt @@ -52,7 +52,9 @@ target_link_directories(emulator PRIVATE ${CFITSIO_LIBRARY_DIRS}) # Prefixed because "emulator" is too generic for a shared bin directory set_target_properties(emulator PROPERTIES OUTPUT_NAME camerad-emulator) -install(TARGETS emulator RUNTIME DESTINATION ${CAMERAD_INSTALL_BINDIR}) +if( CAMERAD_INSTALL ) + install(TARGETS emulator RUNTIME DESTINATION ${CAMERAD_INSTALL_BINDIR}) +endif() elseif( ${INTERFACE_TYPE} STREQUAL "AstroCam" ) message( STATUS "emulator not implemented for AstroCam" ) else() diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index f470f97..47cbcf8 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -69,4 +69,6 @@ target_link_libraries(camera_interface PRIVATE ${ZMQ_LIB} ) -install(TARGETS camera_interface LIBRARY DESTINATION ${CAMERAD_INSTALL_LIBDIR}) +if (CAMERAD_INSTALL) + install(TARGETS camera_interface LIBRARY DESTINATION ${CAMERAD_INSTALL_LIBDIR}) +endif() diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt index 226e2bb..50dbdce 100644 --- a/utils/CMakeLists.txt +++ b/utils/CMakeLists.txt @@ -32,10 +32,13 @@ if(ENABLE_SHM_OUTPUT) target_include_directories(shared_memory_writer PRIVATE ${PROJECT_BASE_DIR}/common ${PROJECT_BASE_DIR}/utils) target_link_libraries(shared_memory_writer nlohmann_json::nlohmann_json ImageStreamIO::ImageStreamIO) - add_executable(shm_reader - ${PROJECT_UTILS_DIR}/shm_reader.cpp - ) - target_link_libraries(shm_reader ImageStreamIO::ImageStreamIO) + if(CAMERAD_BUILD_TOOLS) + add_executable(shm_reader + ${PROJECT_UTILS_DIR}/shm_reader.cpp + ) + target_link_libraries(shm_reader ImageStreamIO::ImageStreamIO) + set_target_properties(shm_reader PROPERTIES OUTPUT_NAME camerad-shm-reader) + endif() endif() add_library(fits_writer STATIC @@ -68,19 +71,22 @@ add_library(md5 STATIC ${PROJECT_UTILS_DIR}/md5.cpp ) -add_executable(listener - ${PROJECT_UTILS_DIR}/listener.cpp -) +if(CAMERAD_BUILD_TOOLS) + add_executable(listener + ${PROJECT_UTILS_DIR}/listener.cpp + ) -add_executable(socksend - ${PROJECT_UTILS_DIR}/sendcmd.cpp -) + add_executable(socksend + ${PROJECT_UTILS_DIR}/sendcmd.cpp + ) -# Prefixed because these names are too generic for a shared bin directory -set_target_properties(socksend PROPERTIES OUTPUT_NAME camerad-socksend) + # Prefixed because these names are too generic for a shared bin directory + set_target_properties(socksend PROPERTIES OUTPUT_NAME camerad-socksend) +endif() -install(TARGETS socksend RUNTIME DESTINATION ${CAMERAD_INSTALL_BINDIR}) -if (ENABLE_SHM_OUTPUT) - set_target_properties(shm_reader PROPERTIES OUTPUT_NAME camerad-shm-reader) - install(TARGETS shm_reader RUNTIME DESTINATION ${CAMERAD_INSTALL_BINDIR}) +if(CAMERAD_BUILD_TOOLS AND CAMERAD_INSTALL) + install(TARGETS socksend RUNTIME DESTINATION ${CAMERAD_INSTALL_BINDIR}) + if (ENABLE_SHM_OUTPUT) + install(TARGETS shm_reader RUNTIME DESTINATION ${CAMERAD_INSTALL_BINDIR}) + endif() endif() From a6aae70c2e4491aff9f3c7f2fa9da4a386918cc7 Mon Sep 17 00:00:00 2001 From: David Hale Date: Mon, 28 Sep 2026 14:06:35 -0700 Subject: [PATCH 3/4] removes opencv --- .github/workflows/emulator-integration.yml | 6 +++--- .github/workflows/install-deps.sh | 1 - README.md | 2 +- camerad/CMakeLists.txt | 6 ------ docs/getting-started/index.md | 4 ++-- python/CMakeLists.txt | 1 - 6 files changed, 6 insertions(+), 14 deletions(-) diff --git a/.github/workflows/emulator-integration.yml b/.github/workflows/emulator-integration.yml index feaee1e..74306b4 100644 --- a/.github/workflows/emulator-integration.yml +++ b/.github/workflows/emulator-integration.yml @@ -22,7 +22,7 @@ jobs: sudo apt-get install -y \ libccfits-dev libcfitsio-dev libcurl4-openssl-dev \ nlohmann-json3-dev libzmq3-dev \ - libopencv-dev libboost-thread-dev libboost-chrono-dev + libboost-thread-dev libboost-chrono-dev - name: Build and install zmqpp from source run: | @@ -131,7 +131,7 @@ jobs: sudo apt-get install -y \ libccfits-dev libcfitsio-dev libcurl4-openssl-dev \ nlohmann-json3-dev libzmq3-dev \ - libopencv-dev libboost-thread-dev libboost-chrono-dev \ + libboost-thread-dev libboost-chrono-dev \ python3-dev python3-pip python3 -m pip install --upgrade pybind11 @@ -212,7 +212,7 @@ jobs: sudo apt-get install -y \ libccfits-dev libcfitsio-dev libcurl4-openssl-dev \ nlohmann-json3-dev libzmq3-dev \ - libopencv-dev libboost-thread-dev libboost-chrono-dev + libboost-thread-dev libboost-chrono-dev - name: Build and install zmqpp from source run: | diff --git a/.github/workflows/install-deps.sh b/.github/workflows/install-deps.sh index d0b8f08..5dee3c1 100755 --- a/.github/workflows/install-deps.sh +++ b/.github/workflows/install-deps.sh @@ -13,7 +13,6 @@ packages=( libgtest-dev nlohmann-json3-dev libzmq3-dev - libopencv-dev libboost-thread-dev libboost-chrono-dev ) diff --git a/README.md b/README.md index dba8233..f69c634 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ If you encounter any problems or have questions about this project, please open pybind11 is located by asking the interpreter CMake selected, so pass `-DPython3_EXECUTABLE=...` to build against a specific one (a virtualenv, say). The module and that interpreter then always agree on the ABI. - pybind11 is header-only and needed only to compile: the built module links cfitsio, CCfits and OpenCV but not pybind11, so it does not have to be present where the module is imported. + pybind11 is header-only and needed only to compile: the built module links cfitsio and CCfits but not pybind11, so it does not have to be present where the module is imported. 4. **Compile the sources:** diff --git a/camerad/CMakeLists.txt b/camerad/CMakeLists.txt index 3770664..2837294 100644 --- a/camerad/CMakeLists.txt +++ b/camerad/CMakeLists.txt @@ -184,11 +184,6 @@ find_library(CFITS_LIB cfitsio NAMES libcfitsio PATHS /usr/local/lib) find_library( ZMQPP_LIB zmqpp NAMES libzmqpp PATHS /usr/local/lib ) find_library( ZMQ_LIB zmq NAMES libzmq PATHS /usr/local/lib ) -# OpenCV -# -find_package( OpenCV REQUIRED ) -include_directories( ${OpenCV_INCLUDE_DIRS} ) - # Boost # find_package(Boost REQUIRED COMPONENTS thread chrono) @@ -218,7 +213,6 @@ target_link_libraries(camerad ${CMAKE_THREAD_LIBS_INIT} ${CCFITS_LIB} ${CFITS_LIB} - ${OpenCV_LIBS} ${BOOST_INCLUDES} Boost::thread Boost::chrono diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index eef95a5..6fde315 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -8,7 +8,7 @@ emulator stands in for the hardware. `camerad` needs a C++20 compiler, CMake 3.24 or newer, and: - cfitsio and CCfits, for FITS output -- OpenCV, Boost (thread and chrono), nlohmann-json +- Boost (thread and chrono), nlohmann-json - ZeroMQ and [zmqpp](https://github.com/zeromq/zmqpp), which is not usually packaged and is built from source - gtest, to run the unit tests - [ImageStreamIO](https://github.com/milk-org/ImageStreamIO), only for the shared-memory output @@ -18,7 +18,7 @@ On Debian or Ubuntu the packaged ones are what CI installs: ```bash sudo apt-get install -y build-essential cmake ninja-build \ libccfits-dev libcfitsio-dev libcurl4-openssl-dev libgtest-dev \ - nlohmann-json3-dev libzmq3-dev libopencv-dev \ + nlohmann-json3-dev libzmq3-dev \ libboost-thread-dev libboost-chrono-dev ``` diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 47cbcf8..7819807 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -62,7 +62,6 @@ target_link_libraries(camera_interface PRIVATE ${CMAKE_THREAD_LIBS_INIT} ${CCFITS_LIB} ${CFITS_LIB} - ${OpenCV_LIBS} Boost::thread Boost::chrono ${ZMQPP_LIB} From 6b6628e31e5b2eff753ff2a669c4fa1e623e815a Mon Sep 17 00:00:00 2001 From: David Hale Date: Mon, 28 Sep 2026 14:46:43 -0700 Subject: [PATCH 4/4] moves hispec_tracking_camera pin to 60382fd fc8bf34d was removed from the instrument repo, so checking out submodules fails and every workflow that does so has been failing on main since PR#37. 60382fd is the head of the instrument repo's main. --- camerad/Instruments/hispec_tracking_camera | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/camerad/Instruments/hispec_tracking_camera b/camerad/Instruments/hispec_tracking_camera index fc8bf34..60382fd 160000 --- a/camerad/Instruments/hispec_tracking_camera +++ b/camerad/Instruments/hispec_tracking_camera @@ -1 +1 @@ -Subproject commit fc8bf34db4d1f6704800750169fffc1962646d97 +Subproject commit 60382fdfceadf4ca6055033b79bdcce70492c52d