# Maintainer: Michael Hansen pkgbase=swift-language pkgname=(swift swift-lldb) _swiftver=4.2.3-RELEASE pkgver=${_swiftver//-RELEASE/} pkgrel=1 pkgdesc="The Swift programming language and debugger" arch=('i686' 'x86_64') url="http://swift.org/" license=('apache') depends=('python2' 'libutil-linux' 'icu' 'libbsd' 'libedit' 'libxml2' 'sqlite' 'ncurses' 'libblocksruntime') makedepends=('git' 'cmake' 'ninja' 'swig' 'clang>=5.0' 'python2-six' 'perl' 'python2-sphinx' 'python2-requests' 'rsync') 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" "swift-clang-${_swiftver}.tar.gz::https://github.com/apple/swift-clang/archive/swift-${_swiftver}.tar.gz" "swift-lldb-${_swiftver}.tar.gz::https://github.com/apple/swift-lldb/archive/swift-${_swiftver}.tar.gz" "swift-cmark-${_swiftver}.tar.gz::https://github.com/apple/swift-cmark/archive/swift-${_swiftver}.tar.gz" "swift-llbuild-${_swiftver}.tar.gz::https://github.com/apple/swift-llbuild/archive/swift-${_swiftver}.tar.gz" "swift-package-manager-${_swiftver}.tar.gz::https://github.com/apple/swift-package-manager/archive/swift-${_swiftver}.tar.gz" "swift-corelibs-xctest-${_swiftver}.tar.gz::https://github.com/apple/swift-corelibs-xctest/archive/swift-${_swiftver}.tar.gz" "swift-corelibs-foundation-${_swiftver}.tar.gz::https://github.com/apple/swift-corelibs-foundation/archive/swift-${_swiftver}.tar.gz" "swift-corelibs-libdispatch-${_swiftver}.tar.gz::https://github.com/apple/swift-corelibs-libdispatch/archive/swift-${_swiftver}.tar.gz" "swift-compiler-rt-${_swiftver}.tar.gz::https://github.com/apple/swift-compiler-rt/archive/swift-${_swiftver}.tar.gz" "swift-integration-tests-${_swiftver}.tar.gz::https://github.com/apple/swift-integration-tests/archive/swift-${_swiftver}.tar.gz" "0001-sanitizer-Use-pre-computed-size-of-struct-ustat.patch" "glibc-includes.patch" "clang7-compat.patch" ) sha256sums=('f99c9b867e033eebc242310fbf4ab405ab943c1bf69ad25ef50d83c76f44603d' 'b87678ee9f8b13f3b69d793624aa306c6ed9b8d11471dc5a39b7e7680f1e9de6' 'fca19a5a1f0ae7283533d7542b3957aa906d387b0d2281ff00b38e30987fe0b4' '0a663acbfe6d11b5825fde42deaaeddfa3041231d858680fcca98ec22b79d450' '39777863b93e41beb642b969749e8e7a6c336e29c014494d717216827c430891' '9b4550e24e3af3549187370d8a82abe610200822a14feb8be62e2ccfdbb91462' '5b6420432cd57083d05d9c060eb4d707a9268d672d08d35e7398e6763bf9cba9' 'd9a40bd7bec478398c38962503155c5ac0defcf12d48afd0d00ecaec26a37f0c' '18ac732178d026625ad2b160ea51395b00200faa9bc8863c5ed56f65b31847c6' '49ee930ad1f26f1a8e478ab676f25b6716c65266b18738b3581037eaaf436b00' '31b6d99f778c10822fd79c5ab6aa3d06e853a5979798b759c4739ae61624c2e6' 'df3c0068a2a684cb95ee5508b81f7e3ae216f7ab91a46ee9920a37083d12dd3c' '5cd08c3a83c71e552fa2fd9ec8b076fbd25ba5450b9ecd59a0c877a9c9407b34' '6a94de9adbdc4182b297e0011a68c9387fd25864dcb4386654218c8c530032c2' '9855ce69d2358c8fc76237620f7e18bfbc82459ad72bdf995b8225fa4ba882a2') prepare() { # Use python2 where appropriate find "$srcdir" -type f -print0 | \ xargs -0 sed -i 's|/usr/bin/env python$|&2|;s|/usr/bin/python$|&2|' find "$srcdir/swift-lldb-swift-${_swiftver}" -name Makefile -print0 | \ xargs -0 sed -i 's|python-config|python2-config|g' sed -i '/^cmake_minimum_required/a set(Python_ADDITIONAL_VERSIONS 2.7)' \ "$srcdir/swift-swift-${_swiftver}/CMakeLists.txt" sed -i '/^cmake_minimum_required/a set(Python_ADDITIONAL_VERSIONS 2.7)' \ "$srcdir/swift-lldb-swift-${_swiftver}/CMakeLists.txt" sed -i 's/\/&2/' \ "$srcdir/swift-swift-${_swiftver}/utils/build-script-impl" \ "$srcdir/swift-swift-${_swiftver}/test/sil-passpipeline-dump/basic.test-sh" \ "$srcdir/swift-swift-${_swiftver}/test/Driver/response-file.swift" # Use directory names which build-script expects for sdir in llvm clang lldb cmark llbuild compiler-rt; do rm -rf ${sdir} mv swift-${sdir}-swift-${_swiftver} ${sdir} done for sdir in corelibs-xctest corelibs-foundation corelibs-libdispatch \ integration-tests do rm -rf ${sdir} mv swift-${sdir}-swift-${_swiftver} swift-${sdir} done rm -rf swift swiftpm mv swift-swift-${_swiftver} swift mv swift-package-manager-swift-${_swiftver} swiftpm # Fix wrong glibc include paths in glibc module map ( cd swift && patch -p1 -i "$srcdir/glibc-includes.patch" ) # Fix for clang 7+ ( cd swift && patch -p1 -i "$srcdir/clang7-compat.patch" ) # Backport compiler-rt SVN r333213 ( cd compiler-rt && patch -p1 -i "$srcdir/0001-sanitizer-Use-pre-computed-size-of-struct-ustat.patch" ) } _common_build_params=( --install-prefix=/usr --lldb --llbuild --swiftpm --xctest --foundation --libdispatch ) _build_script_wrapper() { export SWIFT_SOURCE_ROOT="$srcdir" ./utils/build-script "$@" } build() { cd "$srcdir/swift" export PATH="$PATH:/usr/bin/core_perl" # sourcekit (STILL) doesn't link correctly on Linux. Disable for now :( _build_script_wrapper -R "${_common_build_params[@]}" \ --extra-cmake-options="-DSWIFT_BUILD_SOURCEKIT=FALSE" \ --skip-test-sourcekit } check() { cd "$srcdir/swift" # Fix the lldb swig binding's import path (matches Arch LLDB package) # Need to do this here as well as the install since the test suite # uses the lldb python bindings directly from the build dir sed -i "/import_module('_lldb')/s/_lldb/lldb.&/" \ "${srcdir}/build/Ninja-ReleaseAssert/lldb-linux-${CARCH}/lib/python2.7/site-packages/lldb/__init__.py" _build_script_wrapper -R -t --skip-test-sourcekit } package_swift() { pkgdesc='The Swift programming language compiler and tools' provides=('swift-language') conflicts=('swift-language-git' 'swift-git' 'swift-bin') optdepends=('swift-lldb: Swift REPL and debugger') cd "$srcdir/swift" _build_script_wrapper -R "${_common_build_params[@]}" \ --install-destdir="$pkgdir" \ --install-llbuild --install-swiftpm --install-xctest \ --install-foundation --install-libdispatch cd "$srcdir/build/Ninja-ReleaseAssert" # Some projects' install targets don't work correctly :( ( cd swift-linux-$CARCH install -m755 bin/swift bin/swift-{demangle,ide-test} "$pkgdir/usr/bin" ln -s swift "$pkgdir/usr/bin/swiftc" ln -s swift "$pkgdir/usr/bin/swift-autolink-extract" #install -m644 lib/libsourcekitdInProc.so "$pkgdir/usr/lib" install -dm755 "$pkgdir/usr/share/man/man1" install -m644 docs/tools/swift.1 "$pkgdir/usr/share/man/man1" umask 0022 cp -rL lib/swift/{clang,linux,shims} "$pkgdir/usr/lib/swift/" ) # Some install targets provide an empty /usr/local/include rmdir "$pkgdir/usr/local/include" rmdir "$pkgdir/usr/local" # License file install -dm755 "$pkgdir/usr/share/licenses/swift" install -m644 "$srcdir/swift/LICENSE.txt" "$pkgdir/usr/share/licenses/swift" } package_swift-lldb() { pkgdesc='The Swift programming language debugger (LLDB) and REPL' depends=('swift' 'python2-six') provides=('lldb') conflicts=('lldb') options=('!strip') # Don't strip repl_swift -- we need its symbols cd "$srcdir/swift" _build_script_wrapper -R "${_common_build_params[@]}" \ --install-destdir="$pkgdir" \ --install-lldb # Fix the lldb swig binding's import path (matches Arch LLDB package) # We have to do this again because the build-script recreates the "bad" # version of the source file. sed -i "/import_module('_lldb')/s/_lldb/lldb.&/" \ "${pkgdir}/usr/lib/python2.7/site-packages/lldb/__init__.py" # This should be provided from python2-six rm "$pkgdir/usr/lib/python2.7/site-packages/six.py" rm "$pkgdir/usr/lib/python2.7/site-packages/six.pyc" }