2016-03-07 12:20:50 -08:00
using System ;
using System.Collections.Generic ;
using System.IO ;
using System.IO.Compression ;
using System.Runtime.InteropServices ;
using Microsoft.DotNet.Cli.Build.Framework ;
using Microsoft.Extensions.PlatformAbstractions ;
using static Microsoft . DotNet . Cli . Build . Framework . BuildHelpers ;
namespace Microsoft.DotNet.Cli.Build
{
public class InstallerTargets
{
[ Target ( nameof ( MsiTargets . GenerateMsis ) ,
nameof ( MsiTargets . GenerateBundle ) ,
2016-03-09 13:26:37 -08:00
nameof ( PkgTargets . GeneratePkgs ) ,
2016-03-08 23:23:15 -08:00
nameof ( InstallerTargets . GenerateDebs ) ) ]
2016-03-07 12:20:50 -08:00
public static BuildTargetResult GenerateInstaller ( BuildTargetContext c )
{
return c . Success ( ) ;
}
2016-03-08 23:23:15 -08:00
[ Target ( nameof ( InstallerTargets . GenerateSdkDeb ) ,
nameof ( InstallerTargets . GenerateSharedFrameworkDeb ) ,
nameof ( InstallerTargets . GenerateSharedHostDeb ) ) ]
2016-03-07 12:20:50 -08:00
[BuildPlatforms(BuildPlatform.Ubuntu)]
2016-03-08 23:23:15 -08:00
public static BuildTargetResult GenerateDebs ( BuildTargetContext c )
{
return c . Success ( ) ;
}
[Target]
[BuildPlatforms(BuildPlatform.Ubuntu)]
public static BuildTargetResult GenerateSdkDeb ( BuildTargetContext c )
2016-03-07 12:20:50 -08:00
{
2016-03-08 23:33:18 +00:00
var channel = c . BuildContext . Get < string > ( "Channel" ) . ToLower ( ) ;
var packageName = Monikers . GetDebianPackageName ( c ) ;
var version = c . BuildContext . Get < BuildVersion > ( "BuildVersion" ) . SimpleVersion ;
2016-03-08 13:39:41 -08:00
var debFile = c . BuildContext . Get < string > ( "SdkInstallerFile" ) ;
2016-03-08 23:33:18 +00:00
var manPagesDir = Path . Combine ( Dirs . RepoRoot , "Documentation" , "manpages" ) ;
2016-03-09 20:15:06 +00:00
var previousVersionURL = $"https://dotnetcli.blob.core.windows.net/dotnet/{channel}/Installers/Latest/dotnet-ubuntu-x64.latest.deb" ;
2016-03-08 23:33:18 +00:00
2016-03-10 00:21:09 -08:00
var objRoot = Path . Combine ( Dirs . Output , "obj" , "debian" , "sdk" ) ;
if ( Directory . Exists ( objRoot ) )
{
Directory . Delete ( objRoot , true ) ;
}
Directory . CreateDirectory ( objRoot ) ;
2016-03-08 23:33:18 +00:00
Cmd ( Path . Combine ( Dirs . RepoRoot , "scripts" , "package" , "package-debian.sh" ) ,
2016-03-10 00:21:09 -08:00
"-v" , version , "-i" , Dirs . Stage2 , "-o" , debFile , "-p" , packageName , "-m" , manPagesDir , "--previous-version-url" , previousVersionURL , "--obj-root" , objRoot )
2016-03-07 12:20:50 -08:00
. Execute ( )
. EnsureSuccessful ( ) ;
return c . Success ( ) ;
}
2016-03-08 23:23:15 -08:00
[Target]
[BuildPlatforms(BuildPlatform.Ubuntu)]
public static BuildTargetResult GenerateSharedHostDeb ( BuildTargetContext c )
{
2016-03-09 17:53:08 -08:00
var version = c . BuildContext . Get < BuildVersion > ( "BuildVersion" ) . SimpleVersion ;
var inputRoot = c . BuildContext . Get < string > ( "SharedHostPublishRoot" ) ;
var debFile = c . BuildContext . Get < string > ( "SharedHostInstallerFile" ) ;
var objRoot = Path . Combine ( Dirs . Output , "obj" , "debian" , "sharedhost" ) ;
if ( Directory . Exists ( objRoot ) )
{
Directory . Delete ( objRoot , true ) ;
}
Directory . CreateDirectory ( objRoot ) ;
Cmd ( Path . Combine ( Dirs . RepoRoot , "scripts" , "package" , "package-sharedhost-debian.sh" ) ,
"--input" , inputRoot , "--output" , debFile , "--obj-root" , objRoot , "--version" , version )
. Execute ( )
. EnsureSuccessful ( ) ;
2016-03-08 23:23:15 -08:00
return c . Success ( ) ;
}
[Target]
[BuildPlatforms(BuildPlatform.Ubuntu)]
public static BuildTargetResult GenerateSharedFrameworkDeb ( BuildTargetContext c )
{
2016-03-09 17:33:05 -08:00
var packageName = Monikers . GetDebianSharedFrameworkPackageName ( c ) ;
var version = c . BuildContext . Get < BuildVersion > ( "BuildVersion" ) . SimpleVersion ;
var inputRoot = c . BuildContext . Get < string > ( "SharedFrameworkPublishRoot" ) ;
var debFile = c . BuildContext . Get < string > ( "SharedFrameworkInstallerFile" ) ;
var objRoot = Path . Combine ( Dirs . Output , "obj" , "debian" , "sharedframework" ) ;
if ( Directory . Exists ( objRoot ) )
{
Directory . Delete ( objRoot , true ) ;
}
Directory . CreateDirectory ( objRoot ) ;
Cmd ( Path . Combine ( Dirs . RepoRoot , "scripts" , "package" , "package-sharedframework-debian.sh" ) ,
"--input" , inputRoot , "--output" , debFile , "--package-name" , packageName ,
"--framework-nuget-name" , SharedFrameworkTargets . SharedFrameworkName ,
"--framework-nuget-version" , c . BuildContext . Get < string > ( "SharedFrameworkNugetVersion" ) ,
"--obj-root" , objRoot , "--version" , version )
. Execute ( )
. EnsureSuccessful ( ) ;
2016-03-08 23:23:15 -08:00
return c . Success ( ) ;
}
2016-03-07 12:20:50 -08:00
}
}