mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-09-07 20:08:59 +02:00
Merge pull request #1383 from jellyfin/release-10.3.z
Backmerge for Release 10.3.3
This commit is contained in:
commit
2d011b781e
29 changed files with 119 additions and 68 deletions
|
@ -21,7 +21,7 @@ RUN apt-get update \
|
||||||
COPY --from=ffmpeg / /
|
COPY --from=ffmpeg / /
|
||||||
COPY --from=builder /jellyfin /jellyfin
|
COPY --from=builder /jellyfin /jellyfin
|
||||||
|
|
||||||
ARG JELLYFIN_WEB_VERSION=10.3.2
|
ARG JELLYFIN_WEB_VERSION=10.3.3
|
||||||
RUN curl -L https://github.com/jellyfin/jellyfin-web/archive/v${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
|
RUN curl -L https://github.com/jellyfin/jellyfin-web/archive/v${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
|
||||||
&& rm -rf /jellyfin/jellyfin-web \
|
&& rm -rf /jellyfin/jellyfin-web \
|
||||||
&& mv jellyfin-web-${JELLYFIN_WEB_VERSION} /jellyfin/jellyfin-web
|
&& mv jellyfin-web-${JELLYFIN_WEB_VERSION} /jellyfin/jellyfin-web
|
||||||
|
|
|
@ -30,7 +30,7 @@ RUN apt-get update \
|
||||||
&& chmod 777 /cache /config /media
|
&& chmod 777 /cache /config /media
|
||||||
COPY --from=builder /jellyfin /jellyfin
|
COPY --from=builder /jellyfin /jellyfin
|
||||||
|
|
||||||
ARG JELLYFIN_WEB_VERSION=10.3.2
|
ARG JELLYFIN_WEB_VERSION=10.3.3
|
||||||
RUN curl -L https://github.com/jellyfin/jellyfin-web/archive/v${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
|
RUN curl -L https://github.com/jellyfin/jellyfin-web/archive/v${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
|
||||||
&& rm -rf /jellyfin/jellyfin-web \
|
&& rm -rf /jellyfin/jellyfin-web \
|
||||||
&& mv jellyfin-web-${JELLYFIN_WEB_VERSION} /jellyfin/jellyfin-web
|
&& mv jellyfin-web-${JELLYFIN_WEB_VERSION} /jellyfin/jellyfin-web
|
||||||
|
|
|
@ -31,7 +31,7 @@ RUN apt-get update \
|
||||||
&& chmod 777 /cache /config /media
|
&& chmod 777 /cache /config /media
|
||||||
COPY --from=builder /jellyfin /jellyfin
|
COPY --from=builder /jellyfin /jellyfin
|
||||||
|
|
||||||
ARG JELLYFIN_WEB_VERSION=10.3.2
|
ARG JELLYFIN_WEB_VERSION=10.3.3
|
||||||
RUN curl -L https://github.com/jellyfin/jellyfin-web/archive/v${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
|
RUN curl -L https://github.com/jellyfin/jellyfin-web/archive/v${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
|
||||||
&& rm -rf /jellyfin/jellyfin-web \
|
&& rm -rf /jellyfin/jellyfin-web \
|
||||||
&& mv jellyfin-web-${JELLYFIN_WEB_VERSION} /jellyfin/jellyfin-web
|
&& mv jellyfin-web-${JELLYFIN_WEB_VERSION} /jellyfin/jellyfin-web
|
||||||
|
|
|
@ -920,8 +920,6 @@ namespace Emby.Dlna.Didl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AddImageResElement(item, writer, 160, 160, "jpg", "JPEG_TN");
|
|
||||||
|
|
||||||
if (!_profile.EnableSingleAlbumArtLimit || string.Equals(item.MediaType, MediaType.Photo, StringComparison.OrdinalIgnoreCase))
|
if (!_profile.EnableSingleAlbumArtLimit || string.Equals(item.MediaType, MediaType.Photo, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
AddImageResElement(item, writer, 4096, 4096, "jpg", "JPEG_LRG");
|
AddImageResElement(item, writer, 4096, 4096, "jpg", "JPEG_LRG");
|
||||||
|
@ -930,6 +928,9 @@ namespace Emby.Dlna.Didl
|
||||||
AddImageResElement(item, writer, 4096, 4096, "png", "PNG_LRG");
|
AddImageResElement(item, writer, 4096, 4096, "png", "PNG_LRG");
|
||||||
AddImageResElement(item, writer, 160, 160, "png", "PNG_TN");
|
AddImageResElement(item, writer, 160, 160, "png", "PNG_TN");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AddImageResElement(item, writer, 160, 160, "jpg", "JPEG_TN");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddEmbeddedImageAsCover(string name, XmlWriter writer)
|
private void AddEmbeddedImageAsCover(string name, XmlWriter writer)
|
||||||
|
|
|
@ -550,7 +550,7 @@ namespace Emby.Server.Implementations.Library
|
||||||
{
|
{
|
||||||
return string.IsNullOrEmpty(user.EasyPassword)
|
return string.IsNullOrEmpty(user.EasyPassword)
|
||||||
? null
|
? null
|
||||||
: user.EasyPassword;
|
: (new PasswordHash(user.EasyPassword)).Hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -2,6 +2,8 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Api.Movies;
|
using MediaBrowser.Api.Movies;
|
||||||
|
@ -828,7 +830,16 @@ namespace MediaBrowser.Api.Library
|
||||||
var filename = (Path.GetFileName(path) ?? string.Empty).Replace("\"", string.Empty);
|
var filename = (Path.GetFileName(path) ?? string.Empty).Replace("\"", string.Empty);
|
||||||
if (!string.IsNullOrWhiteSpace(filename))
|
if (!string.IsNullOrWhiteSpace(filename))
|
||||||
{
|
{
|
||||||
headers[HeaderNames.ContentDisposition] = "attachment; filename=\"" + filename + "\"";
|
// Kestrel doesn't support non-ASCII characters in headers
|
||||||
|
if (Regex.IsMatch(filename, "[^[:ascii:]]"))
|
||||||
|
{
|
||||||
|
// Manually encoding non-ASCII characters, following https://tools.ietf.org/html/rfc5987#section-3.2.2
|
||||||
|
headers[HeaderNames.ContentDisposition] = "attachment; filename*=UTF-8''" + WebUtility.UrlEncode(filename);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
headers[HeaderNames.ContentDisposition] = "attachment; filename=\"" + filename + "\"";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ResultFactory.GetStaticFileResult(Request, new StaticFileResultOptions
|
return ResultFactory.GetStaticFileResult(Request, new StaticFileResultOptions
|
||||||
|
|
|
@ -78,10 +78,25 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The trailer folder name
|
/// The trailer folder name
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string TrailerFolderName = "trailers";
|
public const string TrailerFolderName = "trailers";
|
||||||
public static string ThemeSongsFolderName = "theme-music";
|
public const string ThemeSongsFolderName = "theme-music";
|
||||||
public static string ThemeSongFilename = "theme";
|
public const string ThemeSongFilename = "theme";
|
||||||
public static string ThemeVideosFolderName = "backdrops";
|
public const string ThemeVideosFolderName = "backdrops";
|
||||||
|
public const string ExtrasFolderName = "extras";
|
||||||
|
public const string BehindTheScenesFolderName = "behind the scenes";
|
||||||
|
public const string DeletedScenesFolderName = "deleted scenes";
|
||||||
|
public const string InterviewFolderName = "interviews";
|
||||||
|
public const string SceneFolderName = "scenes";
|
||||||
|
public const string SampleFolderName = "samples";
|
||||||
|
|
||||||
|
public static readonly string[] AllExtrasTypesFolderNames = {
|
||||||
|
ExtrasFolderName,
|
||||||
|
BehindTheScenesFolderName,
|
||||||
|
DeletedScenesFolderName,
|
||||||
|
InterviewFolderName,
|
||||||
|
SceneFolderName,
|
||||||
|
SampleFolderName
|
||||||
|
};
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[IgnoreDataMember]
|
||||||
public Guid[] ThemeSongIds { get; set; }
|
public Guid[] ThemeSongIds { get; set; }
|
||||||
|
@ -1276,16 +1291,15 @@ namespace MediaBrowser.Controller.Entities
|
||||||
.Select(item =>
|
.Select(item =>
|
||||||
{
|
{
|
||||||
// Try to retrieve it from the db. If we don't find it, use the resolved version
|
// Try to retrieve it from the db. If we don't find it, use the resolved version
|
||||||
var dbItem = LibraryManager.GetItemById(item.Id) as Video;
|
|
||||||
|
|
||||||
if (dbItem != null)
|
if (LibraryManager.GetItemById(item.Id) is Video dbItem)
|
||||||
{
|
{
|
||||||
item = dbItem;
|
item = dbItem;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// item is new
|
// item is new
|
||||||
item.ExtraType = MediaBrowser.Model.Entities.ExtraType.ThemeVideo;
|
item.ExtraType = Model.Entities.ExtraType.ThemeVideo;
|
||||||
}
|
}
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
|
@ -1296,33 +1310,38 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
protected virtual BaseItem[] LoadExtras(List<FileSystemMetadata> fileSystemChildren, IDirectoryService directoryService)
|
protected virtual BaseItem[] LoadExtras(List<FileSystemMetadata> fileSystemChildren, IDirectoryService directoryService)
|
||||||
{
|
{
|
||||||
var files = fileSystemChildren.Where(i => i.IsDirectory)
|
var extras = new List<Video>();
|
||||||
.SelectMany(i => FileSystem.GetFiles(i.FullName));
|
|
||||||
|
|
||||||
return LibraryManager.ResolvePaths(files, directoryService, null, new LibraryOptions())
|
var folders = fileSystemChildren.Where(i => i.IsDirectory).ToArray();
|
||||||
.OfType<Video>()
|
foreach (var extraFolderName in AllExtrasTypesFolderNames)
|
||||||
.Select(item =>
|
{
|
||||||
{
|
var files = folders
|
||||||
// Try to retrieve it from the db. If we don't find it, use the resolved version
|
.Where(i => string.Equals(i.Name, extraFolderName, StringComparison.OrdinalIgnoreCase))
|
||||||
var dbItem = LibraryManager.GetItemById(item.Id) as Video;
|
.SelectMany(i => FileSystem.GetFiles(i.FullName));
|
||||||
|
|
||||||
if (dbItem != null)
|
extras.AddRange(LibraryManager.ResolvePaths(files, directoryService, null, new LibraryOptions())
|
||||||
|
.OfType<Video>()
|
||||||
|
.Select(item =>
|
||||||
{
|
{
|
||||||
item = dbItem;
|
// Try to retrieve it from the db. If we don't find it, use the resolved version
|
||||||
}
|
if (LibraryManager.GetItemById(item.Id) is Video dbItem)
|
||||||
else
|
{
|
||||||
{
|
item = dbItem;
|
||||||
// item is new
|
}
|
||||||
item.ExtraType = MediaBrowser.Model.Entities.ExtraType.Clip;
|
|
||||||
}
|
|
||||||
|
|
||||||
return item;
|
// Use some hackery to get the extra type based on foldername
|
||||||
|
Enum.TryParse(extraFolderName.Replace(" ", ""), true, out ExtraType extraType);
|
||||||
|
item.ExtraType = extraType;
|
||||||
|
|
||||||
// Sort them so that the list can be easily compared for changes
|
return item;
|
||||||
}).OrderBy(i => i.Path).ToArray();
|
|
||||||
|
// Sort them so that the list can be easily compared for changes
|
||||||
|
}).OrderBy(i => i.Path));
|
||||||
|
}
|
||||||
|
|
||||||
|
return extras.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Task RefreshMetadata(CancellationToken cancellationToken)
|
public Task RefreshMetadata(CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
return RefreshMetadata(new MetadataRefreshOptions(new DirectoryService(Logger, FileSystem)), cancellationToken);
|
return RefreshMetadata(new MetadataRefreshOptions(new DirectoryService(Logger, FileSystem)), cancellationToken);
|
||||||
|
@ -1481,7 +1500,13 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
private async Task<bool> RefreshExtras(BaseItem item, MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)
|
private async Task<bool> RefreshExtras(BaseItem item, MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var newExtras = LoadExtras(fileSystemChildren, options.DirectoryService).Concat(LoadThemeVideos(fileSystemChildren, options.DirectoryService)).Concat(LoadThemeSongs(fileSystemChildren, options.DirectoryService));
|
var extras = LoadExtras(fileSystemChildren, options.DirectoryService);
|
||||||
|
var themeVideos = LoadThemeVideos(fileSystemChildren, options.DirectoryService);
|
||||||
|
var themeSongs = LoadThemeSongs(fileSystemChildren, options.DirectoryService);
|
||||||
|
var newExtras = new BaseItem[extras.Length + themeVideos.Length + themeSongs.Length];
|
||||||
|
extras.CopyTo(newExtras, 0);
|
||||||
|
themeVideos.CopyTo(newExtras, extras.Length);
|
||||||
|
themeSongs.CopyTo(newExtras, extras.Length + themeVideos.Length);
|
||||||
|
|
||||||
var newExtraIds = newExtras.Select(i => i.Id).ToArray();
|
var newExtraIds = newExtras.Select(i => i.Id).ToArray();
|
||||||
|
|
||||||
|
@ -1493,7 +1518,15 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
var tasks = newExtras.Select(i =>
|
var tasks = newExtras.Select(i =>
|
||||||
{
|
{
|
||||||
return RefreshMetadataForOwnedItem(i, true, new MetadataRefreshOptions(options), cancellationToken);
|
var subOptions = new MetadataRefreshOptions(options);
|
||||||
|
if (i.OwnerId != ownerId || i.ParentId != Guid.Empty)
|
||||||
|
{
|
||||||
|
i.OwnerId = ownerId;
|
||||||
|
i.ParentId = Guid.Empty;
|
||||||
|
subOptions.ForceSave = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return RefreshMetadataForOwnedItem(i, true, subOptions, cancellationToken);
|
||||||
});
|
});
|
||||||
|
|
||||||
await Task.WhenAll(tasks).ConfigureAwait(false);
|
await Task.WhenAll(tasks).ConfigureAwait(false);
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 1ba58b06b3dc28e07abae124cff78aa656fcb7e7
|
Subproject commit b0f7a9b67cc72de98dc357425e9d5c3894c7f377
|
|
@ -1,4 +1,4 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
||||||
[assembly: AssemblyVersion("10.3.2")]
|
[assembly: AssemblyVersion("10.3.3")]
|
||||||
[assembly: AssemblyFileVersion("10.3.2")]
|
[assembly: AssemblyFileVersion("10.3.3")]
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
---
|
---
|
||||||
# We just wrap `build` so this is really it
|
# We just wrap `build` so this is really it
|
||||||
name: "jellyfin"
|
name: "jellyfin"
|
||||||
version: "10.3.2"
|
version: "10.3.3"
|
||||||
packages:
|
packages:
|
||||||
- debian-package-x64
|
- debian-package-x64
|
||||||
- debian-package-armhf
|
- debian-package-armhf
|
||||||
|
|
|
@ -18,3 +18,4 @@ rpmbuild -bb SPECS/jellyfin.spec --define "_sourcedir ${SOURCE_DIR}/SOURCES/pkg-
|
||||||
# Move the artifacts out
|
# Move the artifacts out
|
||||||
mkdir -p ${ARTIFACT_DIR}/rpm
|
mkdir -p ${ARTIFACT_DIR}/rpm
|
||||||
mv /root/rpmbuild/RPMS/x86_64/jellyfin-*.rpm /root/rpmbuild/SRPMS/jellyfin-*.src.rpm ${ARTIFACT_DIR}/rpm/
|
mv /root/rpmbuild/RPMS/x86_64/jellyfin-*.rpm /root/rpmbuild/SRPMS/jellyfin-*.src.rpm ${ARTIFACT_DIR}/rpm/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
||||||
|
|
|
@ -72,9 +72,6 @@ fi
|
||||||
${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile
|
||||||
# Build the RPMs and copy out to ${package_temporary_dir}
|
# Build the RPMs and copy out to ${package_temporary_dir}
|
||||||
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}"
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}"
|
||||||
# Correct ownership on the RPMs (as current user, then as root if that fails)
|
|
||||||
chown -R "${current_user}" "${package_temporary_dir}" \
|
|
||||||
|| sudo chown -R "${current_user}" "${package_temporary_dir}"
|
|
||||||
# Move the RPMs to the output directory
|
# Move the RPMs to the output directory
|
||||||
mkdir -p "${output_dir}"
|
mkdir -p "${output_dir}"
|
||||||
mv "${package_temporary_dir}"/rpm/* "${output_dir}"
|
mv "${package_temporary_dir}"/rpm/* "${output_dir}"
|
||||||
|
|
|
@ -18,3 +18,4 @@ dpkg-buildpackage -us -uc -aarm64
|
||||||
# Move the artifacts out
|
# Move the artifacts out
|
||||||
mkdir -p ${ARTIFACT_DIR}/deb
|
mkdir -p ${ARTIFACT_DIR}/deb
|
||||||
mv /jellyfin_* ${ARTIFACT_DIR}/deb/
|
mv /jellyfin_* ${ARTIFACT_DIR}/deb/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
||||||
|
|
|
@ -30,13 +30,12 @@ case $ARCH in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# Prepare temporary package dir
|
||||||
|
mkdir -p "${package_temporary_dir}"
|
||||||
# Set up the build environment Docker image
|
# Set up the build environment Docker image
|
||||||
${docker_sudo} docker build ../.. -t "${image_name}" -f ./${DOCKERFILE}
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./${DOCKERFILE}
|
||||||
# Build the DEBs and copy out to ${package_temporary_dir}
|
# Build the DEBs and copy out to ${package_temporary_dir}
|
||||||
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}"
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}"
|
||||||
# Correct ownership on the DEBs (as current user, then as root if that fails)
|
|
||||||
chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null \
|
|
||||||
|| sudo chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null
|
|
||||||
# Move the DEBs to the output directory
|
# Move the DEBs to the output directory
|
||||||
mkdir -p "${output_dir}"
|
mkdir -p "${output_dir}"
|
||||||
mv "${package_temporary_dir}"/deb/* "${output_dir}"
|
mv "${package_temporary_dir}"/deb/* "${output_dir}"
|
||||||
|
|
|
@ -18,3 +18,4 @@ dpkg-buildpackage -us -uc -aarmhf
|
||||||
# Move the artifacts out
|
# Move the artifacts out
|
||||||
mkdir -p ${ARTIFACT_DIR}/deb
|
mkdir -p ${ARTIFACT_DIR}/deb
|
||||||
mv /jellyfin_* ${ARTIFACT_DIR}/deb/
|
mv /jellyfin_* ${ARTIFACT_DIR}/deb/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
||||||
|
|
|
@ -30,13 +30,12 @@ case $ARCH in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# Prepare temporary package dir
|
||||||
|
mkdir -p "${package_temporary_dir}"
|
||||||
# Set up the build environment Docker image
|
# Set up the build environment Docker image
|
||||||
${docker_sudo} docker build ../.. -t "${image_name}" -f ./${DOCKERFILE}
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./${DOCKERFILE}
|
||||||
# Build the DEBs and copy out to ${package_temporary_dir}
|
# Build the DEBs and copy out to ${package_temporary_dir}
|
||||||
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}"
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}"
|
||||||
# Correct ownership on the DEBs (as current user, then as root if that fails)
|
|
||||||
chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null \
|
|
||||||
|| sudo chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null
|
|
||||||
# Move the DEBs to the output directory
|
# Move the DEBs to the output directory
|
||||||
mkdir -p "${output_dir}"
|
mkdir -p "${output_dir}"
|
||||||
mv "${package_temporary_dir}"/deb/* "${output_dir}"
|
mv "${package_temporary_dir}"/deb/* "${output_dir}"
|
||||||
|
|
|
@ -17,3 +17,4 @@ dpkg-buildpackage -us -uc
|
||||||
# Move the artifacts out
|
# Move the artifacts out
|
||||||
mkdir -p ${ARTIFACT_DIR}/deb
|
mkdir -p ${ARTIFACT_DIR}/deb
|
||||||
mv /jellyfin_* ${ARTIFACT_DIR}/deb/
|
mv /jellyfin_* ${ARTIFACT_DIR}/deb/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
||||||
|
|
|
@ -19,13 +19,12 @@ else
|
||||||
docker_sudo=""
|
docker_sudo=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Prepare temporary package dir
|
||||||
|
mkdir -p "${package_temporary_dir}"
|
||||||
# Set up the build environment Docker image
|
# Set up the build environment Docker image
|
||||||
${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile
|
||||||
# Build the DEBs and copy out to ${package_temporary_dir}
|
# Build the DEBs and copy out to ${package_temporary_dir}
|
||||||
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}"
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}"
|
||||||
# Correct ownership on the DEBs (as current user, then as root if that fails)
|
|
||||||
chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null \
|
|
||||||
|| sudo chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null
|
|
||||||
# Move the DEBs to the output directory
|
# Move the DEBs to the output directory
|
||||||
mkdir -p "${output_dir}"
|
mkdir -p "${output_dir}"
|
||||||
mv "${package_temporary_dir}"/deb/* "${output_dir}"
|
mv "${package_temporary_dir}"/deb/* "${output_dir}"
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
jellyfin (10.3.3-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream version 10.3.3; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.3
|
||||||
|
|
||||||
|
-- Jellyfin Packaging Team <packaging@jellyfin.org> Fri, 17 May 2019 23:12:08 -0400
|
||||||
|
|
||||||
jellyfin (10.3.2-1) unstable; urgency=medium
|
jellyfin (10.3.2-1) unstable; urgency=medium
|
||||||
|
|
||||||
* New upstream version 10.3.2; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.2
|
* New upstream version 10.3.2; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.2
|
||||||
|
|
|
@ -18,3 +18,4 @@ rpmbuild -bb SPECS/jellyfin.spec --define "_sourcedir ${SOURCE_DIR}/SOURCES/pkg-
|
||||||
# Move the artifacts out
|
# Move the artifacts out
|
||||||
mkdir -p ${ARTIFACT_DIR}/rpm
|
mkdir -p ${ARTIFACT_DIR}/rpm
|
||||||
mv /root/rpmbuild/RPMS/x86_64/jellyfin-*.rpm /root/rpmbuild/SRPMS/jellyfin-*.src.rpm ${ARTIFACT_DIR}/rpm/
|
mv /root/rpmbuild/RPMS/x86_64/jellyfin-*.rpm /root/rpmbuild/SRPMS/jellyfin-*.src.rpm ${ARTIFACT_DIR}/rpm/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
||||||
|
|
|
@ -23,13 +23,12 @@ fi
|
||||||
|
|
||||||
./create_tarball.sh
|
./create_tarball.sh
|
||||||
|
|
||||||
|
# Prepare temporary package dir
|
||||||
|
mkdir -p "${package_temporary_dir}"
|
||||||
# Set up the build environment Docker image
|
# Set up the build environment Docker image
|
||||||
${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile
|
||||||
# Build the RPMs and copy out to ${package_temporary_dir}
|
# Build the RPMs and copy out to ${package_temporary_dir}
|
||||||
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}"
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}"
|
||||||
# Correct ownership on the RPMs (as current user, then as root if that fails)
|
|
||||||
chown -R "${current_user}" "${package_temporary_dir}" \
|
|
||||||
|| sudo chown -R "${current_user}" "${package_temporary_dir}"
|
|
||||||
# Move the RPMs to the output directory
|
# Move the RPMs to the output directory
|
||||||
mkdir -p "${output_dir}"
|
mkdir -p "${output_dir}"
|
||||||
mv "${package_temporary_dir}"/rpm/* "${output_dir}"
|
mv "${package_temporary_dir}"/rpm/* "${output_dir}"
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
Name: jellyfin
|
Name: jellyfin
|
||||||
Version: 10.3.2
|
Version: 10.3.3
|
||||||
Release: 1%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: The Free Software Media Browser
|
Summary: The Free Software Media Browser
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
|
@ -140,6 +140,8 @@ fi
|
||||||
%systemd_postun_with_restart jellyfin.service
|
%systemd_postun_with_restart jellyfin.service
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri May 17 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
|
||||||
|
- New upstream version 10.3.3; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.3
|
||||||
* Tue Apr 30 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
|
* Tue Apr 30 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
|
||||||
- New upstream version 10.3.2; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.2
|
- New upstream version 10.3.2; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.2
|
||||||
* Sat Apr 20 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
|
* Sat Apr 20 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
|
||||||
|
|
|
@ -18,3 +18,4 @@ dpkg-buildpackage -us -uc -aarm64
|
||||||
# Move the artifacts out
|
# Move the artifacts out
|
||||||
mkdir -p ${ARTIFACT_DIR}/deb
|
mkdir -p ${ARTIFACT_DIR}/deb
|
||||||
mv /jellyfin_* ${ARTIFACT_DIR}/deb/
|
mv /jellyfin_* ${ARTIFACT_DIR}/deb/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
||||||
|
|
|
@ -30,13 +30,12 @@ case $ARCH in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# Prepare temporary package dir
|
||||||
|
mkdir -p "${package_temporary_dir}"
|
||||||
# Set up the build environment Docker image
|
# Set up the build environment Docker image
|
||||||
${docker_sudo} docker build ../.. -t "${image_name}" -f ./${DOCKERFILE}
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./${DOCKERFILE}
|
||||||
# Build the DEBs and copy out to ${package_temporary_dir}
|
# Build the DEBs and copy out to ${package_temporary_dir}
|
||||||
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}"
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}"
|
||||||
# Correct ownership on the DEBs (as current user, then as root if that fails)
|
|
||||||
chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null \
|
|
||||||
|| sudo chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null
|
|
||||||
# Move the DEBs to the output directory
|
# Move the DEBs to the output directory
|
||||||
mkdir -p "${output_dir}"
|
mkdir -p "${output_dir}"
|
||||||
mv "${package_temporary_dir}"/deb/* "${output_dir}"
|
mv "${package_temporary_dir}"/deb/* "${output_dir}"
|
||||||
|
|
|
@ -18,3 +18,4 @@ dpkg-buildpackage -us -uc -aarmhf
|
||||||
# Move the artifacts out
|
# Move the artifacts out
|
||||||
mkdir -p ${ARTIFACT_DIR}/deb
|
mkdir -p ${ARTIFACT_DIR}/deb
|
||||||
mv /jellyfin_* ${ARTIFACT_DIR}/deb/
|
mv /jellyfin_* ${ARTIFACT_DIR}/deb/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
||||||
|
|
|
@ -30,13 +30,12 @@ case $ARCH in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# Prepare temporary package dir
|
||||||
|
mkdir -p "${package_temporary_dir}"
|
||||||
# Set up the build environment Docker image
|
# Set up the build environment Docker image
|
||||||
${docker_sudo} docker build ../.. -t "${image_name}" -f ./${DOCKERFILE}
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./${DOCKERFILE}
|
||||||
# Build the DEBs and copy out to ${package_temporary_dir}
|
# Build the DEBs and copy out to ${package_temporary_dir}
|
||||||
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}"
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}"
|
||||||
# Correct ownership on the DEBs (as current user, then as root if that fails)
|
|
||||||
chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null \
|
|
||||||
|| sudo chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null
|
|
||||||
# Move the DEBs to the output directory
|
# Move the DEBs to the output directory
|
||||||
mkdir -p "${output_dir}"
|
mkdir -p "${output_dir}"
|
||||||
mv "${package_temporary_dir}"/deb/* "${output_dir}"
|
mv "${package_temporary_dir}"/deb/* "${output_dir}"
|
||||||
|
|
|
@ -17,3 +17,4 @@ dpkg-buildpackage -us -uc
|
||||||
# Move the artifacts out
|
# Move the artifacts out
|
||||||
mkdir -p ${ARTIFACT_DIR}/deb
|
mkdir -p ${ARTIFACT_DIR}/deb
|
||||||
mv /jellyfin_* ${ARTIFACT_DIR}/deb/
|
mv /jellyfin_* ${ARTIFACT_DIR}/deb/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
||||||
|
|
|
@ -19,13 +19,12 @@ else
|
||||||
docker_sudo=""
|
docker_sudo=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Prepare temporary package dir
|
||||||
|
mkdir -p "${package_temporary_dir}"
|
||||||
# Set up the build environment Docker image
|
# Set up the build environment Docker image
|
||||||
${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile
|
||||||
# Build the DEBs and copy out to ${package_temporary_dir}
|
# Build the DEBs and copy out to ${package_temporary_dir}
|
||||||
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}"
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}"
|
||||||
# Correct ownership on the DEBs (as current user, then as root if that fails)
|
|
||||||
chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null \
|
|
||||||
|| sudo chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null
|
|
||||||
# Move the DEBs to the output directory
|
# Move the DEBs to the output directory
|
||||||
mkdir -p "${output_dir}"
|
mkdir -p "${output_dir}"
|
||||||
mv "${package_temporary_dir}"/deb/* "${output_dir}"
|
mv "${package_temporary_dir}"/deb/* "${output_dir}"
|
||||||
|
|
Loading…
Reference in a new issue