Skip to content

Commit 9445f96

Browse files
committed
Unify site-packages handling and copy for Pyodide
Compute a single sitePackagesRoot (defaulting to build/site-packages but overridden by the environment variable) before installing requirements. Use that path when installing requirements, and for the Pyodide platform copy the site-packages into the temp app archive directory (defaultSitePackagesDir). Also cleans up nullable logic and minor variable handling.
1 parent 43b687c commit 9445f96

1 file changed

Lines changed: 27 additions & 15 deletions

File tree

src/serious_python/bin/package_command.dart

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -260,23 +260,20 @@ class PackageCommand extends Command {
260260
await cleanupDir(tempDir, allJunkFiles);
261261
}
262262

263-
// install requirements
264-
if (requirements.isNotEmpty && !skipSitePackages) {
265-
String? sitePackagesRoot;
266-
267-
if (platform != "Pyodide") {
268-
if (Platform.environment
269-
.containsKey(sitePackagesEnvironmentVariable)) {
270-
sitePackagesRoot =
271-
Platform.environment[sitePackagesEnvironmentVariable];
272-
}
273-
if (sitePackagesRoot == null || sitePackagesRoot.isEmpty) {
274-
sitePackagesRoot = path.join(currentPath, "build", "site-packages");
275-
}
276-
} else {
277-
sitePackagesRoot = path.join(tempDir.path, defaultSitePackagesDir);
263+
// site-packages root
264+
String sitePackagesRoot =
265+
path.join(currentPath, "build", "site-packages");
266+
if (Platform.environment
267+
.containsKey(sitePackagesEnvironmentVariable)) {
268+
final envValue =
269+
Platform.environment[sitePackagesEnvironmentVariable];
270+
if (envValue != null && envValue.isNotEmpty) {
271+
sitePackagesRoot = envValue;
278272
}
273+
}
279274

275+
// install requirements
276+
if (requirements.isNotEmpty && !skipSitePackages) {
280277
if (await Directory(sitePackagesRoot).exists()) {
281278
await for (var f in Directory(sitePackagesRoot)
282279
.list()
@@ -432,6 +429,21 @@ class PackageCommand extends Command {
432429
}
433430
}
434431

432+
// copy site packages to temp dir for web platform
433+
if (platform == "Pyodide") {
434+
final sitePackagesSrcDir = Directory(sitePackagesRoot);
435+
if (await sitePackagesSrcDir.exists()) {
436+
stdout.writeln("Copying site packages to app archive");
437+
final webPkgDir =
438+
Directory(path.join(tempDir.path, defaultSitePackagesDir));
439+
if (!await webPkgDir.exists()) {
440+
await webPkgDir.create(recursive: true);
441+
}
442+
await copyDirectory(
443+
sitePackagesSrcDir, webPkgDir, sitePackagesSrcDir.path, []);
444+
}
445+
}
446+
435447
// create archive
436448
stdout.writeln(
437449
"Creating app archive at ${dest.path} from a temp directory");

0 commit comments

Comments
 (0)