Building a swift release

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) 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?

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.

Any ideas?

Thanks,
Geordie

I had to go spelunking in the build scripts to find this, so no idea if it is the proper way, but it seems to work. In a fresh checkout of the swift repo:

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

This will clone all the needed repos and then check out the right branch.

-tim

···

On Nov 16, 2017, at 6:30 AM, Geordie J via swift-dev <swift-dev@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) 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?

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.

Any ideas?

Thanks,
Geordie

_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

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) 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

A scheme is not a branch. A scheme is a list of (repo, branch). This allows for the underlying branch to vary per repo.

···

On Nov 16, 2017, at 7:09 AM, Alex Blewitt via swift-dev <swift-dev@swift.org> wrote:

On 16 Nov 2017, at 14:30, Geordie J via swift-dev <swift-dev@swift.org <mailto:swift-dev@swift.org>> wrote:

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@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

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) 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:

Also, I think a PR landed in the past 2-3 months that changed update-checkout to use git fetch to always use --tags.

···

On Nov 16, 2017, at 7:09 AM, Alex Blewitt via swift-dev <swift-dev@swift.org> wrote:

On 16 Nov 2017, at 14:30, Geordie J via swift-dev <swift-dev@swift.org <mailto:swift-dev@swift.org>> wrote:

[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:

2dedb62a0bcb69354e15a54be89fb5dfa63275d2

_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

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) 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:

2dedb62a0bcb69354e15a54be89fb5dfa63275d2

···

On 16 Nov 2017, at 14:30, Geordie J via swift-dev <swift-dev@swift.org> wrote: