Skip to content

Commit 0c59079

Browse files
committed
Only read global settings once
1 parent 29ea77f commit 0c59079

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

src/fpm/dependency.f90

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -524,10 +524,14 @@ subroutine resolve_dependencies(self, root, error)
524524
!> Error handling
525525
type(error_t), allocatable, intent(out) :: error
526526

527+
type(fpm_global_settings) :: global_settings
527528
integer :: ii
528529

530+
call get_global_settings(global_settings, error)
531+
if (allocated(error)) return
532+
529533
do ii = 1, self%ndep
530-
call self%resolve(self%dep(ii), root, error)
534+
call self%resolve(self%dep(ii), global_settings, root, error)
531535
if (allocated(error)) exit
532536
end do
533537

@@ -536,19 +540,20 @@ subroutine resolve_dependencies(self, root, error)
536540
end subroutine resolve_dependencies
537541

538542
!> Resolve a single dependency node
539-
subroutine resolve_dependency(self, dependency, root, error)
543+
subroutine resolve_dependency(self, dependency, global_settings, root, error)
540544
!> Instance of the dependency tree
541545
class(dependency_tree_t), intent(inout) :: self
542546
!> Dependency configuration to add
543547
type(dependency_node_t), intent(inout) :: dependency
548+
!> Global configuration settings.
549+
type(fpm_global_settings), intent(in) :: global_settings
544550
!> Current installation prefix
545551
character(len=*), intent(in) :: root
546552
!> Error handling
547553
type(error_t), allocatable, intent(out) :: error
548554

549555
type(package_config_t) :: package
550556
character(len=:), allocatable :: manifest, proj_dir, revision
551-
type(fpm_global_settings) :: global_settings
552557
logical :: fetch
553558

554559
if (dependency%done) return
@@ -565,8 +570,6 @@ subroutine resolve_dependency(self, dependency, root, error)
565570
if (allocated(error)) return
566571
end if
567572
else
568-
call get_global_settings(global_settings, error)
569-
if (allocated(error)) return
570573
call dependency%get_from_registry(proj_dir, global_settings, error)
571574
if (allocated(error)) return
572575
end if

test/fpm_test/test_package_dependencies.f90

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1314,11 +1314,13 @@ subroutine pkg_data_invalid_version(error)
13141314
end subroutine pkg_data_invalid_version
13151315

13161316
!> Resolve a single dependency node
1317-
subroutine resolve_dependency_once(self, dependency, root, error)
1317+
subroutine resolve_dependency_once(self, dependency, global_settings, root, error)
13181318
!> Mock instance of the dependency tree
13191319
class(mock_dependency_tree_t), intent(inout) :: self
13201320
!> Dependency configuration to add
13211321
type(dependency_node_t), intent(inout) :: dependency
1322+
!> Global configuration settings.
1323+
type(fpm_global_settings), intent(in) :: global_settings
13221324
!> Current installation prefix
13231325
character(len=*), intent(in) :: root
13241326
!> Error handling

0 commit comments

Comments
 (0)