Merge pull request #2472 from MichaelSimons/debianbuild
Add support for Debian CLI builds
This commit is contained in:
commit
859a2220f1
16 changed files with 192 additions and 5 deletions
|
@ -21,7 +21,7 @@
|
|||
"ubuntu.14.04-x64": {},
|
||||
"centos.7-x64": {},
|
||||
"rhel.7.2-x64": {},
|
||||
"debian.8.2-x64": {}
|
||||
"debian.8-x64": {}
|
||||
},
|
||||
|
||||
"runtimeOptions": {
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
"ubuntu.14.04-x64": {},
|
||||
"centos.7-x64": {},
|
||||
"rhel.7.2-x64": {},
|
||||
"debian.8.2-x64": {}
|
||||
"debian.8-x64": {}
|
||||
},
|
||||
"runtimeOptions": {
|
||||
"somethingString": "anything",
|
||||
|
|
|
@ -9,7 +9,7 @@ def project = GithubProject
|
|||
def branch = GithubBranchName
|
||||
def isPR = true
|
||||
|
||||
def platformList = ['Ubuntu:x64:Debug', 'Ubuntu:x64:Release', 'OSX:x64:Release', 'Windows_NT:x64:Release', 'Windows_NT:x86:Debug', 'RHEL7.2:x64:Release', 'CentOS7.1:x64:Debug']
|
||||
def platformList = ['Debian8.2:x64:Debug', 'Ubuntu:x64:Release', 'OSX:x64:Release', 'Windows_NT:x64:Release', 'Windows_NT:x86:Debug', 'RHEL7.2:x64:Release', 'CentOS7.1:x64:Debug']
|
||||
|
||||
def static getBuildJobName(def configuration, def os, def architecture) {
|
||||
return configuration.toLowerCase() + '_' + os.toLowerCase() + '_' + architecture.toLowerCase()
|
||||
|
|
|
@ -27,6 +27,10 @@
|
|||
<OSGroup>Linux</OSGroup>
|
||||
<Platform>amd64</Platform>
|
||||
</Project>
|
||||
<Project Condition="'$(TargetsLinux)' == 'true' and '$(DistroName)' == 'debian'" Include="debian/Microsoft.NETCore.DotNetHost.pkgproj">
|
||||
<OSGroup>Linux</OSGroup>
|
||||
<Platform>amd64</Platform>
|
||||
</Project>
|
||||
<Project Condition="'$(TargetsOSX)' == 'true'" Include="osx/Microsoft.NETCore.DotNetHost.pkgproj">
|
||||
<OSGroup>OSX</OSGroup>
|
||||
<Platform>amd64</Platform>
|
||||
|
|
|
@ -27,6 +27,9 @@
|
|||
<ProjectReference Include="ubuntu\Microsoft.NETCore.DotNetHost.pkgproj">
|
||||
<Platform>amd64</Platform>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="debian\Microsoft.NETCore.DotNetHost.pkgproj">
|
||||
<Platform>amd64</Platform>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
|
||||
|
|
|
@ -27,6 +27,10 @@
|
|||
<OSGroup>Linux</OSGroup>
|
||||
<Platform>amd64</Platform>
|
||||
</Project>
|
||||
<Project Condition="'$(TargetsLinux)' == 'true' and '$(DistroName)' == 'debian'" Include="debian/Microsoft.NETCore.DotNetHostPolicy.pkgproj">
|
||||
<OSGroup>Linux</OSGroup>
|
||||
<Platform>amd64</Platform>
|
||||
</Project>
|
||||
<Project Condition="'$(TargetsOSX)' == 'true'" Include="osx/Microsoft.NETCore.DotNetHostPolicy.pkgproj">
|
||||
<OSGroup>OSX</OSGroup>
|
||||
<Platform>amd64</Platform>
|
||||
|
|
|
@ -30,6 +30,9 @@
|
|||
<ProjectReference Include="ubuntu\Microsoft.NETCore.DotNetHostPolicy.pkgproj">
|
||||
<Platform>amd64</Platform>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="debian\Microsoft.NETCore.DotNetHostPolicy.pkgproj">
|
||||
<Platform>amd64</Platform>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
|
||||
|
|
|
@ -27,6 +27,10 @@
|
|||
<OSGroup>Linux</OSGroup>
|
||||
<Platform>amd64</Platform>
|
||||
</Project>
|
||||
<Project Condition="'$(TargetsLinux)' == 'true' and '$(DistroName)' == 'debian'" Include="debian/Microsoft.NETCore.DotNetHostResolver.pkgproj">
|
||||
<OSGroup>Linux</OSGroup>
|
||||
<Platform>amd64</Platform>
|
||||
</Project>
|
||||
<Project Condition="'$(TargetsOSX)' == 'true'" Include="osx/Microsoft.NETCore.DotNetHostResolver.pkgproj">
|
||||
<OSGroup>OSX</OSGroup>
|
||||
<Platform>amd64</Platform>
|
||||
|
|
|
@ -30,6 +30,9 @@
|
|||
<ProjectReference Include="ubuntu\Microsoft.NETCore.DotNetHostResolver.pkgproj">
|
||||
<Platform>amd64</Platform>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="debian\Microsoft.NETCore.DotNetHostResolver.pkgproj">
|
||||
<Platform>amd64</Platform>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<Version>$(HostVersion)</Version>
|
||||
<SkipPackageFileCheck>true</SkipPackageFileCheck>
|
||||
<MinOSForArch>debian.8</MinOSForArch>
|
||||
<PackageTargetRuntime>$(MinOSForArch)-$(PackagePlatform)</PackageTargetRuntime>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ArchitectureSpecificNativeFile Include="$(DotNetHostBinDir)/dotnet" />
|
||||
|
||||
<File Include="@(ArchitectureSpecificNativeFile)">
|
||||
<TargetPath>runtimes/$(PackageTargetRuntime)/native</TargetPath>
|
||||
</File>
|
||||
<File Include="$(ProjectDir)/version.txt" />
|
||||
</ItemGroup>
|
||||
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
|
||||
</Project>
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<Version>$(HostPolicyVersion)</Version>
|
||||
<SkipPackageFileCheck>true</SkipPackageFileCheck>
|
||||
<MinOSForArch>debian.8</MinOSForArch>
|
||||
<PackageTargetRuntime>$(MinOSForArch)-$(PackagePlatform)</PackageTargetRuntime>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Dependency Include="Microsoft.NETCore.DotNetHostResolver">
|
||||
<Version>$(HostResolverFullVersion)</Version>
|
||||
</Dependency>
|
||||
|
||||
<ArchitectureSpecificNativeFile Include="$(DotNetHostBinDir)/libhostpolicy.so"/>
|
||||
|
||||
<File Include="@(ArchitectureSpecificNativeFile)">
|
||||
<TargetPath>runtimes/$(PackageTargetRuntime)/native</TargetPath>
|
||||
</File>
|
||||
<File Include="$(ProjectDir)/version.txt" />
|
||||
</ItemGroup>
|
||||
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
|
||||
</Project>
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<Version>$(HostResolverVersion)</Version>
|
||||
<SkipPackageFileCheck>true</SkipPackageFileCheck>
|
||||
<MinOSForArch>debian.8</MinOSForArch>
|
||||
<PackageTargetRuntime>$(MinOSForArch)-$(PackagePlatform)</PackageTargetRuntime>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Dependency Include="Microsoft.NETCore.DotNetHost">
|
||||
<Version>$(HostFullVersion)</Version>
|
||||
</Dependency>
|
||||
|
||||
<ArchitectureSpecificNativeFile Include="$(DotNetHostBinDir)/libhostfxr.so"/>
|
||||
|
||||
<File Include="@(ArchitectureSpecificNativeFile)">
|
||||
<TargetPath>runtimes/$(PackageTargetRuntime)/native</TargetPath>
|
||||
</File>
|
||||
<File Include="$(ProjectDir)/version.txt" />
|
||||
</ItemGroup>
|
||||
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
|
||||
</Project>
|
89
scripts/docker/debian/Dockerfile
Normal file
89
scripts/docker/debian/Dockerfile
Normal file
|
@ -0,0 +1,89 @@
|
|||
#
|
||||
# Copyright (c) .NET Foundation and contributors. All rights reserved.
|
||||
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
#
|
||||
|
||||
# Dockerfile that creates a container suitable to build dotnet-cli
|
||||
FROM debian:jessie
|
||||
|
||||
# Misc Dependencies for build
|
||||
RUN apt-get update && apt-get -qqy install curl unzip gettext sudo
|
||||
|
||||
# This could become a "microsoft/coreclr" image, since it just installs the dependencies for CoreCLR (and stdlib)
|
||||
RUN echo "deb http://llvm.org/apt/jessie/ llvm-toolchain-jessie-3.6 main" | tee /etc/apt/sources.list.d/llvm.list && \
|
||||
curl http://llvm.org/apt/llvm-snapshot.gpg.key | apt-key add - && \
|
||||
apt-get update && apt-get -qqy install\
|
||||
libc6 \
|
||||
libedit2 \
|
||||
libffi6 \
|
||||
libgcc1 \
|
||||
libicu52 \
|
||||
liblldb-3.6 \
|
||||
libllvm3.6 \
|
||||
liblttng-ust0 \
|
||||
liblzma5 \
|
||||
libncurses5 \
|
||||
libpython2.7 \
|
||||
libstdc++6 \
|
||||
libtinfo5 \
|
||||
libunwind8 \
|
||||
libuuid1 \
|
||||
zlib1g \
|
||||
libasn1-8-heimdal \
|
||||
libcomerr2 \
|
||||
libcurl3 \
|
||||
libgpg-error0 \
|
||||
libgssapi3-heimdal \
|
||||
libgssapi-krb5-2 \
|
||||
libhcrypto4-heimdal \
|
||||
libheimbase1-heimdal \
|
||||
libheimntlm0-heimdal \
|
||||
libhx509-5-heimdal \
|
||||
libidn11 \
|
||||
libk5crypto3 \
|
||||
libkeyutils1 \
|
||||
libkrb5-26-heimdal \
|
||||
libkrb5-3 \
|
||||
libkrb5support0 \
|
||||
libldap-2.4-2 \
|
||||
libp11-kit0 \
|
||||
libroken18-heimdal \
|
||||
libsasl2-2 \
|
||||
libsqlite3-0 \
|
||||
libssl1.0.0 \
|
||||
libssl-dev \
|
||||
libtasn1-6 \
|
||||
libwind0-heimdal
|
||||
|
||||
# Install Dotnet CLI dependencies.
|
||||
# clang is required for dotnet-compile-native
|
||||
RUN apt-get -qqy install clang-3.5
|
||||
|
||||
# Install Build Prereqs
|
||||
RUN apt-get -qq install -y debhelper build-essential devscripts git cmake
|
||||
|
||||
# Use clang as c++ compiler
|
||||
RUN update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-3.5 100
|
||||
RUN update-alternatives --set c++ /usr/bin/clang++-3.5
|
||||
|
||||
# Setup User to match Host User, and give superuser permissions
|
||||
ARG USER_ID=0
|
||||
RUN useradd -m code_executor -u ${USER_ID} -g sudo
|
||||
RUN echo 'code_executor ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
||||
|
||||
# With the User Change, we need to change permissions on these directories
|
||||
RUN chmod -R a+rwx /usr/local
|
||||
RUN chmod -R a+rwx /home
|
||||
RUN chmod -R 755 /usr/lib/sudo
|
||||
|
||||
# Set user to the one we just created
|
||||
USER ${USER_ID}
|
||||
|
||||
# Set working directory
|
||||
WORKDIR /opt/code
|
||||
|
||||
# Work around https://github.com/dotnet/cli/issues/1582 until Docker releases a
|
||||
# fix (https://github.com/docker/docker/issues/20818). This workaround allows
|
||||
# the container to be run with the default seccomp Docker settings by avoiding
|
||||
# the restart_syscall made by LTTng which causes a failed assertion.
|
||||
ENV LTTNG_UST_REGISTER_TIMEOUT 0
|
|
@ -61,6 +61,9 @@ if [ -z "$DOCKERFILE" ]; then
|
|||
elif [ "$(cat /etc/*-release | grep -cim1 centos)" -eq 1 ]; then
|
||||
echo "Detected current OS as CentOS, using 'centos' image"
|
||||
export DOCKERFILE=scripts/docker/centos
|
||||
elif [ "$(cat /etc/*-release | grep -cim1 debian)" -eq 1 ]; then
|
||||
echo "Detected current OS as Debian, using 'debian' image"
|
||||
export DOCKERFILE=scripts/docker/debian
|
||||
else
|
||||
echo "Unknown Linux Distro. Using 'ubuntu' image"
|
||||
export DOCKERFILE=scripts/docker/ubuntu
|
||||
|
|
|
@ -32,7 +32,7 @@ namespace Microsoft.DotNet.Cli.Build
|
|||
}
|
||||
else if (CurrentPlatform.IsDebian)
|
||||
{
|
||||
packageId = "runtime.debian.8.2-x64.Microsoft.NETCore.Runtime.CoreCLR";
|
||||
packageId = "runtime.debian.8-x64.Microsoft.NETCore.Runtime.CoreCLR";
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -18,7 +18,7 @@ init_distro_name_and_rid()
|
|||
export __rid_plat=rhel.7
|
||||
elif [ "$(cat /etc/*-release | grep -cim1 debian)" -eq 1 ]; then
|
||||
export __distro_name=debian
|
||||
export __rid_plat=
|
||||
export __rid_plat=debian.8
|
||||
else
|
||||
export __distro_name=""
|
||||
export __rid_plat=
|
||||
|
|
Loading…
Reference in a new issue