Make installed banger self-contained
Fix the misleading make install path where banger and bangerd still depended on a repo checkout for Firecracker, guest artifacts, image builds, and the SSH key. Replace repo-root inference with an explicit runtime bundle model: resolve a runtime_dir from env/config/install layout, derive concrete artifact paths from it, and update the daemon, CLI, and image-build flow to use those paths. Keep repo_root only as an explicit compatibility alias instead of auto-detecting it. Teach customize.sh to run from a read-only bundled runtime tree while writing transient state under XDG/BANGER_STATE_DIR, and make make install copy the runtime assets into PREFIX/lib/banger so installed binaries stay usable outside the repo. Validate with go test ./..., make build, bash -n customize.sh, and make install DESTDIR=/tmp/banger-install PREFIX=/usr. An out-of-repo installed-binary smoke test was attempted, but this sandbox blocked bangerd from binding its Unix socket (setsockopt: operation not permitted).
This commit is contained in:
parent
375900cf65
commit
ce1be52047
13 changed files with 437 additions and 107 deletions
|
|
@ -546,10 +546,10 @@ func (d *Daemon) createTap(ctx context.Context, tap string) error {
|
|||
}
|
||||
|
||||
func (d *Daemon) firecrackerBinary() (string, error) {
|
||||
if d.config.RepoRoot == "" {
|
||||
return "", errors.New("repo root not detected")
|
||||
if d.config.FirecrackerBin == "" {
|
||||
return "", errors.New("firecracker binary not configured; set runtime_dir or firecracker_bin in config.toml")
|
||||
}
|
||||
path := filepath.Join(d.config.RepoRoot, "firecracker")
|
||||
path := d.config.FirecrackerBin
|
||||
if !exists(path) {
|
||||
return "", fmt.Errorf("firecracker binary not found at %s", path)
|
||||
}
|
||||
|
|
@ -689,15 +689,12 @@ func (d *Daemon) requireStartPrereqs(ctx context.Context) error {
|
|||
}
|
||||
|
||||
func (d *Daemon) generateName(ctx context.Context) (string, error) {
|
||||
if d.config.RepoRoot != "" {
|
||||
namegen := filepath.Join(d.config.RepoRoot, "namegen")
|
||||
if exists(namegen) {
|
||||
out, err := d.runner.Run(ctx, namegen)
|
||||
if err == nil {
|
||||
name := strings.TrimSpace(string(out))
|
||||
if name != "" {
|
||||
return name, nil
|
||||
}
|
||||
if exists(d.config.NamegenPath) {
|
||||
out, err := d.runner.Run(ctx, d.config.NamegenPath)
|
||||
if err == nil {
|
||||
name := strings.TrimSpace(string(out))
|
||||
if name != "" {
|
||||
return name, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue