diff --git a/docs/SETUP.md b/docs/SETUP.md index ff53143..1d47211 100644 --- a/docs/SETUP.md +++ b/docs/SETUP.md @@ -2,7 +2,7 @@ The patch manifest pins Darling to `60ba801decee7a00782f74f6be4c8ffb013f79ff` and records every changed submodule's revision. `scripts/prepare.py` checks each revision before applying patches and never resets an existing checkout to make a patch apply. Re-running it accepts an already-applied patch. -Git LFS must be available before fetching the upstream submodules. The local development checkout had removed prebuilt Swift files from its working directory; that deletion is deliberately not exported. A fresh upstream checkout keeps its original Swift assets and licensing. Do not install Git LFS pointer text as a library. +Git LFS must be available before fetching the upstream submodules. The pinned `darling-swift` submodule's `.lfsconfig` points at the retired `git-lfs.darlinghq.org`, which no longer accepts connections; `prepare.py` redirects that submodule's LFS requests to GitHub, which still serves the objects. Without that override a fresh `git submodule update` blocks with no output right after `src/external/sqlite` is checked out. The local development checkout had removed prebuilt Swift files from its working directory; that deletion is deliberately not exported. A fresh upstream checkout keeps its original Swift assets and licensing. Do not install Git LFS pointer text as a library. `configure.py` renders `@PROJECT_ROOT@`, `@HOST_HOME@`, `@GUEST_HOME@`, `@GUEST_USER@`, `@DPREFIX@` and `@DARLING_SDK@` into ignored local copies. A build-directory symlink preserves the original scripts' relative build layout. The public source files remain machine-independent. diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md index dc16ed6..6744bae 100644 --- a/docs/TROUBLESHOOTING.md +++ b/docs/TROUBLESHOOTING.md @@ -75,6 +75,7 @@ A separate multi-window path stopped the active async presenter when another dif - **Build process killed:** lower parallelism, for example `JOBS=2 ./scripts/build.sh` or `--parallel 1` for an incremental component build. - **Incremental helper cannot find `flags.make` or `link.txt`:** use Unix Makefiles, not Ninja. - **Prebuilt Swift file contains Git LFS pointer text:** install Git LFS and fetch the original upstream assets; pointer text is not a usable library. +- **Submodule fetch stops with no output right after `src/external/sqlite`:** the next submodule is `src/external/swift`, whose pinned `.lfsconfig` points at the retired `git-lfs.darlinghq.org`. The checkout is blocked on that host, not on sqlite. `prepare.py` redirects that submodule's LFS requests to GitHub. To finish a fetch that was interrupted before any patches were applied, run `git -C build/darling-src -c lfs.url=https://github.com/darlinghq/darling-swift.git/info/lfs submodule update --init --recursive --progress`, then re-run `./scripts/build.sh`. Do not run that submodule update once `prepare.py` has applied patches: it resets every submodule working tree to the pinned revision and discards the patches. ## Lower fight FPS than Windows diff --git a/scripts/prepare.py b/scripts/prepare.py index b50f5ba..5b0e761 100755 --- a/scripts/prepare.py +++ b/scripts/prepare.py @@ -13,7 +13,16 @@ if not (source/'.git').exists(): source.parent.mkdir(parents=True,exist_ok=True) run(['git','clone',manifest['upstream'],str(source)]) run(['git','-C',str(source),'checkout','--detach',manifest['revision']]) - run(['git','-C',str(source),'submodule','update','--init','--recursive']) + # Recursive initialization can spend a long time fetching nested repos (and + # Git LFS assets). Explicit progress keeps the last completed submodule + # from looking like the operation that is currently stuck. The pinned + # darling-swift .lfsconfig points at the retired git-lfs.darlinghq.org, so + # fetch that submodule's LFS objects from GitHub, which still serves them; + # otherwise the checkout blocks on the dead host right after sqlite. + print('Initializing Darling submodules (large repositories/LFS assets may take a while)...',flush=True) + run(['git','-C',str(source),'-c','lfs.url=https://github.com/darlinghq/darling-swift.git/info/lfs', + 'submodule','update','--init','--recursive','--progress']) + print('Darling submodules initialized.',flush=True) # Never reset someone else's checkout to make a patch apply. for component in manifest['components']: repo=source/component['path']