Bug 6335

Summary: Review request: jellyfin - The Free Software Media System
Product: Package Reviews Reporter: Michael Cronenworth <mike>
Component: Review RequestAssignee: Christoph Erhardt <fedora>
Status: RESOLVED FIXED    
Severity: enhancement CC: fedora, rpmfusion-package-review
Priority: P1 Flags: fedora: fedora-review+
Version: Current   
Hardware: x86_64   
OS: GNU/Linux   
namespace: free
Attachments: log of mockbuild
log of mockbuild

Description Michael Cronenworth 2022-06-16 07:28:31 CEST
SPEC URL: https://michael.cronenworth.com/RPMS/jellyfin.spec
SRPM URL: https://michael.cronenworth.com/RPMS/jellyfin-10.8.0-1.fc36.src.rpm
(Note: Due to being 700MB in size I will be removing the SRPM after the review.)

Description: Jellyfin is a media system based on .NET and has ships a web UI client by default. There are many other clients that offer interfaces on numerous devices. It is a fork of Emby, but the code base has changed significantly since the fork.

Caveats:
- I started with upstream's SPEC so there may be a stray problem. It was almost re-written.
- Upstream has a modified ffmpeg with non-upstream patches. They are mainly for hardware acceleration fixes. This package still works against RPMFusion's ffmpeg. It will take some extra investigation if they are upstreaming their patches. Upstream may reject users asking for help if they find out they are using our package without the ffmpeg "upgrades".
- A library shipped by the .NET runtime depends on an older library for F36+. I've stripped the library until the issue is resolved. Noted in SPEC.
- Since it is a .NET and NodeJS app it requires Internet access to build. I've put together a script to provide an offline cache of required dependencies.

$ rpmlint jellyfin.spec
============================ rpmlint session starts ============================
rpmlint: 2.2.0
configuration:
    /usr/lib/python3.10/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/licenses.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
checks: 32, packages: 1

jellyfin.spec: W: invalid-url Source4: jellyfin-npm.tar.xz
jellyfin.spec: W: invalid-url Source3: jellyfin-nupkgs2.tar.xz
jellyfin.spec: W: invalid-url Source2: jellyfin-nupkgs.tar.xz
 0 packages and 1 specfiles checked; 0 errors, 3 warnings, 0 badness; has taken 0.0 s
Comment 1 Michael Cronenworth 2022-06-16 08:23:03 CEST
More notes about ffmpeg:
- Jellyfin <= 10.7 could use ffmpeg from upstream or RPMFusion with hardware acceleration
- Starting in 10.8 "jellyfin-ffmpeg", their fork, is required for hardware acceleration. Non-accelerated playback works.
Comment 2 Michael Cronenworth 2022-06-16 15:45:48 CEST
The problem was not ffmpeg, but the new SystemD service file. The 10.8 service file added many new service options including "ProtectClock" that is blocking access to the GPU device. I've updated the SRPM with that option disabled. RPMFusion ffmpeg works with HWA.
Comment 3 Michael Cronenworth 2022-06-27 14:36:21 CEST
SPEC URL: https://michael.cronenworth.com/RPMS/jellyfin.spec
SRPM URL: https://michael.cronenworth.com/RPMS/jellyfin-10.8.1-1.fc36.src.rpm

Version 10.8.1 came out yesterday. Mainly bug fixes.
Comment 4 Michael Cronenworth 2022-08-22 16:13:01 CEST
SPEC URL: https://michael.cronenworth.com/RPMS/jellyfin.spec
SRPM URL: https://michael.cronenworth.com/RPMS/jellyfin-10.8.4-1.fc36.src.rpm

Version 10.8.4 came out last week.
Comment 5 Christoph Erhardt 2022-08-26 22:36:04 CEST
Okay, this one is quite a beast. Please be patient with me; it might take me a few days.
Comment 6 Michael Cronenworth 2022-08-26 22:37:33 CEST
Completely understandable. I can wait. Thank you for taking it.
Comment 7 Christoph Erhardt 2022-09-04 12:06:52 CEST
Created attachment 2421 [details]
log of mockbuild

I couldn't get the package to build using `fedora-review -n jellyfin`. Build log is attached.
It seems the build fails to find certain .NET packages.
Comment 8 Michael Cronenworth 2022-09-04 16:05:12 CEST
Apologies. It appears I copied an out of date source RPM to the website. I've copied the correct version and successfully tested a mock build. Please try now.
Comment 9 Christoph Erhardt 2022-09-04 17:21:44 CEST
Created attachment 2422 [details]
log of mockbuild

The build now fails during `npm ci`. See the new log for details.
Comment 10 Michael Cronenworth 2022-09-04 19:03:49 CEST
A recent change in F37+ in NodeJS has changed the output of the package-lock json. Builds working on F36 are failing on F37+. I've updated the source RPM with the newer NodeJS json. The newer JSON works with older (F36) NodeJS, too.

SPEC URL: https://michael.cronenworth.com/RPMS/jellyfin.spec
SRPM URL: https://michael.cronenworth.com/RPMS/jellyfin-10.8.4-2.fc36.src.rpm
Comment 11 Christoph Erhardt 2022-09-04 21:01:59 CEST
Thanks, now I managed to successfully build your latest version. On to the manual part of the review...
Comment 12 Christoph Erhardt 2022-09-18 16:48:26 CEST
Here's the result of the review - sorry it took me a while. Generally speaking, I'm not overly familiar with the .NET infrastructure, so it might be useful if someone with a deeper knowledge of .NET packaging could weigh in.

Apart from a few minor findings, it struck me that the package appears to bundle at least parts of the .NET runtime. It's not supposed to be that way, is it?

For details, see my inline comments below (the lines starting with an arrow).

Issues:
=======
- Package installs properly.
  Note: Installation errors (see attachment)
  See: https://docs.fedoraproject.org/en-US/packaging-guidelines/
-> No idea why `fedora-review` complains about this; a manual test
  installation of the resulting RPMs worked fine.

- 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 1723.29204828b48738ba3291.chunk.js.LICENSE.txt is not
  marked as %license
  See: https://docs.fedoraproject.org/en-US/packaging-
  guidelines/LicensingGuidelines/#_license_text
- systemd_post is invoked in %post, systemd_preun in %preun, and
  systemd_postun in %postun for Systemd service files.
  Note: Systemd service file(s) in jellyfin-server, jellyfin-server-
  lowports
  See: https://docs.fedoraproject.org/en-US/packaging-
  guidelines/Scriptlets/#_scriptlets


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

