.. | ||
centos-package-x64 | ||
debian-package-x64 | ||
debian-x64 | ||
docker | ||
fedora-package-x64 | ||
framework | ||
linux-x64 | ||
osx-x64 | ||
ubuntu-x64 | ||
unraid/docker-templates | ||
win-generic | ||
win-x64 | ||
win-x86 | ||
common.build.sh | ||
README.md |
Jellyfin Packaging
This directory contains the packaging configuration of Jellyfin for multiple platforms. The specification is below; all package platforms must follow the specification to be compatable with the central build
script.
Package List
Operating System Packages
debian-package-x64
: Package for Debian and Ubuntu amd64 systems.fedora-package-x64
: Package for Fedora, CentOS, and Red Hat Enterprise Linux amd64 systems.
Portable Builds (archives)
debian-x64
: Portable binary archive for Debian amd64 systems.ubuntu-x64
: Portable binary archive for Ubuntu amd64 systems.linux-x64
: Portable binary archive for generic Linux amd64 systems.osx-x64
: Portable binary archive for MacOS amd64 systems.win-x64
: Portable binary archive for Windows amd64 systems.win-x86
: Portable binary archive for Windows i386 systems.
Other Builds
These builds are not necessarily run from the build
script, but are present for other platforms.
framework
: Compiled.dll
for use with .NET Core runtime on any system.docker
: Docker manifests for auto-publishing.unraid
: unRaid Docker template; not built bybuild
but imported into unRaid directly.win-generic
: Portable binary for generic Windows systems.
Package Specification
Dependencies
-
If a platform requires additional build dependencies, the required binary names, i.e. to validate
which <binary>
, should be specified in adependencies.txt
file inside the platform directory. -
Each dependency should be present on its own line.
Action Scripts
-
Actions are defined in BASH scripts with the name
<action>.sh
within the platform directory. -
The list of valid actions are:
build
: Builds a set of binaries.package
: Assembles the compiled binaries into a package.sign
: Performs signing actions on a package.publish
: Performs a publishing action for a package.clean
: Cleans up any artifacts from the previous actions.
-
All package actions are optional, however at least one should generate output files, and any that do should contain a
clean
action. -
Actions are executed in the order specified above, and later actions may depend on former actions.
-
Actions except for
clean
shouldset -o errexit
to terminate on failed actions. -
The
clean
action should alwaysexit 0
even if no work is done or it fails. -
The
clean
action can be passed a variable as argument 1, namedkeep_artifacts
. It is indended to handle situations when the user runsbuild --keep-artifacts
and should be handled intelligently. Usually, this is used to preserve Docker images while still removing temporary directories.
Output Files
-
Upon completion of the defined actions, at least one output file must be created in the
<platform>/pkg-dist
directory. -
Output files will be moved to the directory
jellyfin-build/<platform>
one directory above the repository root upon completion.
Common Functions
-
A number of common functions are defined in
deployment/common.build.sh
for use by platform scripts. -
Each action script should import the common functions to define a number of standard variables.
-
The common variables are:
ROOT
: The Jellyfin repostiory root, usually../..
.CONFIG
: The .NET config, usuallyRelease
.DOTNETRUNTIME
: The .NET--runtime
value, platform-dependent.OUTPUT_DIR
: The intermediate output dir, usually./dist/jellyfin_${VERSION}
.BUILD_CONTEXT
: The Docker build context, usually../..
.DOCKERFILE
: The Dockerfile, usuallyDockerfile
in the platform directory.IMAGE_TAG
: A tag for the built Docker image.PKG_DIR
: The final binary output directory for collection, invariablypkg-dist
.ARCHIVE_CMD
: The compression/archive command for release archives, usuallytar -xvzf
orzip
.
get_version
Reads the version information from SharedVersion.cs
.
Arguments: ROOT
build_jellyfin
Build a standard self-contained binary in the current OS context.
Arguments: ROOT
CONFIG
DOTNETRUNTIME
OUTPUT_DIR
build_jellyfin_docker
Build a standard self-contained binary in a Docker image.
Arguments: BUILD_CONTEXT
DOCKERFILE
IMAGE_TAG
clean_jellyfin
Clean up a build for housekeeping.
Arguments: ROOT
CONFIG
OUTPUT_DIR
PKG_DIR
package_portable
Produce a compressed archive.
Arguments: ROOT
OUTPUT_DIR
PKG_DIR
ARCHIVE_CMD