aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-02-16 02:09:10 +0100
committerLudovic Courtès <ludo@gnu.org>2013-02-27 20:55:40 +0100
commit106ca9d0c160137ac41466b6d7cf18eee4f4583e (patch)
tree911a881c8e3967509b8bebd1afd2219d909dbeb5
parent5f7c5a97ba0a30b7fcdcbdf330efa4800c7bce90 (diff)
downloadgnu-guix-106ca9d0c160137ac41466b6d7cf18eee4f4583e.tar
gnu-guix-106ca9d0c160137ac41466b6d7cf18eee4f4583e.tar.gz
gnu: qemu-kvm: Add patch to have multiple SMB shares.
* gnu/packages/qemu.scm (qemu-kvm/smb-shares): New variable. * gnu/packages/patches/qemu-multiple-smb-shares.patch: New file. * Makefile.am (dist_patch_DATA): Add it.
-rw-r--r--Makefile.am1
-rw-r--r--gnu/packages/patches/qemu-multiple-smb-shares.patch20
-rw-r--r--gnu/packages/qemu.scm13
3 files changed, 34 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am
index 84277ddc13..c9e3ca92f5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -202,6 +202,7 @@ dist_patch_DATA = \
gnu/packages/patches/mcron-install.patch \
gnu/packages/patches/perl-no-sys-dirs.patch \
gnu/packages/patches/procps-make-3.82.patch \
+ gnu/packages/patches/qemu-multiple-smb-shares.patch \
gnu/packages/patches/readline-link-ncurses.patch \
gnu/packages/patches/shishi-gets-undeclared.patch \
gnu/packages/patches/tar-gets-undeclared.patch \
diff --git a/gnu/packages/patches/qemu-multiple-smb-shares.patch b/gnu/packages/patches/qemu-multiple-smb-shares.patch
new file mode 100644
index 0000000000..c20066cbfe
--- /dev/null
+++ b/gnu/packages/patches/qemu-multiple-smb-shares.patch
@@ -0,0 +1,20 @@
+This file extends `-smb' to add a share for the Nix store, and changes
+the name of the default share.
+
+--- a/net/slirp.c
++++ b/net/slirp.c
+@@ -515,8 +515,12 @@ static int slirp_smb(SlirpState* s, const char *exported_dir,
+ "log file=%s/log.smbd\n"
+ "smb passwd file=%s/smbpasswd\n"
+ "security = share\n"
+- "[qemu]\n"
+- "path=%s\n"
++ "[store]\n"
++ "path=/nix/store\n"
++ "read only=yes\n"
++ "guest ok=yes\n"
++ "[xchg]\n"
++ "path=%s/xchg\n"
+ "read only=no\n"
+ "guest ok=yes\n",
+ s->smb_dir,
diff --git a/gnu/packages/qemu.scm b/gnu/packages/qemu.scm
index 785d470079..b10935ce0d 100644
--- a/gnu/packages/qemu.scm
+++ b/gnu/packages/qemu.scm
@@ -22,6 +22,7 @@
#:use-module (guix utils)
#:use-module ((guix licenses) #:select (gpl2))
#:use-module (guix build-system gnu)
+ #:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages glib)
@@ -96,6 +97,18 @@ underway to get the required changes upstream.")
;; Many files are GPLv2+, but some are GPLv2-only---e.g., `memory.c'.
(license gpl2)))
+(define-public qemu-kvm/smb-shares
+ ;; A patched QEMU-KVM where `-net smb' yields two shares instead of one: one
+ ;; for the store, and another one for exchanges with the host.
+ (package (inherit qemu-kvm)
+ (name "qemu-kvm-with-multiple-smb-shares")
+ (inputs `(,@(package-inputs qemu-kvm)
+ ("patch/smb-shares"
+ ,(search-patch "qemu-multiple-smb-shares.patch"))))
+ (arguments
+ `(#:patches (list (assoc-ref %build-inputs "patch/smb-shares"))
+ ,@(package-arguments qemu-kvm)))))
+
(define-public qemu
;; The real one, with a complete target list.
(package (inherit qemu-kvm)