C/C++:
[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.

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". 4758 files have unknown license.
     Detailed output of licensecheck in /home/erhardt/Projects/rpmfusion-
     review/review-jellyfin/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[x]: Package requires other packages for directories it uses.
     Note: No known owner of /usr/libexec/jellyfin,
     /usr/lib/systemd/system/jellyfin.service.d,
     /etc/systemd/system/jellyfin.service.d
[!]: Package must own all directories that it creates.
     Note: Directories without known owners: /etc/sudoers.d,
     /usr/lib/systemd/system/jellyfin.service.d,
     /usr/lib/firewalld/services, /usr/lib/firewalld,
     /usr/libexec/jellyfin, /etc/systemd/system/jellyfin.service.d
-> At least for `/etc/sudoers.d`, `/usr/lib/firewalld` and the systemd stuff,
the package shoud declare appropriate dependencies on the packages owning those
directories.

[x]: %build honors applicable compiler flags or justifies otherwise.
[!]: Package contains no bundled libraries without FPC exception.
     Note: Especially check following dirs for bundled code:
     /home/erhardt/Projects/rpmfusion-review/review-jellyfin/upstream-
     unpacked/Source0/jellyfin-10.8.4/Jellyfin.Data/Entities/Libraries,
     /home/erhardt/Projects/rpmfusion-review/review-jellyfin/upstream-
     unpacked/Source1/jellyfin-web-10.8.4/src/libraries
-> Judging by the `.so` files installed in `/usr/lib64/jellyfin`, it looks like
the package comes with a bundled copy of the .NET runtime. Is this really
necessary? Wouldn't a dependency on the Fedora-provided packagessuffice?

[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[!]: %config files are marked noreplace or the reason is justified.
     Note: No (noreplace) in %config /etc/sysconfig/jellyfin
[-]: 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).
[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.
[x]: 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]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: Package does not own files or directories owned by other packages.
[x]: 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]: No %config files under /usr.
[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:
[!]: Avoid bundling fonts in non-fonts packages.
     Note: Package contains font files
-> I presume those fonts aren't packaged anywhere else, so that's fine.

[-]: 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
     jellyfin-server , jellyfin-server-lowports , jellyfin-web
-> For this package it would make sense to make the subpackage dependencies
versioned.

[?]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: Scriptlets must be sane, if used.
[x]: SourceX tarball generation or download is documented.
     Note: Package contains tarball without URL, check comments
[-]: Sources are verified with gpgverify first in %prep if upstream
     publishes signatures.
     Note: gpgverify is not used.
[?]: Package should compile and build into binary rpms on all supported
     architectures.
[!]: %check is present and all tests pass.
-> The source tree does have a `test` subdirectory, do it may make sense to add
a `%check` section to the `.spec` file.

[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]: Spec use %global instead of %define unless justified.

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

Generic:
[!]: Rpmlint is run on all installed packages.
     Note: Mock build failed
     See: https://docs.fedoraproject.org/en-US/packaging-
     guidelines/#_use_rpmlint
[!]: Large data in /usr/share should live in a noarch subpackage if package
     is arched.
     Note: Arch-ed rpms have a total of 61122560 bytes in /usr/share
     jellyfin-web-10.8.4-2.fc38.x86_64.rpm:61091840
     See:
     https://fedoraproject.org/wiki/Packaging:ReviewGuidelines#Package_Review_Guidelines
[x]: Spec file according to URL is the same as in SRPM.


Installation errors
-------------------
INFO: mock.py version 3.1 starting (python version = 3.10.6, NVR = mock-3.1-1.fc36)...
Start(bootstrap): init plugins
INFO: selinux enabled
Finish(bootstrap): init plugins
Start: init plugins
INFO: selinux enabled
Finish: init plugins
INFO: Signal handler active
Start: run
Start(bootstrap): chroot init
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled package manager cache
Start(bootstrap): cleaning package manager metadata
Finish(bootstrap): cleaning package manager metadata
INFO: enabled HW Info plugin
Mock Version: 3.1
INFO: Mock Version: 3.1
Finish(bootstrap): chroot init
Start: chroot init
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled package manager cache
Start: cleaning package manager metadata
Finish: cleaning package manager metadata
INFO: enabled HW Info plugin
Mock Version: 3.1
INFO: Mock Version: 3.1
Finish: chroot init
INFO: installing package(s): /builddir/jellyfin-server-lowports-10.8.4-2.fc38.noarch.rpm /builddir/jellyfin-10.8.4-2.fc38.x86_64.rpm /builddir/jellyfin-server-10.8.4-2.fc38.x86_64.rpm /builddir/jellyfin-web-10.8.4-2.fc38.x86_64.rpm
ERROR: Command failed: 
 # /usr/bin/systemd-nspawn -q -M b9fc325109bd429e96ad11711f8f1fb5 -D /var/lib/mock/fedora-rawhide-x86_64-bootstrap/root -a --capability=cap_ipc_lock --bind=/tmp/mock-resolv.a3rcrg4d:/etc/resolv.conf --console=pipe --setenv=TERM=vt100 --setenv=SHELL=/bin/bash --setenv=HOME=/var/lib/mock/fedora-rawhide-x86_64/root/installation-homedir --setenv=HOSTNAME=mock --setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin --setenv=PROMPT_COMMAND=printf "\033]0;<mock-chroot>\007" --setenv=PS1=<mock-chroot> \s-\v\$  --setenv=LANG=C.UTF-8 --setenv=LC_MESSAGES=C.UTF-8 --resolv-conf=off /usr/bin/dnf --installroot /var/lib/mock/fedora-rawhide-x86_64/root/ --releasever 38 --setopt=deltarpm=False --allowerasing --disableplugin=local --disableplugin=spacewalk --disableplugin=versionlock install /builddir/jellyfin-server-lowports-10.8.4-2.fc38.noarch.rpm /builddir/jellyfin-10.8.4-2.fc38.x86_64.rpm /builddir/jellyfin-server-10.8.4-2.fc38.x86_64.rpm /builddir/jellyfin-web-10.8.4-2.fc38.x86_64.rpm --setopt=tsflags=nocontexts



Rpmlint
-------
Cannot parse rpmlint output:

-> rpmlint didn't produce any output when run from `fedora-review`. When run
manually, its output is as follows:
jellyfin.src: W: strange-permission restart.sh 775
jellyfin.spec: W: invalid-url Source4: jellyfin-npm.tar.xz
jellyfin.spec: W: invalid-url Source3: jellyfin-nupkgs2.tar.xz
jellyfin.spec: W: invalid-url Source2: jellyfin-nupkgs.tar.xz
jellyfin.src: W: invalid-license GPL-2.0-only
jellyfin.src: E: description-line-too-long Jellyfin is a free software media system that puts you in control of managing and streaming your media.
======= 1 packages and 0 specfiles checked; 1 errors, 5 warnings, 1 badness; has taken 8.5 s =======

Unversioned so-files
--------------------
jellyfin-server: /usr/lib64/jellyfin/libSkiaSharp.so
jellyfin-server: /usr/lib64/jellyfin/libSystem.Globalization.Native.so
jellyfin-server: /usr/lib64/jellyfin/libSystem.IO.Compression.Native.so
jellyfin-server: /usr/lib64/jellyfin/libSystem.Native.so
jellyfin-server: /usr/lib64/jellyfin/libSystem.Net.Security.Native.so
jellyfin-server: /usr/lib64/jellyfin/libSystem.Security.Cryptography.Native.OpenSsl.so
jellyfin-server: /usr/lib64/jellyfin/libclrjit.so
jellyfin-server: /usr/lib64/jellyfin/libcoreclr.so
jellyfin-server: /usr/lib64/jellyfin/libdbgshim.so
jellyfin-server: /usr/lib64/jellyfin/libe_sqlite3.so
jellyfin-server: /usr/lib64/jellyfin/libhostfxr.so
jellyfin-server: /usr/lib64/jellyfin/libhostpolicy.so
jellyfin-server: /usr/lib64/jellyfin/libmscordaccore.so
jellyfin-server: /usr/lib64/jellyfin/libmscordbi.so

Source checksums
----------------
https://github.com/jellyfin/jellyfin-web/archive/v10.8.4/jellyfin-web-10.8.4.tar.gz :
  CHECKSUM(SHA256) this package     : f5630776c2191aebad22d858f8f6267f7e3a63fd08468239abeba2e18fbd7076
  CHECKSUM(SHA256) upstream package : f5630776c2191aebad22d858f8f6267f7e3a63fd08468239abeba2e18fbd7076
https://github.com/jellyfin/jellyfin/archive/v10.8.4/jellyfin-10.8.4.tar.gz :
  CHECKSUM(SHA256) this package     : 4e9394c2b30b84e4f897885ea6034e9cdf8aa84b53c821e30a0c3a887a073ef1
  CHECKSUM(SHA256) upstream package : 4e9394c2b30b84e4f897885ea6034e9cdf8aa84b53c821e30a0c3a887a073ef1


Requires
--------
jellyfin (rpmlib, GLIBC filtered):
    jellyfin-server
    jellyfin-web
    systemd

jellyfin-server (rpmlib, GLIBC filtered):
    /bin/sh
    /usr/bin/bash
    /usr/bin/sh
    at
    config(jellyfin-server)
    ffmpeg
    ld-linux-x86-64.so.2()(64bit)
    libc.so.6()(64bit)
    libdl.so.2()(64bit)
    libfontconfig.so.1()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libm.so.6()(64bit)
    libmscordaccore.so()(64bit)
    libmscordaccore.so(V1.0)(64bit)
    libpthread.so.0()(64bit)
    librt.so.1()(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.5)(64bit)
    libstdc++.so.6(CXXABI_1.3.7)(64bit)
    libz.so.1()(64bit)
    rtld(GNU_HASH)
    shadow-utils

jellyfin-server-lowports (rpmlib, GLIBC filtered):
    jellyfin-server

jellyfin-web (rpmlib, GLIBC filtered):
    jellyfin-server



Provides
--------
jellyfin:
    jellyfin
    jellyfin(x86-64)

jellyfin-server:
    config(jellyfin-server)
    jellyfin-server
    jellyfin-server(x86-64)
    libSkiaSharp.so.88.0.0()(64bit)
    libSkiaSharp.so.88.0.0(libSkiaSharp)(64bit)
    libSystem.Globalization.Native.so()(64bit)
    libSystem.IO.Compression.Native.so()(64bit)
    libSystem.IO.Compression.Native.so(V1.0)(64bit)
    libSystem.Native.so()(64bit)
    libSystem.Net.Security.Native.so()(64bit)
    libSystem.Security.Cryptography.Native.OpenSsl.so()(64bit)
    libclrjit.so()(64bit)
    libclrjit.so(V1.0)(64bit)
    libcoreclr.so()(64bit)
    libcoreclr.so(V1.0)(64bit)
    libdbgshim.so()(64bit)
    libdbgshim.so(V1.0)(64bit)
    libe_sqlite3.so()(64bit)
    libhostfxr.so()(64bit)
    libhostfxr.so(V1.0)(64bit)
    libhostpolicy.so()(64bit)
    libhostpolicy.so(V1.0)(64bit)
    libmscordaccore.so()(64bit)
    libmscordaccore.so(V1.0)(64bit)
    libmscordbi.so()(64bit)
    libmscordbi.so(V1.0)(64bit)

jellyfin-server-lowports:
    jellyfin-server-lowports

jellyfin-web:
    jellyfin-web
    jellyfin-web(x86-64)



Generated by fedora-review 0.9.0 (6761b6c) last change: 2022-08-23
Command line :/usr/bin/fedora-review -n jellyfin
Buildroot used: fedora-rawhide-x86_64
Active plugins: Generic, Shell-api
Disabled plugins: Java, Haskell, SugarActivity, C/C++, Python, fonts, R, Ocaml, Perl, PHP
Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH
Comment 13 Michael Cronenworth 2022-09-19 17:59:27 CEST
Addressed:
- Licensing files
- FirewallD file
- Package post/scriptlets
- Package requires/ownership
- Upstream shipped in 'self-contained' mode. I've switched the build to 'framework-dependent' mode. The dotnet-runtime and dependencies will now be required. Thanks for making me investigate that. This will slim down the package a little.

May address:
- The included tests are for the source code and not the server process. The tests do run, but these same tests run in upstream's CI/CD pipelines. They won't be as valuable as a test against the server process we're shipping. Would you still like to see these added to %check? I added one of the 16 test cases.

Won't be addressed:
- Fonts, yeah, thousands, pulled in via npm.


New SPEC: https://michael.cronenworth.com/RPMS/jellyfin.spec
New SRPM: https://michael.cronenworth.com/RPMS/jellyfin-10.8.4-3.fc36.src.rpm
Comment 14 Michael Cronenworth 2022-09-26 15:05:02 CEST
Version update over the weekend. Bug fixes.

New SPEC: https://michael.cronenworth.com/RPMS/jellyfin.spec
New SRPM: https://michael.cronenworth.com/RPMS/jellyfin-10.8.5-1.fc36.src.rpm
Comment 15 Christoph Erhardt 2022-09-28 09:37:43 CEST
Looking good. There are three remaining items I'd like to address - see the 'Issues' section below. Once these are done, I'll give my thumbs-up.

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

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


Issues:
=======
- Package installs properly.
  Note: Installation errors (see attachment)
  See: https://docs.fedoraproject.org/en-US/packaging-guidelines/
  -> Still unsure where these come from, but they seem spurious. I think we can
     ignore this.

- Line 141 in `jellyfin.spec` is commented out. If it is no longer relevant, I
  recommend removing it.

- There are a few rpmlint errors that are worth ironing out:
  jellyfin-server.x86_64: E: non-standard-executable-perm /usr/lib64/jellyfin/libSkiaSharp.so 744
  jellyfin-server.x86_64: E: non-standard-executable-perm /usr/lib64/jellyfin/libe_sqlite3.so 744
  jellyfin-server.x86_64: E: non-standard-dir-perm /var/cache/jellyfin 750
  jellyfin-server.x86_64: E: non-standard-dir-perm /var/lib/jellyfin 750
  jellyfin-server.x86_64: E: non-readable /etc/sudoers.d/jellyfin-sudoers 600
  jellyfin.src: E: description-line-too-long Jellyfin is a free software media system that puts you in control of managing and streaming your media.

- Concerning the unit tests: unless the test suite runs for hours, I would
  include them all. Even though the tests are already run in the upstream CI
  pipeline, it still makes sense to double-check whether they also work in a
  Fedora-packaging environment.


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

C/C++:
[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.

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". 2667 files have unknown license.
     Detailed output of licensecheck in /home/erhardt/Projects/rpmfusion-
     review/review-jellyfin/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[x]: Package must own all directories that it creates.
     Note: Directories without known owners: /etc/sudoers.d
[x]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.
     Note: Especially check following dirs for bundled code:
     /home/erhardt/Projects/rpmfusion-review/review-jellyfin/upstream-
     unpacked/Source1/jellyfin-web-10.8.5/src/libraries,
     /home/erhardt/Projects/rpmfusion-review/review-jellyfin/upstream-
     unpacked/Source0/jellyfin-10.8.5/Jellyfin.Data/Entities/Libraries
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[x]: %config files are marked noreplace or the reason is justified.
     Note: No (noreplace) in %config /etc/sysconfig/jellyfin
[-]: 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).
[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.
[x]: 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]: 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 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]: No %config files under /usr.
[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]: systemd_post is invoked in %post, systemd_preun in %preun, and
     systemd_postun in %postun for Systemd service files.
     Note: Systemd service file(s) in jellyfin-server, jellyfin-server-
     lowports
