mirror of
https://github.com/lidarr/Lidarr
synced 2025-01-03 05:25:10 +00:00
bb196e19e1
Updated the build.sh script to refer to Lidarr.exe instead of NzbDrone.exe, to prevent linking in SysTrayApp.cs on linux, which makes Lidarr.exe require an active X11 display to run.
265 lines
6.9 KiB
Bash
Executable file
265 lines
6.9 KiB
Bash
Executable file
#! /bin/bash
|
|
msBuild='/c/Program Files (x86)/MSBuild/14.0/Bin'
|
|
outputFolder='./_output'
|
|
outputFolderMono='./_output_mono'
|
|
outputFolderOsx='./_output_osx'
|
|
outputFolderOsxApp='./_output_osx_app'
|
|
testPackageFolder='./_tests/'
|
|
testSearchPattern='*.Test/bin/x86/Release'
|
|
sourceFolder='./src'
|
|
slnFile=$sourceFolder/NzbDrone.sln
|
|
updateFolder=$outputFolder/NzbDrone.Update
|
|
updateFolderMono=$outputFolderMono/NzbDrone.Update
|
|
|
|
nuget='tools/nuget/nuget.exe';
|
|
CheckExitCode()
|
|
{
|
|
"$@"
|
|
local status=$?
|
|
if [ $status -ne 0 ]; then
|
|
echo "error with $1" >&2
|
|
exit 1
|
|
fi
|
|
return $status
|
|
}
|
|
|
|
CleanFolder()
|
|
{
|
|
local path=$1
|
|
local keepConfigFiles=$2
|
|
|
|
|
|
find $path -name "*.transform" -exec rm "{}" \;
|
|
|
|
if [ $keepConfigFiles != true ] ; then
|
|
find $path -name "*.dll.config" -exec rm "{}" \;
|
|
fi
|
|
|
|
echo "Removing FluentValidation.Resources files"
|
|
find $path -name "FluentValidation.resources.dll" -exec rm "{}" \;
|
|
find $path -name "App.config" -exec rm "{}" \;
|
|
|
|
echo "Removing .less files"
|
|
find $path -name "*.less" -exec rm "{}" \;
|
|
|
|
echo "Removing vshost files"
|
|
find $path -name "*.vshost.exe" -exec rm "{}" \;
|
|
|
|
echo "Removing dylib files"
|
|
find $path -name "*.dylib" -exec rm "{}" \;
|
|
|
|
echo "Removing Empty folders"
|
|
find $path -depth -empty -type d -exec rm -r "{}" \;
|
|
}
|
|
|
|
|
|
|
|
AddJsonNet()
|
|
{
|
|
rm $outputFolder/Newtonsoft.Json.*
|
|
cp $sourceFolder/packages/Newtonsoft.Json.*/lib/net35/*.dll $outputFolder
|
|
cp $sourceFolder/packages/Newtonsoft.Json.*/lib/net35/*.dll $outputFolder/NzbDrone.Update
|
|
}
|
|
|
|
BuildWithMSBuild()
|
|
{
|
|
export PATH=$msBuild:$PATH
|
|
CheckExitCode MSBuild.exe $slnFile //t:Clean //m
|
|
$nuget restore $slnFile
|
|
CheckExitCode MSBuild.exe $slnFile //p:Configuration=Release //p:Platform=x86 //t:Build //m //p:AllowedReferenceRelatedFileExtensions=.pdb
|
|
}
|
|
|
|
BuildWithXbuild()
|
|
{
|
|
export MONO_IOMAP=case
|
|
CheckExitCode xbuild /t:Clean $slnFile
|
|
mono $nuget restore $slnFile
|
|
CheckExitCode xbuild /p:Configuration=Release /p:Platform=x86 /t:Build /p:AllowedReferenceRelatedFileExtensions=.pdb $slnFile
|
|
}
|
|
|
|
Build()
|
|
{
|
|
echo "##teamcity[progressStart 'Build']"
|
|
|
|
rm -rf $outputFolder
|
|
|
|
if [ $runtime = "dotnet" ] ; then
|
|
BuildWithMSBuild
|
|
else
|
|
BuildWithXbuild
|
|
fi
|
|
|
|
CleanFolder $outputFolder false
|
|
|
|
AddJsonNet
|
|
|
|
echo "Removing Mono.Posix.dll"
|
|
rm $outputFolder/Mono.Posix.dll
|
|
|
|
echo "##teamcity[progressFinish 'Build']"
|
|
}
|
|
|
|
RunGulp()
|
|
{
|
|
echo "##teamcity[progressStart 'npm install']"
|
|
npm-cache install npm || CheckExitCode npm install
|
|
echo "##teamcity[progressFinish 'npm install']"
|
|
|
|
echo "##teamcity[progressStart 'Running gulp']"
|
|
CheckExitCode npm run build
|
|
echo "##teamcity[progressFinish 'Running gulp']"
|
|
}
|
|
|
|
CreateMdbs()
|
|
{
|
|
local path=$1
|
|
if [ $runtime = "dotnet" ] ; then
|
|
local pdbFiles=( $(find $path -name "*.pdb") )
|
|
for filename in "${pdbFiles[@]}"
|
|
do
|
|
if [ -e ${filename%.pdb}.dll ] ; then
|
|
tools/pdb2mdb/pdb2mdb.exe ${filename%.pdb}.dll
|
|
fi
|
|
if [ -e ${filename%.pdb}.exe ] ; then
|
|
tools/pdb2mdb/pdb2mdb.exe ${filename%.pdb}.exe
|
|
fi
|
|
done
|
|
fi
|
|
}
|
|
|
|
PackageMono()
|
|
{
|
|
echo "##teamcity[progressStart 'Creating Mono Package']"
|
|
rm -rf $outputFolderMono
|
|
cp -r $outputFolder $outputFolderMono
|
|
|
|
echo "Creating MDBs"
|
|
CreateMdbs $outputFolderMono
|
|
|
|
echo "Removing PDBs"
|
|
find $outputFolderMono -name "*.pdb" -exec rm "{}" \;
|
|
|
|
echo "Removing Service helpers"
|
|
rm -f $outputFolderMono/ServiceUninstall.*
|
|
rm -f $outputFolderMono/ServiceInstall.*
|
|
|
|
echo "Removing native windows binaries Sqlite, MediaInfo"
|
|
rm -f $outputFolderMono/sqlite3.*
|
|
rm -f $outputFolderMono/MediaInfo.*
|
|
|
|
echo "Adding NzbDrone.Core.dll.config (for dllmap)"
|
|
cp $sourceFolder/NzbDrone.Core/NzbDrone.Core.dll.config $outputFolderMono
|
|
|
|
echo "Adding CurlSharp.dll.config (for dllmap)"
|
|
cp $sourceFolder/NzbDrone.Common/CurlSharp.dll.config $outputFolderMono
|
|
|
|
echo "Renaming Lidarr.Console.exe to Lidarr.exe"
|
|
rm $outputFolderMono/Lidarr.exe*
|
|
for file in $outputFolderMono/Lidarr.Console.exe*; do
|
|
mv "$file" "${file//.Console/}"
|
|
done
|
|
|
|
echo "Removing NzbDrone.Windows"
|
|
rm $outputFolderMono/NzbDrone.Windows.*
|
|
|
|
echo "Adding NzbDrone.Mono to UpdatePackage"
|
|
cp $outputFolderMono/NzbDrone.Mono.* $updateFolderMono
|
|
|
|
echo "##teamcity[progressFinish 'Creating Mono Package']"
|
|
}
|
|
|
|
PackageOsx()
|
|
{
|
|
echo "##teamcity[progressStart 'Creating OS X Package']"
|
|
rm -rf $outputFolderOsx
|
|
cp -r $outputFolderMono $outputFolderOsx
|
|
|
|
echo "Adding sqlite dylibs"
|
|
cp $sourceFolder/Libraries/Sqlite/*.dylib $outputFolderOsx
|
|
|
|
echo "Adding MediaInfo dylib"
|
|
cp $sourceFolder/Libraries/MediaInfo/*.dylib $outputFolderOsx
|
|
|
|
echo "Adding Startup script"
|
|
cp ./osx/Lidarr $outputFolderOsx
|
|
|
|
echo "##teamcity[progressFinish 'Creating OS X Package']"
|
|
}
|
|
|
|
PackageOsxApp()
|
|
{
|
|
echo "##teamcity[progressStart 'Creating OS X App Package']"
|
|
rm -rf $outputFolderOsxApp
|
|
mkdir $outputFolderOsxApp
|
|
|
|
cp -r ./osx/Lidarr.app $outputFolderOsxApp
|
|
cp -r $outputFolderOsx $outputFolderOsxApp/Lidarr.app/Contents/MacOS
|
|
|
|
echo "##teamcity[progressFinish 'Creating OS X App Package']"
|
|
}
|
|
|
|
PackageTests()
|
|
{
|
|
echo "Packaging Tests"
|
|
echo "##teamcity[progressStart 'Creating Test Package']"
|
|
rm -rf $testPackageFolder
|
|
mkdir $testPackageFolder
|
|
|
|
find $sourceFolder -path $testSearchPattern -exec cp -r -u -T "{}" $testPackageFolder \;
|
|
|
|
if [ $runtime = "dotnet" ] ; then
|
|
$nuget install NUnit.ConsoleRunner -Version 3.2.0 -Output $testPackageFolder
|
|
else
|
|
mono $nuget install NUnit.ConsoleRunner -Version 3.2.0 -Output $testPackageFolder
|
|
fi
|
|
|
|
cp $outputFolder/*.dll $testPackageFolder
|
|
cp ./*.sh $testPackageFolder
|
|
|
|
echo "Creating MDBs for tests"
|
|
CreateMdbs $testPackageFolder
|
|
|
|
rm -f $testPackageFolder/*.log.config
|
|
|
|
CleanFolder $testPackageFolder true
|
|
|
|
echo "Adding NzbDrone.Core.dll.config (for dllmap)"
|
|
cp $sourceFolder/NzbDrone.Core/NzbDrone.Core.dll.config $testPackageFolder
|
|
|
|
echo "Adding CurlSharp.dll.config (for dllmap)"
|
|
cp $sourceFolder/NzbDrone.Common/CurlSharp.dll.config $testPackageFolder
|
|
|
|
echo "Copying CurlSharp libraries"
|
|
cp $sourceFolder/ExternalModules/CurlSharp/libs/i386/* $testPackageFolder
|
|
|
|
echo "##teamcity[progressFinish 'Creating Test Package']"
|
|
}
|
|
|
|
CleanupWindowsPackage()
|
|
{
|
|
echo "Removing NzbDrone.Mono"
|
|
rm -f $outputFolder/NzbDrone.Mono.*
|
|
|
|
echo "Adding NzbDrone.Windows to UpdatePackage"
|
|
cp $outputFolder/NzbDrone.Windows.* $updateFolder
|
|
}
|
|
|
|
# Use mono or .net depending on OS
|
|
case "$(uname -s)" in
|
|
CYGWIN*|MINGW32*|MINGW64*|MSYS*)
|
|
# on windows, use dotnet
|
|
runtime="dotnet"
|
|
;;
|
|
*)
|
|
# otherwise use mono
|
|
runtime="mono"
|
|
;;
|
|
esac
|
|
|
|
Build
|
|
RunGulp
|
|
PackageMono
|
|
PackageOsx
|
|
PackageOsxApp
|
|
PackageTests
|
|
CleanupWindowsPackage
|