mirror of
https://github.com/fosslinux/live-bootstrap.git
synced 2026-03-23 11:36:32 +01:00
fix(init): drop to rescue shell instead of panicking on build failure
This commit is contained in:
parent
f8122121c7
commit
e9c2946566
1 changed files with 31 additions and 1 deletions
|
|
@ -541,6 +541,36 @@ void output_resume_network_init(FILE *out) {
|
|||
fputs("fi\n", out);
|
||||
}
|
||||
|
||||
void output_init_failure_shell(FILE *out) {
|
||||
fputs("status=$?\n", out);
|
||||
fputs("echo \"bootstrap script failed with status ${status}; dropping to rescue shell\" >&2\n", out);
|
||||
fputs("PATH=/bin:/usr/bin:/sbin:/usr/sbin:${PREFIX}/bin:${PATH}\n", out);
|
||||
fputs("while true; do\n", out);
|
||||
fputs("if command -v bash >/dev/null 2>&1; then\n", out);
|
||||
fputs("env PS1=\"[FAIL ${status}] \\\\w # \" bash -i\n", out);
|
||||
fputs("elif command -v sh >/dev/null 2>&1; then\n", out);
|
||||
fputs("env PS1=\"[FAIL ${status}] \\\\w # \" sh -i\n", out);
|
||||
fputs("else\n", out);
|
||||
fputs("echo \"No interactive shell available; sleeping.\" >&2\n", out);
|
||||
fputs("sleep 60\n", out);
|
||||
fputs("fi\n", out);
|
||||
fputs("done\n", out);
|
||||
}
|
||||
|
||||
void output_init_call_script(FILE *out, char *name, int bash_build) {
|
||||
if (bash_build) {
|
||||
fputs("if ! bash ", out);
|
||||
write_steps_prefix(out);
|
||||
fputs(name, out);
|
||||
fputs(".sh\n", out);
|
||||
fputs("then\n", out);
|
||||
output_init_failure_shell(out);
|
||||
fputs("fi\n", out);
|
||||
} else {
|
||||
output_call_script(out, "", name, bash_build, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void output_build(FILE *out, Directive *directive, int pass_no, int bash_build) {
|
||||
if (bash_build) {
|
||||
fputs("build ", out);
|
||||
|
|
@ -670,7 +700,7 @@ void generate(Directive *directives) {
|
|||
}
|
||||
fputs("set -ex\n", out);
|
||||
}
|
||||
output_call_script(out, "", int2str(counter, 10, 0), bash_build, 0);
|
||||
output_init_call_script(out, int2str(counter, 10, 0), bash_build);
|
||||
fclose(out);
|
||||
out = start_script(counter, bash_build);
|
||||
counter += 1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue