rrrr icon indicating copy to clipboard operation
rrrr copied to clipboard

Compilation fails

Open chazanov opened this issue 5 years ago • 14 comments

I've tried with either clang 7 and 9, both fail.

clang -c -ggdb3 -march=native -Wall -Wno-unused -O3 -D_GNU_SOURCE  worker-web.c -o worker-web.o
In file included from worker-web.c:12:
In file included from ./tdata.h:10:
./gtfs-realtime.pb-c.h:10:1: error: unknown type name 'PROTOBUF_C_BEGIN_DECLS'
PROTOBUF_C_BEGIN_DECLS
^
./gtfs-realtime.pb-c.h:13:1: error: expected identifier or '('
typedef struct _TransitRealtime__FeedMessage TransitRealtime__FeedMessage;
^
./gtfs-realtime.pb-c.h:325:23: error: unknown type name 'TransitRealtime__FeedMessage'; did you mean 'TransitRealtime__FeedHeader'?
                     (TransitRealtime__FeedMessage         *message);
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
                      TransitRealtime__FeedHeader
./gtfs-realtime.pb-c.h:14:45: note: 'TransitRealtime__FeedHeader' declared here
typedef struct _TransitRealtime__FeedHeader TransitRealtime__FeedHeader;
                                            ^
./gtfs-realtime.pb-c.h:327:29: error: unknown type name 'TransitRealtime__FeedMessage'; did you mean 'TransitRealtime__FeedHeader'?
                     (const TransitRealtime__FeedMessage   *message);
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            TransitRealtime__FeedHeader
./gtfs-realtime.pb-c.h:14:45: note: 'TransitRealtime__FeedHeader' declared here
typedef struct _TransitRealtime__FeedHeader TransitRealtime__FeedHeader;
                                            ^
