File: gradle-debian-helper-hook.patch

package info (click to toggle)
gradle 4.4.1-18
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 85,492 kB
  • sloc: java: 319,990; xml: 14,356; javascript: 4,838; cpp: 4,200; ansic: 1,025; sh: 303; makefile: 66; asm: 17; jsp: 17; objc: 10
file content (42 lines) | stat: -rw-r--r-- 2,944 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Description: Adds a hook in MavenResolver to resolve the artifacts from the system repository
Author: Emmanuel Bourg <ebourg@apache.org>
Forwarded: not-needed
--- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/resolver/MavenResolver.java
+++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/resolver/MavenResolver.java
@@ -122,6 +122,36 @@
     }
 
     protected void doResolveComponentMetaData(ModuleComponentIdentifier moduleComponentIdentifier, ComponentOverrideMetadata prescribedMetaData, BuildableModuleComponentMetaDataResolveResult result) {
+        if (getRoot().toString().contains("/usr/share/maven-repo") && !"false".equals(System.getProperty("gradle-debian-helper.hook.enabled"))) {
+            // Debian system repository detected, call the gradle-debian-helper
+            // hook if available to rewrite the dependencies on the fly
+            try {
+                Class resolverHookClass = Class.forName("org.debian.gradle.plugin.MavenResolverHook");
+                Object hook = resolverHookClass.getMethod("getInstance").invoke(null);
+                java.lang.reflect.Method rewrite = resolverHookClass.getMethod("rewrite", String.class, String.class, String.class, String.class, String.class);
+
+                String groupId = moduleComponentIdentifier.getGroup();
+                String artifactId = moduleComponentIdentifier.getModule();
+                String version = moduleComponentIdentifier.getVersion();
+                String classifier = null;
+                String type = "jar";
+                if (!prescribedMetaData.getArtifacts().isEmpty()) {
+                    IvyArtifactName ivyArtifactName = prescribedMetaData.getArtifacts().iterator().next();
+                    classifier = ivyArtifactName.getClassifier();
+                    type = ivyArtifactName.getType();
+                }
+                java.util.Map<String, String> dependency = (java.util.Map<String, String>) rewrite.invoke(hook, groupId, artifactId, version, type, classifier);
+                if (dependency != null) {
+                    moduleComponentIdentifier = new DefaultModuleComponentIdentifier(dependency.get("groupId"), dependency.get("artifactId"), dependency.get("version"));
+                    prescribedMetaData = new org.gradle.internal.component.model.DefaultComponentOverrideMetadata();
+                    prescribedMetaData.getArtifacts().add(new DefaultIvyArtifactName(dependency.get("artifactId"), dependency.get("type"), dependency.get("type"), dependency.get("classifier")));
+                }
+            } catch (Throwable t) {
+                System.out.println("\tCouldn't resolve system dependency:");
+                t.printStackTrace();
+            }
+        }
+
         if (isIncomplete(moduleComponentIdentifier)) {
             result.missing();
             return;