<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div><blockquote type="cite" class=""><div class="gmail_quote" style="font-family: Helvetica; font-size: 18px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div class="">I think we need the bootstrap property because `swift build` will read the local state of packages and builds the package where as bootstrap will be always reading from lock file and reproducing&nbsp;<b class="">exact</b>&nbsp;versions of the already present lock file. for eg :&nbsp;</div><div class=""><br class=""></div><div class="">Person A:&nbsp;</div><div class="">Runs `swift build`</div><div class="">fetches dependencies Foo at v1.2.<b class="">3</b><span class="Apple-converted-space">&nbsp;</span>and Bar at v2.3.<b class="">4</b><span class="Apple-converted-space">&nbsp;</span>and locks it.</div><div class=""><br class=""></div><div class="">Person B:</div><div class="">Runs `swift build`</div><div class="">fetches dependencies Foo at v1.2.<b class="">4</b><span class="Apple-converted-space">&nbsp;</span>and Bar at v2.3.<b class="">6</b><span class="Apple-converted-space">&nbsp;</span>(this can differ in patch versions which might not be the intention as both want to replicate exact versions, as running swift build will fetch the latest patch and minor version if only major is specified)</div><div class="">but if he runs `swift build --bootstrap` he'll get Foo at v1.2.<b class="">3</b><span class="Apple-converted-space">&nbsp;</span>and Bar at v2.3.<b class="">4</b></div></div></blockquote><div><br class=""></div><div>If the lock file is committed I think swift-build should always use it. If the user wants newer updates they can execute `swift build â€”update`.</div><div><br class=""></div><div>This makes understanding what happens simpler: `swift build` always uses the lock file if it is present.</div><div><br class=""></div><div>This makes reliably building apps possible since you will always be building what everyone else built when the sources where committed.</div><div><br class=""></div></div></body></html>