./gtfs-realtime.pb-c.h:329:29: error: unknown type name 'TransitRealtime__FeedMessage'; did you mean 'TransitRealtime__FeedHeader'?
                     (const TransitRealtime__FeedMessage   *message,
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            TransitRealtime__FeedHeader
./gtfs-realtime.pb-c.h:14:45: note: 'TransitRealtime__FeedHeader' declared here
typedef struct _TransitRealtime__FeedHeader TransitRealtime__FeedHeader;
                                            ^
./gtfs-realtime.pb-c.h:332:29: error: unknown type name 'TransitRealtime__FeedMessage'; did you mean 'TransitRealtime__FeedHeader'?
                     (const TransitRealtime__FeedMessage   *message,
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            TransitRealtime__FeedHeader
./gtfs-realtime.pb-c.h:14:45: note: 'TransitRealtime__FeedHeader' declared here
typedef struct _TransitRealtime__FeedHeader TransitRealtime__FeedHeader;
                                            ^
./gtfs-realtime.pb-c.h:334:1: error: unknown type name 'TransitRealtime__FeedMessage'; did you mean 'TransitRealtime__FeedHeader'?
TransitRealtime__FeedMessage *
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
TransitRealtime__FeedHeader
./gtfs-realtime.pb-c.h:14:45: note: 'TransitRealtime__FeedHeader' declared here
typedef struct _TransitRealtime__FeedHeader TransitRealtime__FeedHeader;
                                            ^
./gtfs-realtime.pb-c.h:340:23: error: unknown type name 'TransitRealtime__FeedMessage'; did you mean 'TransitRealtime__FeedHeader'?
                     (TransitRealtime__FeedMessage *message,
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
                      TransitRealtime__FeedHeader
./gtfs-realtime.pb-c.h:14:45: note: 'TransitRealtime__FeedHeader' declared here
typedef struct _TransitRealtime__FeedHeader TransitRealtime__FeedHeader;
                                            ^
./gtfs-realtime.pb-c.h:582:25: error: unknown type name 'TransitRealtime__FeedMessage'; did you mean 'TransitRealtime__FeedHeader'?
                 (const TransitRealtime__FeedMessage *message,
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
                        TransitRealtime__FeedHeader
./gtfs-realtime.pb-c.h:14:45: note: 'TransitRealtime__FeedHeader' declared here
typedef struct _TransitRealtime__FeedHeader TransitRealtime__FeedHeader;
                                            ^
./gtfs-realtime.pb-c.h:659:1: error: unknown type name 'PROTOBUF_C_END_DECLS'
PROTOBUF_C_END_DECLS
^
In file included from worker-web.c:12:
./tdata.h:14:1: error: expected identifier or '('
typedef uint32_t calendar_t;
^
./tdata.h:74:5: error: unknown type name 'calendar_t'
    calendar_t dst_active;
    ^
./tdata.h:106:5: error: unknown type name 'calendar_t'
    calendar_t *trip_active;
    ^
./tdata.h:107:5: error: unknown type name 'calendar_t'
    calendar_t *route_active;
    ^
./tdata.h:115:5: error: unknown type name 'TransitRealtime__FeedMessage'; did you mean 'TransitRealtime__FeedHeader'?
    TransitRealtime__FeedMessage *alerts;
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    TransitRealtime__FeedHeader
./gtfs-realtime.pb-c.h:14:45: note: 'TransitRealtime__FeedHeader' declared here
typedef struct _TransitRealtime__FeedHeader TransitRealtime__FeedHeader;
                                            ^
In file included from worker-web.c:12:
./tdata.h:173:1: error: unknown type name 'calendar_t'
calendar_t *tdata_trip_masks_for_route(tdata_t*, uint32_t route_index);
^
In file included from worker-web.c:14:
./router.h:36:5: error: unknown type name 'calendar_t'
    calendar_t mask;
    ^
./router.h:52:5: error: unknown type name 'calendar_t'
    calendar_t day_mask;
    ^
./router.h:100:5: error: unknown type name 'calendar_t'
    calendar_t day_mask; // bit for the day on which we are searching, relative to the timetable calendar
    ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.

chazanov avatar Mar 11 '19 19:03 chazanov

Looking at the first error message something happens with your protocol buffers includes. If you would disable the realtime component, it is likely you can at least proceed testing. I have recently compiled rrrr with both gcc and clang without issues, but consider our enormous number of branches, knowing which branch you tried would also help.

skinkie avatar Mar 11 '19 21:03 skinkie

I've tried the master branch. How can I disable realtime?

chazanov avatar Mar 15 '19 20:03 chazanov

Can you try the tdata4 branch?

skinkie avatar Mar 15 '19 20:03 skinkie

With tdata4 I'm getting

clang -DRRRR_STRICT -DRRRR_TDATA_IO_DYNAMIC -DRRRR_FAKE_REALTIME -DRRRR_VALGRIND -DRRRR_BITSET_64 -Wextra -Wall -ansi -pedantic -DRRRR_DEBUG -DRRRR_INFO -DRRRR_TDATA -ggdb -O0 -lm -lprotobuf-c -o cli cli.c router.c tdata.c tdata_validation.c bitset.c router_request.c router_result.c util.c tdata_realtime_expanded.c tdata_realtime_alerts.c tdata_io_v4_dynamic.c radixtree.c gtfs-realtime.pb-c.c geometry.c router_dump.c hashgrid.c plan_render_text.c polyline.c json.c plan_render_otp.c api.c set.c string_pool.c hashgrid_street_network.c street_network.c
clang-7: error: no such file or directory: 'gtfs-realtime.pb-c.c'

chazanov avatar Mar 16 '19 17:03 chazanov

@chazanov have you actually got protocol buffers and protobuf-c installed?

skinkie avatar Mar 16 '19 22:03 skinkie

@skinkie Yes, of course (protobuf 3.7.0 and p-c 1.3.1):

protobuf /usr/bin/protoc
protobuf /usr/include/google/
protobuf /usr/include/google/protobuf/
protobuf /usr/include/google/protobuf/any.h
protobuf /usr/include/google/protobuf/any.pb.h
protobuf /usr/include/google/protobuf/any.proto
protobuf /usr/include/google/protobuf/api.pb.h
protobuf /usr/include/google/protobuf/api.proto
protobuf /usr/include/google/protobuf/arena.h
protobuf /usr/include/google/protobuf/arena_impl.h
protobuf /usr/include/google/protobuf/arenastring.h
protobuf /usr/include/google/protobuf/compiler/
protobuf /usr/include/google/protobuf/compiler/code_generator.h
protobuf /usr/include/google/protobuf/compiler/command_line_interface.h
protobuf /usr/include/google/protobuf/compiler/cpp/
protobuf /usr/include/google/protobuf/compiler/cpp/cpp_generator.h
protobuf /usr/include/google/protobuf/compiler/csharp/
protobuf /usr/include/google/protobuf/compiler/csharp/csharp_generator.h
protobuf /usr/include/google/protobuf/compiler/csharp/csharp_names.h
protobuf /usr/include/google/protobuf/compiler/importer.h
protobuf /usr/include/google/protobuf/compiler/java/
protobuf /usr/include/google/protobuf/compiler/java/java_generator.h
protobuf /usr/include/google/protobuf/compiler/java/java_names.h
protobuf /usr/include/google/protobuf/compiler/js/
protobuf /usr/include/google/protobuf/compiler/js/js_generator.h
protobuf /usr/include/google/protobuf/compiler/js/well_known_types_embed.h
protobuf /usr/include/google/protobuf/compiler/objectivec/
protobuf /usr/include/google/protobuf/compiler/objectivec/objectivec_generator.h
protobuf /usr/include/google/protobuf/compiler/objectivec/objectivec_helpers.h
protobuf /usr/include/google/protobuf/compiler/parser.h
protobuf /usr/include/google/protobuf/compiler/php/
protobuf /usr/include/google/protobuf/compiler/php/php_generator.h
protobuf /usr/include/google/protobuf/compiler/plugin.h
protobuf /usr/include/google/protobuf/compiler/plugin.pb.h
protobuf /usr/include/google/protobuf/compiler/plugin.proto
protobuf /usr/include/google/protobuf/compiler/python/
protobuf /usr/include/google/protobuf/compiler/python/python_generator.h
protobuf /usr/include/google/protobuf/compiler/ruby/
protobuf /usr/include/google/protobuf/compiler/ruby/ruby_generator.h
protobuf /usr/include/google/protobuf/descriptor.h
protobuf /usr/include/google/protobuf/descriptor.pb.h
protobuf /usr/include/google/protobuf/descriptor.proto
protobuf /usr/include/google/protobuf/descriptor_database.h
protobuf /usr/include/google/protobuf/duration.pb.h
protobuf /usr/include/google/protobuf/duration.proto
protobuf /usr/include/google/protobuf/dynamic_message.h
protobuf /usr/include/google/protobuf/empty.pb.h
protobuf /usr/include/google/protobuf/empty.proto
protobuf /usr/include/google/protobuf/extension_set.h
protobuf /usr/include/google/protobuf/extension_set_inl.h
protobuf /usr/include/google/protobuf/field_mask.pb.h
protobuf /usr/include/google/protobuf/field_mask.proto
protobuf /usr/include/google/protobuf/generated_enum_reflection.h
protobuf /usr/include/google/protobuf/generated_enum_util.h
protobuf /usr/include/google/protobuf/generated_message_reflection.h
protobuf /usr/include/google/protobuf/generated_message_table_driven.h
protobuf /usr/include/google/protobuf/generated_message_util.h
protobuf /usr/include/google/protobuf/has_bits.h
protobuf /usr/include/google/protobuf/implicit_weak_message.h
protobuf /usr/include/google/protobuf/inlined_string_field.h
protobuf /usr/include/google/protobuf/io/
protobuf /usr/include/google/protobuf/io/coded_stream.h
protobuf /usr/include/google/protobuf/io/gzip_stream.h
protobuf /usr/include/google/protobuf/io/printer.h
protobuf /usr/include/google/protobuf/io/strtod.h
protobuf /usr/include/google/protobuf/io/tokenizer.h
protobuf /usr/include/google/protobuf/io/zero_copy_stream.h
protobuf /usr/include/google/protobuf/io/zero_copy_stream_impl.h
protobuf /usr/include/google/protobuf/io/zero_copy_stream_impl_lite.h
protobuf /usr/include/google/protobuf/map.h
protobuf /usr/include/google/protobuf/map_entry.h
protobuf /usr/include/google/protobuf/map_entry_lite.h
protobuf /usr/include/google/protobuf/map_field.h
protobuf /usr/include/google/protobuf/map_field_inl.h
protobuf /usr/include/google/protobuf/map_field_lite.h
protobuf /usr/include/google/protobuf/map_type_handler.h
protobuf /usr/include/google/protobuf/message.h
protobuf /usr/include/google/protobuf/message_lite.h
protobuf /usr/include/google/protobuf/metadata.h
protobuf /usr/include/google/protobuf/metadata_lite.h
protobuf /usr/include/google/protobuf/parse_context.h
protobuf /usr/include/google/protobuf/port.h
protobuf /usr/include/google/protobuf/port_def.inc
protobuf /usr/include/google/protobuf/port_undef.inc
protobuf /usr/include/google/protobuf/reflection.h
protobuf /usr/include/google/protobuf/reflection_ops.h
protobuf /usr/include/google/protobuf/repeated_field.h
protobuf /usr/include/google/protobuf/service.h
protobuf /usr/include/google/protobuf/source_context.pb.h
protobuf /usr/include/google/protobuf/source_context.proto
protobuf /usr/include/google/protobuf/struct.pb.h
protobuf /usr/include/google/protobuf/struct.proto
protobuf /usr/include/google/protobuf/stubs/
protobuf /usr/include/google/protobuf/stubs/bytestream.h
protobuf /usr/include/google/protobuf/stubs/callback.h
protobuf /usr/include/google/protobuf/stubs/casts.h
protobuf /usr/include/google/protobuf/stubs/common.h
protobuf /usr/include/google/protobuf/stubs/fastmem.h
protobuf /usr/include/google/protobuf/stubs/hash.h
protobuf /usr/include/google/protobuf/stubs/logging.h
protobuf /usr/include/google/protobuf/stubs/macros.h
protobuf /usr/include/google/protobuf/stubs/mutex.h
protobuf /usr/include/google/protobuf/stubs/once.h
protobuf /usr/include/google/protobuf/stubs/platform_macros.h
protobuf /usr/include/google/protobuf/stubs/port.h
protobuf /usr/include/google/protobuf/stubs/status.h
protobuf /usr/include/google/protobuf/stubs/stl_util.h
protobuf /usr/include/google/protobuf/stubs/stringpiece.h
protobuf /usr/include/google/protobuf/stubs/strutil.h
protobuf /usr/include/google/protobuf/stubs/template_util.h
protobuf /usr/include/google/protobuf/text_format.h
protobuf /usr/include/google/protobuf/timestamp.pb.h
protobuf /usr/include/google/protobuf/timestamp.proto
protobuf /usr/include/google/protobuf/type.pb.h
protobuf /usr/include/google/protobuf/type.proto
protobuf /usr/include/google/protobuf/unknown_field_set.h
protobuf /usr/include/google/protobuf/util/
protobuf /usr/include/google/protobuf/util/delimited_message_util.h
protobuf /usr/include/google/protobuf/util/field_comparator.h
protobuf /usr/include/google/protobuf/util/field_mask_util.h
protobuf /usr/include/google/protobuf/util/json_util.h
protobuf /usr/include/google/protobuf/util/message_differencer.h
protobuf /usr/include/google/protobuf/util/time_util.h
protobuf /usr/include/google/protobuf/util/type_resolver.h
protobuf /usr/include/google/protobuf/util/type_resolver_util.h
protobuf /usr/include/google/protobuf/wire_format.h
protobuf /usr/include/google/protobuf/wire_format_lite.h
protobuf /usr/include/google/protobuf/wire_format_lite_inl.h
protobuf /usr/include/google/protobuf/wrappers.pb.h
protobuf /usr/include/google/protobuf/wrappers.proto
protobuf /usr/lib/libprotobuf-lite.so
protobuf /usr/lib/libprotobuf-lite.so.18
protobuf /usr/lib/libprotobuf-lite.so.18.0.0
protobuf /usr/lib/libprotobuf.so
protobuf /usr/lib/libprotobuf.so.18
protobuf /usr/lib/libprotobuf.so.18.0.0
protobuf /usr/lib/libprotoc.so
protobuf /usr/lib/libprotoc.so.18
protobuf /usr/lib/libprotoc.so.18.0.0
protobuf /usr/lib/pkgconfig/
protobuf /usr/lib/pkgconfig/protobuf-lite.pc
protobuf /usr/lib/pkgconfig/protobuf.pc

protobuf-c /usr/bin/protoc-c
protobuf-c /usr/bin/protoc-gen-c
protobuf-c /usr/include/google/
protobuf-c /usr/include/google/protobuf-c/
protobuf-c /usr/include/google/protobuf-c/protobuf-c.h
protobuf-c /usr/include/protobuf-c/
protobuf-c /usr/include/protobuf-c/protobuf-c.h
protobuf-c /usr/lib/libprotobuf-c.so
protobuf-c /usr/lib/libprotobuf-c.so.1
protobuf-c /usr/lib/libprotobuf-c.so.1.0.0
protobuf-c /usr/lib/pkgconfig/
protobuf-c /usr/lib/pkgconfig/libprotobuf-c.pc

chazanov avatar Mar 16 '19 22:03 chazanov

I just did this:

git clone [email protected]:bliksemlabs/rrrr.git 
cd rrrr/
git checkout tdata4
mkdir build
cd build/
cmake ..
make

Now if you convince cmake to use clang, I am interested in your results.

skinkie avatar Mar 16 '19 22:03 skinkie

@skinkie It now builds perfectly.

Probably that's trivial, but for me there is No rule to make target 'install'.

chazanov avatar Apr 03 '19 17:04 chazanov

https://github.com/libcheck/check

skinkie avatar Apr 03 '19 18:04 skinkie

@chazanov I guess there is no install ;-) there are binaries, a static library, some python code.

skinkie avatar Apr 03 '19 18:04 skinkie

https://github.com/libcheck/check

Nowaday github records all of my mistakes ;)

So there is nothing more than a 180 kb binary called ./cli ?

chazanov avatar Apr 03 '19 18:04 chazanov

Your profile seems to be hidden enough ;-) nobody knows you work for a fruit or number company ;-)

skinkie avatar Apr 03 '19 19:04 skinkie

@skinkie Yes, I'm very cautious with photos or information on me. I'm just a single OSM guy doing something very different in real life.

I'm always interested in doing things like navigation or geocoding with much less memory than everybody else. Example: GraphHopper is actually fast, but fat. Pelias is a gigantic geocoder, but quite heavy.

chazanov avatar Apr 03 '19 19:04 chazanov

You can probably figure out my e-mail by git log ;-)

skinkie avatar Apr 03 '19 19:04 skinkie