In adding patches for recent changes in the linux headers and VM system, we overlooked the fact that patches in x11/nvidia-driver/files are often applied against the slave ports as well as the master port. As a result, some of the slave ports are now broken, either because the patches don't apply to their slightly different source files, or because the slave ports have additional occurrences of obsolete VM constructs that are not fixed by the patches devised for the master port. Fix this by replacing the patches by sed(1) invocations that work for all the ports, with correct OSVERSION checks. While here, append to rather than make a late assignment to LIB_DEPENDS, and adjust some of the other VM locking that wasn't needed and is now broken after FreeBSD src r242941. Fix: Patch attached with submission follows:
Responsible Changed From-To: freebsd-ports-bugs->danfe Over to maintainer (via the GNATS Auto Assign Tool)
Author: danfe Date: Sun Apr 7 15:21:50 2013 New Revision: 315754 URL: http://svnweb.freebsd.org/changeset/ports/315754 Log: - Convert recent patches against -CURRENT to sed(1) invocations that work for all driver ports, including legacy ones, with correct OSVERSION checks - Retouch some comments while here PR: ports/177459 Submitted by: bf Approved by: portmgr (miwi) Deleted: head/x11/nvidia-driver/files/r246085-patch-src-nvidia_linux.c head/x11/nvidia-driver/files/r248084-patch-src-nv-freebsd.h head/x11/nvidia-driver/files/r248084-patch-src-nvidia_subr.c Modified: head/x11/nvidia-driver/Makefile Modified: head/x11/nvidia-driver/Makefile ============================================================================== --- head/x11/nvidia-driver/Makefile Sun Apr 7 12:01:13 2013 (r315753) +++ head/x11/nvidia-driver/Makefile Sun Apr 7 15:21:50 2013 (r315754) @@ -12,11 +12,11 @@ PORTNAME= nvidia-driver DISTVERSION?= 310.32 -# Always try to set PORTREVISION as can be overridden by the slave ports +# Always try to set PORTREVISION as it can be overridden by the slave ports PORTREVISION?= 0 CATEGORIES= x11 kld MASTER_SITES= ${MASTER_SITE_NVIDIA} -# MASTER_SITE_SUBDIR has to be set later because it depends on NVVERSION +# MASTER_SITE_SUBDIR it set later because it depends on NVVERSION DISTNAME= NVIDIA-FreeBSD-x86${ARCH_SUFX}-${DISTVERSION} MAINTAINER= danfe@FreeBSD.org @@ -86,18 +86,11 @@ WBINVD_DESC= Flush CPU caches directly PLIST_SUB+= LINUXBASE=${LINUXBASE} SHLIB_VERSION=${PORTVERSION} \ MODULESDIR=${MODULESDIR} -. if ${OSVERSION} > 1000028 -EXTRA_PATCHES+= ${FILESDIR}/r248084-patch-src-nv-freebsd.h -EXTRA_PATCHES+= ${FILESDIR}/r248084-patch-src-nvidia_subr.c -. endif .if ${PORT_OPTIONS:MLINUX} CONFLICTS= linux[-_]dri-[0-9]* linux-f10-dri-[0-9]* USE_LINUX= yes PLIST_SUB+= LINUX="" -. if ${OSVERSION} > 1000026 -EXTRA_PATCHES+= ${FILESDIR}/r246085-patch-src-nvidia_linux.c -. endif .else PLIST_SUB+= LINUX="@comment " # Propagate WITHOUT_LINUX variable down to inner Makefiles @@ -109,24 +102,48 @@ IGNORE= requires fairly recent FreeBSD- .endif .if ${NVVERSION} < 1952200 +# ABI version is hardcoded inside the binary, so better be explicit here LIB_DEPENDS= m.3:${PORTSDIR}/misc/compat5x .endif post-patch: .SILENT # We should support -CURRENT: kill the check ${REINPLACE_CMD} -e '24,26d' ${WRKSRC}/src/nv-freebsd.h -# Adjust legacy drivers for updated d_mmap() since early 9.X +# Adjust legacy drivers for updated d_mmap() since FreeBSD src SVN r201223 .if ${OSVERSION} > 900005 && ${NVVERSION} < 1952200 ${REINPLACE_CMD} -e 's/vm_offset_t offset/vm_ooffset_t offset/ ; \ s/vm_offset_t \*address/vm_paddr_t *address/ ; \ s/int nprot/&, vm_memattr_t *memattr/' \ ${WRKSRC}/src/nvidia_dev.c .endif +# In the legacy drivers: remove paqe queue locking and add page locking +# around vm_page_(un)wire() after FreeBSD src SVN r207410, r207617, and +# r207644; also remove paqe queue locking around vm_page_wakeup() after +# FreeBSD src SVN r163622 +.if ${OSVERSION} > 900011 && ${NVVERSION} < 3046400 + ${REINPLACE_CMD} -E '/vm_page_(un)?lock_queues\(\);/d ; \ + s/(vm_page_(un)?wire\()([^,]+)(, 0)?(\);)/vm_page_lock(\3); & vm_page_unlock(\3);/' \ + ${WRKSRC}/src/nvidia_subr.c +.endif # Catch up legacy drivers with FreeBSD src SVN r225617 .if ${OSVERSION} > 900043 && ${NVVERSION} < 1952200 ${REINPLACE_CMD} -e '/return/s/ioctl/sys_&/' \ ${WRKSRC}/src/nvidia_linux.c .endif +# Adjust Linux headers #include's after FreeBSD src SVN r246085 +.if ${OSVERSION} > 1000027 && ${NVVERSION} >= 964323 + ${REINPLACE_CMD} -E '/#include "machine\/\.\.\/linux(32)?\/linux.h"/ \ + { x ; s/.*/#include "machine\/..\/..\/compat\/linux\/linux_ioctl.h"/ ; H ; x ; }' \ + ${WRKSRC}/src/nvidia_linux.c +.endif +# Adjust vm_object locking after FreeBSD src SVN r248084 +.if ${OSVERSION} > 1000029 + ${REINPLACE_CMD} -e '/#include <vm\/vm_object.h>/ \ + { x ; s/.*/#include <sys\/rwlock.h>/ ; G ; }' \ + ${WRKSRC}/src/nv-freebsd.h + ${REINPLACE_CMD} -E 's/(VM_OBJECT_)(UN)?(LOCK)/\1W\2\3/' \ + ${WRKSRC}/src/nvidia_subr.c +.endif # Process OPTIONS .if ${PORT_OPTIONS:MFREEBSD_AGP} ${REINPLACE_CMD} -E 's/undef (NV_SUPPORT_OS_AGP)/define \1/' \ _______________________________________________ svn-ports-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-ports-all To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
State Changed From-To: open->closed Committed with minor modifications, thanks a lot for a good submission!