1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #!/usr/bin/env sh
- source ../common.build.sh
- VERSION=`get_version ../..`
- # TODO get the version in the package automatically. And using the changelog to decide the debian package suffix version.
- # Build a Jellyfin .rpm file with Docker on Linux
- # Places the output .rpm file in the parent directory
- set -o errexit
- set -o xtrace
- set -o nounset
- package_temporary_dir="`pwd`/pkg-dist-tmp"
- output_dir="`pwd`/pkg-dist"
- pkg_src_dir="`pwd`/pkg-src"
- current_user="`whoami`"
- image_name="jellyfin-rpmbuild"
- cleanup() {
- set +o errexit
- docker image rm $image_name --force
- rm -rf "$package_temporary_dir"
- rm -rf "$pkg_src_dir/jellyfin-${VERSION}.tar.gz"
- }
- trap cleanup EXIT INT
- GNU_TAR=1
- mkdir -p "$package_temporary_dir"
- echo "Bundling all sources for RPM build."
- tar \
- --transform "s,^\.,jellyfin-${VERSION}" \
- --exclude='.git*' \
- --exclude='**/.git' \
- --exclude='**/.hg' \
- --exclude='**/.vs' \
- --exclude='**/.vscode' \
- --exclude='deployment' \
- --exclude='**/bin' \
- --exclude='**/obj' \
- --exclude='**/.nuget' \
- --exclude='*.deb' \
- --exclude='*.rpm' \
- -Jcvf \
- "$package_temporary_dir/jellyfin-${VERSION}.tar.xz" \
- -C "../.." \
- ./ || true && GNU_TAR=0
- if [ $GNU_TAR -eq 0 ]; then
- echo "The installed tar binary did not support --transform. Using workaround."
- mkdir -p "$package_temporary_dir/jellyfin-${VERSION}"
- # Not GNU tar
- tar \
- --exclude='.git*' \
- --exclude='**/.git' \
- --exclude='**/.hg' \
- --exclude='**/.vs' \
- --exclude='**/.vscode' \
- --exclude='deployment' \
- --exclude='**/bin' \
- --exclude='**/obj' \
- --exclude='**/.nuget' \
- --exclude='*.deb' \
- --exclude='*.rpm' \
- -zcf \
- "$package_temporary_dir/jellyfin-${VERSION}/jellyfin.tar.gz" \
- -C "../.." \
- ./
- echo "Extracting filtered package."
- tar -xzf "$package_temporary_dir/jellyfin-${VERSION}/jellyfin.tar.gz" -C "$package_temporary_dir/jellyfin-${VERSION}"
- echo "Removing filtered package."
- rm "$package_temporary_dir/jellyfin-${VERSION}/jellyfin.tar.gz"
- echo "Repackaging package into final tarball."
- tar -zcf "$pkg_src_dir/jellyfin-${VERSION}.tar.gz" -C "$package_temporary_dir" "jellyfin-${VERSION}"
- fi
- docker build ../.. -t "$image_name" -f ./Dockerfile
- mkdir -p "$output_dir"
- docker run --rm -v "$package_temporary_dir:/temp" "$image_name" sh -c 'find /build/rpmbuild -maxdepth 3 -type f -name "jellyfin*.rpm" -exec mv {} /temp \;'
- chown -R "$current_user" "$package_temporary_dir" \
- || sudo chown -R "$current_user" "$package_temporary_dir"
- mv "$package_temporary_dir"/*.rpm "$output_dir"
|