b630e9de82
This is pretty arbitrary and personal, but I detest services that lock out global access (which is good), but don't simultaneously make it easy for administrators to enter the directories. The adm group should only have actual system administrators as members, so this lets them view the secure directories. |
||
---|---|---|
.. | ||
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.
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