Jump to content

Cannot build 3.1.1 in docker container anymore.


toneman77
 Share

Go to solution Solved by scr09,

Recommended Posts

Hey guys.

When trying to build emby-server in a docker container, the following worked untill 3.0.8500:

sudo apt-get install -y --no-install-recommends \                                                             
    ca-certificates \                                                                                         
    git \                                                                                                     
    libmono-system-core4.0-cil \                                                                              
    mono-devel  \                                                                                             
    mono-runtime  \                                                                                           
    mono-utils  \                                                                                             
    mono-xbuild \                                                                                             
    wget                                                                                                      
cd $HOME \                                                                                                    
    && git clone --depth 1 https://github.com/MediaBrowser/Emby.git

I then change to Tools/Linux_Build_Scripts/ and launch MediaBrowser.Mono.Build.sh

 

But since 3.1.1 (I must have missed 3.1.0) I get:

...

========================================
           Requirements
========================================
           
Check if folder mediabrowser exist
Creating folder: mediabrowser
                       
========================================
       Nuget: Restoring packages
========================================
                                           
Restoring NuGet package                         
MSBuild auto-detection: using msbuild version '4.0' from '/usr/lib/mono/4.5'.
MsBuild.exe does not exist at '/usr/lib/mono/4.5/msbuild.exe'.

Result is the same, no matter if I use a debian docker or ubuntu.

What did I do wrong? Anything I am missing here?

 

Link to comment
Share on other sites

I adjusted the instructions at github and used 4.6.2 as the version. Installed all the prerequisites. Sadly, still the same error.

I then searched around more and found this error stating that the wrong version of nuget ignores the correct path to xbuild and looks for msbuild.exe. This issue is fixed if I understood everything correctly with nuget 3.5 upstream. So I downloaded the current release from here and placed it in the NuGet folder.

 

And now I get this error:

========================================
           Requirements
========================================
           
Check if folder mediabrowser exist
mediabrowser exist, checking for old binaries folder
                     
========================================
       Nuget: Restoring packages
========================================
                                             
Restoring NuGet package                                    
MSBuild auto-detection: using msbuild version '14.0' from '/usr/lib/mono/xbuild/14.0/bin'.
MSBUILD: error MSBUILD0005: Invalid syntax. Property name and value expected as <prop name>=[<prop value>]

Ok, well. The line in the MediaBrowser.Mono.Build.sh script that triggers the error is:

mono Nuget/nuget.exe restore MediaBrowser.Mono.sln

So i searched around and found out that nuget can be more verbose, so I changed into the main Emby folder and executed: (also tried to add verbosity in the script itself. result is the same)

~/Emby# mono Nuget/nuget.exe restore MediaBrowser.Mono.sln -Verbosity detailed
and the result was:
NuGet Version: 3.5.0.1938
MSBuild auto-detection: using msbuild version '14.0' from '/usr/lib/mono/xbuild/14.0/bin'. Use option -MSBuildVersion to force nuget to use a specific version of MSBuild.
MSBuild P2P timeout [ms]: 120000
MSBUILD: error MSBUILD0005: Invalid syntax. Property name and value expected as <prop name>=[<prop value>]
System.AggregateException: One or more errors occurred. ---> NuGet.CommandLine.CommandLineException
  at NuGet.CommandLine.MsBuildUtility.GetProjectReferences (System.String msbuildDirectory, System.String[] projectPaths, System.Int32 timeOut) [0x0023a] in <eca5fa3af2c04391bafa6fe58e194074>:0 
  at NuGet.CommandLine.RestoreCommand.DetermineRestoreInputs () [0x00114] in <eca5fa3af2c04391bafa6fe58e194074>:0 
  at NuGet.CommandLine.RestoreCommand+<ExecuteCommandAsync>d__22.MoveNext () [0x000c5] in <eca5fa3af2c04391bafa6fe58e194074>:0                       
   --- End of inner exception stack trace ---
  at System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00014] in <8f2c484307284b51944a1a13a14c0266>:0   
  at System.Threading.Tasks.Task.Wait (System.Int32 millisecondsTimeout, System.Threading.CancellationToken cancellationToken) [0x00052] in <8f2c484307284b51944a1a13a14c0266>:0 
  at System.Threading.Tasks.Task.Wait () [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0 
  at NuGet.CommandLine.Command.Execute () [0x000bd] in <eca5fa3af2c04391bafa6fe58e194074>:0 
  at NuGet.CommandLine.Program.MainCore (System.String workingDirectory, System.String[] args) [0x001f8] in <eca5fa3af2c04391bafa6fe58e194074>:0                        
---> (Inner Exception #0) NuGet.CommandLine.CommandLineException
  at NuGet.CommandLine.MsBuildUtility.GetProjectReferences (System.String msbuildDirectory, System.String[] projectPaths, System.Int32 timeOut) [0x0023a] in <eca5fa3af2c04391bafa6fe58e194074>:0 
  at NuGet.CommandLine.RestoreCommand.DetermineRestoreInputs () [0x00114] in <eca5fa3af2c04391bafa6fe58e194074>:0 
  at NuGet.CommandLine.RestoreCommand+<ExecuteCommandAsync>d__22.MoveNext () [0x000c5] in <eca5fa3af2c04391bafa6fe58e194074>:0 <---

And now after 2h of searching, I'm lost...

Link to comment
Share on other sites

  • Solution

I fixed my error and successfully compiled by commenting this in the build script

#mono Nuget/nuget.exe restore MediaBrowser.Mono.sln

and installing referenceassemblies-pcl

apt-get install referenceassemblies-pcl
  • Like 1
Link to comment
Share on other sites

Well at first I had some major problems because I build on debian, but run on alpine linux. Then I changed to tklx (smaller debian) but that didn't work out either. After using debian:wheezy in my Dockerfile, everything ran. Thanks a lot.

The one thing I had to do manually is make a symbolic link:

ln -s /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 /usr/lib/libsqlite3.so

or else emby crashed on start. @scr09: did your build run without manual intervention?

 

Out of interest: What does "...nuget restore..." and why is it not neccesary?

@scr09: you are my hero (emby devs/admins are heroes anyways)

 

@Luke: Somebody should update the instructions @github, in case someone else tries to build versions higher than 3.0.xxxx

 

Thanks a lot guys

Edited by toneman77
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...