%global debug_package %{nil} %global swifttag DEVELOPMENT-SNAPSHOT-2018-04-15-a %global swiftgithash 22530b9 %global swiftgitdate 20180415 Name: swift-lang Version: 4.2 Release: 0.4.%{swiftgitdate}git%{swiftgithash}%{?dist} Summary: Apple's Swift programming language License: ASL 2.0 URL: https://swift.org Source0: https://github.com/apple/swift/archive/swift-%{swifttag}.tar.gz#/swift.tar.gz Source1: https://github.com/apple/swift-compiler-rt/archive/swift-%{swifttag}.tar.gz#/swift-compiler-rt.tar.gz Source2: https://github.com/apple/swift-corelibs-libdispatch/archive/swift-%{swifttag}.tar.gz#/corelibs-libdispatch.tar.gz Source3: https://github.com/apple/swift-corelibs-foundation/archive/swift-%{swifttag}.tar.gz#/corelibs-foundation.tar.gz Source4: https://github.com/apple/swift-integration-tests/archive/swift-%{swifttag}.tar.gz#/swift-integration-tests.tar.gz Source5: https://github.com/apple/swift-corelibs-xctest/archive/swift-%{swifttag}.tar.gz#/corelibs-xctest.tar.gz Source6: https://github.com/apple/swift-clang/archive/swift-%{swifttag}.tar.gz#/clang.tar.gz Source7: https://github.com/apple/swift-package-manager/archive/swift-%{swifttag}.tar.gz#/package-manager.tar.gz Source8: https://github.com/apple/swift-lldb/archive/swift-%{swifttag}.tar.gz#/lldb.tar.gz Source9: https://github.com/apple/swift-llvm/archive/swift-%{swifttag}.tar.gz#/llvm.tar.gz Source10: https://github.com/apple/swift-llbuild/archive/swift-%{swifttag}.tar.gz#/llbuild.tar.gz Source11: https://github.com/apple/swift-cmark/archive/swift-%{swifttag}.tar.gz#/cmark.tar.gz Source12: https://github.com/apple/swift-xcode-playground-support/archive/swift-%{swifttag}.tar.gz#/swift-xcode-playground-support.tar.gz Source13: https://github.com/ninja-build/ninja/archive/v1.7.2.tar.gz#/ninja.tar.gz Source14: swift-lang.conf Patch0: %{name}-%{version}-change-lldb-location.patch BuildRequires: which BuildRequires: clang BuildRequires: gcc-c++ BuildRequires: cmake BuildRequires: swig BuildRequires: pkgconfig BuildRequires: perl-podlators BuildRequires: rsync BuildRequires: python-devel BuildRequires: libbsd-devel BuildRequires: libxml2-devel BuildRequires: libsqlite3x-devel BuildRequires: libblocksruntime-static BuildRequires: libatomic-static BuildRequires: libcurl-devel BuildRequires: libuuid-devel BuildRequires: libedit-devel BuildRequires: libicu-devel BuildRequires: python2-sphinx Requires: glibc-devel Requires: clang Requires: libatomic Requires: libbsd ExcludeArch: s390x i686 armv7hl ppc64le aarch64 ppc64 %description Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns. The goal of the Swift project is to create the best available language for uses ranging from systems programming, to mobile and desktop apps, scaling up to cloud services. Most importantly, Swift is designed to make writing and maintaining correct programs easier for the developer. %prep %setup -q -c swift -a 0 -a 1 -a 2 -a 3 -a 4 -a 5 -a 6 -a 7 -a 8 -a 9 -a 10 -a 11 -a 12 -a 13 # The Swift build script requires directories to be named # in a specific way so renaming the source directories is # necessary mv swift-clang-swift-%{swifttag} clang mv swift-cmark-swift-%{swifttag} cmark mv swift-compiler-rt-swift-%{swifttag} compiler-rt mv swift-corelibs-foundation-swift-%{swifttag} swift-corelibs-foundation mv swift-corelibs-libdispatch-swift-%{swifttag} swift-corelibs-libdispatch mv swift-corelibs-xctest-swift-%{swifttag} swift-corelibs-xctest mv swift-integration-tests-swift-%{swifttag} swift-integration-tests mv swift-llbuild-swift-%{swifttag} llbuild mv swift-lldb-swift-%{swifttag} lldb mv swift-llvm-swift-%{swifttag} llvm mv swift-package-manager-swift-%{swifttag} swiftpm mv swift-swift-%{swifttag} swift mv swift-xcode-playground-support-swift-%{swifttag} swift-xcode-playground-support mv ninja-1.7.2 ninja # This patch tells the Swift executable to look for its Swift-specific # lldb executable in /usr/libexec/swift-lldb, not in the same directory # as the swift executable (i.e. /usr/bin). %patch0 -p0 %build export VERBOSE=1 swift/utils/build-script --preset=buildbot_linux,no_test install_destdir=%{_builddir} installable_package=%{_builddir}/swift-%{version}-fedora.tar.gz %install mkdir -p %{buildroot}%{_libexecdir}/swift-lldb mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}/usr/lib mkdir -p %{buildroot}%{_includedir} install -m 0755 %{_builddir}/usr/bin/swift %{buildroot}%{_bindir} install -m 0755 %{_builddir}/usr/bin/swift-build %{buildroot}%{_bindir} install -m 0755 %{_builddir}/usr/bin/swift-build-tool %{buildroot}%{_bindir} install -m 0755 %{_builddir}/usr/bin/swift-demangle %{buildroot}%{_bindir} install -m 0755 %{_builddir}/usr/bin/swift-package %{buildroot}%{_bindir} install -m 0755 %{_builddir}/usr/bin/swift-run %{buildroot}%{_bindir} install -m 0755 %{_builddir}/usr/bin/swift-test %{buildroot}%{_bindir} ln -fs swift %{buildroot}/usr/bin/swift-autolink-extract ln -fs swift %{buildroot}/usr/bin/swiftc ln -fs swift %{buildroot}/usr/bin/swift-format install -m 0755 %{_builddir}/usr/bin/lldb* %{buildroot}%{_libexecdir}/swift-lldb install -m 0755 %{_builddir}/usr/bin/repl_swift %{buildroot}%{_libexecdir}/swift-lldb # Why /usr/lib instead of %{_libdir}? # The Swift toolchain is *extermely* sensitive to locations of its files # (for example, the need for the patch above in the prep section) and # has "lib" hardcoded in many, many places throughout all the projects that # make up the Swift toolchain. Since we use subdirectories for the # libraries, no actual .so files are dumped in /usr/lib. mkdir -p %{buildroot}/usr/lib/swift-lldb cp -r %{_builddir}/usr/lib/lldb %{buildroot}/usr/lib/swift-lldb cp -r %{_builddir}/usr/lib/python2.7 %{buildroot}/usr/lib/swift-lldb cp %{_builddir}/usr/lib/liblldb.so.5.0.0 %{buildroot}/usr/lib/swift-lldb ln -fs liblldb.so.5.0.0 %{buildroot}/usr/lib/swift-lldb/liblldb.so.5 ln -fs liblldb.so.5 %{buildroot}/usr/lib/swift-lldb/liblldb.so cp %{_builddir}/usr/lib/libsourcekitdInProc.so %{buildroot}/usr/lib/swift-lldb cp %{_builddir}/usr/lib/libswiftDemangle.so %{buildroot}/usr/lib/swift-lldb cp %{_builddir}/usr/lib/liblldbIntelFeatures.so.5.0.0 %{buildroot}/usr/lib/swift-lldb ln -fs liblldbIntelFeatures.so.5.0.0 %{buildroot}/usr/lib/swift-lldb/liblldbIntelFeatures.so.5 ln -fs liblldbIntelFeatures.so.5 %{buildroot}/usr/lib/swift-lldb/liblldbIntelFeatures.so ln -fs %{_bindir}/swift %{buildroot}%{_libexecdir}/swift-lldb/swift mkdir -p %{buildroot}/usr/lib/swift cp -r %{_builddir}/usr/lib/swift/* %{buildroot}/usr/lib/swift ln -fs /usr/lib/swift %{buildroot}/usr/lib/swift-lldb/swift mkdir -p %{buildroot}/usr/lib/swift_static cp -r %{_builddir}/usr/lib/swift_static/* %{buildroot}/usr/lib/swift_static ln -fs /usr/lib/swift_static %{buildroot}/usr/lib/swift-lldb/swift_static cp -r %{_builddir}%{_includedir}/* %{buildroot}%{_includedir} mv %{buildroot}%{_includedir}/lldb %{buildroot}%{_includedir}/swift-lldb mkdir -p %{buildroot}/%{_sysconfdir}/ld.so.conf.d/ install -m 0644 %{SOURCE14} %{buildroot}/%{_sysconfdir}/ld.so.conf.d/swift-lang.conf mkdir -p %{buildroot}%{_mandir}/man1 install -m 0644 %{_builddir}/usr/share/man/man1/swift.1 %{buildroot}%{_mandir}/man1 mkdir -p %{buildroot}%{_datarootdir}/swift/ cp %{_builddir}/usr/share/swift/LICENSE.txt %{buildroot}%{_datarootdir}/swift %files %{_bindir}/swift* %{_mandir}/man1/* %{_datarootdir}/swift/LICENSE.txt %{_includedir}/* /usr/lib/swift-lldb/* /usr/lib/swift/* /usr/lib/swift_static/* %{_libexecdir}/swift-lldb/* %{_sysconfdir}/ld.so.conf.d/swift-lang.conf %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %changelog * Mon Apr 16 2018 Ron Olson 4.2-0.4.20180415git22530b9 - Updated to swift-DEVELOPMENT-SNAPSHOT-2018-04-15-a * Thu Apr 12 2018 Ron Olson 4.2-0.3.20180411git537a846 - Updated to swift-DEVELOPMENT-SNAPSHOT-2018-04-11-a * Wed Feb 28 2018 Ron Olson 4.1-0.2.20180227git5f2f440 - Updated to swift-DEVELOPMENT-SNAPSHOT-2018-02-27-a * Wed Feb 14 2018 Ron Olson 4.1-0.1.20180214git5a1a34b - Initial package for Fedora