Skip to content

Commit

Permalink
v3 Binaries
Browse files Browse the repository at this point in the history
  • Loading branch information
markus101 authored and Taloth committed Dec 29, 2018
1 parent ef70df1 commit adaf428
Show file tree
Hide file tree
Showing 89 changed files with 366 additions and 303 deletions.
168 changes: 109 additions & 59 deletions build.sh
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
#! /bin/bash
msBuild='/c/Program Files (x86)/MSBuild/14.0/Bin'
outputFolder='./_output'
outputFolderMono='./_output_mono'
outputFolderOsx='./_output_osx'
outputFolderOsxApp='./_output_osx_app'
outputFolderLinux='./_output_linux'
outputFolderMacOS='./_output_macos'
outputFolderMacOSApp='./_output_macos_app'
testPackageFolder='./_tests/'
testSearchPattern='*.Test/bin/x86/Release'
sourceFolder='./src'
slnFile=$sourceFolder/NzbDrone.sln
updateFolder=$outputFolder/NzbDrone.Update
updateFolderMono=$outputFolderMono/NzbDrone.Update
slnFile=$sourceFolder/Sonarr.sln
updateFolder=$outputFolder/Sonarr.Update
updateFolderMono=$outputFolderLinux/Sonarr.Update

nuget='tools/nuget/nuget.exe';
CheckExitCode()
Expand All @@ -23,12 +23,23 @@ CheckExitCode()
return $status
}

ProgressStart()
{
echo "##teamcity[blockOpened name='$1']"
echo "##teamcity[progressStart '$1']"
}

ProgressEnd()
{
echo "##teamcity[progressFinish '$1']"
echo "##teamcity[blockClosed name='$1']"
}

CleanFolder()
{
local path=$1
local keepConfigFiles=$2


find $path -name "*.transform" -exec rm "{}" \;

if [ $keepConfigFiles != true ] ; then
Expand Down Expand Up @@ -67,7 +78,7 @@ BuildWithXbuild()

Build()
{
echo "##teamcity[progressStart 'Build']"
ProgressStart 'Build'

rm -rf $outputFolder

Expand All @@ -82,7 +93,7 @@ Build()
echo "Removing Mono.Posix.dll"
rm $outputFolder/Mono.Posix.dll

echo "##teamcity[progressFinish 'Build']"
ProgressEnd 'Build'
}

RunGulp()
Expand All @@ -91,9 +102,9 @@ RunGulp()
yarn install
ProgressEnd 'yarn install'

echo "##teamcity[progressStart 'Running gulp']"
ProgressStart 'Running gulp'
CheckExitCode yarn run build --production
echo "##teamcity[progressFinish 'Running gulp']"
ProgressEnd 'Running gulp'
}

CreateMdbs()
Expand All @@ -115,79 +126,103 @@ CreateMdbs()

PackageMono()
{
echo "##teamcity[progressStart 'Creating Mono Package']"
rm -rf $outputFolderMono
cp -r $outputFolder $outputFolderMono
ProgressStart 'Creating Mono Package'

rm -rf $outputFolderLinux

echo "Copying Binaries"
cp -r $outputFolder $outputFolderLinux

echo "Creating MDBs"
CreateMdbs $outputFolderMono
CreateMdbs $outputFolderLinux

echo "Removing PDBs"
find $outputFolderMono -name "*.pdb" -exec rm "{}" \;
find $outputFolderLinux -name "*.pdb" -exec rm "{}" \;

echo "Removing Service helpers"
rm -f $outputFolderMono/ServiceUninstall.*
rm -f $outputFolderMono/ServiceInstall.*
rm -f $outputFolderLinux/ServiceUninstall.*
rm -f $outputFolderLinux/ServiceInstall.*

echo "Removing native windows binaries Sqlite, MediaInfo"
rm -f $outputFolderMono/sqlite3.*
rm -f $outputFolderMono/MediaInfo.*
rm -f $outputFolderLinux/sqlite3.*
rm -f $outputFolderLinux/MediaInfo.*

echo "Adding NzbDrone.Core.dll.config (for dllmap)"
cp $sourceFolder/NzbDrone.Core/NzbDrone.Core.dll.config $outputFolderMono
echo "Adding Sonarr.Core.dll.config (for dllmap)"
cp $sourceFolder/NzbDrone.Core/Sonarr.Core.dll.config $outputFolderLinux

echo "Adding CurlSharp.dll.config (for dllmap)"
cp $sourceFolder/NzbDrone.Common/CurlSharp.dll.config $outputFolderMono
cp $sourceFolder/NzbDrone.Common/CurlSharp.dll.config $outputFolderLinux

echo "Renaming NzbDrone.Console.exe to NzbDrone.exe"
rm $outputFolderMono/NzbDrone.exe*
for file in $outputFolderMono/NzbDrone.Console.exe*; do
echo "Renaming Sonarr.Console.exe to Sonarr.exe"
rm $outputFolderLinux/Sonarr.exe*
for file in $outputFolderLinux/Sonarr.Console.exe*; do
mv "$file" "${file//.Console/}"
done

echo "Removing NzbDrone.Windows"
rm $outputFolderMono/NzbDrone.Windows.*
echo "Removing Sonarr.Windows"
rm $outputFolderLinux/Sonarr.Windows.*

echo "Adding NzbDrone.Mono to UpdatePackage"
cp $outputFolderMono/NzbDrone.Mono.* $updateFolderMono
echo "Adding Sonarr.Mono to UpdatePackage"
cp $outputFolderLinux/Sonarr.Mono.* $updateFolderMono

echo "##teamcity[progressFinish 'Creating Mono Package']"
ProgressEnd 'Creating Mono Package'
}

PackageOsx()
PackageMacOS()
{
echo "##teamcity[progressStart 'Creating OS X Package']"
rm -rf $outputFolderOsx
cp -r $outputFolderMono $outputFolderOsx
ProgressStart 'Creating MacOS Package'

rm -rf $outputFolderMacOS
mkdir $outputFolderMacOS

echo "Adding Startup script"
cp ./macOS/Sonarr $outputFolderMacOS
dos2unix $outputFolderMacOS/Sonarr

echo "Copying Binaries"
cp -r $outputFolderLinux/* $outputFolderMacOS

echo "Adding sqlite dylibs"
cp $sourceFolder/Libraries/Sqlite/*.dylib $outputFolderOsx
cp $sourceFolder/Libraries/Sqlite/*.dylib $outputFolderMacOS

echo "Adding MediaInfo dylib"
cp $sourceFolder/Libraries/MediaInfo/*.dylib $outputFolderOsx

echo "Adding Startup script"
cp ./osx/Sonarr $outputFolderOsx
cp $sourceFolder/Libraries/MediaInfo/*.dylib $outputFolderMacOS

echo "##teamcity[progressFinish 'Creating OS X Package']"
ProgressEnd 'Creating MacOS Package'
}

PackageOsxApp()
PackageMacOSApp()
{
echo "##teamcity[progressStart 'Creating OS X App Package']"
rm -rf $outputFolderOsxApp
mkdir $outputFolderOsxApp
ProgressStart 'Creating macOS App Package'

cp -r ./osx/Sonarr.app $outputFolderOsxApp
cp -r $outputFolderOsx $outputFolderOsxApp/Sonarr.app/Contents/MacOS
rm -rf $outputFolderMacOSApp
mkdir $outputFolderMacOSApp
cp -r ./macOS/Sonarr.app $outputFolderMacOSApp
mkdir -p $outputFolderMacOSApp/Sonarr.app/Contents/MacOS

echo "##teamcity[progressFinish 'Creating OS X App Package']"
echo "Adding Startup script"
cp ./macOS/Sonarr $outputFolderMacOSApp/Sonarr.app/Contents/MacOS
dos2unix $outputFolderMacOSApp/Sonarr.app/Contents/MacOS/Sonarr

echo "Copying Binaries"
cp -r $outputFolderLinux/* $outputFolderMacOSApp/Sonarr.app/Contents/MacOS

echo "Adding sqlite dylibs"
cp $sourceFolder/Libraries/Sqlite/*.dylib $outputFolderMacOSApp/Sonarr.app/Contents/MacOS

echo "Adding MediaInfo dylib"
cp $sourceFolder/Libraries/MediaInfo/*.dylib $outputFolderMacOSApp/Sonarr.app/Contents/MacOS

echo "Removing Update Folder"
rm -r $outputFolderMacOSApp/Sonarr.app/Contents/MacOS/Sonarr.Update

ProgressEnd 'Creating macOS App Package'
}

PackageTests()
{
echo "Packaging Tests"
echo "##teamcity[progressStart 'Creating Test Package']"
ProgressStart 'Creating Test Package'

rm -rf $testPackageFolder
mkdir $testPackageFolder

Expand All @@ -209,25 +244,39 @@ PackageTests()

CleanFolder $testPackageFolder true

echo "Adding NzbDrone.Core.dll.config (for dllmap)"
cp $sourceFolder/NzbDrone.Core/NzbDrone.Core.dll.config $testPackageFolder
echo "Adding Sonarr.Core.dll.config (for dllmap)"
cp $sourceFolder/NzbDrone.Core/Sonarr.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']"
ProgressEnd 'Creating Test Package'
}

CleanupWindowsPackage()
{
echo "Removing NzbDrone.Mono"
rm -f $outputFolder/NzbDrone.Mono.*
ProgressStart 'Cleaning Windows Package'

echo "Removing Sonarr.Mono"
rm -f $outputFolder/Sonarr.Mono.*

echo "Adding Sonarr.Windows to UpdatePackage"
cp $outputFolder/Sonarr.Windows.* $updateFolder

echo "Adding NzbDrone.Windows to UpdatePackage"
cp $outputFolder/NzbDrone.Windows.* $updateFolder
ProgressEnd 'Cleaning Windows Package'
}

PublishArtifacts()
{
echo "##teamcity[publishArtifacts '_tests/** => tests.zip']"
echo "##teamcity[publishArtifacts '$outputFolder/** => Sonarr.$BRANCH.$BUILD_NUMBER.windows.zip!Sonarr']"
echo "##teamcity[publishArtifacts '$outputFolderLinux/** => Sonarr.$BRANCH.$BUILD_NUMBER.linux.tar.gz!Sonarr']"
echo "##teamcity[publishArtifacts '$outputFolderMacOS/** => Sonarr.$BRANCH.$BUILD_NUMBER.macos.tar.gz!Sonarr']"
echo "##teamcity[publishArtifacts '$outputFolderMacOSApp/** => Sonarr.$BRANCH.$BUILD_NUMBER.macos.zip']"
echo "##teamcity[publishArtifacts 'debian => debian.zip/debian']"
}

# Use mono or .net depending on OS
Expand All @@ -245,7 +294,8 @@ esac
Build
RunGulp
PackageMono
PackageOsx
PackageOsxApp
PackageMacOS
PackageMacOSApp
PackageTests
CleanupWindowsPackage
PublishArtifacts
8 changes: 4 additions & 4 deletions osx/Sonarr → macOS/Sonarr
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
DIR=$(cd "$(dirname "$0")"; pwd)

#change these values to match your app
EXE_PATH="$DIR/NzbDrone.exe"
EXE_PATH="$DIR/Sonarr.exe"
APPNAME="Sonarr"

#set up environment
Expand All @@ -31,8 +31,8 @@ fi
export DYLD_FALLBACK_LIBRARY_PATH="$DYLD_FALLBACK_LIBRARY_PATH:$HOME/lib:/usr/local/lib:/lib:/usr/lib"

#mono version check
REQUIRED_MAJOR=3
REQUIRED_MINOR=10
REQUIRED_MAJOR=4
REQUIRED_MINOR=6

VERSION_TITLE="Cannot launch $APPNAME"
VERSION_MSG="$APPNAME requires Mono Runtime Environment(MRE) $REQUIRED_MAJOR.$REQUIRED_MINOR or later."
Expand All @@ -59,4 +59,4 @@ fi
MONO_EXEC="exec mono --debug"

#run app using mono
$MONO_EXEC "$EXE_PATH"
$MONO_EXEC "$EXE_PATH"
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>2.0</string>
<string>3.0</string>
<key>CFBundleSignature</key>
<string>xmmd</string>
<key>CFBundleVersion</key>
<string>2.0</string>
<string>3.0</string>
<key>NSAppleScriptEnabled</key>
<string>YES</string>
</dict>
Expand Down
Binary file added macOS/Sonarr.app/Contents/Resources/sonarr.icns
Binary file not shown.
Binary file removed osx/Sonarr.app/Contents/Resources/sonarr.icns
Binary file not shown.
8 changes: 6 additions & 2 deletions setup/build.bat
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
REM SET BUILD_NUMBER=1
REM SET branch=develop
inno\ISCC.exe nzbdrone.iss
REM SET BRANCH=develop
echo ##teamcity[progressStart 'Building setup file']
inno\ISCC.exe nzbdrone.iss
echo ##teamcity[progressFinish 'Building setup file']

echo ##teamcity[publishArtifacts 'setup\output\*.exe']

0 comments on commit adaf428

Please sign in to comment.