From 2fcfa9892f92f4fbdb84472c324dc284e815b493 Mon Sep 17 00:00:00 2001 From: flipflip Date: Wed, 28 Oct 2026 08:23:41 +0100 Subject: [PATCH 1/3] update docker images and devcontainers --- .devcontainer/.bash_history.d/.gitkeep | 0 .devcontainer/.claude/.gitkeep | 0 .devcontainer/.local/.gitkeep | 0 .devcontainer/.vscode-server/.gitkeep | 0 .devcontainer/helper.sh | 42 ++++++++++++++++ .devcontainer/jazzy/devcontainer.json | 3 ++ .devcontainer/lyrical/devcontainer.json | 3 ++ .devcontainer/noetic/devcontainer.json | 3 ++ .devcontainer/trixie/devcontainer.json | 3 ++ .gitignore | 12 ++--- docker/Dockerfile.humble-base | 8 +++ docker/Dockerfile.humble-dev | 16 +----- docker/Dockerfile.jazzy-base | 8 +++ docker/Dockerfile.jazzy-dev | 16 +----- docker/Dockerfile.lyrical-base | 8 +++ docker/Dockerfile.lyrical-dev | 16 +----- docker/Dockerfile.noetic-base | 8 +++ docker/Dockerfile.noetic-dev | 16 +----- docker/Dockerfile.trixie-base | 8 +++ docker/Dockerfile.trixie-dev | 16 +----- docker/docker-compose.yaml | 50 ++++++++----------- docker/scripts/adduser_fpsdk.sh | 21 ++++---- .../scripts/adduser_fpsdk}/.bash_logout | 0 .../scripts/adduser_fpsdk}/.bashrc | 0 .../scripts/adduser_fpsdk}/fpsdk.bgptheme | 0 docker/scripts/install_apt_base.sh | 2 + docker/scripts/install_ffmpeg.sh | 2 + docker/scripts/install_gitbashprompt.sh | 27 ---------- docker/scripts/install_locales.sh | 16 +++--- fpsdk.code-workspace | 8 ++- 30 files changed, 154 insertions(+), 158 deletions(-) delete mode 100644 .devcontainer/.bash_history.d/.gitkeep delete mode 100644 .devcontainer/.claude/.gitkeep delete mode 100644 .devcontainer/.local/.gitkeep delete mode 100644 .devcontainer/.vscode-server/.gitkeep create mode 100755 .devcontainer/helper.sh rename {.devcontainer => docker/scripts/adduser_fpsdk}/.bash_logout (100%) rename {.devcontainer => docker/scripts/adduser_fpsdk}/.bashrc (100%) rename {.devcontainer => docker/scripts/adduser_fpsdk}/fpsdk.bgptheme (100%) delete mode 100755 docker/scripts/install_gitbashprompt.sh diff --git a/.devcontainer/.bash_history.d/.gitkeep b/.devcontainer/.bash_history.d/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/.devcontainer/.claude/.gitkeep b/.devcontainer/.claude/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/.devcontainer/.local/.gitkeep b/.devcontainer/.local/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/.devcontainer/.vscode-server/.gitkeep b/.devcontainer/.vscode-server/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/.devcontainer/helper.sh b/.devcontainer/helper.sh new file mode 100755 index 00000000..adebc2c3 --- /dev/null +++ b/.devcontainer/helper.sh @@ -0,0 +1,42 @@ +#!/bin/bash +set -eEu -o pipefail + +scriptdir=$(dirname $(realpath $0)) + +command=${1:-} +workspace=${2:-} +shift 2 + +# echo "scriptdir=${scriptdir}" +# echo "command=${command}" +# echo "workspace=${workspace}" +# echo "args=$*" + +# See docker/docker-compose.yaml +PERSISTENT_DIRS=".local .claude .bash_history.d .vscode-server" + +case ${command} in + initializeCommand) + # Make the persistent directories (see compose.yaml .services.dev.volumes) + for dir in ${PERSISTENT_DIRS}; do + if [ ! -d ${workspace}/.devcontainer/.persist/${dir} ]; then + echo "Making ${workspace}/.devcontainer/.persist/${dir}" + mkdir -p ${workspace}/.devcontainer/.persist/${dir} + fi + done + # Thank you Claudine, for using .claude/ AND .claude.json... :-/ + if [ ! -f ${workspace}/.devcontainer/.persist/.claude.json ]; then + echo "Making ${workspace}/.devcontainer/.persist/.claude.json" + echo "{}" > ${workspace}/.devcontainer/.persist/.claude.json + fi + ;; + onCreateCommand) + id + ;; + *) + echo "bad command: ${command}" + exit 1 + ;; +esac + +exit 0 diff --git a/.devcontainer/jazzy/devcontainer.json b/.devcontainer/jazzy/devcontainer.json index c6b22537..5496b0f3 100644 --- a/.devcontainer/jazzy/devcontainer.json +++ b/.devcontainer/jazzy/devcontainer.json @@ -12,6 +12,9 @@ // compare .services.jazzy-dev.volumes in ../../docker/docker-compose.yaml "workspaceFolder": "/home/fpsdk/fixposition-sdk", + "initializeCommand": "${localWorkspaceFolder}/.devcontainer/helper.sh initializeCommand ${localWorkspaceFolder}", + "onCreateCommand": "${containerWorkspaceFolder}/.devcontainer/helper.sh onCreateCommand ${containerWorkspaceFolder}", + // Deliberately empty, see fpsdk.code-workspace instead "customizations": {} } diff --git a/.devcontainer/lyrical/devcontainer.json b/.devcontainer/lyrical/devcontainer.json index c1f529fe..62fc9bee 100644 --- a/.devcontainer/lyrical/devcontainer.json +++ b/.devcontainer/lyrical/devcontainer.json @@ -12,6 +12,9 @@ // compare .services.lyrical-dev.volumes in ../../docker/docker-compose.yaml "workspaceFolder": "/home/fpsdk/fixposition-sdk", + "initializeCommand": "${localWorkspaceFolder}/.devcontainer/helper.sh initializeCommand ${localWorkspaceFolder}", + "onCreateCommand": "${containerWorkspaceFolder}/.devcontainer/helper.sh onCreateCommand ${containerWorkspaceFolder}", + // Deliberately empty, see fpsdk.code-workspace instead "customizations": {} } diff --git a/.devcontainer/noetic/devcontainer.json b/.devcontainer/noetic/devcontainer.json index 1722256e..f0517650 100644 --- a/.devcontainer/noetic/devcontainer.json +++ b/.devcontainer/noetic/devcontainer.json @@ -12,6 +12,9 @@ // compare .services.noetic-dev.volumes in ../../docker/docker-compose.yaml "workspaceFolder": "/home/fpsdk/fixposition-sdk", + "initializeCommand": "${localWorkspaceFolder}/.devcontainer/helper.sh initializeCommand ${localWorkspaceFolder}", + "onCreateCommand": "${containerWorkspaceFolder}/.devcontainer/helper.sh onCreateCommand ${containerWorkspaceFolder}", + // Deliberately empty, see fpsdk.code-workspace instead "customizations": {} } diff --git a/.devcontainer/trixie/devcontainer.json b/.devcontainer/trixie/devcontainer.json index 38c4a56a..b8a09556 100644 --- a/.devcontainer/trixie/devcontainer.json +++ b/.devcontainer/trixie/devcontainer.json @@ -12,6 +12,9 @@ // compare .services.trixie-dev.volumes in ../../docker/docker-compose.yaml "workspaceFolder": "/home/fpsdk/fixposition-sdk", + "initializeCommand": "${localWorkspaceFolder}/.devcontainer/helper.sh initializeCommand ${localWorkspaceFolder}", + "onCreateCommand": "${containerWorkspaceFolder}/.devcontainer/helper.sh onCreateCommand ${containerWorkspaceFolder}", + // Deliberately empty, see fpsdk.code-workspace instead "customizations": {} } diff --git a/.gitignore b/.gitignore index 3c704834..7b3977d9 100644 --- a/.gitignore +++ b/.gitignore @@ -15,13 +15,8 @@ CMakeCache.txt *.fpl.gz *.bag *.bak -/.devcontainer/.bash_history.d -/.devcontainer/.claude -/.devcontainer/.local -/.devcontainer/.vscode-server -/.devcontainer/.claude -/.devcontainer/.local -.devcontainer/.gdb/__pycache__ +/.devcontainer/.persist +__pycache__ /ws /ws2 /ros_ws @@ -46,6 +41,9 @@ baz* /*.json /.claude /*_bag +/prompt.md +/notes.md + # We must not commit such files ever. See section FPSDK_BUILD_ROS in fpsdk_doc/fpsdk_build.hpp CATKIN_IGNORE diff --git a/docker/Dockerfile.humble-base b/docker/Dockerfile.humble-base index 934833f8..50daced3 100644 --- a/docker/Dockerfile.humble-base +++ b/docker/Dockerfile.humble-base @@ -25,6 +25,14 @@ ENTRYPOINT [] COPY docker/scripts/install_apt_base.sh /tmp RUN /tmp/install_apt_base.sh && rm -f /tmp/install_apt_base.sh +# Set timezone, sane language and locale +ENV TZ=Europe/Zurich +ENV LANG=en_GB.UTF-8 +ENV LANGUAGE=en_GB +ENV LC_ALL=C.UTF-8 +COPY docker/scripts/install_locales.sh /tmp +RUN /tmp/install_locales.sh && rm -f /tmp/install_locales.sh + # Download, build and install clang-format COPY docker/scripts/install_clangformat.sh /tmp RUN /tmp/install_clangformat.sh && rm -f /tmp/install_clangformat.sh diff --git a/docker/Dockerfile.humble-dev b/docker/Dockerfile.humble-dev index bbd15761..bbc76ee1 100644 --- a/docker/Dockerfile.humble-dev +++ b/docker/Dockerfile.humble-dev @@ -22,26 +22,14 @@ RUN /tmp/unminimize_system.sh && rm -f /tmp/unminimize_system.sh # Add user for devcontainer, see ../.devcontainer/devcontainer.json COPY docker/scripts/adduser_fpsdk.sh /tmp -RUN /tmp/adduser_fpsdk.sh && rm -f /tmp/adduser_fpsdk.sh +COPY docker/scripts/adduser_fpsdk /tmp/adduser_fpsdk +RUN /tmp/adduser_fpsdk.sh && rm -rf /tmp/adduser_fpsdk* # # Install pre-commit hooks (fpsdk user) # COPY .pre-commit-config.yaml /tmp # COPY docker/scripts/install_precommithooks.sh /tmp # RUN sudo -u fpsdk /tmp/install_precommithooks.sh && rm -f /tmp/install_precommithooks.sh /tmp/.pre-commit-config.yaml -# Install git-bash-prompt (fpsdk user) -COPY .devcontainer/fpsdk.bgptheme /tmp -COPY docker/scripts/install_gitbashprompt.sh /tmp -RUN sudo -u fpsdk /tmp/install_gitbashprompt.sh && rm -f /tmp/install_gitbashprompt.sh /tmp/.devcontainer/fpsdk.bgptheme - -# Set timezone, sane language and locale -ENV TZ=Europe/Zurich -ENV LANG=en_GB.UTF-8 -ENV LANGUAGE=en_GB -ENV LC_ALL=C.UTF-8 -COPY docker/scripts/install_locales.sh /tmp -RUN /tmp/install_locales.sh && rm -f /tmp/install_locales.sh - # Install mcap COPY docker/scripts/install_mcap.sh /tmp RUN /tmp/install_mcap.sh && rm -f /tmp/install_mcap.sh diff --git a/docker/Dockerfile.jazzy-base b/docker/Dockerfile.jazzy-base index f767e829..d39fd546 100644 --- a/docker/Dockerfile.jazzy-base +++ b/docker/Dockerfile.jazzy-base @@ -25,6 +25,14 @@ ENTRYPOINT [] COPY docker/scripts/install_apt_base.sh /tmp RUN /tmp/install_apt_base.sh && rm -f /tmp/install_apt_base.sh +# Set timezone, sane language and locale +ENV TZ=Europe/Zurich +ENV LANG=en_GB.UTF-8 +ENV LANGUAGE=en_GB +ENV LC_ALL=C.UTF-8 +COPY docker/scripts/install_locales.sh /tmp +RUN /tmp/install_locales.sh && rm -f /tmp/install_locales.sh + # Download, build and install clang-format COPY docker/scripts/install_clangformat.sh /tmp RUN /tmp/install_clangformat.sh && rm -f /tmp/install_clangformat.sh diff --git a/docker/Dockerfile.jazzy-dev b/docker/Dockerfile.jazzy-dev index f207e2ec..5896d9ba 100644 --- a/docker/Dockerfile.jazzy-dev +++ b/docker/Dockerfile.jazzy-dev @@ -22,26 +22,14 @@ RUN /tmp/unminimize_system.sh && rm -f /tmp/unminimize_system.sh # Add user for devcontainer, see ../.devcontainer/devcontainer.json COPY docker/scripts/adduser_fpsdk.sh /tmp -RUN /tmp/adduser_fpsdk.sh && rm -f /tmp/adduser_fpsdk.sh +COPY docker/scripts/adduser_fpsdk /tmp/adduser_fpsdk +RUN /tmp/adduser_fpsdk.sh && rm -rf /tmp/adduser_fpsdk* # # Install pre-commit hooks (fpsdk user) # COPY .pre-commit-config.yaml /tmp # COPY docker/scripts/install_precommithooks.sh /tmp # RUN sudo -u fpsdk /tmp/install_precommithooks.sh && rm -f /tmp/install_precommithooks.sh /tmp/.pre-commit-config.yaml -# Install git-bash-prompt (fpsdk user) -COPY .devcontainer/fpsdk.bgptheme /tmp -COPY docker/scripts/install_gitbashprompt.sh /tmp -RUN sudo -u fpsdk /tmp/install_gitbashprompt.sh && rm -f /tmp/install_gitbashprompt.sh /tmp/.devcontainer/fpsdk.bgptheme - -# Set timezone, sane language and locale -ENV TZ=Europe/Zurich -ENV LANG=en_GB.UTF-8 -ENV LANGUAGE=en_GB -ENV LC_ALL=C.UTF-8 -COPY docker/scripts/install_locales.sh /tmp -RUN /tmp/install_locales.sh && rm -f /tmp/install_locales.sh - # Install mcap COPY docker/scripts/install_mcap.sh /tmp RUN /tmp/install_mcap.sh && rm -f /tmp/install_mcap.sh diff --git a/docker/Dockerfile.lyrical-base b/docker/Dockerfile.lyrical-base index c886c400..e4060aea 100644 --- a/docker/Dockerfile.lyrical-base +++ b/docker/Dockerfile.lyrical-base @@ -25,6 +25,14 @@ ENTRYPOINT [] COPY docker/scripts/install_apt_base.sh /tmp RUN /tmp/install_apt_base.sh && rm -f /tmp/install_apt_base.sh +# Set timezone, sane language and locale +ENV TZ=Europe/Zurich +ENV LANG=en_GB.UTF-8 +ENV LANGUAGE=en_GB +ENV LC_ALL=C.UTF-8 +COPY docker/scripts/install_locales.sh /tmp +RUN /tmp/install_locales.sh && rm -f /tmp/install_locales.sh + # Download, build and install FFmpeg libraries (LGPL) COPY docker/scripts/install_ffmpeg.sh /tmp RUN /tmp/install_ffmpeg.sh && rm -f /tmp/install_ffmpeg.sh diff --git a/docker/Dockerfile.lyrical-dev b/docker/Dockerfile.lyrical-dev index 877da6a7..5a210d8d 100644 --- a/docker/Dockerfile.lyrical-dev +++ b/docker/Dockerfile.lyrical-dev @@ -22,26 +22,14 @@ RUN /tmp/unminimize_system.sh && rm -f /tmp/unminimize_system.sh # Add user for devcontainer, see ../.devcontainer/devcontainer.json COPY docker/scripts/adduser_fpsdk.sh /tmp -RUN /tmp/adduser_fpsdk.sh && rm -f /tmp/adduser_fpsdk.sh +COPY docker/scripts/adduser_fpsdk /tmp/adduser_fpsdk +RUN /tmp/adduser_fpsdk.sh && rm -rf /tmp/adduser_fpsdk* # # Install pre-commit hooks (fpsdk user) # COPY .pre-commit-config.yaml /tmp # COPY docker/scripts/install_precommithooks.sh /tmp # RUN sudo -u fpsdk /tmp/install_precommithooks.sh && rm -f /tmp/install_precommithooks.sh /tmp/.pre-commit-config.yaml -# Install git-bash-prompt (fpsdk user) -COPY .devcontainer/fpsdk.bgptheme /tmp -COPY docker/scripts/install_gitbashprompt.sh /tmp -RUN sudo -u fpsdk /tmp/install_gitbashprompt.sh && rm -f /tmp/install_gitbashprompt.sh /tmp/.devcontainer/fpsdk.bgptheme - -# Set timezone, sane language and locale -ENV TZ=Europe/Zurich -ENV LANG=en_GB.UTF-8 -ENV LANGUAGE=en_GB -ENV LC_ALL=C.UTF-8 -COPY docker/scripts/install_locales.sh /tmp -RUN /tmp/install_locales.sh && rm -f /tmp/install_locales.sh - # Install mcap COPY docker/scripts/install_mcap.sh /tmp RUN /tmp/install_mcap.sh && rm -f /tmp/install_mcap.sh diff --git a/docker/Dockerfile.noetic-base b/docker/Dockerfile.noetic-base index 47803799..2e349c17 100644 --- a/docker/Dockerfile.noetic-base +++ b/docker/Dockerfile.noetic-base @@ -26,6 +26,14 @@ RUN echo "deb [trusted=yes] http://packages.ros.org/ros/ubuntu focal main" > /et COPY docker/scripts/install_apt_base.sh /tmp RUN /tmp/install_apt_base.sh && rm -f /tmp/install_apt_base.sh +# Set timezone, sane language and locale +ENV TZ=Europe/Zurich +ENV LANG=en_GB.UTF-8 +ENV LANGUAGE=en_GB +ENV LC_ALL=C.UTF-8 +COPY docker/scripts/install_locales.sh /tmp +RUN /tmp/install_locales.sh && rm -f /tmp/install_locales.sh + # Download, build and install clang-format COPY docker/scripts/install_clangformat.sh /tmp RUN /tmp/install_clangformat.sh && rm -f /tmp/install_clangformat.sh diff --git a/docker/Dockerfile.noetic-dev b/docker/Dockerfile.noetic-dev index d909bd54..85f72b79 100644 --- a/docker/Dockerfile.noetic-dev +++ b/docker/Dockerfile.noetic-dev @@ -20,26 +20,14 @@ RUN /tmp/unminimize_system.sh && rm -f /tmp/unminimize_system.sh # Add user for devcontainer, see ../.devcontainer/devcontainer.json COPY docker/scripts/adduser_fpsdk.sh /tmp -RUN /tmp/adduser_fpsdk.sh && rm -f /tmp/adduser_fpsdk.sh +COPY docker/scripts/adduser_fpsdk /tmp/adduser_fpsdk +RUN /tmp/adduser_fpsdk.sh && rm -rf /tmp/adduser_fpsdk* # # Install pre-commit hooks (fpsdk user) # COPY .pre-commit-config.yaml /tmp # COPY docker/scripts/install_precommithooks.sh /tmp # RUN sudo -u fpsdk /tmp/install_precommithooks.sh && rm -f /tmp/install_precommithooks.sh /tmp/.pre-commit-config.yaml -# Install git-bash-prompt (fpsdk user) -COPY .devcontainer/fpsdk.bgptheme /tmp -COPY docker/scripts/install_gitbashprompt.sh /tmp -RUN sudo -u fpsdk /tmp/install_gitbashprompt.sh && rm -f /tmp/install_gitbashprompt.sh /tmp/.devcontainer/fpsdk.bgptheme - -# Set timezone, sane language and locale -ENV TZ=Europe/Zurich -ENV LANG=en_GB.UTF-8 -ENV LANGUAGE=en_GB -ENV LC_ALL=C.UTF-8 -COPY docker/scripts/install_locales.sh /tmp -RUN /tmp/install_locales.sh && rm -f /tmp/install_locales.sh - # Install mcap COPY docker/scripts/install_mcap.sh /tmp RUN /tmp/install_mcap.sh && rm -f /tmp/install_mcap.sh diff --git a/docker/Dockerfile.trixie-base b/docker/Dockerfile.trixie-base index ac72fa5f..f1d8aa7e 100644 --- a/docker/Dockerfile.trixie-base +++ b/docker/Dockerfile.trixie-base @@ -22,6 +22,14 @@ ENV ROS_DISTRO= COPY docker/scripts/install_apt_base.sh /tmp RUN /tmp/install_apt_base.sh && rm -f /tmp/install_apt_base.sh +# Set timezone, sane language and locale +ENV TZ=Europe/Zurich +ENV LANG=en_GB.UTF-8 +ENV LANGUAGE=en_GB +ENV LC_ALL=C.UTF-8 +COPY docker/scripts/install_locales.sh /tmp +RUN /tmp/install_locales.sh && rm -f /tmp/install_locales.sh + # Download, build and install Doxygen COPY docker/scripts/install_doxygen.sh /tmp RUN /tmp/install_doxygen.sh && rm -f /tmp/install_doxygen.sh diff --git a/docker/Dockerfile.trixie-dev b/docker/Dockerfile.trixie-dev index 84127292..dcb39260 100644 --- a/docker/Dockerfile.trixie-dev +++ b/docker/Dockerfile.trixie-dev @@ -18,26 +18,14 @@ ENV FPSDK_IMAGE=trixie-dev # Add user for devcontainer, see ../.devcontainer/devcontainer.json COPY docker/scripts/adduser_fpsdk.sh /tmp -RUN /tmp/adduser_fpsdk.sh && rm -f /tmp/adduser_fpsdk.sh +COPY docker/scripts/adduser_fpsdk /tmp/adduser_fpsdk +RUN /tmp/adduser_fpsdk.sh && rm -rf /tmp/adduser_fpsdk* # Install pre-commit hooks (fpsdk user) COPY .pre-commit-config.yaml /tmp COPY docker/scripts/install_precommithooks.sh /tmp RUN sudo -u fpsdk /tmp/install_precommithooks.sh && rm -f /tmp/install_precommithooks.sh /tmp/.pre-commit-config.yaml -# Install git-bash-prompt (fpsdk user) -COPY .devcontainer/fpsdk.bgptheme /tmp -COPY docker/scripts/install_gitbashprompt.sh /tmp -RUN sudo -u fpsdk /tmp/install_gitbashprompt.sh && rm -f /tmp/install_gitbashprompt.sh /tmp/.devcontainer/fpsdk.bgptheme - -# Set timezone, sane language and locale -ENV TZ=Europe/Zurich -ENV LANG=en_GB.UTF-8 -ENV LANGUAGE=en_GB -ENV LC_ALL=C.UTF-8 -COPY docker/scripts/install_locales.sh /tmp -RUN /tmp/install_locales.sh && rm -f /tmp/install_locales.sh - # Install mcap COPY docker/scripts/install_mcap.sh /tmp RUN /tmp/install_mcap.sh && rm -f /tmp/install_mcap.sh diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index 8a8a2039..7eeedd6c 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -42,14 +42,12 @@ services: trixie-dev: image: ghcr.io/fixposition/fixposition-sdk:trixie-dev volumes: - # Bash config - - ../.devcontainer/.bashrc:/home/fpsdk/.bashrc - - ../.devcontainer/.bash_logout:/home/fpsdk/.bash_logout - # Persistent stuff - - ../.devcontainer/.bash_history.d:/home/fpsdk/.bash_history.d - - ../.devcontainer/.vscode-server:/home/fpsdk/.vscode-server - - ../.devcontainer/.claude:/home/fpsdk/.claude - - ../.devcontainer/.local:/home/fpsdk/.local + # Persistent stuff, see .devcontainer/helper.sh + - ../.devcontainer/.persist/.bash_history.d:/home/fpsdk/.bash_history.d + - ../.devcontainer/.persist/.vscode-server:/home/fpsdk/.vscode-server + - ../.devcontainer/.persist/.claude:/home/fpsdk/.claude + - ../.devcontainer/.persist/.claude.json:/home/fpsdk/.claude.json + - ../.devcontainer/.persist/.local:/home/fpsdk/.local # Workspace - ../.:/home/fpsdk/fixposition-sdk cap_add: @@ -93,12 +91,11 @@ services: noetic-dev: image: ghcr.io/fixposition/fixposition-sdk:noetic-dev volumes: - - ../.devcontainer/.bashrc:/home/fpsdk/.bashrc - - ../.devcontainer/.bash_logout:/home/fpsdk/.bash_logout - - ../.devcontainer/.bash_history.d:/home/fpsdk/.bash_history.d - - ../.devcontainer/.vscode-server:/home/fpsdk/.vscode-server - - ../.devcontainer/.claude:/home/fpsdk/.claude - - ../.devcontainer/.local:/home/fpsdk/.local + - ../.devcontainer/.persist/.bash_history.d:/home/fpsdk/.bash_history.d + - ../.devcontainer/.persist/.vscode-server:/home/fpsdk/.vscode-server + - ../.devcontainer/.persist/.claude:/home/fpsdk/.claude + - ../.devcontainer/.persist/.claude.json:/home/fpsdk/.claude.json + - ../.devcontainer/.persist/.local:/home/fpsdk/.local - ../.:/home/fpsdk/fixposition-sdk cap_add: - SYS_PTRACE @@ -140,12 +137,11 @@ services: humble-dev: image: ghcr.io/fixposition/fixposition-sdk:humble-dev volumes: - - ../.devcontainer/.bashrc:/home/fpsdk/.bashrc - - ../.devcontainer/.bash_logout:/home/fpsdk/.bash_logout - - ../.devcontainer/.bash_history.d:/home/fpsdk/.bash_history.d - - ../.devcontainer/.vscode-server:/home/fpsdk/.vscode-server - - ../.devcontainer/.claude:/home/fpsdk/.claude - - ../.devcontainer/.local:/home/fpsdk/.local + - ../.devcontainer/.persist/.bash_history.d:/home/fpsdk/.bash_history.d + - ../.devcontainer/.persist/.vscode-server:/home/fpsdk/.vscode-server + - ../.devcontainer/.persist/.claude:/home/fpsdk/.claude + - ../.devcontainer/.persist/.claude.json:/home/fpsdk/.claude.json + - ../.devcontainer/.persist/.local:/home/fpsdk/.local - ../.:/home/fpsdk/fixposition-sdk cap_add: - SYS_PTRACE @@ -184,12 +180,11 @@ services: jazzy-dev: image: ghcr.io/fixposition/fixposition-sdk:jazzy-dev volumes: - - ../.devcontainer/.bashrc:/home/fpsdk/.bashrc - - ../.devcontainer/.bash_logout:/home/fpsdk/.bash_logout - - ../.devcontainer/.bash_history.d:/home/fpsdk/.bash_history.d - - ../.devcontainer/.vscode-server:/home/fpsdk/.vscode-server - - ../.devcontainer/.claude:/home/fpsdk/.claude - - ../.devcontainer/.local:/home/fpsdk/.local + - ../.devcontainer/.persist/.bash_history.d:/home/fpsdk/.bash_history.d + - ../.devcontainer/.persist/.vscode-server:/home/fpsdk/.vscode-server + - ../.devcontainer/.persist/.claude:/home/fpsdk/.claude + - ../.devcontainer/.persist/.claude.json:/home/fpsdk/.claude.json + - ../.devcontainer/.persist/.local:/home/fpsdk/.local - ../.:/home/fpsdk/fixposition-sdk cap_add: - SYS_PTRACE @@ -228,11 +223,10 @@ services: lyrical-dev: image: ghcr.io/fixposition/fixposition-sdk:lyrical-dev volumes: - - ../.devcontainer/.bashrc:/home/fpsdk/.bashrc - - ../.devcontainer/.bash_logout:/home/fpsdk/.bash_logout - ../.devcontainer/.bash_history.d:/home/fpsdk/.bash_history.d - ../.devcontainer/.vscode-server:/home/fpsdk/.vscode-server - ../.devcontainer/.claude:/home/fpsdk/.claude + - ../.devcontainer/.claude.json:/home/fpsdk/.claude.json - ../.devcontainer/.local:/home/fpsdk/.local - ../.:/home/fpsdk/fixposition-sdk cap_add: diff --git a/docker/scripts/adduser_fpsdk.sh b/docker/scripts/adduser_fpsdk.sh index 59c2d81f..8e55deb2 100755 --- a/docker/scripts/adduser_fpsdk.sh +++ b/docker/scripts/adduser_fpsdk.sh @@ -13,21 +13,18 @@ # ######################################################################################################################## set -eEu -# -# We deliberately use UID and GID 1000 as that is typically the first user on any (Debian/Ubuntu) -# system. Since we want to use vscode's devcontainer remoteUser/updateRemoteUserUID feature, we want -# to make sure that the the host system's user UID/GID (which very likely is 1000:1000, too) can be -# mapped to the fpsdk user inside the container. However, the base image (hello, Ubuntu Noble!) may -# already have a "user 1000", in which case we wipe that one and take its place. - -if id 1000; then - deluser --remove-home $(id -un 1000) -fi -addgroup --gid 1000 fpsdk -adduser --uid 1000 --gid 1000 fpsdk +groupadd -g 12345 fpsdk +useradd -m -u 12345 -g 12345 -s /bin/bash fpsdk echo "fpsdk ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/fpsdk chmod 0440 /etc/sudoers.d/fpsdk +sudo -u fpsdk cp /tmp/adduser_fpsdk/.bashrc /tmp/adduser_fpsdk/.bash_logout /home/fpsdk/ + +sudo -u fpsdk git clone https://github.com/magicmonty/bash-git-prompt.git /home/fpsdk/.bash-git-prompt +sudo -u fpsdk git -C /home/fpsdk/.bash-git-prompt checkout 51080c22b2cebb63111379f4eacd22cda199684b +cp /tmp/adduser_fpsdk/fpsdk.bgptheme /home/fpsdk/.bash-git-prompt/themes + + ######################################################################################################################## diff --git a/.devcontainer/.bash_logout b/docker/scripts/adduser_fpsdk/.bash_logout similarity index 100% rename from .devcontainer/.bash_logout rename to docker/scripts/adduser_fpsdk/.bash_logout diff --git a/.devcontainer/.bashrc b/docker/scripts/adduser_fpsdk/.bashrc similarity index 100% rename from .devcontainer/.bashrc rename to docker/scripts/adduser_fpsdk/.bashrc diff --git a/.devcontainer/fpsdk.bgptheme b/docker/scripts/adduser_fpsdk/fpsdk.bgptheme similarity index 100% rename from .devcontainer/fpsdk.bgptheme rename to docker/scripts/adduser_fpsdk/fpsdk.bgptheme diff --git a/docker/scripts/install_apt_base.sh b/docker/scripts/install_apt_base.sh index 9a845893..e011268d 100755 --- a/docker/scripts/install_apt_base.sh +++ b/docker/scripts/install_apt_base.sh @@ -52,6 +52,7 @@ packages=$(awk -v filt=${FPSDK_IMAGE%-*} '$1 ~ filt { print $2 }' < /etc/locale.gen +echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen +locale-gen en_GB.UTF-8 en_US.UTF-8 +update-locale LANG=en_GB.UTF-8 + ln -snf /usr/share/zoneinfo/$TZ /etc/localtime -echo $TZ > /etc/timezone -sed -i '/en_GB.UTF-8/s/^# //g' /etc/locale.gen -locale-gen ######################################################################################################################## diff --git a/fpsdk.code-workspace b/fpsdk.code-workspace index a34aa09d..6c311895 100644 --- a/fpsdk.code-workspace +++ b/fpsdk.code-workspace @@ -26,8 +26,7 @@ ".vscode-cache": true, "**/*~": true, ".vstags": true, - "core": true, - ".devcontainer/.vscode-server/**": true + "core": true }, // Exclude things from search (this automatically uses files.exclude + what you add here) "search.exclude": { @@ -38,8 +37,7 @@ "build/**": true, "install/**": true, "ws/**": true, - ".devcontainer/.vscode-server/**": true, - ".devcontainer/.bash_history.d/history": true, + ".devcontainer/.persist/**": true }, // Exclude some things from the files watcher "files.watcherExclude": { @@ -74,7 +72,7 @@ "C_Cpp.default.browse.limitSymbolsToIncludedHeaders": false, //"C_Cpp.clang_format_style": "{ BasedOnStyle: Google, IndentWidth: 4, ColumnLimit: 120 }", "C_Cpp.files.exclude": { - ".devcontainer/.vscode-server/**": true + ".devcontainer/.persist/**": true }, "editor.formatOnSave": false, From 8bf571b87384c921ac6f220910227c7c93eabbcb Mon Sep 17 00:00:00 2001 From: flipflip Date: Wed, 28 Oct 2026 08:53:07 +0100 Subject: [PATCH 2/3] update logo --- fpsdk_doc/Doxyfile | 2 +- fpsdk_doc/fpsdk_doc.hpp | 3 +++ fpsdk_doc/logox.png | Bin 0 -> 1611 bytes 3 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 fpsdk_doc/logox.png diff --git a/fpsdk_doc/Doxyfile b/fpsdk_doc/Doxyfile index a943ccde..01a76869 100644 --- a/fpsdk_doc/Doxyfile +++ b/fpsdk_doc/Doxyfile @@ -61,7 +61,7 @@ PROJECT_BRIEF = "Collection of c++ libraries and apps for use with Fixp # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. -PROJECT_LOGO = fpsdk_doc/logo.png +PROJECT_LOGO = fpsdk_doc/logox.png # With the PROJECT_ICON tag one can specify an icon that is included in the tabs # when the HTML document is shown. Doxygen will copy the logo to the output diff --git a/fpsdk_doc/fpsdk_doc.hpp b/fpsdk_doc/fpsdk_doc.hpp index c8e289bc..f0519894 100644 --- a/fpsdk_doc/fpsdk_doc.hpp +++ b/fpsdk_doc/fpsdk_doc.hpp @@ -24,8 +24,11 @@ namespace fpsdk { /*! @mainpage + @image html logo.png + @section FPSDK_OVERVIEW Overview + The Fixposition SDK provides building blocks to write apps to use with Fixposition products, namely the Vision-RTK 2 sensor. Some apps to test and demponstrate some of the functionality are included. Some examples are provided to demonstrate the suggested use of some of the functionality. diff --git a/fpsdk_doc/logox.png b/fpsdk_doc/logox.png new file mode 100644 index 0000000000000000000000000000000000000000..14476a40a44c6b53dd38704f6c8c4eb415fed1e1 GIT binary patch literal 1611 zcmV-R2DJH!P)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBU%$w@>(RA}Danp=z%MHGg=8g^L$gNTNTA_CC{f$*T<_U?l2iUARj zO8{4SkW0V|A`x$iF@YfZpaH?eONf!%1D6c~ibPOASOYsHS$yzMERF$lNF=H}*XeM@ zkaL}@NF=I&r&5`l2yFLUr^^*Ut_!e3IFVkOcLV!9*SWb3lj{NO7cQg-{+MRdPe=}I zgX9JRHNqiW-oUCjE_BWa&v*T5^Fk^X=B#|s0+p=ecF*s?gGkve7&LC z6+G8%|Dj}SAa=a0ze=7zyBK)JXSf=r?$z9z*aGBkkd<;+fXTc}a=sZ%bGQH8R_T#3^3^meCD~%xF#ew z4%jL8^1}&WqQpwB8AKa<6nGd&1ekOHHhHe|WD}5k0@x(?@IwNaqK!S0%}=Nf)W&`a z%n$MLmghRJ=8@bhz&j!FEzrhp5A&rW-LR~m;{3TSz}OJe)hIPf$Lr2EidadXLXyel z!1NH)t;7n(>6-AyL*?*PuK^AKPKfCaV3IcWRE}Be1Z)IGhM4{U4A#c}6~(X0F^B;` z9Jo5f^Z@WcdPfoBR|6jb#UZArfl_Vk*HL56=`1EddHCT@pvH5ZTO*LWMRZ(o1iv$L zA(u13H07~0f@yErE8Q&Qiba9x}XtcR#ROY{F2D zQqMOk)XP}PHBcL%JTh?(cuX6+LavC3u9IsY0#-!~{2t}qx-<=WK!+dQi%$z>7A9Ru#lBq!U=9vTj4k45m~ zLh{XK$)M*tQ>DDZa0nPBiX@xAo+4)ZMesR88@sZ}2zst_yNJ)Q7d88&RXY*U@3qpZ z4Gl3pBNb7b_Y(D7rz`M51ag~!;Zey+xt;(TLB%EmZ-}(xBoM`OUqvMAY+Sob3iy@{X zNG2BLWe$3-Ggg*!m8IKwR2#dBJVF+;_khAIjl%?O?1zmeC~~J3=$u8LP1MHjXre=> z)V%DJWse=KjkP%w6oqYo0YN6f=v-E`Mv@!^Yy)(F$#+1pHuiL`bMXBv0sS-Rxz0`Ez>nMtlp5bsPfRgQ5`j zNWEv`Wo_&NS`j?gS&09EbR1MgN_nJZFuBx++<9PDYa=JwTma0H7}HTAYUlq9dam;b zu-d1wt<=VDr4_?-oiQ@4I%W(_*T$|=0Se&{Q3G+>0OV-$W8nIX1PzS=RT<=t$~Mp@ z$Vs^x*+!0JD37WbkpAh`L7+?*`fu(RARo{{YAk1>xj`947z(002ov JPDHLkV1gqM=tKYj literal 0 HcmV?d00001 From d8a681601bed9a041c6021c96227b49de78f4c69 Mon Sep 17 00:00:00 2001 From: flipflip Date: Wed, 28 Oct 2026 09:05:41 +0100 Subject: [PATCH 3/3] codenazi --- docker/scripts/adduser_fpsdk/.bashrc | 1 - docker/scripts/adduser_fpsdk/fpsdk.bgptheme | 7 +++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/docker/scripts/adduser_fpsdk/.bashrc b/docker/scripts/adduser_fpsdk/.bashrc index c5aa8b77..812ba311 100644 --- a/docker/scripts/adduser_fpsdk/.bashrc +++ b/docker/scripts/adduser_fpsdk/.bashrc @@ -173,4 +173,3 @@ if [ -n "${ROS_DISTRO}" ]; then esac fi - diff --git a/docker/scripts/adduser_fpsdk/fpsdk.bgptheme b/docker/scripts/adduser_fpsdk/fpsdk.bgptheme index 194b2b9e..b612acf5 100644 --- a/docker/scripts/adduser_fpsdk/fpsdk.bgptheme +++ b/docker/scripts/adduser_fpsdk/fpsdk.bgptheme @@ -38,7 +38,7 @@ override_git_prompt_colors() # GIT_PROMPT_CLEAN="${BoldGreen}✔" # a colored flag indicating a "clean" repo GIT_PROMPT_CLEAN="${Green}♥" # a colored flag indicating a "clean" repo - ## For the command indicator, the placeholder _LAST_COMMAND_STATE_ + ## For the command indicator, the placeholder _LAST_COMMAND_STATE_ ## will be replaced with the exit code of the last command ## e.g. ## GIT_PROMPT_COMMAND_OK="${Green}✔-_LAST_COMMAND_STATE_ " # indicator if the last command returned with an exit code of 0 @@ -48,7 +48,7 @@ override_git_prompt_colors() # GIT_PROMPT_COMMAND_FAIL="${Red}✘-_LAST_COMMAND_STATE_" # indicator if the last command returned with an exit code of other than 0 ## template for displaying the current virtual environment - ## use the placeholder _VIRTUALENV_ will be replaced with + ## use the placeholder _VIRTUALENV_ will be replaced with ## the name of the current virtual environment (currently CONDA and VIRTUAL_ENV) # GIT_PROMPT_VIRTUALENV="(${Blue}_VIRTUALENV_${ResetColor}) " @@ -72,8 +72,7 @@ override_git_prompt_colors() # GIT_PROMPT_SYMBOLS_AHEAD="↑·" # The symbol for "n versions ahead of origin" # GIT_PROMPT_SYMBOLS_BEHIND="↓·" # The symbol for "n versions behind of origin" # GIT_PROMPT_SYMBOLS_PREHASH=":" # Written before hash of commit, if no name could be found - # GIT_PROMPT_SYMBOLS_NO_REMOTE_TRACKING="L" # This symbol is written after the branch, if the branch is not tracked + # GIT_PROMPT_SYMBOLS_NO_REMOTE_TRACKING="L" # This symbol is written after the branch, if the branch is not tracked } reload_git_prompt_colors "fpsdk" -