What about is the meta data specify file -> library.
(package
(author "Marc Nieper-Wißkirchen")
(license GPL-v3)
..
(defines (sort bubblesort quicksort)
(copy deep shallow))
(libraries ((sort . ((bubblesort . "/lib/sort/bubblesort.scm")
(quicksort . "/lib/sort/quicksort.scm")))
(copy . ((deep . "/lib/copy/deep.scm")
(shallow . "/lib/copy/shalow.scm")))))
(cond-expand
((gambit)
(requires "gitlab.com/r7rs/box"))
...))
...)
The mapping can look completely different, but it can just map the library
definition into package files.
This is a good idea. However, most packages will name their files
according to a clear pattern, e.g.:
(foo) -> "foo.sld"
(bar) -> "bar.sld"
(baz) -> "baz.sld"
...
If we combine this with rewrite rules (* -> "*.sld") then two ideas once
again benefit from each other :)