[swift-dev] Building a swift release
Michael Gottesman
mgottesman at apple.com
Thu Nov 16 12:29:56 CST 2017
> On Nov 16, 2017, at 7:09 AM, Alex Blewitt via swift-dev <swift-dev at swift.org> wrote:
>
>> On 16 Nov 2017, at 14:30, Geordie J via swift-dev <swift-dev at swift.org <mailto: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 <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
A scheme is not a branch. A scheme is a list of (repo, branch). This allows for the underlying branch to vary per repo.
>
> 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:
>
> 2dedb62a0bcb69354e15a54be89fb5dfa63275d2
>
>
> _______________________________________________
> swift-dev mailing list
> swift-dev at swift.org
> https://lists.swift.org/mailman/listinfo/swift-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20171116/697a02ee/attachment.html>
More information about the swift-dev
mailing list