Skip to content

Commit 47ce48d

Browse files
committed
dependency tree: add from dependency_node_t
1 parent b2d2afc commit 47ce48d

File tree

1 file changed

+26
-9
lines changed

1 file changed

+26
-9
lines changed

src/fpm/dependency.f90

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ module fpm_dependency
119119
contains
120120
!> Overload procedure to add new dependencies to the tree
121121
generic :: add => add_project, add_project_dependencies, add_dependencies, &
122-
add_dependency
122+
add_dependency, add_dependency_node
123123
!> Main entry point to add a project
124124
procedure, private :: add_project
125125
!> Add a project and its dependencies to the dependency tree
@@ -128,6 +128,8 @@ module fpm_dependency
128128
procedure, private :: add_dependencies
129129
!> Add a single dependency to the dependency tree
130130
procedure, private :: add_dependency
131+
!> Add a single dependency node to the dependency tree
132+
procedure, private :: add_dependency_node
131133
!> Resolve dependencies
132134
generic :: resolve => resolve_dependencies, resolve_dependency
133135
!> Resolve dependencies
@@ -359,18 +361,18 @@ subroutine add_dependencies(self, dependency, error)
359361

360362
end subroutine add_dependencies
361363

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)
364367
!> Instance of the dependency tree
365368
class(dependency_tree_t), intent(inout) :: self
366369
!> Dependency configuration to add
367-
type(dependency_config_t), intent(in) :: dependency
370+
type(dependency_node_t), intent(in) :: dependency
368371
!> Error handling
369372
type(error_t), allocatable, intent(out) :: error
370373

371374
integer :: id
372375
logical :: needs_update
373-
type(dependency_node_t) :: new_dep
374376

375377
id = self%find(dependency)
376378

@@ -379,23 +381,38 @@ subroutine add_dependency(self, dependency, error)
379381
!> A dependency with this same name is already in the dependency tree.
380382

381383
!> 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)
384385

385386
!> Ensure an update is requested whenever the dependency has changed
386387
if (needs_update) then
387388
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.
389391
endif
390392

391393
else exists
392394

393395
!> New dependency: add from scratch
394396
self%ndep = self%ndep + 1
395-
call new_dependency_node(self%dep(self%ndep), dependency)
397+
self%dep(self%ndep) = dependency
396398

397399
end if exists
398400

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)
399416

400417
end subroutine add_dependency
401418

0 commit comments

Comments
 (0)