root/opal/mca/pmix/pmix4x/pmix/src/mca/pinstalldirs/base/pinstalldirs_base_components.c

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

DEFINITIONS

This source file includes following definitions.
  1. pmix_pinstalldirs_base_open
  2. pmix_pinstalldirs_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 (c) 2016      Intel, Inc. All rights reserved.
   9  * $COPYRIGHT$
  10  *
  11  * Additional copyrights may follow
  12  *
  13  * $HEADER$
  14  *
  15  */
  16 
  17 #include <src/include/pmix_config.h>
  18 
  19 #include "pmix_common.h"
  20 #include "src/mca/mca.h"
  21 #include "src/mca/pinstalldirs/pinstalldirs.h"
  22 #include "src/mca/pinstalldirs/base/base.h"
  23 #include "src/mca/pinstalldirs/base/static-components.h"
  24 
  25 pmix_pinstall_dirs_t pmix_pinstall_dirs = {0};
  26 
  27 #define CONDITIONAL_COPY(target, origin, field)                 \
  28     do {                                                        \
  29         if (origin.field != NULL && target.field == NULL) {     \
  30             target.field = origin.field;                        \
  31         }                                                       \
  32     } while (0)
  33 
  34 static int
  35 pmix_pinstalldirs_base_open(pmix_mca_base_open_flag_t flags)
  36 {
  37     pmix_mca_base_component_list_item_t *component_item;
  38     int ret;
  39 
  40     ret = pmix_mca_base_framework_components_open(&pmix_pinstalldirs_base_framework, flags);
  41     if (PMIX_SUCCESS != ret) {
  42         return ret;
  43     }
  44 
  45     PMIX_LIST_FOREACH(component_item, &pmix_pinstalldirs_base_framework.framework_components, pmix_mca_base_component_list_item_t) {
  46         const pmix_pinstalldirs_base_component_t *component =
  47             (const pmix_pinstalldirs_base_component_t *) component_item->cli_component;
  48 
  49         /* copy over the data, if something isn't already there */
  50         CONDITIONAL_COPY(pmix_pinstall_dirs, component->install_dirs_data,
  51                          prefix);
  52         CONDITIONAL_COPY(pmix_pinstall_dirs, component->install_dirs_data,
  53                          exec_prefix);
  54         CONDITIONAL_COPY(pmix_pinstall_dirs, component->install_dirs_data,
  55                          bindir);
  56         CONDITIONAL_COPY(pmix_pinstall_dirs, component->install_dirs_data,
  57                          sbindir);
  58         CONDITIONAL_COPY(pmix_pinstall_dirs, component->install_dirs_data,
  59                          libexecdir);
  60         CONDITIONAL_COPY(pmix_pinstall_dirs, component->install_dirs_data,
  61                          datarootdir);
  62         CONDITIONAL_COPY(pmix_pinstall_dirs, component->install_dirs_data,
  63                          datadir);
  64         CONDITIONAL_COPY(pmix_pinstall_dirs, component->install_dirs_data,
  65                          sysconfdir);
  66         CONDITIONAL_COPY(pmix_pinstall_dirs, component->install_dirs_data,
  67                          sharedstatedir);
  68         CONDITIONAL_COPY(pmix_pinstall_dirs, component->install_dirs_data,
  69                          localstatedir);
  70         CONDITIONAL_COPY(pmix_pinstall_dirs, component->install_dirs_data,
  71                          libdir);
  72         CONDITIONAL_COPY(pmix_pinstall_dirs, component->install_dirs_data,
  73                          includedir);
  74         CONDITIONAL_COPY(pmix_pinstall_dirs, component->install_dirs_data,
  75                          infodir);
  76         CONDITIONAL_COPY(pmix_pinstall_dirs, component->install_dirs_data,
  77                          mandir);
  78         CONDITIONAL_COPY(pmix_pinstall_dirs, component->install_dirs_data,
  79                          pmixdatadir);
  80         CONDITIONAL_COPY(pmix_pinstall_dirs, component->install_dirs_data,
  81                          pmixlibdir);
  82         CONDITIONAL_COPY(pmix_pinstall_dirs, component->install_dirs_data,
  83                          pmixincludedir);
  84     }
  85 
  86     /* expand out all the fields */
  87     pmix_pinstall_dirs.prefix =
  88         pmix_pinstall_dirs_expand_setup(pmix_pinstall_dirs.prefix);
  89     pmix_pinstall_dirs.exec_prefix =
  90         pmix_pinstall_dirs_expand_setup(pmix_pinstall_dirs.exec_prefix);
  91     pmix_pinstall_dirs.bindir =
  92         pmix_pinstall_dirs_expand_setup(pmix_pinstall_dirs.bindir);
  93     pmix_pinstall_dirs.sbindir =
  94         pmix_pinstall_dirs_expand_setup(pmix_pinstall_dirs.sbindir);
  95     pmix_pinstall_dirs.libexecdir =
  96         pmix_pinstall_dirs_expand_setup(pmix_pinstall_dirs.libexecdir);
  97     pmix_pinstall_dirs.datarootdir =
  98         pmix_pinstall_dirs_expand_setup(pmix_pinstall_dirs.datarootdir);
  99     pmix_pinstall_dirs.datadir =
 100         pmix_pinstall_dirs_expand_setup(pmix_pinstall_dirs.datadir);
 101     pmix_pinstall_dirs.sysconfdir =
 102         pmix_pinstall_dirs_expand_setup(pmix_pinstall_dirs.sysconfdir);
 103     pmix_pinstall_dirs.sharedstatedir =
 104         pmix_pinstall_dirs_expand_setup(pmix_pinstall_dirs.sharedstatedir);
 105     pmix_pinstall_dirs.localstatedir =
 106         pmix_pinstall_dirs_expand_setup(pmix_pinstall_dirs.localstatedir);
 107     pmix_pinstall_dirs.libdir =
 108         pmix_pinstall_dirs_expand_setup(pmix_pinstall_dirs.libdir);
 109     pmix_pinstall_dirs.includedir =
 110         pmix_pinstall_dirs_expand_setup(pmix_pinstall_dirs.includedir);
 111     pmix_pinstall_dirs.infodir =
 112         pmix_pinstall_dirs_expand_setup(pmix_pinstall_dirs.infodir);
 113     pmix_pinstall_dirs.mandir =
 114         pmix_pinstall_dirs_expand_setup(pmix_pinstall_dirs.mandir);
 115     pmix_pinstall_dirs.pmixdatadir =
 116         pmix_pinstall_dirs_expand_setup(pmix_pinstall_dirs.pmixdatadir);
 117     pmix_pinstall_dirs.pmixlibdir =
 118         pmix_pinstall_dirs_expand_setup(pmix_pinstall_dirs.pmixlibdir);
 119     pmix_pinstall_dirs.pmixincludedir =
 120         pmix_pinstall_dirs_expand_setup(pmix_pinstall_dirs.pmixincludedir);
 121 
 122 #if 0
 123     fprintf(stderr, "prefix:         %s\n", pmix_pinstall_dirs.prefix);
 124     fprintf(stderr, "exec_prefix:    %s\n", pmix_pinstall_dirs.exec_prefix);
 125     fprintf(stderr, "bindir:         %s\n", pmix_pinstall_dirs.bindir);
 126     fprintf(stderr, "sbindir:        %s\n", pmix_pinstall_dirs.sbindir);
 127     fprintf(stderr, "libexecdir:     %s\n", pmix_pinstall_dirs.libexecdir);
 128     fprintf(stderr, "datarootdir:    %s\n", pmix_pinstall_dirs.datarootdir);
 129     fprintf(stderr, "datadir:        %s\n", pmix_pinstall_dirs.datadir);
 130     fprintf(stderr, "sysconfdir:     %s\n", pmix_pinstall_dirs.sysconfdir);
 131     fprintf(stderr, "sharedstatedir: %s\n", pmix_pinstall_dirs.sharedstatedir);
 132     fprintf(stderr, "localstatedir:  %s\n", pmix_pinstall_dirs.localstatedir);
 133     fprintf(stderr, "libdir:         %s\n", pmix_pinstall_dirs.libdir);
 134     fprintf(stderr, "includedir:     %s\n", pmix_pinstall_dirs.includedir);
 135     fprintf(stderr, "infodir:        %s\n", pmix_pinstall_dirs.infodir);
 136     fprintf(stderr, "mandir:         %s\n", pmix_pinstall_dirs.mandir);
 137     fprintf(stderr, "pkgdatadir:     %s\n", pmix_pinstall_dirs.pkgdatadir);
 138     fprintf(stderr, "pkglibdir:      %s\n", pmix_pinstall_dirs.pkglibdir);
 139     fprintf(stderr, "pkgincludedir:  %s\n", pmix_pinstall_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 PMIX_SUCCESS;
 146 }
 147 
 148 
 149 static int
 150 pmix_pinstalldirs_base_close(void)
 151 {
 152     free(pmix_pinstall_dirs.prefix);
 153     free(pmix_pinstall_dirs.exec_prefix);
 154     free(pmix_pinstall_dirs.bindir);
 155     free(pmix_pinstall_dirs.sbindir);
 156     free(pmix_pinstall_dirs.libexecdir);
 157     free(pmix_pinstall_dirs.datarootdir);
 158     free(pmix_pinstall_dirs.datadir);
 159     free(pmix_pinstall_dirs.sysconfdir);
 160     free(pmix_pinstall_dirs.sharedstatedir);
 161     free(pmix_pinstall_dirs.localstatedir);
 162     free(pmix_pinstall_dirs.libdir);
 163     free(pmix_pinstall_dirs.includedir);
 164     free(pmix_pinstall_dirs.infodir);
 165     free(pmix_pinstall_dirs.mandir);
 166     free(pmix_pinstall_dirs.pmixdatadir);
 167     free(pmix_pinstall_dirs.pmixlibdir);
 168     free(pmix_pinstall_dirs.pmixincludedir);
 169     memset (&pmix_pinstall_dirs, 0, sizeof (pmix_pinstall_dirs));
 170 
 171     return pmix_mca_base_framework_components_close (&pmix_pinstalldirs_base_framework, NULL);
 172 }
 173 
 174 /* Declare the pinstalldirs framework */
 175 PMIX_MCA_BASE_FRAMEWORK_DECLARE(pmix, pinstalldirs, NULL, NULL, pmix_pinstalldirs_base_open,
 176                                 pmix_pinstalldirs_base_close, mca_pinstalldirs_base_static_components,
 177                                 PMIX_MCA_BASE_FRAMEWORK_FLAG_NOREGISTER | PMIX_MCA_BASE_FRAMEWORK_FLAG_NO_DSO);

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