Skip to content

Commit f9b8832

Browse files
committed
testing
1 parent 47b49ec commit f9b8832

File tree

4 files changed

+41
-4
lines changed

4 files changed

+41
-4
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,6 @@ build/*
22

33
# Visual Studio Code
44
.vscode/
5+
6+
# CodeBlocks
7+
project/

fpm.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name = "fpm"
2-
version = "0.7.0"
2+
version = "0.7.1"
33
license = "MIT"
44
author = "fpm maintainers"
55
maintainer = ""

src/fpm.f90

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,16 @@ subroutine build_model(model, settings, package, error)
6060
call model%deps%add(package, error)
6161
if (allocated(error)) return
6262

63+
do i = 1, model%deps%ndep
64+
65+
if (model%deps%dep(i)%update) then
66+
print *, ' Updating model dependency ',model%deps%dep(i)%name,' ...'
67+
call model%deps%update(model%deps%dep(i)%name,error)
68+
if (allocated(error)) return
69+
end if
70+
71+
end do
72+
6373
! build/ directory should now exist
6474
if (.not.exists("build/.gitignore")) then
6575
call filewrite(join_path("build", ".gitignore"),["*"])
@@ -107,7 +117,7 @@ subroutine build_model(model, settings, package, error)
107117
model%packages(i)%name = dependency%name
108118
call package%version%to_string(version)
109119
model%packages(i)%version = version
110-
120+
111121
if (allocated(dependency%preprocess)) then
112122
do j = 1, size(dependency%preprocess)
113123
if (dependency%preprocess(j)%name == "cpp") then

src/fpm/dependency.f90

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ subroutine new_dependency_tree(self, verbosity, cache)
191191
end subroutine new_dependency_tree
192192

193193
!> 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)
195195
!> Instance of the dependency node
196196
type(dependency_node_t), intent(out) :: self
197197
!> Dependency configuration data
@@ -217,6 +217,8 @@ pure subroutine new_dependency_node(self, dependency, version, proj_dir, update)
217217
self%update = update
218218
end if
219219

220+
print *, 'new node from self=',self%name,' dep=',dependency%name, 'update=',update
221+
220222
end subroutine new_dependency_node
221223

222224
!> Add project dependencies, each depth level after each other.
@@ -357,7 +359,7 @@ subroutine add_dependencies(self, dependency, error)
357359
end subroutine add_dependencies
358360

359361
!> Add a single dependency to the dependency tree
360-
pure subroutine add_dependency(self, dependency, error)
362+
subroutine add_dependency(self, dependency, error)
361363
!> Instance of the dependency tree
362364
class(dependency_tree_t), intent(inout) :: self
363365
!> Dependency configuration to add
@@ -400,6 +402,7 @@ subroutine update_dependency(self, name, error)
400402
if (self%verbosity > 1) then
401403
write(self%unit, out_fmt) "Update:", dep%name
402404
end if
405+
write(self%unit, out_fmt) "Update:", dep%name
403406
proj_dir = join_path(self%dep_dir, dep%name)
404407
call dep%git%checkout(proj_dir, error)
405408
if (allocated(error)) return
@@ -454,6 +457,8 @@ subroutine resolve_dependency(self, dependency, root, error)
454457
character(len=:), allocatable :: manifest, proj_dir, revision
455458
logical :: fetch
456459

460+
print *, 'resolving dependency ',dependency%name,': done=',dependency%done,' update=',dependency%update
461+
457462
if (dependency%done) return
458463

459464
fetch = .false.
@@ -557,17 +562,34 @@ subroutine register(self, package, root, fetch, revision, error)
557562
type(error_t), allocatable, intent(out) :: error
558563

559564
logical :: update
565+
character(:), allocatable :: sver,pver
560566

561567
update = .false.
562568
if (self%name /= package%name) then
563569
call fatal_error(error, "Dependency name '"//package%name// &
564570
& "' found, but expected '"//self%name//"' instead")
565571
end if
566572

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+
567585
self%version = package%version
586+
587+
print *, 'self%proj_dir=',self%proj_dir,' package dir = ',root
588+
568589
self%proj_dir = root
569590

570591
if (allocated(self%git).and.present(revision)) then
592+
print *, 'self revision = ',self%revision,' revision = ',revision,' fetch = ',fetch
571593
self%revision = revision
572594
if (.not.fetch) then
573595
! git object is HEAD always allows an update
@@ -582,6 +604,8 @@ subroutine register(self, package, root, fetch, revision, error)
582604
self%update = update
583605
self%done = .true.
584606

607+
print *, 'dep = ',self%name,' update=',update
608+
585609
end subroutine register
586610

587611
!> Read dependency tree from file

0 commit comments

Comments
 (0)