Skip to content

Commit 60139f6

Browse files
Fix: Error on second run "Because {app} depends on flet_{package} from path which doesn't exist" (#4958)
Fix #4955
1 parent b3af267 commit 60139f6

File tree

1 file changed

+17
-5
lines changed
  • sdk/python/packages/flet-cli/src/flet_cli/commands

1 file changed

+17
-5
lines changed

sdk/python/packages/flet-cli/src/flet_cli/commands/build.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ def __init__(self, parser: argparse.ArgumentParser) -> None:
7474
self.build_dir = None
7575
self.flutter_dir: Optional[Path] = None
7676
self.flutter_packages_dir = None
77+
self.flutter_packages_temp_dir = None
7778
self.flutter_exe = None
7879
self.skip_flutter_doctor = get_bool_env_var("FLET_CLI_SKIP_FLUTTER_DOCTOR")
7980
self.no_rich_output = get_bool_env_var("FLET_CLI_NO_RICH_OUTPUT")
@@ -684,6 +685,9 @@ def initialize_build(self):
684685
self.build_dir = self.python_app_path.joinpath("build")
685686
self.flutter_dir = self.build_dir.joinpath("flutter")
686687
self.flutter_packages_dir = self.build_dir.joinpath("flutter-packages")
688+
self.flutter_packages_temp_dir = self.build_dir.joinpath(
689+
"flutter-packages-temp"
690+
)
687691
self.out_dir = (
688692
Path(self.options.output_dir).resolve()
689693
if self.options.output_dir
@@ -1537,7 +1541,7 @@ def package_python_app(self):
15371541
assert self.package_app_path
15381542
assert self.build_dir
15391543
assert self.flutter_dir
1540-
assert self.flutter_packages_dir
1544+
assert self.flutter_packages_temp_dir
15411545

15421546
hash = HashStamp(self.build_dir / ".hash" / "package")
15431547

@@ -1600,10 +1604,12 @@ def package_python_app(self):
16001604
)
16011605

16021606
# flutter-packages variable
1603-
if self.flutter_packages_dir.exists():
1604-
shutil.rmtree(self.flutter_packages_dir)
1607+
if self.flutter_packages_temp_dir.exists():
1608+
shutil.rmtree(self.flutter_packages_temp_dir)
16051609

1606-
package_env["SERIOUS_PYTHON_FLUTTER_PACKAGES"] = str(self.flutter_packages_dir)
1610+
package_env["SERIOUS_PYTHON_FLUTTER_PACKAGES"] = str(
1611+
self.flutter_packages_temp_dir
1612+
)
16071613

16081614
# exclude
16091615
exclude_list = ["build"]
@@ -1727,14 +1733,20 @@ def get_bool_setting(self, cli_option, pyproj_setting, default_value):
17271733

17281734
def register_flutter_extensions(self):
17291735
assert self.flutter_packages_dir
1736+
assert self.flutter_packages_temp_dir
17301737
assert isinstance(self.flutter_dependencies, dict)
17311738
assert self.template_data
17321739

1733-
if not self.flutter_packages_dir.exists():
1740+
if not self.flutter_packages_temp_dir.exists():
17341741
return
17351742

17361743
self.status.update(f"[bold blue]Registering Flutter user extensions...")
17371744

1745+
# copy packages from temp to permanent location
1746+
if self.flutter_packages_dir.exists():
1747+
shutil.rmtree(self.flutter_packages_dir, ignore_errors=True)
1748+
shutil.move(self.flutter_packages_temp_dir, self.flutter_packages_dir)
1749+
17381750
for fp in os.listdir(self.flutter_packages_dir):
17391751
if (self.flutter_packages_dir / fp / "pubspec.yaml").exists():
17401752
ext_dir = str(self.flutter_packages_dir / fp)

0 commit comments

Comments
 (0)