Bug 1536780 - Review Request: swift-lang - Apple's Swift Programming Language
Summary: Review Request: swift-lang - Apple's Swift Programming Language
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Tom Stellard
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
: 1295115 (view as bug list)
Depends On:
Blocks: FE-NEEDSPONSOR
TreeView+ depends on / blocked
 
Reported: 2018-01-21 05:36 UTC by Ron Olson
Modified: 2018-10-30 20:56 UTC (History)
9 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2018-07-22 03:02:40 UTC
Type: ---
Embargoed:
tstellar: fedora-review+
tstellar: needinfo+


Attachments (Terms of Use)

Description Ron Olson 2018-01-21 05:36:05 UTC
Spec URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang.spec
SRPM URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.1-0.20180117git1381d08.fc28.src.rpm
Description: The Apple Swift Programming Language for Linux
Fedora Account System Username: tachoknight

Comment 1 Ron Olson 2018-01-21 06:31:14 UTC
The current released version of Swift (4.0.3) does not have the patches necessary to build on Fedora, so I'm using the latest snapshot that does build correctly. Chatting on IRC, the nice folks suggested submitting a Review Request, even with the beta version of Swift, so that I can work out the packaging issues and can have everything good-to-go by the time the next official version of Swift is released. 

I am currently trying to remove the dependency on building everything and using the Fedora-supplied packages for Clang, LLVM, etc., is it okay that I keep updating the spec file and comment on this ticket?

Comment 2 Neal Gompa 2018-01-21 19:31:27 UTC
Yes, that's fine. Please keep providing updated progress in the form of spec + srpm links and details as you go along.

When it is ready, please remove the "NotReady" marker from the whiteboard field in this ticket.

Comment 3 Robert-André Mauchin 🐧 2018-01-21 23:58:53 UTC
 - Please split your BR on multiple lines.


 - It seems you're missing a /usr/bin/pod2man dependency, provided by perl-podlators.

CMake Error at cmake/modules/SwiftManpage.cmake:23 (message):
  Need pod2man installed to generate man page
Call Stack (most recent call first):
  docs/tools/CMakeLists.txt:3 (manpage)
-- Configuring incomplete, errors occurred!

 - Sphinx would be useful to build the docs:

CMake Warning at docs/CMakeLists.txt:24 (message):
  Unable to find sphinx-build program.  Not building docs

 - Tried to build in Koji: i686 is no go:

NotImplementedError: System "Linux" with architecture "i686" is not supported
/var/tmp/apple-swift/swift/utils/build-script: fatal error: command terminated with a non-zero exit status 1, aborting

https://swift.org/blog/swift-linux-port/

"Currently x86_64 is the only supported architecture on Linux."

   I guess you should define an ExclusiveArches specifically for swift-lang. You should also consider making a srpm package:

swift-srpm-macros.noarch : RPM macros for building Swift source packages

  It would contain a file:

/usr/lib/rpm/macros.d/macros.swift-srpm

   which defines macros specific to your language. For example:

%swift_arches x86_64

 - I haven't been able to build it on my sytems, it segfaults after 45 mn. Fails on Koji too: https://koji.fedoraproject.org/koji/taskinfo?taskID=24356781
 

>I am currently trying to remove the dependency on building everything and using the Fedora-supplied packages for Clang, LLVM, etc., is it okay that I keep updating the spec file and comment on this ticket?

Yes

