Spec URL: https://sergesanspaille.fedorapeople.org/llvm-bolt.spec SRPM URL: https://sergesanspaille.fedorapeople.org/llvm-bolt-14.0.5-1.src.rpm Description: a post-link optimizer developed to speed up large applications Fedora Account System Username: sergesanspaille
bolt has been part of LLVM since LLVM 14, it's packaging is made a bit difficult by its dependency on private headers...
Could you add a build on Copr or Koji?
https://koji.fedoraproject.org/koji/taskinfo?taskID=91736581
Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed ===== MUST items ===== C/C++: [x]: Package does not contain kernel modules. [x]: Package contains no static executables. [x]: If your application is a C or C++ application you must list a BuildRequires against gcc, gcc-c++ or clang. [x]: Header files in -devel subpackage, if present. [x]: Package does not contain any libtool archives (.la) [x]: Rpath absent or only used for internal libs. Generic: [?]: 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: "Unknown or generated", "*No copyright* Apache License 2.0". 259 files have unknown license. Detailed output of licensecheck in /home/FedoraPackaging/llvm-bolt/2124479-llvm-bolt/licensecheck.txt [?]: License file installed when any subpackage combination is installed. [?]: %build honors applicable compiler flags or justifies otherwise. [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. [?]: 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). [?]: Package is named according to the Package Naming Guidelines. [x]: 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. [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. [?]: 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]: Package requires other packages for directories it uses. [x]: Package must own all directories that it creates. [x]: Package does not own files or directories owned by other packages. [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 must not depend on deprecated() packages. [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]: Static libraries in -static or -devel subpackage, providing -devel if present. Note: Package has .a files: llvm-bolt-static. [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. [x]: Final provides and requires are sane (see attachments). [?]: Fully versioned dependency in subpackages if applicable. Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in llvm- bolt-devel [?]: 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]: 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]: Sources are verified with gpgverify first in %prep if upstream publishes signatures. [x]: Spec use %global instead of %define unless justified. ===== EXTRA items ===== Generic: [x]: Rpmlint is run on debuginfo package(s). Note: There are rpmlint messages (see attachment). [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 ------- Cannot parse rpmlint output: Rpmlint (debuginfo) ------------------- Cannot parse rpmlint output: Rpmlint (installed packages) ---------------------------- Cannot parse rpmlint output: Source checksums ---------------- https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.5/llvm-project-14.0.5.src.tar.xz.sig : CHECKSUM(SHA256) this package : 522dc6790ddf2206e6504eff7e80e739c8e2c0a25010d4b19cf2b73e00f66726 CHECKSUM(SHA256) upstream package : 522dc6790ddf2206e6504eff7e80e739c8e2c0a25010d4b19cf2b73e00f66726 https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.5/llvm-project-14.0.5.src.tar.xz : CHECKSUM(SHA256) this package : c9d27903ba3883c476a83cd515e36e1e07b0585db55692835de11385d9e3c8fa CHECKSUM(SHA256) upstream package : c9d27903ba3883c476a83cd515e36e1e07b0585db55692835de11385d9e3c8fa Requires -------- llvm-bolt (rpmlib, GLIBC filtered): ld-linux-x86-64.so.2()(64bit) libLLVM-14.so()(64bit) libLLVM-14.so(LLVM_14)(64bit) libc.so.6()(64bit) libgcc_s.so.1()(64bit) libm.so.6()(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libstdc++.so.6(CXXABI_1.3.11)(64bit) libstdc++.so.6(CXXABI_1.3.13)(64bit) libstdc++.so.6(CXXABI_1.3.5)(64bit) libstdc++.so.6(CXXABI_1.3.9)(64bit) rtld(GNU_HASH) llvm-bolt-static (rpmlib, GLIBC filtered): llvm-bolt(x86-64) llvm-bolt-devel (rpmlib, GLIBC filtered): llvm-bolt-static(x86-64) llvm-bolt-debuginfo (rpmlib, GLIBC filtered): llvm-bolt-debugsource (rpmlib, GLIBC filtered): Provides -------- llvm-bolt: llvm-bolt llvm-bolt(x86-64) llvm-bolt-static: llvm-bolt-static llvm-bolt-static(x86-64) Comments: a) There is documentation and a README available at https://gihub.com/llvm/llvm-project/tree/main/bolt it would be good to package it as well b) Check section does not run any tests, please ass "ninja check-bolt" to add these c) Why only build static libraries? Dynamically linked libraries are preferred d) Clang and ldb are provided as subpackages of llvm https://packages.fedoraproject.org/pkgs/llvm/ . Can bolt be provided as a subpackage of llvm? e) Licensing may also require some checks https://src.fedoraproject.org/rpms/llvm/pull-request/149
Sorry, Clang and lld are in their own repositories: https://src.fedoraproject.org/rpms/clang/blob/rawhide/f/clang.spec https://src.fedoraproject.org/rpms/lld/blob/rawhide/f/lld.spec So a separate repository seems fine.
Also note that LLVM 15 and 14.06 have been released https://github.com/llvm/llvm-project/releases/
Thanks for the feedback! New spec file, srpm and associated build: https://sergesanspaille.fedorapeople.org/llvm-bolt.spec https://sergesanspaille.fedorapeople.org/llvm-bolt-15.0.0-1.src.rpm https://koji.fedoraproject.org/koji/taskinfo?taskID=92245183 Concerning the required changes: a) done b) done, that unveiled a lot of issues c) unfortunately it's not possible tobuilt bolt that way upstream yet, due to lack of support for dylib, which implies static linking (see https://github.com/llvm/llvm-project/issues/57551) d) yeah, own repo e) done f) update to LLVM 15 done too The packaging is not as clean as I wish it could be, but I still think it's good
Running fedora-review on x86_64, the following failed for me: ******************** Failed Tests (3): BOLT :: X86/asm-dump.c BOLT :: X86/internal-call-instrument-so.s BOLT :: X86/internal-call-instrument.s Testing Time: 41.43s These tests do pass on your build as well as in copr https://copr.fedorainfracloud.org/coprs/fed500/llvm-bolt/build/4881816/ Bolt documentation suggests using jemalloc-devel or tcmalloc in gperftools-devel. Is it worth adding dependencies to one of these libraries?
Built Bolt 15.0.0, and those tests did not fail. Maybe the section: %ifarch x86_64 # Bolt makes incorrect assumptions on the location of libbolt_rt_*.a. mkdir -p %{_builddir}/%{_libdir} for rt in libbolt_rt_instr libbolt_rt_hugify libbolt_rt_instr_osx do ln -s %{buildroot}/%{_libdir}/${rt}.a %{_builddir}/%{bolt_srcdir}/bolt/lib/ done %endif needs updating? Build log for failing tests: FAIL: BOLT :: X86/internal-call-instrument-so.s (82 of 198) ******************** TEST 'BOLT :: X86/internal-call-instrument-so.s' FAILED ******************** Script: -- : 'RUN: at line 5'; /usr/bin/llvm-mc -filetype=obj -triple x86_64-unknown-unknown /builddir/build /BUILD/llvm-project-15.0.0.src/bolt/test/X86/internal-call-instrument-so.s -o /builddir/build/BUILD /llvm-project-15.0.0.src/bolt/redhat-linux-build/test/X86/Output/internal-call-instrument-so.s.tmp. o : 'RUN: at line 7'; /usr/bin/llvm-strip --strip-unneeded /builddir/build/BUILD/llvm-project-15.0. 0.src/bolt/redhat-linux-build/test/X86/Output/internal-call-instrument-so.s.tmp.o : 'RUN: at line 8'; /usr/bin/ld.lld /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/redhat-lin ux-build/test/X86/Output/internal-call-instrument-so.s.tmp.o -o /builddir/build/BUILD/llvm-project- 15.0.0.src/bolt/redhat-linux-build/test/X86/Output/internal-call-instrument-so.s.tmp.exe -q -shared -fini=_fini : 'RUN: at line 9'; /usr/bin/llvm-bolt --instrument /builddir/build/BUILD/llvm-project-15.0.0.src /bolt/redhat-linux-build/test/X86/Output/internal-call-instrument-so.s.tmp.exe --relocs -o /builddi r/build/BUILD/llvm-project-15.0.0.src/bolt/redhat-linux-build/test/X86/Output/internal-call-instrum ent-so.s.tmp.out -- Exit Code: 1 Command Output (stdout): -- BOLT-INFO: shared object or position-independent executable detected BOLT-INFO: Target architecture: x86_64 BOLT-INFO: BOLT version: <unknown> BOLT-INFO: first alloc address is 0x0 BOLT-INFO: creating new program header table at address 0x200000, offset 0x200000 BOLT-INFO: enabling relocation mode BOLT-INFO: forcing -jump-tables=move for instrumentation BOLT-INFO: enabling -align-macro-fusion=all since no profile was specified BOLT-INFO: enabling lite mode BOLT-INSTRUMENTER: Number of indirect call site descriptors: 0 BOLT-INSTRUMENTER: Number of indirect call target descriptors: 2 BOLT-INSTRUMENTER: Number of function descriptors: 2 BOLT-INSTRUMENTER: Number of branch counters: 2 BOLT-INSTRUMENTER: Number of ST leaf node counters: 4 BOLT-INSTRUMENTER: Number of direct call counters: 0 BOLT-INSTRUMENTER: Total number of counters: 6 BOLT-INSTRUMENTER: Total size of counters: 48 bytes (static alloc memory) BOLT-INSTRUMENTER: Total size of string table emitted: 13 bytes in file BOLT-INSTRUMENTER: Total size of descriptors: 296 bytes in file BOLT-INSTRUMENTER: Profile will be saved to file /tmp/prof.fdata BOLT-INFO: 0 out of 2 functions in the binary (0.0%) have non-empty execution profile BOLT-INFO: 0 instructions were shortened BOLT-INFO: UCE removed 0 blocks and 0 bytes of code. BOLT-INFO: SCTC: patched 0 tail calls (0 forward) tail calls (0 backward) from a total of 0 while r emoving 0 double jumps and removing 0 basic blocks totalling 0 bytes of code. CTCs total execution count is 0 and the number of times CTCs are taken is 0. -- Command Output (stderr): -- BOLT-WARNING: will skip the following function(s) as unsupported internal calls were detected: _start BOLT-ERROR: library not found: /usr/lib/libbolt_rt_instr.a -- ******************** FAIL: BOLT :: X86/internal-call-instrument.s (83 of 198) ******************** TEST 'BOLT :: X86/internal-call-instrument.s' FAILED ******************** Script: -- : 'RUN: at line 5'; /usr/bin/llvm-mc -filetype=obj -triple x86_64-unknown-unknown /builddir/build /BUILD/llvm-project-15.0.0.src/bolt/test/X86/internal-call-instrument.s -o /builddir/build/BUILD/ll vm-project-15.0.0.src/bolt/redhat-linux-build/test/X86/Output/internal-call-instrument.s.tmp.o : 'RUN: at line 7'; /usr/bin/llvm-strip --strip-unneeded /builddir/build/BUILD/llvm-project-15.0. 0.src/bolt/redhat-linux-build/test/X86/Output/internal-call-instrument.s.tmp.o : 'RUN: at line 8'; /usr/bin/clang /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/redhat-linu x-build/test/X86/Output/internal-call-instrument.s.tmp.o -o /builddir/build/BUILD/llvm-project-15.0 .0.src/bolt/redhat-linux-build/test/X86/Output/internal-call-instrument.s.tmp.exe -Wl,-q : 'RUN: at line 10'; /usr/bin/llvm-bolt --instrument /builddir/build/BUILD/llvm-project-15.0.0.sr c/bolt/redhat-linux-build/test/X86/Output/internal-call-instrument.s.tmp.exe --relocs -o /builddir/ build/BUILD/llvm-project-15.0.0.src/bolt/redhat-linux-build/test/X86/Output/internal-call-instrumen t.s.tmp.out -- Exit Code: 1 Command Output (stdout): -- BOLT-INFO: shared object or position-independent executable detected BOLT-INFO: Target architecture: x86_64 BOLT-INFO: BOLT version: <unknown> BOLT-INFO: first alloc address is 0x0 BOLT-INFO: creating new program header table at address 0x200000, offset 0x200000 BOLT-INFO: enabling relocation mode BOLT-INFO: forcing -jump-tables=move for instrumentation BOLT-INFO: enabling -align-macro-fusion=all since no profile was specified BOLT-INFO: enabling lite mode BOLT-INSTRUMENTER: Number of indirect call site descriptors: 2 BOLT-INSTRUMENTER: Number of indirect call target descriptors: 7 BOLT-INSTRUMENTER: Number of function descriptors: 7 BOLT-INSTRUMENTER: Number of branch counters: 5 BOLT-INSTRUMENTER: Number of ST leaf node counters: 13 BOLT-INSTRUMENTER: Number of direct call counters: 0 BOLT-INSTRUMENTER: Total number of counters: 18 BOLT-INSTRUMENTER: Total size of counters: 144 bytes (static alloc memory) BOLT-INSTRUMENTER: Total size of string table emitted: 147 bytes in file BOLT-INSTRUMENTER: Total size of descriptors: 972 bytes in file BOLT-INSTRUMENTER: Profile will be saved to file /tmp/prof.fdata BOLT-INFO: 0 out of 10 functions in the binary (0.0%) have non-empty execution profile BOLT-INFO: 0 instructions were shortened BOLT-INFO: UCE removed 3 blocks and 120 bytes of code. BOLT-INFO: SCTC: patched 0 tail calls (0 forward) tail calls (0 backward) from a total of 0 while r emoving 0 double jumps and removing 0 basic blocks totalling 0 bytes of code. CTCs total execution count is 0 and the number of times CTCs are taken is 0. -- Command Output (stderr): -- /usr/bin/ld: warning: /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/redhat-linux-build/test/X8 6/Output/internal-call-instrument.s.tmp.o: missing .note.GNU-stack section implies executable stack /usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the link er BOLT-WARNING: will skip the following function(s) as unsupported internal calls were detected: main BOLT-ERROR: library not found: /usr/lib/libbolt_rt_instr.a -- ******************** ******************** TEST 'BOLT :: X86/asm-dump.c' FAILED ******************** Script: -- : 'RUN: at line 7'; /usr/bin/clang -fPIC /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/test/ X86/asm-dump.c -o /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/redhat-linux-build/test/X86/Ou tput/asm-dump.c.tmp.exe -Wl,-q : 'RUN: at line 10'; /usr/bin/llvm-bolt /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/redhat -linux-build/test/X86/Output/asm-dump.c.tmp.exe --instrument --instrumentation-file=/builddir/build /BUILD/llvm-project-15.0.0.src/bolt/redhat-linux-build/test/X86/Output/asm-dump.c.tmp.fdata -o /bui lddir/build/BUILD/llvm-project-15.0.0.src/bolt/redhat-linux-build/test/X86/Output/asm-dump.c.tmp.in str : 'RUN: at line 13'; /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/redhat-linux-build/test/X 86/Output/asm-dump.c.tmp.instr > /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/redhat-linux-bu ild/test/X86/Output/asm-dump.c.tmp.result : 'RUN: at line 16'; /usr/bin/llvm-bolt /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/redhat -linux-build/test/X86/Output/asm-dump.c.tmp.exe -p /builddir/build/BUILD/llvm-project-15.0.0.src/bo lt/redhat-linux-build/test/X86/Output/asm-dump.c.tmp.fdata --funcs=main --asm-dump=/builddir/build/ BUILD/llvm-project-15.0.0.src/bolt/redhat-linux-build/test/X86/Output/asm-dump.c.tmp -o /dev/null | /usr/bin/FileCheck /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/test/X86/asm-dump.c --che ck-prefix=CHECK-BOLT : 'RUN: at line 20'; cat /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/redhat-linux-build/te st/X86/Output/asm-dump.c.tmp/main.s | /usr/bin/FileCheck /builddir/build/BUILD/llvm-project-15.0.0. src/bolt/test/X86/asm-dump.c --check-prefix=CHECK-FILE : 'RUN: at line 24'; sed -i 's/\.L/L/g' /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/redhat -linux-build/test/X86/Output/asm-dump.c.tmp/main.s : 'RUN: at line 27'; /usr/bin/llvm-mc -filetype=obj -triple x86_64-unknown-unknown /builddir/buil d/BUILD/llvm-project-15.0.0.src/bolt/redhat-linux-build/test/X86/Output/asm-dump.c.tmp/main.s -o /b uilddir/build/BUILD/llvm-project-15.0.0.src/bolt/redhat-linux-build/test/X86/Output/asm-dump.c.tmp. o : 'RUN: at line 30'; /usr/bin/python3 /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/test/lin k_fdata.py /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/redhat-linux-build/test/X86/Output/as m-dump.c.tmp/main.s /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/redhat-linux-build/test/X86/ Output/asm-dump.c.tmp.o /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/redhat-linux-build/test/ X86/Output/asm-dump.c.tmp.fdata.reconst : 'RUN: at line 38'; /usr/bin/llvm-strip --strip-unneeded /builddir/build/BUILD/llvm-project-15.0 .0.src/bolt/redhat-linux-build/test/X86/Output/asm-dump.c.tmp.o : 'RUN: at line 41'; /usr/bin/clang -fPIC /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/redh at-linux-build/test/X86/Output/asm-dump.c.tmp.o -o /builddir/build/BUILD/llvm-project-15.0.0.src/bo lt/redhat-linux-build/test/X86/Output/asm-dump.c.tmp.exe.reopt -Wl,-q : 'RUN: at line 44'; /usr/bin/llvm-bolt /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/redhat -linux-build/test/X86/Output/asm-dump.c.tmp.exe.reopt -p /builddir/build/BUILD/llvm-project-15.0.0. src/bolt/redhat-linux-build/test/X86/Output/asm-dump.c.tmp.fdata.reconst -o /dev/null | /usr/bin /FileCheck /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/test/X86/asm-dump.c --check-prefix=CH ECK-REOPT -- Exit Code: 1 Command Output (stdout): -- BOLT-INFO: shared object or position-independent executable detected BOLT-INFO: Target architecture: x86_64 BOLT-INFO: BOLT version: <unknown> BOLT-INFO: first alloc address is 0x0 BOLT-INFO: creating new program header table at address 0x200000, offset 0x200000 BOLT-INFO: enabling relocation mode BOLT-INFO: forcing -jump-tables=move for instrumentation BOLT-INFO: enabling -align-macro-fusion=all since no profile was specified BOLT-INFO: enabling lite mode BOLT-INSTRUMENTER: Number of indirect call site descriptors: 2 BOLT-INSTRUMENTER: Number of indirect call target descriptors: 7 BOLT-INSTRUMENTER: Number of function descriptors: 7 BOLT-INSTRUMENTER: Number of branch counters: 7 BOLT-INSTRUMENTER: Number of ST leaf node counters: 14 BOLT-INSTRUMENTER: Number of direct call counters: 0 BOLT-INSTRUMENTER: Total number of counters: 21 BOLT-INSTRUMENTER: Total size of counters: 168 bytes (static alloc memory) BOLT-INSTRUMENTER: Total size of string table emitted: 168 bytes in file BOLT-INSTRUMENTER: Total size of descriptors: 1272 bytes in file BOLT-INSTRUMENTER: Profile will be saved to file /builddir/build/BUILD/llvm-project-15.0.0.src/bolt /redhat-linux-build/test/X86/Output/asm-dump.c.tmp.fdata BOLT-INFO: 0 out of 10 functions in the binary (0.0%) have non-empty execution profile BOLT-INFO: 8 instructions were shortened BOLT-INFO: UCE removed 3 blocks and 120 bytes of code. BOLT-INFO: SCTC: patched 0 tail calls (0 forward) tail calls (0 backward) from a total of 0 while r emoving 0 double jumps and removing 0 basic blocks totalling 0 bytes of code. CTCs total execution count is 0 and the number of times CTCs are taken is 0. -- Command Output (stderr): -- BOLT-ERROR: library not found: /usr/lib/libbolt_rt_instr.a -- ******************** Is it possible to update to 15.0.1 or 15.0.2 assuming this will be released soon?
Thanks a lot for the review! I've uploaded an updated spec file & the associated srpm to the same location: https://sergesanspaille.fedorapeople.org/llvm-bolt-15.0.0-1.src.rpm https://sergesanspaille.fedorapeople.org/llvm-bolt.spec Considering your advice: - 15.0.1 is probably not gping to be packaged in rawhide, we'll be waiting for 15.0.6 to be out. - sample koji run with new sources: https://koji.fedoraproject.org/koji/taskinfo?taskID=92611534 - I've added gperftools-devel as a Recommends
@benson_muite any update on that review?
Sorry, takes a while to build this. Thank for the reminder.
Builds seem ok: https://copr.fedorainfracloud.org/coprs/fed500/llvm-bolt/build/4954933/ Minor typo in spec file: # As hinted bu bolt documentation should perhaps be # As hinted by bolt documentation Any idea why test cases fail for aarch64? Has this been reported upstream? Why the commented out section: #%ifarch x86_64 #for rt in libbolt_rt_instr libbolt_rt_hugify libbolt_rt_instr_osx #do # rm %{buildroot}/usr/lib/${rt}.a #done #%endif rpmlint error llvm-bolt.spec:196: E: rpm-buildroot-usage %build export DESTDIR=%{buildroot}
@benson_muite Thanks for the feedback! I've uploaded an updated specfile and the associated srpm koji build: https://koji.fedoraproject.org/koji/taskinfo?taskID=93191542 Concerning your advice, I've fixed the typo, removed the commented section and added comment to explain why we use DESTDIR=%{buildroot} during build (and test) step No idea about the aarch64 tests failures. they do pass in main branch upstream according to upstream buildbolt (see https://lab.llvm.org/buildbot/#/builders/221) I haven't tried to reproduce that in main branch (reproducing there requires more setup than I am willing to do :-/)
Ok. Checking this.
Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed ===== MUST items ===== C/C++: [x]: Package does not contain kernel modules. [x]: Package contains no static executables. [x]: If your application is a C or C++ application you must list a BuildRequires against gcc, gcc-c++ or clang. [x]: Header files in -devel subpackage, if present. [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: "Unknown or generated", "*No copyright* Apache License 2.0". 390 files have unknown license. Detailed output of licensecheck in /home/benson/Projects/FedoraPackaging/reviews/llvm-bolt/2124479-llvm- bolt/licensecheck.txt [x]: License file installed when any subpackage combination is installed. [x]: %build honors applicable compiler flags or justifies otherwise. [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. [-]: 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. [!]: Package is not known to require an ExcludeArch tag. [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 %license. [x]: Package requires other packages for directories it uses. [x]: Package must own all directories that it creates. [x]: Package does not own files or directories owned by other packages. [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 must not depend on deprecated() packages. [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]: Static libraries in -static or -devel subpackage, providing -devel if present. Note: Package has .a files: llvm-bolt-static. [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. [x]: Final provides and requires are sane (see attachments). [-]: Fully versioned dependency in subpackages if applicable. Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in llvm- bolt-devel [?]: Package functions as described. [!]: 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. [!]: Package should compile and build into binary rpms on all supported architectures. [!]: %check is present and all tests pass. [x]: 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]: Sources are verified with gpgverify first in %prep if upstream publishes signatures. [x]: Spec use %global instead of %define unless justified. ===== EXTRA items ===== Generic: [!]: Spec file according to URL is the same as in SRPM. Note: Spec file as given by url is not the same as in SRPM (see attached diff). See: (this test has no URL) [x]: Rpmlint is run on debuginfo package(s). Note: There are rpmlint messages (see attachment). [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. Rpmlint ------- Cannot parse rpmlint output: Rpmlint (debuginfo) ------------------- Cannot parse rpmlint output: Rpmlint (installed packages) ---------------------------- ============================ rpmlint session starts ============================ rpmlint: 2.4.0 configuration: /usr/lib/python3.11/site-packages/rpmlint/configdefaults.toml /etc/xdg/rpmlint/fedora-legacy-licenses.toml /etc/xdg/rpmlint/fedora-spdx-licenses.toml /etc/xdg/rpmlint/fedora.toml /etc/xdg/rpmlint/scoring.toml /etc/xdg/rpmlint/users-groups.toml /etc/xdg/rpmlint/warn-on-functions.toml checks: 31, packages: 6 llvm-bolt-static.x86_64: E: static-library-without-debuginfo /usr/lib64/libLLVMBOLTCore.a llvm-bolt-static.x86_64: E: static-library-without-debuginfo /usr/lib64/libLLVMBOLTPasses.a llvm-bolt-static.x86_64: E: static-library-without-debuginfo /usr/lib64/libLLVMBOLTProfile.a llvm-bolt-static.x86_64: E: static-library-without-debuginfo /usr/lib64/libLLVMBOLTRewrite.a llvm-bolt-static.x86_64: E: static-library-without-debuginfo /usr/lib64/libLLVMBOLTRuntimeLibs.a llvm-bolt-static.x86_64: E: static-library-without-debuginfo /usr/lib64/libLLVMBOLTTargetAArch64.a llvm-bolt-static.x86_64: E: static-library-without-debuginfo /usr/lib64/libLLVMBOLTTargetX86.a llvm-bolt-static.x86_64: E: static-library-without-debuginfo /usr/lib64/libLLVMBOLTUtils.a llvm-bolt-static.x86_64: E: readelf-failed /usr/lib64/libbolt_rt_instr_osx.a Error: Not an ELF file - it has the wrong magic bytes at the start llvm-bolt.x86_64: W: no-manual-page-for-binary llvm-bolt llvm-bolt.x86_64: W: no-manual-page-for-binary llvm-boltdiff llvm-bolt.x86_64: W: no-manual-page-for-binary perf2bolt llvm-bolt.x86_64: W: no-documentation llvm-bolt-devel.x86_64: W: no-documentation llvm-bolt-static.x86_64: W: no-documentation llvm-bolt-debugsource.x86_64: W: invalid-license Apache-2.0-WITH-LLVM-exception llvm-bolt.x86_64: W: invalid-license Apache-2.0-WITH-LLVM-exception llvm-bolt-devel.x86_64: W: invalid-license Apache-2.0-WITH-LLVM-exception llvm-bolt-debuginfo.x86_64: W: invalid-license Apache-2.0-WITH-LLVM-exception llvm-bolt-static.x86_64: W: invalid-license Apache-2.0-WITH-LLVM-exception llvm-bolt-doc.noarch: W: invalid-license Apache-2.0-WITH-LLVM-exception 6 packages and 0 specfiles checked; 9 errors, 12 warnings, 9 badness; has taken 6.9 s Source checksums ---------------- https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.0/llvm-project-15.0.0.src.tar.xz.sig : CHECKSUM(SHA256) this package : 593ee43238f847f66a6c9e3d2440868d194af8292c99a7e906e59a32691d2048 CHECKSUM(SHA256) upstream package : 593ee43238f847f66a6c9e3d2440868d194af8292c99a7e906e59a32691d2048 https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.0/llvm-project-15.0.0.src.tar.xz : CHECKSUM(SHA256) this package : caaf8100365b6ebafc39fea803e902ca3ff38b4d5327b9927097808d32964db7 CHECKSUM(SHA256) upstream package : caaf8100365b6ebafc39fea803e902ca3ff38b4d5327b9927097808d32964db7 Requires -------- llvm-bolt (rpmlib, GLIBC filtered): ld-linux-x86-64.so.2()(64bit) libc.so.6()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgcc_s.so.1(GCC_3.3)(64bit) libm.so.6()(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libstdc++.so.6(CXXABI_1.3.11)(64bit) libstdc++.so.6(CXXABI_1.3.13)(64bit) libstdc++.so.6(CXXABI_1.3.3)(64bit) libstdc++.so.6(CXXABI_1.3.5)(64bit) libtinfo.so.6()(64bit) libz.so.1()(64bit) libz.so.1(ZLIB_1.2.0)(64bit) rtld(GNU_HASH) llvm-bolt-static (rpmlib, GLIBC filtered): llvm-bolt(x86-64) llvm-bolt-devel (rpmlib, GLIBC filtered): llvm-bolt-static(x86-64) llvm-bolt-doc (rpmlib, GLIBC filtered): llvm-bolt llvm-bolt-debuginfo (rpmlib, GLIBC filtered): llvm-bolt-debugsource (rpmlib, GLIBC filtered): Provides -------- llvm-bolt: llvm-bolt llvm-bolt(x86-64) llvm-bolt-static: llvm-bolt-static llvm-bolt-static(x86-64) llvm-bolt-devel: llvm-bolt-devel llvm-bolt-devel(x86-64) llvm-bolt-doc: llvm-bolt-doc llvm-bolt-debuginfo: debuginfo(build-id) llvm-bolt-debuginfo llvm-bolt-debuginfo(x86-64) llvm-bolt-debugsource: llvm-bolt-debugsource llvm-bolt-debugsource(x86-64) Diff spec file in url and in SRPM --------------------------------- --- /home/benson/Projects/FedoraPackaging/reviews/llvm-bolt/2124479-llvm-bolt/srpm/llvm-bolt.spec 2022-10-19 20:46:09.775954089 +0300 +++ /home/benson/Projects/FedoraPackaging/reviews/llvm-bolt/2124479-llvm-bolt/srpm-unpacked/llvm-bolt.spec2022-10-04 12:40:02.000000000 +0300 @@ -46,5 +46,5 @@ ExcludeArch: s390x ppc64le i686 -# As hinted by bolt documentation +# As hinted bu bolt documentation Recommends: gperftools-devel @@ -182,9 +182,9 @@ -DLLVM_INCLUDE_TESTS:BOOL=ON \ -DBUILD_SHARED_LIBS:BOOL=OFF \ - -DLLVM_LINK_LLVM_DYLIB:BOOL=OFF \ + -DLLVM_LINK_LLVM_DYLIB:BOOL=OFF \ %if 0%{?__isa_bits} == 64 - -DLLVM_LIBDIR_SUFFIX=64 \ + -DLLVM_LIBDIR_SUFFIX=64 \ %else - -DLLVM_LIBDIR_SUFFIX= \ + -DLLVM_LIBDIR_SUFFIX= \ %endif -DBOLT_INCLUDE_TESTS:BOOL=ON \ @@ -193,11 +193,9 @@ -DLLVM_EXTERNAL_LIT=%{_bindir}/lit -# Set LD_LIBRARY_PATH now because we skip rpath generation and the build uses -# some just built libraries. export LD_LIBRARY_PATH=%{_builddir}/%{bolt_srcdir}/bolt/%{_vpath_builddir}/%{_lib} -# Set DESTDIR now because bolt sneaks in an install step in its build step. export DESTDIR=%{buildroot} %cmake_build + %install %cmake_install @@ -234,4 +232,11 @@ %cmake_build --target check-bolt +#%ifarch x86_64 +#for rt in libbolt_rt_instr libbolt_rt_hugify libbolt_rt_instr_osx +#do +# rm %{buildroot}/usr/lib/${rt}.a +#done +#%endif + %files %license LICENSE.TXT Generated by fedora-review 0.9.0 (6761b6c) last change: 2022-08-23 Command line :/usr/bin/fedora-review -b 2124479 Buildroot used: fedora-rawhide-x86_64 Active plugins: Generic, Shell-api, C/C++ Disabled plugins: Haskell, Perl, Python, Ocaml, SugarActivity, fonts, PHP, Java, Ruby, R Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH Comments: a) One disabled test fails, but expect this is minor, maybe this is fixed in 15.0.3 if it is not difficult to use that? b) Can you add python3-psutil to BuildRequires, it seems to be needed for some tests. Build log output: lit: /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/test/lit.cfg.py:50: warning: Setting a timeout per test not supported. Requires the Python psutil module but it could not be found. Try installing it via pip or via your operating system's package manager. Some tests will be skipped. c) Assume it functions ok, because all but one test fail. Still need to check on an example. d) Should any header files be included in the devel package?
Thanks @benson_muite ! I've removed the devel package as they are not meant to be used as such upstream. We now only have a end user application. specfile and srpm uploaded at the same adress as above, associated build: https://koji.fedoraproject.org/koji/taskinfo?taskID=93253838 Considering comments: a) 15.03 is not in rawhide yet, but as soon as it's updated, I'll update either the proposal or the package, depending on where we are in the process. I don't think it should be blocking b) done. I've also added it as a Recommends: in python-lit package c) yeah, it's my approach too d) I've removed the devel package :-)
Ok. Thanks. Checking. Ok on 15.03, as all LLVM packages needed to be updated together.
Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed ===== MUST items ===== C/C++: [x]: Package does not contain kernel modules. [x]: Package contains no static executables. [x]: If your application is a C or C++ application you must list a BuildRequires against gcc, gcc-c++ or clang. [x]: Header files in -devel subpackage, if present. [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: "Unknown or generated", "*No copyright* Apache License 2.0". 390 files have unknown license. Detailed output of licensecheck in /home/FedoraPackaging/reviews/llvm-bolt/2124479-llvm-bolt/licensecheck.txt [x]: License file installed when any subpackage combination is installed. [x]: %build honors applicable compiler flags or justifies otherwise. [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. [-]: If the package is a rename of another package, proper Obsoletes and Provides are present. [?]: 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. [-]: Package is not known to require an ExcludeArch tag. [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 %license. [x]: Package requires other packages for directories it uses. [x]: Package must own all directories that it creates. [x]: Package does not own files or directories owned by other packages. [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 must not depend on deprecated() packages. [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. [x]: Final provides and requires are sane (see attachments). [?]: Package functions as described. [-]: Latest version is packaged. [x]: Package does not include license text files separate from upstream. [?]: Patches link to upstream bugs/comments/lists or are otherwise justified. [-]: 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]: 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]: Fully versioned dependency in subpackages if applicable. [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]: Sources are verified with gpgverify first in %prep if upstream publishes signatures. [x]: Spec use %global instead of %define unless justified. ===== EXTRA items ===== Generic: [!]: Spec file according to URL is the same as in SRPM. Note: Spec file as given by url is not the same as in SRPM (see attached diff). See: (this test has no URL) [x]: Rpmlint is run on debuginfo package(s). Note: There are rpmlint messages (see attachment). [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. Rpmlint ------- Cannot parse rpmlint output: Rpmlint (debuginfo) ------------------- Cannot parse rpmlint output: Rpmlint (installed packages) ---------------------------- ============================ rpmlint session starts ============================ rpmlint: 2.4.0 configuration: /usr/lib/python3.11/site-packages/rpmlint/configdefaults.toml /etc/xdg/rpmlint/fedora-legacy-licenses.toml /etc/xdg/rpmlint/fedora-spdx-licenses.toml /etc/xdg/rpmlint/fedora.toml /etc/xdg/rpmlint/scoring.toml /etc/xdg/rpmlint/users-groups.toml /etc/xdg/rpmlint/warn-on-functions.toml checks: 31, packages: 4 llvm-bolt.x86_64: W: position-independent-executable-suggested /usr/bin/llvm-bolt llvm-bolt.x86_64: W: no-manual-page-for-binary llvm-bolt llvm-bolt.x86_64: W: no-manual-page-for-binary llvm-boltdiff llvm-bolt.x86_64: W: no-manual-page-for-binary perf2bolt llvm-bolt.x86_64: W: no-documentation llvm-bolt-debuginfo.x86_64: W: invalid-license Apache-2.0-WITH-LLVM-exception llvm-bolt-debugsource.x86_64: W: invalid-license Apache-2.0-WITH-LLVM-exception llvm-bolt.x86_64: W: invalid-license Apache-2.0-WITH-LLVM-exception llvm-bolt-doc.noarch: W: invalid-license Apache-2.0-WITH-LLVM-exception 4 packages and 0 specfiles checked; 0 errors, 9 warnings, 0 badness; has taken 4.5 s Source checksums ---------------- https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.0/llvm-project-15.0.0.src.tar.xz.sig : CHECKSUM(SHA256) this package : 593ee43238f847f66a6c9e3d2440868d194af8292c99a7e906e59a32691d2048 CHECKSUM(SHA256) upstream package : 593ee43238f847f66a6c9e3d2440868d194af8292c99a7e906e59a32691d2048 https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.0/llvm-project-15.0.0.src.tar.xz : CHECKSUM(SHA256) this package : caaf8100365b6ebafc39fea803e902ca3ff38b4d5327b9927097808d32964db7 CHECKSUM(SHA256) upstream package : caaf8100365b6ebafc39fea803e902ca3ff38b4d5327b9927097808d32964db7 Requires -------- llvm-bolt (rpmlib, GLIBC filtered): ld-linux-x86-64.so.2()(64bit) libc.so.6()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgcc_s.so.1(GCC_3.3)(64bit) libm.so.6()(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libstdc++.so.6(CXXABI_1.3.11)(64bit) libstdc++.so.6(CXXABI_1.3.13)(64bit) libstdc++.so.6(CXXABI_1.3.3)(64bit) libstdc++.so.6(CXXABI_1.3.5)(64bit) libtinfo.so.6()(64bit) libz.so.1()(64bit) libz.so.1(ZLIB_1.2.0)(64bit) rtld(GNU_HASH) llvm-bolt-doc (rpmlib, GLIBC filtered): llvm-bolt llvm-bolt-debuginfo (rpmlib, GLIBC filtered): llvm-bolt-debugsource (rpmlib, GLIBC filtered): Provides -------- llvm-bolt: llvm-bolt llvm-bolt(x86-64) llvm-bolt-doc: llvm-bolt-doc llvm-bolt-debuginfo: debuginfo(build-id) llvm-bolt-debuginfo llvm-bolt-debuginfo(x86-64) llvm-bolt-debugsource: llvm-bolt-debugsource llvm-bolt-debugsource(x86-64) Diff spec file in url and in SRPM --------------------------------- --- /home/benson/Projects/FedoraPackaging/reviews/llvm-bolt/2124479-llvm-bolt/srpm/llvm-bolt.spec 2022-10-24 06:22:33.920460480 +0300 +++ /home/benson/Projects/FedoraPackaging/reviews/llvm-bolt/2124479-llvm-bolt/srpm-unpacked/llvm-bolt.spec 2022-10-04 12:40:02.000000000 +0300 @@ -37,5 +37,4 @@ BuildRequires: llvm-test = %{version} BuildRequires: python3-lit -BuildRequires: python3-psutil BuildRequires: clang BuildRequires: lld @@ -47,5 +46,5 @@ ExcludeArch: s390x ppc64le i686 -# As hinted by bolt documentation +# As hinted bu bolt documentation Recommends: gperftools-devel @@ -56,4 +55,18 @@ execution profile gathered by sampling profiler, such as Linux `perf` tool. +%package static +Summary: BOLT static files +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description static +BOLT static files. + +%package devel +Summary: BOLT development files +Requires: %{name}-static%{?_isa} = %{version}-%{release} + +%description devel +BOLT development files. + %package doc Summary: Documentation for BOLT @@ -169,9 +182,9 @@ -DLLVM_INCLUDE_TESTS:BOOL=ON \ -DBUILD_SHARED_LIBS:BOOL=OFF \ - -DLLVM_LINK_LLVM_DYLIB:BOOL=OFF \ + -DLLVM_LINK_LLVM_DYLIB:BOOL=OFF \ %if 0%{?__isa_bits} == 64 - -DLLVM_LIBDIR_SUFFIX=64 \ + -DLLVM_LIBDIR_SUFFIX=64 \ %else - -DLLVM_LIBDIR_SUFFIX= \ + -DLLVM_LIBDIR_SUFFIX= \ %endif -DBOLT_INCLUDE_TESTS:BOOL=ON \ @@ -180,17 +193,12 @@ -DLLVM_EXTERNAL_LIT=%{_bindir}/lit -# Set LD_LIBRARY_PATH now because we skip rpath generation and the build uses -# some just built libraries. export LD_LIBRARY_PATH=%{_builddir}/%{bolt_srcdir}/bolt/%{_vpath_builddir}/%{_lib} -# Set DESTDIR now because bolt sneaks in an install step in its build step. export DESTDIR=%{buildroot} %cmake_build + %install %cmake_install -# We don't ship libLLVMBOLT*.a -rm -f %{buildroot}%{_libdir}/libLLVMBOLT*.a - # There currently is not support upstream for building html doc from BOLT install -d %{buildroot}%{_pkgdocdir} @@ -224,4 +232,11 @@ %cmake_build --target check-bolt +#%ifarch x86_64 +#for rt in libbolt_rt_instr libbolt_rt_hugify libbolt_rt_instr_osx +#do +# rm %{buildroot}/usr/lib/${rt}.a +#done +#%endif + %files %license LICENSE.TXT @@ -230,4 +245,5 @@ %{_bindir}/perf2bolt +%files static %ifarch x86_64 %{_libdir}/libbolt_rt_hugify.a @@ -235,5 +251,14 @@ %{_libdir}/libbolt_rt_instr_osx.a %endif +%{_libdir}/libLLVMBOLTCore.a +%{_libdir}/libLLVMBOLTPasses.a +%{_libdir}/libLLVMBOLTProfile.a +%{_libdir}/libLLVMBOLTRewrite.a +%{_libdir}/libLLVMBOLTRuntimeLibs.a +%{_libdir}/libLLVMBOLTTargetAArch64.a +%{_libdir}/libLLVMBOLTTargetX86.a +%{_libdir}/libLLVMBOLTUtils.a +%files devel %files doc Generated by fedora-review 0.9.0 (6761b6c) last change: 2022-08-23 Command line :/usr/bin/fedora-review -b 2124479 Buildroot used: fedora-rawhide-x86_64 Active plugins: Generic, Shell-api, C/C++ Disabled plugins: PHP, Ruby, Haskell, Perl, Java, R, SugarActivity, fonts, Python, Ocaml Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH Comments: a) Please ensure the spec file that is uploaded is the same as the one in the SRPM which seems ok b) May wish to comment in the spec file what the patches standalone, test and lib64 do, the names are not very descriptive, but this is not essential c) The build log has the warning: lit: /builddir/build/BUILD/llvm-project-15.0.0.src/bolt/test/lit.cfg.py:50: warning: Setting a timeout per test not supported. Requires the Python psutil module but it could not be found. Try installing it via pip or via your operating system's package manager. Some tests will be skipped. The spec file does not contain: BuildRequires: python3-psutil d) Still testing, but with the above expect it should be ok.
@benson_muite: Update submitted at: https://sergesanspaille.fedorapeople.org/llvm-bolt.spec and https://sergesanspaille.fedorapeople.org/llvm-bolt-15.0.0-1.fc36.src.rpm Associated build: https://koji.fedoraproject.org/koji/taskinfo?taskID=93570551 a) done, sorry for the noise b) done, that's indeed better like this, even for my future self c) done
Thanks. Approved.
(fedscm-admin): The Pagure repository was created at https://src.fedoraproject.org/rpms/llvm-bolt
Package built for rawhide, thanks a lot Benson Muite for the reviews o/