[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:
[!]: Avoid bundling fonts in non-fonts packages.
     Note: Package contains font files
[-]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[x]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in
     jellyfin-firewalld , jellyfin-server , jellyfin-server-lowports ,
     jellyfin-web
[?]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: Scriptlets must be sane, if used.
[x]: SourceX tarball generation or download is documented.
     Note: Package contains tarball without URL, check comments
[-]: Sources are verified with gpgverify first in %prep if upstream
     publishes signatures.
     Note: gpgverify is not used.
[?]: 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]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

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

Generic:
[!]: Rpmlint is run on all installed packages.
     Note: Mock build failed
     See: https://docs.fedoraproject.org/en-US/packaging-
     guidelines/#_use_rpmlint
[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.


Installation errors
-------------------
INFO: mock.py version 3.1 starting (python version = 3.10.7, NVR = mock-3.1-1.fc36)...
Start(bootstrap): init plugins
INFO: selinux enabled
Finish(bootstrap): init plugins
Start: init plugins
INFO: selinux enabled
Finish: init plugins
INFO: Signal handler active
Start: run
Start(bootstrap): chroot init
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled package manager cache
Start(bootstrap): cleaning package manager metadata
Finish(bootstrap): cleaning package manager metadata
INFO: enabled HW Info plugin
Mock Version: 3.1
INFO: Mock Version: 3.1
Finish(bootstrap): chroot init
Start: chroot init
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled package manager cache
Start: cleaning package manager metadata
Finish: cleaning package manager metadata
INFO: enabled HW Info plugin
Mock Version: 3.1
INFO: Mock Version: 3.1
Finish: chroot init
INFO: installing package(s): /builddir/jellyfin-10.8.5-1.fc38.x86_64.rpm /builddir/jellyfin-web-10.8.5-1.fc38.noarch.rpm /builddir/jellyfin-server-lowports-10.8.5-1.fc38.noarch.rpm /builddir/jellyfin-firewalld-10.8.5-1.fc38.noarch.rpm /builddir/jellyfin-server-10.8.5-1.fc38.x86_64.rpm
ERROR: Command failed: 
 # /usr/bin/systemd-nspawn -q -M 8fd8287366234b738b2a49421b9190d5 -D /var/lib/mock/fedora-rawhide-x86_64-bootstrap/root -a --capability=cap_ipc_lock --bind=/tmp/mock-resolv.2xnzuy27:/etc/resolv.conf --console=pipe --setenv=TERM=vt100 --setenv=SHELL=/bin/bash --setenv=HOME=/var/lib/mock/fedora-rawhide-x86_64/root/installation-homedir --setenv=HOSTNAME=mock --setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin --setenv=PROMPT_COMMAND=printf "\033]0;<mock-chroot>\007" --setenv=PS1=<mock-chroot> \s-\v\$  --setenv=LANG=C.UTF-8 --setenv=LC_MESSAGES=C.UTF-8 --resolv-conf=off /usr/bin/dnf --installroot /var/lib/mock/fedora-rawhide-x86_64/root/ --releasever 38 --setopt=deltarpm=False --allowerasing --disableplugin=local --disableplugin=spacewalk --disableplugin=versionlock install /builddir/jellyfin-10.8.5-1.fc38.x86_64.rpm /builddir/jellyfin-web-10.8.5-1.fc38.noarch.rpm /builddir/jellyfin-server-lowports-10.8.5-1.fc38.noarch.rpm /builddir/jellyfin-firewalld-10.8.5-1.fc38.noarch.rpm /builddir/jellyfin-server-10.8.5-1.fc38.x86_64.rpm --setopt=tsflags=nocontexts



Rpmlint
-------
Cannot parse rpmlint output:

-> rpmlint didn't produce any output when run from `fedora-review`. When run
manually, its output is as follows:
====================================== rpmlint session starts ======================================
rpmlint: 2.2.0
configuration:
    /usr/lib/python3.10/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/licenses.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
checks: 32, packages: 6

jellyfin-server.x86_64: E: zero-length /usr/lib64/jellyfin/wwwroot/api-docs/redoc/custom.css
jellyfin-server.x86_64: W: unstripped-binary-or-object /usr/lib64/jellyfin/libe_sqlite3.so
jellyfin-server.x86_64: W: systemd-unit-in-etc /etc/systemd/system/jellyfin.service.d
jellyfin-server.x86_64: W: systemd-unit-in-etc /etc/systemd/system/jellyfin.service.d/override.conf
jellyfin-server-lowports.noarch: W: summary-ended-with-dot The Free Software Media System Server backend.  Low-port binding.
jellyfin.src: W: strange-permission restart.sh 775
jellyfin-firewalld.noarch: W: percent-in-%post
jellyfin-firewalld.noarch: W: only-non-binary-in-usr-lib
jellyfin-server-lowports.noarch: W: only-non-binary-in-usr-lib
jellyfin-firewalld.noarch: W: one-line-command-in-%post %firewalld_reload
jellyfin-server.x86_64: W: non-standard-uid /etc/jellyfin jellyfin
jellyfin-server.x86_64: W: non-standard-uid /etc/jellyfin/logging.json jellyfin
jellyfin-server.x86_64: W: non-standard-uid /var/cache/jellyfin jellyfin
jellyfin-server.x86_64: W: non-standard-uid /var/lib/jellyfin jellyfin
jellyfin-server.x86_64: W: non-standard-uid /var/log/jellyfin jellyfin
jellyfin-server.x86_64: W: non-standard-gid /etc/jellyfin jellyfin
jellyfin-server.x86_64: W: non-standard-gid /etc/jellyfin/logging.json jellyfin
jellyfin-server.x86_64: W: non-standard-gid /var/cache/jellyfin jellyfin
jellyfin-server.x86_64: W: non-standard-gid /var/lib/jellyfin jellyfin
jellyfin-server.x86_64: W: non-standard-gid /var/log/jellyfin jellyfin
jellyfin-server.x86_64: E: non-standard-executable-perm /usr/lib64/jellyfin/libSkiaSharp.so 744
jellyfin-server.x86_64: E: non-standard-executable-perm /usr/lib64/jellyfin/libe_sqlite3.so 744
jellyfin-server.x86_64: E: non-standard-dir-perm /var/cache/jellyfin 750
jellyfin-server.x86_64: E: non-standard-dir-perm /var/lib/jellyfin 750
jellyfin-server.x86_64: E: non-readable /etc/sudoers.d/jellyfin-sudoers 600
jellyfin-server.x86_64: W: no-manual-page-for-binary jellyfin
jellyfin.x86_64: W: no-documentation
jellyfin-firewalld.noarch: W: no-documentation
jellyfin-server.x86_64: W: no-documentation
jellyfin-server-lowports.noarch: W: no-documentation
jellyfin-web.noarch: W: no-documentation
jellyfin.x86_64: E: no-binary
jellyfin.spec:141: W: macro-in-comment %{buildroot}
jellyfin.spec:141: W: macro-in-comment %{_libdir}
jellyfin-server.x86_64: W: log-files-without-logrotate ['/var/log/jellyfin']
jellyfin.spec: W: invalid-url Source4: jellyfin-npm.tar.xz
jellyfin.spec: W: invalid-url Source3: jellyfin-nupkgs2.tar.xz
jellyfin.spec: W: invalid-url Source2: jellyfin-nupkgs.tar.xz
jellyfin.src: W: invalid-license GPL-2.0-only
jellyfin.x86_64: W: invalid-license GPL-2.0-only
jellyfin-firewalld.noarch: W: invalid-license GPL-2.0-only
jellyfin-server.x86_64: W: invalid-license GPL-2.0-only
jellyfin-server-lowports.noarch: W: invalid-license GPL-2.0-only
jellyfin-web.noarch: W: invalid-license GPL-2.0-only
jellyfin-web.noarch: E: files-duplicated-waste 795774
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/iphonexr_splash_l.png /usr/share/jellyfin-web/0b37f660ac0f7f01ab41.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/img/rotten.svg /usr/share/jellyfin-web/0d2b37694d352e7e4c59.svg
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/iphonexr_splash.png /usr/share/jellyfin-web/0df719b48efcaef953df.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/ipadpro3_splash.png /usr/share/jellyfin-web/142d834c201895a46a01.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/iphoneplus_splash_l.png /usr/share/jellyfin-web/16fc81178d1aee54f6cc.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/iphone6_splash_l.png /usr/share/jellyfin-web/23a72f5d56f82554aeab.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/ipad_splash.png /usr/share/jellyfin-web/379bab68d056910336f9.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/touchicon144.png /usr/share/jellyfin-web/39209dd2362c0db7c673.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/ipadpro2_splash.png /usr/share/jellyfin-web/3f3fe0fd3a0b637b5030.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/iphone6_splash.png /usr/share/jellyfin-web/3fa90c593184d5737eb3.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/ipadpro1_splash.png /usr/share/jellyfin-web/49d14d0eb7bcdf6f2d1b.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/iphonex_splash_l.png /usr/share/jellyfin-web/522fa270807b7b12a9ba.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/manifest.json /usr/share/jellyfin-web/64d966784cd77b03a79c.json
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/iphone5_splash.png /usr/share/jellyfin-web/6a2e2e6b4186720e5d4f.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/img/equalizer.gif /usr/share/jellyfin-web/74ce2b743c33a4197e5c.gif
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/ipadpro2_splash_l.png /usr/share/jellyfin-web/a962662957ebbb8eb436.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/cb6e840e08726299bf8f.svg /usr/share/jellyfin-web/assets/img/fresh.svg
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/d31413d3f03c0873ccbb.png /usr/share/jellyfin-web/assets/splash/ipad_splash_l.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/bbb3e6d43389ba0d436c.png /usr/share/jellyfin-web/assets/splash/ipadpro1_splash_l.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/e62987a12a58b24f383a.png /usr/share/jellyfin-web/assets/splash/ipadpro3_splash_l.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/eb8bef4f19b6ad227f46.png /usr/share/jellyfin-web/assets/splash/iphone5_splash_l.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/d28a57b1e61f9f0dabd9.png /usr/share/jellyfin-web/assets/splash/iphoneplus_splash.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/f94ebf203ea0c91a47c6.png /usr/share/jellyfin-web/assets/splash/iphonex_splash.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/d0e56683308a17dba86d.png /usr/share/jellyfin-web/assets/splash/iphonexsmax_splash.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/baafa93a783b76e667ec.png /usr/share/jellyfin-web/assets/splash/iphonexsmax_splash_l.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/favicon.ico /usr/share/jellyfin-web/bc8d51405ec040305a87.ico
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/touchicon.png /usr/share/jellyfin-web/f5bbb798cb2c65908633.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/libraries/subtitles-octopus-worker.data /usr/share/jellyfin-web/libraries/subtitles-octopus-worker-legacy.data
jellyfin-web.noarch: W: files-duplicate /usr/share/licenses/jellyfin-web/session-login.d2b2745adad8478b9540.chunk.js.LICENSE.txt /usr/share/licenses/jellyfin-web/3651.3c8df7e9c592c6be3f35.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/6602.afb6b8c14e77875cf285.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/9904.f65f0cdc7c3b57779551.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/bookPlayer-plugin.067aadf9e4ff5dd2f1da.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/comicsPlayer-plugin.b63d4b696cb3f4397f6a.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/dashboard-devices-devices.a74435350c8efae8e289.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/htmlAudioPlayer-plugin.3130acd8f297827fb6a0.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/htmlVideoPlayer-plugin.2025059617bfab7fd4aa.chunk.js.LICENSE.txt
jellyfin-web.noarch: W: files-duplicate /usr/share/licenses/jellyfin-web/UserProfilesPage.a9801944ada38abe9c03.chunk.js.LICENSE.txt /usr/share/licenses/jellyfin-web/NewUserPage.2cea142d4f66ba17a150.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/UserEditPage.4f6ef466462ef46af1d8.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/UserLibraryAccessPage.f92659ced2e34f704e70.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/UserParentalControl.dc78fac9604a9efc0d9e.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/UserPasswordPage.e6b5bcea2de7832e7808.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/UserProfilePage.87b76c819a8519e4782c.chunk.js.LICENSE.txt
jellyfin-server.x86_64: W: description-shorter-than-summary
jellyfin-web.noarch: W: description-shorter-than-summary
jellyfin.src: E: description-line-too-long Jellyfin is a free software media system that puts you in control of managing and streaming your media.
jellyfin.x86_64: E: description-line-too-long Jellyfin is a free software media system that puts you in control of managing and streaming your media.
jellyfin-server.x86_64: W: conffile-without-noreplace-flag /etc/sysconfig/jellyfin
jellyfin-server.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/jellyfin/jellyfin $ORIGIN/netcoredeps
===== 6 packages and 0 specfiles checked; 11 errors, 70 warnings, 11 badness; has taken 10.7 s =====

Unversioned so-files
--------------------
jellyfin-server: /usr/lib64/jellyfin/libSkiaSharp.so
jellyfin-server: /usr/lib64/jellyfin/libe_sqlite3.so

Source checksums
----------------
https://github.com/jellyfin/jellyfin-web/archive/v10.8.5/jellyfin-web-10.8.5.tar.gz :
  CHECKSUM(SHA256) this package     : d419f34631b94e5f27884c850dff49851618621f2a20c3064ddee2f16e811cad
  CHECKSUM(SHA256) upstream package : d419f34631b94e5f27884c850dff49851618621f2a20c3064ddee2f16e811cad
https://github.com/jellyfin/jellyfin/archive/v10.8.5/jellyfin-10.8.5.tar.gz :
  CHECKSUM(SHA256) this package     : 8bc8247ac37cd91b24b07e49847aeb446ff059f12ca586e6eafe44019279d86e
  CHECKSUM(SHA256) upstream package : 8bc8247ac37cd91b24b07e49847aeb446ff059f12ca586e6eafe44019279d86e


Requires
--------
jellyfin (rpmlib, GLIBC filtered):
    (jellyfin-firewalld = 10.8.5-1.fc38 if firewalld)
    jellyfin-server
    jellyfin-web
    sudo
    systemd

jellyfin-firewalld (rpmlib, GLIBC filtered):
    /bin/sh
    firewalld-filesystem

jellyfin-server (rpmlib, GLIBC filtered):
    /bin/sh
    /usr/bin/bash
    /usr/bin/sh
    aspnetcore-runtime-6.0
    at
    config(jellyfin-server)
    dotnet-runtime-6.0
    ffmpeg
    ld-linux-x86-64.so.2()(64bit)
    libc.so.6()(64bit)
    libdl.so.2()(64bit)
    libfontconfig.so.1()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libm.so.6()(64bit)
    libpthread.so.0()(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    rtld(GNU_HASH)
    shadow-utils

jellyfin-server-lowports (rpmlib, GLIBC filtered):
    /bin/sh
    jellyfin-server

jellyfin-web (rpmlib, GLIBC filtered):
    jellyfin-server



Provides
--------
jellyfin:
    jellyfin
    jellyfin(x86-64)

jellyfin-firewalld:
    jellyfin-firewalld

jellyfin-server:
    config(jellyfin-server)
    jellyfin-server
    jellyfin-server(x86-64)
    libSkiaSharp.so.88.1.0()(64bit)
    libSkiaSharp.so.88.1.0(libSkiaSharp)(64bit)
    libe_sqlite3.so()(64bit)

jellyfin-server-lowports:
    jellyfin-server-lowports

jellyfin-web:
    jellyfin-web



Generated by fedora-review 0.9.0 (6761b6c) last change: 2022-08-23
Command line :/usr/bin/fedora-review -n jellyfin
Buildroot used: fedora-rawhide-x86_64
Active plugins: Shell-api, Generic
Disabled plugins: Java, R, Perl, C/C++, fonts, Python, Haskell, Ocaml, SugarActivity, PHP
Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH
Comment 16 Michael Cronenworth 2022-09-28 15:10:28 CEST
Addressed:
- Line 141 removed

- rpmlint issues:
  * non-standard-executable-perm addressed
  * non-standard-dir-perm won't be addressed
    - /var/cache/jellyfin contains potentially sensitive data. Other packages use 700 or 750 permissions in /var/cache: cups, httpd, glibc, systemd
    - /var/lib/jellyfin contains potentially sensitive data. Other packages use 700 or 750 in /var/lib: bluez, chrony, fprint, httpd, NetworkManager, polkit, systemd
  * non-readable partially addressed. I updated 'jellyfin-sudoers' to 640. The parent directory is 750 so 640 should be satisfactory. I know rpmlint still complains, but I'd argue it shouldn't.
  * description-line-too-long addressed

- Test cases enabled sans the 'Networking' test case. It expects to reach out to 'http://helloworld.com' and that will never work.

SPEC: https://michael.cronenworth.com/RPMS/jellyfin.spec
SRPM: https://michael.cronenworth.com/RPMS/jellyfin-10.8.5-2.fc36.src.rpm
Comment 17 Christoph Erhardt 2022-09-28 22:09:30 CEST
Thanks! Package accepted.

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

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


Issues:
=======
- Package installs properly.
  Note: Installation errors (see attachment)
  See: https://docs.fedoraproject.org/en-US/packaging-guidelines/
  -> Still unsure where these come from, but they seem spurious. I think we can
     ignore this.


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

C/C++:
[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.

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". 2667 files have unknown license.
     Detailed output of licensecheck in /home/erhardt/Projects/rpmfusion-
     review/review-jellyfin/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[x]: Package must own all directories that it creates.
     Note: Directories without known owners: /etc/sudoers.d
[x]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.
     Note: Especially check following dirs for bundled code:
     /home/erhardt/Projects/rpmfusion-review/review-jellyfin/upstream-
     unpacked/Source1/jellyfin-web-10.8.5/src/libraries,
     /home/erhardt/Projects/rpmfusion-review/review-jellyfin/upstream-
     unpacked/Source0/jellyfin-10.8.5/Jellyfin.Data/Entities/Libraries
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[x]: %config files are marked noreplace or the reason is justified.
     Note: No (noreplace) in %config /etc/sysconfig/jellyfin
[-]: 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).
[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.
[x]: 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]: 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 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]: No %config files under /usr.
[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]: systemd_post is invoked in %post, systemd_preun in %preun, and
     systemd_postun in %postun for Systemd service files.
     Note: Systemd service file(s) in jellyfin-server, jellyfin-server-
     lowports
[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:
[!]: Avoid bundling fonts in non-fonts packages.
     Note: Package contains font files
[-]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[x]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in
     jellyfin-firewalld , jellyfin-server , jellyfin-server-lowports ,
     jellyfin-web
[?]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: Scriptlets must be sane, if used.
[x]: SourceX tarball generation or download is documented.
     Note: Package contains tarball without URL, check comments
[-]: Sources are verified with gpgverify first in %prep if upstream
     publishes signatures.
     Note: gpgverify is not used.
[?]: 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]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

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

Generic:
[!]: Rpmlint is run on all installed packages.
     Note: Mock build failed
     See: https://docs.fedoraproject.org/en-US/packaging-
     guidelines/#_use_rpmlint
[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.


Installation errors
-------------------
INFO: mock.py version 3.1 starting (python version = 3.10.7, NVR = mock-3.1-1.fc36)...
Start(bootstrap): init plugins
INFO: selinux enabled
Finish(bootstrap): init plugins
Start: init plugins
INFO: selinux enabled
Finish: init plugins
INFO: Signal handler active
Start: run
Start(bootstrap): chroot init
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled package manager cache
Start(bootstrap): cleaning package manager metadata
Finish(bootstrap): cleaning package manager metadata
INFO: enabled HW Info plugin
Mock Version: 3.1
INFO: Mock Version: 3.1
Finish(bootstrap): chroot init
Start: chroot init
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled package manager cache
Start: cleaning package manager metadata
Finish: cleaning package manager metadata
INFO: enabled HW Info plugin
Mock Version: 3.1
INFO: Mock Version: 3.1
Finish: chroot init
INFO: installing package(s): /builddir/jellyfin-server-10.8.5-2.fc38.x86_64.rpm /builddir/jellyfin-firewalld-10.8.5-2.fc38.noarch.rpm /builddir/jellyfin-10.8.5-2.fc38.x86_64.rpm /builddir/jellyfin-web-10.8.5-2.fc38.noarch.rpm /builddir/jellyfin-server-lowports-10.8.5-2.fc38.noarch.rpm
ERROR: Command failed: 
 # /usr/bin/systemd-nspawn -q -M 4a44741f2ee34f8b82e5c47a3fab1aa7 -D /var/lib/mock/fedora-rawhide-x86_64-bootstrap/root -a --capability=cap_ipc_lock --bind=/tmp/mock-resolv.tva8_kyy:/etc/resolv.conf --console=pipe --setenv=TERM=vt100 --setenv=SHELL=/bin/bash --setenv=HOME=/var/lib/mock/fedora-rawhide-x86_64/root/installation-homedir --setenv=HOSTNAME=mock --setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin --setenv=PROMPT_COMMAND=printf "\033]0;<mock-chroot>\007" --setenv=PS1=<mock-chroot> \s-\v\$  --setenv=LANG=C.UTF-8 --setenv=LC_MESSAGES=C.UTF-8 --resolv-conf=off /usr/bin/dnf --installroot /var/lib/mock/fedora-rawhide-x86_64/root/ --releasever 38 --setopt=deltarpm=False --allowerasing --disableplugin=local --disableplugin=spacewalk --disableplugin=versionlock install /builddir/jellyfin-server-10.8.5-2.fc38.x86_64.rpm /builddir/jellyfin-firewalld-10.8.5-2.fc38.noarch.rpm /builddir/jellyfin-10.8.5-2.fc38.x86_64.rpm /builddir/jellyfin-web-10.8.5-2.fc38.noarch.rpm /builddir/jellyfin-server-lowports-10.8.5-2.fc38.noarch.rpm --setopt=tsflags=nocontexts



Rpmlint
-------
Cannot parse rpmlint output:

-> rpmlint didn't produce any output when run from `fedora-review`. When run
manually, its output is as follows:
====================================== rpmlint session starts ======================================
rpmlint: 2.2.0
configuration:
    /usr/lib/python3.10/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/licenses.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
checks: 32, packages: 6

jellyfin-server.x86_64: E: zero-length /usr/lib64/jellyfin/wwwroot/api-docs/redoc/custom.css
jellyfin-server.x86_64: W: unstripped-binary-or-object /usr/lib64/jellyfin/libe_sqlite3.so
jellyfin-server.x86_64: W: systemd-unit-in-etc /etc/systemd/system/jellyfin.service.d
jellyfin-server.x86_64: W: systemd-unit-in-etc /etc/systemd/system/jellyfin.service.d/override.conf
jellyfin-server-lowports.noarch: W: summary-ended-with-dot The Free Software Media System Server backend.  Low-port binding.
jellyfin.src: W: strange-permission restart.sh 775
jellyfin-firewalld.noarch: W: percent-in-%post
jellyfin-firewalld.noarch: W: only-non-binary-in-usr-lib
jellyfin-server-lowports.noarch: W: only-non-binary-in-usr-lib
jellyfin-firewalld.noarch: W: one-line-command-in-%post %firewalld_reload
jellyfin-server.x86_64: W: non-standard-uid /etc/jellyfin jellyfin
jellyfin-server.x86_64: W: non-standard-uid /etc/jellyfin/logging.json jellyfin
jellyfin-server.x86_64: W: non-standard-uid /var/cache/jellyfin jellyfin
jellyfin-server.x86_64: W: non-standard-uid /var/lib/jellyfin jellyfin
jellyfin-server.x86_64: W: non-standard-uid /var/log/jellyfin jellyfin
jellyfin-server.x86_64: W: non-standard-gid /etc/jellyfin jellyfin
jellyfin-server.x86_64: W: non-standard-gid /etc/jellyfin/logging.json jellyfin
jellyfin-server.x86_64: W: non-standard-gid /var/cache/jellyfin jellyfin
jellyfin-server.x86_64: W: non-standard-gid /var/lib/jellyfin jellyfin
jellyfin-server.x86_64: W: non-standard-gid /var/log/jellyfin jellyfin
jellyfin-server.x86_64: E: non-standard-dir-perm /var/cache/jellyfin 750
jellyfin-server.x86_64: E: non-standard-dir-perm /var/lib/jellyfin 750
jellyfin-server.x86_64: E: non-readable /etc/sudoers.d/jellyfin-sudoers 640
jellyfin-server.x86_64: W: no-manual-page-for-binary jellyfin
jellyfin.x86_64: W: no-documentation
jellyfin-firewalld.noarch: W: no-documentation
jellyfin-server.x86_64: W: no-documentation
jellyfin-server-lowports.noarch: W: no-documentation
jellyfin-web.noarch: W: no-documentation
jellyfin.x86_64: E: no-binary
jellyfin-server.x86_64: W: log-files-without-logrotate ['/var/log/jellyfin']
jellyfin.spec: W: invalid-url Source4: jellyfin-npm.tar.xz
jellyfin.spec: W: invalid-url Source3: jellyfin-nupkgs2.tar.xz
jellyfin.spec: W: invalid-url Source2: jellyfin-nupkgs.tar.xz
jellyfin.src: W: invalid-license GPL-2.0-only
jellyfin.x86_64: W: invalid-license GPL-2.0-only
jellyfin-firewalld.noarch: W: invalid-license GPL-2.0-only
jellyfin-server.x86_64: W: invalid-license GPL-2.0-only
jellyfin-server-lowports.noarch: W: invalid-license GPL-2.0-only
jellyfin-web.noarch: W: invalid-license GPL-2.0-only
jellyfin-web.noarch: E: files-duplicated-waste 795774
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/iphonexr_splash_l.png /usr/share/jellyfin-web/0b37f660ac0f7f01ab41.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/img/rotten.svg /usr/share/jellyfin-web/0d2b37694d352e7e4c59.svg
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/iphonexr_splash.png /usr/share/jellyfin-web/0df719b48efcaef953df.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/ipadpro3_splash.png /usr/share/jellyfin-web/142d834c201895a46a01.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/iphoneplus_splash_l.png /usr/share/jellyfin-web/16fc81178d1aee54f6cc.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/iphone6_splash_l.png /usr/share/jellyfin-web/23a72f5d56f82554aeab.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/ipad_splash.png /usr/share/jellyfin-web/379bab68d056910336f9.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/touchicon144.png /usr/share/jellyfin-web/39209dd2362c0db7c673.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/ipadpro2_splash.png /usr/share/jellyfin-web/3f3fe0fd3a0b637b5030.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/iphone6_splash.png /usr/share/jellyfin-web/3fa90c593184d5737eb3.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/ipadpro1_splash.png /usr/share/jellyfin-web/49d14d0eb7bcdf6f2d1b.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/iphonex_splash_l.png /usr/share/jellyfin-web/522fa270807b7b12a9ba.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/manifest.json /usr/share/jellyfin-web/64d966784cd77b03a79c.json
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/iphone5_splash.png /usr/share/jellyfin-web/6a2e2e6b4186720e5d4f.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/img/equalizer.gif /usr/share/jellyfin-web/74ce2b743c33a4197e5c.gif
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/assets/splash/ipadpro2_splash_l.png /usr/share/jellyfin-web/a962662957ebbb8eb436.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/cb6e840e08726299bf8f.svg /usr/share/jellyfin-web/assets/img/fresh.svg
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/d31413d3f03c0873ccbb.png /usr/share/jellyfin-web/assets/splash/ipad_splash_l.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/bbb3e6d43389ba0d436c.png /usr/share/jellyfin-web/assets/splash/ipadpro1_splash_l.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/e62987a12a58b24f383a.png /usr/share/jellyfin-web/assets/splash/ipadpro3_splash_l.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/eb8bef4f19b6ad227f46.png /usr/share/jellyfin-web/assets/splash/iphone5_splash_l.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/d28a57b1e61f9f0dabd9.png /usr/share/jellyfin-web/assets/splash/iphoneplus_splash.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/f94ebf203ea0c91a47c6.png /usr/share/jellyfin-web/assets/splash/iphonex_splash.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/d0e56683308a17dba86d.png /usr/share/jellyfin-web/assets/splash/iphonexsmax_splash.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/baafa93a783b76e667ec.png /usr/share/jellyfin-web/assets/splash/iphonexsmax_splash_l.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/favicon.ico /usr/share/jellyfin-web/bc8d51405ec040305a87.ico
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/touchicon.png /usr/share/jellyfin-web/f5bbb798cb2c65908633.png
jellyfin-web.noarch: W: files-duplicate /usr/share/jellyfin-web/libraries/subtitles-octopus-worker.data /usr/share/jellyfin-web/libraries/subtitles-octopus-worker-legacy.data
jellyfin-web.noarch: W: files-duplicate /usr/share/licenses/jellyfin-web/session-login.d2b2745adad8478b9540.chunk.js.LICENSE.txt /usr/share/licenses/jellyfin-web/3651.3c8df7e9c592c6be3f35.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/6602.afb6b8c14e77875cf285.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/9904.f65f0cdc7c3b57779551.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/bookPlayer-plugin.067aadf9e4ff5dd2f1da.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/comicsPlayer-plugin.b63d4b696cb3f4397f6a.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/dashboard-devices-devices.a74435350c8efae8e289.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/htmlAudioPlayer-plugin.3130acd8f297827fb6a0.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/htmlVideoPlayer-plugin.2025059617bfab7fd4aa.chunk.js.LICENSE.txt
jellyfin-web.noarch: W: files-duplicate /usr/share/licenses/jellyfin-web/UserProfilesPage.a9801944ada38abe9c03.chunk.js.LICENSE.txt /usr/share/licenses/jellyfin-web/NewUserPage.2cea142d4f66ba17a150.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/UserEditPage.4f6ef466462ef46af1d8.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/UserLibraryAccessPage.f92659ced2e34f704e70.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/UserParentalControl.dc78fac9604a9efc0d9e.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/UserPasswordPage.e6b5bcea2de7832e7808.chunk.js.LICENSE.txt:/usr/share/licenses/jellyfin-web/UserProfilePage.87b76c819a8519e4782c.chunk.js.LICENSE.txt
jellyfin-server.x86_64: W: description-shorter-than-summary
jellyfin-web.noarch: W: description-shorter-than-summary
jellyfin-server.x86_64: W: conffile-without-noreplace-flag /etc/sysconfig/jellyfin
jellyfin-server.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/jellyfin/jellyfin $ORIGIN/netcoredeps
====== 6 packages and 0 specfiles checked; 7 errors, 68 warnings, 7 badness; has taken 10.9 s ======

Unversioned so-files
--------------------
jellyfin-server: /usr/lib64/jellyfin/libSkiaSharp.so
jellyfin-server: /usr/lib64/jellyfin/libe_sqlite3.so

Source checksums
----------------
https://github.com/jellyfin/jellyfin-web/archive/v10.8.5/jellyfin-web-10.8.5.tar.gz :
  CHECKSUM(SHA256) this package     : d419f34631b94e5f27884c850dff49851618621f2a20c3064ddee2f16e811cad
  CHECKSUM(SHA256) upstream package : d419f34631b94e5f27884c850dff49851618621f2a20c3064ddee2f16e811cad
https://github.com/jellyfin/jellyfin/archive/v10.8.5/jellyfin-10.8.5.tar.gz :
  CHECKSUM(SHA256) this package     : 8bc8247ac37cd91b24b07e49847aeb446ff059f12ca586e6eafe44019279d86e
  CHECKSUM(SHA256) upstream package : 8bc8247ac37cd91b24b07e49847aeb446ff059f12ca586e6eafe44019279d86e


Requires
--------
jellyfin (rpmlib, GLIBC filtered):
    (jellyfin-firewalld = 10.8.5-2.fc38 if firewalld)
    jellyfin-server
    jellyfin-web
    sudo
    systemd

jellyfin-firewalld (rpmlib, GLIBC filtered):
    /bin/sh
    firewalld-filesystem

jellyfin-server (rpmlib, GLIBC filtered):
    /bin/sh
    /usr/bin/bash
    /usr/bin/sh
    aspnetcore-runtime-6.0
    at
    config(jellyfin-server)
    dotnet-runtime-6.0
    ffmpeg
    ld-linux-x86-64.so.2()(64bit)
    libc.so.6()(64bit)
    libdl.so.2()(64bit)
    libfontconfig.so.1()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libm.so.6()(64bit)
    libpthread.so.0()(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    rtld(GNU_HASH)
    shadow-utils

jellyfin-server-lowports (rpmlib, GLIBC filtered):
    /bin/sh
    jellyfin-server

jellyfin-web (rpmlib, GLIBC filtered):
    jellyfin-server



Provides
--------
jellyfin:
    jellyfin
    jellyfin(x86-64)

jellyfin-firewalld:
    jellyfin-firewalld

jellyfin-server:
    config(jellyfin-server)
    jellyfin-server
    jellyfin-server(x86-64)
    libSkiaSharp.so.88.1.0()(64bit)
    libSkiaSharp.so.88.1.0(libSkiaSharp)(64bit)
    libe_sqlite3.so()(64bit)

jellyfin-server-lowports:
    jellyfin-server-lowports

jellyfin-web:
    jellyfin-web



Generated by fedora-review 0.9.0 (6761b6c) last change: 2022-08-23
Command line :/usr/bin/fedora-review -n jellyfin
Buildroot used: fedora-rawhide-x86_64
Active plugins: Generic, Shell-api
Disabled plugins: C/C++, R, Perl, PHP, Java, Haskell, Python, fonts, SugarActivity, Ocaml
Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH
Comment 18 Michael Cronenworth 2022-09-28 23:12:27 CEST
(In reply to Christoph Erhardt from comment #17)
> Thanks! Package accepted.

Thank you! Package requested in pkgdb.
Comment 19 Michael Cronenworth 2022-09-30 03:58:20 CEST
It's been imported and built for F38/Rawhide.

https://koji.rpmfusion.org/koji/buildinfo?buildID=23751

There was no matching dotnet 6.0.8 package for F37, but I have resolved that and an update will be out soon.

https://bugzilla.redhat.com/show_bug.cgi?id=2130913

https://koji.fedoraproject.org/koji/buildinfo?buildID=2068950