Skip to content

Symlinks confuse CMake using fprime-util #4605

@djbyrne17

Description

@djbyrne17
F´ Version 4.0
Affected Component fprime-util

Problem Description

Working directories with some symlinks in the paths will not build. Possible CMake configuration issue?

Two separate mechanisms:

  1. On a linux box, if you move an existing working repo and leave a symlink behind
  2. Something specific to macOS /private/tmp permissions?

Context / Environment

(.venv) DJ-longboat% fprime-util version-check
Operating System: Darwin
CPU Architecture: arm64
Platform: macOS-15.7.3-arm64-arm-64bit-Mach-O
Python version: 3.13.1
CMake version: 3.26.0
Pip version: 25.3
Pip packages:
    fprime-tools==4.1.0
    fprime-gds==4.1.0
    fprime-fpp==3.1.0
Project submodules:

How to Reproduce

  1. On a linux box like fprime-fsw-0
    1a. Create and build a working repo, say in /home/me/foo
    1b. Move it under another disk like /mnt/me/
    1c. Leave a symlink behind with % ln -s /mnt/me/foo /home/me/foo
    1d. Try to build in the new location
cd /mnt/me/foo
fprime-util build

The work-around is to purge, then generate and build again.

  1. On a mac, give the following cmds and see the CMake Error error at the bottom:
DJ-longboat% uname -a
Darwin MT-502541 24.6.0 Darwin Kernel Version 24.6.0: Wed Nov  5 21:32:34 PST 2025; root:xnu-11417.140.69.705.2~1/RELEASE_ARM64_T6020 arm64
DJ-longboat% git clone  [email protected]:djbyrne17/fprime.git  /tmp/symtest
DJ-longboat% cd /tmp/symtest
DJ-longboat% python3 -m venv .venv
DJ-longboat% source .venv/bin/activate
(.venv) DJ-longboat% pip install -Ur requirements.txt
(.venv) DJ-longboat% pip install clang-tidy
(.venv) DJ-longboat% git submodule update --init --recursive
(.venv) DJ-longboat% fprime-util generate
[INFO] Generating build directory at: /private/tmp/symtest/build-fprime-automatic-native
[INFO] Using toolchain file None for platform default
-- The C compiler identification is AppleClang 17.0.0.17000013
-- The CXX compiler identification is AppleClang 17.0.0.17000013
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at cmake/settings/ini.cmake:38 (message):
  Provided settings.ini '/private/tmp/symtest/settings.ini' not expected file
  '/tmp/symtest/settings.ini'
Call Stack (most recent call first):
  cmake/options.cmake:25 (ini_to_cache)
  cmake/FPrime.cmake:12 (include)
  CMakeLists.txt:12 (include)


-- Configuring incomplete, errors occurred!
[ERROR] CMake erred with return code 1. Partial build cache remains. Run purge to clean-up.
(.venv) DJ-longboat% deactivate

Expected Behavior

fprime-util generate would succeed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    CCB

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions