Bug 1161014 (llvm34)

Summary: Review Request: llvm34 - The Low Level Virtual Machine
Product: [Fedora] Fedora Reporter: Jens Petersen <petersen>
Component: Package ReviewAssignee: Mukundan Ragavan <nonamedotc>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: ajax, jv+fedora, nonamedotc, package-review
Target Milestone: ---Flags: nonamedotc: fedora-review+
petersen: fedora-cvs+
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: llvm34-3.4.2-5.fc21 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-11-17 04:13:31 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Jens Petersen 2014-11-06 07:25:22 UTC
Spec URL: http://petersen.fedorapeople.org/reviews/llvm34.spec
SRPM URL: http://petersen.fedorapeople.org/reviews/llvm34-3.4.2-1.fc20.src.rpm

Description:
LLVM is a compiler infrastructure designed for compile-time,
link-time, runtime, and idle-time optimization of programs from
arbitrary programming languages.  The compiler infrastructure includes
mirror sets of programming tools as well as libraries with equivalent
functionality.

Comment 1 Jens Petersen 2014-11-06 07:55:38 UTC
Currently ghc on ARMv7 using llvm as its compiler backend (note not clang).
Current ghc releases only support llvm 3.4 and earlier.
F22 Rawhide just moved to llvm-3.5 which breaks ghc's RTS on ARM.
So this package is needed to keep ghc working on ARM.

Koji scratch build: http://koji.fedoraproject.org/koji/taskinfo?taskID=8052781

llvm34-libs is parallel installable with llvm-libs.
The rest of the packages file conflict with the llvm packages
but I think this is okay (at least after adding Conflicts).
There are also a few bcond related build fixes that could
be merged into llvm.spec.

The package also build locally for me on F20,
so if llvm-3.5 is backported to F21 (though it is late now
for major version updates), I think this should build on F21 too.

Comment 2 Jens Petersen 2014-11-07 09:41:54 UTC
Spec: http://petersen.fedorapeople.org/reviews/llvm34/llvm34.spec
SRPM: http://petersen.fedorapeople.org/reviews/llvm34/llvm34-3.4.2-2.fc20.src.rpm

Updated to no longer conflict with the llvm packages.

