@@ -119,7 +119,7 @@ module fpm_dependency
119
119
contains
120
120
! > Overload procedure to add new dependencies to the tree
121
121
generic :: add = > add_project, add_project_dependencies, add_dependencies, &
122
- add_dependency
122
+ add_dependency, add_dependency_node
123
123
! > Main entry point to add a project
124
124
procedure , private :: add_project
125
125
! > Add a project and its dependencies to the dependency tree
@@ -128,6 +128,8 @@ module fpm_dependency
128
128
procedure , private :: add_dependencies
129
129
! > Add a single dependency to the dependency tree
130
130
procedure , private :: add_dependency
131
+ ! > Add a single dependency node to the dependency tree
132
+ procedure , private :: add_dependency_node
131
133
! > Resolve dependencies
132
134
generic :: resolve = > resolve_dependencies, resolve_dependency
133
135
! > Resolve dependencies
@@ -359,18 +361,18 @@ subroutine add_dependencies(self, dependency, error)
359
361
360
362
end subroutine add_dependencies
361
363
362
- ! > Add a single dependency to the dependency tree
363
- subroutine add_dependency (self , dependency , error )
364
+ ! > Add a single dependency node to the dependency tree
365
+ ! > Dependency nodes contain additional information (version, git, revision)
366
+ subroutine add_dependency_node (self , dependency , error )
364
367
! > Instance of the dependency tree
365
368
class(dependency_tree_t), intent (inout ) :: self
366
369
! > Dependency configuration to add
367
- type (dependency_config_t ), intent (in ) :: dependency
370
+ type (dependency_node_t ), intent (in ) :: dependency
368
371
! > Error handling
369
372
type (error_t), allocatable , intent (out ) :: error
370
373
371
374
integer :: id
372
375
logical :: needs_update
373
- type (dependency_node_t) :: new_dep
374
376
375
377
id = self% find(dependency)
376
378
@@ -379,23 +381,38 @@ subroutine add_dependency(self, dependency, error)
379
381
! > A dependency with this same name is already in the dependency tree.
380
382
381
383
! > check if it needs to be updated
382
- call new_dependency_node(new_dep, dependency)
383
- needs_update = dependency_has_changed(self% dep(id), new_dep)
384
+ needs_update = dependency_has_changed(self% dep(id), dependency)
384
385
385
386
! > Ensure an update is requested whenever the dependency has changed
386
387
if (needs_update) then
387
388
write (self% unit, out_fmt) " Dependency change detected:" , dependency% name
388
- call new_dependency_node(self% dep(id), dependency, update= .true. )
389
+ self% dep(id) = dependency
390
+ self% dep(id)% update = .true.
389
391
endif
390
392
391
393
else exists
392
394
393
395
! > New dependency: add from scratch
394
396
self% ndep = self% ndep + 1
395
- call new_dependency_node( self% dep(self% ndep), dependency)
397
+ self% dep(self% ndep) = dependency
396
398
397
399
end if exists
398
400
401
+ end subroutine add_dependency_node
402
+
403
+ ! > Add a single dependency to the dependency tree
404
+ subroutine add_dependency (self , dependency , error )
405
+ ! > Instance of the dependency tree
406
+ class(dependency_tree_t), intent (inout ) :: self
407
+ ! > Dependency configuration to add
408
+ type (dependency_config_t), intent (in ) :: dependency
409
+ ! > Error handling
410
+ type (error_t), allocatable , intent (out ) :: error
411
+
412
+ type (dependency_node_t) :: node
413
+
414
+ call new_dependency_node(node, dependency)
415
+ call add_dependency_node(self, node, error)
399
416
400
417
end subroutine add_dependency
401
418
0 commit comments