@@ -123,19 +123,47 @@ def configure(
123123 }
124124
125125 # Add any extra CMake modules
126- eps = metadata .entry_points (group = "cmake.module" )
127- self .config .module_dirs .extend (resources .files (ep .load ()) for ep in eps )
126+ module_dirs_dict = {
127+ ep .name : resources .files (ep .load ())
128+ for ep in metadata .entry_points (group = "cmake.module" )
129+ }
130+ if isinstance (self .settings .search .modules , dict ):
131+ # Allow to override any entry-point definition
132+ module_dirs_dict .update (self .settings .search .modules )
133+ module_dirs = list (module_dirs_dict .values ())
134+ if isinstance (self .settings .search .modules , list ):
135+ # If it was a list, append to the entry-point definitions
136+ module_dirs += self .settings .search .modules
137+ # Remove any empty paths
138+ module_dirs = [path for path in module_dirs if path ]
139+ self .config .module_dirs .extend (module_dirs )
128140
129141 # Add any extra CMake prefixes
130- eps = metadata .entry_points (group = "cmake.prefix" )
131- self .config .prefix_dirs .extend (resources .files (ep .load ()) for ep in eps )
142+ prefix_dirs_dict = {
143+ ep .name : resources .files (ep .load ())
144+ for ep in metadata .entry_points (group = "cmake.prefix" )
145+ }
146+ if isinstance (self .settings .search .prefixes , dict ):
147+ # Allow to override any entry-point definition
148+ prefix_dirs_dict .update (self .settings .search .prefixes )
149+ prefix_dirs = list (prefix_dirs_dict .values ())
150+ if isinstance (self .settings .search .prefixes , list ):
151+ # If it was a list, append to the entry-point definitions
152+ prefix_dirs += self .settings .search .prefixes
153+ # Remove any empty paths
154+ prefix_dirs = [path for path in prefix_dirs if path ]
155+ self .config .prefix_dirs .extend (prefix_dirs )
132156
133157 # Add all CMake roots
134- eps = metadata .entry_points (group = "cmake.root" )
158+ prefix_roots = {
159+ ep .name : resources .files (ep .load ())
160+ for ep in metadata .entry_points (group = "cmake.root" )
161+ }
135162 # TODO: Check for unique uppercase names
136- self .config .prefix_roots .update (
137- {ep .name : resources .files (ep .load ()) for ep in eps }
138- )
163+ prefix_roots .update (self .settings .search .roots )
164+ # Remove any empty paths
165+ prefix_roots = {pkg : path for pkg , path in prefix_roots .items () if path }
166+ self .config .prefix_roots .update (prefix_roots )
139167
140168 # Add site-packages to the prefix path for CMake
141169 site_packages = Path (sysconfig .get_path ("purelib" ))
0 commit comments