|
41 | 41 | # use the busybox-w32 ash that mise installs in `_setup_all` (the same |
42 | 42 | # shell `MISE_BASH_PATH` already points at for `shell = "bash"` tasks on |
43 | 43 | # the Windows Docker images). Avoids Git Bash's MSYS fork-emulation |
44 | | - # cygheap pathology -- see OLD_NOTES.md for the captured error |
45 | | - # signatures and the diagnostic harness that found the root cause. The |
46 | | - # path matches the version pin in `.mise/config.windows.toml`'s |
47 | | - # [tools."http:busybox"] entry. The `Set HOME = USERPROFILE on Windows` |
48 | | - # step below explicitly overrides back to `shell: bash` because it |
49 | | - # runs BEFORE `Install mise + tools` (which is what installs |
50 | | - # busybox-w32). All later run-bodies use ash. |
| 44 | + # cygheap pathology on long-running mise task chains. The path matches |
| 45 | + # the version pin in `.mise/config.windows.toml`'s [tools."http:busybox"] |
| 46 | + # entry. |
51 | 47 | defaults: |
52 | 48 | run: |
53 | 49 | shell: >- |
@@ -117,48 +113,6 @@ jobs: |
117 | 113 | sudo apt-get update |
118 | 114 | sudo apt-get install -y mesa-vulkan-drivers |
119 | 115 |
|
120 | | - # Empirical probe: does the GHA windows-latest VM populate HOME in its |
121 | | - # default env, or is the next step (Pre-mise: HOME = USERPROFILE) |
122 | | - # genuinely load-bearing? Prints HOME/USERPROFILE from both Git Bash |
123 | | - # (which auto-sets HOME from USERPROFILE on its own) and cmd (which |
124 | | - # doesn't, so its output reflects only what the parent env has). |
125 | | - # cmd resolves an unset var by leaving the literal `%HOME%` token in |
126 | | - # the output, so `HOME=[%HOME%]` is the unambiguous "unset" signal; |
127 | | - # `HOME=[]` means defined-but-empty; `HOME=[C:\Users\...]` means set. |
128 | | - # Remove this step once the answer is captured in OLD_NOTES.md. |
129 | | - - name: "Pre-mise: probe HOME on Windows" |
130 | | - if: runner.os == 'Windows' |
131 | | - timeout-minutes: 1 |
132 | | - # Same `shell:` rationale as the next step -- runs before |
133 | | - # `Install mise + tools` so we can't use the job's busybox default. |
134 | | - shell: bash --noprofile --norc -euo pipefail {0} |
135 | | - run: | |
136 | | - echo "=== Git Bash perspective ===" |
137 | | - echo " HOME=[$HOME] USERPROFILE=[$USERPROFILE]" |
138 | | - echo "=== cmd.exe perspective ===" |
139 | | - # `cmd //c` (double slash) -- the single-slash form is rewritten by |
140 | | - # MSYS path-translation as a Unix path, dropping cmd into interactive |
141 | | - # mode and skipping the echo. |
142 | | - cmd //c "echo HOME=[%HOME%] USERPROFILE=[%USERPROFILE%]" |
143 | | -
|
144 | | - # mise's Tera renderer expects $HOME to be set when evaluating env.HOME |
145 | | - # in [vars] (config.toml has e.g. `conda_openssl = "{{ env.HOME }}/.local |
146 | | - # /share/mise/installs/conda-openssl/3"`). MSYS bash auto-sets HOME from |
147 | | - # USERPROFILE; pwsh and cmd do not, so mise tasks invoked from a pwsh |
148 | | - # step fail with `Variable env.HOME not found in context while rendering |
149 | | - # __tera_one_off`. Plumb HOME = USERPROFILE so every subsequent step |
150 | | - # (incl. our pwsh diagnostic ones) sees it. |
151 | | - - name: "Pre-mise: HOME = USERPROFILE on Windows" |
152 | | - if: false |
153 | | - # runner.os == 'Windows' |
154 | | - timeout-minutes: 1 |
155 | | - # Explicit `shell: bash` because the job-level defaults point at the |
156 | | - # busybox ash that's installed by the next step (Install mise + |
157 | | - # tools), so we can't use it here yet. Git Bash is on the runner |
158 | | - # image by default. |
159 | | - shell: bash --noprofile --norc -euo pipefail {0} |
160 | | - run: echo "HOME=$USERPROFILE" >> "$GITHUB_ENV" |
161 | | - |
162 | 116 | - name: Install mise + tools |
163 | 117 | uses: ./.github/actions/install-mise-tools |
164 | 118 | timeout-minutes: 20 |
|
0 commit comments