fsfe / reuse-tool

reuse is a tool for compliance with the REUSE recommendations.
https://reuse.software
393 stars 147 forks source link

Reuse 4 is slow #1033

Closed nijel closed 1 week ago

nijel commented 3 months ago

Reuse 4.0.2 takes 8 seconds to start without any parameters, just to show help. Reuse 3.0.2 takes 0.2 second.

This is caused by scanning for REUSE.toml in all subdirectories:

https://github.com/fsfe/reuse-tool/blob/6dd91b9aab5cd808c6fda48c88f9d5e399db30fb/src/reuse/global_licensing.py#L549-L552

So this goes through all subdirectories including virtual environments, build caches and whatever else might appear in the current directory.

Reuse 4.0.2: ``` $ time reuse použití: reuse [-h] [--debug] [--suppress-deprecation] [--include-submodules] [--include-meson-subprojects] [--no-multiprocessing] [--root PATH] [--version] {annotate,download,lint,spdx,supported-licenses,supported-licences,convert-dep5} ... reuse je nástrojem pro dodržování doporučení REUSE. Další informace naleznete na adrese a online dokumentaci na adrese . Tato verze reuse je kompatibilní s verzí 3.2 specifikace REUSE. Podpořte činnost FSFE: Dary jsou pro naši sílu a nezávislost zásadní. Umožňují nám pokračovat v práci pro svobodný software všude tam, kde je to nutné. Zvažte prosím možnost přispět na . options: -h, --help zobrazit tuto nápovědu a ukončit --debug povolit příkazy pro ladění --suppress-deprecation hide deprecation warnings --include-submodules nepřeskakovat submoduly systému Git --include-meson-subprojects nepřeskakovat podprojekty Meson --no-multiprocessing nepoužívat multiprocessing --root PATH definovat kořen projektu --version zobrazit číslo verze programu a ukončit jej dílčí příkazy: {annotate,download,lint,spdx,supported-licenses,supported-licences,convert-dep5} annotate přidání autorských práv a licencí do záhlaví souborů download stáhněte si licenci a umístěte ji do adresáře LICENSES/ lint seznam všech nevyhovujících souborů spdx vytisknout výkaz materiálu projektu ve formátu SPDX supported-licenses (supported-licences) seznam všech podporovaných licencí SPDX convert-dep5 convert .reuse/dep5 to REUSE.toml real 0m8,134s user 0m4,414s sys 0m3,669s ``` Reuse 3.0.2: ``` $ time reuse použití: reuse [-h] [--debug] [--suppress-deprecation] [--include-submodules] [--include-meson-subprojects] [--no-multiprocessing] [--root PATH] [--version] {annotate,download,init,lint,spdx,supported-licenses,supported-licences} ... reuse je nástrojem pro dodržování doporučení REUSE. Další informace naleznete na adrese a online dokumentaci na adrese . Tato verze reuse je kompatibilní s verzí 3.0 specifikace REUSE. Podpořte činnost FSFE: Dary jsou pro naši sílu a nezávislost zásadní. Umožňují nám pokračovat v práci pro svobodný software všude tam, kde je to nutné. Zvažte prosím možnost přispět na . options: -h, --help zobrazit tuto nápovědu a ukončit --debug povolit příkazy pro ladění --suppress-deprecation hide deprecation warnings --include-submodules nepřeskakovat submoduly systému Git --include-meson-subprojects nepřeskakovat podprojekty Meson --no-multiprocessing nepoužívat multiprocessing --root PATH definovat kořen projektu --version zobrazit číslo verze programu a ukončit jej dílčí příkazy: {annotate,download,init,lint,spdx,supported-licenses,supported-licences} annotate přidání autorských práv a licencí do záhlaví souborů download stáhněte si licenci a umístěte ji do adresáře LICENSES/ init inicializace projektu REUSE lint seznam všech nevyhovujících souborů spdx vytisknout výkaz materiálu projektu ve formátu SPDX supported-licenses (supported-licences) seznam všech podporovaných licencí SPDX real 0m0,196s user 0m0,150s sys 0m0,068s ```
carmenbianca commented 3 months ago

Hi @nijel, thanks for the issue! I will take a look at this soon.

carmenbianca commented 2 months ago

I fixed this in #1047, but it's momentarily blocked by the fact that it slightly breaks with the spec. That requires a little more discussion, so there won't be a fix immediately. This is still a priority issue, though.