Matias Elo(matiaselo) replied on github web page:

Makefile.am
line 5
@@ -20,7 +20,7 @@ SUBDIRS = \
 
 @DX_RULES@
 
-EXTRA_DIST = bootstrap CHANGELOG config/README
+EXTRA_DIST = bootstrap CHANGELOG config/README config/odp-linux.conf


Comment:
A good point. Would this be OK?

.../platform/Makefile.inc
```
configdir = $(sysconfdir)/odp
config_DATA = $(top_srcdir)/config/odp-$(with_platform).conf

```

> Matias Elo(matiaselo) wrote:
> Thanks! I'll try this.


>> Dmitry Eremin-Solenikov(lumag) wrote:
>> Typical idiom is
>> ```make
>> include/odp_libconfig_config.h: $(top_srcdir)/config/odp-linux.conf 
>> $(top_builddir)/config.status
>>      cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
>> ```
>> 
>> I'd suggest you to try building with separate builddir, it should help you 
>> to catch build/src dir differences.


>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>> Makefile part:
>>> ```make
>>> include/odp_libconfig_config.h: $(top_srcdir)/config/odp-linux.conf 
>>> $(top_srcdir)/config.status
>>>     cd $(top_builddir) && $(SHELL) ./config.status odp_libconfig_config.h
>>> ```
>>> 
>>> Also it might be nice to use 
>>> platform/${with_platform}/odp_libconfig_config.h as tag name, so that tags 
>>> for different platforms won't collide.


>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>> I'd say
>>>> ```m4
>>>> AC_CONFIG_COMMANDS([odp_libconfig_config.h],
>>>> [ mkdir -p platform/${with_platform}/include
>>>>  xxd -i ${srcdir}/platform/${with_platform}/odp-linux.conf | sed 
>>>> 's/\([0-9a-f]\)$/\0, 0x00/' > \
>>>>    platform/${with_platform}/include/odp_libconfig_config.h])
>>>> ```


>>>>> Matias Elo(matiaselo) wrote:
>>>>> I need some assistance with this.  What I have now is:
>>>>> 
>>>>> ```
>>>>> AC_CONFIG_COMMANDS([odp_libconfig_config.h],
>>>>> [
>>>>> pushd ${ac_abs_top_builddir}/config
>>>>>  xxd -i odp-linux.conf | sed 's/\([0-9a-f]\)$/\0, 0x00/' > \
>>>>>    ../platform/${with_platform}/include/odp_libconfig_config.h
>>>>>  popd], 
>>>>>  [with_platform=$with_platform]
>>>>>  )
>>>>> ```
>>>>> 
>>>>> And in .../linux-generic/Makefile.am:
>>>>> ```
>>>>> include/odp_libconfig_config.h: $(top_srcdir)/config/odp-linux.conf 
>>>>> $(top_srcdir)/config.status
>>>>>   ./$(top_srcdir)/config.status odp_libconfig_config.h
>>>>> ```
>>>>> This seems to work as it detects changes in odp-linux.conf, but I'm not 
>>>>> sure if this is the proper way to do this.


>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>> Builddir is current directory.


>>>>>>> Matias Elo(matiaselo) wrote:
>>>>>>> builddir is not defined here. Any ideas?


>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>> Consider somebody changing conf file and reruning make. Make should 
>>>>>>>> detect that header should be regenerated and invoke ./config.status 
>>>>>>>> with proper tag to regenrate header in question. 


>>>>>>>>> Matias Elo(matiaselo) wrote:
>>>>>>>>> > Also there should be a dependency line in respective Makefile.am to 
>>>>>>>>> > regenerate the header.
>>>>>>>>> 
>>>>>>>>> Can you elaborate this a bit?


>>>>>>>>>> Matias Elo(matiaselo) wrote:
>>>>>>>>>> Yeah, I actually tried merging the files but it ended up being 
>>>>>>>>>> painful since libconfig doesn't provide good functions for doing 
>>>>>>>>>> that. So I went with the "safe" solution. I'll try if I can at least 
>>>>>>>>>> get rid of the extra pointers.


