Skip to content

Commit 6746aba

Browse files
committed
move computeNixEnv inside ensureInstall
1 parent b2f8b22 commit 6746aba

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

internal/impl/devbox.go

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -957,13 +957,6 @@ func (d *Devbox) ensurePackagesAreInstalledAndComputeEnv(
957957
) (map[string]string, error) {
958958
defer debug.FunctionTimer().End()
959959

960-
// We need to check the lockfile status prior to ensurePackagesAreInstalled
961-
// since it will update the lockfile to be up-to-date.
962-
upToDate, err := d.lockfile.IsUpToDateAndInstalled()
963-
if err != nil {
964-
return nil, err
965-
}
966-
967960
// When ensurePackagesAreInstalled is called with ensure=true, it always
968961
// returns early if the lockfile is up to date. So we don't need to check here
969962
if err := d.ensurePackagesAreInstalled(ctx, ensure); err != nil && !strings.Contains(err.Error(), "no such host") {
@@ -972,7 +965,11 @@ func (d *Devbox) ensurePackagesAreInstalledAndComputeEnv(
972965
ux.Fwarning(d.stderr, "Error connecting to the internet. Will attempt to use cached environment.\n")
973966
}
974967

975-
return d.computeNixEnv(ctx, upToDate /*usePrintDevEnvCache*/)
968+
// Since ensurePackagesAreInstalled calls computeNixEnv when not up do date,
969+
// it's ok to use usePrintDevEnvCache=true here always. This does end up
970+
// doing some non-nix work twice if lockfile is not up to date.
971+
// TODO: Improve this to avoid extra work.
972+
return d.computeNixEnv(ctx, true /*usePrintDevEnvCache*/)
976973
}
977974

978975
func (d *Devbox) nixPrintDevEnvCachePath() string {

internal/impl/packages.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,13 @@ func (d *Devbox) ensurePackagesAreInstalled(ctx context.Context, mode installMod
289289
return err
290290
}
291291

292+
// Use the printDevEnvCache if we are adding or removing or updating any package,
293+
// AND we are not in the shellenv-enabled environment of the current devbox-project.
294+
usePrintDevEnvCache := mode != ensure && !d.IsEnvEnabled()
295+
if _, err := d.computeNixEnv(ctx, usePrintDevEnvCache); err != nil {
296+
return err
297+
}
298+
292299
// Ensure we clean out packages that are no longer needed.
293300
d.lockfile.Tidy()
294301

0 commit comments

Comments
 (0)