aboutsummaryrefslogtreecommitdiffstats
path: root/community/open-vm-tools
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2018-11-23 14:12:07 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2018-11-23 14:41:42 +0000
commita28895f56f2ab9233f7ad1b345e07c6249bef1f3 (patch)
tree84d5692bfd48a1c91da1bb1113078093be582b3f /community/open-vm-tools
parent00fc18aa0c07998215c7fc55185c63ae496592eb (diff)
community/open-vm-tools: move from main
Diffstat (limited to 'community/open-vm-tools')
-rw-r--r--community/open-vm-tools/0001-lib-misc-Recognize-Alpine-Linux.patch47
-rw-r--r--community/open-vm-tools/0002-open-vm-tools-Add-disable-werror-configure-option.patch39
-rw-r--r--community/open-vm-tools/0003-Do-not-assume-that-linux-and-gnu-libc-are-the-same-t.patch32
-rw-r--r--community/open-vm-tools/0004-Use-configure-test-for-struct-timespec.patch48
-rw-r--r--community/open-vm-tools/0005-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch61
-rw-r--r--community/open-vm-tools/0006-Use-configure-to-test-for-feature-instead-of-platfor.patch150
-rw-r--r--community/open-vm-tools/0007-Use-configure-test-for-sys-stat.h-include.patch28
-rw-r--r--community/open-vm-tools/0008-Rename-poll.h-to-vm_poll.h.patch105
-rw-r--r--community/open-vm-tools/0009-gnu-ucontext.patch68
-rw-r--r--community/open-vm-tools/0010-use-posix-strerror_r-unless-gnu.patch33
-rw-r--r--community/open-vm-tools/0011-use-off64_t-instead-of-loff_t.patch110
-rw-r--r--community/open-vm-tools/0012-remove-references-to-missing-common-agent-etc-config.patch38
-rw-r--r--community/open-vm-tools/APKBUILD145
-rw-r--r--community/open-vm-tools/open-vm-tools.confd7
-rw-r--r--community/open-vm-tools/open-vm-tools.initd67
-rw-r--r--community/open-vm-tools/open-vm-tools.logrotate5
-rw-r--r--community/open-vm-tools/open-vm-tools.pre-install5
-rw-r--r--community/open-vm-tools/strerror_r.patch13
-rw-r--r--community/open-vm-tools/systemLinux.c-fixup-for-Alpine.patch36
19 files changed, 1037 insertions, 0 deletions
diff --git a/community/open-vm-tools/0001-lib-misc-Recognize-Alpine-Linux.patch b/community/open-vm-tools/0001-lib-misc-Recognize-Alpine-Linux.patch
new file mode 100644
index 00000000000..39bd1587e47
--- /dev/null
+++ b/community/open-vm-tools/0001-lib-misc-Recognize-Alpine-Linux.patch
@@ -0,0 +1,47 @@
+From cb8c4078a9e10c2cbb142d6b9a179cc83015806d Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Thu, 5 Nov 2015 13:09:34 +0000
+Subject: [PATCH 01/12] lib/misc: Recognize Alpine Linux
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ open-vm-tools/lib/include/guest_os.h | 1 +
+ open-vm-tools/lib/misc/hostinfoPosix.c | 3 +++
+ 2 files changed, 4 insertions(+)
+
+diff --git a/open-vm-tools/lib/include/guest_os.h b/open-vm-tools/lib/include/guest_os.h
+index 230acd2c..55a84c4a 100644
+--- a/open-vm-tools/lib/include/guest_os.h
++++ b/open-vm-tools/lib/include/guest_os.h
+@@ -223,6 +223,7 @@ Bool Gos_InSetArray(uint32 gos, const uint32 *set);
+
+ /* Linux */
+ #define STR_OS_AMAZON_LINUX "amazonlinux"
++#define STR_OS_ALPINE "Alpine"
+ #define STR_OS_ANNVIX "Annvix"
+ #define STR_OS_ARCH "Arch"
+ #define STR_OS_ARKLINUX "Arklinux"
+diff --git a/open-vm-tools/lib/misc/hostinfoPosix.c b/open-vm-tools/lib/misc/hostinfoPosix.c
+index b6ebaa7e..1e8f50f2 100644
+--- a/open-vm-tools/lib/misc/hostinfoPosix.c
++++ b/open-vm-tools/lib/misc/hostinfoPosix.c
+@@ -179,6 +179,7 @@ typedef struct {
+
+ /* KEEP SORTED! (sort -d) */
+ static const DistroInfo distroArray[] = {
++ {"Alpine", "/etc/alpine-release"},
+ {"Annvix", "/etc/annvix-release"},
+ {"Arch", "/etc/arch-release"},
+ {"Arklinux", "/etc/arklinux-release"},
+@@ -762,6 +763,8 @@ HostinfoGetOSShortName(char *distro, // IN: full distro name
+
+ Str_Sprintf(distroShort, distroShortSize, "%s%d", STR_OS_AMAZON_LINUX,
+ amazonMajor);
++ } else if (strstr(distroLower, "alpine")) {
++ Str_Strcpy(distroShort, STR_OS_ALPINE, distroShortSize);
+ } else if (strstr(distroLower, "annvix")) {
+ Str_Strcpy(distroShort, STR_OS_ANNVIX, distroShortSize);
+ } else if (strstr(distroLower, "arch")) {
+--
+2.19.1
+
diff --git a/community/open-vm-tools/0002-open-vm-tools-Add-disable-werror-configure-option.patch b/community/open-vm-tools/0002-open-vm-tools-Add-disable-werror-configure-option.patch
new file mode 100644
index 00000000000..c2c9d0b6242
--- /dev/null
+++ b/community/open-vm-tools/0002-open-vm-tools-Add-disable-werror-configure-option.patch
@@ -0,0 +1,39 @@
+From a62e4de6ff96ba55e4091a9bccbe909edc631785 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Thu, 5 Nov 2015 13:19:20 +0000
+Subject: [PATCH 02/12] open-vm-tools: Add --disable-werror configure option
+
+Packagers will normally not want the -Werror compile option as it may
+break compilation depending on the platform specific warnings.
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ open-vm-tools/configure.ac | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/open-vm-tools/configure.ac b/open-vm-tools/configure.ac
+index 325a39f5..367e4ff8 100644
+--- a/open-vm-tools/configure.ac
++++ b/open-vm-tools/configure.ac
+@@ -1218,7 +1218,17 @@ AC_C_VOLATILE
+
+ ### General flags / actions
+ CFLAGS="$CFLAGS -Wall"
+-CFLAGS="$CFLAGS -Werror"
++AC_ARG_ENABLE(
++ werror,
++ AS_HELP_STRING(
++ [--disable-werror],
++ [disable compilation with -Werror]),
++ [enable_werror="$enableval"],
++ [enable_werror="yes"])
++
++if test "$enable_werror" = "yes"; then
++ CFLAGS="$CFLAGS -Werror"
++fi
+
+ # Suppress warnings from clang when taking the address of packed struct
+ # member fields when compiling hgfsServer.c
+--
+2.19.1
+
diff --git a/community/open-vm-tools/0003-Do-not-assume-that-linux-and-gnu-libc-are-the-same-t.patch b/community/open-vm-tools/0003-Do-not-assume-that-linux-and-gnu-libc-are-the-same-t.patch
new file mode 100644
index 00000000000..040e7199771
--- /dev/null
+++ b/community/open-vm-tools/0003-Do-not-assume-that-linux-and-gnu-libc-are-the-same-t.patch
@@ -0,0 +1,32 @@
+From 45ddb2ef1fe2e075831aae3ac37d6bde00260826 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Tue, 17 Nov 2015 10:39:01 +0000
+Subject: [PATCH 03/12] Do not assume that linux and gnu libc are the same
+ thing
+
+Use __GLIBC__ when testing for GNU libc specific things instead of
+assuming that __linux__ is GNU libc.
+
+This is needed for building with musl libc.
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ open-vm-tools/lib/file/fileIOPosix.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/open-vm-tools/lib/file/fileIOPosix.c b/open-vm-tools/lib/file/fileIOPosix.c
+index 23108279..603ea28d 100644
+--- a/open-vm-tools/lib/file/fileIOPosix.c
++++ b/open-vm-tools/lib/file/fileIOPosix.c
+@@ -198,7 +198,7 @@ static AlignedPool alignedPool;
+ * are not available in any header file.
+ */
+
+-#if defined(__linux__) && !defined(__ANDROID__)
++#if defined(__linux__) && defined(__GLIBC__)
+ #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
+ /*
+ * We want preadv/pwritev. But due to FOB=64, the symbols are -64.
+--
+2.19.1
+
diff --git a/community/open-vm-tools/0004-Use-configure-test-for-struct-timespec.patch b/community/open-vm-tools/0004-Use-configure-test-for-struct-timespec.patch
new file mode 100644
index 00000000000..2a884608733
--- /dev/null
+++ b/community/open-vm-tools/0004-Use-configure-test-for-struct-timespec.patch
@@ -0,0 +1,48 @@
+From a7a78d7963d9dacb79fee1433fc092d67ea0748e Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Wed, 18 Nov 2015 09:03:00 +0000
+Subject: [PATCH 04/12] Use configure test for struct timespec
+
+Use the configure script to test for struct time spec instead of trying
+to keep track of what platforms has it.
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ open-vm-tools/configure.ac | 1 +
+ open-vm-tools/lib/include/hgfsUtil.h | 8 +-------
+ 2 files changed, 2 insertions(+), 7 deletions(-)
+
+diff --git a/open-vm-tools/configure.ac b/open-vm-tools/configure.ac
+index 367e4ff8..5dc0be2b 100644
+--- a/open-vm-tools/configure.ac
++++ b/open-vm-tools/configure.ac
+@@ -1208,6 +1208,7 @@ AC_TYPE_OFF_T
+ AC_TYPE_PID_T
+ AC_TYPE_SIZE_T
+ AC_CHECK_MEMBERS([struct stat.st_rdev])
++AC_CHECK_MEMBERS([struct timespec.tv_sec],[],[],[[#include <time.h>]])
+ AC_HEADER_TIME
+ AC_STRUCT_TM
+ AC_C_VOLATILE
+diff --git a/open-vm-tools/lib/include/hgfsUtil.h b/open-vm-tools/lib/include/hgfsUtil.h
+index 609f4c00..a3a022d4 100644
+--- a/open-vm-tools/lib/include/hgfsUtil.h
++++ b/open-vm-tools/lib/include/hgfsUtil.h
+@@ -53,13 +53,7 @@
+ # include <time.h>
+ # endif
+ # include "vm_basic_types.h"
+-# if !defined _STRUCT_TIMESPEC && \
+- !defined _TIMESPEC_DECLARED && \
+- !defined __timespec_defined && \
+- !defined sun && \
+- !defined __FreeBSD__ && \
+- !__APPLE__ && \
+- !defined _WIN32
++# if !defined HAVE_STRUCT_TIMESPEC_TV_SEC
+ struct timespec {
+ time_t tv_sec;
+ long tv_nsec;
+--
+2.19.1
+
diff --git a/community/open-vm-tools/0005-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch b/community/open-vm-tools/0005-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch
new file mode 100644
index 00000000000..1d1be77b802
--- /dev/null
+++ b/community/open-vm-tools/0005-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch
@@ -0,0 +1,61 @@
+From 2a53206a4d3a8a32acdd4ff2230fe6395f5e097c Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Wed, 18 Nov 2015 09:10:14 +0000
+Subject: [PATCH 05/12] Fix definition of ALLPERMS and ACCESSPERMS
+
+The ALLPERMS and ACCESSPERMS defines are not specified in POSIX so
+assume it is not there instead of testing for specific implementations.
+
+This is needed for musl libc.
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ open-vm-tools/lib/hgfsServer/hgfsServerLinux.c | 8 +++++---
+ open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c | 3 +--
+ 2 files changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c b/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
+index f2b7ce67..0e6351a9 100644
+--- a/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
++++ b/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
+@@ -105,11 +105,13 @@ typedef struct DirectoryEntry {
+ #endif
+
+ /*
+- * ALLPERMS (mode 07777) and ACCESSPERMS (mode 0777) are not defined in the
+- * Solaris version of <sys/stat.h>.
++ * ALLPERMS (mode 07777) and ACCESSPERMS (mode 0777) are not specified in
++ * POSIX.
+ */
+-#ifdef sun
++#ifndef ACCESSPERMS
+ # define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO)
++#endif
++#ifndef ALLPERMS
+ # define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)
+ #endif
+
+diff --git a/open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c b/open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c
+index 89133652..7e9c3a91 100644
+--- a/open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c
++++ b/open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c
+@@ -52,7 +52,7 @@
+
+ #define DND_ROOTDIR_PERMS (S_IRWXU | S_IRWXG | S_IRWXO)
+ #define DND_STAGINGDIR_PERMS (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)
+-#ifdef sun
++#ifndef ACCESSPERMS
+ #define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO)
+ #endif
+ #ifdef __ANDROID__
+@@ -61,7 +61,6 @@
+ */
+ #define NO_SETMNTENT
+ #define NO_ENDMNTENT
+-#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO)
+ #endif
+
+
+--
+2.19.1
+
diff --git a/community/open-vm-tools/0006-Use-configure-to-test-for-feature-instead-of-platfor.patch b/community/open-vm-tools/0006-Use-configure-to-test-for-feature-instead-of-platfor.patch
new file mode 100644
index 00000000000..0753e68fa67
--- /dev/null
+++ b/community/open-vm-tools/0006-Use-configure-to-test-for-feature-instead-of-platfor.patch
@@ -0,0 +1,150 @@
+From 34a441d0a5de1d12e0710a66874ab3fe5112ec18 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Wed, 18 Nov 2015 10:05:07 +0000
+Subject: [PATCH 06/12] Use configure to test for feature instead of platform
+
+Test for various functions instead of trying to keep track of what
+platform and what version of the given platform has support for what.
+
+This should make it easier to port to currently unknown platforms and
+will solve the issue if a platform add support for a missing feature in
+the future.
+
+The features we test for are:
+- getifaddrs
+- getauxval
+- issetugid
+- __secure_getenv
+
+This is needed for musl libc.
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ open-vm-tools/configure.ac | 4 ++++
+ open-vm-tools/lib/misc/idLinux.c | 30 +++++++++++-------------
+ open-vm-tools/lib/nicInfo/nicInfoPosix.c | 11 +++++----
+ 3 files changed, 24 insertions(+), 21 deletions(-)
+
+diff --git a/open-vm-tools/configure.ac b/open-vm-tools/configure.ac
+index 5dc0be2b..3b439e8d 100644
+--- a/open-vm-tools/configure.ac
++++ b/open-vm-tools/configure.ac
+@@ -897,6 +897,7 @@ AC_CHECK_FUNCS(
+
+ AC_CHECK_FUNCS([ecvt])
+ AC_CHECK_FUNCS([fcvt])
++AC_CHECK_FUNCS([getifaddrs getauxval issetugid __secure_getenv])
+
+ AC_CHECK_FUNC([mkdtemp], [have_mkdtemp=yes])
+
+@@ -1145,10 +1146,13 @@ fi
+ ###
+
+ AC_CHECK_HEADERS([crypt.h])
++AC_CHECK_HEADERS([ifaddrs.h])
+ AC_CHECK_HEADERS([inttypes.h])
+ AC_CHECK_HEADERS([stdint.h])
+ AC_CHECK_HEADERS([stdlib.h])
+ AC_CHECK_HEADERS([wchar.h])
++AC_CHECK_HEADERS([net/if.h])
++AC_CHECK_HEADERS([sys/auxv.h])
+ AC_CHECK_HEADERS([sys/inttypes.h])
+ AC_CHECK_HEADERS([sys/io.h])
+ AC_CHECK_HEADERS([sys/param.h]) # Required to make the sys/user.h check work correctly on FreeBSD
+diff --git a/open-vm-tools/lib/misc/idLinux.c b/open-vm-tools/lib/misc/idLinux.c
+index b950cf84..1dcfb508 100644
+--- a/open-vm-tools/lib/misc/idLinux.c
++++ b/open-vm-tools/lib/misc/idLinux.c
+@@ -27,12 +27,9 @@
+ #include <sys/syscall.h>
+ #include <string.h>
+ #include <unistd.h>
+-#ifdef __linux__
+-#if defined(__GLIBC__) && \
+- (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16))
++#ifdef HAVE_SYS_AUXV_H
+ #include <sys/auxv.h>
+ #endif
+-#endif
+ #ifdef __APPLE__
+ #include <sys/socket.h>
+ #include <TargetConditionals.h>
+@@ -997,31 +994,32 @@ Id_EndSuperUser(uid_t uid) // IN:
+ static Bool
+ IdIsSetUGid(void)
+ {
+-#if defined(__ANDROID__)
+- /* Android does not have a secure_getenv, so be conservative. */
+- return TRUE;
+-#else
+ /*
+ * We use __secure_getenv, which returns NULL if the binary is
+- * setuid or setgid. Alternatives include,
++ * setuid or setgid, when issetugid or getauxval(AT_SECURE) is not
++ * available. Alternatives include,
+ *
+- * a) getauxval(AT_SECURE); not available until glibc 2.16.
+- * b) __libc_enable_secure; may not be exported.
++ * a) issetugid(); not (yet?) available in glibc.
++ * b) getauxval(AT_SECURE); not available until glibc 2.16.
++ * c) __libc_enable_secure; may not be exported.
+ *
+- * Use (a) when we are based on glibc 2.16, or newer.
++ * Use (b) when we are based on glibc 2.16, or newer.
+ */
+
+-#if defined(__GLIBC__) && \
+- (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16))
++#if HAVE_ISSETUGID
++ return issetugid();
++#elif HAVE_GETAUXVAL
+ return getauxval(AT_SECURE) != 0;
+-#else
++#elif HAVE___SECURE_GETENV
+ static const char envName[] = "VMW_SETUGID_TEST";
+
+ if (setenv(envName, "1", TRUE) == -1) {
+ return TRUE; /* Conservative */
+ }
+ return __secure_getenv(envName) == NULL;
+-#endif
++#else
++ /* Android does not have a secure_getenv, so be conservative. */
++ return TRUE;
+ #endif
+ }
+ #endif
+diff --git a/open-vm-tools/lib/nicInfo/nicInfoPosix.c b/open-vm-tools/lib/nicInfo/nicInfoPosix.c
+index a22981d5..ddc37e09 100644
+--- a/open-vm-tools/lib/nicInfo/nicInfoPosix.c
++++ b/open-vm-tools/lib/nicInfo/nicInfoPosix.c
+@@ -34,9 +34,13 @@
+ #include <sys/socket.h>
+ #include <sys/stat.h>
+ #include <errno.h>
+-#if defined(__FreeBSD__) || defined(__APPLE__)
++#if HAVE_SYS_SYSCTL_H
+ # include <sys/sysctl.h>
++#endif
++#if HAVE_IFADDRS_H
+ # include <ifaddrs.h>
++#endif
++#if HAVE_NET_IF_H
+ # include <net/if.h>
+ #endif
+ #ifndef NO_DNET
+@@ -456,10 +460,7 @@ GuestInfoGetNicInfo(unsigned int maxIPv4Routes,
+ *
+ ******************************************************************************
+ */
+-#if defined(__FreeBSD__) || \
+- defined(__APPLE__) || \
+- defined(USERWORLD) || \
+- (defined(__linux__) && defined(NO_DNET))
++#if defined(NO_DNET) && defined(HAVE_GETIFADDRS)
+
+ char *
+ GuestInfoGetPrimaryIP(void)
+--
+2.19.1
+
diff --git a/community/open-vm-tools/0007-Use-configure-test-for-sys-stat.h-include.patch b/community/open-vm-tools/0007-Use-configure-test-for-sys-stat.h-include.patch
new file mode 100644
index 00000000000..273cb510c4b
--- /dev/null
+++ b/community/open-vm-tools/0007-Use-configure-test-for-sys-stat.h-include.patch
@@ -0,0 +1,28 @@
+From 114dede05e89a810021edc0ef75c0abb3310ad8f Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Wed, 18 Nov 2015 10:41:01 +0000
+Subject: [PATCH 07/12] Use configure test for sys/stat.h include
+
+This is needed for musl libc.
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ open-vm-tools/services/plugins/vix/vixTools.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/open-vm-tools/services/plugins/vix/vixTools.c b/open-vm-tools/services/plugins/vix/vixTools.c
+index e5273786..cabc4137 100644
+--- a/open-vm-tools/services/plugins/vix/vixTools.c
++++ b/open-vm-tools/services/plugins/vix/vixTools.c
+@@ -66,7 +66,7 @@
+ #include <unistd.h>
+ #endif
+
+-#if defined(sun) || defined(__FreeBSD__) || defined(__APPLE__)
++#ifdef HAVE_SYS_STAT_H
+ #include <sys/stat.h>
+ #endif
+
+--
+2.19.1
+
diff --git a/community/open-vm-tools/0008-Rename-poll.h-to-vm_poll.h.patch b/community/open-vm-tools/0008-Rename-poll.h-to-vm_poll.h.patch
new file mode 100644
index 00000000000..d3d00a459bc
--- /dev/null
+++ b/community/open-vm-tools/0008-Rename-poll.h-to-vm_poll.h.patch
@@ -0,0 +1,105 @@
+From 4f3a24fe45b765a9a0d8c9b222a1ed54d78e5ec6 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Tue, 17 Nov 2015 10:57:31 +0000
+Subject: [PATCH 08/12] Rename poll.h to vm_poll.h
+
+musl libc's system headers pulls in open-vm-tools' poll.h. To avoid this
+we rename poll.h to vm_poll.h.
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ open-vm-tools/lib/asyncsocket/asyncsocket.c | 2 +-
+ open-vm-tools/lib/hgfsServer/hgfsServer.c | 2 +-
+ open-vm-tools/lib/include/asyncsocket.h | 2 +-
+ open-vm-tools/lib/include/pollImpl.h | 2 +-
+ open-vm-tools/lib/include/{poll.h => vm_poll.h} | 0
+ open-vm-tools/lib/rpcIn/rpcin.c | 2 +-
+ .../services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c | 2 +-
+ 7 files changed, 6 insertions(+), 6 deletions(-)
+ rename open-vm-tools/lib/include/{poll.h => vm_poll.h} (100%)
+
+diff --git a/open-vm-tools/lib/asyncsocket/asyncsocket.c b/open-vm-tools/lib/asyncsocket/asyncsocket.c
+index 65b07109..54662189 100644
+--- a/open-vm-tools/lib/asyncsocket/asyncsocket.c
++++ b/open-vm-tools/lib/asyncsocket/asyncsocket.c
+@@ -86,7 +86,7 @@
+ #include "random.h"
+ #include "asyncsocket.h"
+ #include "asyncSocketBase.h"
+-#include "poll.h"
++#include "vm_poll.h"
+ #include "log.h"
+ #include "err.h"
+ #include "hostinfo.h"
+diff --git a/open-vm-tools/lib/hgfsServer/hgfsServer.c b/open-vm-tools/lib/hgfsServer/hgfsServer.c
+index 7ea3b7f4..740c4fed 100644
+--- a/open-vm-tools/lib/hgfsServer/hgfsServer.c
++++ b/open-vm-tools/lib/hgfsServer/hgfsServer.c
+@@ -48,7 +48,7 @@
+ #include "hgfsServerOplock.h"
+ #include "hgfsDirNotify.h"
+ #include "userlock.h"
+-#include "poll.h"
++#include "vm_poll.h"
+ #include "mutexRankLib.h"
+ #include "vm_basic_asm.h"
+ #include "unicodeOperations.h"
+diff --git a/open-vm-tools/lib/include/asyncsocket.h b/open-vm-tools/lib/include/asyncsocket.h
+index ec9b45aa..dc91e738 100644
+--- a/open-vm-tools/lib/include/asyncsocket.h
++++ b/open-vm-tools/lib/include/asyncsocket.h
+@@ -164,7 +164,7 @@ typedef struct AsyncSocket AsyncSocket;
+ * Or the client can specify its favorite poll class and locking behavior.
+ * Use of IVmdbPoll is only supported for regular sockets and for Attach.
+ */
+-#include "poll.h"
++#include "vm_poll.h"
+ struct IVmdbPoll;
+ typedef struct AsyncSocketPollParams {
+ int flags; /* Default 0, only POLL_FLAG_NO_BULL is valid */
+diff --git a/open-vm-tools/lib/include/pollImpl.h b/open-vm-tools/lib/include/pollImpl.h
+index 46442e55..8bc66997 100644
+--- a/open-vm-tools/lib/include/pollImpl.h
++++ b/open-vm-tools/lib/include/pollImpl.h
+@@ -44,7 +44,7 @@
+ #define INCLUDE_ALLOW_USERLEVEL
+ #include "includeCheck.h"
+
+-#include "poll.h"
++#include "vm_poll.h"
+ #include "vm_basic_asm.h"
+
+ #if defined(__cplusplus)
+diff --git a/open-vm-tools/lib/include/poll.h b/open-vm-tools/lib/include/vm_poll.h
+similarity index 100%
+rename from open-vm-tools/lib/include/poll.h
+rename to open-vm-tools/lib/include/vm_poll.h
+diff --git a/open-vm-tools/lib/rpcIn/rpcin.c b/open-vm-tools/lib/rpcIn/rpcin.c
+index 8eea7d86..c48f5be2 100644
+--- a/open-vm-tools/lib/rpcIn/rpcin.c
++++ b/open-vm-tools/lib/rpcIn/rpcin.c
+@@ -57,7 +57,7 @@
+
+ #if defined(VMTOOLS_USE_VSOCKET)
+ # include <glib.h>
+-# include "poll.h"
++# include "vm_poll.h"
+ # include "asyncsocket.h"
+ # include "vmci_defs.h"
+ #include "dataMap.h"
+diff --git a/open-vm-tools/services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c b/open-vm-tools/services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c
+index 03700937..f0b49ad7 100644
+--- a/open-vm-tools/services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c
++++ b/open-vm-tools/services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c
+@@ -48,7 +48,7 @@
+ #include "rpcout.h"
+ #include "rabbitmqProxyConst.h"
+ #include "vm_basic_types.h"
+-#include "poll.h"
++#include "vm_poll.h"
+ #ifdef OPEN_VM_TOOLS
+ #include "vmci_sockets.h"
+ #include "sslDirect.h"
+--
+2.19.1
+
diff --git a/community/open-vm-tools/0009-gnu-ucontext.patch b/community/open-vm-tools/0009-gnu-ucontext.patch
new file mode 100644
index 00000000000..77c4f8e158d
--- /dev/null
+++ b/community/open-vm-tools/0009-gnu-ucontext.patch
@@ -0,0 +1,68 @@
+From 33835208753a350a71a130837ad9e2289fd4cf2c Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Wed, 18 Nov 2015 10:27:51 +0000
+Subject: [PATCH 09/12] gnu-ucontext
+
+---
+ open-vm-tools/lib/include/sigPosixRegs.h | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/open-vm-tools/lib/include/sigPosixRegs.h b/open-vm-tools/lib/include/sigPosixRegs.h
+index ee36da59..88d327a7 100644
+--- a/open-vm-tools/lib/include/sigPosixRegs.h
++++ b/open-vm-tools/lib/include/sigPosixRegs.h
+@@ -36,7 +36,7 @@
+ extern "C" {
+ #endif
+
+-#if __linux__ // We need the REG_foo offsets in the gregset_t;
++#if defined(__GLIBC__) // We need the REG_foo offsets in the gregset_t;
+ # define _GNU_SOURCE // _GNU_SOURCE maps to __USE_GNU
+
+ /* And, the REG_foo definitions conflict with our own in x86.h */
+@@ -74,7 +74,7 @@ extern "C" {
+ #include <signal.h>
+ #include <sys/ucontext.h>
+
+-#if __linux__ && !defined __ANDROID__
++#if defined(__GLIBC__)
+ # if defined(__x86_64__)
+ # undef REG_RAX
+ # undef REG_RBX
+@@ -200,7 +200,7 @@ extern "C" {
+ #define SC_ESP(uc) ((unsigned long) (uc)->uc_mcontext.mc_esp)
+ #define SC_EIP(uc) ((unsigned long) (uc)->uc_mcontext.mc_eip)
+ #endif
+-#elif defined (sun)
++#elif !defined (__GLIBC__)
+ #ifdef __x86_64__
+ #define SC_EAX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_RAX])
+ #define SC_EBX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_RBX])
+@@ -220,15 +220,15 @@ extern "C" {
+ #define SC_R14(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_R14])
+ #define SC_R15(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_R15])
+ #else
+-#define SC_EAX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[EAX])
+-#define SC_EBX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[EBX])
+-#define SC_ECX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[ECX])
+-#define SC_EDX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[EDX])
+-#define SC_EDI(uc) ((unsigned long) (uc)->uc_mcontext.gregs[EDI])
+-#define SC_ESI(uc) ((unsigned long) (uc)->uc_mcontext.gregs[ESI])
+-#define SC_EBP(uc) ((unsigned long) (uc)->uc_mcontext.gregs[EBP])
+-#define SC_ESP(uc) ((unsigned long) (uc)->uc_mcontext.gregs[ESP])
+-#define SC_EIP(uc) ((unsigned long) (uc)->uc_mcontext.gregs[EIP])
++#define SC_EAX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_EAX])
++#define SC_EBX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_EBX])
++#define SC_ECX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_ECX])
++#define SC_EDX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_EDX])
++#define SC_EDI(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_EDI])
++#define SC_ESI(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_ESI])
++#define SC_EBP(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_EBP])
++#define SC_ESP(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_ESP])
++#define SC_EIP(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_EIP])
+ #endif
+ #elif defined(ANDROID_X86)
+ #define SC_EAX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_EAX])
+--
+2.19.1
+
diff --git a/community/open-vm-tools/0010-use-posix-strerror_r-unless-gnu.patch b/community/open-vm-tools/0010-use-posix-strerror_r-unless-gnu.patch
new file mode 100644
index 00000000000..62a666ee24d
--- /dev/null
+++ b/community/open-vm-tools/0010-use-posix-strerror_r-unless-gnu.patch
@@ -0,0 +1,33 @@
+From 5dd2dbabd4c0535c44321c6c2303acff093c18c7 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Mon, 2 Jan 2017 14:39:27 +0000
+Subject: [PATCH 10/12] use posix strerror_r unless gnu
+
+---
+ open-vm-tools/lib/err/errPosix.c | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/open-vm-tools/lib/err/errPosix.c b/open-vm-tools/lib/err/errPosix.c
+index c81b4c13..a34e8190 100644
+--- a/open-vm-tools/lib/err/errPosix.c
++++ b/open-vm-tools/lib/err/errPosix.c
+@@ -63,11 +63,13 @@ ErrErrno2String(Err_Number errorNumber, // IN
+ {
+ char *p;
+
+-#if defined(__linux__) && !defined(__ANDROID__)
++#if defined(__GLIBC__)
+ p = strerror_r(errorNumber, buf, bufSize);
+ #else
+- p = strerror(errorNumber);
+-#endif
++ if (strerror_r(errorNumber, buf, bufSize) != 0)
++ snprintf(buf, bufSize, "unknown error %i", errorNumber);
++ p = buf;
++#endif /* defined __GLIBC__ */
+ ASSERT(p != NULL);
+ return p;
+ }
+--
+2.19.1
+
diff --git a/community/open-vm-tools/0011-use-off64_t-instead-of-loff_t.patch b/community/open-vm-tools/0011-use-off64_t-instead-of-loff_t.patch
new file mode 100644
index 00000000000..fd2653e8003
--- /dev/null
+++ b/community/open-vm-tools/0011-use-off64_t-instead-of-loff_t.patch
@@ -0,0 +1,110 @@
+From 099ef837922ee97c64651bc49c26022b7a97f816 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Mon, 2 Jan 2017 15:25:32 +0000
+Subject: [PATCH 11/12] use off64_t instead of loff_t
+
+---
+ open-vm-tools/vmhgfs-fuse/file.c | 12 ++++++------
+ open-vm-tools/vmhgfs-fuse/fsutil.c | 2 +-
+ open-vm-tools/vmhgfs-fuse/fsutil.h | 8 ++------
+ 3 files changed, 9 insertions(+), 13 deletions(-)
+
+diff --git a/open-vm-tools/vmhgfs-fuse/file.c b/open-vm-tools/vmhgfs-fuse/file.c
+index 389ebba8..d22b66df 100644
+--- a/open-vm-tools/vmhgfs-fuse/file.c
++++ b/open-vm-tools/vmhgfs-fuse/file.c
+@@ -535,7 +535,7 @@ static int
+ HgfsDoRead(HgfsHandle handle, // IN: Handle for this file
+ char *buf, // OUT: Buffer to copy data into
+ size_t count, // IN: Number of bytes to read
+- loff_t offset) // IN: Offset at which to read
++ off64_t offset) // IN: Offset at which to read
+ {
+ HgfsReq *req;
+ HgfsOp opUsed;
+@@ -668,11 +668,11 @@ ssize_t
+ HgfsRead(struct fuse_file_info *fi, // IN: File info struct
+ char *buf, // OUT: User buffer to copy data into
+ size_t count, // IN: Number of bytes to read
+- loff_t offset) // IN: Offset at which to read
++ off64_t offset) // IN: Offset at which to read
+ {
+ int result = 0;
+ char *buffer = buf;
+- loff_t curOffset = offset;
++ off64_t curOffset = offset;
+ size_t nextCount, remainingCount = count;
+
+ ASSERT(NULL != fi);
+@@ -729,7 +729,7 @@ static int
+ HgfsDoWrite(HgfsHandle handle, // IN: Handle for the file
+ const char *buf, // IN: Buffer containing data
+ size_t count, // IN: Number of bytes to write
+- loff_t offset) // IN: Offset to begin writing at
++ off64_t offset) // IN: Offset to begin writing at
+ {
+ HgfsReq *req;
+ int result = 0;
+@@ -853,11 +853,11 @@ ssize_t
+ HgfsWrite(struct fuse_file_info *fi, // IN: File info structure
+ const char *buf, // OUT: User buffer to copy data into
+ size_t count, // IN: Number of bytes to read
+- loff_t offset) // IN: Offset at which to read
++ off64_t offset) // IN: Offset at which to read
+ {
+ int result;
+ const char *buffer = buf;
+- loff_t curOffset = offset;
++ off64_t curOffset = offset;
+ size_t nextCount, remainingCount = count;
+ ssize_t bytesWritten = 0;
+
+diff --git a/open-vm-tools/vmhgfs-fuse/fsutil.c b/open-vm-tools/vmhgfs-fuse/fsutil.c
+index 042c223c..c3d581d3 100644
+--- a/open-vm-tools/vmhgfs-fuse/fsutil.c
++++ b/open-vm-tools/vmhgfs-fuse/fsutil.c
+@@ -680,7 +680,7 @@ HgfsStatusConvertToLinux(HgfsStatus hgfsStatus) // IN: Status code to convert
+ unsigned long
+ HgfsCalcBlockSize(uint64 tsize)
+ {
+- loff_t used = (tsize + 511) >> 9;
++ off64_t used = (tsize + 511) >> 9;
+ return (used > ULONG_MAX) ? ULONG_MAX : used;
+ }
+
+diff --git a/open-vm-tools/vmhgfs-fuse/fsutil.h b/open-vm-tools/vmhgfs-fuse/fsutil.h
+index 34b6d489..a75cff82 100644
+--- a/open-vm-tools/vmhgfs-fuse/fsutil.h
++++ b/open-vm-tools/vmhgfs-fuse/fsutil.h
+@@ -32,10 +32,6 @@
+ #include "hgfsProto.h"
+ #include <fuse.h>
+
+-#if defined(__FreeBSD__) || defined(__SOLARIS__) || defined(__APPLE__)
+-typedef long long loff_t;
+-#endif
+-
+ /*
+ * Struct used to pass around attributes.
+ * These aren't just the attributes seen in HgfsAttr[V2]; we add a filename
+@@ -73,7 +69,7 @@ ssize_t
+ HgfsWrite(struct fuse_file_info *fi,
+ const char *buf,
+ size_t count,
+- loff_t offset);
++ off64_t offset);
+
+ int
+ HgfsRename(const char* from, const char* to);
+@@ -93,7 +89,7 @@ ssize_t
+ HgfsRead(struct fuse_file_info *fi,
+ char *buf,
+ size_t count,
+- loff_t offset);
++ off64_t offset);
+
+ int
+ HgfsSetattr(const char* path,
+--
+2.19.1
+
diff --git a/community/open-vm-tools/0012-remove-references-to-missing-common-agent-etc-config.patch b/community/open-vm-tools/0012-remove-references-to-missing-common-agent-etc-config.patch
new file mode 100644
index 00000000000..add4f9757f8
--- /dev/null
+++ b/community/open-vm-tools/0012-remove-references-to-missing-common-agent-etc-config.patch
@@ -0,0 +1,38 @@
+From a2938f22fb76a0bbc33ca507f76b14989149abb2 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Mon, 2 Jan 2017 14:40:17 +0000
+Subject: [PATCH 12/12] remove references to missing common-agent/etc/config
+
+---
+ open-vm-tools/common-agent/etc/Makefile.am | 2 +-
+ open-vm-tools/configure.ac | 1 -
+ 2 files changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/open-vm-tools/common-agent/etc/Makefile.am b/open-vm-tools/common-agent/etc/Makefile.am
+index 25b386c4..b6dd1bdf 100644
+--- a/open-vm-tools/common-agent/etc/Makefile.am
++++ b/open-vm-tools/common-agent/etc/Makefile.am
+@@ -15,7 +15,7 @@
+ ### Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ ################################################################################
+
+-SUBDIRS = install config scripts
++SUBDIRS = install scripts
+
+ uninstall-hook:
+ rm -rf $(DESTDIR)/etc/vmware-caf
+diff --git a/open-vm-tools/configure.ac b/open-vm-tools/configure.ac
+index 3b439e8d..c2ae8ea3 100644
+--- a/open-vm-tools/configure.ac
++++ b/open-vm-tools/configure.ac
+@@ -1710,7 +1710,6 @@ AC_CONFIG_FILES([ \
+ common-agent/input/invokers/Makefile \
+ common-agent/input/providerReg/Makefile \
+ common-agent/etc/Makefile \
+- common-agent/etc/config/Makefile \
+ common-agent/etc/scripts/Makefile \
+ common-agent/etc/install/Makefile \
+ xferlogs/Makefile \
+--
+2.19.1
+
diff --git a/community/open-vm-tools/APKBUILD b/community/open-vm-tools/APKBUILD
new file mode 100644
index 00000000000..eb85534b4d3
--- /dev/null
+++ b/community/open-vm-tools/APKBUILD
@@ -0,0 +1,145 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=open-vm-tools
+pkgver=10.3.5
+_pkgsubver=${pkgver#*_p}
+_ver=${pkgver/_p/-}
+pkgrel=1
+pkgdesc="The Open Virtual Machine Tools are the open source implementation of VMware Tools."
+url="https://github.com/vmware/open-vm-tools/"
+arch="x86 x86_64"
+license="LGPL"
+subpackages="$pkgname-dbg $pkgname-gtk $pkgname-dev $pkgname-openrc $pkgname-doc"
+install="$pkgname.pre-install"
+checkdepends="cunit checkbashisms"
+makedepends="procps-dev libdnet-dev icu-dev glib-dev bash icu-dev
+ gtk+3.0-dev libxext-dev libxinerama-dev libxtst-dev gtkmm3-dev fuse-dev
+ libnotify-dev libxrandr-dev libxcomposite-dev libice-dev libsm-dev
+ libtirpc-dev linux-headers libmspack-dev openssl-dev rpcgen
+ automake autoconf libtool m4 doxygen xmlsec-dev
+ "
+source="$pkgname-$pkgver.tar.gz::https://github.com/vmware/$pkgname/archive/stable-$_ver.tar.gz
+ 0001-lib-misc-Recognize-Alpine-Linux.patch
+ 0002-open-vm-tools-Add-disable-werror-configure-option.patch
+ 0003-Do-not-assume-that-linux-and-gnu-libc-are-the-same-t.patch
+ 0004-Use-configure-test-for-struct-timespec.patch
+ 0005-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch
+ 0006-Use-configure-to-test-for-feature-instead-of-platfor.patch
+ 0007-Use-configure-test-for-sys-stat.h-include.patch
+ 0008-Rename-poll.h-to-vm_poll.h.patch
+ 0009-gnu-ucontext.patch
+ 0010-use-posix-strerror_r-unless-gnu.patch
+ 0011-use-off64_t-instead-of-loff_t.patch
+ 0012-remove-references-to-missing-common-agent-etc-config.patch
+ strerror_r.patch
+ systemLinux.c-fixup-for-Alpine.patch
+
+ $pkgname.initd
+ $pkgname.confd
+ $pkgname.logrotate
+ "
+builddir="$srcdir/$pkgname-stable-$_ver"
+
+check() {
+ export CUSTOM_PROCPS_NAME="procps"
+ export CFLAGS="$CFLAGS -Wno-unused-but-set-variable -D_GNU_SOURCE"
+ export CXXFLAGS="$CXXFLAGS -std=gnu++11 -fpermissive"
+
+ cd "$builddir"/open-vm-tools
+ make check
+
+ checkbashisms scripts/linux/network
+ checkbashisms scripts/common/statechange.sh
+}
+
+build() {
+ export CUSTOM_PROCPS_NAME="procps"
+ export CFLAGS="$CFLAGS -Wno-unused-but-set-variable -D_GNU_SOURCE"
+ export CXXFLAGS="$CXXFLAGS -std=gnu++11 -fpermissive"
+
+ cd "$builddir"/open-vm-tools
+
+ autoreconf -vif || return 1
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --without-dnet \
+ --without-xerces \
+ --with-icu \
+ --with-procps \
+ --with-x \
+ --without-kernel-modules \
+ --without-pam \
+ --enable-xmlsec1 \
+ --disable-werror \
+ --disable-glibc-check
+ make
+}
+
+package() {
+ cd "$builddir"/open-vm-tools
+
+ make install DESTDIR="$pkgdir"
+
+ cd "$pkgdir"
+
+ chmod -x ./etc/vmware-tools/*.conf
+ mv ./etc/vmware-tools/vm-support ./usr/bin/vm-support
+
+ install -D -m 755 "$srcdir"/$pkgname.initd \
+ ./etc/init.d/$pkgname
+ install -D -m 644 "$srcdir"/$pkgname.confd \
+ ./etc/conf.d/$pkgname
+
+ install -D -m 644 "$srcdir"/$pkgname.logrotate \
+ ./etc/logrotate.d/$pkgname
+
+ mkdir -p ./etc/modules-load.d/
+ cat > ./etc/modules-load.d/"$pkgname".conf <<-EOF
+ vmblock
+ vmci
+ vmhgfs
+ vmsync
+ vmxnet
+ vsock
+ vmw_balloon
+ EOF
+}
+
+gtk() {
+ pkgdesc="Xorg apps and plugins for open-vm-tools"
+
+ mkdir -p "$subpkgdir"/usr/bin \
+ "$subpkgdir"/usr/lib/open-vm-tools/plugins/vmsvc \
+ "$subpkgdir"/etc/
+
+ mv "$pkgdir"/usr/bin/vmware-user-suid-wrapper \
+ "$pkgdir"/usr/bin/vmware-vmblock-fuse \
+ "$pkgdir"/usr/bin/vmware-user \
+ "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/etc/xdg "$subpkgdir"/etc/
+ mv "$pkgdir"/usr/lib/open-vm-tools/plugins/vmusr \
+ "$subpkgdir"/usr/lib/open-vm-tools/plugins/
+ mv "$pkgdir"/usr/lib/open-vm-tools/plugins/vmsvc/libresolutionKMS.so \
+ "$subpkgdir"/usr/lib/open-vm-tools/plugins/vmsvc/
+}
+
+sha512sums="61a8a8efcba9fcfad2d5322b127fc6ade04ff18270e5718096b225df53c4c5ea947a4c910d70b811fbaa3ec1bc63deadd5bd4d2c70f10724713af70612173445 open-vm-tools-10.3.5.tar.gz
+5aa0d21bd4e1e7e4791677e02d0a50ad1800c1a5507044c9d693c59cc2360c423eba25643fba615f597b6dafad0e9551b775cf144b63051b68c934e911b5caed 0001-lib-misc-Recognize-Alpine-Linux.patch
+9188161f9bbd6572ee20855e727257b2140b39f1ba19b96879eb9878fb08cbdb7c3a5c9f5f8a4f389090acea6f71ee88fb36c7d4a74c1b8b94c9124db696a7f2 0002-open-vm-tools-Add-disable-werror-configure-option.patch
+1dd0cde6ee19aec77ddf803e95b0404e803569a38c7b3d001832b4bbeae95ea15ed32c59f27bffb315130bad0c7a788a7a522df13a5f265f66c4c7c302a1966d 0003-Do-not-assume-that-linux-and-gnu-libc-are-the-same-t.patch
+c647561c72b3ad919502ec4dd0a1ab736e2d479d8437b882791adce5417d8c26163ecffe9e212dab633c513bce6447cdbcb610eecf7dbb0eeeb792db16301de5 0004-Use-configure-test-for-struct-timespec.patch
+6b0b9cc4a7b9837649a01aacb957b4465ec901250e48dbb273514abedf8eb3a9c16b3ad09be413a8ab897e37dff0d065a3144a2418cd7ae5aa3020bd1ed14203 0005-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch
+58f68cef6c6388a3f1b66758af81c2818abb43222c140ce95419c94bb9aaf42102275844c18b9743c758f1984e8de6c92801348593e1a3e47f813316c4cc866b 0006-Use-configure-to-test-for-feature-instead-of-platfor.patch
+9d28eab3e1a40138efa05e78956a2615b171703f9689252d0960145e39b0ba5bbf0e2007479cbbca3dced89ccb45758908a57a2f5b361e4813ad67a0732e4539 0007-Use-configure-test-for-sys-stat.h-include.patch
+ff807233d0d1b15897d012080851007d23ad6e19c76eb85c9f63673491a4ff622a7d69d99c4a23ffe0fb4a24e57faf9cd1b1c2cce055a532d940dd3462168990 0008-Rename-poll.h-to-vm_poll.h.patch
+88a8dcb785723c6120aed19e46c7f9890858a4b60db4a86e97fe4babf7b0d8babb3b3294f9d6c0004c6ae0c75860c3a624e6446f6e0d1a23bb92578f92120352 0009-gnu-ucontext.patch
+6c8b99f51bc0fd114ce66a3311f151efbe56ec308d079afec837b9d0b60eae3fb42e1b5219246c1015a23fb63616398b958e1388830b80d5efdb27cce7bd6552 0010-use-posix-strerror_r-unless-gnu.patch
+a38bb2ac16657be9f7e9b2a5e32d23e66db1f283284c1cb8e7ffe853e047373397e60f01e735a28ecfaa60010f285b0b5a4066465a2afbe643a9b4b9b74ac1f4 0011-use-off64_t-instead-of-loff_t.patch
+ae00f77279a76f0d5205e7c6e8e2a9abd8fd1590244a907792c9be003c38c057eee015aba3e79bd956b4197dc03b7a6eb3935620f3d3cbc4d4e7c62187ae76ce 0012-remove-references-to-missing-common-agent-etc-config.patch
+5507a58198179805e4c924b6bd6ac8b026bd602c9e5e4c52213dadf6c8880a23a16ee49a4dfe2db27515c2a36009e609dd81b7ee0d560bbea1ddf6a5324eb7ac strerror_r.patch
+c18280eb3fdfe1e3ecc5aa116369908c71917bd4dd49743a9abf78e0096e8d6c7d4323057cf506ef31886b893b2e4c4839656172edd5097a347efa96aea1c86c systemLinux.c-fixup-for-Alpine.patch
+d4d0c0c3042eef4d241c933de6f7c398a88275744b3576efc2f909acd681752f548e4ae4a17eca7db731ee0b9254b46169a48463d12a72ec6354065d788159f4 open-vm-tools.initd
+ffc9c945a41e48791bab61ba72fed96c1a6ae3722caa715424e3077d167421b4e2f53bb4d415ab227d1f6e40d6ca3779df41e6b0a38db34b520979fa2b19298d open-vm-tools.confd
+5626c68b8ee01ece804f314b829476280e892581a448c27092e32a60b04d40ecfa8e8eca464c4376c3cfc497eb60406798b7383d1a747a173d3cd8b78d23100b open-vm-tools.logrotate"
diff --git a/community/open-vm-tools/open-vm-tools.confd b/community/open-vm-tools/open-vm-tools.confd
new file mode 100644
index 00000000000..a1f0d56dde9
--- /dev/null
+++ b/community/open-vm-tools/open-vm-tools.confd
@@ -0,0 +1,7 @@
+# Configuration for /etc/init.d/open-vm-tools
+
+# Set this to 'yes' to enable drag & drop (and vmblock) loading.
+#vm_drag_and_drop="no"
+
+# Additional options to pass into vmtoolsd.
+#command_args=""
diff --git a/community/open-vm-tools/open-vm-tools.initd b/community/open-vm-tools/open-vm-tools.initd
new file mode 100644
index 00000000000..fab4d22a392
--- /dev/null
+++ b/community/open-vm-tools/open-vm-tools.initd
@@ -0,0 +1,67 @@
+#!/sbin/openrc-run
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# Note: $VM_DRAG_AND_DROP is here for backward compatibility.
+: ${vm_drag_and_drop:="${VM_DRAG_AND_DROP:-}"}
+
+command="/usr/bin/vmtoolsd"
+command_background="yes"
+pidfile="/run/vmtoolsd.pid"
+# To not complain about missing messages...
+start_stop_daemon_args="--env LANG=en_US.UTF-8"
+
+vmblockmntpt="/proc/fs/vmblock/mountPoint"
+vmblockfusemntpt="/run/vmblock-fuse"
+
+depend() {
+ before net X
+}
+
+start_vmblock() {
+ checkpath -d -m 1777 /tmp/VMwareDnD
+
+ if command -v vmware-vmblock-fuse > /dev/null; then
+ modprobe fuse > /dev/null 2>&1
+ checkpath -d "$vmblockfusemntpt"
+
+ ebegin "Mounting vmblock-fuse"
+ vmware-vmblock-fuse \
+ -o subtype=vmware-vmblock,default_permissions,allow_other \
+ "$vmblockfusemntpt"
+ eend $?
+ else
+ modprobe vmblock > /dev/null 2>&1
+ checkpath -d "$vmblockmntpt"
+
+ ebegin "Mounting vmblock"
+ mount -t vmblock vmblock "$vmblockmntpt"
+ eend $?
+ fi
+}
+
+stop_vmblock() {
+ if [ -d "$vmblockfusemntpt" ]; then
+ ebegin "Unmounting vmblock-fuse"
+ umount "$vmblockfusemntpt"
+ eend $?
+ else
+ ebegin "Unmounting vmblock"
+ umount "$vmblockmntpt"
+ eend $?
+ fi
+}
+
+start_pre() {
+ if [ "$vm_drag_and_drop" = yes ]; then
+ start_vmblock
+ fi
+ return 0
+}
+
+stop_post() {
+ if [ "$vm_drag_and_drop" = yes ]; then
+ stop_vmblock
+ fi
+ return 0
+}
diff --git a/community/open-vm-tools/open-vm-tools.logrotate b/community/open-vm-tools/open-vm-tools.logrotate
new file mode 100644
index 00000000000..79d7e67f2ea
--- /dev/null
+++ b/community/open-vm-tools/open-vm-tools.logrotate
@@ -0,0 +1,5 @@
+/var/log/vmware-vmsvc.log {
+ copytruncate
+ delaycompress
+ missingok
+}
diff --git a/community/open-vm-tools/open-vm-tools.pre-install b/community/open-vm-tools/open-vm-tools.pre-install
new file mode 100644
index 00000000000..39b48503907
--- /dev/null
+++ b/community/open-vm-tools/open-vm-tools.pre-install
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+addgroup -S vmware 2>/dev/null
+
+exit 0
diff --git a/community/open-vm-tools/strerror_r.patch b/community/open-vm-tools/strerror_r.patch
new file mode 100644
index 00000000000..1d3554d0fdf
--- /dev/null
+++ b/community/open-vm-tools/strerror_r.patch
@@ -0,0 +1,13 @@
+diff --git a/open-vm-tools/vgauth/common/VGAuthLog.c b/open-vm-tools/vgauth/common/VGAuthLog.c
+index fb4261e..1b29536 100644
+--- a/open-vm-tools/vgauth/common/VGAuthLog.c
++++ b/open-vm-tools/vgauth/common/VGAuthLog.c
+@@ -210,7 +210,7 @@ LogErrorPosixCodeV(int code,
+ g_vsnprintf(buf, sizeof buf, fmt, args);
+ buf[sizeof buf - 1] = '\0';
+
+-#ifdef sun
++#if !defined(__GLIBC__)
+ strerror_r(code, errMsg, sizeof errMsg);
+ g_warning("[function %s, file %s, line %d], %s, [errno = %d], %s\n",
+ func, file, line, buf, code, errMsg);
diff --git a/community/open-vm-tools/systemLinux.c-fixup-for-Alpine.patch b/community/open-vm-tools/systemLinux.c-fixup-for-Alpine.patch
new file mode 100644
index 00000000000..1b7799ec623
--- /dev/null
+++ b/community/open-vm-tools/systemLinux.c-fixup-for-Alpine.patch
@@ -0,0 +1,36 @@
+From db3546f6234506d51caf91e3763bfdf000828156 Mon Sep 17 00:00:00 2001
+From: Henrik Riomar <henrik.riomar@gmail.com>
+Date: Fri, 23 Nov 2018 07:40:22 +0100
+Subject: [PATCH] systemLinux.c: fixup for Alpine
+
+/sbin/shutdown -r now -> /sbin/reboot
+/sbin/shutdown -h now -> /sbin/halt
+---
+ open-vm-tools/lib/system/systemLinux.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/open-vm-tools/lib/system/systemLinux.c b/open-vm-tools/lib/system/systemLinux.c
+index c74d4890..c98ce962 100644
+--- a/open-vm-tools/lib/system/systemLinux.c
++++ b/open-vm-tools/lib/system/systemLinux.c
+@@ -312,7 +312,7 @@ System_Shutdown(Bool reboot) // IN: "reboot or shutdown" flag
+ #elif defined(USERWORLD)
+ cmd = "/bin/reboot";
+ #else
+- cmd = "/sbin/shutdown -r now";
++ cmd = "/sbin/reboot";
+ #endif
+ } else {
+ #if __FreeBSD__
+@@ -322,7 +322,7 @@ System_Shutdown(Bool reboot) // IN: "reboot or shutdown" flag
+ #elif defined(USERWORLD)
+ cmd = "/bin/halt";
+ #else
+- cmd = "/sbin/shutdown -h now";
++ cmd = "/sbin/halt";
+ #endif
+ }
+ if (system(cmd) == -1) {
+--
+2.19.1
+