- added 3.4 suffices to bindir/*
- moved include dirs to /usr/include/llvm34

Tested with "ghc -fllvm -pgmlc=llc-3.4 -pgmlo=opt-3.4".

Comment 3 Jens Petersen 2014-11-07 10:19:16 UTC
Rawhide scratch build: http://koji.fedoraproject.org/koji/taskinfo?taskID=8061523

Comment 4 Mukundan Ragavan 2014-11-11 01:58:45 UTC
As I mentioned in the mailing list, I will review this first thing tomorrow when I get back from work.

 - unless someone beats me to it! :)

Comment 5 Mukundan Ragavan 2014-11-12 02:51:22 UTC
Here is the detailed review - at least first pass. I have some questions (potentially silly) - take a look.


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

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


Issues:
=======
- Header files in -devel subpackage, if present.
  Note: llvm34-doc : /usr/share/doc/llvm34-doc/examples/BrainF/BrainF.h
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#DevelPackages


---> This is fine. The file in question is this - 

/usr/share/doc/llvm34-doc/examples/BrainF/BrainF.cpp
/usr/share/doc/llvm34-doc/examples/BrainF/BrainF.h

Example file. Bogus warning.

- Package contains BR: python2-devel or python3-devel

---> python-devel -> python2-devel

191 BuildRequires:  python-devel



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

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[?]: 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.

---> Please check this.

[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses found:
     "BSD (3 clause)", "ISC", "Unknown or generated". 2381 files have unknown
     license. Detailed output of licensecheck in
     /home/mukundan/ownCloud/pkg_reviews/1161014-llvm34/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[!]: Package must own all directories that it creates.
     Note: Directories without known owners: /usr/lib64/llvm34

---> The specfile has this - 

546 %dir %{_datadir}/llvm

Shouldn't this be llvm34?


[!]: Package does not own files or directories owned by other packages.
     Note: Dirs in package are owned also by: /usr/share/llvm/cmake(llvm-
     devel), /usr/share/llvm(llvm)

---> Same issue as in the comment above. llvm34 directories?

[?]: %build honors applicable compiler flags or justifies otherwise.

---> Spec file has this line - 

354   --with-optimize-option=-O3

From the build log,

+ ./configure --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --libdir=/usr/lib64/llvm34 --disable-polly --disable-libcpp --enable-cxx11 --enable-clang-arcmt --enable-clang-static-analyzer --enable-clang-rewriter --enable-optimized --disable-profiling --disable-assertions --disable-werror --disable-expensive-checks --enable-debug-runtime --enable-keep-symbols --enable-jit --enable-docs --disable-doxygen --enable-threads --enable-pthreads --enable-zlib --enable-pic --enable-shared --disable-embed-stdcxx --enable-timestamps --enable-backtraces --enable-targets=x86,powerpc,arm,aarch64,cpp,nvptx,systemz --enable-experimental-targets=R600 --enable-bindings=none --enable-libffi --enable-ltdl-install --with-binutils-include=/usr/include --with-c-include-dirs=/usr/include:/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include 

*** --with-optimize-option=-O3 ***

Is this necessary? https://fedoraproject.org/wiki/Packaging:Guidelines#Compiler_flags

[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[x]: Each %files section contains %defattr if rpm < 4.4
     Note: %defattr present but not needed

---> Spec files could be cleaned up a bit. Not a big issue though.

[-]: Package contains desktop file if it is a GUI application.
[x]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.
[?]: Package consistently uses macros (instead of hard-coded directory names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[x]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 686080 bytes in 4 files.

[?]: 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 %doc.
[x]: Package requires other packages for directories it uses.
[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]: %config files are marked noreplace or the reason is justified.
[x]: Macros in Summary, %description expandable at SRPM build time.
[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]: No %config files under /usr.
[x]: Package do not use a name that already exist
[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]: Static libraries in -static or -devel subpackage, providing -devel if
     present.
     Note: Package has .a files: llvm34-static.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

Python:
[x]: Python eggs must not download any dependencies during the build process.
[x]: A package which is used by another package via an egg interface should
     provide egg info.
[x]: Package meets the Packaging Guidelines::Python
[x]: Binary eggs must be removed in %prep

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

Generic:
[x]: If the source package does not include license text(s) as a separate file
     from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[!]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in llvm34-doc
     , llvm34-libs , llvm34-static

---> Shouldn't -libs subpackage have versions dep?

118 %package libs
 119 Summary:        LLVM shared libraries
 120 Group:          System Environment/Libraries
 121 
 122 %description libs
 123 Shared libraries for the LLVM compiler infrastructure.


-static subpackage is fine. Has devel%{?_isa} as requires.


[x]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: Patches link to upstream bugs/comments/lists or are otherwise justified.
[x]: Scriptlets must be sane, if used.
[x]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[x]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed files.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[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]: Dist tag is present (not strictly required in GL).
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Uses parallel make %{?_smp_mflags} macro.
[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: llvm34-3.4.2-2.fc22.x86_64.rpm
          llvm34-devel-3.4.2-2.fc22.x86_64.rpm
          llvm34-doc-3.4.2-2.fc22.noarch.rpm
          llvm34-libs-3.4.2-2.fc22.x86_64.rpm
          llvm34-static-3.4.2-2.fc22.x86_64.rpm
          llvm34-3.4.2-2.fc22.src.rpm
llvm34.x86_64: W: spelling-error %description -l en_US runtime -> run time, run-time, rudiment
llvm34.x86_64: W: no-manual-page-for-binary llc-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-ar-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-stress-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-nm-3.4
llvm34.x86_64: W: no-manual-page-for-binary lli-child-target-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-bcanalyzer-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-tblgen-3.4
llvm34.x86_64: W: no-manual-page-for-binary opt-3.4
llvm34.x86_64: W: no-manual-page-for-binary bugpoint-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-symbolizer-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-cov-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-rtdyld-3.4
llvm34.x86_64: W: no-manual-page-for-binary lli-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-diff-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-objdump-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-mcmarkup-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-mc-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-as-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-readobj-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-dwarfdump-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-link-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-extract-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-size-3.4
llvm34.x86_64: W: no-manual-page-for-binary macho-dump-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-dis-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-ranlib-3.4
llvm34-devel.x86_64: W: no-manual-page-for-binary llvm-config-64-3.4
llvm34-libs.x86_64: W: no-documentation
llvm34-static.x86_64: W: no-documentation
llvm34.src: W: spelling-error %description -l en_US runtime -> run time, run-time, rudiment



llvm34.src:291: W: configure-without-libdir-spec


llvm34.src:291: E: hardcoded-library-path in /usr/lib
llvm34.src:353: E: hardcoded-library-path in %{_prefix}/lib/gcc/%{_target_cpu}*/*/include)
llvm34.src:593: E: hardcoded-library-path in %{_prefix}/lib/clang

---> /lib --> %{_libdir}?


6 packages and 0 specfiles checked; 3 errors, 32 warnings.




Rpmlint (installed packages)
----------------------------
# rpmlint llvm34 llvm34-static llvm34-devel llvm34-libs llvm34-doc
llvm34.x86_64: W: spelling-error %description -l en_US runtime -> run time, run-time, rudiment
llvm34.x86_64: W: no-manual-page-for-binary llc-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-ar-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-stress-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-nm-3.4
llvm34.x86_64: W: no-manual-page-for-binary lli-child-target-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-bcanalyzer-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-tblgen-3.4
llvm34.x86_64: W: no-manual-page-for-binary opt-3.4
llvm34.x86_64: W: no-manual-page-for-binary bugpoint-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-symbolizer-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-cov-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-rtdyld-3.4
llvm34.x86_64: W: no-manual-page-for-binary lli-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-diff-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-objdump-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-mcmarkup-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-mc-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-as-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-readobj-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-dwarfdump-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-link-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-extract-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-size-3.4
llvm34.x86_64: W: no-manual-page-for-binary macho-dump-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-dis-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-ranlib-3.4
llvm34-static.x86_64: W: no-documentation
llvm34-devel.x86_64: W: no-manual-page-for-binary llvm-config-64-3.4
llvm34-libs.x86_64: W: no-documentation
5 packages and 0 specfiles checked; 0 errors, 30 warnings.
# echo 'rpmlint-done:'



Requires
--------
llvm34 (rpmlib, GLIBC filtered):
    libLLVM-3.4.so()(64bit)
    libc.so.6()(64bit)
    libdl.so.2()(64bit)
    libffi.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.4)(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.8)(64bit)
    libtinfo.so.5()(64bit)
    libz.so.1()(64bit)
    llvm34-libs(x86-64)
    rtld(GNU_HASH)

llvm34-static (rpmlib, GLIBC filtered):
    llvm34-devel(x86-64)

llvm34-devel (rpmlib, GLIBC filtered):
    /bin/sh
    /usr/sbin/alternatives
    libc.so.6()(64bit)
    libdl.so.2()(64bit)
    libffi-devel
    libffi.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.4)(64bit)
    libm.so.6()(64bit)
    libpthread.so.0()(64bit)
    libstdc++-devel
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.8)(64bit)
    libtinfo.so.5()(64bit)
    libz.so.1()(64bit)
    llvm34(x86-64)
    ncurses-devel
    rtld(GNU_HASH)

llvm34-libs (rpmlib, GLIBC filtered):
    /sbin/ldconfig
    config(llvm34-libs)
    libLLVM-3.4.so()(64bit)
    libLTO.so()(64bit)
    libc.so.6()(64bit)
    libdl.so.2()(64bit)
    libffi.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.4)(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.8)(64bit)
    libtinfo.so.5()(64bit)
    libz.so.1()(64bit)
    libz.so.1(ZLIB_1.2.0)(64bit)
    rtld(GNU_HASH)

llvm34-doc (rpmlib, GLIBC filtered):
    llvm34



Provides
--------
llvm34:
    llvm34
    llvm34(x86-64)

llvm34-static:
    llvm34-static
    llvm34-static(x86-64)

llvm34-devel:
    llvm34-devel
    llvm34-devel(x86-64)

llvm34-libs:
    config(llvm34-libs)
    libLLVM-3.4.so()(64bit)
    libLTO.so()(64bit)
    llvm34-libs
    llvm34-libs(x86-64)

llvm34-doc:
    llvm34-doc



Unversioned so-files
--------------------
llvm34-libs: /usr/lib64/llvm34/BugpointPasses.so
llvm34-libs: /usr/lib64/llvm34/LLVMgold.so
llvm34-libs: /usr/lib64/llvm34/libLLVM-3.4.2.so
llvm34-libs: /usr/lib64/llvm34/libLLVM-3.4.so
llvm34-libs: /usr/lib64/llvm34/libLTO.so

Source checksums
----------------
http://llvm.org/releases/3.4.2/llvm-3.4.2.src.tar.gz :
  CHECKSUM(SHA256) this package     : 17038d47069ad0700c063caed76f0c7259628b0e79651ce2b540d506f2f1efd7
  CHECKSUM(SHA256) upstream package : 17038d47069ad0700c063caed76f0c7259628b0e79651ce2b540d506f2f1efd7


Generated by fedora-review 0.5.2 (63c24cb) last change: 2014-07-14
Command line :/usr/bin/fedora-review -m fedora-rawhide-x86_64 -b 1161014
Buildroot used: fedora-rawhide-x86_64
Active plugins: Python, Generic, Shell-api, C/C++
Disabled plugins: Java, SugarActivity, fonts, Haskell, Ocaml, Perl, R, PHP, Ruby
Disabled flags: EXARCH, EPEL5, BATCH, DISTTAG

Comment 6 Jens Petersen 2014-11-12 09:30:58 UTC
Thank you very much for looking at the package.

