Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
G
Guix
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
ogs
inf
Guix
Commits
35e8900d
Unverified
Commit
35e8900d
authored
6 years ago
by
Danny Milosavljevic
Browse files
Options
Downloads
Patches
Plain Diff
gnu: Add xen.
* gnu/packages/virtualization.scm (xen): New variable.
parent
e3634bd0
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
gnu/packages/virtualization.scm
+214
-0
214 additions, 0 deletions
gnu/packages/virtualization.scm
with
214 additions
and
0 deletions
gnu/packages/virtualization.scm
+
214
−
0
View file @
35e8900d
...
...
@@ -30,17 +30,22 @@
(
define-module
(
gnu
packages
virtualization
)
#
:use-module
(
gnu
packages
)
#
:use-module
(
gnu
packages
admin
)
#
:use-module
(
gnu
packages
assembly
)
#
:use-module
(
gnu
packages
attr
)
#
:use-module
(
gnu
packages
autotools
)
#
:use-module
(
gnu
packages
bison
)
#
:use-module
(
gnu
packages
check
)
#
:use-module
(
gnu
packages
cmake
)
#
:use-module
(
gnu
packages
compression
)
#
:use-module
(
gnu
packages
cross-base
)
#
:use-module
(
gnu
packages
curl
)
#
:use-module
(
gnu
packages
cyrus-sasl
)
#
:use-module
(
gnu
packages
disk
)
#
:use-module
(
gnu
packages
dns
)
#
:use-module
(
gnu
packages
docbook
)
#
:use-module
(
gnu
packages
documentation
)
#
:use-module
(
gnu
packages
figlet
)
#
:use-module
(
gnu
packages
firmware
)
#
:use-module
(
gnu
packages
flex
)
#
:use-module
(
gnu
packages
fontutils
)
#
:use-module
(
gnu
packages
gettext
)
...
...
@@ -72,6 +77,7 @@ (define-module (gnu packages virtualization)
#
:use-module
(
gnu
packages
textutils
)
#
:use-module
(
gnu
packages
tls
)
#
:use-module
(
gnu
packages
web
)
#
:use-module
(
gnu
packages
wget
)
#
:use-module
(
gnu
packages
xdisorg
)
#
:use-module
(
gnu
packages
xml
)
#
:use-module
(
gnu
packages
xorg
)
...
...
@@ -1103,3 +1109,211 @@ (define-public bochs
Bochs can run most Operating Systems inside the emulation including Linux,
DOS or Microsoft Windows."
)
(
license
license:lgpl2
.
0
+
)))
;; TODO: "make world"
(
define-public
xen
(
package
(
name
"xen"
)
(
version
"4.11.1"
)
(
source
(
origin
(
method
git-fetch
)
(
uri
(
git-reference
(
url
"git://xenbits.xenproject.org/xen.git"
)
(
commit
(
string-append
"RELEASE-"
version
))))
(
file-name
(
git-file-name
name
version
))
(
sha256
(
base32
"1wv1hyfii14vi9lfjmnv07h2gpm3b7kvh2p55f4yy2b40simksgk"
))))
(
build-system
gnu-build-system
)
(
arguments
`
(
#
:configure-flags
(
list
"--enable-rpath"
"--disable-qemu-traditional"
; It tries to do "git clone"
"--disable-rombios"
; would try to "git clone" via etherboot.
;"--disable-seabios" ; It tries to do "git clone"
;; TODO: Re-enable stubdom (it's "more secure" to use it).
"--disable-stubdom"
; tries to "git clone" old patched newlib.
(
string-append
"--with-initddir="
(
assoc-ref
%outputs
"out"
)
"/etc/init.d"
)
(
string-append
"--with-system-qemu="
(
assoc-ref
%build-inputs
"qemu"
)
"/bin/qemu-system-i386"
)
(
string-append
"--with-system-seabios="
(
assoc-ref
%build-inputs
"seabios"
)
"/share/firmware/bios.bin"
)
(
string-append
"--with-system-ovmf="
(
assoc-ref
%build-inputs
"ovmf"
)
"/share/firmware/ovmf_ia32.bin"
))
#
:make-flags
(
list
"-j"
"1"
"XEN_BUILD_DATE=Thu Jan 1 01:00:01 CET 1970"
"XEN_BUILD_TIME=01:00:01"
"XEN_BUILD_HOST="
"ETHERBOOT_NICS="
"SMBIOS_REL_DATE=01/01/1970"
"VGABIOS_REL_DATE=01 Jan 1970"
; QEMU_TRADITIONAL_LOC
; QEMU_UPSTREAM_LOC
"SYSCONFIG_DIR=/tmp/etc/default"
(
string-append
"BASH_COMPLETION_DIR="
(
assoc-ref
%outputs
"out"
)
"/etc/bash_completion.d"
)
(
string-append
"BOOT_DIR="
(
assoc-ref
%outputs
"out"
)
"/boot"
)
(
string-append
"DEBUG_DIR="
(
assoc-ref
%outputs
"out"
)
"/lib/debug"
)
(
string-append
"EFI_DIR="
(
assoc-ref
%outputs
"out"
)
"/lib/efi"
)
; TODO lib64 ?
"MINIOS_UPSTREAM_URL="
;(string-append "DISTDIR="
; (assoc-ref %outputs "out"))
)
#
:test-target
"test"
#
:phases
(
modify-phases
%standard-phases
(
add-after
'unpack
'unpack-mini-os
(
lambda*
(
#
:key
inputs
#
:allow-other-keys
)
(
copy-recursively
(
assoc-ref
inputs
"mini-os"
)
"extras/mini-os"
)
#t
))
(
add-after
'unpack-mini-os
'patch
(
lambda*
(
#
:key
inputs
outputs
#
:allow-other-keys
)
(
substitute*
"tools/firmware/Rules.mk"
((
"override XEN_TARGET_ARCH = x86_32"
)
(
string-append
"override XEN_TARGET_ARCH = x86_32
override CC = "
(
assoc-ref
inputs
"cross-gcc"
)
"/bin/i686-linux-gnu-gcc"
))
((
"^CFLAGS =$"
)
(
string-append
"CFLAGS=-I"
(
assoc-ref
inputs
"cross-libc"
)
"/include\n"
)))
(
substitute*
"config/x86_32.mk"
((
"CFLAGS += -m32 -march=i686"
)
(
string-append
"CFLAGS += -march=i686 -I"
(
assoc-ref
inputs
"cross-libc"
)
"/include"
)))
;; Tries to use "git clone".
(
substitute*
"tools/firmware/Makefile"
((
"\\+= etherboot"
)
"+="
))
;; /var is not in /gnu/store , so don't try to create it.
(
substitute*
'
(
"tools/Makefile"
"tools/xenstore/Makefile"
"tools/xenpaging/Makefile"
)
((
"\\$\\(INSTALL_DIR\\) .*XEN_(DUMP|LOG|RUN|LIB|PAGING)_DIR.*"
)
"\n"
)
((
"\\$\\(INSTALL_DIR\\) .*XEN_(RUN|LIB)_STORED.*"
)
"\n"
))
;; Prevent xen from creating /etc .
(
substitute*
"tools/examples/Makefile"
((
" install-readmes"
)
""
)
((
" install-configs"
)
""
))
;; Set rpath.
(
substitute*
"tools/pygrub/setup.py"
((
"library_dirs ="
)
; TODO: extra_link_args = ['-Wl,-rpath=/opt/foo'],
(
string-append
"runtime_library_dirs = ['"
(
assoc-ref
outputs
"out"
)
"/lib'],\nlibrary_dirs ="
)))
#t
))
(
add-before
'configure
'patch-xen-script-directory
(
lambda*
(
#
:key
outputs
#
:allow-other-keys
)
(
substitute*
'
(
"configure"
"tools/configure"
"docs/configure"
)
((
"XEN_SCRIPT_DIR=.*"
)
(
string-append
"XEN_SCRIPT_DIR="
(
assoc-ref
outputs
"out"
)
"/etc/xen/scripts"
)))
#t
))
(
add-before
'configure
'set-environment-up
(
lambda*
(
#
:key
make-flags
#
:allow-other-keys
)
(
define
(
cross?
x
)
(
string-contains
x
"cross-i686-linux"
))
(
define
(
filter-environment!
filter-predicate
environment-variable-names
)
(
for-each
(
lambda
(
env-name
)
(
let*
((
env-value
(
getenv
env-name
))
(
search-path
(
search-path-as-string->list
env-value
))
(
new-search-path
(
filter
filter-predicate
search-path
))
(
new-env-value
(
list->search-path-as-string
new-search-path
":"
)))
(
setenv
env-name
new-env-value
)))
environment-variable-names
))
(
setenv
"CROSS_C_INCLUDE_PATH"
(
getenv
"C_INCLUDE_PATH"
))
(
setenv
"CROSS_CPLUS_INCLUDE_PATH"
(
getenv
"CPLUS_INCLUDE_PATH"
))
(
setenv
"CROSS_LIBRARY_PATH"
(
getenv
"LIBRARY_PATH"
))
(
filter-environment!
cross?
'
(
"CROSS_C_INCLUDE_PATH"
"CROSS_CPLUS_INCLUDE_PATH"
"CROSS_LIBRARY_PATH"
))
(
filter-environment!
(
lambda
(
e
)
(
not
(
cross?
e
)))
'
(
"C_INCLUDE_PATH"
"CPLUS_INCLUDE_PATH"
"LIBRARY_PATH"
))
;; Guix tries to be helpful and automatically adds
;; mini-os-git-checkout/include to the include path,
;; but actually we don't want it to be there (yet).
(
filter-environment!
(
lambda
(
e
)
(
not
(
string-contains
e
"mini-os-git-checkout"
)))
'
(
"C_INCLUDE_PATH"
"CPLUS_INCLUDE_PATH"
"LIBRARY_PATH"
))
(
setenv
"EFI_VENDOR"
"guix"
)
#t
))
(
replace
'build
(
lambda*
(
#
:key
make-flags
#
:allow-other-keys
)
(
apply
invoke
"make"
"world"
make-flags
))))))
(
inputs
`
((
"acpica"
,
acpica
)
; TODO: patch iasl invocation.
(
"bridge-utils"
,
bridge-utils
)
; TODO: patch invocations.
(
"glib"
,
glib
)
(
"iproute"
,
iproute
)
; TODO: patch invocations.
(
"libaio"
,
libaio
)
(
"libx11"
,
libx11
)
(
"libyajl"
,
libyajl
)
(
"ncurses"
,
ncurses
)
(
"openssl"
,
openssl
)
(
"ovmf"
,
ovmf
)
(
"pixman"
,
pixman
)
(
"qemu"
,
qemu-minimal
)
(
"seabios"
,
seabios
)
(
"util-linux"
,
util-linux
)
; uuid
; TODO: ocaml-findlib, ocaml-nox.
(
"xz"
,
xz
)
; for liblzma
(
"zlib"
,
zlib
)))
(
native-inputs
`
((
"dev86"
,
dev86
)
(
"bison"
,
bison
)
(
"cmake"
,
cmake
)
(
"figlet"
,
figlet
)
(
"flex"
,
flex
)
(
"gettext"
,
gettext-minimal
)
(
"libnl"
,
libnl
)
(
"mini-os"
,
(
origin
(
method
git-fetch
)
(
uri
(
git-reference
(
url
"http://xenbits.xen.org/git-http/mini-os.git"
)
(
commit
(
string-append
"xen-RELEASE-"
version
))))
(
sha256
(
base32
"1i8pcl19n60i2m9vlg79q3nknpj209c9ic5x10wxaicx45kc107f"
))
(
file-name
"mini-os-git-checkout"
)))
(
"perl"
,
perl
)
; TODO: markdown
(
"pkg-config"
,
pkg-config
)
(
"python"
,
python-2
)
(
"wget"
,
wget
)
(
"cross-gcc"
,
(
cross-gcc
"i686-linux-gnu"
#
:xbinutils
(
cross-binutils
"i686-linux-gnu"
)
#
:libc
(
cross-libc
"i686-linux-gnu"
)))
(
"cross-libc"
,
(
cross-libc
"i686-linux-gnu"
))
; header files
(
"cross-libc-static"
,
(
cross-libc
"i686-linux-gnu"
)
"static"
)))
(
home-page
"https://xenproject.org/"
)
(
synopsis
"Xen Virtual Machine Monitor"
)
(
description
"This package provides the Xen Virtual Machine Monitor
which is a hypervisor."
)
;; TODO: Some files are licensed differently. List those.
(
license
license:gpl2
)
(
supported-systems
'
(
"i686-linux"
"x86_64-linux"
"armhf-linux"
))))
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment