make buildworld broken at r317821 (libsysdecode)
Kyle Evans
kevans91 at ksu.edu
Fri May 5 14:31:10 UTC 2017
On May 5, 2017 8:39 AM, "Dimitry Andric" <dim at freebsd.org> wrote:
On 5 May 2017, at 11:31, Vladimir Zakharov <zakharov.vv at gmail.com> wrote:
>
> Cannot build world due to error in compiling lib/libsysdecode.
...
> --- all_subdir_lib/libsysdecode ---
> ioctl.c:30:10: fatal error: 'cam/cam_compat.h:#define' file not found
> #include <cam/cam_compat.h:#define>
> ^~~~~~~~~~~~~~~~~~~~~~~~~~
...
> $ cat /etc/src.conf
...
> WITH_BSD_GREP=
This appears to be caused by bsdgrep. :-/ The build for lib/libsysdecode
uses a shell script, mkioctls, to generate a ioctl.c file at build time.
This script contains the following fragment:
ioctl_includes=$(
cd $includedir
find -H -s * -name '*.h' | \
egrep -v '(.*disk.*|net/pfvar|net/if_pfsync)\.h' | \
xargs egrep -l \
'^#[ ]*define[ ]+[A-Za-z_][A-Za-z0-9_]*[ ]+_IO[^a-z0-9_]' |
awk '{printf("#include <%s>\\n", $1)}'
)
The idea is that all headers are searched for defines of ioctl macros,
which start with _IO. The -l option to egrep is used to print only the
matching filenames, not the matched content itself.
However, this option seems to be broken in bsdgrep, as it *does* display
the matched content:
$ gnugrep -l printf /usr/include/stdio.h
/usr/include/stdio.h
$ bsdgrep -l printf /usr/include/stdio.h
#define __SSTR 0x0200 /* this is an sprintf/snprintf string */
/usr/include/stdio.h
I did a quick check, and this option seems to have been accidentally
broken by r317703 [1] ("bsdgrep: fix -w flag matching with an empty
pattern").
Ed, Kyle, any idea where the problem might be?
-Dimitry
[1] https://svnweb.freebsd.org/base?view=revision&revision=317703
Hi,
This is addressed by https://reviews.freebsd.org/D10607
Thanks!
Kyle Evans
More information about the freebsd-current
mailing list