build: fix the coverage build
authorGary Lockyer <gary@catalyst.net.nz>
Wed, 12 Feb 2020 21:54:06 +0000 (10:54 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 27 Feb 2020 01:02:32 +0000 (01:02 +0000)
"make lcov" was failing with:
   Processing file bin/default/<stdout>
   genhtml: ERROR: cannot read ... <stdout>

Flex adds "#line nnn <stdout>" to the generated source, which then causes
issues with lcov. This commit adds a SAMBA_GENERATOR for es_lexer.l and
sparql_lexer.l that strips out the offending lines.

Signed-off-by: Gary Lockyer <gary@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source3/rpc_server/wscript_build
source3/wscript_build

index 8077a9c1a1b3dfd26fdd1e1412864c31733be465..4b70d58d768f2be9799c434739ec3c87ede072b8 100644 (file)
@@ -158,18 +158,42 @@ if bld.env.spotlight_backend_tracker:
                           mdssvc/mdssvc_tracker.c
                           mdssvc/sparql_mapping.c
                           mdssvc/sparql_parser.y
-                          mdssvc/sparql_lexer.l
                           '''
     rpc_mdssvc_deps += 'tevent-glib-glue ' + bld.env['libtracker']
+    # flex adds "#line nnn <stdout>" to the generated source
+    # which then causes issues with lcov, so need to filter out those
+    # lines. We need to use a different target name, as the default flex rule
+    # will also build sparql_lexer.lex.c
+    bld.SAMBA_GENERATOR(
+        "sparql_lexer.gcov.lex.c",
+        group='build_source',
+        source="mdssvc/sparql_lexer.l",
+        target="mdssvc/sparql_lexer.gcov.lex.c",
+        rule='${FLEX} ${FLEXFLAGS} ${SRC} |'
+             'grep -v "#line.*<stdout>" >${TGT}')
+    rpc_mdssvc_sources += ' mdssvc/sparql_lexer.gcov.lex.c'
 
 if bld.env.spotlight_backend_es:
     rpc_mdssvc_sources += '''
                           mdssvc/mdssvc_es.c
                           mdssvc/es_mapping.c
                           mdssvc/es_parser.y
-                          mdssvc/es_lexer.l
                           '''
     rpc_mdssvc_deps += ' http jansson'
+
+    # flex adds "#line nnn <stdout>" to the generated source
+    # which then causes issues with lcov, so need to filter out those
+    # lines. We need to use a different target name, as the default flex rule
+    # will also build es_lexer.lex.c
+    bld.SAMBA_GENERATOR(
+        "es_lexer.gcov.lex.c",
+        group='build_source',
+        source="mdssvc/es_lexer.l",
+        target="mdssvc/es_lexer.gcov.lex.c",
+        rule='${FLEX} ${FLEXFLAGS} ${SRC} |'
+             'grep -v "#line.*<stdout>" >${TGT}')
+    rpc_mdssvc_sources += ' mdssvc/es_lexer.gcov.lex.c'
+
     if bld.SAMBA3_IS_ENABLED_MODULE('rpc_mdssvc_module'):
         bld.INSTALL_FILES(bld.env.SAMBA_DATADIR,
                           'mdssvc/elasticsearch_mappings.json')
index 465c1e5875dd8a46017cc8bb20c060b7f1c59f10..68f2c14ebf451ca98a8a7f59ac87f3a2048957bd 100644 (file)
@@ -1277,7 +1277,7 @@ bld.SAMBA3_BINARY('test_mdsparser_es',
                  source='''
                  rpc_server/mdssvc/test_mdsparser_es.c
                  rpc_server/mdssvc/es_parser.y
-                 rpc_server/mdssvc/es_lexer.l
+                 rpc_server/mdssvc/es_lexer.gcov.lex.c
                  rpc_server/mdssvc/es_mapping.c
                  ''',
                  deps='''
@@ -1369,7 +1369,7 @@ bld.SAMBA3_BINARY('spotlight2sparql',
                  source='''
                  rpc_server/mdssvc/sparql_parser_test.c
                  rpc_server/mdssvc/sparql_parser.y
-                 rpc_server/mdssvc/sparql_lexer.l
+                 rpc_server/mdssvc/sparql_lexer.gcov.lex.c
                  rpc_server/mdssvc/sparql_mapping.c''',
                  deps='samba3-util talloc ' + bld.env['libtracker'],
                  enabled=bld.env.spotlight_backend_tracker,
@@ -1379,7 +1379,7 @@ bld.SAMBA3_BINARY('spotlight2es',
                  source='''
                  rpc_server/mdssvc/es_parser_test.c
                  rpc_server/mdssvc/es_parser.y
-                 rpc_server/mdssvc/es_lexer.l
+                 rpc_server/mdssvc/es_lexer.gcov.lex.c
                  rpc_server/mdssvc/es_mapping.c''',
                  deps='samba3-util talloc jansson smbconf',
                  enabled=bld.env.spotlight_backend_es,