dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
14.62k stars 4.56k forks source link

How to install locally built artifacts (e.g. shared framework) #47153

Closed Maniues closed 1 year ago

Maniues commented 3 years ago

I have problem with binaries. I built .NET Runtime from source. I haven't got directory similar to official binaries. How can I install runtime built from source? Logs (copied from bash): https://pastebin.com/EbfXP4jx

ViktorHofer commented 3 years ago

What is the command that you used for building? Even though build.sh -c Release is really slow, it should build the shared framework packages and installers and other libraries nuget packages the same way, we ship them. You should be able to find the installers produced, in the logs.

Maniues commented 3 years ago

I used ./build.sh

ViktorHofer commented 3 years ago

@jkoritzinsky can speak more to that, but near the end of the build log you should find bundle packages (ie rpm or deb) that you should be able to use.

ghost commented 3 years ago

Tagging subscribers to this area: @ViktorHofer See info in area-owners.md if you want to be subscribed.

Issue Details
I have problem with binaries. I built .NET Runtime from source. I haven't got directory similar to official binaries. How can I install runtime built from source? Logs (copied from bash): https://pastebin.com/EbfXP4jx
Author: Maniues
Assignees: -
Labels: `area-Infrastructure`, `question`
Milestone: -
Maniues commented 3 years ago

@ViktorHofer Can you see these logs? I was comparing /artifacts/packages/Release/Shipping/dotnet-runtime-6.0.0-dev-linux-x64.tar.gz with my currect dotnet 5.0 runtime installation and some files are missing in my own binaries (often .h files for example: coreclr_delegates.h). I can send you my binaries if you want

ViktorHofer commented 3 years ago

That shouldn't be necessary, thanks. cc'ing @dotnet/runtime-infrastructure as I don't have enough context on the missing files.

jkoritzinsky commented 3 years ago

To build the .deb and .rpm files, you can use ./build.sh packs.installers /p:BuildDebPackages=true or ./build.sh packs.installers /p:BuildRpmPackages=true to build the debs or rpms once you've built the repository.

Maniues commented 3 years ago

@jkoritzinsky It's the good way, but I'm getting this error: /home/osboxes/Desktop/runtime/eng/SubsetValidation.targets(39,5): error : Subset not recognized: pack.installers [/home/osboxes/Desktop/runtime/Build.proj]

jkoritzinsky commented 3 years ago

You're missing an 's'. The subset is packs.installers, not pack.installers.

Maniues commented 3 years ago

Haha, sorry. My bad

Maniues commented 3 years ago

@jkoritzinsky what is the default location for the .deb installer?

jkoritzinsky commented 3 years ago

It should be output to ./artifacts/packages/Debug/Shipping/. There will be a few packages there that all need to be installed to fully install the runtime and hosting layers.

Maniues commented 3 years ago

But, If I built repo as Release (no Debug) what command should I type to generate installer? What will be the name of the installer?

jkoritzinsky commented 3 years ago

For release, you can run ./build.sh packs.installers -c Release /p:BuildDebPackages=true.

The packages will be in ./artifacts/packages/Release/Shipping. The following packages need to be installed to install a local build of the runtime

artifacts/packages/Release/Shipping/dotnet-host-6.0.0-x64.deb 
artifacts/packages/Release/Shipping/dotnet-hostfxr-6.0.0-x64.deb    
artifacts/packages/Release/Shipping/dotnet-runtime-6.0.0-x64.deb             
artifacts/packages/Release/Shipping/dotnet-runtime-deps-6.0.0-x64.deb   
Maniues commented 3 years ago

I didn't get any errors but there are no .deb files

