diff --git a/.devcontainer/.gitignore b/.devcontainer/.gitignore new file mode 100644 index 0000000000..1f8ec242b8 --- /dev/null +++ b/.devcontainer/.gitignore @@ -0,0 +1 @@ +.Xauthority \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index c2d26fb9a7..7c4d53960e 100755 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -5,6 +5,7 @@ }, "postCreateCommand": "bash -c 'if [[ $DISPLAY == *xquartz* ]]; then echo \"export DISPLAY=host.docker.internal:0\" >> /root/.bashrc; fi'", "postStartCommand": "git config --file .gitmodules --get-regexp path | awk '{ print $2 }' | xargs -I{} git config --global --add safe.directory \"$PWD/{}\"", + "initializeCommand": ".devcontainer/setup_host.sh", "privileged": true, "containerEnv": { "DISPLAY": "${localEnv:DISPLAY}", @@ -13,7 +14,7 @@ }, "runArgs": [ "--volume=/tmp/.X11-unix:/tmp/.X11-unix", - "--volume=${localEnv:XAUTHORITY}:/root/.Xauthority", + "--volume=${localWorkspaceFolder}/.devcontainer/.Xauthority:/root/.Xauthority", "--volume=${localEnv:HOME}/.comma:/root/.comma", "--volume=/tmp/comma_download_cache:/tmp/comma_download_cache", "--volume=/tmp/devcontainer_scons_cache:/tmp/scons_cache", diff --git a/.devcontainer/setup_host.sh b/.devcontainer/setup_host.sh new file mode 100755 index 0000000000..5c3c5e900c --- /dev/null +++ b/.devcontainer/setup_host.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +# setup links to Xauthority +XAUTHORITY_LINK=".devcontainer/.Xauthority" +rm -f $XAUTHORITY_LINK +if [[ -z $XAUTHORITY ]]; then + echo "XAUTHORITY not set. Fallback to ~/.Xauthority ..." + if ! [[ -f $HOME/.Xauthority ]]; then + echo "~/.XAuthority file does not exist. GUI tools may not work properly." + touch $XAUTHORITY_LINK # dummy file to satisfy container volume mount + else + ln -sf $HOME/.Xauthority $XAUTHORITY_LINK + fi +else + ln -sf $XAUTHORITY $XAUTHORITY_LINK +fi diff --git a/.github/workflows/tools_tests.yaml b/.github/workflows/tools_tests.yaml index dff2a4b04d..04f73d21af 100644 --- a/.github/workflows/tools_tests.yaml +++ b/.github/workflows/tools_tests.yaml @@ -105,8 +105,6 @@ jobs: - name: Build dev container image run: devcontainer build --workspace-folder . - name: Run dev container - run: | - export XAUTHORITY="$HOME/.Xauthority" - devcontainer up --workspace-folder . + run: devcontainer up --workspace-folder . - name: Test environment run: devcontainer exec --workspace-folder . scons --dry-run