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 99% rename from .devcontainer/.bashrc rename to docker/scripts/adduser_fpsdk/.bashrc index c5aa8b77..812ba311 100644 --- a/.devcontainer/.bashrc +++ b/docker/scripts/adduser_fpsdk/.bashrc @@ -173,4 +173,3 @@ if [ -n "${ROS_DISTRO}" ]; then esac fi - diff --git a/.devcontainer/fpsdk.bgptheme b/docker/scripts/adduser_fpsdk/fpsdk.bgptheme similarity index 96% rename from .devcontainer/fpsdk.bgptheme rename to docker/scripts/adduser_fpsdk/fpsdk.bgptheme index 194b2b9e..b612acf5 100644 --- a/.devcontainer/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" - 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, 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 00000000..14476a40 Binary files /dev/null and b/fpsdk_doc/logox.png differ