@@ -191,7 +191,7 @@ subroutine new_dependency_tree(self, verbosity, cache)
191
191
end subroutine new_dependency_tree
192
192
193
193
! > Create a new dependency node from a configuration
194
- pure subroutine new_dependency_node (self , dependency , version , proj_dir , update )
194
+ subroutine new_dependency_node (self , dependency , version , proj_dir , update )
195
195
! > Instance of the dependency node
196
196
type (dependency_node_t), intent (out ) :: self
197
197
! > Dependency configuration data
@@ -217,6 +217,8 @@ pure subroutine new_dependency_node(self, dependency, version, proj_dir, update)
217
217
self% update = update
218
218
end if
219
219
220
+ print * , ' new node from self=' ,self% name,' dep=' ,dependency% name, ' update=' ,update
221
+
220
222
end subroutine new_dependency_node
221
223
222
224
! > Add project dependencies, each depth level after each other.
@@ -357,7 +359,7 @@ subroutine add_dependencies(self, dependency, error)
357
359
end subroutine add_dependencies
358
360
359
361
! > Add a single dependency to the dependency tree
360
- pure subroutine add_dependency (self , dependency , error )
362
+ subroutine add_dependency (self , dependency , error )
361
363
! > Instance of the dependency tree
362
364
class(dependency_tree_t), intent (inout ) :: self
363
365
! > Dependency configuration to add
@@ -400,6 +402,7 @@ subroutine update_dependency(self, name, error)
400
402
if (self% verbosity > 1 ) then
401
403
write (self% unit, out_fmt) " Update:" , dep% name
402
404
end if
405
+ write (self% unit, out_fmt) " Update:" , dep% name
403
406
proj_dir = join_path(self% dep_dir, dep% name)
404
407
call dep% git% checkout(proj_dir, error)
405
408
if (allocated (error)) return
@@ -454,6 +457,8 @@ subroutine resolve_dependency(self, dependency, root, error)
454
457
character (len= :), allocatable :: manifest, proj_dir, revision
455
458
logical :: fetch
456
459
460
+ print * , ' resolving dependency ' ,dependency% name,' : done=' ,dependency% done,' update=' ,dependency% update
461
+
457
462
if (dependency% done) return
458
463
459
464
fetch = .false.
@@ -557,17 +562,34 @@ subroutine register(self, package, root, fetch, revision, error)
557
562
type (error_t), allocatable , intent (out ) :: error
558
563
559
564
logical :: update
565
+ character (:), allocatable :: sver,pver
560
566
561
567
update = .false.
562
568
if (self% name /= package% name) then
563
569
call fatal_error(error, " Dependency name '" // package% name// &
564
570
& " ' found, but expected '" // self% name// " ' instead" )
565
571
end if
566
572
573
+ ! If this is the package node, always request an update of
574
+ ! the cache whenever its version changes
575
+ is_package: if (self% name== package% name .and. self% path==" ." ) then
576
+
577
+ if (self% version/= package% version) update = .true.
578
+
579
+ end if is_package
580
+
581
+ call self% version% to_string(sver)
582
+ call package% version% to_string(pver)
583
+ print * , ' self%version=' ,sver,' package version = ' ,pver
584
+
567
585
self% version = package% version
586
+
587
+ print * , ' self%proj_dir=' ,self% proj_dir,' package dir = ' ,root
588
+
568
589
self% proj_dir = root
569
590
570
591
if (allocated (self% git).and. present (revision)) then
592
+ print * , ' self revision = ' ,self% revision,' revision = ' ,revision,' fetch = ' ,fetch
571
593
self% revision = revision
572
594
if (.not. fetch) then
573
595
! git object is HEAD always allows an update
@@ -582,6 +604,8 @@ subroutine register(self, package, root, fetch, revision, error)
582
604
self% update = update
583
605
self% done = .true.
584
606
607
+ print * , ' dep = ' ,self% name,' update=' ,update
608
+
585
609
end subroutine register
586
610
587
611
! > Read dependency tree from file
0 commit comments