[mythtv-users] hdhrstreamhandler.cpp problem in build of Master for el7 - but not for F28

David Hampton mythtv at love2code.net
Sun Nov 18 15:16:29 UTC 2018


On Sun, 2018-11-18 at 11:56 +0000, John Pilkington wrote:
> Yesterday I built and installed Master head for Fedora 28.  There
> didn't 
> seem to be a problem.  So I tried building for el7;  build failed.
> 
> This seems to relate to the recent commit
> 
> {{{
> 
> https://github.com/MythTV/mythtv/commit/e50d9c7d3a90ad4e877347068cfd913d114fe23c
> 
> but at present I don't understand why it didn't affect the f28 build 
> too.  I don't have any homerun devices.
> 
> BUILDSTDERR: recorders/hdhrstreamhandler.cpp:23:109: error: 'int 
> hdhomerun_device_selector_load_from_str(hdhomerun_device_selector_t*,
>  
> char*)' was declared 'extern' and later 'static' [-fpermissive]
> BUILDSTDERR:  static int
> hdhomerun_device_selector_load_from_str(struct 
> hdhomerun_device_selector_t *hds, char *device_str);
> BUILDSTDERR: 
>                                                   ^
> BUILDSTDERR: In file included from
> /usr/include/hdhomerun/hdhomerun.h:32:0,
> BUILDSTDERR:                  from recorders/hdhrstreamhandler.h:29,
> BUILDSTDERR:                  from
> recorders/hdhrstreamhandler.cpp:14:
> BUILDSTDERR:
> /usr/include/hdhomerun/hdhomerun_device_selector.h:42:20: 
> error: previous declaration of 'int 
> hdhomerun_device_selector_load_from_str(hdhomerun_device_selector_t*,
>  
> char*)' [-fpermissive]
> BUILDSTDERR:  extern LIBTYPE int 
> hdhomerun_device_selector_load_from_str(struct 
> hdhomerun_device_selector_t *hds, char *device_str);
> BUILDSTDERR:                     ^
> BUILDSTDERR: make[2]: *** [obj/hdhrstreamhandler.o] Error 1
> BUILDSTDERR: make[2]: *** Waiting for unfinished jobs....
> make[2]: Leaving directory 
> `/builddir/build/BUILD/mythtv-
> 26d8d510589d4dc9adf72d14e9837774425faff8/mythtv/libs/libmythtv'
> 
> }}}

John,

The build process is attempting to compensate for two changes to the
libhhomerun code.  The first is the switch from
hdhomerun_discover_find_devices to hdhomerun_discover_find_devices_v2,
and when this new function is detected a compilation flag is set.  The
second change is the addition of the function
hdhomerun_device_selector_load_from_str_discover to the library.  There
is no version number in the hdhomerun library, and thus no easy way to
determine when these changes occurred.  When gigem made the commit you
referenced, he piggybacked on the flag that is set upon detection of
the find_devices_v2 function, probably assuming that the load_from_str
changes occurred at the same time.  From your message, it appears that
that that's not true, and that the EL7 version of libhdhomerun has the
load_from_str change but not the find_devices_v2 change.  I think we'll
need to enhance configure to specifically look for the presence of
load_from_str, and add a new compilation flag with that info.  I should
be able to recreate this error on my Centos7 builder.

David




More information about the mythtv-users mailing list