Comment 4 Ron Olson 2018-01-22 00:15:40 UTC
Yep, I realized I needed to explicitly limit the architectures. I have limited it to only x86_64, added the pod2man dependency, reorganized the %prep section, and it builds on my machine and I uploaded the new files (https://tachoknight.fedorapeople.org/swift-lang/), but when I uploaded that srpm to Koji it dies in a new place: http://koji.fedoraproject.org/koji/taskinfo?taskID=24356831.

Comment 5 Ron Olson 2018-01-22 17:38:03 UTC
Figured out the issue with the Koji job dying: One of the sub-projects uses rsync instead of cp and it wasn't listed in the BRs and apparently rsync is not installed by default...?

Koji scratch build succeeded: https://koji.fedoraproject.org/koji/taskinfo?taskID=24373311

Latest spec and srpm available at: https://tachoknight.fedorapeople.org/swift-lang/

* I added rsync as a BR
* Moved all the BRs to separate lines; right away I found this useful so I see why it's a good idea.

I'm going to see about minimizing the files installed in the package, specifically lldb as that's explicitly included. This may require another upstream modification; they've been amenable to all of my pull requests so far. :)

Comment 6 Ron Olson 2018-01-22 19:26:41 UTC
I figured out how to exclude LLDB from the rpm, but running the REPL brings up this message:

***  You are running Swift's integrated REPL,  ***
***  intended for compiler and stdlib          ***
***  development and testing purposes only.    ***
***  The full REPL is built as part of LLDB.   ***
***  Type ':help' for assistance.              ***

I'm testing the ramifications of this right now; will update the ticket accordingly.

Comment 7 Ron Olson 2018-01-23 19:42:39 UTC
There's an issue with excluding LLDB from being installed as part of the Swift package, the one that is already available in Fedora does not know about Swift (of course), but that makes the Swift REPL unavailable:

[root@2b87d31bfd74 home]# swift --version
Swift version 4.1-dev
Target: x86_64-unknown-linux-gnu
[root@2b87d31bfd74 home]# lldb --version
lldb version 5.0.1
[root@2b87d31bfd74 home]# rpm -qf /usr/bin/lldb
lldb-5.0.1-1.fc28.x86_64
[root@2b87d31bfd74 home]# rpm -qf /usr/bin/swift
swift-lang-4.1-0.20180117git1381d08.fc28.x86_64
[root@2b87d31bfd74 home]# swift
error: LLDB isn't configured with REPL support for any languages.
[root@2b87d31bfd74 home]#

Not sure how to resolve this in a polite way for the user (e.g. we don't want to overwrite their existing version).

Comment 8 Ron Olson 2018-01-24 15:40:12 UTC
I've been playing around with a downloaded copy of Swift in conjunction with an installed copy of lldb and I believe that the swift binary is explicitly looking for lldb in the same directory to run the REPL; I've asked on the Swift forums to confirm my findings. 

It seems that the copy of lldb is inclusive of existing functionality (i.e. I tested that it also debugs C/C++ executables as well), but that doesn't really matter insofar as it's not the same copy that ships with the existing lldb rpm. I believe the lldb that is included with Swift is essentially a fork with additional functionality to support Swift. 

I'd like to float the possibility of allowing the installation to be put in /opt/fedora per https://fedoraproject.org/wiki/Packaging:Guidelines#Limited_usage_of_.2Fopt.2C_.2Fetc.2Fopt.2C_and_.2Fvar.2Fopt. I'm looking to get more information/confirmation from the Swift group before making the formal proposal.

Comment 9 Ron Olson 2018-01-24 17:42:59 UTC
(In reply to Ron Olson from comment #8)
> I've been playing around with a downloaded copy of Swift in conjunction with
> an installed copy of lldb and I believe that the swift binary is explicitly
> looking for lldb in the same directory to run the REPL; I've asked on the
> Swift forums to confirm my findings. 
> 
> It seems that the copy of lldb is inclusive of existing functionality (i.e.
> I tested that it also debugs C/C++ executables as well), but that doesn't
> really matter insofar as it's not the same copy that ships with the existing
> lldb rpm. I believe the lldb that is included with Swift is essentially a
> fork with additional functionality to support Swift. 
> 
> I'd like to float the possibility of allowing the installation to be put in
> /opt/fedora per
> https://fedoraproject.org/wiki/Packaging:Guidelines#Limited_usage_of_.2Fopt.
> 2C_.2Fetc.2Fopt.2C_and_.2Fvar.2Fopt. I'm looking to get more
> information/confirmation from the Swift group before making the formal
> proposal.

I was looking at the wrong repo for llvm/lldb...they seem to have references to Swift so I'm currently building the latest version of llvm/lldb and see what's available; it may be possible to just tie Swift with a later version of LLDB so that the two can coexist.

Comment 10 Ron Olson 2018-01-25 14:54:34 UTC
Well, I asked on the LLDB board on the Swift forums and it seems pretty certain that Swift must include its own copy of LLDB:

https://forums.swift.org/t/usage-of-lldb-with-swift-on-linux-apt-get-version-vs-bundled-version/8770

I'll open a ticket with the FPC to see what can be done.

Comment 11 Ron Olson 2018-02-11 22:54:23 UTC
I believe I've resolved all the known outstanding issues and have updated the spec and RPMs at https://tachoknight.fedorapeople.org/swift-lang/. 4.1 is still not released; would it be okay to review the packaging before then to resolve any issues?

Comment 12 Neal Gompa 2018-02-11 22:59:39 UTC
Ron, that's perfectly fine.

Comment 13 Ron Olson 2018-02-12 01:48:33 UTC
Okay, I removed NotReady from the whiteboard.

Comment 14 Ron Olson 2018-02-15 04:46:36 UTC
I've updated the spec file and generated two new rpm files to take into account a bug fix that I submitted to Apple and they merged: https://github.com/apple/swift/pull/14589. This allows Swift to be built successfully using Clang 6 on Rawhide. I tested it against 5.0.1 on F27 and it builds successfully there as well.


https://tachoknight.fedorapeople.org/swift-lang/

Comment 15 Richard Shaw 2018-02-27 21:25:15 UTC
I don't have a review submitted at the moment but I can fix that this week.

Here's a quick spec review while I have a mock build going...

1. Need to tweak your release tag. Since this is a prerelease you have the 0 correct but per the guidelines[1] it should be 0.X where in this case X would be 1, so the full package name would be something like:

swift-lang-4.1-0.1.20180214git5a1a34b.fc28

Also, since there shouldn't be a problem using more generic global variables, you could remove the "swift..." from each one to aid readability. 

2. This is a suggestion not a requirement but it helps readability to put two lines between major sections, i.e. %prep, %build, %install, etc.

3. This doesn't use the typical build system but verbose output is preferred. If you can pass settings directly to CMAKE somehow just set the environment variable "VERBOSE=1". Perhaps just setting prior to the build command will work:
export VERBOSE=1

4. What is the purpose of all the symbolic linking? Most of it you're creating links into the builddir but I don't see it used anywhere...

A couple you've got hardcoded paths in /usr/lib which you shouldn't do during package building.

5. Since you've pretty much excluded all arches except x86_64 it would be /usr/lib64, but either way you shouldn't be creating files in the build system and it should error out.

6. Is there a reason you're installing into %{_builddir} instead of %{buildroot}? 

7. Like your original post you should post new links after every review, include what you've changed in the %changelog, and bump the release so the next one would be 0.2.

Comment 16 Richard Shaw 2018-02-27 21:27:08 UTC
I forgot to post the links to the guidelines...

https://fedoraproject.org/wiki/Packaging:Versioning#Snapshots

and

https://fedoraproject.org/wiki/Packaging:Versioning#Prerelease_versions

It would be helpful to show an example of both used together but oh well...

Comment 17 Ron Olson 2018-02-27 21:42:16 UTC
Hey Richard, thanks for the feedback. My responses to each of your points:
1: Will do

2: Will do

3: Will investigate and will do if possible

4: Swift builds and requires its own version of LLDB for its REPL, which would cause a conflict with an existing install of LLDB that already exists as a package (and does not include Swift support). The symlinking is to get Swift to work in an environment where the user has already installed LLDB. 

5: %{_libdir} wants to install to /usr/lib64, but Swift expects to find everything in /usr/lib; no amount of coaxing from ldconfig made it work. I'll take another crack at putting everything in lib64; it's probably another hardcoded path that needs to be changed through a patch.

6: Probably sheer ignorance on how to package properly :)

7: Will do

Comment 18 Ron Olson 2018-03-30 14:40:27 UTC
As an update, Swift 4.1 was released yesterday but does not include any of my pull requests. Looking through their blog I found out that the final cut from master was actually several days before any of my pull requests were merged, so version 4.1-release will not package properly without patches to the code.

I'm still working on the Fedora-specific patches to make it play nicely as an rpm, so I'm probably going to keep going with the master branch and hopefully by the time 4.2 is released it will be ready to go.

Comment 20 Richard Shaw 2018-04-15 18:00:47 UTC
Just got back from a very cold and wet Boy Scout camping trip. Will check it out when I recover :)

Comment 21 Tom Stellard 2018-04-16 15:36:50 UTC
Why are libraries installed to /usr/lib instead of %{_libdir}?

Comment 22 Ron Olson 2018-04-16 17:58:36 UTC
Swift is very sensitive to the location of all parts of its toolchain; "lib" is hard-coded in some way or another across all the projects that make up the Swift toolchain. The past couple of months have been spent finding, analyzing, and replacing all appropriate instances of lib with lib64 and the result is Swift segfaults 100% of the time.

That said, looking at /usr/lib64, it's populated with actual shared library files, while Swift puts its files inside subdirectories (e.g. /usr/lib/swift), so it's not dropping a bunch of .so files in /usr/lib.

Comment 23 Tom Stellard 2018-04-16 18:00:14 UTC
(In reply to Ron Olson from comment #22)
> Swift is very sensitive to the location of all parts of its toolchain; "lib"
> is hard-coded in some way or another across all the projects that make up
> the Swift toolchain. The past couple of months have been spent finding,
> analyzing, and replacing all appropriate instances of lib with lib64 and the
> result is Swift segfaults 100% of the time.
> 
> That said, looking at /usr/lib64, it's populated with actual shared library
> files, while Swift puts its files inside subdirectories (e.g.
> /usr/lib/swift), so it's not dropping a bunch of .so files in /usr/lib.

Ok, can you add a comment to the spec file explaining why you are using /usr/lib.

Comment 24 Ron Olson 2018-04-16 18:01:01 UTC
Sure thing!

Comment 25 Tom Stellard 2018-04-16 20:18:41 UTC
A few other things that the review tool caught:

- BuildRequires: python-devel -> python2-devel or python3-devel

- Need %license LICENSE.txt in %files

- The static libraries in ./usr/lib/swift_static/linux/ Are these internal compiler libraries?

- Package needs to take ownership of directories:
(e.g. /usr/lib/swift/* -> /usr/lib/swift/)

Comment 26 Ron Olson 2018-04-18 00:55:40 UTC
I've made all of Tom's changes. The static libraries are internal compiler libraries.

Spec URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang.spec

4.2-0.4.20180415git22530b9 for Fedora 27: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.4.20180415git22530b9.fc27.src.rpm
4.2-0.4.20180415git22530b9 for Fedora Rawhide: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.4.20180415git22530b9.fc29.src.rpm

Comment 27 Ron Olson 2018-04-19 16:50:48 UTC
Updated to the 2018-04-16 build:

Spec URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang.spec

SRPM 4.2-0.5.20180418gitac06163 for Fedora 27: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.5.20180418gitac06163.fc27.src.rpm

SRPM 4.2-0.5.20180418gitac06163 for Fedora Rawhide: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.5.20180418gitac06163.fc29.src.rpm

Comment 28 Ron Olson 2018-04-20 20:49:41 UTC
Updated for Fedora 28 (will be included in builds going forward):

SRPM 4.2-0.5.20180418gitac06163 for Fedora 28: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.5.20180418gitac06163.fc28.src.rpm

Comment 30 Ron Olson 2018-05-03 17:31:51 UTC
Updated to the 2018-05-02 build (first cut from the Swift master branch for what will be the actual 4.2 release):


Spec URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang.spec

SRPM 4.2-0.7.20180502gitb08fb12.fc27.src.rpm8 for Fedora 27: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.7.20180502gitb08fb12.fc27.src.rpm

SRPM 4.2-0.7.20180502gitb08fb12.fc27.src.rpm for Fedora 28: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.7.20180502gitb08fb12.fc28.src.rpm

SRPM 4.2-0.7.20180502gitb08fb12.fc27.src.rpm for Fedora Rawhide: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.7.20180502gitb08fb12.fc29.src.rpm

Comment 31 Ron Olson 2018-05-10 14:02:37 UTC
Updated to the 2018-05-08 build:


Spec URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang.spec

SRPM 4.2-0.8.20180508git0e6d867.fc27.src.rpm for Fedora 27: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.8.20180508git0e6d867.fc27.src.rpm

SRPM 4.2-0.8.20180508git0e6d867.fc28.src.rpm for Fedora 28: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.8.20180508git0e6d867.fc28.src.rpm

SRPM 4.2-0.8.20180508git0e6d867.fc29.src.rpm for Fedora Rawhide: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.8.20180508git0e6d867.fc29.src.rpm

Comment 32 Ron Olson 2018-05-22 02:40:40 UTC
Updated to the 2018-05-20 build:


Spec URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang.spec

SRPM 4.2-0.10.20180520gitbb77484.fc28.src.rpm for Fedora 27: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.10.20180520gitbb77484.fc27.src.rpm

SRPM 4.2-0.10.20180520gitbb77484.fc28.src.rpm for Fedora 28: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.10.20180520gitbb77484.fc28.src.rpm

SRPM 4.2-0.10.20180520gitbb77484.fc28.src.rpm for Fedora Rawhide: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.10.20180520gitbb77484.fc29.src.rpm

Comment 33 Ron Olson 2018-05-24 23:25:53 UTC
Is there anything else I need to do? The package has been working for me quite well on my machines; I use Swift more on Fedora than I do on a Mac. ;)

Comment 34 Richard Shaw 2018-05-25 15:01:01 UTC
Nope! Just been busy lately... I'll shoot to get started today but will likely be after the holiday weekend before I get it done.

Comment 35 Tom Stellard 2018-05-25 15:12:01 UTC
Why does swift Require: clang ?

Comment 36 Ron Olson 2018-05-25 15:13:40 UTC
Clang does the actual compilation of Swift code into a binary.

Comment 37 Tom Stellard 2018-05-25 15:15:01 UTC
(In reply to Ron Olson from comment #36)
> Clang does the actual compilation of Swift code into a binary.

If it's only a build requirement, then you can drop

Requires: clang

Comment 38 Ron Olson 2018-05-25 15:17:06 UTC
You mean a build requirement for Swift itself? The Swift toolchain uses it post-installation to build a Swift-based binary.

Comment 39 Richard Shaw 2018-05-25 17:41:50 UTC
Oh, and no need to supply source RPMs for each release, they're typically universal unless you have hardcoded customizations that are different between them.

Comment 40 Tom Stellard 2018-05-25 17:48:00 UTC
(In reply to Ron Olson from comment #38)
> You mean a build requirement for Swift itself? The Swift toolchain uses it
> post-installation to build a Swift-based binary.

Can you elaborate a little more on how swift uses clang post-install?  I thought swift was building its own clang, so it wouldn't need the system clang.

Comment 41 Ron Olson 2018-05-25 19:10:55 UTC
Swift does have its own clang for building itself, but it uses the system clang for compiling Swift code. Here's a session capture that illustrates this:

[rolson@thinky swift-source]$ uname -a
Linux thinky 4.16.9-300.fc28.x86_64 #1 SMP Thu May 17 06:39:18 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[rolson@thinky swift-compile-test]$ more /etc/os-release
NAME=Fedora
VERSION="28 (Workstation Edition)"
ID=fedora
VERSION_ID=28
PLATFORM_ID="platform:f28"
PRETTY_NAME="Fedora 28 (Workstation Edition)"
ANSI_COLOR="0;34"
CPE_NAME="cpe:/o:fedoraproject:fedora:28"
HOME_URL="https://fedoraproject.org/"
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=28
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=28
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
VARIANT="Workstation Edition"
VARIANT_ID=workstation
[rolson@thinky swift-source]$ rpm -qf /usr/bin/clang
clang-6.0.0-5.fc28.x86_64
[rolson@thinky swift-source]$ rpm -qf /usr/bin/swiftc
swift-lang-4.2-0.10.20180520gitbb77484.fc28.x86_64
[rolson@thinky swift-source]$ cd /tmp/swift-compile-test/
[rolson@thinky swift-compile-test]$ more test.swift
print("Hello World!")
[rolson@thinky swift-compile-test]$ swift test.swift
Hello World!
[rolson@thinky swift-compile-test]$ swiftc test.swift
[rolson@thinky swift-compile-test]$ ls
test  test.swift
[rolson@thinky swift-compile-test]$ ./test
Hello World!
[rolson@thinky swift-compile-test]$ rm test
[rolson@thinky swift-compile-test]$ sudo mv /usr/bin/clang /usr/bin/xxxclang
[sudo] password for rolson:
[rolson@thinky swift-compile-test]$ swiftc test.swift
<unknown>:0: error: unable to execute command: <unknown>
[rolson@thinky swift-compile-test]$ sudo mv /usr/bin/xxxclang /usr/bin/clang
[rolson@thinky swift-compile-test]$ swiftc test.swift
[rolson@thinky swift-compile-test]$ ./test
Hello World!
[rolson@thinky swift-compile-test]$ file test
test: ELF 64-bit LSB pie executable x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=227b6b70d8114874c4a7aadcb01a8c34240eb791, not stripped
[rolson@thinky swift-compile-test]$

Comment 42 Ron Olson 2018-05-31 17:21:03 UTC
Hope that helped clear it up; was very confusing to me at first (especially when the LLVM toolchain versions matched between what was installable and what was built just for bootstrapping).

Comment 43 Ron Olson 2018-06-04 14:46:56 UTC
Updated to the 2018-06-02 build:


Spec URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang.spec

SRPM 4.2-0.13.20180602gitadad0f5.fc28.src.rpm for Fedora 28: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.13.20180602gitadad0f5.fc28.src.rpm

Comment 44 Ron Olson 2018-06-11 14:53:05 UTC
Did the session log help? The clang that Swift builds is just for building Swift, and then uses the installed clang for building Swift-based binaries.

Comment 45 Richard Shaw 2018-06-11 19:49:23 UTC
Tom, would you like to take this review? You seem to be better suited. If not I'll do my best.

Comment 46 Tom Stellard 2018-06-12 05:44:00 UTC
(In reply to Richard Shaw from comment #45)
> Tom, would you like to take this review? You seem to be better suited. If
> not I'll do my best.

Sure, I can take the review.

Comment 47 Tom Stellard 2018-06-12 05:48:45 UTC
(In reply to Ron Olson from comment #42)
> Hope that helped clear it up; was very confusing to me at first (especially
> when the LLVM toolchain versions matched between what was installable and
> what was built just for bootstrapping).

Would it be possible to also use the system clang for compiling swift?

Comment 48 Ron Olson 2018-06-12 11:18:28 UTC
No, Swift is built using a special version of clang that has additional Swift-specific stuff added to it: https://swift.org/source-code/ under Cloned Repositories.

System clang is used, though, for building Ninja, which is then used to build everything else.

Comment 49 Tom Stellard 2018-06-12 16:33:05 UTC
(In reply to Ron Olson from comment #48)
> No, Swift is built using a special version of clang that has additional
> Swift-specific stuff added to it: https://swift.org/source-code/ under
> Cloned Repositories.
> 

OK.

> System clang is used, though, for building Ninja, which is then used to
> build everything else.

Could we use system ninja instead of building it with system clang?

Comment 50 Ron Olson 2018-06-13 00:54:47 UTC
> Could we use system ninja instead of building it with system clang?

Yep, that worked well; I added ninja in the %buildrequires section, removed the source file, and added a patch to disable the Swift toolchain from building it.

Spec URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang.spec

SRPM 4.2-0.18.20180611gitd99cd32.fc28.src.rpm for Fedora 28: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.18.20180611gitd99cd32.fc28.src.rpm

I misstated the usage of system clang; it's used quite a lot to build several parts of the toolchain, including the Swift-custom clang, which in turn then builds swift. Regardless, ninja isn't one of the things it builds anymore. :)

Comment 51 Ron Olson 2018-06-13 21:41:27 UTC
Updated to the 2018-06-12 build:

Spec URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang.spec

SRPM swift-lang-4.2-0.19.20180612gitbb9532c.fc29.src.rpm for Fedora 29: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.19.20180612gitbb9532c.fc29.src.rpm

Comment 52 Tom Stellard 2018-06-13 23:33:45 UTC
According to a discussion I had on #llvm, we should be able to build swift with system clang and possibly even system gcc.  It is Fedora policy to build with gcc if upstream supports it[1], so I think we should make a reasonable effort to build with gcc, you may want to ask on the swift mailing list if anyone has experience doing this.

If gcc won't work then we should be using system clang to build swift.

It also sounds like at runtime swift should be using its own custom clang and that using system clang may not work in all cases.  You should also look into making this change.

[1] https://fedoraproject.org/wiki/Packaging:Guidelines#Compiler

Comment 53 Ron Olson 2018-06-26 17:00:46 UTC
I asked over on the Swift Forums (https://forums.swift.org/t/building-swift-toolchain-using-gcc/13686/9) and the two member of the core team that I've chatted with indicate that the system-provided clang is sufficient to compile user-created Swift code; the version of clang that is built as part of the toolchain is only for building the Swift binary itself and is unnecessary for user code.

As far as compiling with gcc, I was surprised/worried that getting the entire Swift toolchain to build with gcc is not something that has been done before and is not supported at all in the codebase. As much as I have been working on it, I think I've hit a wall with clang-specific function calls that are invoked as part of the build. 

I believe using the system clang to build Swift and be a dependency of the Swift package provides the best experience with the fewest unknowns.

Comment 54 Ron Olson 2018-06-28 23:57:42 UTC
Updated to the 2018-06-26 build:


Spec URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang.spec

SRPM 4.2-0.20.20180626gitbe3b9a7.fc28.src.rpm for Fedora 28: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.20.20180626gitbe3b9a7.fc28.src.rpm

Comment 55 Tom Stellard 2018-06-29 00:03:10 UTC
Is python2 required or can swift use python3?

Comment 56 Ron Olson 2018-06-29 15:01:18 UTC
Swift doesn't use python, but lldb does. 
According to https://forums.swift.org/t/thoughts-on-python-3-for-swifts-lldb/14098/2 they seem to do no testing of python3.

Comment 57 Ron Olson 2018-06-29 18:18:54 UTC
Updated to the 2018-06-28 build:

Spec URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang.spec

SRPM 4.2-0.21.20180628git9f8f2a1.fc28.src.rpm for Fedora 28: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.21.20180628git9f8f2a1.fc28.src.rpm

Comment 58 Tom Stellard 2018-06-29 23:38:53 UTC
- Does swift need all the lldb headers that are installed?

- Are the clang headers in /usr/lib/swift/clang/include  still necessary now that we are using system clang?

Comment 59 Ron Olson 2018-06-30 13:40:37 UTC
I cleaned up the lldb stuff, but the headers in /usr/lib/swift/clang/include are indeed necessary; they're used when importing a module (e.g. Glibc, Foundation, Dispatch) into a Swift program. 


Spec URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang.spec

SRPM 4.2-0.22.20180629gitdab0d8e.fc28.src.rpm for Fedora 28: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.22.20180629gitdab0d8e.fc28.src.rpm

Comment 60 Tom Stellard 2018-07-02 19:11:27 UTC
(In reply to Ron Olson from comment #59)
> I cleaned up the lldb stuff, but the headers in /usr/lib/swift/clang/include
> are indeed necessary; they're used when importing a module (e.g. Glibc,
> Foundation, Dispatch) into a Swift program. 
> 
> 

I'm still seeing some lldb headers in /usr/include/swift-lldb/ are these necessary for run-time use?

Comment 61 Ron Olson 2018-07-02 20:54:34 UTC
Nope, I removed the headers; they are not necessary for runtime.

Spec URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang.spec

SRPM 4.2-0.24.20180701git6079032.fc28.src.rpm for Fedora 28: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.24.20180701git6079032.fc28.src.rpm

Comment 62 Tom Stellard 2018-07-03 00:20:26 UTC
There are still headers in /usr/include/lldb with the latest build, can you remove these.

Comment 63 Ron Olson 2018-07-03 04:01:30 UTC
Whoops, sorry about that. Fixed now.

Spec URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang.spec

SRPM 4.2-0.25.20180702gitc2e1567.fc28.src.rpm for Fedora 28: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.25.20180702gitc2e1567.fc28.src.rpm

Comment 64 Tom Stellard 2018-07-03 17:19:54 UTC
This looks better now.  Just a few more things that the fedora-review tool caught:

- Drop BuildRequires: which

-+ Filter Provdes for liblldb* https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering

- Any shared objects that are run-time dependencies of applications compiled by swift, but not run-time dependencies of the swift compiler should be split out into a -runtime subpackage. swift-lang should Require: the -runtime subpackage.

Comment 65 Ron Olson 2018-07-04 20:09:13 UTC
Okay, the Swift run-time libs are in their own package, removed the 'which' buildrequires, and filtered the lldb libraries. 

Spec URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang.spec

SRPM 4.2-0.26.20180703git107e307.fc28.src.rpm for Fedora 28: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.26.20180703git107e307.fc28.src.rpm

Comment 66 Tom Stellard 2018-07-05 16:07:39 UTC
The lldb shared objects are versioned e.g. liblldb.so.6.0.0, so the regex you are using to filter the provides does not match them.  I think you can fix this by dropping the $ or by adding .* after so.

Comment 67 Ron Olson 2018-07-05 17:25:13 UTC
I checked the regex and your change seems to do the trick, thanks!

Spec URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang.spec

SRPM 4.2-0.27.20180704gitf56a941.fc28.src.rpm for Fedora 28: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.27.20180704gitf56a941.fc28.src.rpm

Comment 68 Tom Stellard 2018-07-05 20:07:54 UTC
Below is the full review report.  I've listed two items in the issues section that should be fixed before this request gets approved, but otherwise this package looks good.

Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
[ ] = Manual review needed


Issues:
=======
Please fix these:

- /usr/lib/swift/linux/ in the %files section instead of /usr/lib/swift/linux/*.so
This indicates that the package owns the directory.

- Remove explicit library requres:

Requires:       libatomic
Requires:       libbsd

These are OK as is:

- Header files in -devel subpackage, if present.

  This is OK other compiler packages, like clang do this.

- Static libraries in -static or -devel subpackage, providing -devel if

  These are internal libs not meant for any other package, so this is OK.

===== MUST items =====

C/C++:
[ ]: Package does not contain kernel modules.
[ ]: Package contains no static executables.
[ ]: Rpath absent or only used for internal libs.
     Note: See rpmlint output
[ ]: Development (unversioned) .so files in -devel subpackage, if present.
     Note: Unversioned so-files in private %_libdir subdirectory (see
     attachment). Verify they are not in ld path.
[x]: Package does not contain any libtool archives (.la)

Generic:
[ ]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[ ]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "MIT/X11 (BSD like) BSD (2 clause)", "Apache (v2.0)", "*No
     copyright* CC by (v3.0)", "Unknown or generated", "*No copyright* CC
     by-sa (v4.0)", "MIT/X11 (BSD like)", "*No copyright* PSF", "BSD
     (unspecified)", "CC0", "*No copyright* CC0", "ISC", "Unicode strict",
     "*No copyright* BSD (unspecified)", "BSD (3 clause)", "BSD (2
     clause)", "*No copyright* MIT/X11 (BSD like)", "*No copyright* Apache
     (v2.0)". 60595 files have unknown license. Detailed output of
     licensecheck in /home/tstellar/1536780-swift-lang/licensecheck.txt
[ ]: License file installed when any subpackage combination is installed.
[ ]: Package requires other packages for directories it uses.
     Note: No known owner of /usr/lib/swift/linux, /usr/lib/swift
[ ]: Package must own all directories that it creates.
     Note: Directories without known owners: /usr/lib/swift/linux,
     /usr/lib/swift
[-]: Package does not own files or directories owned by other packages.

There was a long list of directories here, but they where all build-id
directories.

[ ]: %build honors applicable compiler flags or justifies otherwise.
[ ]: Package contains no bundled libraries without FPC exception.
[ ]: Changelog in prescribed format.
[ ]: Sources contain only permissible code or content.
[ ]: Package contains desktop file if it is a GUI application.
[ ]: Development files must be in a -devel package
[ ]: Package uses nothing in %doc for runtime.
[ ]: Package consistently uses macros (instead of hard-coded directory
     names).
[ ]: Package is named according to the Package Naming Guidelines.
[ ]: Package does not generate any conflict.
[ ]: Package obeys FHS, except libexecdir and /usr/target.
[ ]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[ ]: Requires correct, justified where necessary.
[ ]: Spec file is legible and written in American English.
[ ]: Package contains systemd file(s) if in need.
[ ]: Useful -debuginfo package or justification otherwise.
[ ]: Package is not known to require an ExcludeArch tag.
[ ]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: If (and only if) the source package includes the text of the
     license(s) in its own file, then that file, containing the text of the
     license(s) for the package is included in %license.
[x]: All build dependencies are listed in BuildRequires, except for any
     that are listed in the exceptions section of Packaging Guidelines.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Dist tag is present.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package use %makeinstall only when make install DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package does not use a name that already exists.
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as
     provided in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 0 bytes in 0 files.
[x]: Packages must not store files under /srv, /opt or /usr/local

===== SHOULD items =====

Generic:
[ ]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.
[ ]: Final provides and requires are sane (see attachments).
[ ]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in swift-
     lang-runtime
[ ]: Package functions as described.
[ ]: Latest version is packaged.
[ ]: Package does not include license text files separate from upstream.
[ ]: Patches link to upstream bugs/comments/lists or are otherwise
     justified.
[ ]: Scriptlets must be sane, if used.
[ ]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[ ]: Package should compile and build into binary rpms on all supported
     architectures.
[ ]: %check is present and all tests pass.
[ ]: Packages should try to preserve timestamps of original installed
     files.
[x]: Reviewer should test that the package builds in mock.
[x]: Buildroot is not present
[x]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

===== EXTRA items =====

Generic:
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Large data in /usr/share should live in a noarch subpackage if package
     is arched.
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: swift-lang-4.2-0.27.20180704gitf56a941.fc29.x86_64.rpm
          swift-lang-runtime-4.2-0.27.20180704gitf56a941.fc29.x86_64.rpm
          swift-lang-4.2-0.27.20180704gitf56a941.fc29.src.rpm
swift-lang.x86_64: E: devel-dependency glibc-devel
swift-lang.x86_64: E: explicit-lib-dependency libatomic
swift-lang.x86_64: E: explicit-lib-dependency libbsd
swift-lang.x86_64: W: unstripped-binary-or-object /usr/bin/swift
swift-lang.x86_64: W: unstripped-binary-or-object /usr/bin/swift-build
swift-lang.x86_64: W: unstripped-binary-or-object /usr/bin/swift-build-tool
swift-lang.x86_64: W: unstripped-binary-or-object /usr/bin/swift-demangle
swift-lang.x86_64: W: unstripped-binary-or-object /usr/bin/swift-package
swift-lang.x86_64: W: unstripped-binary-or-object /usr/bin/swift-run
swift-lang.x86_64: W: unstripped-binary-or-object /usr/bin/swift-test
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift-lldb/liblldb.so.6.0.0
swift-lang.x86_64: E: binary-or-shlib-defines-rpath /usr/lib/swift-lldb/liblldb.so.6.0.0 ['$ORIGIN/../lib', '/builddir/build/BUILD/swift-source/build/buildbot_linux/llvm-linux-x86_64/lib']
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift-lldb/liblldbIntelFeatures.so.6.0.0
swift-lang.x86_64: E: binary-or-shlib-defines-rpath /usr/lib/swift-lldb/liblldbIntelFeatures.so.6.0.0 ['$ORIGIN/../lib', '/builddir/build/BUILD/swift-source/build/buildbot_linux/llvm-linux-x86_64/lib']
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift-lldb/libsourcekitdInProc.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift-lldb/libswiftDemangle.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift/clang/lib/linux/libclang_rt.asan-x86_64.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift/clang/lib/linux/libclang_rt.dyndd-x86_64.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift/clang/lib/linux/libclang_rt.scudo-x86_64.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift/clang/lib/linux/libclang_rt.ubsan_minimal-x86_64.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift/clang/lib/linux/libclang_rt.ubsan_standalone-x86_64.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift/pm/3/libPackageDescription.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift/pm/4/libPackageDescription.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift/pm/4_2/libPackageDescription.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/libexec/swift-lldb/lldb
swift-lang.x86_64: E: binary-or-shlib-defines-rpath /usr/libexec/swift-lldb/lldb ['$ORIGIN/../lib', '/builddir/build/BUILD/swift-source/build/buildbot_linux/llvm-linux-x86_64/lib']
swift-lang.x86_64: W: unstripped-binary-or-object /usr/libexec/swift-lldb/lldb-argdumper
swift-lang.x86_64: E: binary-or-shlib-defines-rpath /usr/libexec/swift-lldb/lldb-argdumper ['$ORIGIN/../lib', '/builddir/build/BUILD/swift-source/build/buildbot_linux/llvm-linux-x86_64/lib']
swift-lang.x86_64: W: unstripped-binary-or-object /usr/libexec/swift-lldb/lldb-mi
swift-lang.x86_64: E: binary-or-shlib-defines-rpath /usr/libexec/swift-lldb/lldb-mi ['$ORIGIN/../lib', '/builddir/build/BUILD/swift-source/build/buildbot_linux/llvm-linux-x86_64/lib']
swift-lang.x86_64: W: unstripped-binary-or-object /usr/libexec/swift-lldb/lldb-server
swift-lang.x86_64: E: binary-or-shlib-defines-rpath /usr/libexec/swift-lldb/lldb-server ['$ORIGIN/../lib', '/builddir/build/BUILD/swift-source/build/buildbot_linux/llvm-linux-x86_64/lib']
swift-lang.x86_64: W: unstripped-binary-or-object /usr/libexec/swift-lldb/lldb-test
swift-lang.x86_64: E: binary-or-shlib-defines-rpath /usr/libexec/swift-lldb/lldb-test ['$ORIGIN/../lib', '/builddir/build/BUILD/swift-source/build/buildbot_linux/llvm-linux-x86_64/lib']
swift-lang.x86_64: W: unstripped-binary-or-object /usr/libexec/swift-lldb/repl_swift
swift-lang.x86_64: E: binary-or-shlib-defines-rpath /usr/libexec/swift-lldb/repl_swift ['/builddir/build/BUILD/swift-source/build/buildbot_linux/lldb-linux-x86_64/../swift-linux-x86_64/lib/swift/linux', '$ORIGIN/../lib', '/builddir/build/BUILD/swift-source/build/buildbot_linux/llvm-linux-x86_64/lib']
swift-lang.x86_64: W: non-conffile-in-etc /etc/ld.so.conf.d/swift-lang.conf
swift-lang.x86_64: W: devel-file-in-non-devel-package /usr/lib/swift-lldb/liblldb.so
swift-lang.x86_64: W: devel-file-in-non-devel-package /usr/lib/swift-lldb/liblldbIntelFeatures.so
swift-lang.x86_64: W: dangling-symlink /usr/lib/swift-lldb/swift /usr/lib/swift
swift-lang.x86_64: W: devel-file-in-non-devel-package /usr/lib/swift/Block/Block.h

<snip several more W: devel-file-in-non-devel-package >

swift-lang.x86_64: W: no-manual-page-for-binary swift-autolink-extract
swift-lang.x86_64: W: no-manual-page-for-binary swift-build
swift-lang.x86_64: W: no-manual-page-for-binary swift-build-tool
swift-lang.x86_64: W: no-manual-page-for-binary swift-demangle
swift-lang.x86_64: W: no-manual-page-for-binary swift-format
swift-lang.x86_64: W: no-manual-page-for-binary swift-package
swift-lang.x86_64: W: no-manual-page-for-binary swift-run
swift-lang.x86_64: W: no-manual-page-for-binary swift-test
swift-lang.x86_64: W: no-manual-page-for-binary swiftc
swift-lang-runtime.x86_64: W: unstripped-binary-or-object /usr/lib/swift/linux/libFoundation.so
swift-lang-runtime.x86_64: W: unstripped-binary-or-object /usr/lib/swift/linux/libXCTest.so
swift-lang-runtime.x86_64: W: unstripped-binary-or-object /usr/lib/swift/linux/libdispatch.so
swift-lang-runtime.x86_64: W: unstripped-binary-or-object /usr/lib/swift/linux/libswiftCore.so
swift-lang-runtime.x86_64: W: unstripped-binary-or-object /usr/lib/swift/linux/libswiftGlibc.so
swift-lang-runtime.x86_64: W: unstripped-binary-or-object /usr/lib/swift/linux/libswiftRemoteMirror.so
swift-lang-runtime.x86_64: W: unstripped-binary-or-object /usr/lib/swift/linux/libswiftSwiftOnoneSupport.so
swift-lang-runtime.x86_64: W: no-documentation
swift-lang-runtime.x86_64: W: non-conffile-in-etc /etc/ld.so.conf.d/swift-lang-runtime.conf
swift-lang.src:129: E: hardcoded-library-path in %{buildroot}/usr/lib
swift-lang.src:144: W: macro-in-comment %{_libdir}
swift-lang.src:150: E: hardcoded-library-path in %{buildroot}/usr/lib/swift-lldb
swift-lang.src:151: E: hardcoded-library-path in %{buildroot}/usr/lib/swift-lldb
swift-lang.src:152: E: hardcoded-library-path in %{buildroot}/usr/lib/swift-lldb/liblldb.so.6
swift-lang.src:153: E: hardcoded-library-path in %{buildroot}/usr/lib/swift-lldb/liblldb.so
swift-lang.src:154: E: hardcoded-library-path in %{buildroot}/usr/lib/swift-lldb
swift-lang.src:155: E: hardcoded-library-path in %{buildroot}/usr/lib/swift-lldb
swift-lang.src:156: E: hardcoded-library-path in %{buildroot}/usr/lib/swift-lldb
swift-lang.src:157: E: hardcoded-library-path in %{buildroot}/usr/lib/swift-lldb/liblldbIntelFeatures.so.6
swift-lang.src:158: E: hardcoded-library-path in %{buildroot}/usr/lib/swift-lldb/liblldbIntelFeatures.so
swift-lang.src:161: E: hardcoded-library-path in %{buildroot}/usr/lib/swift
swift-lang.src:162: E: hardcoded-library-path in %{buildroot}/usr/lib/swift
swift-lang.src:163: E: hardcoded-library-path in %{buildroot}/usr/lib/swift-lldb/swift
swift-lang.src:165: E: hardcoded-library-path in %{buildroot}/usr/lib/swift_static
swift-lang.src:166: E: hardcoded-library-path in %{buildroot}/usr/lib/swift_static
swift-lang.src:180: E: hardcoded-library-path in /usr/lib/swift-lldb/
swift-lang.src:181: E: hardcoded-library-path in /usr/lib/swift/Block/
swift-lang.src:182: E: hardcoded-library-path in /usr/lib/swift/CoreFoundation/
swift-lang.src:183: E: hardcoded-library-path in /usr/lib/swift/clang/
swift-lang.src:184: E: hardcoded-library-path in /usr/lib/swift/dispatch/
swift-lang.src:185: E: hardcoded-library-path in /usr/lib/swift/migrator/
swift-lang.src:186: E: hardcoded-library-path in /usr/lib/swift/os/
swift-lang.src:187: E: hardcoded-library-path in /usr/lib/swift/pm/
swift-lang.src:188: E: hardcoded-library-path in /usr/lib/swift/shims/
swift-lang.src:189: E: hardcoded-library-path in /usr/lib/swift/linux/x86_64/
swift-lang.src:190: E: hardcoded-library-path in /usr/lib/swift_static/
swift-lang.src:196: E: hardcoded-library-path in /usr/lib/swift/linux/*.so
swift-lang.src:8: W: mixed-use-of-spaces-and-tabs (spaces: line 8, tab: line 7)
swift-lang.src: E: specfile-error warning: bogus date in %changelog: Mon Jul 03 2018 Ron Olson <tachoknight> 4.2-0.26.20180703git107e307
3 packages and 0 specfiles checked; 39 errors, 348 warnings.




Rpmlint (installed packages)
----------------------------
swift-lang.x86_64: E: devel-dependency glibc-devel
swift-lang.x86_64: E: explicit-lib-dependency libatomic
swift-lang.x86_64: E: explicit-lib-dependency libbsd
swift-lang.x86_64: W: invalid-url URL: https://swift.org <urlopen error [Errno -2] Name or service not known>
swift-lang.x86_64: W: unstripped-binary-or-object /usr/bin/swift
swift-lang.x86_64: W: unstripped-binary-or-object /usr/bin/swift-build
swift-lang.x86_64: W: unstripped-binary-or-object /usr/bin/swift-build-tool
swift-lang.x86_64: W: unstripped-binary-or-object /usr/bin/swift-demangle
swift-lang.x86_64: W: unstripped-binary-or-object /usr/bin/swift-package
swift-lang.x86_64: W: unstripped-binary-or-object /usr/bin/swift-run
swift-lang.x86_64: W: unstripped-binary-or-object /usr/bin/swift-test
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift-lldb/liblldb.so.6.0.0
swift-lang.x86_64: E: binary-or-shlib-defines-rpath /usr/lib/swift-lldb/liblldb.so.6.0.0 ['$ORIGIN/../lib', '/builddir/build/BUILD/swift-source/build/buildbot_linux/llvm-linux-x86_64/lib']
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift-lldb/liblldbIntelFeatures.so.6.0.0
swift-lang.x86_64: E: binary-or-shlib-defines-rpath /usr/lib/swift-lldb/liblldbIntelFeatures.so.6.0.0 ['$ORIGIN/../lib', '/builddir/build/BUILD/swift-source/build/buildbot_linux/llvm-linux-x86_64/lib']
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift-lldb/libsourcekitdInProc.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift-lldb/libswiftDemangle.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift/clang/lib/linux/libclang_rt.asan-x86_64.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift/clang/lib/linux/libclang_rt.dyndd-x86_64.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift/clang/lib/linux/libclang_rt.scudo-x86_64.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift/clang/lib/linux/libclang_rt.ubsan_minimal-x86_64.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift/clang/lib/linux/libclang_rt.ubsan_standalone-x86_64.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift/pm/3/libPackageDescription.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift/pm/4/libPackageDescription.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/lib/swift/pm/4_2/libPackageDescription.so
swift-lang.x86_64: W: unstripped-binary-or-object /usr/libexec/swift-lldb/lldb
swift-lang.x86_64: E: binary-or-shlib-defines-rpath /usr/libexec/swift-lldb/lldb ['$ORIGIN/../lib', '/builddir/build/BUILD/swift-source/build/buildbot_linux/llvm-linux-x86_64/lib']
swift-lang.x86_64: W: unstripped-binary-or-object /usr/libexec/swift-lldb/lldb-argdumper
swift-lang.x86_64: E: binary-or-shlib-defines-rpath /usr/libexec/swift-lldb/lldb-argdumper ['$ORIGIN/../lib', '/builddir/build/BUILD/swift-source/build/buildbot_linux/llvm-linux-x86_64/lib']
swift-lang.x86_64: W: unstripped-binary-or-object /usr/libexec/swift-lldb/lldb-mi
swift-lang.x86_64: E: binary-or-shlib-defines-rpath /usr/libexec/swift-lldb/lldb-mi ['$ORIGIN/../lib', '/builddir/build/BUILD/swift-source/build/buildbot_linux/llvm-linux-x86_64/lib']
swift-lang.x86_64: W: unstripped-binary-or-object /usr/libexec/swift-lldb/lldb-server
swift-lang.x86_64: E: binary-or-shlib-defines-rpath /usr/libexec/swift-lldb/lldb-server ['$ORIGIN/../lib', '/builddir/build/BUILD/swift-source/build/buildbot_linux/llvm-linux-x86_64/lib']
swift-lang.x86_64: W: unstripped-binary-or-object /usr/libexec/swift-lldb/lldb-test
swift-lang.x86_64: E: binary-or-shlib-defines-rpath /usr/libexec/swift-lldb/lldb-test ['$ORIGIN/../lib', '/builddir/build/BUILD/swift-source/build/buildbot_linux/llvm-linux-x86_64/lib']
swift-lang.x86_64: W: unstripped-binary-or-object /usr/libexec/swift-lldb/repl_swift
swift-lang.x86_64: E: binary-or-shlib-defines-rpath /usr/libexec/swift-lldb/repl_swift ['/builddir/build/BUILD/swift-source/build/buildbot_linux/lldb-linux-x86_64/../swift-linux-x86_64/lib/swift/linux', '$ORIGIN/../lib', '/builddir/build/BUILD/swift-source/build/buildbot_linux/llvm-linux-x86_64/lib']
swift-lang.x86_64: W: non-conffile-in-etc /etc/ld.so.conf.d/swift-lang.conf
swift-lang.x86_64: W: devel-file-in-non-devel-package /usr/lib/swift-lldb/liblldb.so
swift-lang.x86_64: W: devel-file-in-non-devel-package /usr/lib/swift-lldb/liblldbIntelFeatures.so
swift-lang.x86_64: W: dangling-symlink /usr/lib/swift-lldb/swift /usr/lib/swift
swift-lang.x86_64: W: devel-file-in-non-devel-package /usr/lib/swift/Block/Block.h

<snip several more W: devel-file-in-non-devel-package >

swift-lang.x86_64: W: no-manual-page-for-binary swift-autolink-extract
swift-lang.x86_64: W: no-manual-page-for-binary swift-build
swift-lang.x86_64: W: no-manual-page-for-binary swift-build-tool
swift-lang.x86_64: W: no-manual-page-for-binary swift-demangle
swift-lang.x86_64: W: no-manual-page-for-binary swift-format
swift-lang.x86_64: W: no-manual-page-for-binary swift-package
swift-lang.x86_64: W: no-manual-page-for-binary swift-run
swift-lang.x86_64: W: no-manual-page-for-binary swift-test
swift-lang.x86_64: W: no-manual-page-for-binary swiftc
swift-lang-runtime.x86_64: W: invalid-url URL: https://swift.org <urlopen error [Errno -2] Name or service not known>
swift-lang-runtime.x86_64: W: unstripped-binary-or-object /usr/lib/swift/linux/libFoundation.so
swift-lang-runtime.x86_64: W: unstripped-binary-or-object /usr/lib/swift/linux/libXCTest.so
swift-lang-runtime.x86_64: W: unstripped-binary-or-object /usr/lib/swift/linux/libdispatch.so
swift-lang-runtime.x86_64: W: unstripped-binary-or-object /usr/lib/swift/linux/libswiftCore.so
swift-lang-runtime.x86_64: W: unstripped-binary-or-object /usr/lib/swift/linux/libswiftGlibc.so
swift-lang-runtime.x86_64: W: unstripped-binary-or-object /usr/lib/swift/linux/libswiftRemoteMirror.so
swift-lang-runtime.x86_64: W: unstripped-binary-or-object /usr/lib/swift/linux/libswiftSwiftOnoneSupport.so
swift-lang-runtime.x86_64: W: no-documentation
swift-lang-runtime.x86_64: W: non-conffile-in-etc /etc/ld.so.conf.d/swift-lang-runtime.conf
2 packages and 0 specfiles checked; 11 errors, 348 warnings.



Requires
--------
swift-lang (rpmlib, GLIBC filtered):
    /sbin/ldconfig
    clang
    glibc-devel
    ld-linux-x86-64.so.2()(64bit)
    libFoundation.so()(64bit)
    libatomic
    libatomic.so.1()(64bit)
    libbsd
    libc.so.6()(64bit)
    libdispatch.so()(64bit)
    libdl.so.2()(64bit)
    libedit.so.0()(64bit)
    libform.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.3)(64bit)
    liblldb.so.6()(64bit)
    liblldb.so.6(LLVM_6.0)(64bit)
    liblldbIntelFeatures.so.6()(64bit)
    libm.so.6()(64bit)
    libncurses.so.6()(64bit)
    libpanel.so.6()(64bit)
    libpthread.so.0()(64bit)
    libpython2.7.so.1.0()(64bit)
    librt.so.1()(64bit)
    libsqlite3.so.0()(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.5)(64bit)
    libstdc++.so.6(CXXABI_1.3.7)(64bit)
    libswiftCore.so()(64bit)
    libswiftGlibc.so()(64bit)
    libtinfo.so.6()(64bit)
    libutil.so.1()(64bit)
    libuuid.so.1()(64bit)
    libuuid.so.1(UUID_1.0)(64bit)
    libxml2.so.2()(64bit)
    libxml2.so.2(LIBXML2_2.4.30)(64bit)
    libxml2.so.2(LIBXML2_2.6.0)(64bit)
    libz.so.1()(64bit)
    libz.so.1(ZLIB_1.2.0)(64bit)
    rtld(GNU_HASH)
    swift-lang-runtime

swift-lang-runtime (rpmlib, GLIBC filtered):
    ld-linux-x86-64.so.2()(64bit)
    libFoundation.so()(64bit)
    libatomic.so.1()(64bit)
    libatomic.so.1(LIBATOMIC_1.0)(64bit)
    libbsd.so.0()(64bit)
    libbsd.so.0(LIBBSD_0.0)(64bit)
    libc.so.6()(64bit)
    libcurl.so.4()(64bit)
    libdispatch.so()(64bit)
    libdl.so.2()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.3.1)(64bit)
    libicudata.so.61()(64bit)
    libicui18n.so.61()(64bit)
    libicuuc.so.61()(64bit)
    libm.so.6()(64bit)
    libpthread.so.0()(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.5)(64bit)
    libswiftCore.so()(64bit)
    libswiftGlibc.so()(64bit)
    libutil.so.1()(64bit)
    libxml2.so.2()(64bit)
    libxml2.so.2(LIBXML2_2.4.30)(64bit)
    libxml2.so.2(LIBXML2_2.5.7)(64bit)
    libxml2.so.2(LIBXML2_2.5.8)(64bit)
    libxml2.so.2(LIBXML2_2.6.0)(64bit)
    libxml2.so.2(LIBXML2_2.6.18)(64bit)
    libxml2.so.2(LIBXML2_2.6.23)(64bit)
    libxml2.so.2(LIBXML2_2.6.8)(64bit)
    libxml2.so.2(LIBXML2_2.7.3)(64bit)
    libxml2.so.2(LIBXML2_2.9.1)(64bit)
    rtld(GNU_HASH)



Provides
--------
swift-lang:
    libPackageDescription.so()(64bit)
    swift-lang
    swift-lang(x86-64)

swift-lang-runtime:
    libFoundation.so()(64bit)
    libXCTest.so()(64bit)
    libdispatch.so()(64bit)
    libswiftCore.so()(64bit)
    libswiftGlibc.so()(64bit)
    libswiftRemoteMirror.so()(64bit)
    libswiftSwiftOnoneSupport.so()(64bit)
    swift-lang-runtime
    swift-lang-runtime(x86-64)



Unversioned so-files
--------------------
swift-lang: /usr/lib/swift-lldb/liblldb.so
swift-lang: /usr/lib/swift-lldb/liblldbIntelFeatures.so
swift-lang: /usr/lib/swift-lldb/libsourcekitdInProc.so
swift-lang: /usr/lib/swift-lldb/libswiftDemangle.so
swift-lang: /usr/lib/swift/clang/lib/linux/libclang_rt.asan-x86_64.so
swift-lang: /usr/lib/swift/clang/lib/linux/libclang_rt.dyndd-x86_64.so
swift-lang: /usr/lib/swift/clang/lib/linux/libclang_rt.scudo-x86_64.so
swift-lang: /usr/lib/swift/clang/lib/linux/libclang_rt.ubsan_minimal-x86_64.so
swift-lang: /usr/lib/swift/clang/lib/linux/libclang_rt.ubsan_standalone-x86_64.so
swift-lang: /usr/lib/swift/pm/3/libPackageDescription.so
swift-lang: /usr/lib/swift/pm/4/libPackageDescription.so
swift-lang: /usr/lib/swift/pm/4_2/libPackageDescription.so
swift-lang-runtime: /usr/lib/swift/linux/libFoundation.so
swift-lang-runtime: /usr/lib/swift/linux/libXCTest.so
swift-lang-runtime: /usr/lib/swift/linux/libdispatch.so
swift-lang-runtime: /usr/lib/swift/linux/libswiftCore.so
swift-lang-runtime: /usr/lib/swift/linux/libswiftGlibc.so
swift-lang-runtime: /usr/lib/swift/linux/libswiftRemoteMirror.so
swift-lang-runtime: /usr/lib/swift/linux/libswiftSwiftOnoneSupport.so

Comment 69 Ron Olson 2018-07-05 22:46:01 UTC
Okay, I fixed the issues. Thanks for reviewing this Tom, I feel like I've learned a lot and I think the package is far better than when we started. 

Spec URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang.spec

SRPM 4.2-0.28.20180704gitf56a941.fc28.src.rpm for Fedora 28: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.28.20180704gitf56a941.fc28.src.rpm

Comment 70 Ron Olson 2018-07-06 13:35:48 UTC
Made a new build from the July 5th sources. If it complicates things at this point I'll hold off on any new builds. 

Spec URL: https://tachoknight.fedorapeople.org/swift-lang/swift-lang.spec

SRPM 4.2-0.29.20180705git1e2dc99.fc28.src.rpm for Fedora 28: https://tachoknight.fedorapeople.org/swift-lang/swift-lang-4.2-0.29.20180705git1e2dc99.fc28.src.rpm

Comment 71 Tom Stellard 2018-07-06 17:18:52 UTC
This package looks fine, thanks for your patience.  I've set the fedora-review flag so you should be able to proceed with the new package process.

Comment 72 Ron Olson 2018-07-10 20:43:37 UTC
Hey Tom, Mohan in #fedora-releng asked if you would explicitly acknowledge you're okay with this review:

<mboddu> [10:33:35] <+mboddu> tachoknight: I hit "The review is not approved by the assignee of the Bugzilla bug" this is because the ticket is assigned to Richard Shaw but approved by Tom Stellard
<mboddu> [10:35:20] <+mboddu> Can you open a ticket on https://pagure.io/releng and ask Tom to ack it or even on BZ that is fine, if you can
<tachoknight__> mboddu: ack it? you mean take it?
<mboddu> tachoknight__: Nope, we want some sort of confirmation from him saying that he is okay with the review
<tachoknight__> oh, okay, real ack
<mboddu> tachoknight__: Yup, ack'ing the review basically :)

Thanks!

Comment 73 Tom Stellard 2018-07-10 20:48:27 UTC
Yes, this is fine.  Richard ask me if I wanted to take the review in comment #45 and I never assigned it to myself.  I will do this now, so that it's clear I approve this.

Comment 74 Mohan Boddu 2018-07-10 20:52:29 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/swift-lang

Comment 75 Fedora Update System 2018-07-11 21:46:24 UTC
swift-lang-4.2-0.30.20180709gitd9561d9.fc28 has been submitted as an update to Fedora 28. https://bodhi.fedoraproject.org/updates/FEDORA-2018-0ef0cca109

Comment 76 Fedora Update System 2018-07-12 15:07:09 UTC
swift-lang-4.2-0.30.20180709gitd9561d9.fc28 has been pushed to the Fedora 28 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2018-0ef0cca109

Comment 77 Fedora Update System 2018-07-13 03:59:47 UTC
swift-lang-4.2-0.32.20180703git107e307.fc28 has been submitted as an update to Fedora 28. https://bodhi.fedoraproject.org/updates/FEDORA-2018-a6771080d7

Comment 78 Fedora Update System 2018-07-13 19:29:34 UTC
swift-lang-4.2-0.32.20180703git107e307.fc28 has been pushed to the Fedora 28 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2018-a6771080d7

Comment 79 Fedora Update System 2018-07-22 03:02:40 UTC
swift-lang-4.2-0.32.20180703git107e307.fc28 has been pushed to the Fedora 28 stable repository. If problems still persist, please make note of it in this bug report.

Comment 80 Dennis Chen 2018-10-30 20:27:14 UTC
*** Bug 1295115 has been marked as a duplicate of this bug. ***


Note You need to log in before you can comment on or make changes to this bug.