[swift-dev] Building a swift release

Alex Blewitt alblue at apple.com
Thu Nov 16 09:09:46 CST 2017

> On 16 Nov 2017, at 14:30, Geordie J via swift-dev <swift-dev at swift.org> wrote:
> Hello,
> I recently asked about building a particular Swift release and couldn’t find the correct tag. It turns out there are two issues with this:
> 1. Somehow "git checkout swift-4.0.2-RELEASE” doesn’t work. In fact, the commit that tag references (https://github.com/apple/swift/commit/efb12f4d7a6aa7575333c13fbcdb7782426b130a <https://github.com/apple/swift/commit/efb12f4d7a6aa7575333c13fbcdb7782426b130a>) doesn’t seem to exist locally even after running “git fetch”, so I can’t even check out that commit’s parent and cherry-pick the release commit.
> This is spooky enough to make me think I’m doing something wrong: can someone confirm or deny that this release tag really exists outside of GitHub?

You almost certainly haven't fetched the tag from GitHub successfully. When you run 'git fetch', you'll pull down the configured options as in the .git/config file. For example, I have: 

[remote "origin"]
	url = https://github.com/apple/swift
	pushurl = no_push
	fetch = +refs/heads/*:refs/remotes/origin/*

As a result, it won't explicitly fetch the tag for me. You can do fetch --tags, in which case, it will pull all of them, or you can configure your repository to fetch that specific tag as well (or specify it on the command line, like git fetch origin refs/tags/swift-4.0.2-RELEASE:refs/remotes/origin/swift-4.0.2-RELEASE).

> 2. The “stable” branch of llvm (which is automatically referenced when I run utils/update-checkout) isn’t compatible with that tag (its parent commit at least). Frustratingly, checking out "swift-4.0-branch” in both apple/swift and apple/swift-llvm does not build on linux either. This appears to be due to a rename/move of Dwarf.h somewhere along the line.

If you are missing some of the required downstream projects, you can run:

./swift/utils/update-checkout --clone

You can explicitly ask to check out a branch (aka 'scheme'):

./swift/utils/update-checkout --scheme swift-4.0-branch

and you can checkout a specific tag:

./swift/utils/update-checkout --tag swift-4.0.2-RELEASE

You can do a clean checkout by using --reset-to-remote, which might help clean your repository state up a little.

I managed to use this to check out the repository, from a base clone of Swift:

 ./utils/update-checkout --clone --tag swift-4.0.2-RELEASE

What version are you at for the LLVM repository after using the above? Mine resolves to:


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20171116/fca39352/attachment.html>

More information about the swift-dev mailing list