lol
1{ lib, stdenv
2, fetchurl
3, fetchpatch
4, coreutils
5, dos2unix
6}:
7
8stdenv.mkDerivation rec {
9 pname = "rubiks";
10 version = "20070912";
11
12 src = fetchurl {
13 url = "mirror://sageupstream/rubiks/rubiks-${version}.tar.bz2";
14 sha256 = "0zdmkb0j1kyspdpsszzb2k3279xij79jkx0dxd9f3ix1yyyg3yfq";
15 };
16
17 preConfigure = ''
18 export INSTALL="${coreutils}/bin/install"
19 '';
20
21 # everything is done in `make install`
22 buildPhase = "true";
23
24 installFlags = [
25 "PREFIX=$(out)"
26 ];
27
28 nativeBuildInputs = [ dos2unix ];
29
30 prePatch = ''
31 find ./dietz/ -type f -exec dos2unix {} \;
32 '';
33
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 ];
78
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:
87
88
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
92
93
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
98
99
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 };
112}