(In reply to Mukundan Ragavan from comment #5)
> - Package contains BR: python2-devel or python3-devel
> 
> ---> python-devel -> python2-devel
> 
> 191 BuildRequires:  python-devel

Ok, good catch but actually lldb is not built in the llvm34 package currently.
I think I will just remove clang, and the rest of the conditional parts
completely for clarity and simplicity.

(Diffing with f21 llvm.spec might give you a better idea of the changes I have made.)

> [?]: 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.

I think this is okay.  The same libraries are in the current llvm package.

> [!]: Package must own all directories that it creates.
>      Note: Directories without known owners: /usr/lib64/llvm34

I am confused: here /usr/lib64/llvm34 is owned by llvm34-libs.

> ---> The specfile has this - 
> 
> 546 %dir %{_datadir}/llvm
> 
> Shouldn't this be llvm34?
:
> [!]: Package does not own files or directories owned by other packages.
>      Note: Dirs in package are owned also by: /usr/share/llvm/cmake(llvm-
>      devel), /usr/share/llvm(llvm)

Yes, fixing.

> [?]: %build honors applicable compiler flags or justifies otherwise.
> 
> ---> Spec file has this line - 
> 
> 354   --with-optimize-option=-O3
> Is this necessary?

This came from llvm.spec - dunno if it is related to mesa or something.

Apparently it was added in this commit
http://pkgs.fedoraproject.org/cgit/llvm.git/commit/?id=be655c46e5d3707531fb8bef5430a9c064653197
without comment.

We could drop it perhaps dunno or add a comment that it comes from llvm.spec.

> [x]: Each %files section contains %defattr if rpm < 4.4
>      Note: %defattr present but not needed
> 
> ---> Spec files could be cleaned up a bit. Not a big issue though.

Again inherited from llvm.spec.

I agree probably better to clean up the file more for readibility: dropping.

> [!]: Fully versioned dependency in subpackages if applicable.
>      Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in llvm34-doc
>      , llvm34-libs , llvm34-static
> 
> ---> Shouldn't -libs subpackage have versions dep?

Probably not.  llvm34 has a versioned requires on llvm34-libs.

> llvm34.src:291: W: configure-without-libdir-spec
> llvm34.src:291: E: hardcoded-library-path in /usr/lib

I think these are falsely triggered by the sed on "./configure".
I will try removing the "./" for the former.

> llvm34.src:353: E: hardcoded-library-path in
> %{_prefix}/lib/gcc/%{_target_cpu}*/*/include)

Well that is for gcc, again from llvm.spec.
Dunno if there is a nicer way to get that gcc path.

> llvm34.src:593: E: hardcoded-library-path in %{_prefix}/lib/clang
> 
> ---> /lib --> %{_libdir}?

clang is not packaged.  Dropping.

Comment 7 Jens Petersen 2014-11-12 09:39:05 UTC
Updated package:

Spec: http://petersen.fedorapeople.org/reviews/llvm34/llvm34.spec
SRPM: http://petersen.fedorapeople.org/reviews/llvm34/llvm34-3.4.2-3.fc20.src.rpm

- rename datadir to llvm34 (#1161014)
- remove all conditioned out clang, lldb, crt, ocaml
- drop defattr's

Scratch building: http://koji.fedoraproject.org/koji/taskinfo?taskID=8108633

Comment 8 Jens Petersen 2014-11-12 09:47:46 UTC
> Scratch building: http://koji.fedoraproject.org/koji/taskinfo?taskID=8108633

Rawhide buildroot seems broken right now...

Comment 10 Mukundan Ragavan 2014-11-13 01:54:36 UTC
(In reply to Jens Petersen from comment #9)
> http://koji.fedoraproject.org/koji/taskinfo?taskID=8121137

I just built it in mock! :) Thanks!

Comment 11 Mukundan Ragavan 2014-11-13 02:30:12 UTC
Just two or three points here - 

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

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


Issues:
=======
- Header files in -devel subpackage, if present.
  Note: llvm34-doc : /usr/share/doc/llvm34-doc/examples/BrainF/BrainF.h
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#DevelPackages

---> This is fine.

- Package contains BR: python2-devel or python3-devel

---> I think this is fine. 

There is Buildrequires: python, Is that what is triggering this?


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

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: 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.

---> Present in -libs subpackage.

[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses found:
     "BSD (3 clause)", "ISC", "Unknown or generated". 2381 files have unknown
     license. Detailed output of licensecheck in
     /home/mukundan/ownCloud/pkg_reviews/llvm34/1161014-llvm34/licensecheck.txt

---> This is fine.

[x]: License file installed when any subpackage combination is installed.

---> About this - 

Can you use the %license macro for this since this is a new package anyway? This is not updated in packaging guidelines yet.

https://fedorahosted.org/fpc/ticket/411


[x]: Package must own all directories that it creates.
     Note: Directories without known owners: /usr/lib64/llvm34

---> This is fine, I think. llvm34-libs owns this directory.


[?]: %build honors applicable compiler flags or justifies otherwise.

---> Please remove -O3 from the flags or add a note. I would prefer to remove this. However, since llvm spec does not say why this was added (I am sure there was a good reason), I am just confused. Thoughts?


[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[x]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[x]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 686080 bytes in 4 files.
[x]: 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 %doc.
[x]: Package requires other packages for directories it uses.
[x]: Package does not own files or directories owned by other packages.
[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]: %config files are marked noreplace or the reason is justified.
[x]: Macros in Summary, %description expandable at SRPM build time.
[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]: No %config files under /usr.
[x]: Package do not use a name that already exist
[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]: Static libraries in -static or -devel subpackage, providing -devel if
     present.
     Note: Package has .a files: llvm34-static.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

Python:
[-]: Python eggs must not download any dependencies during the build process.
[-]: A package which is used by another package via an egg interface should
     provide egg info.
[x]: Package meets the Packaging Guidelines::Python
[x]: Binary eggs must be removed in %prep

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

Generic:
[x]: If the source package does not include license text(s) as a separate file
     from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[x]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in llvm34-doc
     , llvm34-libs , llvm34-static

---> Discussed in the previous review. No issues.

[x]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: Patches link to upstream bugs/comments/lists or are otherwise justified.
[x]: Scriptlets must be sane, if used.
[x]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[x]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed files.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[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]: Dist tag is present (not strictly required in GL).
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Uses parallel make %{?_smp_mflags} macro.
[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: llvm34-3.4.2-3.fc22.x86_64.rpm
          llvm34-devel-3.4.2-3.fc22.x86_64.rpm
          llvm34-doc-3.4.2-3.fc22.noarch.rpm
          llvm34-libs-3.4.2-3.fc22.x86_64.rpm
          llvm34-static-3.4.2-3.fc22.x86_64.rpm
          llvm34-3.4.2-3.fc22.src.rpm
llvm34.x86_64: W: spelling-error %description -l en_US runtime -> run time, run-time, rudiment
llvm34.x86_64: W: no-manual-page-for-binary llc-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-ar-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-stress-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-nm-3.4
llvm34.x86_64: W: no-manual-page-for-binary lli-child-target-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-bcanalyzer-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-tblgen-3.4
llvm34.x86_64: W: no-manual-page-for-binary opt-3.4
llvm34.x86_64: W: no-manual-page-for-binary bugpoint-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-symbolizer-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-cov-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-rtdyld-3.4
llvm34.x86_64: W: no-manual-page-for-binary lli-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-diff-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-objdump-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-mcmarkup-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-mc-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-as-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-readobj-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-dwarfdump-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-link-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-extract-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-size-3.4
llvm34.x86_64: W: no-manual-page-for-binary macho-dump-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-dis-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-ranlib-3.4
llvm34-devel.x86_64: W: no-manual-page-for-binary llvm-config-64-3.4
llvm34-libs.x86_64: W: no-documentation
llvm34-static.x86_64: W: no-documentation
llvm34.src: W: spelling-error %description -l en_US runtime -> run time, run-time, rudiment
llvm34.src:124: E: hardcoded-library-path in /usr/lib

---> This complaint is for the sed line in the spec file. No issues.
sed -i.orig 's|/lib /usr/lib $lt_ld_extra|%{_libdir} $lt_ld_extra|' configure

llvm34.src:178: E: hardcoded-library-path in %{_prefix}/lib/gcc/%{_target_cpu}*/*/include)

