Post by Bruno HaiblePost by Kamil Dudkaparse-datetime.c generated out of parse-datetime.y ends up in the source
directory, instead of the build directory as one would expect. This was
http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=6c680191
Neither the comment, nor the change log entry explains why it is desired.
For gnulib, you sometimes need to look up in the mailing list archive to get
the complete discussion.
Ideally yes. But the commit contains no reference to that discussion and the
discussion contains no reference to that commit. Are you expecting people to
look it up by date and/or by names of the people who suggested it?
Post by Bruno HaibleIn this case, the essential mail was
https://lists.gnu.org/archive/html/bug-gnulib/2010-04/msg00488.html
which referenced
https://lists.gnu.org/archive/html/bug-gnulib/2009-05/msg00061.html
Post by Kamil DudkaAs far as I know, the build should work even if the source directory is
on a read-only file system.
... *only* if the source directory contains a complete, unmodified tarballs
contents. But when a .y.c rule needs to be run, you must have modified the
.y file, or the timestamps are wrong. You can't build off a read-only source
directory in this case.
OK. I did not realise that the distribution tarball already contained bison's
output file. In fact, bison does not run during the build of coreutils in
Fedora. But even if I touch lib/parse-datetime.y to force bison to run, it
has no effect on the missing debuginfo.
Post by Bruno HaibleThe most important use-case of Makefiles are the developer's working
directory. The use-case with a read-only source directory is only a corner
case; in case of conflict with the important use-case, it's the important
use-case which wins.
Post by Kamil DudkaMoreover, this oddity seems to cause problems to the debug info extractor
https://bugzilla.redhat.com/1555079
I don't know how the debug info extractor works,
Nor do I.
Post by Bruno Haiblebut you make it sound like
it would ignore source files in $srcdir - which would not be right.
Other source files are captured just fine. The only problem is that it
expects parse-datetime.{c,y} to be in build directories, instead of the
source directory. It could be confused by the #line directives that bison
produces.
A full build log is available at:
https://kojipkgs.fedoraproject.org//packages/coreutils/8.29/6.fc29/data/logs/x86_64/build.log
The related part looks like this:
+ /usr/lib/rpm/find-debuginfo.sh -j6 --strict-build-id -m -i --build-id-seed 8.29-6.fc29 --unique-debug-suffix -8.29-6.fc29.x86_64 --unique-debug-src-base coreutils-8.29-6.fc29.x86_64 --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 110000000 -S debugsourcefiles.list /builddir/build/BUILD/coreutils-8.29
extracting debug info from /builddir/build/BUILDROOT/coreutils-8.29-6.fc29.x86_64/usr/sbin/chroot
extracting debug info from /builddir/build/BUILDROOT/coreutils-8.29-6.fc29.x86_64/usr/bin/coreutils.single
extracting debug info from /builddir/build/BUILDROOT/coreutils-8.29-6.fc29.x86_64/usr/libexec/coreutils/libstdbuf.so
extracting debug info from /builddir/build/BUILDROOT/coreutils-8.29-6.fc29.x86_64/usr/bin/stty
extracting debug info from /builddir/build/BUILDROOT/coreutils-8.29-6.fc29.x86_64/usr/libexec/coreutils/libstdbuf.so.single
[...]
extracting debug info from /builddir/build/BUILDROOT/coreutils-8.29-6.fc29.x86_64/usr/bin/expand
/usr/lib/rpm/sepdebugcrcfix: Updated 107 CRC32s, 0 CRC32s did match.
cpio: separate/parse-datetime.c: Cannot stat: No such file or directory
cpio: separate/parse-datetime.y: Cannot stat: No such file or directory
cpio: single/parse-datetime.c: Cannot stat: No such file or directory
cpio: single/parse-datetime.y: Cannot stat: No such file or directory
10371 blocks
If I hard-link parse-datetime.{c,y} from the source directory to the build
directories before the debug info extractor is started, it seems to work as
expected. Those files are included in the debuginfo package and gdb is able
to find them when the debuginfo package is installed.
Kamil