mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 19:17:24 -05:00 
			
		
		
		
	Move web-build into Debian build rules
This removes the convoluted steps in docker-build.sh in favour of integrating the web-build sequence into the Debian rules file explicitly. This will allow the web-build to work properly outside of the boutique Docker container we build, thus allowing it to be build properly directly on a target system with dpkg-buildpackage.
This commit is contained in:
		
							parent
							
								
									fdb0c3a1df
								
							
						
					
					
						commit
						07d45e82f0
					
				@ -12,7 +12,7 @@ ENV ARCH=amd64
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Prepare Debian build environment
 | 
					# Prepare Debian build environment
 | 
				
			||||||
RUN apt-get update \
 | 
					RUN apt-get update \
 | 
				
			||||||
 && apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev libssl-dev libssl1.1 liblttng-ust0
 | 
					 && apt-get install -y apt-transport-https debhelper gnupg wget npm devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev libssl-dev libssl1.1 liblttng-ust0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Install dotnet repository
 | 
					# Install dotnet repository
 | 
				
			||||||
# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current
 | 
					# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current
 | 
				
			||||||
@ -21,12 +21,6 @@ RUN wget https://download.visualstudio.microsoft.com/download/pr/228832ea-805f-4
 | 
				
			|||||||
 && tar -xzf dotnet-sdk.tar.gz -C dotnet-sdk \
 | 
					 && tar -xzf dotnet-sdk.tar.gz -C dotnet-sdk \
 | 
				
			||||||
 && ln -s $( pwd )/dotnet-sdk/dotnet /usr/bin/dotnet
 | 
					 && ln -s $( pwd )/dotnet-sdk/dotnet /usr/bin/dotnet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Install yarn package manager
 | 
					 | 
				
			||||||
RUN wget -q -O- https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
 | 
					 | 
				
			||||||
 && echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
 | 
					 | 
				
			||||||
 && apt update \
 | 
					 | 
				
			||||||
 && apt install -y yarn
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Link to docker-build script
 | 
					# Link to docker-build script
 | 
				
			||||||
RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh
 | 
					RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -11,20 +11,6 @@ pushd ${SOURCE_DIR}
 | 
				
			|||||||
# Remove build-dep for dotnet-sdk-2.2, since it's not a package in this image
 | 
					# Remove build-dep for dotnet-sdk-2.2, since it's not a package in this image
 | 
				
			||||||
sed -i '/dotnet-sdk-2.2,/d' debian/control
 | 
					sed -i '/dotnet-sdk-2.2,/d' debian/control
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Clone down and build Web frontend
 | 
					 | 
				
			||||||
web_build_dir="$( mktemp -d )"
 | 
					 | 
				
			||||||
web_target="${SOURCE_DIR}/MediaBrowser.WebDashboard/jellyfin-web"
 | 
					 | 
				
			||||||
git clone https://github.com/jellyfin/jellyfin-web.git ${web_build_dir}/
 | 
					 | 
				
			||||||
pushd ${web_build_dir}
 | 
					 | 
				
			||||||
if [[ -n ${web_branch} ]]; then
 | 
					 | 
				
			||||||
    checkout -b origin/${web_branch}
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
yarn install
 | 
					 | 
				
			||||||
mkdir -p ${web_target}
 | 
					 | 
				
			||||||
