#976175 blhc: false positive "NONVERBOSE BUILD" for waf-builds

Package:
blhc
Source:
blhc
Submitter:
IOhannes m zmoelnig
Date:
2024-12-07 17:33:02 UTC
Severity:
normal
#976175#5
Date:
2020-11-30 21:06:59 UTC
From:
To:
Dear Maintainer,

the blhc pipeline on salsa fails for me, with a "NONVERBOSE BUILD" error
message.

https://salsa.debian.org/multimedia-team/ardour/-/jobs/1188803

E.g. it reports an error like:

However, the build is indeed verbose, but as the build-system of the package in
question is WAF, the compiler/linker flags are output as python lists (that are
used to build the actual command) rather than the command itself.

E.g.

```sh
$ sed -n '20288,+1p' debian/output/ardour_6.5.0+ds0-1+salsaci_amd64.build
[ 763/1064] Compiling gtk2_ardour/vca_master_strip.cc
23:24:09 runner ['/usr/lib/ccache/g++', '-I/builds/multimedia-team/ardour/debian/output/source_dir', '-g', '-O2', '-fdebug-prefix-map=/builds/multimedia-team/ardour/debian/output/source_dir=.', '-fstack-protector-strong', '-Wformat', '-Werror=format-security', '-I/usr/include/qm-dsp', '-DHAVE_RF64_RIFF', '-DWAF_BUILD', '-DNDEBUG', '-fshow-column', '-O3', '-fomit-frame-pointer', '-ffast-math', '-fstrength-reduce', '-pipe', '-DARCH_X86', '-mmmx', '-msse', '-mfpmath=sse', '-DUSE_XMMINTRIN', '-DBUILD_SSE_OPTIMIZATIONS', '-DLXVST_64BIT', '-Wall', '-Wpointer-arith', '-Wcast-qual', '-Wcast-align', '-Wno-unused-parameter', '-DBOOST_SYSTEM_NO_DEPRECATED', '-D_ISOC9X_SOURCE', '-D_LARGEFILE64_SOURCE', '-D_FILE_OFFSET_BITS=64', '-DPROGRAM_NAME="Ardour"', '-DPROGRAM_VERSION="6"', '-std=c++11', '-DBOOST_NO_AUTO_PTR', '-Woverloaded-virtual', '-Wno-unused-local-typedefs', '-D__STDC_LIMIT_MACROS', '-D__STDC_FORMAT_MACROS', '-DCANVAS_COMPATIBILITY', '-DCANVAS_DEBUG', '-DBOOST_ERROR_CODE_HEADER_ONLY', '-pthread', '-pthread', '-pthread', '-pthread', '-pthread', '-pthread', '-pthread', '-Igtk2_ardour', '-I../gtk2_ardour', '-Ilibs', '-I../libs', '-Ilibs/vst3', '-I../libs/vst3', '-Ilibs/surfaces/control_protocol', '-I../libs/surfaces/control_protocol', '-Ilibs/surfaces/control_protocol/control_protocol', '-I../libs/surfaces/control_protocol/control_protocol', '-Ilibs/waveview', '-I../libs/waveview', '-Ilibs/ardour', '-I../libs/ardour', '-Ilibs/midi++2', '-I../libs/midi++2', '-Ilibs/evoral', '-I../libs/evoral', '-Ilibs/audiographer', '-I../libs/audiographer', '-Ilibs/audiographer/src', '-I../libs/audiographer/src', '-Ilibs/ptformat', '-I../libs/ptformat', '-Ilibs/canvas', '-I../libs/canvas', '-Ilibs/widgets', '-I../libs/widgets', '-Ilibs/gtkmm2ext', '-I../libs/gtkmm2ext', '-Ilibs/pbd', '-I../libs/pbd', '-Ilibs/evoral/libsmf', '-I../libs/evoral/libsmf', '-Ilibs/temporal', '-I../libs/temporal', '-Ilibs/lua', '-I../libs/lua', '-Ilibs/zita-resampler', '-I../libs/zita-resampler', '-Ilibs/zita-convolver', '-I../libs/zita-convolver', '-I/usr/include/uuid', '-I/usr/include/freetype2', '-I/usr/include/libpng16', '-I/usr/include/glibmm-2.4', '-I/usr/lib/x86_64-linux-gnu/glibmm-2.4/include', '-I/usr/include/glib-2.0', '-I/usr/lib/x86_64-linux-gnu/glib-2.0/include', '-I/usr/include/sigc++-2.0', '-I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include', '-I/usr/include/gtk-2.0', '-I/usr/lib/x86_64-linux-gnu/gtk-2.0/include', '-I/usr/include/pango-1.0', '-I/usr/include/atk-1.0', '-I/usr/include/gdk-pixbuf-2.0', '-I/usr/include/libmount', '-I/usr/include/blkid', '-I/usr/include/fribidi', '-I/usr/include/cairo', '-I/usr/include/pixman-1', '-I/usr/include/harfbuzz', '-I/usr/include/x86_64-linux-gnu', '-I/usr/include/gtkmm-2.4', '-I/usr/lib/x86_64-linux-gnu/gtkmm-2.4/include', '-I/usr/include/atkmm-1.6', '-I/usr/include/gtk-unix-print-2.0', '-I/usr/include/gdkmm-2.4', '-I/usr/lib/x86_64-linux-gnu/gdkmm-2.4/include', '-I/usr/include/giomm-2.4', '-I/usr/lib/x86_64-linux-gnu/giomm-2.4/include', '-I/usr/include/pangomm-1.4', '-I/usr/lib/x86_64-linux-gnu/pangomm-1.4/include', '-I/usr/include/cairomm-1.0', '-I/usr/lib/x86_64-linux-gnu/cairomm-1.0/include', '-I/usr/include/taglib', '-I/usr/include/libxml2', '-I/usr/include/lilv-0', '-I/usr/include/sratom-0', '-I/usr/include/sord-0', '-I/usr/include/serd-0', '-I/usr/include/raptor2', '-I/usr/include/suil-0', '-I/builds/multimedia-team/ardour/debian/output/source_dir/build', '-DINTERNAL_SHARED_LIBS=1', '-DUSE_EXTERNAL_LIBS=1', '-DHAVE_ALSA=1', '-DHAVE_PULSEAUDIO=1', '-DHAVE_GLIB=1', '-DHAVE_GTHREAD=1', '-DHAVE_GLIBMM=1', '-DHAVE_SNDFILE=1', '-DHAVE_GIOMM=1', '-DHAVE_CURL=1', '-DHAVE_ARCHIVE=1', '-DHAVE_LO=1', '-DHAVE_TAGLIB=1', '-DHAVE_VAMPSDK=1', '-DHAVE_VAMPHOSTSDK=1', '-DHAVE_RUBBERBAND=1', '-DEXPORT_VISIBILITY_HIDDEN=0', '-DENABLE_NLS=1', '-DLXVST_SUPPORT=1', '-DVST3_SUPPORT=1', '-DPTFORMAT=1', '-DCONFIG_ARCH="x86_64"', '-DHAVE_TOOLS_SANITY_CHECK=1', '-DHAVE_TOOLS_GCCABICHECK=1', '-DHAVE_LIBS_CLEARLOOKS_NEWER=1', '-DHAVE_LIBFLUIDSYNTH=1', '-DHAVE_LIBS_FLUIDSYNTH=1', '-DHAVE_HIDAPI=1', '-DHAVE_LIBS_HIDAPI=1', '-DHAVE_LIBLTC=1', '-DHAVE_LIBS_LIBLTC=1', '-DHAVE_LIBS_LUA=1', '-DHAVE_LIBS_PTFORMAT=1', '-DHAVE_BASE_PITCH_H=1', '-DHAVE_LIBS_QM_DSP=1', '-DHAVE_FFTW3F=1', '-DHAVE_AUBIO=1', '-DHAVE_AUBIO4=1', '-DHAVE_LIBS_VAMP_PLUGINS=1', '-DHAVE_LIBS_VAMP_PYIN=1', '-DHAVE_LIBS_ZITA_RESAMPLER=1', '-DHAVE_LIBS_ZITA_CONVOLVER=1', '-DHAVE_XML=1', '-DHAVE_SIGCPP=1', '-DHAVE_EXECINFO=1', '-DHAVE_POSIX_MEMALIGN=1', '-DHAVE_GETMNTENT=1', '-DHAVE_LOCALTIME_R=1', '-DHAVE_LIBS_PBD=1', '-DHAVE_LIBS_MIDIPP2=1', '-DHAVE_LIBS_EVORAL=1', '-DHAVE_USB=1', '-DHAVE_CWIID_H=1', '-DHAVE_BLUETOOTH_H=1', '-DHAVE_CWIID=1', '-DBUILD_WIIMOTE=1', '-DHAVE_WEBSOCKETS=1', '-DHAVE_CONTROL_PROTOCOL=1', '-DHAVE_FADERPORT=1', '-DHAVE_FADERPORT8=1', '-DHAVE_CC121=1', '-DHAVE_GENERIC_MIDI=1', '-DHAVE_MACKIE=1', '-DHAVE_US2400=1', '-DHAVE_LAUNCH_CONTROL_XL=1', '-DHAVE_PANGOMM=1', '-DHAVE_CAIROMM=1', '-DHAVE_PUSH2=1', '-DHAVE_CONTOURDESIGN=1', '-DHAVE_WIIMOTE=1', '-DHAVE_LIBS_SURFACES=1', '-DHAVE_2IN2OUT=1', '-DHAVE_1IN2OUT=1', '-DHAVE_VBAP=1', '-DHAVE_STEREOBALANCE=1', '-DHAVE_LIBS_PANNERS=1', '-DHAVE_JACK=1', '-DHAVE_JACK_METADATA=1', '-DHAVE_JACK_PORT_RENAME=1', '-DHAVE_DUMMY=1', '-DHAVE_LIBS_BACKENDS=1', '-DHAVE_LIBS_TEMPORAL=1', '-DHAVE_LRDF=1', '-DHAVE_SAMPLERATE=1', '-DHAVE_LV2=1', '-DHAVE_LV2_1_10_0=1', '-DHAVE_LV2_1_17_2=1', '-DHAVE_SERD=1', '-DHAVE_SORD=1', '-DHAVE_SRATOM=1', '-DHAVE_LILV=1', '-DHAVE_SUIL=1', '-DLV2_SUPPORT=1', '-DLV2_EXTENDED=1', '-DHAVE_OGG=1', '-DHAVE_FLAC=1', '-DHAVE_FFTW35F=1', '-DUSE_RUBBERBAND=1', '-DCURRENT_SESSION_FILE_VERSION=6000', '-DHAVE_SYS_VFS_H=1', '-DHAVE_SYS_STATVFS_H=1', '-DHAVE_UNISTD=1', '-DHAVE_BOOST_SCOPED_PTR_HPP=1', '-DHAVE_BOOST_PTR_CONTAINER_PTR_LIST_HPP=1', '-DHAVE_LIBS_ARDOUR=1', '-DHAVE_GTKMM=1', '-DHAVE_GTK=1', '-DHAVE_LIBS_GTKMM2EXT=1', '-DHAVE_BOOST_FORMAT_HPP=1', '-DHAVE_LIBS_AUDIOGRAPHER=1', '-DHAVE_LIBS_CANVAS=1', '-DHAVE_LIBS_WIDGETS=1', '-DHAVE_LIBS_WAVEVIEW=1', '-DHAVE_LV2_1_0_0=1', '-DHAVE_LIBS_PLUGINS_REASONABLESYNTH_LV2=1', '-DHAVE_CAIRO=1', '-DHAVE_LIBS_PLUGINS_A_COMP_LV2=1', '-DHAVE_LIBS_PLUGINS_A_EXP_LV2=1', '-DHAVE_LIBS_PLUGINS_A_DELAY_LV2=1', '-DHAVE_LIBS_PLUGINS_A_EQ_LV2=1', '-DHAVE_LIBS_PLUGINS_A_REVERB_LV2=1', '-DHAVE_LIBS_PLUGINS_A_FLUIDSYNTH_LV2=1', '-DHAVE_X11=1', '-DHAVE_PANGOFT2=1', '-DHAVE_FONTCONFIG=1', '-DHAVE_BOOST_SHARED_PTR_HPP=1', '-DHAVE_BOOST_WEAK_PTR_HPP=1', '-DHAVE_GTK2_ARDOUR=1', '-DHAVE_SHARE_EXPORT=1', '-DHAVE_SHARE_MIDI_MAPS=1', '-DHAVE_SHARE_MCP=1', '-DHAVE_SHARE_OSC=1', '-DHAVE_SHARE_PATCHFILES=1', '-DHAVE_SHARE_PLUGIN_METADATA=1', '-DHAVE_SHARE_SCRIPTS=1', '-DHAVE_SHARE_WEB_SURFACES=1', '-DHAVE_HEADLESS=1', '-DHAVE_LUASESSION=1', '-DHAVE_SESSION_UTILS=1', '-DHAVE_LIBS_FST=1', '-DHAVE_LIBS_VFORK=1', '-DHAVE_DBUS=1', '-DHAVE_LIBS_ARDOURALSAUTIL=1', '-DPACKAGE="gtk2_ardour6"', '-DDATA_DIR="/usr/share/ardour6"', '-DCONFIG_DIR="/etc"', '-DLOCALEDIR="/usr/share/ardour6/locale"', '-DLXVST_SUPPORT', '../gtk2_ardour/vca_master_strip.cc', '-c', '-o/builds/multimedia-team/ardour/debian/output/source_dir/build/gtk2_ardour/vca_master_strip.cc.1.o', '-Wdate-time', '-D_FORTIFY_SOURCE=2']
```

