This source file includes following definitions.
- pmix_pinstalldirs_base_open
- pmix_pinstalldirs_base_close
1
2
3
4
5
6
7
8
9
10
11
12
13
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
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
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
143
144
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
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);