summaryrefslogtreecommitdiffstats
path: root/remote/modules/vmplayer/vmplayer.build
blob: 2ef2ed68a638216a4cb6198661392729cc06f2ad (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
fetch_source() {
	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/*
	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) $(which gconftool-2)" "$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 "KOMPALIER"
	for MOD in vsock vmblock vmmon vmnet vmci; do
		pdebug "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!"

}