SolidCode/SolidPython

_find_library resolves path in a uncommon order

jeff-dh opened this issue · 0 comments

def _find_library(library_name: PathStr) -> Path:
            result = Path(library_name)
            if not result.is_absolute():
                paths = _openscad_library_paths()
                for p in paths:
                    f = p / result
                    # print(f'Checking {f} -> {f.exists()}')
                    if f.exists():
                        result = f
            return result

This means a file found in paths[2] overwrites a file in paths[0] and since openscad_library_paths returns [".", os.env_paths, "platform_path"] if I understand it correctly, a file in the "platform_path" (.local/share/openscad/libraries/) would overwrite a local file (./). I think this is not the way resolving filenames are usually working.

I think the line result = f should be return f.
(cf resolve_scad_filename from 1a1d97c)

Furthermore what about system include path? At least on my system MCAD is also installed in /usr/share/openscad/libraries/MCAD I guess this should be added to _openscad_library_paths, right?