Bug 2480195 - Review Request: xrt - AMD Xilinx Runtime (XRT)
Summary: Review Request: xrt - AMD Xilinx Runtime (XRT)
Keywords:
Status: POST
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Tom.Rix
QA Contact: Fedora Extras Quality Assurance
URL: https://github.com/Xilinx/XRT
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-05-20 16:04 UTC by Soren Soe
Modified: 2026-09-03 20:29 UTC (History)
3 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Type: ---
Embargoed:
Tom.Rix: fedora-review+


Attachments (Terms of Use)

Description Soren Soe 2026-05-20 16:04:33 UTC
Spec URL: 
https://raw.githubusercontent.com/stsoe/XRT-DEBIAN/2.21.75/src/fedora/xrt.spec

SRPM URL:
https://raw.githubusercontent.com/stsoe/XRT-DEBIAN/2.21.75/src/fedora/xrt-2.21.75-1.fc42.src.rpm


Description: 
AMD Xilinx Runtime (XRT) provides a runtime environment for AMD Xilinx
Alveo FPGAs and AMD Ryzen NPUs.  It includes core runtime
libraries, Python bindings, development files, and utilities for
managing and programming AMD Xilinx devices.

Fedora Account System Username: 
stsoe

Comment 1 Tom.Rix 2026-05-27 23:18:57 UTC
Some broad strokes.

# SPDX-License-Identifier: Apache-2.0
# Spec layout mirrors src/debian/control and src/debian/rules.
# Assisted-by:    Generic LLM chatbot

Fedora's default license is MIT, Apache is fine.
Remove the next two lines, no one will have the context of the debian package.
Assisted-by: and any other signoff should be in the git commit log and can be done later.

Release:        1%{?dist}

consider using the 
Release: %autorelease
and later
%changelog
%autochangelog
 
Summary:        AMD Xilinx FPGA and ACAP runtime (XRT)

I usually copy the 'about' section of the github page
consider using
Summary:        Run Time for AIE and FPGA based platforms

License:        Apache-2.0 AND MIT AND MIT-Khronos-old

# License breakdown:
# - Core XRT runtime: Apache-2.0
# - AIE binary utilities: MIT
# - Core XRT OpenCL library: Apache-2.0 and MIT-Khronos-old

Review the fedorareview output file licensecheck.
A lot of licenses were not captured in the license: tag
The breakdown of the licenses is too brief.
There are many license.txt or similar files not captured in the later %license in file
If code is not used, remove it in the %prep stage to make the license review easier.

Patch102:       license.patch

remove this patch.
The full licenses are fine and any license changes should be done in the upstream not in distro patches.

# Debian patches
# Fedora patches

These are all fedora patches now, these comments are not needed

Patch0:         6.18.patch
Patch1:         6.19.patch

Patches should have a comment on what the patch does and if possible reference the upstream issue or pr
this is a general problem.
I find using git format patches more helpful as any updated to the package will require rebasing.
consider reworking these patches to be git friendly.

# Man pages not installed by CMake
Source10:       aiebu-asm.1
Source11:       aiebu-dump.1

How are these man pages generated ?
I see from aiebu-asm

SEE ALSO
       The  full  documentation  for  aiebu-asm is maintained as a Texinfo manual.  If the info and aiebu-asm programs are properly in‐
       stalled at your site, the command

              info aiebu-asm

they reference info, which afaik isn't in this package so these man pages will confuse users.

ExclusiveArch:  aarch64 x86_64

Does this package and all its features work on aarch64 ?
hip i know is only x86_64.

BuildRequires:  cmake >= 3.16

only 1 version of cmake, this is not needed.

The reset of the buildrequires looks autogenerated.
review what is actually needed and put then in a better order.

The packages are a matter of taste.
Mine is to limit the packages
I think the xrt-utils-* could be collapsed to the main package.
Similar for xrt-npu package.

For consistency with ROCm the programming interfaces opencl and hip should be
xrt-opencl, xrt-opencl-devel and xrt-hip and xrt-hip-devel

%cmake \
  -DCMAKE_BUILD_TYPE=Release \

Release should change to RelWithDebInfo

%check

does this really work without hw ?

%files
...
%{_libdir}/libxrt++.so.*

This globbing it too aggressive.
At least the major so version needs to be captured.
consider something like
https://src.fedoraproject.org/rpms/rocclr/blob/rawhide/f/rocclr.spec#_440

Comment 2 Soren Soe 2026-06-25 21:34:12 UTC
The latest COPR build https://copr.fedorainfracloud.org/coprs/stsoe/xrt/build/10650329/ addresses most of the mentioned issues. 

