freebsd-ports/emulators/vmware3/Makefile
Edwin Groothuis fa7dd313a2 [UPDATE]: emulators/vmware3 - Various fixes and solution to crashes.
I've discovered that the instant freezes when clicking
	'Power On' can be fixed by disabling APIC support. ACPI
	support, on or off, didn't seem to solve anything. I'd like
	to know whether or not disabling ACPI has actually helped
	anyone at all, as it could be removed from the pkg-message
	if not.

	I've reflected this in a completely re-worked, step-by-step,
	more clear pkg-message file.
	 I've also added a wrapper script for the vmware wizard,
	 mentioned it in the pkg-message, and fixed various portlint
	 complaints.

	 For some reason, the wizard cannot be launched from within
	 VMware itself. I have no idea as to what causes this.

PR:		ports/92871
Submitted by:	Travis Poppe <tlp@liquidx.org>
2006-04-28 22:23:27 +00:00

248 lines
7.8 KiB
Makefile

# ports collection makefile for: VMware 3.2 for Linux
# Date created: Fri 13 Apr 04:59:47 CET 2003
# Whom: mbr@freebsd.org
#
# $FreeBSD$
#
PORTNAME= vmware3
PORTVERSION= 3.2.1.2242
PORTREVISION= 13
PORTEPOCH= 1
CATEGORIES= emulators linux
MASTER_SITES= http://download3.vmware.com/software/wkst/:vmware \
${FREEBSD_MODULE_SITES} \
${VMWARE_MIRROR_SITES}
DISTFILES= VMware-workstation-${PORTVERSION:R}-${PORTVERSION:E}${EXTRACT_SUFX}:vmware \
vmmon-only-${PORTVERSION:R}-20040727${EXTRACT_SUFX}:patch \
vmnet-only-${PORTVERSION:R}-20040705${EXTRACT_SUFX}:patch
# Feel free to post your questions/reports/suggestions on this port to
# freebsd-emulation mailing list with the following maintainer address CC'ed.
MAINTAINER= orlando@break.net
COMMENT= A virtual machine emulator - a full PC in a window
RUN_DEPENDS= /dev/rtc:${PORTSDIR}/emulators/rtc
RESTRICTED= Not sure if we can redistribute it
VMWARE_MIRROR_SITES= \
http://vmware-svca.www.conxion.com/software/:vmware \
http://vmware-chil.www.conxion.com/software/:vmware \
http://vmware-heva.www.conxion.com/software/:vmware
FREEBSD_MODULE_SITES= \
http://www.break.net/orlando/vmware3/:patch \
USE_SUBMAKE= yes
VMDIR= ${PREFIX}/lib/vmware
SRC_BASE?= /usr/src
ONLY_FOR_ARCHS= i386
USE_LINUX= yes
USE_X_PREFIX= yes
WRKSRC= ${WRKDIR}/vmware-distrib
GZCAT= ${SETENV} ${SCRIPTS_ENV} ${SH} ${SCRIPTDIR}/extract
MAN1= vmware.1
MODULES= vmmon vmnet
.include <bsd.port.pre.mk>
.if ${OSVERSION} < 480102
IGNORE= systems prior to FreeBSD 480102 currently out of support
.endif
.if !defined(HAVE_LINPROCFS) && !exists(/modules/linprocfs.ko) && !exists(/boot/kernel/linprocfs.ko) && !exists(${PREFIX}/modules/linprocfs.ko) && !exists(/compat/linux/proc/version)
IGNORE= linprocfs is required, please build the module and/or add it to your kernel
.endif
.if !exists(${SRC_BASE}/Makefile)
IGNORE= kernel source files required
.endif
.if ${OSVERSION} < 500023
VMNET1_MINOR= 0x00010001
.else
VMNET1_MINOR= 0x00800001
.endif
SCRIPTS_ENV+= LINUXBASE="${LINUXBASE}" \
VMNET_HOST_IP="${VMNET_HOST_IP}" \
VMNET_NETMASK="${VMNET_NETMASK}" \
VMNET1_MINOR="${VMNET1_MINOR}"
MAKE_ARGS= KMODDIR="${VMDIR}/modules"
PLIST_SUB= LINUXBASE="${LINUXBASE}" VMNET1_MINOR="${VMNET1_MINOR}"
.if ${OSVERSION} < 500000
PLIST_SUB+= FREEBSD5="@comment "
.else
PLIST_SUB+= FREEBSD5=""
.endif
pre-fetch:
.if ${OSVERSION} < 500000 && ${OSVERSION} < 490100
@${ECHO}
@${ECHO} "You need an uncommitted kernel patch to run this port:"
@${ECHO} "You can get it at: http://people.freebsd.org/~fjoe/shm-freebsd4-20031105.diff"
@${ECHO}
.elif ${OSVERSION} < 500113 && ${OSVERSION} > 500000
@${ECHO}
@${ECHO} "You need an uncommitted kernel patch to run this port:"
@${ECHO} "You can get it at: http://people.freebsd.org/~mbr/patches/"
@${ECHO} "linux.shm.patch-cvs-freebsd5-20030329"
@${ECHO}
.endif
post-extract:
.for m in ${MODULES}
${TAR} -xf ${WRKSRC}/lib/modules/source/${m}.tar -C ${WRKSRC}
.endfor
${GUNZIP_CMD} ${WRKSRC}/man/man1/vmware.1.gz
pre-patch:
@${MKDIR} ${WRKSRC}/vmnet-only/freebsd
@${MKDIR} ${WRKSRC}/vmnet-only/netbsd
@${MKDIR} ${WRKSRC}/vmmon-only/freebsd
@${MKDIR} ${WRKSRC}/vmmon-only/netbsd
@cd ${WRKSRC}/vmmon-only && ${PATCH} -p1 < ${WRKDIR}/vmmon-only.diff
@cd ${WRKSRC}/vmnet-only && ${PATCH} -p1 < ${WRKDIR}/vmnet-only.diff
.if exists(/sys/compat/linux/linux_ioctl.h)
${PERL} -i -pe 's,i386(/linux/linux_ioctl\.h),compat$$1,' \
${WRKSRC}/vmnet-only/freebsd/vmnet_linux.c
.endif
.if exists(/usr/include/sys/selinfo.h)
${PERL} -i -pe 's,<sys/select\.h>,<sys/selinfo.h>,' \
${WRKSRC}/vmmon-only/freebsd/*.c
.endif
cd ${WRKSRC}/vmmon-only/freebsd && ${TOUCH} bus_if.h device_if.h
.if ${OSVERSION} >= 500019
${PERL} -i -pe 's,<machine/ioctl_fd\.h>,<sys/fdcio.h>,' \
${WRKSRC}/vmmon-only/freebsd/*.c \
${WRKSRC}/vmware-distrib/vmmon-only/freebsd/*.c
.endif
post-patch:
${CP} ${FILESDIR}/Makefile ${WRKSRC}
${CP} ${FILESDIR}/Makefile.vmmon ${WRKSRC}/vmmon-only/Makefile
${CP} ${FILESDIR}/Makefile.vmnet ${WRKSRC}/vmnet-only/Makefile
.if ${OSVERSION} < 500000
${CAT} ${FILESDIR}/freebsd4.patch | (cd ${WRKSRC} && ${PATCH}) > /dev/null 2>&1
.endif
.if ${OSVERSION} > 600000
${CAT} ${FILESDIR}/fbsd6-1.patch | (cd ${WRKSRC} && ${PATCH}) > /dev/null 2>&1
${CAT} ${FILESDIR}/fbsd6-2.patch | (cd ${WRKSRC} && ${PATCH}) > /dev/null 2>&1
.endif
setoptions:
${SED} -e 's;@@PREFIX@@;${PREFIX};' \
-e 's;@@BRIDGED@@;${VMNET_BRIDGED};' \
-e 's;@@BRIDGE_INTF@@;${VMNET_BRIDGED_INTERFACE};' \
-e 's;@@HOST_IP@@;${VMNET_HOST_IP};' \
-e 's;@@NETMASK@@;${VMNET_NETMASK};' \
${FILESDIR}/config > ${WRKDIR}/config
${SED} -e 's;@@PREFIX@@;${PREFIX};' \
-e 's;@@LINUXBASE@@;${LINUXBASE};' \
-e 's;@@NETWORKING@@;${VMNET_NETWORKING};' \
-e 's;@@VMNET1_MINOR@@;${VMNET1_MINOR};' \
${FILESDIR}/001.vmware.sh > ${WRKDIR}/001.vmware.sh
${SED} -e 's;@@PREFIX@@;${PREFIX};' \
-e 's;@@LINUXBASE@@;${LINUXBASE};' \
${FILESDIR}/vmware > ${WRKDIR}/vmware
${SED} -e 's;@@PREFIX@@;${PREFIX};' \
-e 's;@@LINUXBASE@@;${LINUXBASE};' \
${FILESDIR}/vmware-wizard > ${WRKDIR}/vmware-wizard
${SED} -e 's;@@PREFIX@@;${PREFIX};' \
${FILESDIR}/pkg-message.in > ${PKGMESSAGE}
pre-install: setoptions
${INSTALL_MAN} ${WRKSRC}/man/man1/vmware.1 ${MANPREFIX}/man/man1
${MKDIR} ${VMDIR}/modules
${MKDIR} ${PREFIX}/etc/vmware
.if exists(${PREFIX}/etc/vmware/config)
@echo "====> Preserving your previous configuration."
.else
${INSTALL_DATA} ${WRKDIR}/config ${PREFIX}/etc/vmware
.endif
${INSTALL_SCRIPT} ${WRKDIR}/001.vmware.sh ${PREFIX}/etc/rc.d
${MKDIR} ${VMDIR}/bin
${INSTALL_SCRIPT} ${FILESDIR}/df ${VMDIR}/bin
[ -f ${LINUXBASE}/bin/df ] || ${LN} -s ${VMDIR}/bin/df ${LINUXBASE}/bin/
${INSTALL_SCRIPT} ${WRKSRC}/bin/*.pl ${VMDIR}/bin
for i in \
vmnet-bridge vmnet-dhcpd vmnet-natd vmnet-netifup \
vmnet-sniffer vmware-nmbd vmware-smbd vmware-smbpasswd \
vmware-smbpasswd.bin vmware-ping vmware-wizard \
; do \
${INSTALL_SCRIPT} ${WRKSRC}/bin/$${i} ${VMDIR}/bin; \
done
for f in ${WRKSRC}/lib/bin/*; do \
${INSTALL_SCRIPT} $${f} ${VMDIR}/bin; \
done
${MKDIR} ${VMDIR}/configurator
for f in ${WRKSRC}/lib/configurator/* ; do \
${INSTALL_DATA} $${f} ${VMDIR}/configurator; \
done
${MKDIR} ${VMDIR}/isoimages
for f in ${WRKSRC}/lib/isoimages/* ; do \
${INSTALL_DATA} $${f} ${VMDIR}/isoimages; \
done
${MKDIR} ${VMDIR}/licenses/site
${MKDIR} ${VMDIR}/licenses/user
${INSTALL_DATA} -m 644 ${WRKSRC}/lib/licenses/user/license.ws.3.0 \
${VMDIR}/licenses/user
${INSTALL_SCRIPT} -m 4555 ${WRKSRC}/bin/vmware ${VMDIR}/bin
${INSTALL_SCRIPT} ${WRKDIR}/vmware ${PREFIX}/bin
${INSTALL_SCRIPT} ${WRKDIR}/vmware-wizard ${PREFIX}/bin
${INSTALL_DATA} ${WRKSRC}/lib/config ${VMDIR}
${MKDIR} ${VMDIR}/help
${INSTALL_DATA} ${WRKSRC}/lib/help/* ${VMDIR}/help
${MKDIR} ${VMDIR}/xkeymap
${INSTALL_DATA} ${WRKSRC}/lib/xkeymap/* ${VMDIR}/xkeymap
${MKDIR} ${VMDIR}/smb/codepages
${INSTALL_DATA} ${WRKSRC}/lib/smb/codepages/* ${VMDIR}/smb/codepages
${MKDIR} ${VMDIR}/messages/chef
${INSTALL_DATA} ${WRKSRC}/lib/messages/chef/* ${VMDIR}/messages/chef
${MKDIR} ${VMDIR}/messages/ja
${INSTALL_DATA} ${WRKSRC}/lib/messages/ja/* ${VMDIR}/messages/ja
${MKDIR} ${VMDIR}/messages/jive
${INSTALL_DATA} ${WRKSRC}/lib/messages/jive/* ${VMDIR}/messages/jive
.if !defined(NOPORTDOCS)
${MKDIR} ${DOCSDIR}
${INSTALL_DATA} ${WRKSRC}/doc/* ${DOCSDIR}
.for f in README.FreeBSD Hints.FreeBSD MultipleInstances.FreeBSD ChangeLog.FreeBSD
${INSTALL_DATA} ${FILESDIR}/${f} ${DOCSDIR}
.endfor
.endif
post-install:
${LN} -sf ${PREFIX}/etc/vmware ${LINUXBASE}/etc/
@if [ ! -e ${LINUXBASE}/usr/lib/vmware/bin/vmware ]; then \
${LN} -sf ${PREFIX}/lib/vmware ${LINUXBASE}/usr/lib/vmware; \
fi
@${CAT} ${PKGMESSAGE}
pre-clean:
.if exists(${WRKSRC})
@${FIND} ${WRKSRC} | ${GREP} \@ | ${XARGS} ${RM}
.endif
.include <bsd.port.post.mk>
.if exists(${WRKDIR}/Makefile.inc.net)
.include "${WRKDIR}/Makefile.inc.net"
.endif