>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>> Merging is not required in the first pass, but it might be a good 
>>>>>>>>>>> thing in future.


>>>>>>>>>>>> Matias Elo(matiaselo) wrote:
>>>>>>>>>>>> OK


>>>>>>>>>>>>> Matias Elo(matiaselo) wrote:
>>>>>>>>>>>>> OK


>>>>>>>>>>>>>> Matias Elo(matiaselo) wrote:
>>>>>>>>>>>>>> OK


>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>> Last line should go to `nodist_noinst_HEADERS`, so it does not 
>>>>>>>>>>>>>>> get included into distribution.


>>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>>> Just drop this setting/check. `PKG_CHECK_MODULES` will print 
>>>>>>>>>>>>>>>> usefull message instead.


>>>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>>>> Should ODP install this header file somewhere?


>>>>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>>>>> It might be usefull to have "default" config file provided 
>>>>>>>>>>>>>>>>>> at ${sysconfdir}.


>>>>>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>>>>>> Please use instead:
>>>>>>>>>>>>>>>>>>> `Require.private: libconfig`


>>>>>>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>>>>>>> Generated file should go to builddir, not to srcdir.


>>>>>>>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>>>>>>>> Please use `AC_CONFIG_COMMANDS` to regenerate this 
>>>>>>>>>>>>>>>>>>>>> header. Also there should be a dependency line in 
>>>>>>>>>>>>>>>>>>>>> respective Makefile.am to regenerate the header.


>>>>>>>>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>>>>>>>>> Can we please have just two config structures here 
>>>>>>>>>>>>>>>>>>>>>> (default and running)? I wonder, if we can actually 
>>>>>>>>>>>>>>>>>>>>>> merge default with provided configurations into a single 
>>>>>>>>>>>>>>>>>>>>>> config structure?


>>>>>>>>>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>>>>>>>>>> No need to `AC_SUBST` them, as you are using 
>>>>>>>>>>>>>>>>>>>>>>> PKG_CHECK_MODULES.


>>>>>>>>>>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>>>>>>>>>>> No, this is not necessary. One can override this 
>>>>>>>>>>>>>>>>>>>>>>>> setting using environment.


>>>>>>>>>>>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>> As the last resort you can load it and then call 
>>>>>>>>>>>>>>>>>>>>>>>>> `config_file_write()` from the helper app. I'd prefer 
>>>>>>>>>>>>>>>>>>>>>>>>> instead if callers could provide default values fro 
>>>>>>>>>>>>>>>>>>>>>>>>> options that they require.


>>>>>>>>>>>>>>>>>>>>>>>>>> Matias Elo(matiaselo) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>> `config_t libconfig`can always be initialized, but 
>>>>>>>>>>>>>>>>>>>>>>>>>> in case `ODP_CONF_FILE` is not given, no 
>>>>>>>>>>>>>>>>>>>>>>>>>> configuration file is read. I'm not sure if all 
>>>>>>>>>>>>>>>>>>>>>>>>>> libconfig functions handle this properly without 
>>>>>>>>>>>>>>>>>>>>>>>>>> crashing and I'm playing it safe here. Maybe it's 
>>>>>>>>>>>>>>>>>>>>>>>>>> cleaner if I replace this with:
>>>>>>>>>>>>>>>>>>>>>>>>>> ```
>>>>>>>>>>>>>>>>>>>>>>>>>>      config_t *libconfig;
>>>>>>>>>>>>>>>>>>>>>>>>>>      config_t libconfig_structure;
>>>>>>>>>>>>>>>>>>>>>>>>>> ```
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> Actually, this gave me an idea. It would probably 
>>>>>>>>>>>>>>>>>>>>>>>>>> make sense to save the `odp-linux.conf` contents to 
>>>>>>>>>>>>>>>>>>>>>>>>>> a C file during configure. This way we always have a 
>>>>>>>>>>>>>>>>>>>>>>>>>> valid default configuration and the default options 
>>>>>>>>>>>>>>>>>>>>>>>>>> have to be saved only to one location. Any 
>>>>>>>>>>>>>>>>>>>>>>>>>> suggestions what would be a good method to save the 
>>>>>>>>>>>>>>>>>>>>>>>>>> file during configure?


>>>>>>>>>>>>>>>>>>>>>>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>> `ODP_LOG()` will just print if not overridded. The 
>>>>>>>>>>>>>>>>>>>>>>>>>>> point is ODP shouldn't be using `printf()` 
>>>>>>>>>>>>>>>>>>>>>>>>>>> directly. 


>>>>>>>>>>>>>>>>>>>>>>>>>>>> Matias Elo(matiaselo) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>> I would prefer changing OFP to match our naming 
>>>>>>>>>>>>>>>>>>>>>>>>>>>> convention. We use 'config' in several APIs, 
>>>>>>>>>>>>>>>>>>>>>>>>>>>> whereas 'conf' is used only internally.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Matias Elo(matiaselo) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> This is just an internal helper to avoid having 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> to reference to odp_global_data when calling 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> `config_lookup()`. It could actually be removed 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> altogether.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Since we are using libconfig only internally, 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> what's the benefit of wrapping its functions 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> (other than avoiding hard dependency)? We are not 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> wrapping e.g. openssl functions. Adding wrappers 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> for the aforementioned `_odp_config_lookup_int()` 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> and `_odp_config_lookup_string()` would be 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> simple, but for example` 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> config_setting_lookup()`, which I'm using to find 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> dpdk driver specific options, uses libconfig data 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> types which would also have to be wrapped.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Matias Elo(matiaselo) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> As we already require for example autoconf, 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> libtool, and pkg-config, adding libconfig 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> dependency shouldn't be a big issue. However, if 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> this causes problems we can remove the hard 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> dependency by wrapping all used libconfig 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> functions with dummy implementations. I would 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> prefer not doing this if not explicitly required.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Matias Elo(matiaselo) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Not that familiar with autoconf, so I pretty 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> much copy-pasted the `odp_openssl.m4` to get 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> this working. I'll take a look at 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> `PKG_CHECK_MODULES `.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Matias Elo(matiaselo) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> OK, will fix.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Matias Elo(matiaselo) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> I'm usually using multiple different NICs, so 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> I find this information useful for logging 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> test runs. Perhaps use ODP_PRINT() here?


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Matias Elo(matiaselo) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Will fix.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Just use `PKG_CHECK_MODULES` here rather 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> than inventing variables and checks.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Ideally we do not need this field. We 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> should always return valid setting. Maybe 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> by allowing ODP modules to return default 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> value.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> I'd prefer not to export config internals 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> here, but rather have 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> `_odp_config_lookup_int()`, 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> `_odp_config_lookup_string()`, etc.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Last line should not be necessary


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> bogdanPricope wrote
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> OFP is using a similar naming for the 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> environment variable but with 'CONF' 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> instead of 'CONFIG' ('OFP_CONF_FILE'). 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Will it makes sense to change the 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> naming to avoid confusions: either 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 'ODP_CONF_FILE' in ODP or 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 'OFP_CONFIG_FILE' in OFP? 


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Do we really want to print this 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> unconditionally? In any event 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> shouldn't this be `ODP_LOG()` here 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> rather than `printf()`?


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> According to the [libconfig 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> changelog](https://github.com/hyperrealm/libconfig/blob/master/ChangeLog)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  there are versions pre-1.0 (e.g., 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 0.9) which would fail this test. This 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> needs to be reversed so that you use 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> the newer form for v1.5 and higher 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> levels:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ```
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #if (LIBCONFIG_VER_MAJOR > 1 || 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> (LIBCONFIG_VER_MAJOR == 1 && 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> LIBCONFIG_VER_MINOR >= 5)) ...
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ```


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Bill 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Fischofer(Bill-Fischofer-Linaro) 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Does this have to be a hard 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> dependency? Can we have this feature 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> be omitted (hardcoded defaults are 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> used) if libconfig is not available?


https://github.com/Linaro/odp/pull/499#discussion_r171600672
updated_at 2018-03-01 15:48:03

Reply via email to