On 16/12/2024 02:12, Ethan McCue wrote:
I am experimenting with making a package repository where modules are
the artifacts (bundled as JMODs) and not jars. In this context we lack
information about what version a particular module requires or what
provider to get that module from. What I *can* do is say "if you use
this java.base, you must use this java.xml" and so on, but given a two
java.xml modules I can't say without those hashes which one you are
allowed to use when constructing a "module set".
This is relevant also if someone uploads some of their own modules
where the hashes don't line up.
Just to say again that theses module hashes are for tightly coupled
modules, they aren't the same as hashes that might be generated when
uploading a module artifact to a repository. For example, a build of
some project might produce 3 modules, one of which uses a qualified
export to make its internal API accessible to other two modules. That
internal API might isn't a stable interface. The hash that the jar or
jmod tools can generate at packaging time is used to tie the 3 modules
and prevent accidental mixing of modules from Monday's build with the
modules from Friday's build.
One thing that may be useful to your experiment is the
"requires_version" in the requires entries of the Module attribute. This
is where a compiler can record the version string of a dependency. It
might be closer to what you are looking for.
-Alan