mv dist/* ${web_target}/
 | 
					 | 
				
			||||||
popd
 | 
					 | 
				
			||||||
rm -rf ${web_build_dir}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Build DEB
 | 
					# Build DEB
 | 
				
			||||||
dpkg-buildpackage -us -uc
 | 
					dpkg-buildpackage -us -uc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,9 @@ Build-Depends:  debhelper (>= 9),
 | 
				
			|||||||
                libcurl4-openssl-dev,
 | 
					                libcurl4-openssl-dev,
 | 
				
			||||||
                libfontconfig1-dev,
 | 
					                libfontconfig1-dev,
 | 
				
			||||||
                libfreetype6-dev,
 | 
					                libfreetype6-dev,
 | 
				
			||||||
                libssl-dev
 | 
					                libssl-dev,
 | 
				
			||||||
 | 
					                wget,
 | 
				
			||||||
 | 
					                npm | nodejs
 | 
				
			||||||
Standards-Version: 3.9.4
 | 
					Standards-Version: 3.9.4
 | 
				
			||||||
Homepage: https://jellyfin.media/
 | 
					Homepage: https://jellyfin.media/
 | 
				
			||||||
Vcs-Git: https://github.org/jellyfin/jellyfin.git
 | 
					Vcs-Git: https://github.org/jellyfin/jellyfin.git
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										15
									
								
								deployment/debian-package-x64/pkg-src/rules
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										15
									
								
								deployment/debian-package-x64/pkg-src/rules
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							@ -2,6 +2,8 @@
 | 
				
			|||||||
CONFIG := Release
 | 
					CONFIG := Release
 | 
				
			||||||
TERM := xterm
 | 
					TERM := xterm
 | 
				
			||||||
SHELL := /bin/bash
 | 
					SHELL := /bin/bash
 | 
				
			||||||
 | 
					WEB_TARGET := $(CURDIR)/MediaBrowser.WebDashboard/jellyfin-web
 | 
				
			||||||
 | 
					WEB_VERSION := $(shell sed -n -e 's/^version: "\(.*\)"/\1/p' $(CURDIR)/build.yaml)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HOST_ARCH := $(shell arch)
 | 
					HOST_ARCH := $(shell arch)
 | 
				
			||||||
BUILD_ARCH := ${DEB_HOST_MULTIARCH}
 | 
					BUILD_ARCH := ${DEB_HOST_MULTIARCH}
 | 
				
			||||||
@ -39,12 +41,25 @@ override_dh_auto_test:
 | 
				
			|||||||
override_dh_clistrip:
 | 
					override_dh_clistrip:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
override_dh_auto_build:
 | 
					override_dh_auto_build:
 | 
				
			||||||
 | 
						echo $(WEB_VERSION)
 | 
				
			||||||
 | 
						# Clone down and build Web frontend
 | 
				
			||||||
 | 
						mkdir -p $(WEB_TARGET)
 | 
				
			||||||
 | 
						wget -O web-src.tgz https://github.com/jellyfin/jellyfin-web/archive/v$(WEB_VERSION).tar.gz || wget -O web-src.tgz https://github.com/jellyfin/jellyfin-web/archive/master.tar.gz
 | 
				
			||||||
 | 
						mkdir -p $(CURDIR)/web
 | 
				
			||||||
 | 
						tar -xzf web-src.tgz -C $(CURDIR)/web/ --strip 1
 | 
				
			||||||
 | 
						cd $(CURDIR)/web/ && npm install yarn
 | 
				
			||||||
 | 
						cd $(CURDIR)/web/ && node_modules/yarn/bin/yarn install
 | 
				
			||||||
 | 
						mv $(CURDIR)/web/dist/* $(WEB_TARGET)/
 | 
				
			||||||
 | 
						# Build the application
 | 
				
			||||||
	dotnet publish --configuration $(CONFIG) --output='$(CURDIR)/usr/lib/jellyfin/bin' --self-contained --runtime $(DOTNETRUNTIME) \
 | 
						dotnet publish --configuration $(CONFIG) --output='$(CURDIR)/usr/lib/jellyfin/bin' --self-contained --runtime $(DOTNETRUNTIME) \
 | 
				
			||||||
		"-p:GenerateDocumentationFile=false;DebugSymbols=false;DebugType=none" Jellyfin.Server
 | 
							"-p:GenerateDocumentationFile=false;DebugSymbols=false;DebugType=none" Jellyfin.Server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
override_dh_auto_clean:
 | 
					override_dh_auto_clean:
 | 
				
			||||||
	dotnet clean -maxcpucount:1 --configuration $(CONFIG) Jellyfin.Server || true
 | 
						dotnet clean -maxcpucount:1 --configuration $(CONFIG) Jellyfin.Server || true
 | 
				
			||||||
 | 
						rm -f  '$(CURDIR)/web-src.tgz'
 | 
				
			||||||
	rm -rf '$(CURDIR)/usr'
 | 
						rm -rf '$(CURDIR)/usr'
 | 
				
			||||||
 | 
						rm -rf '$(CURDIR)/web'
 | 
				
			||||||
 | 
						rm -rf '$(WEB_TARGET)'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Force the service name to jellyfin even if we're building jellyfin-nightly
 | 
					# Force the service name to jellyfin even if we're building jellyfin-nightly
 | 
				
			||||||
override_dh_installinit:
 | 
					override_dh_installinit:
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user