summaryrefslogtreecommitdiffstats
path: root/remote/modules/vmplayer/vmplayer.build
blob: 0787d728451b8e037d56d8dc5bb4ab1a4cfc7355 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
fetch_source() {
	#mount vmware bundle directory
	[ ! -d /mnt/store/vmware ] && mkdir -p /mnt/store/vmware
	mount -t nfs -o ro,async,nolock 132.230.8.113:/srv/vmext /mnt/store/vmware || perror "Could not mount vmware bundle directory. Exiting."
	ARCH=$(uname -m)
	[ "$ARCH" = "i686" ] && ARCH=i386
	local BUNDLE="$(find /mnt/store/vmware -type f -name "VMware-Player*.${ARCH}.bundle" | head -1)"
	[ -z "$BUNDLE" ] && perror "Could not find vmplayer at /mnt/store for ARCH = $ARCH"
	[ -e "./src" ] && { rm -r ./src || perror "Could not delete old src dir."; }
	pinfo "Extracting bundle"
	$BUNDLE -x ./src/ || perror "Extracting the vmplayer bundle failed."
	pinfo "done"
}

build() {
	[ ! -d "./src/vmware-player" ] && perror "Extracted vmplayer bundle not found in ./src - please clean vmplayer module."
	local TARGET="$MODULE_BUILD_DIR/usr/lib/vmware/"
	mkdir -p "$TARGET"{lib,share,bin}
	pinfo "Copying data to build dir"
	cp -r ./src/vmware-installer/lib/lib* "$TARGET" || perror "Could not copy libs from vmware-installer"
	cp -r ./src/vmware-network-editor/lib "$MODULE_BUILD_DIR/usr/" || perror "Could not copy libs from vmware-network-config"
	cp -r ./src/vmware-player/lib/share "$TARGET" || perror "Could not copy lib/share from vmware-player"
	cp -r ./src/vmware-player/share "$MODULE_BUILD_DIR/usr/" || perror "C0oudld not copy share from vmware-player"
	cp -r ./src/vmware-player-app/etc "$MODULE_BUILD_DIR/" || perror "Could not copy bin and etc from vmware-player-app."
	cp -r ./src/vmware-player-app/lib/* "$TARGET" || perror "Could not copy lib subtree from vmware-player-app."
	cp -r ./src/vmware-player-app/{bin,share} "$MODULE_BUILD_DIR/usr/" || perror "could not copy share from vmware-player-app."
	cp -r ./src/vmware-usbarbitrator/bin "$MODULE_BUILD_DIR/usr/" || perror "Could not copy bin from vmware-usbarbitrator."
	cp -r ./src/vmware-vmx/{bin,etc,sbin} "$MODULE_BUILD_DIR/usr/" || perror "could not copy bin,etc,sbin to usr for vmare-vmx."
	cp -r ./src/vmware-vmx/lib/{bin,icu,lib,libconf,scripts} "$TARGET" || perror "Could not copy many things from vmware-vmx."
	[ ! -L "$TARGET/bin/vmplayer" ] && { ln -s /usr/lib/vmware/bin/appLoader "$TARGET/bin/vmplayer" || perror "Could not link vmplayer to appLoader."; }
	chmod +x "$TARGET"/bin/*
	chmod +x "$MODULE_BUILD_DIR"/usr/{bin,sbin}/*
	pinfo "Patching LIBCONF_DIR"
	local file=""
	for file in $(grep -rl "@@LIBCONF_DIR@@" "$MODULE_BUILD_DIR"); do
		sed -i 's#@@LIBCONF_DIR@@#/usr/lib/vmware/libconf#g' "$file"
	done
	# Extract libgconf-2 stuff
        COPYLIST="list_dpkg_output"
        [ -e "${COPYLIST}" ] && rm "${COPYLIST}"

        list_packet_files >> "${COPYLIST}"
        tarcopy "$(cat "${COPYLIST}" | sort -u)" "${MODULE_BUILD_DIR}"
	# Compile kernel modules
	pinfo "Compiling required kernel modules."
	# build modules
	build_modules

}

post_copy() {
	# FIXME: gconftool is copied without dependencies
	#tarcopy "$(find /usr/lib/ -name gconv -type d)" "$TARGET_BUILD_DIR"
	:
}

build_modules(){
	pdebug "PAtCHIGN"
	# need to be in src
	cd "$MODULE_DIR/src" || perror "Could not cd to '$MODULE_DIR/src'"
	local VMWARE_MODCONFIG="$MODULE_DIR/src/vmware-vmx/bin/vmware-modconfig"
	[ -e "$VMWARE_MODCONFIG" ] && chmod +x "$VMWARE_MODCONFIG" || perror "Could not find $VMWARE_MODCONFIG"
	# link vmware-modconfig-console in the build dir
	local MANIFEST="$MODULE_DIR/src/vmware-vmx/manifest.xml"
	local BUILD_NUMBER="$(grep -o -E '<buildNumber>[0-9]*</buildNumber>' "$MANIFEST"|grep -o -E '[0-9]*')"
	local VERSION="$(grep -o -E '<version>[0-9.]*</version>' "$MANIFEST"|grep -o -E '[0-9.]*')"
	local CORE_VERSION="$(grep -o -E '<coreVersion>[0-9.]*</coreVersion>' "$MANIFEST"|grep -o -E '[0-9.]*')"
	# /etc/vmware/config gen
	
	sed -i.bak1 '/^ETCDIR/d;/^VMISETCDIR/d;/bootstrap/d' "$VMWARE_MODCONFIG"
	sed -i.bak2 "s/libdir=.*/libdir=$(echo $MODULE_BUILD_DIR | escape_replace)\/usr\/lib\/vmware/g" "$VMWARE_MODCONFIG"
	sed -i.bak3 "s#set -e#set -e\nPREFIX=\"/usr\"\nBINDIR=\"/usr/bin\"\nSBINDIR=\"/usr/sbin\"\nLIBDIR=\"/usr/lib\"\nDATADIR=\"/usr/share\"\nSYSCONFDIR=\"/etc\"\nDOCDIR=\"/usr/share/doc\"\nMANDIR=\"/usr/share/man\"\nINCLUDEDIR=\"/usr/include\"\nINITDIR=\"/etc\"\nINITSCRIPTDIR=\"/etc/init.d\"\nVMWARE_INSTALLER=\"/usr/lib/vmware-installer/$CORE_VERSION\"\nVERSION=\"$CORE_VERSION\"\nVMISVERSION=\"$CORE_VERSION\"\nVMISPYVERSION=\"25\"#g" "$VMWARE_MODCONFIG"
	

	[ -e "/etc/vmware/config" ] && cp "/etc/vmware/config" "/etc/vmware/config.mltk.bak"
	cat > "/etc/vmware/config" << EOF
.encoding = "UTF-8"
installerDefaults.componentDownloadEnabled = "yes"
installerDefaults.dataCollectionEnabled = "no"
installerDefaults.transferVersion = "1"
installerDefaults.autoSoftwareUpdateEnabled = "yes"
NETWORKING = "yes"
VMBLOCK_CONFED = "yes"
gksu.rootMethod = "sudo"
libdir = "$MODULE_BUILD_DIR/usr/lib/vmware"
VMCI_CONFED = "yes"
VSOCK_CONFED = "yes"
initscriptdir = "/etc/init.d"
authd.fullpath = "/usr/sbin/vmware-authd"
bindir = "/usr/bin"
vmware.fullpath = "/usr/bin/vmware"
vix.libdir = "/usr/lib/vmware-vix"
vix.config.version = "1" 
player.product.version = "$VERSION"
product.buildNumber = "$BUILD_NUMBER"
authd.client.port = "902"
authd.proxy.nfc = "vmware-hostd:ha-nfc"
authd.soapserver = "TRUE"
product.version = "9.0.1"
workstation.product.version = "9.0.1"
product.name = "VMware Workstation"
EOF
 	mkdir -p "$MODULE_BUILD_DIR/usr/lib/vmware/modules"
	ln -sf "$MODULE_DIR/src/vmware-vmx/extra/modules.xml" "$MODULE_BUILD_DIR/usr/lib/vmware/modules/"
	ln -sf "$MODULE_DIR/src/vmware-vmx/lib/modules/source" "$MODULE_BUILD_DIR/usr/lib/vmware/modules/"

	ln -sf "appLoader" "$MODULE_BUILD_DIR/usr/lib/vmware/bin/vmware-modconfig"
	ln -sf "appLoader" "$MODULE_BUILD_DIR/usr/lib/vmware/bin/vmware-modconfig-console"

	[ ! -e "$MODULES_DIR/kernel/ksrc/include/generated/utsrelease.h" ] && perror "Could not find uts release!!!"
	local UTS_RELEASE="$(cat "$MODULES_DIR/kernel/ksrc/include/generated/utsrelease.h" | awk -F '"' '{print $2}')"
	pinfo "Patching vmblock.tar"
	cd "$MODULE_BUILD_DIR/usr/lib/vmware/modules/source" || perror "cd failed."
	tar xf "vmblock.tar" || perror "untar of vmblock.tar failed."
	for sourcefile in $(grep -l -r -E '\sputname' "vmblock-only/"); do
		sed -r -i 's/\sputname/__putname/g' "$sourcefile" || perror "sed of $sourcefile failed."
	done
	tar cf "vmblock.tar" "vmblock-only/" || perror "repacking of vmblock.tar failed."
	cd -
	
	pinfo "KOMPALIERE VMWARE KERNEL MODULE"
	for MOD in vsock vmblock vmmon vmnet vmci; do
		pinfo "Kompaliere $MOD"
		"$VMWARE_MODCONFIG" --console --build-mod -k "$UTS_RELEASE $MOD" "$(which gcc)" "$MODULES_DIR/kernel/ksrc/include" "vmplayer" "$MOD"
	done	

	cd -

	mkdir -p "$TARGET_BUILD_DIR/lib/modules/vmware/"
	cp "/lib/modules/$UTS_RELEASE/vmplayer/"* "$TARGET_BUILD_DIR/lib/modules/vmware/" || perror "Could not cp vmware modules to target!"
	[ -e /etc/vmware/config ] && rm -f /etc/vmware/config
	cp /etc/vmware/config.mltk.bak /etc/vmware/config

}