fix bugs in osx build
create tool to generate signing key when sn.exe is not present add build info to readme add DOTNET_INSTALL_PATH to Makefile.local and try to detect
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -74,3 +74,5 @@ build/
|
||||
cache/
|
||||
**/.vscode/*
|
||||
.DS_Store
|
||||
|
||||
!tools/netstandard/CreateSigningKey/CreateSigningKey.dll
|
||||
|
||||
@@ -34,7 +34,7 @@ NAMESPACE_ORTOOLS_FZ:=$(BASE_CLR_ORTOOLS_DLL_NAME).Flatzinc
|
||||
CLR_ORTOOLS_IMPORT_DLL_NAME:=$(CLR_ORTOOLS_DLL_NAME)
|
||||
NETSTANDARD_ORTOOLS_IMPORT_DLL_NAME:=$(CLR_ORTOOLS_IMPORT_DLL_NAME).Native
|
||||
NETSTANDARD_OBJ_DIR = $(OBJ_DIR)$Snetstandard
|
||||
NETSTANDARD_RUNTIME_IDENTIFIER=win10-x64
|
||||
NETSTANDARD_RUNTIME_IDENTIFIER=
|
||||
|
||||
# NuGet specification file name
|
||||
ORTOOLS_NUSPEC_NAME := or-tools.nuspec
|
||||
@@ -69,10 +69,10 @@ endif
|
||||
|
||||
ifeq "$(SYSTEM)" "win"
|
||||
NETSTANDARD_RUNTIME_IDENTIFIER=win-$(NETPLATFORM)
|
||||
else ifeq ($(PLATFORM),LINUX)
|
||||
NETSTANDARD_RUNTIME_IDENTIFIER=linux-$(NETPLATFORM)
|
||||
else ifeq ($(PLATFORM),MACOSX)
|
||||
NETSTANDARD_RUNTIME_IDENTIFIER=osx-$(NETPLATFORM)
|
||||
NETSTANDARD_RUNTIME_IDENTIFIER=osx
|
||||
else
|
||||
NETSTANDARD_RUNTIME_IDENTIFIER=linux-$(NETPLATFORM)
|
||||
endif
|
||||
|
||||
CSHARPEXE = \
|
||||
@@ -181,7 +181,7 @@ csharportools: $(BIN_DIR)/$(CLR_ORTOOLS_DLL_NAME)$(DLL) $(BIN_DIR)/$(CLR_PROTOBU
|
||||
|
||||
# setup path for dotnet sdk
|
||||
CANONIC_PATH_TO_DOTNET_SDK = $(subst $(SPACE),$(BACKSLASH_SPACE),$(subst \,/,$(subst \\,/,$(DOTNET_INSTALL_PATH))))
|
||||
PATH_TO_DOTNET_EXE = $(CANONIC_PATH_TO_DOTNET_SDK)$Sdotnet.exe
|
||||
PATH_TO_DOTNET_EXE = $(CANONIC_PATH_TO_DOTNET_SDK)$Sdotnet
|
||||
ifeq ($(wildcard $(CANONIC_PATH_TO_DOTNET_SDK)),)
|
||||
netstandard:
|
||||
@echo "The dotnet sdk path was not set properly. Check Makefile.local for more information."
|
||||
@@ -195,7 +195,7 @@ endif
|
||||
netstandardortools: $(BIN_DIR)/$(NETSTANDARD_ORTOOLS_DLL_NAME)$(DLL) $(BIN_DIR)/$(CLR_PROTOBUF_DLL_NAME)$(DLL)
|
||||
|
||||
$(NETSTANDARD_OBJ_DIR)/AssemblyInfo.cs: \
|
||||
$(CLR_KEYFILE) \
|
||||
$(NETSTANDARD_CLR_KEYFILE) \
|
||||
$(GEN_DIR)/com/google/ortools/properties/CommonAssemblyInfo.cs
|
||||
$(COPY) tools$Scsharp$SAssemblyInfo.cs $(NETSTANDARD_OBJ_DIR)$SAssemblyInfo.cs
|
||||
ifdef CLR_KEYFILE
|
||||
@@ -297,6 +297,11 @@ ifdef CLR_KEYFILE
|
||||
sn -k $(CLR_KEYFILE)
|
||||
endif
|
||||
|
||||
$(NETSTANDARD_CLR_KEYFILE):
|
||||
ifdef CLR_KEYFILE
|
||||
$(PATH_TO_DOTNET_EXE) run tools$Snetstandard$SCreateSigningKey$SCreateSigningKey.dll $(CLR_KEYFILE)
|
||||
endif
|
||||
|
||||
$(BIN_DIR)/$(CLR_ORTOOLS_DLL_NAME)$(DLL): \
|
||||
$(GEN_DIR)/com/google/ortools/properties/AssemblyInfo.cs \
|
||||
$(CLR_KEYFILE) \
|
||||
@@ -337,14 +342,14 @@ else
|
||||
endif
|
||||
|
||||
$(BIN_DIR)/$(NETSTANDARD_ORTOOLS_DLL_NAME)$(DLL): \
|
||||
$(BIN_DIR)/$(NETSTANDARD_ORTOOLS_IMPORT_DLL_NAME)$(DLL) \
|
||||
$(BIN_DIR)/$(NETSTANDARD_ORTOOLS_IMPORT_DLL_NAME)$(SWIG_LIB_SUFFIX) \
|
||||
netstandard_create_obj_dir \
|
||||
$(NETSTANDARD_OBJ_DIR)/AssemblyInfo.cs
|
||||
$(PATH_TO_DOTNET_EXE) restore $(NETSTANDARD_OBJ_DIR)$SOrTools.NetCore.csproj
|
||||
$(PATH_TO_DOTNET_EXE) build $(NETSTANDARD_OBJ_DIR)$SOrTools.NetCore.csproj -f netstandard2.0 -o:$(realpath $(BIN_DIR))$S
|
||||
$(PATH_TO_DOTNET_EXE) pack $(NETSTANDARD_OBJ_DIR)$SOrTools.NetCore.csproj -o:$(realpath $(BIN_DIR))$S /p:PackageVersion=$(OR_TOOLS_VERSION);TargetRid=$(NETSTANDARD_RUNTIME_IDENTIFIER)
|
||||
$(PATH_TO_DOTNET_EXE) pack $(NETSTANDARD_OBJ_DIR)$SOrTools.NetCore.csproj -o:$(realpath $(BIN_DIR))$S /p:PackageVersion=$(OR_TOOLS_VERSION)\;TargetRid=$(NETSTANDARD_RUNTIME_IDENTIFIER)\;NativeDllName=$(NETSTANDARD_ORTOOLS_IMPORT_DLL_NAME).$(SWIG_LIB_SUFFIX)
|
||||
|
||||
$(BIN_DIR)/$(NETSTANDARD_ORTOOLS_IMPORT_DLL_NAME)$(DLL): \
|
||||
$(BIN_DIR)/$(NETSTANDARD_ORTOOLS_IMPORT_DLL_NAME)$(SWIG_LIB_SUFFIX): \
|
||||
$(BIN_DIR)/$(CLR_PROTOBUF_DLL_NAME)$(DLL) \
|
||||
$(OBJ_DIR)/swig/linear_solver_csharp_wrap.$O \
|
||||
$(OBJ_DIR)/swig/sat_csharp_wrap.$O \
|
||||
@@ -372,7 +377,7 @@ $(BIN_DIR)/$(NETSTANDARD_ORTOOLS_IMPORT_DLL_NAME)$(DLL): \
|
||||
$(GEN_DIR)/com/google/ortools/constraintsolver/RoutingEnums.g.cs\
|
||||
$(GEN_DIR)/com/google/ortools/sat/CpModel.g.cs \
|
||||
$(OR_TOOLS_LIBS)
|
||||
$(DYNAMIC_LD) $(LDOUT)$(BIN_DIR)$S$(LIB_PREFIX)$(NETSTANDARD_ORTOOLS_IMPORT_DLL_NAME).$(SWIG_LIB_SUFFIX) $(OBJ_DIR)/swig/linear_solver_csharp_wrap.$O $(OBJ_DIR)/swig/sat_csharp_wrap.$O $(OBJ_DIR)/swig/constraint_solver_csharp_wrap.$O $(OBJ_DIR)/swig/knapsack_solver_csharp_wrap.$O $(OBJ_DIR)/swig/graph_csharp_wrap.$O $(OR_TOOLS_LNK) $(OR_TOOLS_LD_FLAGS)
|
||||
$(DYNAMIC_LD) $(LDOUT)$(BIN_DIR)$S$(NETSTANDARD_ORTOOLS_IMPORT_DLL_NAME).$(SWIG_LIB_SUFFIX) $(OBJ_DIR)/swig/linear_solver_csharp_wrap.$O $(OBJ_DIR)/swig/sat_csharp_wrap.$O $(OBJ_DIR)/swig/constraint_solver_csharp_wrap.$O $(OBJ_DIR)/swig/knapsack_solver_csharp_wrap.$O $(OBJ_DIR)/swig/graph_csharp_wrap.$O $(OR_TOOLS_LNK) $(OR_TOOLS_LD_FLAGS)
|
||||
|
||||
netstandard_create_obj_dir:
|
||||
$(MKDIR_P) $(NETSTANDARD_OBJ_DIR)
|
||||
|
||||
@@ -14,6 +14,13 @@ ifeq ("$(SYSTEM)","unix")
|
||||
OR_TOOLS_TOP ?= $(shell pwd)
|
||||
OS = $(shell uname -s)
|
||||
DETECTED_PYTHON_VERSION = $(shell python -c "from sys import version_info as v; print (str(v[0]) + '.' + str(v[1]))")
|
||||
# Detect the .net core sdk folder
|
||||
DOTNET_INSTALL_PATH = /usr/local/share/dotnet/sdk
|
||||
ifneq ($(wildcard $(DOTNET_INSTALL_PATH)\dotnet.exe),)
|
||||
DOTNET_INSTALL_PATH = \# DOTNET install path not found
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(OS),Linux)
|
||||
PLATFORM = LINUX
|
||||
CODEPORT = OpSys-Linux
|
||||
@@ -138,6 +145,12 @@ ifeq ("$(SYSTEM)","win")
|
||||
endif
|
||||
endif
|
||||
|
||||
# Detect the .net core sdk folder
|
||||
DOTNET_INSTALL_PATH = $(ProgramW6432)\dotnet
|
||||
ifneq ($(wildcard $(DOTNET_INSTALL_PATH)\dotnet.exe),)
|
||||
DOTNET_INSTALL_PATH = \# DOTNET install path not found
|
||||
endif
|
||||
|
||||
# Set common windows variables
|
||||
|
||||
# OS Specific
|
||||
|
||||
@@ -296,6 +296,7 @@ Makefile.local: makefiles/Makefile.third_party.unix.mk
|
||||
@echo JDK_DIRECTORY = $(JDK_DIRECTORY)>> Makefile.local
|
||||
@echo UNIX_PYTHON_VER = $(DETECTED_PYTHON_VERSION)>> Makefile.local
|
||||
@echo PATH_TO_CSHARP_COMPILER = $(DETECTED_MCS_BINARY)>> Makefile.local
|
||||
@echo DOTNET_INSTALL_PATH = $(DOTNET_INSTALL_PATH)>> Makefile.local
|
||||
@echo CLR_KEYFILE = bin/or-tools.snk>> Makefile.local
|
||||
@echo >> Makefile.local
|
||||
@echo "# Define UNIX_GLPK_DIR to point to a compiled version of GLPK to use it" >> Makefile.local
|
||||
|
||||
@@ -374,6 +374,7 @@ Makefile.local: makefiles/Makefile.third_party.$(SYSTEM).mk
|
||||
@echo JDK_DIRECTORY = $(JDK_DIRECTORY)>> Makefile.local
|
||||
@echo $(SELECTED_PATH_TO_PYTHON)>> Makefile.local
|
||||
@echo $(SELECTED_CSC_BINARY)>> Makefile.local
|
||||
@echo DOTNET_INSTALL_PATH = $(DOTNET_INSTALL_PATH)>> Makefile.local
|
||||
@echo # >> Makefile.local
|
||||
@echo # Define WINDOWS_SCIP_DIR to point to a compiled version of SCIP to use it >> Makefile.local
|
||||
@echo # i.e.: path\\scip-4.0.0 >> Makefile.local
|
||||
|
||||
@@ -60,6 +60,25 @@ The project file can be modified in any text editor as well:
|
||||
</Target>
|
||||
|
||||
* Building
|
||||
The build currently does not detect the .NET SDK folder. The DOTNET_INSTALL_PATH variable must be set Makefile.local file in the build root:
|
||||
|
||||
To build use the following command:
|
||||
|
||||
make netstandard
|
||||
|
||||
The .NET Core SDK 2.0 or later must be installed before building. Use the link below to find appropriate
|
||||
download for the build platform.
|
||||
|
||||
https://github.com/dotnet/core/blob/master/release-notes/download-archives/2.0.0-download.md
|
||||
|
||||
Alternatively the command below can be used to install the SDK:
|
||||
curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel 2.0
|
||||
|
||||
The build will attempt to detect the SDK path. If there are any issues please check the
|
||||
DOTNET_INSTALL_PATH variable in the Makefile.local file:
|
||||
|
||||
DOTNET_INSTALL_PATH=C:\Program Files\dotnet
|
||||
|
||||
The dotnet restore command will not update the nuget packages if the version does not change. This
|
||||
can cause confusion when testing local builds. Use the command below to clear the package:
|
||||
|
||||
dotnet nuget locals all --clear
|
||||
BIN
tools/netstandard/CreateSigningKey/CreateSigningKey.dll
Normal file
BIN
tools/netstandard/CreateSigningKey/CreateSigningKey.dll
Normal file
Binary file not shown.
29
tools/netstandard/CreateSigningKey/Program.cs
Normal file
29
tools/netstandard/CreateSigningKey/Program.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
|
||||
namespace CreateSigningKey
|
||||
{
|
||||
class Program
|
||||
{
|
||||
static void Main(string[] args)
|
||||
{
|
||||
args = new[] { "or-tools.snk" };
|
||||
if (args == null || args.Length == 0)
|
||||
{
|
||||
Console.WriteLine("Key filename not specified.");
|
||||
return;
|
||||
}
|
||||
|
||||
File.WriteAllBytes(args[0], GenerateStrongNameKeyPair());
|
||||
}
|
||||
|
||||
public static byte[] GenerateStrongNameKeyPair()
|
||||
{
|
||||
using (var provider = new RSACryptoServiceProvider(1024, new CspParameters() { KeyNumber = 2 }))
|
||||
{
|
||||
return provider.ExportCspBlob(!provider.PublicOnly);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -63,8 +63,8 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="..\..\bin\Google.OrTools.Native.dll" Link="Google.OrTools.Native.dll">
|
||||
<PackagePath>runtimes/$(TargetRid)/native/Google.OrTools.Native.dll</PackagePath>
|
||||
<None Include="..\..\bin\$(NativeDllName)" Link="$(NativeDllName)">
|
||||
<PackagePath>runtimes/$(TargetRid)/native/$(NativeDllName)</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="..\..\tools\netstandard\OrTools.targets" Link="OrTools.targets">
|
||||
|
||||
@@ -30,18 +30,10 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\osx-x64\native\Google.OrTools.Native.so">
|
||||
<Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\osx\native\Google.OrTools.Native.so">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<Link>Google.OrTools.Native.so</Link>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\osx-x86\native\Google.OrTools.Native.so">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<Link>Google.OrTools.Native.so</Link>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
</Project>
|
||||
Reference in New Issue
Block a user