Skip to content
Snippets Groups Projects
Commit 1ade4830 authored by Daan De Meyer's avatar Daan De Meyer Committed by Luca Boccassi
Browse files

mkosi: Add back support for running clangd within mkosi

This allows hacking on systemd without installing any build
dependencies except mkosi on the host machine.

(cherry picked from commit 6d862a9d)
parent 528cd7dc
No related branches found
No related tags found
No related merge requests found
......@@ -380,3 +380,19 @@ To debug systemd-boot in an IDE such as VSCode we can use a launch configuration
]
}
```
## mkosi + clangd
[clangd](https://clangd.llvm.org/) is a language server that provides code completion, diagnostics and more
right in your editor of choice (with the right plugin installed). When using mkosi, we can run clangd in the
mkosi build container to avoid needing to build systemd on the host machine just to make clangd work.
All that is required is to run `mkosi` once to make sure cached images are available and to modify the path of the
clangd binary used by your editor to the `mkosi.clangd` script included in the systemd repository. For example, for
VScode, you'd have to add the following to the VSCode workspace settings of the systemd repository:
```json
{
"clangd.path": "<path-to-systemd-repository>/mkosi.clangd",
}
```
#!/bin/bash
# SPDX-License-Identifier: LGPL-2.1-or-later
MKOSI_CONFIG="$(mkosi --json summary | jq -r .Images[-1])"
DISTRIBUTION="$(jq -r .Distribution <<< "$MKOSI_CONFIG")"
RELEASE="$(jq -r .Release <<< "$MKOSI_CONFIG")"
ARCH="$(jq -r .Architecture <<< "$MKOSI_CONFIG")"
exec mkosi \
--incremental=strict \
--format=none \
build \
clangd \
--compile-commands-dir=/work/build \
--path-mappings="\
$(pwd)=/work/src,\
$(pwd)/build/mkosi.builddir/$DISTRIBUTION~$RELEASE~$ARCH/=/work/build,\
$(pwd)/build/mkosi.cache/$DISTRIBUTION~$RELEASE~$ARCH~build.cache/usr/include/=/usr/include" \
"$@"
......@@ -2,6 +2,10 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e
if [[ "$1" == "clangd" ]]; then
exec "$@"
fi
if [[ ! -f "pkg/$PKG_SUBDIR/PKGBUILD" ]]; then
echo "PKGBUILD not found at pkg/$PKG_SUBDIR/PKGBUILD, run mkosi once with -ff to make sure the PKGBUILD is cloned" >&2
exit 1
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment