summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Hansen2016-05-27 11:01:45 -0700
committerMichael Hansen2016-05-27 11:02:55 -0700
commit3c69c27de6ec336b00fb889758fa8d5bc0c7f94d (patch)
tree0778c926a5dc3aa8545d24ff0bf6958fabdb16b3
parent0ed14919590f8e7e35086896047321cb01c85751 (diff)
downloadaur-3c69c27de6ec336b00fb889758fa8d5bc0c7f94d.tar.gz
Allow system clang again, and backport upstream fix to force gold linker
instead of using binutils 2.26 ld.bfd specific hacks
-rw-r--r--.SRCINFO14
-rw-r--r--PKGBUILD17
-rw-r--r--binutils226-swift-driver.patch14
-rw-r--r--binutils226-swift.patch86
-rw-r--r--require-gold-on-linux.patch52
5 files changed, 65 insertions, 118 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 3b2482db8f8b..fa5877ce47df 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,9 +1,9 @@
# Generated by mksrcinfo v8
-# Wed May 11 18:00:36 UTC 2016
+# Fri May 27 18:01:18 UTC 2016
pkgbase = swift-development
pkgdesc = The Swift programming language and debugger - latest development snapshot
pkgver = DEVELOPMENT.SNAPSHOT.2016.05.09.a
- pkgrel = 2
+ pkgrel = 3
url = http://swift.org/
arch = i686
arch = x86_64
@@ -12,10 +12,9 @@ pkgbase = swift-development
makedepends = cmake
makedepends = ninja
makedepends = swig
- makedepends = clang-svn
+ makedepends = clang>=3.8
makedepends = python2-six
makedepends = perl
- makedepends = binutils>=2.26
depends = python2
depends = libutil-linux
depends = icu
@@ -35,8 +34,7 @@ pkgbase = swift-development
source = swift-corelibs-foundation-DEVELOPMENT-SNAPSHOT-2016-05-09-a.tar.gz::https://github.com/apple/swift-corelibs-foundation/archive/swift-DEVELOPMENT-SNAPSHOT-2016-05-09-a.tar.gz
source = swift-integration-tests-DEVELOPMENT-SNAPSHOT-2016-05-09-a.tar.gz::https://github.com/apple/swift-integration-tests/archive/swift-DEVELOPMENT-SNAPSHOT-2016-05-09-a.tar.gz
source = swift-no-docs.patch
- source = binutils226-swift.patch
- source = binutils226-swift-driver.patch
+ source = require-gold-on-linux.patch
sha256sums = 76584f8b0ba85cfbd5264228d975f565b584e424bed11fc9ab3115130125ffec
sha256sums = 9230cb83a975dc0d904d517fb9640f902f5a25dfa9779438b3bd123cfd77e572
sha256sums = 3cdb6e1cfc3bf774c1b7e42d775d175964db41706c391e05d9a7cfd6d0d30bf3
@@ -48,13 +46,13 @@ pkgbase = swift-development
sha256sums = f42133f61c2920e1a5dfa7839562d86b632948d38cca548729f85b67bf833ddc
sha256sums = f8a60c6d16bea5881705947bb4350d2306c090d7c08c55b63bddc4baf6d2995d
sha256sums = 1a8663c48a1a203d1825ae62a7e4191e4980a2dad461d4d88152221ad9e2171d
- sha256sums = 2d8afb6a3d6f7aca1636eae961e4d1e7f486df420e1a726c69d027e4b65c73c5
- sha256sums = 0aa6868dac834ab13a9f61a0e406c6dc25f39afdf086cb93d90d85c39083e589
+ sha256sums = 1eccfbef3cc62567219857c23de87d67da1ff059ebd835caab7cabaf5c80487b
pkgname = swift-development
pkgdesc = The Swift programming language compiler and tools - development snapshot
optdepends = swift-lldb: Swift REPL and debugger
provides = swift-language
+ provides = swift
conflicts = swift-language-git
conflicts = swift-git
conflicts = swift-bin
diff --git a/PKGBUILD b/PKGBUILD
index dd2232bf4fe4..979e25dd1327 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,15 +2,14 @@ pkgbase=swift-development
pkgname=(swift-development swift-lldb-development)
_swiftver=DEVELOPMENT-SNAPSHOT-2016-05-09-a
pkgver=${_swiftver//-/.}
-pkgrel=2
+pkgrel=3
pkgdesc="The Swift programming language and debugger - latest development snapshot"
arch=('i686' 'x86_64')
url="http://swift.org/"
license=('apache')
depends=('python2' 'libutil-linux' 'icu' 'libbsd' 'libedit' 'libxml2'
'sqlite' 'ncurses')
-makedepends=('git' 'cmake' 'ninja' 'swig' 'clang-svn' 'python2-six' 'perl'
- 'binutils>=2.26')
+makedepends=('git' 'cmake' 'ninja' 'swig' 'clang>=3.8' 'python2-six' 'perl')
source=(
"swift-${_swiftver}.tar.gz::https://github.com/apple/swift/archive/swift-${_swiftver}.tar.gz"
"swift-llvm-${_swiftver}.tar.gz::https://github.com/apple/swift-llvm/archive/swift-${_swiftver}.tar.gz"
@@ -23,7 +22,7 @@ source=(
"swift-corelibs-foundation-${_swiftver}.tar.gz::https://github.com/apple/swift-corelibs-foundation/archive/swift-${_swiftver}.tar.gz"
"swift-integration-tests-${_swiftver}.tar.gz::https://github.com/apple/swift-integration-tests/archive/swift-${_swiftver}.tar.gz"
"swift-no-docs.patch"
- "binutils226-swift.patch" "binutils226-swift-driver.patch"
+ "require-gold-on-linux.patch"
)
sha256sums=('76584f8b0ba85cfbd5264228d975f565b584e424bed11fc9ab3115130125ffec'
'9230cb83a975dc0d904d517fb9640f902f5a25dfa9779438b3bd123cfd77e572'
@@ -36,8 +35,7 @@ sha256sums=('76584f8b0ba85cfbd5264228d975f565b584e424bed11fc9ab3115130125ffec'
'f42133f61c2920e1a5dfa7839562d86b632948d38cca548729f85b67bf833ddc'
'f8a60c6d16bea5881705947bb4350d2306c090d7c08c55b63bddc4baf6d2995d'
'1a8663c48a1a203d1825ae62a7e4191e4980a2dad461d4d88152221ad9e2171d'
- '2d8afb6a3d6f7aca1636eae961e4d1e7f486df420e1a726c69d027e4b65c73c5'
- '0aa6868dac834ab13a9f61a0e406c6dc25f39afdf086cb93d90d85c39083e589')
+ '1eccfbef3cc62567219857c23de87d67da1ff059ebd835caab7cabaf5c80487b')
prepare() {
# Use python2 where appropriate
@@ -70,10 +68,9 @@ prepare() {
# syntax highlighting language (like "swift").
( cd "${srcdir}/swift" && patch -p1 -i "${srcdir}/swift-no-docs.patch" )
- # Patches for compiling against binutils 2.26
+ # Backport: Use gold linker to avoid binutils issues
# (See https://bugs.swift.org/projects/SR/issues/SR-1023)
- ( cd "${srcdir}/swift" && patch -p1 -i "${srcdir}/binutils226-swift.patch" )
- ( cd "${srcdir}/swift" && patch -p1 -i "${srcdir}/binutils226-swift-driver.patch" )
+ ( cd "${srcdir}/swift" && patch -p1 -i "${srcdir}/require-gold-on-linux.patch" )
}
build() {
@@ -95,7 +92,7 @@ check() {
package_swift-development() {
pkgdesc='The Swift programming language compiler and tools - development snapshot'
- provides=('swift-language')
+ provides=('swift-language' 'swift')
conflicts=('swift-language-git' 'swift-git' 'swift-bin' 'swift')
optdepends=('swift-lldb: Swift REPL and debugger')
diff --git a/binutils226-swift-driver.patch b/binutils226-swift-driver.patch
deleted file mode 100644
index 994781908d4a..000000000000
--- a/binutils226-swift-driver.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp
-index 5e20ac3..eb4b846 100644
---- a/lib/Driver/ToolChains.cpp
-+++ b/lib/Driver/ToolChains.cpp
-@@ -1268,6 +1268,9 @@ toolchains::GenericUnix::constructInvocation(const LinkJobAction &job,
- Arguments.push_back(context.Args.MakeArgString("--target=" + getTriple().str()));
- }
-
-+ Arguments.push_back("-Wl,-z,nocopyreloc");
-+ Arguments.push_back("-Wl,-z,noextern-protected-data");
-+
- // Add the runtime library link path, which is platform-specific and found
- // relative to the compiler.
- llvm::SmallString<128> RuntimeLibPath;
diff --git a/binutils226-swift.patch b/binutils226-swift.patch
deleted file mode 100644
index 9108bea1889d..000000000000
--- a/binutils226-swift.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 59d2e56811a01ed543010b93109017f03e8881bc Mon Sep 17 00:00:00 2001
-From: Ryan Lovelett <ryan@lovelett.me>
-Date: Mon, 4 Apr 2016 21:28:40 -0400
-Subject: [PATCH] Work around relocation R_X86_64_PC32 link error
-
-A more complete discussion of the error and its background can be found
-in SR-1023.
-
-The brief overview is that in versions of `ld` that would be effected by
-this dynamic relocation issue there are two flags: `-z nocopyreloc` and
-`-z noextern-protected-data`. If `ld` supports the flags then they are
-sento to the linker. This patch checks that the linker supports the
-flags and then optionally sets them.
-
-The code to check if `ld` supports the flags is inspired by this CMake
-mailing list entry.
-
-https://cmake.org/pipermail/cmake/2011-July/045525.html
----
- CMakeLists.txt | 7 +++++++
- cmake/modules/AddSwift.cmake | 8 ++++++++
- cmake/modules/CheckLinkerDynamicRelocationFlags.cmake | 11 +++++++++++
- 3 files changed, 26 insertions(+)
- create mode 100644 cmake/modules/CheckLinkerDynamicRelocationFlags.cmake
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index cae3647..b1ef7b6 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -277,6 +277,7 @@ option(SWIFT_BUILD_SOURCEKIT
- #
-
- include(CheckCXXSourceRuns)
-+include(CheckLinkerDynamicRelocationFlags)
- include(CMakeParseArguments)
- include(SwiftTranslateFlag)
- include(SwiftHandleGybSources)
-@@ -437,6 +438,12 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
- set(SWIFT_HOST_VARIANT_SDK "LINUX")
- set(SWIFT_PRIMARY_VARIANT_SDK_default "LINUX")
-
-+ # Support relative relocation against protected symbols in binutils 2.26
-+ check_linker_supports_flag("-Wl,-z,nocopyreloc"
-+ "SWIFT_LINKER_SUPPORTS_NOCOPYRELOC")
-+ check_linker_supports_flag("-Wl,-z,noextern-protected-data"
-+ "SWIFT_LINKER_SUPPORTS_NOEXTERN_PROTECTED_DATA")
-+
- # FIXME: This will not work while trying to cross-compile.
- if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
- set(SWIFT_HOST_VARIANT_ARCH "x86_64")
-diff --git a/cmake/modules/AddSwift.cmake b/cmake/modules/AddSwift.cmake
-index 7294dd4..f6dae01 100644
---- a/cmake/modules/AddSwift.cmake
-+++ b/cmake/modules/AddSwift.cmake
-@@ -1189,6 +1189,14 @@ function(_add_swift_library_single target name)
- list(APPEND link_flags "-fuse-ld=gold")
- endif()
-
-+ # Support relative relocation against protected symbols in binutils 2.26
-+ if(SWIFT_LINKER_SUPPORTS_NOCOPYRELOC)
-+ list(APPEND link_flags "-Wl,-z,nocopyreloc")
-+ endif()
-+ if(SWIFT_LINKER_SUPPORTS_NOEXTERN_PROTECTED_DATA)
-+ list(APPEND link_flags "-Wl,-z,noextern-protected-data")
-+ endif()
-+
- # Configure plist creation for OS X.
- set(PLIST_INFO_PLIST "Info.plist" CACHE STRING "Plist name")
- if(APPLE AND SWIFTLIB_SINGLE_IS_STDLIB)
-diff --git a/cmake/modules/CheckLinkerDynamicRelocationFlags.cmake b/cmake/modules/CheckLinkerDynamicRelocationFlags.cmake
-new file mode 100644
-index 0000000..0a53f77
---- /dev/null
-+++ b/cmake/modules/CheckLinkerDynamicRelocationFlags.cmake
-@@ -0,0 +1,11 @@
-+include(CheckCXXCompilerFlag)
-+
-+function(check_linker_supports_flag flag_to_test var_name)
-+ set(CMAKE_REQUIRED_FLAGS "${flag_to_test}")
-+ check_cxx_compiler_flag("" LINKER_SUPPORTS_NOEXTERN_PROTECTED_DATA)
-+ if(LINKER_SUPPORTS_NOEXTERN_PROTECTED_DATA)
-+ set("${var_name}" TRUE PARENT_SCOPE)
-+ else()
-+ set("${var_name}" FALSE PARENT_SCOPE)
-+ endif()
-+endfunction()
diff --git a/require-gold-on-linux.patch b/require-gold-on-linux.patch
new file mode 100644
index 000000000000..6c77b2720a13
--- /dev/null
+++ b/require-gold-on-linux.patch
@@ -0,0 +1,52 @@
+From 3b7b0d80919997ead4c9bb6d681c5739e22d34cc Mon Sep 17 00:00:00 2001
+From: Saleem Abdulrasool <compnerd@compnerd.org>
+Date: Thu, 19 May 2016 17:59:03 -0700
+Subject: [PATCH] utils: require gold on Linux targets
+
+Given the discussion on swift-dev, and no opposition, swift the linux targets to
+using gold by default.
+---
+ lib/Driver/ToolChains.cpp | 5 +++++
+ utils/build-script-impl | 3 +++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp
+index 42e1e2c..c9147ec 100644
+--- a/lib/Driver/ToolChains.cpp
++++ b/lib/Driver/ToolChains.cpp
+@@ -1218,6 +1218,11 @@ std::string toolchains::GenericUnix::getDefaultLinker() const {
+ // final executables, as such, unless specified, we default to gold
+ // linker.
+ return "gold";
++ case llvm::Triple::x86_64:
++ case llvm::Triple::ppc64:
++ case llvm::Triple::ppc64le:
++ // BFD linker has issues wrt relocations against protected symbols.
++ return "gold";
+ default:
+ // Otherwise, use the default BFD linker.
+ return "";
+diff --git a/utils/build-script-impl b/utils/build-script-impl
+index 87c68a5..0c3a38b 100755
+--- a/utils/build-script-impl
++++ b/utils/build-script-impl
+@@ -325,6 +325,7 @@ function set_deployment_target_based_options() {
+
+ case ${deployment_target} in
+ linux-x86_64)
++ USE_GOLD_LINKER=1
+ SWIFT_HOST_VARIANT_ARCH="x86_64"
+ ;;
+ linux-armv6)
+@@ -346,9 +347,11 @@ function set_deployment_target_based_options() {
+ SWIFT_HOST_VARIANT_ARCH="x86_64"
+ ;;
+ linux-powerpc64)
++ USE_GOLD_LINKER=1
+ SWIFT_HOST_VARIANT_ARCH="powerpc64"
+ ;;
+ linux-powerpc64le)
++ USE_GOLD_LINKER=1
+ SWIFT_HOST_VARIANT_ARCH="powerpc64le"
+ ;;
+ cygwin-x86_64)