On 12/29/16 16:12, Christophe Milard wrote:
> I have now updated the travis file (second comment) and had the
> DEPENDENCIES file updated since the begining. Are we talking about
> another third file?
> 
> Christophe


about DEPENDENCIES file.

Maxim.


> 
> On 29 December 2016 at 14:01, Maxim Uvarov <maxim.uva...@linaro.org> wrote:
>> On 12/29/16 13:45, Christophe Milard wrote:
>>> On 22 December 2016 at 21:12, Maxim Uvarov <maxim.uva...@linaro.org> wrote:
>>>> On 12/19/16 13:50, Christophe Milard wrote:
>>>>> The parsing of the odp.conf configuration file is added.
>>>>> The file is searched first in the local directory (.) and
>>>>> then is the $prefix/etc directory.
>>>>> This requires libconfig (sudo apt-get install libconfig-dev)
>>>>>
>>>>> Signed-off-by: Christophe Milard <christophe.mil...@linaro.org>
>>>>> ---
>>>>>  DEPENDENCIES                                  |  2 +-
>>>>>  platform/linux-generic/Makefile.am            |  1 +
>>>>>  platform/linux-generic/include/odp_internal.h |  2 +
>>>>>  platform/linux-generic/m4/configure.m4        | 11 +++++
>>>>>  platform/linux-generic/odp_init.c             | 70 
>>>>> +++++++++++++++++++++++++++
>>>>>  5 files changed, 85 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/DEPENDENCIES b/DEPENDENCIES
>>>>> index f1f0edd..a24b1c8 100644
>>>>> --- a/DEPENDENCIES
>>>>> +++ b/DEPENDENCIES
>>>>> @@ -18,7 +18,7 @@ Prerequisites for building the OpenDataPlane (ODP) API
>>>>>
>>>>>  3. Required libraries
>>>>>
>>>>> -   Libraries currently required to link: openssl
>>>>> +   Libraries currently required to link: openssl, libconfig-dev
>>>>>
>>>>
>>>> apt-get install libconfig-dev
>>>> is needed, or at least we specify it everywhere.
>>>
>>> I don't understand what you mean here. What is missing?
>>>
>>
>>
>> I see that there is apt-get install command for all dependencies. So
>> people can copy paste it. I think we need the same line for libconfig-dev.
>>
>> Maxim.
>>
>>
>>>>
>>>> .travis.yml file also needs to be updated.
>>>
>>> yes
>>>
>>>
>>> Christophe
>>>>
>>>> Maxim.
>>>>
>>>>
>>>>>  3.1 OpenSSL native compile
>>>>>
>>>>> diff --git a/platform/linux-generic/Makefile.am 
>>>>> b/platform/linux-generic/Makefile.am
>>>>> index 9d219da..9e5e095 100644
>>>>> --- a/platform/linux-generic/Makefile.am
>>>>> +++ b/platform/linux-generic/Makefile.am
>>>>> @@ -8,6 +8,7 @@ AM_CFLAGS +=  -I$(srcdir)/include
>>>>>  AM_CFLAGS +=  -I$(top_srcdir)/include
>>>>>  AM_CFLAGS +=  -I$(top_builddir)/include
>>>>>  AM_CFLAGS +=  -Iinclude
>>>>> +AM_CFLAGS +=  -DSYSCONFDIR=\"@sysconfdir@\"
>>>>>
>>>>>  include_HEADERS = \
>>>>>                 $(top_srcdir)/include/odp.h \
>>>>> diff --git a/platform/linux-generic/include/odp_internal.h 
>>>>> b/platform/linux-generic/include/odp_internal.h
>>>>> index b313b1f..9d1fc58 100644
>>>>> --- a/platform/linux-generic/include/odp_internal.h
>>>>> +++ b/platform/linux-generic/include/odp_internal.h
>>>>> @@ -22,6 +22,7 @@ extern "C" {
>>>>>  #include <odp/api/thread.h>
>>>>>  #include <stdio.h>
>>>>>  #include <sys/types.h>
>>>>> +#include <libconfig.h>
>>>>>
>>>>>  extern __thread int __odp_errno;
>>>>>
>>>>> @@ -50,6 +51,7 @@ struct odp_global_data_s {
>>>>>       odp_cpumask_t control_cpus;
>>>>>       odp_cpumask_t worker_cpus;
>>>>>       int num_cpus_installed;
>>>>> +     config_t configuration;
>>>>>  };
>>>>>
>>>>>  enum init_stage {
>>>>> diff --git a/platform/linux-generic/m4/configure.m4 
>>>>> b/platform/linux-generic/m4/configure.m4
>>>>> index d3e5528..5fab0cc 100644
>>>>> --- a/platform/linux-generic/m4/configure.m4
>>>>> +++ b/platform/linux-generic/m4/configure.m4
>>>>> @@ -28,6 +28,17 @@ AC_LINK_IFELSE(
>>>>>      echo "Use newer version. For gcc > 4.7.0"
>>>>>      exit -1)
>>>>>
>>>>> +# Check for libconfig (required)
>>>>> +AC_CHECK_HEADERS([libconfig.h], HEADER_LIBCONFIG="yes")
>>>>> +PKG_CHECK_MODULES([PKGCONFIG], [libconfig >= 1.3.2], 
>>>>> LIBRARY_LIBCONFIG="yes")
>>>>> +if test "x$LIBRARY_LIBCONFIG" != "x" && test "x$HEADER_LIBCONFIG" != "x" 
>>>>> ; then
>>>>> +    CFLAGS="$CFLAGS $PKGCONFIG_CFLAGS"
>>>>> +    LIBS="$LIBS $PKGCONFIG_LIBS"
>>>>> +    AM_CPPFLAGS="$AM_CPPFLAGS `pkg-config --cflags-only-I libconfig`"
>>>>> +else
>>>>> +    AC_MSG_FAILURE([libconfig not found (required)])
>>>>> +fi
>>>>> +
>>>>>  m4_include([platform/linux-generic/m4/odp_pthread.m4])
>>>>>  m4_include([platform/linux-generic/m4/odp_openssl.m4])
>>>>>  m4_include([platform/linux-generic/m4/odp_pcap.m4])
>>>>> diff --git a/platform/linux-generic/odp_init.c 
>>>>> b/platform/linux-generic/odp_init.c
>>>>> index 1b0d8f8..bd43af1 100644
>>>>> --- a/platform/linux-generic/odp_init.c
>>>>> +++ b/platform/linux-generic/odp_init.c
>>>>> @@ -10,6 +10,8 @@
>>>>>  #include <odp_internal.h>
>>>>>  #include <odp_schedule_if.h>
>>>>>  #include <string.h>
>>>>> +#include <libconfig.h>
>>>>> +#include <stdlib.h>
>>>>>  #include <stdio.h>
>>>>>  #include <linux/limits.h>
>>>>>  #include <dirent.h>
>>>>> @@ -21,6 +23,15 @@
>>>>>  #define _ODP_FILES_FMT "odp-%d-"
>>>>>  #define _ODP_TMPDIR    "/tmp"
>>>>>
>>>>> +/* the name of the ODP configuration file: */
>>>>> +#define CONFIGURATION_FILE_ENV_NONE "none"
>>>>> +#define CONFIGURATION_FILE "odp.conf"
>>>>> +#define CONFIGURATION_FILE_REL ("./" CONFIGURATION_FILE)
>>>>> +#define CONFIGURATION_FILE_ABS (SYSCONFDIR "/" CONFIGURATION_FILE)
>>>>> +
>>>>> +/* the ODP configuration file name can also be oveerwritten by env. 
>>>>> variable: */
>>>>> +#define ODP_SYSCONFIG_FILE_ENV "ODP_SYSCONFIG_FILE"
>>>>> +
>>>>>  struct odp_global_data_s odp_global_data;
>>>>>
>>>>>  /* remove all files staring with "odp-<pid>" from a directory "dir" */
>>>>> @@ -65,6 +76,62 @@ static int cleanup_files(const char *dirpath, int 
>>>>> odp_pid)
>>>>>       return 0;
>>>>>  }
>>>>>
>>>>> +/* read the odp configuration file
>>>>> + *
>>>>> + * the configuration file is read from:
>>>>> + * 1) Wherever env variable ODP_SYSCONFIG_FILE says (or "none")
>>>>> + * 2) ./odp.conf
>>>>> + * 3) the @sysconfig@/odp.conf
>>>>> + * (checked in reversed order overwritting each-other)
>>>>> + * So the environment variable setting supperseeds any other file.
>>>>> + * If the environment variable exists and set to the string "none"
>>>>> + * the configuration file reading is inibited (used to prevent
>>>>> + * test which do not need a file to read the user or system files)
>>>>> + */
>>>>> +static int read_configfile(void)
>>>>> +{
>>>>> +     char *env_config_filename;
>>>>> +     const char *config_filename;
>>>>> +     config_t *cf;
>>>>> +
>>>>> +     /* initialize and read the configuration file if any: */
>>>>> +     cf = &odp_global_data.configuration;
>>>>> +     config_init(cf);
>>>>> +     config_filename = NULL;
>>>>> +     if (access(CONFIGURATION_FILE_ABS, R_OK) != -1)
>>>>> +             config_filename = CONFIGURATION_FILE_ABS;
>>>>> +     if (access(CONFIGURATION_FILE_REL, R_OK) != -1)
>>>>> +             config_filename = CONFIGURATION_FILE_REL;
>>>>> +     env_config_filename = getenv(ODP_SYSCONFIG_FILE_ENV);
>>>>> +     if (env_config_filename) {
>>>>> +             if (!strcmp(env_config_filename, 
>>>>> CONFIGURATION_FILE_ENV_NONE))
>>>>> +                     return 0;
>>>>> +             if (access(env_config_filename, R_OK) != -1) {
>>>>> +                     config_filename = env_config_filename;
>>>>> +             } else {
>>>>> +                     ODP_ERR("Cannot read ODP configurattion file %s "
>>>>> +                             "(set by env variable "
>>>>> +                             ODP_SYSCONFIG_FILE_ENV ")\n",
>>>>> +                             env_config_filename);
>>>>> +                     config_filename = NULL;
>>>>> +                     return -1;
>>>>> +             }
>>>>> +     }
>>>>> +     if (config_filename) {
>>>>> +             ODP_DBG("Reading configuration file: %s\n", 
>>>>> config_filename);
>>>>> +             if (!config_read_file(cf, config_filename)) {
>>>>> +                     ODP_ERR("%s:%d - %s\n",
>>>>> +                             config_error_file(cf),
>>>>> +                             config_error_line(cf),
>>>>> +                             config_error_text(cf));
>>>>> +                     config_destroy(cf);
>>>>> +                     return(-1);
>>>>> +             }
>>>>> +     }
>>>>> +
>>>>> +     return 0;
>>>>> +}
>>>>> +
>>>>>  int odp_init_global(odp_instance_t *instance,
>>>>>                   const odp_init_t *params,
>>>>>                   const odp_platform_init_t *platform_params ODP_UNUSED)
>>>>> @@ -86,6 +153,9 @@ int odp_init_global(odp_instance_t *instance,
>>>>>                       odp_global_data.abort_fn = params->abort_fn;
>>>>>       }
>>>>>
>>>>> +     if (read_configfile())
>>>>> +             goto init_failed;
>>>>> +
>>>>>       if (odp_cpumask_init_global(params)) {
>>>>>               ODP_ERR("ODP cpumask init failed.\n");
>>>>>               goto init_failed;
>>>>>
>>>>
>>

Reply via email to