btrbk: add mainProgram (#356350)
[NixPkgs.git] / pkgs / by-name / ru / rubiks / package.nix
bloba3fba32d05c3e261b116e05a1f88438c507c8cf6
1 { lib, stdenv
2 , fetchurl
3 , fetchpatch
4 , coreutils
5 , dos2unix
6 }:
8 stdenv.mkDerivation rec {
9   pname = "rubiks";
10   version = "20070912";
12   src = fetchurl {
13     url = "mirror://sageupstream/rubiks/rubiks-${version}.tar.bz2";
14     sha256 = "0zdmkb0j1kyspdpsszzb2k3279xij79jkx0dxd9f3ix1yyyg3yfq";
15   };
17   preConfigure = ''
18     export INSTALL="${coreutils}/bin/install"
19   '';
21   # everything is done in `make install`
22   dontBuild = true;
24   installFlags = [
25     "PREFIX=$(out)"
26   ];
28   nativeBuildInputs = [ dos2unix ];
30   prePatch = ''
31     find ./dietz/ -type f -exec dos2unix {} \;
32   '';
34   patches = [
35     # Fix makefiles which use all the variables in all the wrong ways and
36     # hardcode values for some variables.
37     (fetchpatch {
38       url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/dietz-cu2-Makefile.patch";
39       sha256 = "bRU7MJ/6BgCp2PUqZOragJhm38Q3E8ShStXQIYwIjvw=";
40     })
41     (fetchpatch {
42       url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/dietz-mcube-Makefile.patch";
43       sha256 = "f53z4DogXKax1vUNkraOTt3TQ4bvT7CdQK/hOaaBS38=";
44     })
45     (fetchpatch {
46       url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/dietz-solver-Makefile.patch";
47       sha256 = "7gMC8y9elyIy2KvXYcp7YjPBNqn9PVhUle+/GrYAAdE=";
48     })
49     (fetchpatch {
50       url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/reid-Makefile.patch";
51       sha256 = "rp3SYtx02vVBtSlg1vJpdIoXNcdBNKDLCLqLAKwOYeQ=";
52     })
53     (fetchpatch {
54       url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/fedora-1-rubiks-includes.patch";
55       sha256 = "QYJ1KQ73HTEGY/beMVbcU215g/B8rHDjYD1YM2WZ7sk=";
56     })
57     (fetchpatch {
58       url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/fedora-2-rubiks-ansi-c.patch";
59       sha256 = "Rnu7uphE9URxnbg2K8mkymnB61magweH+WxVWR9JC4s=";
60     })
61     (fetchpatch {
62       url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/fedora-3-rubiks-prototypes.patch";
63       sha256 = "Wi038g+y7No1TNMiITtAdipjRi0+g6h0Sspslm5rZGU=";
64     })
65     (fetchpatch {
66       url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/fedora-4-rubiks-longtype.patch";
67       sha256 = "6pNuxFM69CZ/TQGZfHXLlCN5g5lf3RiYYZKzMvLJwkw=";
68     })
69     (fetchpatch {
70       url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/fedora-5-rubiks-signed.patch";
71       sha256 = "CCGXBMYvSjTm4YKQZAQMi6pWGjyHDYYQzdMZDSW2vFE=";
72     })
73     (fetchpatch {
74       url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/fedora-6-rubiks-attributes.patch";
75       sha256 = "RhlzMb33iaLfeBoF7Y0LIgEzOB/EC+AoWMSkRPCICaU=";
76     })
77   ];
79   meta = with lib; {
80     homepage = "https://wiki.sagemath.org/spkg/rubiks";
81     description = "Several programs for working with Rubik's cubes";
82     # The individual websites are no longer available
83     longDescription = ''
84       There are several programs for working with Rubik's cubes, by three
85       different people. Look inside the directories under /src to see
86       specific info and licensing. In summary the three contributers are:
89       Michael Reid (GPL) http://www.math.ucf.edu/~reid/Rubik/optimal_solver.html
90           optimal - uses many pre-computed tables to find an optimal
91                     solution to the 3x3x3 Rubik's cube
94       Dik T. Winter (MIT License)
95           cube    - uses Kociemba's algorithm to iteratively find a short
96                     solution to the 3x3x3 Rubik's cube
97           size222 - solves a 2x2x2 Rubik's cube
100       Eric Dietz (GPL) http://www.wrongway.org/?rubiksource
101           cu2   - A fast, non-optimal 2x2x2 solver
102           cubex - A fast, non-optimal 3x3x3 solver
103           mcube - A fast, non-optimal 4x4x4 solver
104     '';
105     license = with licenses; [
106       gpl2 # Michael Reid's and Eric Dietz software
107       mit # Dik T. Winter's software
108     ];
109     maintainers = teams.sage.members;
110     platforms = platforms.unix;
111   };