virtualbox.scm
1 | ;;; GNU Guix --- Functional package management for GNU |
2 | ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> |
3 | ;;; |
4 | ;;; This file is part of GNU Guix. |
5 | ;;; |
6 | ;;; GNU Guix is free software; you can redistribute it and/or modify it |
7 | ;;; under the terms of the GNU General Public License as published by |
8 | ;;; the Free Software Foundation; either version 3 of the License, or (at |
9 | ;;; your option) any later version. |
10 | ;;; |
11 | ;;; GNU Guix is distributed in the hope that it will be useful, but |
12 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 | ;;; GNU General Public License for more details. |
15 | ;;; |
16 | ;;; You should have received a copy of the GNU General Public License |
17 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. |
18 | |
19 | (define-module (more packages virtualbox) |
20 | #:use-module ((guix licenses) #:prefix license:) |
21 | #:use-module (guix packages) |
22 | #:use-module (guix download) |
23 | #:use-module (guix svn-download) |
24 | #:use-module (guix git-download) |
25 | #:use-module (guix build-system gnu) |
26 | #:use-module (gnu packages) |
27 | #:use-module (gnu packages admin) |
28 | #:use-module (gnu packages autotools) |
29 | #:use-module (gnu packages base) |
30 | #:use-module (gnu packages bison) |
31 | #:use-module (more packages cdrom) |
32 | #:use-module (gnu packages curl) |
33 | #:use-module (gnu packages flex) |
34 | #:use-module (gnu packages gettext) |
35 | #:use-module (gnu packages gl) |
36 | #:use-module (gnu packages gnome) |
37 | #:use-module (gnu packages image) |
38 | #:use-module (gnu packages linux) |
39 | #:use-module (gnu packages m4) |
40 | #:use-module (gnu packages perl) |
41 | #:use-module (gnu packages pkg-config) |
42 | #:use-module (gnu packages python) |
43 | #:use-module (gnu packages qt) |
44 | #:use-module (gnu packages sdl) |
45 | #:use-module (gnu packages texinfo) |
46 | #:use-module (gnu packages tls) |
47 | #:use-module (gnu packages video) |
48 | #:use-module (gnu packages xml) |
49 | #:use-module (gnu packages xorg)) |
50 | |
51 | (define-public kbuild |
52 | (package |
53 | (name "kbuild") |
54 | (version "0.1.9998") |
55 | ;(version "0.1.5-p2") |
56 | (source (origin |
57 | ;(method url-fetch) |
58 | ;(uri (string-append "ftp://ftp.netlabs.org/pub/kbuild/kBuild-" |
59 | ; version "-src.tar.gz")) |
60 | ;(sha256 |
61 | ; (base32 |
62 | ; "19j2sswdqqjzjzmg0xam8nmwmxg422iii0fl9cwzcznjfigdn1c2")))) |
63 | ;(method svn-fetch) |
64 | ;(uri (svn-reference |
65 | ; (url "http://svn.netlabs.org/repos/kbuild/trunk") |
66 | ; (revision 3224))) |
67 | ;(file-name (string-append name "-" version)) |
68 | ;(sha256 |
69 | ; (base32 |
70 | ; "0dvp6j61v92afhkz392zbk0myx27mzqpqcfqr7yyaj3kigbnmal8")))) |
71 | (method git-fetch) |
72 | (uri (git-reference |
73 | (url "https://framagit.org/tyreunom/kbuild-snapshot.git") |
74 | (commit "f3a865c4671242524860097c819152447a03a7f7"))) |
75 | (file-name (string-append name "-" version)) |
76 | (sha256 |
77 | (base32 |
78 | "1xkirw4xdwpgcrvnwdqdr7d3fyg6yg2dzgyi83vxmvib6k4xwvxr")))) |
79 | (build-system gnu-build-system) |
80 | (native-inputs |
81 | `(("autoconf" ,autoconf) |
82 | ("automake" ,automake) |
83 | ("bison" ,bison) |
84 | ("flex" ,flex) |
85 | ("gettext-minimal" ,gettext-minimal) |
86 | ("perl" ,perl) |
87 | ("pkg-config" ,pkg-config) |
88 | ("texinfo" ,texinfo))) |
89 | (arguments |
90 | `(#:tests? #f |
91 | #:phases |
92 | (modify-phases %standard-phases |
93 | (delete 'configure) |
94 | (add-before 'patch-generated-file-shebangs 'reconfigure |
95 | (lambda _ |
96 | (chdir "src/kmk") |
97 | (substitute* "Makefile.am" |
98 | (("AM_CPPFLAGS =") "AM_CPPFLAGS = -I$(srcdir)/../lib//kStuff/include") |
99 | (("kmkbuiltin\\.c") |
100 | "kmkbuiltin.c kmkbuiltin/getopt_r.c kmkbuiltin/getopt1_r.c") |
101 | (("kmk_redirect_SOURCES =") |
102 | "kmk_redirect_SOURCES = output.c")) |
103 | (system* "autoreconf" "-fiv") |
104 | (chdir "../.."))) |
105 | (add-before 'build 'fix-binaries |
106 | (lambda _ |
107 | (substitute* "Config.kmk" |
108 | (("\\+= rt") "+= rt pthread")) |
109 | (substitute* "src/kash/output.h" |
110 | (("dprintf") "debugprintf")) |
111 | (substitute* "src/kash/output.c" |
112 | (("dprintf") "debugprintf")) |
113 | (substitute* "bootstrap.gmk" |
114 | ((" /bin/sh") (string-append " " (which "sh"))) |
115 | ((" /bin/echo") (string-append " " (which "echo")))) |
116 | (substitute* "kBuild/env.sh" |
117 | (("/bin/pwd") (which "pwd"))))) |
118 | (add-before 'build 'fix-errors |
119 | (lambda _ |
120 | (copy-file "src/sed/po/Makefile.in.in" "src/kmk/po/Makefile.in.in") |
121 | (substitute* "src/kmk/kmkbuiltin.c" |
122 | (("int kmk_builtin_dircache.*") |
123 | "int kmk_builtin_dircache(int argc, char **argv, char **envp, PKMKBUILTINCTX pCtx)")) |
124 | (substitute* "src/kmk/kmkbuiltin.h" |
125 | (("#include <fcntl.h>") |
126 | "#include <fcntl.h>\n#include <stdint.h>")) |
127 | (substitute* "src/kmk/output.h" |
128 | (("#define INCLUDED_MAKE_OUTPUT_H") |
129 | "#define INCLUDED_MAKE_OUTPUT_H\n#include <stdio.h>")) |
130 | (substitute* "src/kmk/kmkbuiltin/install.c" |
131 | (("\tuid") "\tThis.uid") |
132 | (("\tgid") "\tThis.gid")) |
133 | (substitute* "src/kmk/kmkbuiltin/rm.c" |
134 | (("\\(vflag\\)") "(pThis->vflag)")) |
135 | (substitute* "src/kmk/kmkbuiltin/getopt_r.h" |
136 | (("typedef struct") "#include <stddef.h>\ntypedef struct")) |
137 | (substitute* "src/kmk/output.c" |
138 | (("unsigned int stdio_traced = 0;") |
139 | "unsigned int stdio_traced = 0;\nssize_t output_write_text (struct output *out, int is_err, const char *src, size_t len){return len;}")) |
140 | ; (("/\\* write/fwrite like function, text mode. \\*/") "#endif") |
141 | ; (("return output_write_bin \\(out, is_err, src, len\\);") |
142 | ; "return output_write_bin (out, is_err, src, len);\n#if 1")) |
143 | #t)) |
144 | (replace 'build |
145 | (lambda _ |
146 | (zero? (system* "kBuild/env.sh" "--full" "make" "-f" "bootstrap.gmk" |
147 | "AUTORECONF=true" |
148 | (string-append "CONFIG_SHELL=" (which "sh")) |
149 | (string-append "AR=" (which "ar")))))) |
150 | (replace 'install |
151 | (lambda* (#:key outputs #:allow-other-keys) |
152 | (zero? (system* "kBuild/env.sh" "kmk" "PATH_INS=/" |
153 | (string-append "NIX_INSTALL_DIR=" |
154 | (assoc-ref outputs "out"))))))))) |
155 | (home-page "http://trac.netlabs.org/kbuild/wiki") |
156 | (synopsis "Makefile framework") |
157 | (description "kBuild is a makefile framework for writing simple makefiles |
158 | for complex tasks.") |
159 | (license license:gpl3+))) |
160 | |
161 | (define-public acpica-unix |
162 | (package |
163 | (name "acpica-unix") |
164 | (version "20170303") |
165 | (home-page "https://www.acpica.org") |
166 | (source (origin |
167 | (method url-fetch) |
168 | (uri (string-append |
169 | "https://acpica.org/sites/acpica/files/acpica-unix-" |
170 | version ".tar.gz")) |
171 | (sha256 |
172 | (base32 |
173 | "1dc933rr11gv1nlaf5j8ih1chdakbjbjkn34jgbm330zppmck4y0")))) |
174 | (build-system gnu-build-system) |
175 | (native-inputs |
176 | `(("m4" ,m4) |
177 | ("bison" ,bison) |
178 | ("flex" ,flex))) |
179 | (arguments |
180 | `(#:tests? #f; no check target |
181 | #:make-flags |
182 | (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) |
183 | #:phases |
184 | (modify-phases %standard-phases |
185 | (delete 'configure) |
186 | (add-before 'build 'goto-dir |
187 | (lambda _ |
188 | (chdir "generate/unix") |
189 | (zero? (system* "make" "clean"))))))) |
190 | (synopsis "") |
191 | (description "") |
192 | (license license:gpl2+))) |
193 | |
194 | (define-public virtualbox |
195 | (package |
196 | (name "virtualbox") |
197 | (version "5.2.8") |
198 | (source (origin |
199 | (method url-fetch) |
200 | (uri (string-append |
201 | "http://download.virtualbox.org/virtualbox/" version |
202 | "/VirtualBox-" version ".tar.bz2")) |
203 | (file-name (string-append name "-" version ".tar.bz2")) |
204 | (sha256 |
205 | (base32 |
206 | "1s44h0d2khclkgkfgcwpq09dpckzr22r8737icdwhjhbgga5j9zf")) |
207 | (modules '((guix build utils))) |
208 | (snippet |
209 | `(begin |
210 | ;; TODO: frmts contains a lot more bundled code. |
211 | (for-each delete-file-recursively |
212 | '("src/libs/libpng-1.2.54" |
213 | "src/libs/libxml2-2.9.4" |
214 | "src/libs/zlib-1.2.8")))))) |
215 | (build-system gnu-build-system) |
216 | (native-inputs |
217 | `(;("kbuild" ,kbuild) |
218 | ("pkg-config" ,pkg-config) |
219 | ("which" ,which))) |
220 | (inputs |
221 | `(("acpica" ,acpica); for iasl |
222 | ("alsa" ,alsa-lib) |
223 | ("curl" ,curl) |
224 | ("cdrtools" ,cdrtools) |
225 | ("glu" ,glu) |
226 | ("libidl" ,libidl) |
227 | ("libpng" ,libpng) |
228 | ("libvpx" ,libvpx) |
229 | ("libxcursor" ,libxcursor) |
230 | ("libxext" ,libxext) |
231 | ("libxinerama" ,libxinerama) |
232 | ("libxml2" ,libxml2) |
233 | ("libxmu" ,libxmu) |
234 | ("libxrandr" ,libxrandr) |
235 | ("libxslt" ,libxslt) |
236 | ("lvm2" ,lvm2) |
237 | ("mesa" ,mesa) |
238 | ("python" ,python-2) |
239 | ("qt" ,qt) |
240 | ("openssl" ,openssl) |
241 | ("sdl" ,sdl))) |
242 | (arguments |
243 | `(#:phases |
244 | (modify-phases %standard-phases |
245 | (add-before 'configure 'fix-paths |
246 | (lambda* (#:key inputs #:allow-other-keys) |
247 | (substitute* "configure" |
248 | (("CXX=.*") "CXX=\"g++ -std=c++11\"\n") |
249 | (("PYTHONDIR=.*") |
250 | (string-append "PYTHONDIR=" (assoc-ref inputs "python") "\n")) |
251 | (("QT5DIR=.*") |
252 | (string-append "QT5DIR=" (assoc-ref inputs "qt") "\n"))))) |
253 | ;(add-before 'configure 'remove-binaries |
254 | ;(lambda* _ |
255 | ;(substitute* "configure" |
256 | ; (("bin/\\$OS.\\$BUILD_MACHINE") "bin")) |
257 | ;(delete-file-recursively "tools") |
258 | ;(delete-file-recursively "kBuild/bin"))) |
259 | (replace 'configure |
260 | (lambda* (#:key outputs inputs #:allow-other-keys) |
261 | (setenv "I_INCXML2" (string-append "-I" (assoc-ref inputs "libxml2") |
262 | "/include/libxml2")) |
263 | (setenv "I_INCSDL" (string-append "-I" (assoc-ref inputs "sdl") |
264 | "/include/SDL")) |
265 | (invoke "./configure" "--disable-java" "--disable-pulse" |
266 | "--disable-vmmraw" |
267 | (string-append "--with-makeself=" (which "echo"))) |
268 | ;(string-append "--with-kbuild=" |
269 | ; (assoc-ref inputs "kbuild")))) |
270 | #t)) |
271 | (replace 'build |
272 | (lambda* _ |
273 | (invoke "kmk") |
274 | #t))))) |
275 | (home-page "https://www.virtualbox.org") |
276 | (synopsis "Virtual Machine manager") |
277 | (description |
278 | "VirtualBox is a powerful x86 and AMD64/Intel64 virtualization product for |
279 | enterprise as well as home use.") |
280 | (license license:gpl2+))) |
281 |