---> This, I guess has to be done that way.


http://koji.fedoraproject.org/koji/taskinfo?taskID=8121349


llvm34.src: W: patch-not-applied Patch20: clang-3.4-arm-hard-float.patch
llvm34.src: W: patch-not-applied Patch22: pr12586.patch
6 packages and 0 specfiles checked; 2 errors, 33 warnings.


Rpmlint (installed packages)
----------------------------
# rpmlint llvm34 llvm34-static llvm34-devel llvm34-libs llvm34-doc
llvm34.x86_64: W: spelling-error %description -l en_US runtime -> run time, run-time, rudiment
llvm34.x86_64: W: no-manual-page-for-binary llc-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-ar-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-stress-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-nm-3.4
llvm34.x86_64: W: no-manual-page-for-binary lli-child-target-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-bcanalyzer-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-tblgen-3.4
llvm34.x86_64: W: no-manual-page-for-binary opt-3.4
llvm34.x86_64: W: no-manual-page-for-binary bugpoint-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-symbolizer-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-cov-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-rtdyld-3.4
llvm34.x86_64: W: no-manual-page-for-binary lli-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-diff-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-objdump-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-mcmarkup-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-mc-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-as-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-readobj-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-dwarfdump-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-link-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-extract-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-size-3.4
llvm34.x86_64: W: no-manual-page-for-binary macho-dump-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-dis-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-ranlib-3.4
llvm34-static.x86_64: W: no-documentation
llvm34-devel.x86_64: W: no-manual-page-for-binary llvm-config-64-3.4
llvm34-libs.x86_64: W: no-documentation
5 packages and 0 specfiles checked; 0 errors, 30 warnings.
# echo 'rpmlint-done:'



Requires
--------
llvm34 (rpmlib, GLIBC filtered):
    libLLVM-3.4.so()(64bit)
    libc.so.6()(64bit)
    libdl.so.2()(64bit)
    libffi.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.4)(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.8)(64bit)
    libtinfo.so.5()(64bit)
    libz.so.1()(64bit)
    llvm34-libs(x86-64)
    rtld(GNU_HASH)

llvm34-static (rpmlib, GLIBC filtered):
    llvm34-devel(x86-64)

llvm34-devel (rpmlib, GLIBC filtered):
    /bin/sh
    /usr/sbin/alternatives
    libc.so.6()(64bit)
    libdl.so.2()(64bit)
    libffi-devel
    libffi.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.4)(64bit)
    libm.so.6()(64bit)
    libpthread.so.0()(64bit)
    libstdc++-devel
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.8)(64bit)
    libtinfo.so.5()(64bit)
    libz.so.1()(64bit)
    llvm34(x86-64)
    ncurses-devel
    rtld(GNU_HASH)

llvm34-libs (rpmlib, GLIBC filtered):
    /sbin/ldconfig
    config(llvm34-libs)
    libLLVM-3.4.so()(64bit)
    libLTO.so()(64bit)
    libc.so.6()(64bit)
    libdl.so.2()(64bit)
    libffi.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.4)(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.8)(64bit)
    libtinfo.so.5()(64bit)
    libz.so.1()(64bit)
    libz.so.1(ZLIB_1.2.0)(64bit)
    rtld(GNU_HASH)

