56
56
import org .gradle .api .file .Directory ;
57
57
import org .gradle .api .file .DirectoryProperty ;
58
58
import org .gradle .api .file .ProjectLayout ;
59
+ import org .gradle .api .file .RegularFile ;
59
60
import org .gradle .api .plugins .JavaPlugin ;
60
61
import org .gradle .api .plugins .JavaPluginExtension ;
61
62
import org .gradle .api .provider .Provider ;
63
+ import org .gradle .api .tasks .Internal ;
62
64
import org .gradle .api .tasks .SourceSet ;
63
65
import org .gradle .api .tasks .TaskProvider ;
64
66
import org .gradle .jvm .tasks .Jar ;
74
76
75
77
import static org .graalvm .python .embedding .tools .vfs .VFSUtils .GRAALPY_GROUP_ID ;
76
78
import static org .graalvm .python .embedding .tools .vfs .VFSUtils .VFS_ROOT ;
79
+ import static org .graalvm .python .embedding .tools .vfs .VFSUtils .VFS_VENV ;
77
80
78
81
public abstract class GraalPyGradlePlugin implements Plugin <Project > {
79
82
private static final String LAUNCHER_CONFIGURATION_NAME = "pythonLauncherClasspath" ;
@@ -211,8 +214,6 @@ private TaskProvider<InstallPackagesTask> registerInstallPackagesTask(Project pr
211
214
private TaskProvider <LockPackagesTask > registerLockPackagesTask (Project project , Configuration launcherClasspath , GraalPyExtension extension ) {
212
215
return project .getTasks ().register (GRAALPY_LOCK_PACKAGES_TASK , LockPackagesTask .class , t -> {
213
216
registerPackagesTask (project , launcherClasspath , extension , t );
214
- // TODO probably not necessary
215
- // t.getOutputs().upToDateWhen(tt -> false);
216
217
});
217
218
}
218
219
@@ -227,11 +228,18 @@ private void registerPackagesTask(Project project, Configuration launcherClasspa
227
228
t .getPackages ().set (extension .getPackages ());
228
229
229
230
DirectoryProperty externalDirectory = extension .getExternalDirectory ();
230
- t .getOutput ().convention (externalDirectory .orElse (extension .getPythonResourcesDirectory ().orElse (buildDirectory .dir (DEFAULT_RESOURCES_DIRECTORY ))));
231
- t .getIncludeVfsRoot ().convention (externalDirectory .map (d -> false ).orElse (extension .getPythonResourcesDirectory ().map (d -> false ).orElse (true )));
232
- t .getResourceDirectory ().set (extension .getResourceDirectory ());
231
+ Directory output = externalDirectory .orElse (extension .getPythonResourcesDirectory ().orElse (buildDirectory .dir (DEFAULT_RESOURCES_DIRECTORY ))).get ();
232
+ t .getOutput ().convention (output );
233
233
234
- t .getGraalPyLockFile ().convention (extension .getGraalPyLockFile ().orElse (projectDirectory .file (GRAALPY_LOCK_FILE )));
234
+ String vfsRoot = externalDirectory .isPresent () ? "" : extension .getResourceDirectory ().getOrElse (VFS_ROOT );
235
+ t .getVenvDirectory ().set (output .getAsFile ().toPath ().resolve (vfsRoot ).resolve (VFS_VENV ).toFile ());
236
+
237
+ RegularFile graalPyLockFile = extension .getGraalPyLockFile ().orElse (projectDirectory .file (GRAALPY_LOCK_FILE )).get ();
238
+ File glfFile = graalPyLockFile .getAsFile ();
239
+ if (!glfFile .isAbsolute ()) {
240
+ graalPyLockFile = projectDirectory .file (glfFile .getPath ());
241
+ }
242
+ t .getGraalPyLockFile ().set (graalPyLockFile );
235
243
236
244
t .setGroup (GRAALPY_GRADLE_PLUGIN_TASK_GROUP );
237
245
}
0 commit comments