mirror of
https://github.com/systemd/systemd.git
synced 2024-11-27 04:03:36 +08:00
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 6d862a9dc0
)
This commit is contained in:
parent
528cd7dc84
commit
1ade483044
@ -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",
|
||||
}
|
||||
```
|
||||
|
20
mkosi.clangd
Executable file
20
mkosi.clangd
Executable file
@ -0,0 +1,20 @@
|
||||
#!/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
|
||||
|
Loading…
Reference in New Issue
Block a user