From d6ff21dcb566ea822519e6ef3a202608494e7eaa Mon Sep 17 00:00:00 2001 From: moparisthebest Date: Wed, 18 Apr 2018 12:37:02 -0400 Subject: [PATCH] Add vdfuse --- src/vdfuse/PKGBUILD | 52 +++++++++++++++++++ ...dd-typedef-to-PARTITIONING_TYPE_vd.h.patch | 16 ++++++ .../init-VDINTERFACEERROR_vdfuse.c.patch | 20 +++++++ src/vdfuse/vdfuse.install | 7 +++ 4 files changed, 95 insertions(+) create mode 100644 src/vdfuse/PKGBUILD create mode 100644 src/vdfuse/add-typedef-to-PARTITIONING_TYPE_vd.h.patch create mode 100644 src/vdfuse/init-VDINTERFACEERROR_vdfuse.c.patch create mode 100644 src/vdfuse/vdfuse.install diff --git a/src/vdfuse/PKGBUILD b/src/vdfuse/PKGBUILD new file mode 100644 index 0000000..25b0c5b --- /dev/null +++ b/src/vdfuse/PKGBUILD @@ -0,0 +1,52 @@ +# Maintainer: Muflone http://www.muflone.com/contacts/english/ +# Contributor: laloch +# Contributor: TDY +# Contributor: Ivan Shapovalov + +pkgname=vdfuse +pkgver=82a +pkgrel=11 +_headers=svn-47049 +pkgdesc="A FUSE module for mounting VirtualBox disk images (VDI/VMDK/VHD) on the host" +arch=('i686' 'x86_64') +url="http://forums.virtualbox.org/viewtopic.php?f=26&t=33355" +license=('GPL3') +depends=('fuse' 'virtualbox' 'virtualbox-sdk') +makedepends=('pkgconfig') +install="${pkgname}.install" +source=("http://ftp.de.debian.org/debian/pool/main/v/virtualbox/virtualbox_4.1.42-dfsg-1+deb7u1.debian.tar.xz" + "https://github.com/muflone/virtualbox-includes/archive/${_headers}.tar.gz" + "vdautomount"::"http://forums.virtualbox.org/download/file.php?id=2865" + "add-typedef-to-PARTITIONING_TYPE_vd.h.patch" + "init-VDINTERFACEERROR_vdfuse.c.patch") +sha256sums=('54af4a721b6534de5f23f86e6d644d3e5b03383f2d1d90f4dbfeff84bbed47e9' + '357d0cc778f33684d158e60acae9478b26256af39b31bed19556c0928f133001' + '28b4ce0e0ca72721e0dbbdc776e5c3aa47b160afa8538064497be68da4713493' + '98f3a12fd288b650879822655c8c2ead10a630aa9637a186c7289c1f2f015c31' + 'c4ae283a2f94ac81615c3b3d5f6a3c93d1d03438ee9f1e2520f8e2043b9aa1c0') + +prepare() { + [ -d "${srcdir}/includes" ] && rm -rf "${srcdir}/includes" ] + cp -r "virtualbox-includes-${_headers}" "${srcdir}/includes" + msg2 "Patching sources..." + sed -i '1s,python,&2,' "${srcdir}/vdautomount" + patch -p1 -i "add-typedef-to-PARTITIONING_TYPE_vd.h.patch" + patch -p1 -i "init-VDINTERFACEERROR_vdfuse.c.patch" +} + +build() { + cd "debian/${pkgname}" + gcc "${pkgname}.c" -o "${pkgname}" \ + $(pkg-config --cflags --libs fuse) \ + -I"${srcdir}/includes" \ + -Wl,-rpath,/usr/lib/virtualbox/ \ + /usr/lib/virtualbox/VBoxDD.so \ + /usr/lib/virtualbox/VBoxDDU.so \ + -Wall $CFLAGS +} + +package() { + install -m 755 -d "${pkgdir}/usr/bin" + install -m 755 -t "${pkgdir}/usr/bin" \ + "debian/${pkgname}/${pkgname}" "vdautomount" +} diff --git a/src/vdfuse/add-typedef-to-PARTITIONING_TYPE_vd.h.patch b/src/vdfuse/add-typedef-to-PARTITIONING_TYPE_vd.h.patch new file mode 100644 index 0000000..3104bae --- /dev/null +++ b/src/vdfuse/add-typedef-to-PARTITIONING_TYPE_vd.h.patch @@ -0,0 +1,16 @@ +--- src/virtualbox-includes-20130709/VBox/vd.h 2013-07-09 13:18:10.000000000 +0200 ++++ src/includes/VBox/vd.h 2013-07-09 13:29:00.628312242 +0200 +@@ -154,11 +154,11 @@ + * Auxiliary data structure for difference between GPT and MBR + * disks. + */ +-enum PARTITIONING_TYPE ++typedef enum PARTITIONING_TYPE + { + MBR, + GPT +-}; ++} PARTITIONING_TYPE; + + /** + * Auxiliary data structure for creating raw disks. diff --git a/src/vdfuse/init-VDINTERFACEERROR_vdfuse.c.patch b/src/vdfuse/init-VDINTERFACEERROR_vdfuse.c.patch new file mode 100644 index 0000000..f1456e6 --- /dev/null +++ b/src/vdfuse/init-VDINTERFACEERROR_vdfuse.c.patch @@ -0,0 +1,20 @@ +--- src/debian/vdfuse/vdfuse.c.orig 2013-03-31 20:28:32.000000000 +0200 ++++ src/debian/vdfuse/vdfuse.c 2013-07-09 13:31:47.824978337 +0200 +@@ -126,8 +126,6 @@ + PVDINTERFACE pVDifs = NULL; + VDINTERFACE vdError; + VDINTERFACEERROR vdErrorCallbacks = { +- .cbSize = sizeof(VDINTERFACEERROR), +- .enmInterface = VDINTERFACETYPE_ERROR, + .pfnError = vdErrorCallback }; + + // Partition table information +@@ -270,7 +268,7 @@ + // *** Open the VDI, parse the MBR + EBRs and connect to the fuse service *** + // + if (RT_FAILURE(VDInterfaceAdd(&vdError, "VD Error", VDINTERFACETYPE_ERROR, +- &vdErrorCallbacks, NULL, &pVDifs))) ++ &vdErrorCallbacks, sizeof(vdErrorCallbacks), &pVDifs))) + usageAndExit("invalid initialisation of VD interface"); + if (RT_FAILURE(VDCreate(&vdError, VDTYPE_HDD, &hdDisk))) + usageAndExit("invalid initialisation of VD interface"); diff --git a/src/vdfuse/vdfuse.install b/src/vdfuse/vdfuse.install new file mode 100644 index 0000000..114befc --- /dev/null +++ b/src/vdfuse/vdfuse.install @@ -0,0 +1,7 @@ +post_install() { + echo "+++ Uncomment \"user_allow_other\" in /etc/fuse.conf" +} + +post_upgrade() { + post_install $1 +}