nixpkgs-suyu/pkgs/applications/graphics/pinta/default.nix
Patrick Hilhorst f7e390e6d4 treewide: fix redirected urls (run 3)
Related:
 - 9fc5e7e473
 - 593e11fd94
 - 508ae42a0f

Since the last time I ran this script, the Repology API changed, so I had to
adapt the script used in the previous PR. The new API should be more robust, so
overall this is a positive (no more grepping the error messages for our relevant
data but just a nice json structure).

Here's the new script I used:

```sh
curl https://repology.org/api/v1/repository/nix_unstable/problems \
   | jq -r '.[] | select(.type == "homepage_permanent_https_redirect") | .data | "s@\(.url)@\(.target)@"' \
   | sort | uniq | tee script.sed
find -name '*.nix' | xargs -P4 -- sed -f script.sed -i
```

I will also add this script to `maintainers/scripts`.
2020-10-02 09:01:35 -07:00

83 lines
2.5 KiB
Nix

{ stdenv, fetchFromGitHub, buildDotnetPackage, dotnetPackages, gtksharp,
gettext }:
let
mono-addins = dotnetPackages.MonoAddins;
in
buildDotnetPackage rec {
name = "pinta-1.6";
baseName = "Pinta";
version = "1.6";
outputFiles = [ "bin/*" ];
buildInputs = [ gtksharp mono-addins gettext ];
xBuildFiles = [ "Pinta.sln" ];
src = fetchFromGitHub {
owner = "PintaProject";
repo = "Pinta";
rev = version;
sha256 = "0vgswy981c7ys4q7js5k85sky7bz8v32wsfq3br4j41vg92pw97d";
};
# 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
+ ''
# 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.out}/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
'';
meta = {
homepage = "https://www.pinta-project.com/";
description = "Drawing/editing program modeled after Paint.NET";
license = stdenv.lib.licenses.mit;
maintainers = with stdenv.lib.maintainers; [ ];
platforms = with stdenv.lib.platforms; linux;
};
}