diff options
author | Demin Dmitriy <demindf@gmail.com> | 2015-10-29 05:59:32 +0300 |
---|---|---|
committer | Demin Dmitriy <demindf@gmail.com> | 2015-10-29 21:51:41 +0300 |
commit | 0ec62e075949fb0e71b9ae3eb4f01e16bfe6a7b1 (patch) | |
tree | d4812ea44374e31f3ec5077d3989a7d7af5ef7a3 /pkgs/applications/graphics/pinta | |
parent | dc70fcd94b2839f3ad2976613733eef3862d029a (diff) |
pinta: 1.4 -> 1.6
Diffstat (limited to 'pkgs/applications/graphics/pinta')
-rw-r--r-- | pkgs/applications/graphics/pinta/default.nix | 83 |
1 files changed, 51 insertions, 32 deletions
diff --git a/pkgs/applications/graphics/pinta/default.nix b/pkgs/applications/graphics/pinta/default.nix index 6958c94f7e18e..0084ddffb1d75 100644 --- a/pkgs/applications/graphics/pinta/default.nix +++ b/pkgs/applications/graphics/pinta/default.nix @@ -1,44 +1,63 @@ -{stdenv, fetchurl, mono, gtksharp, pkgconfig}: +{ stdenv, fetchFromGitHub, buildDotnetPackage, dotnetPackages, gtksharp }: -stdenv.mkDerivation { - name = "pinta-1.4"; +let + mono-addins = dotnetPackages.MonoAddins; +in +buildDotnetPackage rec { + name = "pinta-1.6"; - src = fetchurl { - url = "https://github.com/PintaProject/Pinta/tarball/3f7ccfa93d"; - name = "pinta-1.4.tar.gz"; - sha256 = "1kgb4gy5l6bd0akniwhiqqkvqayr5jgdsvn2pgg1038q9raafnpn"; + baseName = "Pinta"; + version = "1.6"; + outputFiles = [ "bin/*" ]; + buildInputs = [ gtksharp mono-addins ]; + xBuildFiles = [ "Pinta.sln" ]; + + src = fetchFromGitHub { + owner = "PintaProject"; + repo = "Pinta"; + rev = version; + sha256 = "0vgswy981c7ys4q7js5k85sky7bz8v32wsfq3br4j41vg92pw97d"; }; - buildInputs = [mono gtksharp pkgconfig]; - - buildPhase = '' - # xbuild understands pkgconfig, but gtksharp does not give .pc for gdk-sharp - # So we have to go the GAC-way - export MONO_GAC_PREFIX=${gtksharp} - xbuild Pinta.sln - ''; - - # Very ugly - I don't know enough Mono to improve this. Isn't there any rpath in binaries? - installPhase = '' - mkdir -p $out/lib/pinta $out/bin - cp bin/*.{dll,exe} $out/lib/pinta - cat > $out/bin/pinta << EOF - #!/bin/sh - export MONO_GAC_PREFIX=${gtksharp}:\$MONO_GAC_PREFIX - export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:${gtksharp}/lib:${gtksharp.gtk}/lib:${mono}/lib - exec ${mono}/bin/mono $out/lib/pinta/Pinta.exe - EOF - chmod +x $out/bin/pinta - ''; - - # Always needed on Mono, otherwise nothing runs - dontStrip = true; + # Remove version information from nodes <Reference Include="... Version=... "> + postPatch = with stdenv.lib; let + csprojFiles = [ + "Pinta/Pinta.csproj" + "Pinta.Core/Pinta.Core.csproj" + "Pinta.Effects/Pinta.Effects.csproj" + "Pinta.Gui.Widgets/Pinta.Gui.Widgets.csproj" + "Pinta.Resources/Pinta.Resources.csproj" + "Pinta.Tools/Pinta.Tools.csproj" + ]; + versionedNames = [ + "Mono\\.Addins" + "Mono\\.Posix" + "Mono\\.Addins\\.Gui" + "Mono\\.Addins\\.Setup" + ]; + + stripVersion = name: file: let + match = ''<Reference Include="${name}([ ,][^"]*)?"''; + replace = ''<Reference Include="${name}"''; + in "sed -i -re 's/${match}/${replace}/g' ${file}\n"; + + # Map all possible pairs of two lists + map2 = f: listA: listB: concatMap (a: map (f a) listB) listA; + concatMap2Strings = f: listA: listB: concatStrings (map2 f listA listB); + in + concatMap2Strings stripVersion versionedNames csprojFiles; + + makeWrapperArgs = [ + ''--prefix MONO_GAC_PREFIX ':' "${gtksharp}"'' + ''--prefix LD_LIBRARY_PATH ':' "${gtksharp}/lib"'' + ''--prefix LD_LIBRARY_PATH ':' "${gtksharp.gtk}/lib"'' + ]; meta = { homepage = http://www.pinta-project.com/; description = "Drawing/editing program modeled after Paint.NET"; license = stdenv.lib.licenses.mit; - maintainers = with stdenv.lib.maintainers; [viric]; + maintainers = with stdenv.lib.maintainers; [ viric ]; platforms = with stdenv.lib.platforms; linux; }; } |