Log: `root@osboxes:/home/osboxes/Desktop/runtime# ./build.sh packs.installers -c Release /p:BuildDebPackages=true __DistroRid: linux-x64 Determining projects to restore... Tool 'coverlet.console' (version '1.7.2') was restored. Available commands: coverlet Tool 'dotnet-reportgenerator-globaltool' (version '4.5.8') was restored. Available commands: reportgenerator Tool 'microsoft.dotnet.xharness.cli' (version '1.0.0-prerelease.21068.3') was restored. Available commands: xharness Tool 'microsoft.visualstudio.slngen.tool' (version '4.4.2') was restored. Available commands: slngen

Restore was successful. All projects are up-to-date for restore. Determining projects to restore... All projects are up-to-date for restore. installers ->

Build succeeded. 0 Warning(s) 0 Error(s)

Time Elapsed 00:00:03.88 root@osboxes:/home/osboxes/Desktop/runtime#

jkoritzinsky commented 3 years ago

Sorry I misspoke. Use this command: ./build.sh packs.installers -c Release /p:BuildDebPackage=true

Maniues commented 3 years ago

I'm getting some errors: https://pastebin.com/4MwvxJge

jkoritzinsky commented 3 years ago

You need to install the debhelper package on your system to build the debs.

Maniues commented 3 years ago

You need to install the debhelper package on your system to build the debs.

It's working, but what is it dotnet-runtime-deps debfile?

jkoritzinsky commented 3 years ago

dotnet-runtime-deps is a metapackage that depends on all of the dependencies the runtime does not ship with.

Maniues commented 3 years ago

Hi. It's working, but I have two questions. Must I install all debs files to install runtime? Must I install .NET SDK to run .NET apps?

jkoritzinsky commented 3 years ago

You'll need to install all of the debs I listed to fully install the runtime and be able to run .NET apps.

You don't need to install the .NET SDK to run .NET apps.

If you want to run an app that uses ASP.NET Core, you'll have to install their runtime deb packages as well. I don't know how their packages are produced, so you'll have to open an issue on https://github.com/dotnet/aspnetcore to ask that team how and where they're produced.

ViktorHofer commented 3 years ago

Thanks a lot Jeremy for driving this along. Do we need to update our docs for dogfooding purposes?

jkoritzinsky commented 3 years ago

I don't think we currently have any dogfooding instructions for dogfooding the debs and rpms themselves. Our docs could probably use an update in this area.

Maniues commented 3 years ago

@jkoritzinsky I built runtime 5.0 and I'm getting this error when I want to build deb files: /home/osboxes/Desktop/dotnet/net5/runtime/eng/SubsetValidation.targets(39,5): error : Subset not recognized: packs.installers [/home/osboxes/Desktop/dotnet/net5/runtime/Build.proj]

jkoritzinsky commented 3 years ago

Yes, that's expected. We recently updated the infrastructure in master. In 5.0, this is done differently and I don't quite remember how it's done.

cc: @NikolaMilosavljevic for 5.0 instructions on how to build the debs.

NikolaMilosavljevic commented 3 years ago

@Maniues the actual command would be the following (the property name is singular): ./build.sh -c Release -subset packs+packs.installers -p:BuildDebPackage=true

However, to build DEB packages you would need 'debhelper' tool. Alternatively, you could use the same docker image that is used in official builds: https://github.com/dotnet/runtime/blob/8c76312b621e2cdb22ca0ee603c5b0e1919134a2/eng/pipelines/installer/jobs/base-job.yml#L25

Maniues commented 3 years ago

@Maniues the actual command would be the following (the property name is singular): ./build.sh -c Release -subset packs+packs.installers -p:BuildDebPackage=true

Thanks for the instructions but I'm receiving error: Subset not recognized: packs. I used ./build.sh -c Release -subset packs+packs.installers -p:BuildDebPackage=true

NikolaMilosavljevic commented 3 years ago

@Maniues the actual command would be the following (the property name is singular): ./build.sh -c Release -subset packs+packs.installers -p:BuildDebPackage=true

Thanks for the instructions but I'm receiving error: Subset not recognized: packs. I used ./build.sh -c Release -subset packs+packs.installers -p:BuildDebPackage=true

The command works fine for me. Do you have the latest changes in your repo? We have refactored packaging process few months ago; and renamed most of the subsets as part of that work.

ViktorHofer commented 3 years ago

@NikolaMilosavljevic the question was about the release/5.0 branch.

Maniues commented 3 years ago

@Maniues the actual command would be the following (the property name is singular): ./build.sh -c Release -subset packs+packs.installers -p:BuildDebPackage=true

Thanks for the instructions but I'm receiving error: Subset not recognized: packs. I used ./build.sh -c Release -subset packs+packs.installers -p:BuildDebPackage=true

The command works fine for me. Do you have the latest changes in your repo? We have refactored packaging process few months ago; and renamed most of the subsets as part of that work.

I cloned repo with these commands: git clone https://github.com/dotnet/runtime.git cd runtime git checkout tags/v5.0.2

NikolaMilosavljevic commented 3 years ago

I cloned repo with these commands: git clone https://github.com/dotnet/runtime.git cd runtime git checkout tags/v5.0.2

OK, this branch has old subsets and packaging infrastructure, the steps are different:

  1. Build binaries and regular packages (nupkg, tar.gz, etc) in your regular container (CentOS, Ubuntu, etc):

./build.sh -c Release

  1. Build DEB packages in a container using Docker image I listed before, or another Debian-based image that has debhelper tool:

./build.sh -c Release -subset installers /p:BuildLinuxPackages=true

Maniues commented 3 years ago

@NikolaMilosavljevic Thank you very much, it works. I'm getting ready to close this thread, but please, could you please answer these questions:

NikolaMilosavljevic commented 3 years ago

@NikolaMilosavljevic Thank you very much, it works. I'm getting ready to close this thread, but please, could you please answer these questions:

  • Is there any documentation out there about building installers and the build process in general (dependencies etc)?
  • Could you please give me the commands to build the installer for all dotnet runtime versions? So .NET Core 3.1 and earlier, .NET 5.0 and .NET 6.0?

Great - that's good news. That was the command (and steps) for .NET 5.0 installers. For 6.0 you would use the command I listed earlier: ./build.sh -c Release -subset packs+packs.installers -p:BuildDebPackage=true

.NET 3.1 and earlier versions are built in appropriate branches of dotnet/core-setup repo. The build is more complex and you need to use non-portable targets. I don't have the command handy now, but you can explore AzDO templates to get the actual steps: https://github.com/dotnet/core-setup/tree/release/3.1/eng/jobs

Since build steps are different for every release, we don't have a single document with actual build commands. I'll see if we can improve the developer package build experience and related documentation.

Maniues commented 3 years ago

@NikolaMilosavljevic Okay, I think now the most important thing is to provide build documentation for .NET 5.0, 6.0 and core 3.1 because these are the latest versions. Hope you will work on the build documentation, albeit for 5.0 and above

hoyosjs commented 1 year ago

Closing this in favor of #48240 which looks for the documentation of the process.