Skip to content

Commit 9d2cac2

Browse files
committed
restore deterministic update policy
1 parent a1ea7c5 commit 9d2cac2

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

src/fpm/cmd/update.f90

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,13 @@ subroutine cmd_update(settings)
4040
call deps%add(package, error)
4141
call handle_error(error)
4242

43+
! Force-update all dependencies if `--clean`
44+
if (settings%clean) then
45+
do ii = 1, deps%ndep
46+
deps%dep(ii)%update = .true.
47+
end do
48+
end if
49+
4350
if (settings%fetch_only) return
4451

4552
if (size(settings%name) == 0) then

src/fpm/dependency.f90

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -454,7 +454,6 @@ subroutine add_dependency_node(self, dependency, error)
454454
! New dependency: add from scratch
455455
self%ndep = self%ndep + 1
456456
self%dep(self%ndep) = dependency
457-
self%dep(self%ndep)%update = .false.
458457
end if
459458

460459
end subroutine add_dependency_node
@@ -577,6 +576,7 @@ subroutine resolve_dependency(self, dependency, global_settings, root, error)
577576

578577
if (dependency%done) return
579578

579+
fetch = .false.
580580
if (allocated(dependency%proj_dir)) then
581581
proj_dir = dependency%proj_dir
582582
else if (allocated(dependency%path)) then
@@ -604,6 +604,7 @@ subroutine resolve_dependency(self, dependency, global_settings, root, error)
604604

605605
print *, 'dependency',dependency%name,': fetch=',fetch,' allocated(git)=',allocated(dependency%git),' proj_dir=',proj_dir,' fetch=',fetch
606606

607+
607608
call dependency%register(package, proj_dir, fetch, revision, error)
608609
if (allocated(error)) return
609610

@@ -950,16 +951,13 @@ subroutine register(self, package, root, fetch, revision, error)
950951
if (allocated(self%git) .and. present(revision)) then
951952
self%revision = revision
952953
if (.not. fetch) then
954+
! Change in revision ID was checked already. Only update if git information is missing
953955
! git object is HEAD always allows an update
954956
update = .not. allocated(self%git%object)
955-
if (.not. update) then
956-
! allow update in case the revision does not match the requested object
957-
update = revision /= self%git%object
958-
end if
959957
end if
960958
end if
961959

962-
self%update = update
960+
if (update) self%update = update
963961
self%done = .true.
964962

965963
print *, 'register: set '//self%name//' for update, has revision? ',present(revision),' fetch? ',fetch,' set update? ',self%update

0 commit comments

Comments
 (0)