root/opal/mca/installdirs/base/installdirs_base_components.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. opal_installdirs_base_open
  2. opal_installdirs_base_close

   1 /*
   2  * Copyright (c) 2006-2012 Los Alamos National Security, LLC.  All rights
   3  *                         reserved.
   4  * Copyright (c) 2007      Cisco Systems, Inc.  All rights reserved.
   5  * Copyright (c) 2010      Sandia National Laboratories. All rights reserved.
   6  * Copyright (c) 2015      Research Organization for Information Science
   7  *                         and Technology (RIST). All rights reserved.
   8  * $COPYRIGHT$
   9  *
  10  * Additional copyrights may follow
  11  *
  12  * $HEADER$
  13  *
  14  */
  15 
  16 #include "opal_config.h"
  17 
  18 #include "opal/constants.h"
  19 #include "opal/mca/mca.h"
  20 #include "opal/mca/installdirs/installdirs.h"
  21 #include "opal/mca/installdirs/base/base.h"
  22 #include "opal/mca/installdirs/base/static-components.h"
  23 
  24 opal_install_dirs_t opal_install_dirs = {0};
  25 
  26 #define CONDITIONAL_COPY(target, origin, field)                 \
  27     do {                                                        \
  28         if (origin.field != NULL && target.field == NULL) {     \
  29             target.field = origin.field;                        \
  30         }                                                       \
  31     } while (0)
  32 
  33 static int
  34 opal_installdirs_base_open(mca_base_open_flag_t flags)
  35 {
  36     mca_base_component_list_item_t *component_item;
  37     int ret;
  38 
  39     ret = mca_base_framework_components_open (&opal_installdirs_base_framework,
  40                                               flags);
  41     if (OPAL_SUCCESS != ret) {
  42         return ret;
  43     }
  44 
  45     OPAL_LIST_FOREACH(component_item, &opal_installdirs_base_framework.framework_components, mca_base_component_list_item_t) {
  46         const opal_installdirs_base_component_t *component =
  47             (const opal_installdirs_base_component_t *) component_item->cli_component;
  48 
  49         /* copy over the data, if something isn't already there */
  50         CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
  51                          prefix);
  52         CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
  53                          exec_prefix);
  54         CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
  55                          bindir);
  56         CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
  57                          sbindir);
  58         CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
  59                          libexecdir);
  60         CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
  61                          datarootdir);
  62         CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
  63                          datadir);
  64         CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
  65                          sysconfdir);
  66         CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
  67                          sharedstatedir);
  68         CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
  69                          localstatedir);
  70         CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
  71                          libdir);
  72         CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
  73                          includedir);
  74         CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
  75                          infodir);
  76         CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
  77                          mandir);
  78         CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
  79                          opaldatadir);
  80         CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
  81                          opallibdir);
  82         CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
  83                          opalincludedir);
  84     }
  85 
  86     /* expand out all the fields */
  87     opal_install_dirs.prefix =
  88         opal_install_dirs_expand_setup(opal_install_dirs.prefix);
  89     opal_install_dirs.exec_prefix =
  90         opal_install_dirs_expand_setup(opal_install_dirs.exec_prefix);
  91     opal_install_dirs.bindir =
  92         opal_install_dirs_expand_setup(opal_install_dirs.bindir);
  93     opal_install_dirs.sbindir =
  94         opal_install_dirs_expand_setup(opal_install_dirs.sbindir);
  95     opal_install_dirs.libexecdir =
  96         opal_install_dirs_expand_setup(opal_install_dirs.libexecdir);
  97     opal_install_dirs.datarootdir =
  98         opal_install_dirs_expand_setup(opal_install_dirs.datarootdir);
  99     opal_install_dirs.datadir =
 100         opal_install_dirs_expand_setup(opal_install_dirs.datadir);
 101     opal_install_dirs.sysconfdir =
 102         opal_install_dirs_expand_setup(opal_install_dirs.sysconfdir);
 103     opal_install_dirs.sharedstatedir =
 104         opal_install_dirs_expand_setup(opal_install_dirs.sharedstatedir);
 105     opal_install_dirs.localstatedir =
 106         opal_install_dirs_expand_setup(opal_install_dirs.localstatedir);
 107     opal_install_dirs.libdir =
 108         opal_install_dirs_expand_setup(opal_install_dirs.libdir);
 109     opal_install_dirs.includedir =
 110         opal_install_dirs_expand_setup(opal_install_dirs.includedir);
 111     opal_install_dirs.infodir =
 112         opal_install_dirs_expand_setup(opal_install_dirs.infodir);
 113     opal_install_dirs.mandir =
 114         opal_install_dirs_expand_setup(opal_install_dirs.mandir);
 115     opal_install_dirs.opaldatadir =
 116         opal_install_dirs_expand_setup(opal_install_dirs.opaldatadir);
 117     opal_install_dirs.opallibdir =
 118         opal_install_dirs_expand_setup(opal_install_dirs.opallibdir);
 119     opal_install_dirs.opalincludedir =
 120         opal_install_dirs_expand_setup(opal_install_dirs.opalincludedir);
 121 
 122 #if 0
 123     fprintf(stderr, "prefix:         %s\n", opal_install_dirs.prefix);
 124     fprintf(stderr, "exec_prefix:    %s\n", opal_install_dirs.exec_prefix);
 125     fprintf(stderr, "bindir:         %s\n", opal_install_dirs.bindir);
 126     fprintf(stderr, "sbindir:        %s\n", opal_install_dirs.sbindir);
 127     fprintf(stderr, "libexecdir:     %s\n", opal_install_dirs.libexecdir);
 128     fprintf(stderr, "datarootdir:    %s\n", opal_install_dirs.datarootdir);
 129     fprintf(stderr, "datadir:        %s\n", opal_install_dirs.datadir);
 130     fprintf(stderr, "sysconfdir:     %s\n", opal_install_dirs.sysconfdir);
 131     fprintf(stderr, "sharedstatedir: %s\n", opal_install_dirs.sharedstatedir);
 132     fprintf(stderr, "localstatedir:  %s\n", opal_install_dirs.localstatedir);
 133     fprintf(stderr, "libdir:         %s\n", opal_install_dirs.libdir);
 134     fprintf(stderr, "includedir:     %s\n", opal_install_dirs.includedir);
 135     fprintf(stderr, "infodir:        %s\n", opal_install_dirs.infodir);
 136     fprintf(stderr, "mandir:         %s\n", opal_install_dirs.mandir);
 137     fprintf(stderr, "pkgdatadir:     %s\n", opal_install_dirs.pkgdatadir);
 138     fprintf(stderr, "pkglibdir:      %s\n", opal_install_dirs.pkglibdir);
 139     fprintf(stderr, "pkgincludedir:  %s\n", opal_install_dirs.pkgincludedir);
 140 #endif
 141 
 142     /* NTH: Is it ok not to close the components? If not we can add a flag
 143        to mca_base_framework_components_close to indicate not to deregister
 144        variable groups */
 145     return OPAL_SUCCESS;
 146 }
 147 
 148 
 149 static int
 150 opal_installdirs_base_close(void)
 151 {
 152     free(opal_install_dirs.prefix);
 153     free(opal_install_dirs.exec_prefix);
 154     free(opal_install_dirs.bindir);
 155     free(opal_install_dirs.sbindir);
 156     free(opal_install_dirs.libexecdir);
 157     free(opal_install_dirs.datarootdir);
 158     free(opal_install_dirs.datadir);
 159     free(opal_install_dirs.sysconfdir);
 160     free(opal_install_dirs.sharedstatedir);
 161     free(opal_install_dirs.localstatedir);
 162     free(opal_install_dirs.libdir);
 163     free(opal_install_dirs.includedir);
 164     free(opal_install_dirs.infodir);
 165     free(opal_install_dirs.mandir);
 166     free(opal_install_dirs.opaldatadir);
 167     free(opal_install_dirs.opallibdir);
 168     free(opal_install_dirs.opalincludedir);
 169     memset (&opal_install_dirs, 0, sizeof (opal_install_dirs));
 170 
 171     return mca_base_framework_components_close (&opal_installdirs_base_framework, NULL);
 172 }
 173 
 174 /* Declare the installdirs framework */
 175 MCA_BASE_FRAMEWORK_DECLARE(opal, installdirs, NULL, NULL, opal_installdirs_base_open,
 176                            opal_installdirs_base_close, mca_installdirs_base_static_components,
 177                            MCA_BASE_FRAMEWORK_FLAG_NOREGISTER | MCA_BASE_FRAMEWORK_FLAG_NO_DSO);

/* [<][>][^][v][top][bottom][index][help] */