openmedicus / gtk-sharp

DEPRECATED: Use https://github.com/GLibSharp/GtkSharp or https://github.com/GtkSharp/GtkSharp
Other
22 stars 6 forks source link

Added python scripts for building NuGet packages via windows or linux #18

Closed Hecatron closed 7 years ago

Hecatron commented 7 years ago

Hi, I've recently written some python scripts for generating Nuget package files for gtksharp3 This is located within the Nuget subdirectory. I've tried this on both Linux and Windows and it seems to work okay

A couple of things I might look at next is to see how to update the gtksharp sources for 3.22 and to see if it's possible to build and generate a Nuget package for .Net Core

harry-cpp commented 7 years ago

Few questions:

PS. I have the "gtk-sharp3" package (https://www.nuget.org/packages/gtk-sharp3/), we can use the ID for this, we would just need to have some build server for auto publishing

Hecatron commented 7 years ago

I've not copied the glue libraries at this stage, I wasn't entirely sure what they were used for (I think integration with msys?) I had a look at both gtksharp3 and gtksharp3.win32 libraries within Nuget to see if they were included there but I don't believe they are. It should be easy to add them in if they're needed.

Msys2 has three different consoles Msys2, Mingw32bit, Mingw64bit It's possible to install gtk3 under Mingw32bit, Mingw64bit for different arch's so the script just copies the dll's from each into a different Nuget package (also all dependencies I've picked up using PE Explorer for users without Msys2)

Based on the design of gtksharp currently we can't have both the 32bit and 64bit windows libs via the Nuget package installed at the same time (as the files are named the same). To have both at the same time would probably require changes to the Gtksharp source's pinvoke commands so that it looks in a different subdirectory such as x32 or x64 based on the current arch setting at runtime.

Hecatron commented 7 years ago

Thinking about it for the glue libraries maybe they should be in they're own separate Nuget package. Only because the libraries may be different per platform (linux vs windows 32bit vs windows 64bit)

harry-cpp commented 7 years ago

I've not copied the glue libraries at this stage, I wasn't entirely sure what they were used for (I think integration with msys?)

Nope, they are generated per platform and per arch, and stuff like Eto.Forms will crash without them. I was guessing they were used for stuff that wasn't wrapable but I never checked because the name sounded self explanatory: https://en.wikipedia.org/wiki/Glue_code

Hecatron commented 7 years ago

I've put together some issues here which I'll try and look into when I get time https://github.com/grbd/gtk-sharp/issues