Skip to content

Commit ebf62cd

Browse files
tomasstupkaelkorchi
authored andcommitted
skip getIncludeVfsRootDir from GraalPy extension
(cherry picked from commit 2e447fd)
1 parent 111e3d5 commit ebf62cd

File tree

3 files changed

+35
-20
lines changed

3 files changed

+35
-20
lines changed

graalpython/graalpy-gradle-plugin/src/main/java/org/graalvm/python/GraalPyGradlePlugin.java

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
import java.util.List;
5959

6060
import static org.graalvm.python.embedding.tools.vfs.VFSUtils.GRAALPY_GROUP_ID;
61+
import static org.graalvm.python.embedding.tools.vfs.VFSUtils.VFS_ROOT;
6162

6263

6364
public abstract class GraalPyGradlePlugin implements Plugin<Project> {
@@ -67,7 +68,8 @@ public abstract class GraalPyGradlePlugin implements Plugin<Project> {
6768
private static final String PYTHON_COMMUNITY_ARTIFACT_ID = "python-community";
6869
private static final String PYTHON_ARTIFACT_ID = "python";
6970
private static final String GRAALPY_GRADLE_PLUGIN_TASK_GROUP = "graalPy";
70-
private static final String DEFAULT_WRAPPER_DIRECTORY = "python-generated";
71+
private static final String DEFAULT_RESOURCES_DIRECTORY = "graalpy-resources";
72+
private static final String GRAALPY_META_INF_DIRECTORY = "graalpy-meta-inf";
7173
private static final String GRAALPY_RESOURCES_TASK = "graalPyResources";
7274
private static final String GRAALPY_NATIVE_IMAGE_CONFIG_TASK = "graalPyNativeImageConfig";
7375
private static final String GRAALPY_VFS_FILESLIST_TASK = "graalPyVFSFilesList";
@@ -86,51 +88,52 @@ public void apply(Project project) {
8688
extension.getPythonHome().getExcludes().convention(Collections.emptyList());
8789
extension.getPackages().convention(Collections.emptyList());
8890

89-
TaskProvider<ResourcesTask> installPackagesTask = project.getTasks().register(GRAALPY_RESOURCES_TASK, ResourcesTask.class);
90-
installPackagesTask.configure(t -> {
91+
TaskProvider<ResourcesTask> resourcesTask = project.getTasks().register(GRAALPY_RESOURCES_TASK, ResourcesTask.class);
92+
resourcesTask.configure(t -> {
9193
t.getIncludes().set(extension.getPythonHome().getIncludes());
9294
t.getExcludes().set(extension.getPythonHome().getExcludes());
9395
t.getPackages().set(extension.getPackages());
94-
t.getIncludeVfsRoot().set(extension.getIncludeVfsRootDir());
9596

96-
t.getOutput().set(extension.getPythonResourcesDirectory());
97+
if(extension.getPythonResourcesDirectory().isPresent()) {
98+
t.getOutput().set(extension.getPythonResourcesDirectory());
99+
t.getIncludeVfsRoot().set(false);
100+
} else {
101+
t.getOutput().set(project.getLayout().getBuildDirectory().dir(DEFAULT_RESOURCES_DIRECTORY));
102+
t.getIncludeVfsRoot().set(true);
103+
}
97104

98105
t.setGroup(GRAALPY_GRADLE_PLUGIN_TASK_GROUP);
99106
});
100107

101-
TaskProvider<NativeImageConfigTask> generateManifestTask = project.getTasks().register(GRAALPY_NATIVE_IMAGE_CONFIG_TASK, NativeImageConfigTask.class);
102-
project.getTasks().getByName(JavaPlugin.JAR_TASK_NAME, t -> ((Jar) t).getMetaInf().from(generateManifestTask));
103-
generateManifestTask.configure(t -> {
104-
t.getManifestOutputDir().convention(project.getLayout().getBuildDirectory().dir("GRAAL-META-INF"));
108+
TaskProvider<NativeImageConfigTask> nativeImageConfigTask = project.getTasks().register(GRAALPY_NATIVE_IMAGE_CONFIG_TASK, NativeImageConfigTask.class);
109+
project.getTasks().getByName(JavaPlugin.JAR_TASK_NAME, t -> ((Jar) t).getMetaInf().from(nativeImageConfigTask));
110+
nativeImageConfigTask.configure(t -> {
111+
t.getManifestOutputDir().convention(project.getLayout().getBuildDirectory().dir(GRAALPY_META_INF_DIRECTORY));
105112
t.setGroup(GRAALPY_GRADLE_PLUGIN_TASK_GROUP);
106113
});
107114

108-
TaskProvider<VFSFilesListTask> generateVFSFilesListTask = project.getTasks().register(GRAALPY_VFS_FILESLIST_TASK, VFSFilesListTask.class);
109-
generateVFSFilesListTask.configure(t -> {
115+
TaskProvider<VFSFilesListTask> vfsFilesListTask = project.getTasks().register(GRAALPY_VFS_FILESLIST_TASK, VFSFilesListTask.class);
116+
vfsFilesListTask.configure(t -> {
110117
t.getResourcesDir().convention((((ProcessResources) project.getTasks().getByName(JavaPlugin.PROCESS_RESOURCES_TASK_NAME)).getDestinationDir()));
111118
t.setGroup(GRAALPY_GRADLE_PLUGIN_TASK_GROUP);
112119
});
113120
project.getTasks().getByName(JavaPlugin.PROCESS_RESOURCES_TASK_NAME, t -> t.finalizedBy(GRAALPY_VFS_FILESLIST_TASK));
114121

115122
project.afterEvaluate(p -> {
116123
checkAndAddDependencies();
117-
118124
if (!extension.getPythonResourcesDirectory().isPresent()) {
119-
((ProcessResources) project.getTasks().getByName(JavaPlugin.PROCESS_RESOURCES_TASK_NAME)).with(project.copySpec().from(installPackagesTask));
125+
((ProcessResources) project.getTasks().getByName(JavaPlugin.PROCESS_RESOURCES_TASK_NAME)).with(project.copySpec().from(resourcesTask));
126+
} else {
127+
project.getTasks().getByName(JavaPlugin.CLASSES_TASK_NAME, t -> t.dependsOn(GRAALPY_RESOURCES_TASK));
120128
}
121-
122-
// Provide the default value after the isPresent check, otherwise isPresent always returns true
123-
extension.getPythonResourcesDirectory().convention(project.getLayout().getBuildDirectory().dir(DEFAULT_WRAPPER_DIRECTORY));
124129
});
125-
126130
}
127131

128132
private void checkAndAddDependencies() {
129133
project.getDependencies().add(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, "%s:%s:%s".formatted(GRAALPY_GROUP_ID, PYTHON_LAUNCHER_ARTIFACT_ID, getGraalPyVersion(project)));
130134
project.getDependencies().add(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, "%s:%s:%s".formatted(GRAALPY_GROUP_ID, PYTHON_EMBEDDING_ARTIFACT_ID, getGraalPyVersion(project)));
131135
}
132136

133-
134137
public static String getGraalPyVersion(Project project) {
135138
return getGraalPyDependency(project).getVersion();
136139
}

graalpython/graalpy-gradle-plugin/src/main/java/org/graalvm/python/dsl/GraalPyExtension.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,21 @@
4747
import org.gradle.api.tasks.Nested;
4848

4949
public interface GraalPyExtension {
50+
51+
/**
52+
* External directory supposed to be populated with python resources, namely graalpy stdlib and venv.
53+
* It is either present or not.
54+
*/
5055
DirectoryProperty getPythonResourcesDirectory();
5156

57+
/**
58+
* Determines third party python packages to be installed for graalpy usage.
59+
*/
5260
ListProperty<String> getPackages();
5361

54-
Property<Boolean> getIncludeVfsRootDir();
55-
62+
/**
63+
* Determines what parts of graalpy stdlib are supposed to be available for graalpy.
64+
*/
5665
@Nested
5766
PythonHomeInfo getPythonHome();
5867

graalpython/graalpy-gradle-plugin/src/main/java/org/graalvm/python/dsl/PythonHomeInfo.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@
4242

4343
import org.gradle.api.provider.SetProperty;
4444

45+
/**
46+
* Determines what parts of graalpy stdlib are supposed to be avalable for graalpy.
47+
*/
4548
public interface PythonHomeInfo {
4649
SetProperty<String> getIncludes();
4750
SetProperty<String> getExcludes();

0 commit comments

Comments
 (0)