llvm34-doc (rpmlib, GLIBC filtered):
    llvm34



Provides
--------
llvm34:
    llvm34
    llvm34(x86-64)

llvm34-static:
    llvm34-static
    llvm34-static(x86-64)

llvm34-devel:
    llvm34-devel
    llvm34-devel(x86-64)

llvm34-libs:
    config(llvm34-libs)
    libLLVM-3.4.so()(64bit)
    libLTO.so()(64bit)
    llvm34-libs
    llvm34-libs(x86-64)

llvm34-doc:
    llvm34-doc



Unversioned so-files
--------------------
llvm34-libs: /usr/lib64/llvm34/BugpointPasses.so
llvm34-libs: /usr/lib64/llvm34/LLVMgold.so
llvm34-libs: /usr/lib64/llvm34/libLLVM-3.4.2.so
llvm34-libs: /usr/lib64/llvm34/libLLVM-3.4.so
llvm34-libs: /usr/lib64/llvm34/libLTO.so

Source checksums
----------------
http://llvm.org/releases/3.4.2/llvm-3.4.2.src.tar.gz :
  CHECKSUM(SHA256) this package     : 17038d47069ad0700c063caed76f0c7259628b0e79651ce2b540d506f2f1efd7
  CHECKSUM(SHA256) upstream package : 17038d47069ad0700c063caed76f0c7259628b0e79651ce2b540d506f2f1efd7


Generated by fedora-review 0.5.2 (63c24cb) last change: 2014-07-14
Command line :/usr/bin/fedora-review -m fedora-rawhide-x86_64 -b 1161014
Buildroot used: fedora-rawhide-x86_64
Active plugins: Python, Generic, Shell-api, C/C++
Disabled plugins: Java, SugarActivity, fonts, Haskell, Ocaml, Perl, R, PHP, Ruby
Disabled flags: EXARCH, EPEL5, BATCH, DISTTAG

Comment 12 Jens Petersen 2014-11-13 03:39:29 UTC
Thanks, Mukundan

