meson
meson copied to clipboard
`qt.preprocess` does not handle resource renaming well
Describe the bug
When a file is renamed that is referenced from a qrc file, ninja exits with an error: "missing and no known rule to make it".
To Reproduce
$ cat > meson.build <<EOF
project('repro', ['cpp'])
qt6 = import('qt6')
qt6_dep = dependency('qt6', modules: ['Core'])
qres = qt6.preprocess(qresources: ['a.qrc'])
executable('main', 'main.cpp', qres, dependencies: qt6_dep)
EOF
$ cat > a.qrc <<EOF
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>test.txt</file>
</qresource>
</RCC>
EOF
$ cat > main.cpp <<EOF
int main() { }
EOF
$ touch test.txt
$ meson setup build
$ meson compile -C build
# this works
$ mv test.txt test2.txt # rename file
$ sed -i 's/test.txt/test2.txt/' a.qrc
$ meson compile -C build
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /usr/bin/ninja -C /tmp/asd2/build
ninja: Entering directory `/tmp/asd2/build'
ninja: error: '/tmp/asd2/test.txt', needed by 'qt6-a_qrc.cpp', missing and no known rule to make it
Expected behavior
The build finishes correctly.
system parameters
- native build
- Linux
- python 3.13
- meson 1.9.2
- ninja 1.13.2