This topic is not very much interesting for C/C++/D/etc. languages, but
very interesting for Python, Ruby and Rust ecosystems.
In those ecosystems you can get build-time and test-time dependencies
very easily since metadata is pre-populated (doesn't matter how) and
you just need to parse it, but RPM doesn't support generating
As we discussed some time ago with Panu and Florian on IRC this task
splits to 2 different blocks:
1. Pre-BuildRequires -- everything what needs to be installed in order
to unpack archive and parse metadata
2. Make building of SRPM a bit more tricky: first time to build
something what can gather builddeps and then generate full SRPM with
all that stuff.
I was thinking a bit if we should really make different section for
only for generating builddeps (as Panu was asking) and I think it's not
needed and we can (or probably even should) reuse -- for example,
upstream provides wrong metadata (redundant requires or very strict
version which you want to relax), you do sed/patch in %prep and it
should be both same for BuildRequires generation and for real build.
Another question here as well is how do you generate test builddeps:
since we don't have BuildRequires(check), we probably would need to
have BuildRequires and TestRequires generator... but I'm not sure how
to wrap it properly.