What I am unsure about is the license breakdown.  I removed all files under "Unknown or generated" that ware not needed, the remaining ones are needed and covered by what I listed under the breakdown.   I have made upstream changes to fix some of the missing or incorrect licenses also.

I did not combine or rename any packages, as mentioned it is a matter of choice and current packages reflect what we are doing for Debian.  If a must, then of course this can be changed.   However, I do not feel that utils* can be collapsed to main package; the main package is all that needed to for run time. 

The %check runs user space tests, there are no HW tests. 

Please advise what further changes are required.  Thank you for your feedback.

Comment 3 Soren Soe 2026-06-26 15:27:08 UTC
(In reply to Soren Soe from comment #2)
> The latest COPR build
> https://copr.fedorainfracloud.org/coprs/stsoe/xrt/build/10650329/ addresses
> most of the mentioned issues. 
> 
> What I am unsure about is the license breakdown.  I removed all files under
> "Unknown or generated" that ware not needed, the remaining ones are needed
> and covered by what I listed under the breakdown.   I have made upstream
> changes to fix some of the missing or incorrect licenses also.
> 
> I did not combine or rename any packages, as mentioned it is a matter of
> choice and current packages reflect what we are doing for Debian.  If a
> must, then of course this can be changed.   However, I do not feel that
> utils* can be collapsed to main package; the main package is all that needed
> to for run time. 
> 
> The %check runs user space tests, there are no HW tests. 
> 
> Please advise what further changes are required.  Thank you for your
> feedback.

Forgot to mention that the man pages are copied from Debian.  The reference to info is the Linux info command. I can remove the man pages if necessary.

Comment 4 Tom.Rix 2026-06-28 15:00:02 UTC
Please add the updated spec and srpm this bz. copr builds are temporary, use a url that will be around for a while.
Use Spec/SRPM URL: <url to>

To be useful, this package should do something.
I likely have the hw needed to run this package, could you recommend something maybe using the lemonade server ? 

here is what i get on strix halo, is aie2p supported by xrt runtime ?

*******                  
Agent 3                  
*******                  
  Name:                    aie2p                              
  Uuid:                    AIE-XX                             
  Marketing Name:          RyzenAI-npu5                       
  Vendor Name:             AMD                                
  Feature:                 AGENT_DISPATCH                     
  Profile:                 BASE_PROFILE                       
  Float Round Mode:        NEAR                               
  Max Queue Number:        1(0x1)                             
  Queue Min Size:          64(0x40)                           
  Queue Max Size:          64(0x40)                           
  Queue Type:              SINGLE                             
  Node:                    0                                  
  Device Type:             DSP                                
  Cache Info:              
    L2:                      2048(0x800) KB                     
    L3:                      32768(0x8000) KB                   
  Chip ID:                 0(0x0)                             
  ASIC Revision:           0(0x0)                             
  Cacheline Size:          0(0x0)                             
  Max Clock Freq. (MHz):   0                                  
  BDFID:                   0                                  
  Internal Node ID:        0                                  
  Compute Unit:            0                                  
  SIMDs per CU:            0                                  
  Shader Engines:          0                                  
  Shader Arrs. per Eng.:   0                                  
  WatchPts on Addr. Ranges:0                                  
  Memory Properties:       
  Features:                AGENT_DISPATCH
  Pool Info:               
    Pool 1                   
      Segment:                 GLOBAL; FLAGS: KERNARG, COARSE GRAINED
      Size:                    131151216(0x7d13570) KB            
      Allocatable:             TRUE                               
      Alloc Granule:           4KB                                
      Alloc Recommended Granule:4KB                                
      Alloc Alignment:         4KB                                
      Accessible by all:       TRUE                               
    Pool 2                   
      Segment:                 GLOBAL; FLAGS: COARSE GRAINED      
      Size:                    65536(0x10000) KB                  
      Allocatable:             TRUE                               
      Alloc Granule:           4KB                                
      Alloc Recommended Granule:0KB                                
      Alloc Alignment:         4KB                                
      Accessible by all:       TRUE                               
    Pool 3                   
      Segment:                 GLOBAL; FLAGS: COARSE GRAINED      
      Size:                    131151216(0x7d13570) KB            
      Allocatable:             TRUE                               
      Alloc Granule:           4KB                                
      Alloc Recommended Granule:4KB                                
      Alloc Alignment:         4KB                                
      Accessible by all:       TRUE                               
  ISA Info:                
*** Done ***

Comment 5 Soren Soe 2026-07-21 14:59:10 UTC
Not sure where to add a URL or SRPM when there is no server hosting XRT?  Anyway, here is a link:
- https://github.com/stsoe/XRT-DEBIAN/tree/2.21.75/src/fedora
- https://github.com/stsoe/XRT-DEBIAN/blob/2.21.75/src/fedora/xrt-2.21.75-1.fc42.src.rpm

The current packages created from the SRPM are functional.  Minimum install these packages:

- xrt-2.21.75-1.fc42.x86_64.rpm
- xrt-npu-2.21.75-1.fc42.x86_64.rpm
- xrt-utils-2.21.75-1.fc42.x86_64.rpm

# Examine system and install
% xrt-smi examine

# Validate the system, follow instructions to install binary validation archive
% xrt-smi validate

AIE2P is supported.

Comment 6 Fedora Review Service 2026-07-21 14:59:52 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10758829
(failed)

Build log:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2480195-xrt/srpm-builds/10758829/builder-live.log.gz

Please make sure the package builds successfully at least for Fedora Rawhide.

- If the build failed for unrelated reasons (e.g. temporary network
  unavailability), please ignore it.
- If the build failed because of missing BuildRequires, please make sure they
  are listed in the "Depends On" field


---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 9 Fedora Review Service 2026-07-21 16:03:10 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10758907
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2480195-xrt/fedora-rawhide-x86_64/10758907-xrt/fedora-review/review.txt

Found issues:

- License file LICENSE.aie-rt is not marked as %license
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/#_license_text
- Not a valid SPDX expression 'Apache-2.0 AND MIT AND Khronos'.
  Read more: https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_1
- Upstream MD5sum check error, diff is in /var/lib/copr-rpmbuild/results/xrt/diff.txt
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/SourceURL/

Please know that there can be false-positives.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 10 Fedora Review Service 2026-07-21 16:08:34 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10758922
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2480195-xrt/fedora-rawhide-x86_64/10758922-xrt/fedora-review/review.txt

Found issues:

- License file LICENSE.aie-rt is not marked as %license
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/#_license_text
- Not a valid SPDX expression 'Apache-2.0 AND MIT AND Khronos'.
  Read more: https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_1
- Upstream MD5sum check error, diff is in /var/lib/copr-rpmbuild/results/xrt/diff.txt
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/SourceURL/

Please know that there can be false-positives.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 11 Tom.Rix 2026-08-07 18:49:04 UTC
I am going through the new specfile looking for changes I requested.
This request was not changed.

> Patch0:         6.18.patch
> Patch1:         6.19.patch

> Patches should have a comment on what the patch does and if possible reference the upstream issue or pr
> this is a general problem.
> I find using git format patches more helpful as any updated to the package will require rebasing.
> consider reworking these patches to be git friendly.

Consider using this prompt to generate the comments, and for you to verify them
https://fedoraproject.org/wiki/SIGs/AI-ML#Adding_comments_to_specfile_patches

Comment 12 Soren Soe 2026-08-07 21:27:00 UTC
(In reply to Tom.Rix from comment #11)
> I am going through the new specfile looking for changes I requested.
> This request was not changed.
> 
> > Patch0:         6.18.patch
> > Patch1:         6.19.patch
> 
> > Patches should have a comment on what the patch does and if possible reference the upstream issue or pr
> > this is a general problem.
> > I find using git format patches more helpful as any updated to the package will require rebasing.
> > consider reworking these patches to be git friendly.
> 
> Consider using this prompt to generate the comments, and for you to verify
> them
> https://fedoraproject.org/wiki/SIGs/AI-ML#Adding_comments_to_specfile_patches

The linked spec has been updated with patch comments.

Comment 13 Tom.Rix 2026-08-11 13:20:08 UTC
This is a review *template*. Besides handling the [ ]-marked tests you are
also supposed to fix the template before pasting into bugzilla:
- Add issues you find to the list of issues on top. If there isn't such
  a list, create one.
- Add your own remarks to the template checks.
- Add new lines marked [!] or [?] when you discover new things not
  listed by fedora-review.
- Change or remove any text in the template which is plain wrong. In this
  case you could also file a bug against fedora-review
- Remove the "[ ] Manual check required", you will not have any such lines
  in what you paste.
- Remove attachments which you deem not really useful (the rpmlint
  ones are mandatory, though)
- Remove this text



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

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

Look at xrt/README.rst
.. image:: https://travis-ci.org/Xilinx/XRT.svg?branch=master
    :target: https://travis-ci.org/Xilinx/XRT
These links are broken.

Why do subproject carry their own licenses ?

Why not combine -utils into the main and npu packages ?
Otherwise, this naming is awkward -npu and -utils-npu, should be -npu and -npu-utils

mv -f %{buildroot}%{_prefix}/python/xbtop.py %{buildroot}%{_bindir}/xbtop 2>/dev/null || :
mv -f %{buildroot}%{python3_sitearch}/xbtop.py %{buildroot}%{_bindir}/xbtop 2>/dev/null || :
Why 2 commands? remove the wrong one.

Issues:
=======
- 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.
  Note: License file LICENSE.aie-rt is not marked as %license
  See: https://docs.fedoraproject.org/en-US/packaging-
  guidelines/LicensingGuidelines/#_license_text
- The License field must be a valid SPDX expression.
  Note: Not a valid SPDX expression 'Apache-2.0 AND MIT AND Khronos'.
  See: https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_1

Maybe 
https://spdx.org/licenses/MIT-Khronos-old.html

- Sources used to build the package match the upstream source, as provided
  in the spec URL.
  Note: Upstream MD5sum check error, diff is in /sfs/fedora-
  review/xrt/review-xrt/diff.txt
  See: https://docs.fedoraproject.org/en-US/packaging-guidelines/SourceURL/



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

C/C++:
[x]: Package does not contain kernel modules.
[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]: 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]: ldconfig not called in %post and %postun for Fedora 28 and later.
[x]: Package does not contain any libtool archives (.la)
[x]: Package contains no static executables.
[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.
[ ]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "Unknown or generated", "Apache License 2.0", "Apache License
     2.0 and/or GNU General Public License, Version 2", "Khronos License",
     "MIT License", "GNU General Public License, Version 2", "Apache
     License 2.0 and/or GNU General Public License v2.0 or later [obsolete
     FSF postal address (Temple Place)]", "*No copyright* MIT License",
     "BSD 3-Clause License", "*No copyright* Apache License 2.0", "Apache
     License". 144 files have unknown license. Detailed output of
     licensecheck in /sfs/fedora-review/xrt/review-xrt/licensecheck.txt
[!]: License file installed when any subpackage combination is installed.

See question about License: in the subpackages above.

[x]: If the package is under multiple licenses, the licensing breakdown
     must be documented in the spec.
[x]: Package must own all directories that it creates.
     Note: Directories without known owners: /usr/lib64/python3.15/site-
     packages, /usr/lib/.build-id/fc, /usr/lib64/python3.15
known problem.
[x]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries or specifies bundled libraries
     with Provides: bundled(<libname>) if unbundling is not possible.
[x]: Changelog in prescribed format.
[!]: Sources contain only permissible code or content.

ELF binaries found in upstream tarball:
  1. .../aie-rt/driver/tests/utest/elf_files/aieml_elfs/passthrough
  2. .../aie-rt/driver/tests/utest/elf_files/aie_elfs/passthrough
  3. .../aie-rt/driver/tests/utest/elf_files/aie_elfs/overlap_elf
  4. .../aie-rt/driver/tests/utest/elf_files/aie_elfs/large_elf
  5. .../aie-rt/driver/tests/utest/elf_files/aie_elfs/mmul

Remove these in %prep

[-]: 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]: 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 requires other packages for directories it uses.
[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]: 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 9014 bytes in 2 files.
[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]: Package contains BR: python2-devel or python3-devel
[x]: Packages MUST NOT have dependencies (either build-time or runtime) on
     packages named with the unversioned python- prefix unless no properly
     versioned package exists. Dependencies on Python packages instead MUST
     use names beginning with python2- or python3- as appropriate.
[x]: Python packages must not contain %{pythonX_site(lib|arch)}/* in %files
[x]: Binary eggs must be removed in %prep

===== 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.

same as below

[x]: Final provides and requires are sane (see attachments).
[!]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in xrt-npu
     , python3-xrt , xrt-utils , xrt-utils-npu , xrt-utils-alveo
[x]: Package functions as described.
[x]: Latest version is packaged.
[!]: Package does not include license text files separate from upstream.
license.patch

You can not in the package change the license of the upstream source.

[!]: Patches link to upstream bugs/comments/lists or are otherwise
     justified.

See earlier comment in bz.

[-]: Sources are verified with gpgverify first in %prep if upstream
     publishes signatures.
     Note: gpgverify is not used.
[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]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: The placement of pkgconfig(.pc) files are correct.
[x]: Sources can be downloaded from URI in Source: tag
[x]: SourceX is a working URL.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[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
-------
Checking: xrt-2.21.75-1.fc45.x86_64.rpm
          xrt-npu-2.21.75-1.fc45.x86_64.rpm
          python3-xrt-2.21.75-1.fc45.x86_64.rpm
          xrt-devel-2.21.75-1.fc45.x86_64.rpm
          xrt-utils-2.21.75-1.fc45.x86_64.rpm
          xrt-utils-npu-2.21.75-1.fc45.x86_64.rpm
          xrt-utils-alveo-2.21.75-1.fc45.x86_64.rpm
          xrt-2.21.75-1.fc45.src.rpm
============================ rpmlint session starts ============================
rpmlint: 2.9.0
configuration:
    /usr/lib/python3.14/site-packages/rpmlint/configdefaults.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
rpmlintrc: [PosixPath('/tmp/tmp6hw171r9')]
checks: 32, packages: 8

xrt-utils.x86_64: W: non-conffile-in-etc /etc/OpenCL/vendors/amdxrt.icd
python3-xrt.x86_64: W: no-manual-page-for-binary xbtop
xrt-utils.x86_64: W: no-manual-page-for-binary xrt-smi
xrt-utils-alveo.x86_64: W: no-manual-page-for-binary xbflash.qspi
xrt-utils-npu.x86_64: W: no-manual-page-for-binary xrt-runner
python3-xrt.x86_64: W: no-documentation
xrt-devel.x86_64: W: no-documentation
xrt.src: W: invalid-license Khronos
xrt.x86_64: W: invalid-license Khronos
xrt-devel.x86_64: W: invalid-license Khronos
xrt-utils.x86_64: W: invalid-license Khronos
xrt-utils-alveo.x86_64: W: invalid-license Khronos
xrt-utils-npu.x86_64: W: invalid-license Khronos
 8 packages and 0 specfiles checked; 0 errors, 13 warnings, 78 filtered, 0 badness; has taken 31.3 s 




Rpmlint (debuginfo)
-------------------
Checking: xrt-utils-npu-debuginfo-2.21.75-1.fc45.x86_64.rpm
          xrt-npu-debuginfo-2.21.75-1.fc45.x86_64.rpm
          xrt-debuginfo-2.21.75-1.fc45.x86_64.rpm
          xrt-utils-alveo-debuginfo-2.21.75-1.fc45.x86_64.rpm
          xrt-utils-debuginfo-2.21.75-1.fc45.x86_64.rpm
============================ rpmlint session starts ============================
rpmlint: 2.9.0
configuration:
    /usr/lib/python3.14/site-packages/rpmlint/configdefaults.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
rpmlintrc: [PosixPath('/tmp/tmpx7rops2l')]
checks: 32, packages: 5

xrt-debuginfo.x86_64: W: invalid-license Khronos
xrt-utils-alveo-debuginfo.x86_64: W: invalid-license Khronos
xrt-utils-debuginfo.x86_64: W: invalid-license Khronos
xrt-utils-npu-debuginfo.x86_64: W: invalid-license Khronos
 5 packages and 0 specfiles checked; 0 errors, 4 warnings, 64 filtered, 0 badness; has taken 6.4 s 





Rpmlint (installed packages)
----------------------------
============================ rpmlint session starts ============================
rpmlint: 2.9.0
configuration:
    /usr/lib/python3.15/site-packages/rpmlint/configdefaults.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: 32, packages: 12

xrt-utils.x86_64: W: non-conffile-in-etc /etc/OpenCL/vendors/amdxrt.icd
xrt-utils-npu.x86_64: W: no-manual-page-for-binary xrt-runner
xrt-utils.x86_64: W: no-manual-page-for-binary xrt-smi
xrt-utils-alveo.x86_64: W: no-manual-page-for-binary xbflash.qspi
python3-xrt.x86_64: W: no-manual-page-for-binary xbtop
xrt-devel.x86_64: W: no-documentation
python3-xrt.x86_64: W: no-documentation
xrt.x86_64: W: invalid-license Khronos
xrt-devel.x86_64: W: invalid-license Khronos
xrt-utils-npu.x86_64: W: invalid-license Khronos
xrt-utils-npu-debuginfo.x86_64: W: invalid-license Khronos
xrt-utils-alveo-debuginfo.x86_64: W: invalid-license Khronos
xrt-utils.x86_64: W: invalid-license Khronos
xrt-utils-alveo.x86_64: W: invalid-license Khronos
xrt-utils-debuginfo.x86_64: W: invalid-license Khronos
xrt-debuginfo.x86_64: W: invalid-license Khronos
 12 packages and 0 specfiles checked; 0 errors, 16 warnings, 158 filtered, 0 badness; has taken 5.4 s 



Unversioned so-files
--------------------
python3-xrt: /usr/lib64/python3.15/site-packages/pyxrt.cpython-315-x86_64-linux-gnu.so

Source checksums
----------------
https://github.com/Xilinx/XRT/releases/download/2.21.75/2.21.75.tar.gz#/xrt-2.21.75.tar.gz :
  CHECKSUM(SHA256) this package     : 299c15e991034f2f32adadd03ac912d6ef8d4bad3a99db632bd17c7a25dbaf6e
  CHECKSUM(SHA256) upstream package : 30343a3c74103ac5d5016525d6f051601b197855c54e980f8d6623bfc6f3d229
diff -r also reports differences


Requires
--------
xrt (rpmlib, GLIBC filtered):
    libc.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.3.1)(64bit)
    libgcc_s.so.1(GCC_3.4)(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.15)(64bit)
    libstdc++.so.6(CXXABI_1.3.2)(64bit)
    libstdc++.so.6(CXXABI_1.3.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.5)(64bit)
    libstdc++.so.6(CXXABI_1.3.7)(64bit)
    libstdc++.so.6(CXXABI_1.3.9)(64bit)
    libuuid.so.1()(64bit)
    libuuid.so.1(UUID_1.0)(64bit)
    libxrt++.so.2()(64bit)
    libxrt_coreutil.so.2()(64bit)
    rtld(GNU_HASH)

xrt-npu (rpmlib, GLIBC filtered):
    libc.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.3.1)(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.15)(64bit)
    libstdc++.so.6(CXXABI_1.3.2)(64bit)
    libstdc++.so.6(CXXABI_1.3.5)(64bit)
    libstdc++.so.6(CXXABI_1.3.9)(64bit)
    libuuid.so.1()(64bit)
    libuuid.so.1(UUID_1.0)(64bit)
    libxdp_core.so.2()(64bit)
    libxrt_core.so.2()(64bit)
    libxrt_coreutil.so.2()(64bit)
    rtld(GNU_HASH)
    xrt(x86-64)

python3-xrt (rpmlib, GLIBC filtered):
    /usr/bin/python3
    libc.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.3.1)(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.15)(64bit)
    libstdc++.so.6(CXXABI_1.3.2)(64bit)
    libstdc++.so.6(CXXABI_1.3.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.5)(64bit)
    libstdc++.so.6(CXXABI_1.3.9)(64bit)
    libuuid.so.1()(64bit)
    libuuid.so.1(UUID_1.0)(64bit)
    libxrt_coreutil.so.2()(64bit)
    python(abi)
    python3(x86-64)
    rtld(GNU_HASH)
    xrt(x86-64)

xrt-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    cmake-filesystem
    libuuid-devel
    libxilinxopencl.so.2()(64bit)
    libxrt++.so.2()(64bit)
    libxrt_core.so.2()(64bit)
    libxrt_coreutil.so.2()(64bit)
    libxrt_hip.so.2()(64bit)
    opencl-headers
    python3-xrt(x86-64)
    rocm-hip-devel(x86-64)
    xrt(x86-64)
    xrt-npu(x86-64)

xrt-utils (rpmlib, GLIBC filtered):
    libboost_filesystem.so.1.90.0()(64bit)
    libboost_program_options.so.1.90.0()(64bit)
    libc.so.6()(64bit)
    libcrypto.so.4()(64bit)
    libcrypto.so.4(OPENSSL_4.0.0)(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.3.1)(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.15)(64bit)
    libstdc++.so.6(CXXABI_1.3.2)(64bit)
    libstdc++.so.6(CXXABI_1.3.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.5)(64bit)
    libstdc++.so.6(CXXABI_1.3.8)(64bit)
    libstdc++.so.6(CXXABI_1.3.9)(64bit)
    libuuid.so.1()(64bit)
    libuuid.so.1(UUID_1.0)(64bit)
    libxrt_coreutil.so.2()(64bit)
    opencl-filesystem
    python3(x86-64)
    rtld(GNU_HASH)
    xrt(x86-64)

xrt-utils-npu (rpmlib, GLIBC filtered):
    libc.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.3.1)(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.13)(64bit)
    libstdc++.so.6(CXXABI_1.3.15)(64bit)
    libstdc++.so.6(CXXABI_1.3.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.5)(64bit)
    libstdc++.so.6(CXXABI_1.3.9)(64bit)
    libxrt_coreutil.so.2()(64bit)
    rtld(GNU_HASH)
    xrt-npu(x86-64)
    xrt-utils(x86-64)

xrt-utils-alveo (rpmlib, GLIBC filtered):
    libboost_program_options.so.1.90.0()(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.1)(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.9)(64bit)
    libxrt_coreutil.so.2()(64bit)
    rtld(GNU_HASH)
    xrt-utils(x86-64)



Provides
--------
xrt:
    libxilinxopencl.so.2()(64bit)
    libxrt++.so.2()(64bit)
    libxrt_core.so.2()(64bit)
    libxrt_coreutil.so.2()(64bit)
    libxrt_hip.so.2()(64bit)
    xrt
    xrt(x86-64)

xrt-npu:
    libxdp_aie_profile_plugin.so.2()(64bit)
    libxdp_aie_trace_plugin.so.2()(64bit)
    libxdp_core.so.2()(64bit)
    libxdp_ml_timeline_plugin.so.2()(64bit)
    libxdp_native_plugin.so.2()(64bit)
    libxdp_user_plugin.so.2()(64bit)
    libxrt_driver_xdna.so.2()(64bit)
    xrt-npu
    xrt-npu(x86-64)

python3-xrt:
    python-xrt
    python3-xrt
    python3-xrt(x86-64)
    python3.15-xrt

xrt-devel:
    cmake(xrt)
    pkgconfig(xrt)
    xrt-devel
    xrt-devel(x86-64)

xrt-utils:
    xrt-utils
    xrt-utils(x86-64)

xrt-utils-npu:
    xrt-utils-npu
    xrt-utils-npu(x86-64)

xrt-utils-alveo:
    xrt-utils-alveo
    xrt-utils-alveo(x86-64)



Generated by fedora-review 0.11.0 (05c5b26) last change: 2025-11-29
Command line :/usr/bin/fedora-review -n xrt
Buildroot used: fedora-rawhide-x86_64
Active plugins: Generic, Python, C/C++, Shell-api
Disabled plugins: PHP, R, Haskell, Perl, SugarActivity, fonts, Java, Ocaml
Disabled flags: EXARCH, EPEL6, EPEL7, DISTTAG, BATCH

Comment 14 Soren Soe 2026-08-18 16:01:04 UTC
Package refactoring for Fedora

- Remove Alveo
- Install all binary build artifacts into main package
- Keep devel package
- Remove utils packages
- Drop OpenCL bindings for xrt_coreutil, not supported on NPU any way
- Remove stray ELF files in %prep
- Remove license.patch

SRPM and SPEC file updated in links.

Comment 15 Tom.Rix 2026-08-18 23:32:53 UTC
When updating the spec and srpm, it is necessary to add the tags
Spec URL: <something>
SPRM URL: <somethign>

everytime, this triggers the automatic fedora reviewer and lets the reviewer know where the update is.
going with maybe the correct url from above, i get these errors

- 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.
  Note: License file LICENSE.aie-rt is not marked as %license
  See: https://docs.fedoraproject.org/en-US/packaging-
  guidelines/LicensingGuidelines/#_license_text

Please fix

- Sources used to build the package match the upstream source, as provided
  in the spec URL.
  Note: Upstream MD5sum check error, diff is in /sfs/fedora-
  review/xrt/review-xrt/diff.txt
  See: https://docs.fedoraproject.org/en-US/packaging-guidelines/SourceURL/

This is important. make sure the upstream IS what is in the src tarball
Anything not needed from the upstream src tarball can be rm-ed in %prep.

[ ]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "Unknown or generated", "Apache License 2.0", "Apache License
     2.0 and/or GNU General Public License, Version 2", "Khronos License",
     "MIT License", "GNU General Public License, Version 2", "Apache
     License 2.0 and/or GNU General Public License v2.0 or later [obsolete
     FSF postal address (Temple Place)]", "*No copyright* MIT License",
     "BSD 3-Clause License", "*No copyright* Apache License 2.0", "Apache
     License". 144 files have unknown license. Detailed output of
     licensecheck in /sfs/fedora-review/xrt/review-xrt/licensecheck.txt

Has several licenses that are not in 

License:        Apache-2.0 AND MIT

All the licenses need to be in the License: field.
If something is not really needed and it would simplify the license, rm it in %prep

xrt-debuginfo.x86_64: W: invalid-license Khronos

Comment 16 Soren Soe 2026-08-20 02:29:58 UTC
Not sure what I should do with the license comment?

The spec has:
%files
%license %{_licensedir}/%{name}/*
%license %{_licensedir}/%{name}-npu/*

which covers license.aie-rt as installed
%install
...
install -pm 0644 xrt/XRT/src/runtime_src/aie-rt/license.txt \
   %{buildroot}%{_licensedir}/%{name}/LICENSE.aie-rt

As for the MD5, I had to repackage the upstream release tar-ball with a top-level directory prior to rpmbuild, thus the SRPM contains the repackaged tar-ball. Not sure how I ran into the problem that forced me to repackage?  This will be moot in next release where the upstream release tar-ball contains the top-level dir. 

For licenses, what do I do about dual licensed files where only one license is application for user space code and thus the packages created here?

Also, %prep has removed unused files that completely eliminates Khronos, but XRT/NOTICE still references it as XRT (without prep) includes software from Khronos.  How do I deal with this situation?  

The license review complains about a lot of files, but these have been remedied in the spec explicitly. 

I updated the to license to include GPL-2.0-only, but in reality the files with GPL-2 are dual licensed as Apache-2.0.

Spec URL: https://raw.githubusercontent.com/stsoe/XRT-DEBIAN/2.21.75/src/fedora/xrt.spec
SRPM URL: https://raw.githubusercontent.com/stsoe/XRT-DEBIAN/2.21.75/src/fedora/xrt-2.21.75-1.fc44.src.rpm

Comment 17 Fedora Review Service 2026-08-20 05:12:01 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10882883
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2480195-xrt/fedora-rawhide-x86_64/10882883-xrt/fedora-review/review.txt

Found issues:

- Upstream MD5sum check error, diff is in /var/lib/copr-rpmbuild/results/xrt/diff.txt
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/SourceURL/

Please know that there can be false-positives.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 18 Soren Soe 2026-08-30 21:53:54 UTC
Update the release to 2.25.0 with new XRT sources.
No current patches.
Misc spec changes per previous release reivew.

Spec URL: https://raw.githubusercontent.com/stsoe/XRT-DEBIAN/2.25.0/src/fedora/xrt.spec
SRPM URL: https://github.com/Xilinx/XRT/releases/download/2.25.0/xrt-2.25.0-1.fc44.src.rpm

Comment 19 Tim Flink 2026-09-01 17:39:13 UTC
[fedora-review-service-build]

Comment 20 Tom.Rix 2026-09-03 20:29:43 UTC
[ ]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "Unknown or generated", "Apache License 2.0", "Apache License
     2.0 and/or GNU General Public License, Version 2", "Khronos License",
     "GNU General Public License, Version 2", "MIT License", "Apache
     License 2.0 and/or GNU General Public License v2.0 or later [obsolete
     FSF postal address (Temple Place)]", "*No copyright* MIT License",
     "BSD 3-Clause License", "*No copyright* Apache License 2.0". 11346
     files have unknown license. Detailed output of licensecheck in
     /sfs/fedora-review/xrt/review-xrt/licensecheck.txt

BSD 3-Clause License
--------------------
xrt-2.25.0-build/xrt-2.25.0/xrt/XRT/src/runtime_src/core/common/gsl/ThirdPartyNotices.txt


THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
Do Not Translate or Localize

GSL: Guidelines Support Library incorporates third party material from the projects listed below.

-------------------------------------------------------------------------------
Software: Google Test
Owner: Google Inc.
Source URL: github.com/google/googletest
License: BSD 3 - Clause
Text:
    Copyright 2008, Google Inc.
    All rights reserved.

    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are
    met:

        * Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
        * Redistributions in binary form must reproduce the above
    copyright notice, this list of conditions and the following disclaimer
    in the documentation and/or other materials provided with the
    distribution.
        * Neither the name of Google Inc. nor the names of its
    contributors may be used to endorse or promote products derived from
    this software without specific prior written permission.

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------------------------------------------------------------------

- There is no googletest source, this is a false positive.

Khronos License
---------------
xrt-2.25.0-build/xrt-2.25.0/xrt/XRT/NOTICE

The actual Khronos code was rm-ed for
rm -rf xrt/XRT/src/include
rm -rf xrt/XRT/src/runtime_src/xocl

this is good too..


ELF binaries found in upstream tarball:
  1. .../aie-rt/driver/tests/utest/elf_files/aieml_elfs/passthrough
  2. .../aie-rt/driver/tests/utest/elf_files/aie_elfs/passthrough
  3. .../aie-rt/driver/tests/utest/elf_files/aie_elfs/overlap_elf
  4. .../aie-rt/driver/tests/utest/elf_files/aie_elfs/large_elf
  5. .../aie-rt/driver/tests/utest/elf_files/aie_elfs/mmul

these are removed.

[!]: Package does not include license text files separate from upstream.
license.patch

patches are removed, good here too.

Thanks for the update and changes
Approved.


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