Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Manage native classifier artifacts consistently: all platforms? or current platform only? #241

Open
ctrueden opened this issue Jun 14, 2023 · 1 comment

Comments

@ctrueden
Copy link
Member

ctrueden commented Jun 14, 2023

For jogamp artifacts, we currently manually articulate all platforms for jogamp components in the <dependencyManagement> section—e.g.:

<dependency>
	<groupId>org.jogamp.gluegen</groupId>
	<artifactId>gluegen-rt</artifactId>
	<version>${org.jogamp.gluegen.gluegen-rt.version}</version>
	<classifier>natives-android-aarch64</classifier>
</dependency>

Even though we have nice properties defined for use downstream:

<scijava.natives.classifier.gluegen>${scijava.natives.classifier.jogamp}</scijava.natives.classifier.gluegen>
<scijava.natives.classifier.joal>${scijava.natives.classifier.jogamp}</scijava.natives.classifier.joal>
<scijava.natives.classifier.jocl>${scijava.natives.classifier.jogamp}</scijava.natives.classifier.jocl>
<scijava.natives.classifier.jogl>${scijava.natives.classifier.jogamp}</scijava.natives.classifier.jogl>

I don't remember for sure, but I might have done this because regardless of platform, we still want to manage all native classifiers for downstream consumers to depend upon should they so choose. (This seems like it should be rare to me, but what do I know, maybe it's helpful for debugging sometimes to depend on the natives-linux-amd64 artifact from a Windows box?)

But regardless of whether this pattern is considered good or not, we are currently inconsistent with how we handle the javacpp component native classifiers, which are each only managed for the current platform.

We need to make a decision about which approach is best: "all platforms always" (our current approach for jogamp natives) or "current platform only" (our current approach for javacpp natives).

@ctrueden
Copy link
Member Author

Given the fact that Gradle does not properly resolve these profile-triggered property values when pom-scijava is used as a platform, I think "all platforms always" is probably a better bet, since it is more explicit and reduces reliance on profile activation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant