Fixes #415. Colors: The native method "COLOR_PAIRS" does not exist (#2749)

* Fixes #415. Colors: The native method "COLOR_PAIRS" does not exist.

* Add Dockerfile with the opensuse/tumbleweed image.

* Ensures using the libncurses6 version in the case the issue is fixed.
This commit is contained in:
BDisp
2023-07-17 15:34:46 +01:00
committed by GitHub
parent 48a73b4756
commit 0faf530f16
5 changed files with 83 additions and 2 deletions

25
.dockerignore Normal file
View File

@@ -0,0 +1,25 @@
**/.classpath
**/.dockerignore
**/.env
**/.git
**/.gitignore
**/.project
**/.settings
**/.toolstarget
**/.vs
**/.vscode
**/*.*proj.user
**/*.dbmdl
**/*.jfm
**/azds.yaml
**/bin
**/charts
**/docker-compose*
**/Dockerfile*
**/node_modules
**/npm-debug.log
**/obj
**/secrets.dev.yaml
**/values.dev.yaml
LICENSE
README.md

View File

@@ -83,8 +83,24 @@ namespace Unix.Terminal {
static void LoadMethods ()
{
var libs = UnmanagedLibrary.IsMacOSPlatform ? new string [] { "libncurses.dylib" } : new string [] { "libncursesw.so.6", "libncursesw.so.5" };
curses_library = new UnmanagedLibrary (libs, false);
methods = new NativeMethods (curses_library);
var attempts = 1;
while (true) {
try {
curses_library = new UnmanagedLibrary (libs, false);
methods = new NativeMethods (curses_library);
break;
} catch (Exception ex) {
if (attempts == 1) {
attempts++;
if (Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment.OperatingSystem.Contains ("opensuse")) {
libs [0] = "libncursesw.so.5";
}
} else {
throw ex.GetBaseException ();
}
}
}
}
static void FindNCurses ()

35
UICatalog/Dockerfile Normal file
View File

@@ -0,0 +1,35 @@
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM opensuse/tumbleweed AS base
RUN zypper -n update
RUN zypper --non-interactive install libicu
RUN zypper --non-interactive install libncurses5
RUN zypper --non-interactive install wget
RUN rpm --import https://packages.microsoft.com/keys/microsoft.asc
RUN wget https://packages.microsoft.com/config/opensuse/15/prod.repo
RUN mv prod.repo /etc/zypp/repos.d/microsoft-prod.repo
RUN chown root:root /etc/zypp/repos.d/microsoft-prod.repo
RUN zypper --non-interactive install dotnet-sdk-7.0
ENV LANG=en_US.UTF-8 \
TERM=xterm-256color \
DISPLAY=:0
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY ["Terminal.Gui/Directory.Build.props", "Terminal.Gui/"]
COPY ["UICatalog/UICatalog.csproj", "UICatalog/"]
COPY ["Terminal.Gui/Terminal.Gui.csproj", "Terminal.Gui/"]
RUN dotnet restore "UICatalog/UICatalog.csproj"
COPY . .
WORKDIR "/src/UICatalog"
RUN dotnet build "UICatalog.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "UICatalog.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "UICatalog.dll"]

View File

@@ -50,6 +50,9 @@
"Windows & FrameViews": {
"commandName": "Project",
"commandLineArgs": "\"Windows & FrameViews\""
},
"Docker": {
"commandName": "Docker"
}
}
}

View File

@@ -11,6 +11,7 @@
<FileVersion>1.10.1.0</FileVersion>
<Version>1.10.1</Version>
<InformationalVersion>1.10.1+6.Branch.main.Sha.f7ee66ddbf8dbcfb0d96af7d63789879091670ec</InformationalVersion>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DefineConstants>TRACE</DefineConstants>
@@ -22,6 +23,7 @@
<None Update="./Scenarios/Spinning_globe_dark_small.gif" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.18.1" />
<PackageReference Include="SixLabors.ImageSharp" Version="3.0.1" />
<PackageReference Include="CsvHelper" Version="30.0.1" />
<PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="3.1.6" />