(In reply to Mukundan Ragavan from comment #11)
> - Package contains BR: python2-devel or python3-devel
> 
> ---> I think this is fine. 
> 
> There is Buildrequires: python, Is that what is triggering this?

Perhaps.  Let me change it to python2-devel to see if that will silence the warning.

https://fedoraproject.org/wiki/Packaging:Python#BuildRequires

> [x]: License file installed when any subpackage combination is installed.
> 
> ---> About this - 
> 
> Can you use the %license macro for this since this is a new package anyway?

Okay thanks and I will move the license file to libs too.

> [?]: %build honors applicable compiler flags or justifies otherwise.
> 
> ---> Please remove -O3 from the flags or add a note. I would prefer to
> remove this. However, since llvm spec does not say why this was added (I am
> sure there was a good reason), I am just confused. Thoughts?

Okay let me comment it out for now: I wonder if it has caused any problems.
I also mailed the committer asking if he can comment on it.

> [x]: Fully versioned dependency in subpackages if applicable.
>      Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in llvm34-doc
>      , llvm34-libs , llvm34-static
> 
> ---> Discussed in the previous review. No issues.

Thanks: summarizing the current versioned reqs are:
static -> devel -> base -> libs (as for llvm).

> llvm34.src: W: patch-not-applied Patch20: clang-3.4-arm-hard-float.patch
> llvm34.src: W: patch-not-applied Patch22: pr12586.patch

Removing these.


Spec: http://petersen.fedorapeople.org/reviews/llvm34/llvm34.spec
SRPM: http://petersen.fedorapeople.org/reviews/llvm34/llvm34-3.4.2-4.fc20.src.rpm

- BR python2-devel instead of python (#1161014)
- drop -O3 config from llvm.spec for now (#1161014)
- use license tag for license file and move license to libs (#1161014)
- remove unused clang patches

Koji: http://koji.fedoraproject.org/koji/taskinfo?taskID=8122183

Comment 13 Jens Petersen 2014-11-13 05:52:56 UTC
Erm, http://koji.fedoraproject.org/koji/taskinfo?taskID=8125251

Comment 15 Mukundan Ragavan 2014-11-14 00:33:26 UTC
Package Review
==============

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


Issues:
=======
- Header files in -devel subpackage, if present.
  Note: llvm34-doc : /usr/share/doc/llvm34-doc/examples/BrainF/BrainF.h
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#DevelPackages

---> Already discussed. No problems.

- 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 %doc.
  Note: Cannot find LICENSE.TXT in rpm(s)
  See:
  http://fedoraproject.org/wiki/Packaging/LicensingGuidelines#License_Text


---> This is a fedora-review problem. %license macro is not implemented everywhere yet.
License is installed in /usr/share/license/llvm-libs
FPC ticket 411.

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

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: 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)
[x]: Rpath absent or only used for internal libs.

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses found:
     "BSD (3 clause)", "ISC", "Unknown or generated". 2381 files have unknown
     license. Detailed output of licensecheck in
     /home/mukundan/ownCloud/pkg_reviews/llvm34/1161014-llvm34/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[x]: Package requires other packages for directories it uses.
     Note: No known owner of /usr/share/licenses

---> This is provided by filesystem in rawhide.

[x]: Package must own all directories that it creates.
     Note: Directories without known owners: /usr/lib64/llvm34,
     /usr/share/licenses
[x]: %build honors applicable compiler flags or justifies otherwise.

---> -O3 flag removed.


[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[x]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[x]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 686080 bytes in 3 files.
[x]: 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]: Package does not own files or directories owned by other packages.
[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]: %config files are marked noreplace or the reason is justified.
[x]: Macros in Summary, %description expandable at SRPM build time.
[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]: No %config files under /usr.
[x]: Package do not use a name that already exist
[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]: Static libraries in -static or -devel subpackage, providing -devel if
     present.
     Note: Package has .a files: llvm34-static.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

Python:
[-]: Python eggs must not download any dependencies during the build process.
[-]: A package which is used by another package via an egg interface should
     provide egg info.
[x]: Package meets the Packaging Guidelines::Python
[x]: Package contains BR: python2-devel or python3-devel
[x]: Binary eggs must be removed in %prep

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

Generic:
[x]: If the source package does not include license text(s) as a separate file
     from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[x]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in llvm34-doc
     , llvm34-libs , llvm34-static
[x]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: Patches link to upstream bugs/comments/lists or are otherwise justified.
[x]: Scriptlets must be sane, if used.
[x]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[x]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed files.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[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]: Dist tag is present (not strictly required in GL).
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Uses parallel make %{?_smp_mflags} macro.
[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: llvm34-3.4.2-5.fc22.x86_64.rpm
          llvm34-devel-3.4.2-5.fc22.x86_64.rpm
          llvm34-doc-3.4.2-5.fc22.noarch.rpm
          llvm34-libs-3.4.2-5.fc22.x86_64.rpm
          llvm34-static-3.4.2-5.fc22.x86_64.rpm
          llvm34-3.4.2-5.fc22.src.rpm
llvm34.x86_64: W: spelling-error %description -l en_US runtime -> run time, run-time, rudiment
llvm34.x86_64: W: no-manual-page-for-binary llc-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-ar-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-stress-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-nm-3.4
llvm34.x86_64: W: no-manual-page-for-binary lli-child-target-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-bcanalyzer-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-tblgen-3.4
llvm34.x86_64: W: no-manual-page-for-binary opt-3.4
llvm34.x86_64: W: no-manual-page-for-binary bugpoint-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-symbolizer-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-cov-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-rtdyld-3.4
llvm34.x86_64: W: no-manual-page-for-binary lli-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-diff-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-objdump-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-mcmarkup-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-mc-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-as-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-readobj-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-dwarfdump-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-link-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-extract-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-size-3.4
llvm34.x86_64: W: no-manual-page-for-binary macho-dump-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-dis-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-ranlib-3.4
llvm34-devel.x86_64: W: no-manual-page-for-binary llvm-config-64-3.4
llvm34-libs.x86_64: W: no-documentation
llvm34-static.x86_64: W: no-documentation
llvm34.src: W: spelling-error %description -l en_US runtime -> run time, run-time, rudiment


llvm34.src:118: E: hardcoded-library-path in /usr/lib
llvm34.src:172: E: hardcoded-library-path in %{_prefix}/lib/gcc/%{_target_cpu}*/*/include)

---> Already discussed

6 packages and 0 specfiles checked; 2 errors, 31 warnings.




Rpmlint (installed packages)
----------------------------
# rpmlint llvm34 llvm34-static llvm34-devel llvm34-libs llvm34-doc
llvm34.x86_64: W: spelling-error %description -l en_US runtime -> run time, run-time, rudiment
llvm34.x86_64: W: no-manual-page-for-binary llc-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-ar-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-stress-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-nm-3.4
llvm34.x86_64: W: no-manual-page-for-binary lli-child-target-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-bcanalyzer-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-tblgen-3.4
llvm34.x86_64: W: no-manual-page-for-binary opt-3.4
llvm34.x86_64: W: no-manual-page-for-binary bugpoint-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-symbolizer-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-cov-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-rtdyld-3.4
llvm34.x86_64: W: no-manual-page-for-binary lli-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-diff-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-objdump-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-mcmarkup-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-mc-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-as-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-readobj-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-dwarfdump-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-link-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-extract-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-size-3.4
llvm34.x86_64: W: no-manual-page-for-binary macho-dump-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-dis-3.4
llvm34.x86_64: W: no-manual-page-for-binary llvm-ranlib-3.4
llvm34-static.x86_64: W: no-documentation
llvm34-devel.x86_64: W: no-manual-page-for-binary llvm-config-64-3.4
llvm34-libs.x86_64: W: no-documentation
5 packages and 0 specfiles checked; 0 errors, 30 warnings.
# echo 'rpmlint-done:'



Requires
--------
llvm34 (rpmlib, GLIBC filtered):
    libLLVM-3.4.so()(64bit)
    libc.so.6()(64bit)
    libdl.so.2()(64bit)
    libffi.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.4)(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.8)(64bit)
    libtinfo.so.5()(64bit)
    libz.so.1()(64bit)
    llvm34-libs(x86-64)
    rtld(GNU_HASH)

llvm34-static (rpmlib, GLIBC filtered):
    llvm34-devel(x86-64)

llvm34-devel (rpmlib, GLIBC filtered):
    /bin/sh
    /usr/sbin/alternatives
    libc.so.6()(64bit)
    libdl.so.2()(64bit)
    libffi-devel
    libffi.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.4)(64bit)
    libm.so.6()(64bit)
    libpthread.so.0()(64bit)
    libstdc++-devel
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.8)(64bit)
    libtinfo.so.5()(64bit)
    libz.so.1()(64bit)
    llvm34(x86-64)
    ncurses-devel
    rtld(GNU_HASH)

llvm34-libs (rpmlib, GLIBC filtered):
    /sbin/ldconfig
    config(llvm34-libs)
    libLLVM-3.4.so()(64bit)
    libLTO.so()(64bit)
    libc.so.6()(64bit)
    libdl.so.2()(64bit)
    libffi.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.4)(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.8)(64bit)
    libtinfo.so.5()(64bit)
    libz.so.1()(64bit)
    libz.so.1(ZLIB_1.2.0)(64bit)
    rtld(GNU_HASH)

llvm34-doc (rpmlib, GLIBC filtered):
    llvm34



Provides
--------
llvm34:
    llvm34
    llvm34(x86-64)

llvm34-static:
    llvm34-static
    llvm34-static(x86-64)

llvm34-devel:
    llvm34-devel
    llvm34-devel(x86-64)

llvm34-libs:
    config(llvm34-libs)
    libLLVM-3.4.so()(64bit)
    libLTO.so()(64bit)
    llvm34-libs
    llvm34-libs(x86-64)

llvm34-doc:
    llvm34-doc



Unversioned so-files
--------------------
llvm34-libs: /usr/lib64/llvm34/BugpointPasses.so
llvm34-libs: /usr/lib64/llvm34/LLVMgold.so
llvm34-libs: /usr/lib64/llvm34/libLLVM-3.4.2.so
llvm34-libs: /usr/lib64/llvm34/libLLVM-3.4.so
llvm34-libs: /usr/lib64/llvm34/libLTO.so

Source checksums
----------------
http://llvm.org/releases/3.4.2/llvm-3.4.2.src.tar.gz :
  CHECKSUM(SHA256) this package     : 17038d47069ad0700c063caed76f0c7259628b0e79651ce2b540d506f2f1efd7
  CHECKSUM(SHA256) upstream package : 17038d47069ad0700c063caed76f0c7259628b0e79651ce2b540d506f2f1efd7


Generated by fedora-review 0.5.2 (63c24cb) last change: 2014-07-14
Command line :/usr/bin/fedora-review -m fedora-rawhide-x86_64 -b 1161014
Buildroot used: fedora-rawhide-x86_64
Active plugins: Python, Generic, Shell-api, C/C++
Disabled plugins: Java, SugarActivity, fonts, Haskell, Ocaml, Perl, R, PHP, Ruby
Disabled flags: EXARCH, EPEL5, BATCH, DISTTAG

Comment 16 Mukundan Ragavan 2014-11-14 00:35:09 UTC
Hi Jens, I do not have anything else to complain about! :)

Package APPROVED! Cheers!

Comment 17 Jens Petersen 2014-11-14 00:57:56 UTC
Thank you Mukundan for taking time to review this carefully
and for good suggestions to improve the packaging. :)

I see there is an open RFE bug 1127916 for fedora-review to support %license.


New Package SCM Request
=======================
Package Name: llvm34
Short Description: Low Level Virtual Machine compiler infrastructure
Upstream URL: http://llvm.org/
Owners: petersen
Branches: 
InitialCC: 


If llvm-3.5 is backported to F21 then I will request a f21 branch later.

Comment 18 Gwyn Ciesla 2014-11-14 12:51:46 UTC
Git done (by process-git-requests).

Comment 19 Jens Petersen 2014-11-17 04:13:31 UTC
Thank you again for reviewing the package.

http://koji.fedoraproject.org/koji/buildinfo?buildID=593769

Comment 20 Mukundan Ragavan 2014-11-18 01:02:58 UTC
(In reply to Jens Petersen from comment #19)
> Thank you again for reviewing the package.
> 
> http://koji.fedoraproject.org/koji/buildinfo?buildID=593769

My pleasure! :)

Comment 21 Jens Petersen 2014-12-22 04:16:06 UTC
Okay llvm-3.5 is now in F21! ;)


Package Change Request
======================
Package Name: llvm34
New Branches: f21
Owners: petersen
InitialCC:

Comment 22 Jens Petersen 2014-12-22 08:06:44 UTC
Git done (by process-git-requests).

Comment 23 Fedora Update System 2014-12-24 01:54:48 UTC
llvm34-3.4.2-5.fc21 has been submitted as an update for Fedora 21.
https://admin.fedoraproject.org/updates/llvm34-3.4.2-5.fc21

Comment 24 Fedora Update System 2015-01-05 07:33:10 UTC
llvm34-3.4.2-5.fc21 has been pushed to the Fedora 21 stable repository.