jmontleon/jellyfin-ppc64le

Project ID: 120265

Description

This repo was started to help get Jellyfin working on ppc64le. The first pass was with Fedora as a target, although the next was using AlmaLinux 8 so the number of targets had grown. While at it I decided to get it to work on other architectures as well so its grown further and the repo name is somewhat of misleading.

Jellyfin 10.9.0 is set up to use dotnet 8.0 which is helpful, because 10.8.3 uses dotnet 6.0 and dotnet 6.0 is not available for ppc64le.

Inspiration for gathering dependencies for offline build was taken from https://github.com/rpmfusion/jellyfin/blob/f36/jellyfin-offline.sh, although the number nupkg files that were needed to download has grown.

dotnet restore --packages ./jellyfin-dependencies-10.9.0

then for the rest, for example:

mkdir jellyfin-nupkg-10.9.0 cd jellyfin-nupkg-10.9.0 curl -L https://www.nuget.org/api/v2/package/runtime.unix.Microsoft.Win32.Primitives/4.3.0 > runtime.unix.microsoft.win32.primitives.4.3.0.nupkg

In addition, for npm, a new dependency @esbuild needed to be downloaded for every architecture being built. The only way I could figure out to do this was to run the steps for building the cache using a container for each platform. For this to work I placed the cache outside of the jellyfin-web dir and pointed at it with each run, resetting the jellyfin-web folder each time, otherwise I got errors with npm complaining about architecture mismatches. To do this for each architecture make sure you have qemu-user-static installed and then you can use podman like so:

podman run --arch aarch64 -it --entrypoint /bin/bash -v $HOME/rpmbuild:/root/rpmbuild:z quay.io/fedora/fedora

From there builds are successful, however one of the downloaded assets does not contain a copy for the library for ppc64le (or s390x) and the server will fail to start because of this. https://www.nuget.org/packages/SkiaSharp.NativeAssets.Linux/2.88.7

To work around this the library build is incorporated in the jellyfin server build and the library is placed in the same location it is found on x86_64 and arm64 builds. The source was gathered by cloning the v2.88.3 branch of https://github.com/mono/skia, running python3 tools/git-sync-deps, and creating a tar archive using the --exclude-vcs option. For this to build on s390x I also needed to create a patch that now allows to build, although it's quite likely incomplete.

The nodejs:20 module is also enabled for the centos stream builds.

Installation Instructions

install jellyfin, jellyfin-server, and jellyfin-web. Start the jellyfin service.

Active Releases

The following unofficial repositories are provided as-is by owner of this project. Contact the owner directly for bugs or issues (IE: not bugzilla).

Release Architectures Repo Download
Centos-stream+epel-next 8 aarch64 [modified] (10)*, ppc64le [modified] (26)*, x86_64 [modified] (6)* Centos-stream+epel-next 8 (30 downloads)
Centos-stream+epel-next 9 aarch64 [modified] (6)*, ppc64le [modified] (11)*, s390x [modified] (6)*, x86_64 [modified] (9)* Centos-stream+epel-next 9 (35 downloads)
Fedora 39 aarch64 (6)*, ppc64le (24)*, s390x (6)*, x86_64 (10)* Fedora 39 (0 downloads)
Fedora 40 aarch64 (6)*, ppc64le (14)*, s390x (7)*, x86_64 (15)* Fedora 40 (29 downloads)
Fedora 41 aarch64 (6)*, ppc64le (8)*, s390x (6)*, x86_64 (6)* Fedora 41 (10 downloads)
Fedora rawhide aarch64 (6)*, ppc64le (6)*, s390x (9)*, x86_64 (8)* Fedora rawhide (18 downloads)

* Total number of downloaded packages.