commit
04d45939d0
@ -1,44 +1,83 @@
|
|||||||
{stdenv, fetchurl, mono, gtksharp, pkgconfig}:
|
{ stdenv, fetchFromGitHub, buildDotnetPackage, dotnetPackages, gtksharp,
|
||||||
|
gettext }:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
let
|
||||||
name = "pinta-1.4";
|
mono-addins = dotnetPackages.MonoAddins;
|
||||||
|
in
|
||||||
|
buildDotnetPackage rec {
|
||||||
|
name = "pinta-1.6";
|
||||||
|
|
||||||
src = fetchurl {
|
baseName = "Pinta";
|
||||||
url = "https://github.com/PintaProject/Pinta/tarball/3f7ccfa93d";
|
version = "1.6";
|
||||||
name = "pinta-1.4.tar.gz";
|
outputFiles = [ "bin/*" ];
|
||||||
sha256 = "1kgb4gy5l6bd0akniwhiqqkvqayr5jgdsvn2pgg1038q9raafnpn";
|
buildInputs = [ gtksharp mono-addins gettext ];
|
||||||
|
xBuildFiles = [ "Pinta.sln" ];
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "PintaProject";
|
||||||
|
repo = "Pinta";
|
||||||
|
rev = version;
|
||||||
|
sha256 = "0vgswy981c7ys4q7js5k85sky7bz8v32wsfq3br4j41vg92pw97d";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [mono gtksharp pkgconfig];
|
# 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"
|
||||||
|
];
|
||||||
|
|
||||||
buildPhase = ''
|
stripVersion = name: file: let
|
||||||
# xbuild understands pkgconfig, but gtksharp does not give .pc for gdk-sharp
|
match = ''<Reference Include="${name}([ ,][^"]*)?"'';
|
||||||
# So we have to go the GAC-way
|
replace = ''<Reference Include="${name}"'';
|
||||||
export MONO_GAC_PREFIX=${gtksharp}
|
in "sed -i -re 's/${match}/${replace}/g' ${file}\n";
|
||||||
xbuild Pinta.sln
|
|
||||||
|
# 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
|
||||||
|
+ ''
|
||||||
|
# For some reason there is no Microsoft.Common.tasks file
|
||||||
|
# in ''${mono}/lib/mono/3.5 .
|
||||||
|
substituteInPlace Pinta.Install.proj \
|
||||||
|
--replace 'ToolsVersion="3.5"' 'ToolsVersion="4.0"' \
|
||||||
|
--replace "/usr/local" "$out"
|
||||||
|
'';
|
||||||
|
|
||||||
|
makeWrapperArgs = [
|
||||||
|
''--prefix MONO_GAC_PREFIX ':' "${gtksharp}"''
|
||||||
|
''--prefix LD_LIBRARY_PATH ':' "${gtksharp}/lib"''
|
||||||
|
''--prefix LD_LIBRARY_PATH ':' "${gtksharp.gtk}/lib"''
|
||||||
|
];
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
# Do automake's job manually
|
||||||
|
substitute xdg/pinta.desktop.in xdg/pinta.desktop \
|
||||||
|
--replace _Name Name \
|
||||||
|
--replace _Comment Comment \
|
||||||
|
--replace _GenericName GenericName \
|
||||||
|
--replace _X-GNOME-FullName X-GNOME-FullName
|
||||||
|
|
||||||
|
xbuild /target:CompileTranslations Pinta.Install.proj
|
||||||
|
xbuild /target:Install Pinta.Install.proj
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# 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;
|
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = http://www.pinta-project.com/;
|
homepage = http://www.pinta-project.com/;
|
||||||
description = "Drawing/editing program modeled after Paint.NET";
|
description = "Drawing/editing program modeled after Paint.NET";
|
||||||
license = stdenv.lib.licenses.mit;
|
license = stdenv.lib.licenses.mit;
|
||||||
maintainers = with stdenv.lib.maintainers; [viric];
|
maintainers = with stdenv.lib.maintainers; [ viric ];
|
||||||
platforms = with stdenv.lib.platforms; linux;
|
platforms = with stdenv.lib.platforms; linux;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,9 @@ attrsOrig @
|
|||||||
, outputFiles ? [ "bin/Release/*" ]
|
, outputFiles ? [ "bin/Release/*" ]
|
||||||
, dllFiles ? [ "*.dll" ]
|
, dllFiles ? [ "*.dll" ]
|
||||||
, exeFiles ? [ "*.exe" ]
|
, exeFiles ? [ "*.exe" ]
|
||||||
|
# Additional arguments to pass to the makeWrapper function, which wraps
|
||||||
|
# generated binaries.
|
||||||
|
, makeWrapperArgs ? [ ]
|
||||||
, ... }:
|
, ... }:
|
||||||
let
|
let
|
||||||
arrayToShell = (a: toString (map (lib.escape (lib.stringToCharacters "\\ ';$`()|<>\t") ) a));
|
arrayToShell = (a: toString (map (lib.escape (lib.stringToCharacters "\\ ';$`()|<>\t") ) a));
|
||||||
@ -98,7 +101,10 @@ attrsOrig @
|
|||||||
[ -f "$exe" ] || continue
|
[ -f "$exe" ] || continue
|
||||||
mkdir -p "$out"/bin
|
mkdir -p "$out"/bin
|
||||||
commandName="$(basename -s .exe "$(echo "$exe" | tr "[A-Z]" "[a-z]")")"
|
commandName="$(basename -s .exe "$(echo "$exe" | tr "[A-Z]" "[a-z]")")"
|
||||||
makeWrapper "${mono}/bin/mono \"$exe\"" "$out"/bin/"$commandName"
|
makeWrapper \
|
||||||
|
"${mono}/bin/mono \"$exe\"" \
|
||||||
|
"$out"/bin/"$commandName" \
|
||||||
|
''${makeWrapperArgs}
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -420,6 +420,38 @@ let self = dotnetPackages // overrides; dotnetPackages = with self; {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
MonoAddins = buildDotnetPackage rec {
|
||||||
|
baseName = "Mono.Addins";
|
||||||
|
version = "1.2";
|
||||||
|
|
||||||
|
xBuildFiles = [
|
||||||
|
"Mono.Addins/Mono.Addins.csproj"
|
||||||
|
"Mono.Addins.Setup/Mono.Addins.Setup.csproj"
|
||||||
|
"Mono.Addins.Gui/Mono.Addins.Gui.csproj"
|
||||||
|
"Mono.Addins.CecilReflector/Mono.Addins.CecilReflector.csproj"
|
||||||
|
];
|
||||||
|
outputFiles = [ "bin/*" ];
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "mono";
|
||||||
|
repo = "mono-addins";
|
||||||
|
rev = "mono-addins-${version}";
|
||||||
|
sha256 = "1hnn0a2qsjcjprsxas424bzvhsdwy0yc2jj5xbp698c0m9kfk24y";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [ pkgs.gtk-sharp ];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "A generic framework for creating extensible applications";
|
||||||
|
homepage = http://www.mono-project.com/Mono.Addins;
|
||||||
|
longDescription = ''
|
||||||
|
A generic framework for creating extensible applications,
|
||||||
|
and for creating libraries which extend those applications.
|
||||||
|
'';
|
||||||
|
license = stdenv.lib.licenses.mit;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
MonoDevelopFSharpBinding = buildDotnetPackage rec {
|
MonoDevelopFSharpBinding = buildDotnetPackage rec {
|
||||||
baseName = "MonoDevelop.FSharpBinding";
|
baseName = "MonoDevelop.FSharpBinding";
|
||||||
version = "git-a09c8185eb";
|
version = "git-a09c8185eb";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user