SolidCode / SolidPython

A python frontend for solid modelling that compiles to OpenSCAD
1.12k stars 174 forks source link

_find_library resolves path in a uncommon order #176

Closed jeff-dh closed 2 years ago

jeff-dh commented 3 years ago
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 1a1d97c8ce0603fbd4ebe69d9d2d2f589da1f644)

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?