It would be great if blhc could correctly detect the build-flags in such a
(non-verbose) build.

If this is not possible, I'm also open for suggestions about how to massage the
build system to produce the output required.

#976175#10
Date:
2024-12-07 17:27:52 UTC
From:
To:
I am experiencing the same problem with the PyInstaller package, and have a
bit of additional information to add that might be helpful.

With waf in --verbose mode, each build produces two lines, the first one
listing just the name of the file to be compiled and the second listing all of
the arguments.

[ 1/21] Compiling src/pyi_utils.c
00:07:52 runner ['/usr/lib/ccache/gcc', '-g', '-O2', '-Werror=implicit-
function-declaration', '-ffile-prefix-map=/builds/python-team/packages/
pyinstaller/debian/output/source_dir=.', '-fstack-protector-strong', '-fstack-
clash-protection', '-Wformat', '-Werror=format-security', '-fcf-protection',
'-Wdate-time', '-D_FORTIFY_SOURCE=2', '-m64', '-O2', '-Wall', '-Werror', '-
Wno-error=unused-variable', '-Wno-error=unused-function', '-Wno-error=unused-
but-set-variable', '-U_FORTIFY_SOURCE', '-Isrc', '-I../../src', '-Iwindows',
'-I../../windows', '-Izlib', '-I../../zlib', '-D_REENTRANT', '-D_BSD_SOURCE',
'-D_DEFAULT_SOURCE', '-D_FORTIFY_SOURCE=2', '-DHAVE_STDBOOL_H=1', '-
DHAVE_UNSETENV=1', '-DHAVE_MKDTEMP=1', '-DHAVE_DIRNAME=1', '-
DHAVE_BASENAME=1', '-DLAUNCH_DEBUG', '-DNDEBUG', '../../src/pyi_utils.c', '-
c', '-o/builds/python-team/packages/pyinstaller/debian/output/source_dir/
bootloader/build/debug/src/pyi_utils.c.1.o', '-Wdate-time', ‘-
D_FORTIFY_SOURCE=2’]

https://salsa.debian.org/python-team/packages/pyinstaller/-/jobs/6712631/
viewer#L3682

Blhc doesn’t complain about the second line, but it flags the first line as
being a NONVERBOSE build.

169:NONVERBOSE BUILD: [ 1/21] Compiling src/pyi_utils.c

https://salsa.debian.org/python-team/packages/pyinstaller/-/jobs/6712640#L22

That either means that blhc can’t parse the second line and doesn’t recognize
it as a list of compile flags, or it means it can parse the second line and
approves of it.

Assuming the second is the case, would it be possible to modify blhc so that,
when it encounters the first line with just “Compiling” and the name of the
file, it checks to see if there is a second line that also contains the name of
the same file (closer to the end in this case) and also contains all the build
flags?