libGL and friends have become broken on the various tier-2 architectures since the latest X11 update. marius@ worked up a patch to try to fix up sparc64 (and possibly powerpc). However, I had already noticed a failure on arm in one of my test builds, for the same reason. I am going to test the below patch on pointyhat-west/amd64 to make sure there are no regressions. I would appreciate other testers. While based on marius' patch, this removes some code that is getting hard to read and replaces it with some code that is, if not perfect, at least more obvious to understand.
Responsible Changed From-To: freebsd-ports-bugs->freebsd-x11 Over to maintainer (via the GNATS Auto Assign Tool)
State Changed From-To: open->analyzed Note that I'm doing an test run with this on amd64 on pointyhat-west.
Responsible Changed From-To: freebsd-x11->linimon
I'm not seeing the new patch files in the attached patch.txt diff, is it because the diff operation did not include new files in the directory? I also see that the nouveau driver is disabled for the powerpc architecture. The nouveau FAQ list states that it works with linux/powerpc ( http://nouveau.freedesktop.org/wiki/FAQ#Which_systems_do_you_support.3F ). Even if getting it to work with freebsd/powerpc is another story, we may want to try (at least, the libraries are built without error). If somebody has a pointer to a nouveau kernel patch that applies to the 9.0-RELEASE source tree, I could try to give a shot eventually. -- Matthieu Volat <mazhe@alkumuna.eu>
State Changed From-To: analyzed->closed Committed. No comment from x11@.
Author: linimon Date: Mon Jul 30 04:36:31 2012 New Revision: 301701 URL: http://svn.freebsd.org/changeset/ports/301701 Log: Attempt to fix build of dri, libGL, and libdrm on tier-2 archs. PR: ports/169874 Submitted by: marius, linimon Tested on: amd64, arm, i386, powerpc, sparc Thanks to: bz, andyt Added: head/graphics/libGL/files/extra-configure (contents, props changed) head/graphics/libGL/files/extra-configure-old (contents, props changed) head/graphics/libGL/files/extra-mach64_context.h-old (contents, props changed) head/graphics/libGL/files/extra-src__gallium__include__pipe__p_config.h (contents, props changed) head/graphics/libGL/files/extra-src__mesa__drivers__dri__radeon__radeon_span.c (contents, props changed) Modified: head/graphics/dri/Makefile head/graphics/dri/pkg-plist head/graphics/libGL/Makefile head/graphics/libGL/bsd.mesalib.mk head/graphics/libdrm/pkg-plist Modified: head/graphics/dri/Makefile ============================================================================== --- head/graphics/dri/Makefile Mon Jul 30 01:13:11 2012 (r301700) +++ head/graphics/dri/Makefile Mon Jul 30 04:36:31 2012 (r301701) @@ -7,6 +7,7 @@ PORTNAME= dri PORTVERSION= ${MESAVERSION} +PORTREVISION= 1 PORTEPOCH= 2 CATEGORIES= graphics @@ -28,4 +29,92 @@ do-install: BROKEN= Does not install on ia64 .endif +.if ${ARCH} != "amd64" || ${ARCH} != "i386" +CONFIGURE_ARGS+=--disable-gallium-intel +.endif + +.if ${ARCH} == "amd64" +PLIST_SUB+= I810_DRIVER="@comment " +PLIST_SUB+= I9X5_DRIVER="" +PLIST_SUB+= MACH64_DRIVER="" +PLIST_SUB+= MGA_DRIVER="" +PLIST_SUB+= NOUVEAU_DRIVER="" +PLIST_SUB+= RADEON_DRIVERS="" +PLIST_SUB+= SAVAGE_DRIVER="" +PLIST_SUB+= SIS_DRIVER="" +PLIST_SUB+= SWRAST_DRIVER="" +PLIST_SUB+= TDFX_DRIVER="" +PLIST_SUB+= UNICHROME_DRIVER="" +.endif + +.if ${ARCH} == "arm" +PLIST_SUB+= I810_DRIVER="@comment " +PLIST_SUB+= I9X5_DRIVER="@comment " +PLIST_SUB+= MACH64_DRIVER="@comment " +PLIST_SUB+= MGA_DRIVER="@comment " +PLIST_SUB+= NOUVEAU_DRIVER="@comment " +PLIST_SUB+= RADEON_DRIVERS="@comment " +PLIST_SUB+= SAVAGE_DRIVER="@comment " +PLIST_SUB+= SIS_DRIVER="@comment " +PLIST_SUB+= SWRAST_DRIVER="@comment " +PLIST_SUB+= TDFX_DRIVER="@comment " +PLIST_SUB+= UNICHROME_DRIVER="@comment " +.endif + +.if ${ARCH} == "i386" +PLIST_SUB+= I810_DRIVER="" +PLIST_SUB+= I9X5_DRIVER="" +PLIST_SUB+= MACH64_DRIVER="" +PLIST_SUB+= MGA_DRIVER="" +PLIST_SUB+= NOUVEAU_DRIVER="" +PLIST_SUB+= RADEON_DRIVERS="" +PLIST_SUB+= SAVAGE_DRIVER="" +PLIST_SUB+= SIS_DRIVER="" +PLIST_SUB+= SWRAST_DRIVER="" +PLIST_SUB+= TDFX_DRIVER="" +PLIST_SUB+= UNICHROME_DRIVER="" +.endif + +.if ${ARCH} == "mips" +PLIST_SUB+= I810_DRIVER="@comment " +PLIST_SUB+= I9X5_DRIVER="@comment " +PLIST_SUB+= MACH64_DRIVER="@comment " +PLIST_SUB+= MGA_DRIVER="@comment " +PLIST_SUB+= NOUVEAU_DRIVER="@comment " +PLIST_SUB+= RADEON_DRIVERS="@comment " +PLIST_SUB+= SAVAGE_DRIVER="@comment " +PLIST_SUB+= SIS_DRIVER="@comment " +PLIST_SUB+= SWRAST_DRIVER="@comment " +PLIST_SUB+= TDFX_DRIVER="@comment " +PLIST_SUB+= UNICHROME_DRIVER="@comment " +.endif + +.if ${ARCH} == "powerpc" +PLIST_SUB+= I810_DRIVER="@comment " +PLIST_SUB+= I9X5_DRIVER="@comment " +PLIST_SUB+= MACH64_DRIVER="" +PLIST_SUB+= MGA_DRIVER="@comment " +PLIST_SUB+= NOUVEAU_DRIVER="@comment " +PLIST_SUB+= RADEON_DRIVERS="" +PLIST_SUB+= SAVAGE_DRIVER="@comment " +PLIST_SUB+= SIS_DRIVER="@comment " +PLIST_SUB+= SWRAST_DRIVER="" +PLIST_SUB+= TDFX_DRIVER="" +PLIST_SUB+= UNICHROME_DRIVER="@comment " +.endif + +.if ${ARCH} == "sparc64" +PLIST_SUB+= I810_DRIVER="@comment " +PLIST_SUB+= I9X5_DRIVER="@comment " +PLIST_SUB+= MACH64_DRIVER="" +PLIST_SUB+= MGA_DRIVER="@comment " +PLIST_SUB+= NOUVEAU_DRIVER="@comment " +PLIST_SUB+= RADEON_DRIVERS="" +PLIST_SUB+= SAVAGE_DRIVER="@comment " +PLIST_SUB+= SIS_DRIVER="@comment " +PLIST_SUB+= SWRAST_DRIVER="" +PLIST_SUB+= TDFX_DRIVER="@comment " +PLIST_SUB+= UNICHROME_DRIVER="@comment " +.endif + .include <bsd.port.post.mk> Modified: head/graphics/dri/pkg-plist ============================================================================== --- head/graphics/dri/pkg-plist Mon Jul 30 01:13:11 2012 (r301700) +++ head/graphics/dri/pkg-plist Mon Jul 30 04:36:31 2012 (r301701) @@ -1,20 +1,20 @@ include/GL/internal/dri_interface.h -lib/dri/i810_dri.so -lib/dri/i915_dri.so -lib/dri/i965_dri.so -lib/dri/mach64_dri.so -lib/dri/mga_dri.so -%%NEW%%lib/dri/nouveau_vieux_dri.so -lib/dri/r128_dri.so -lib/dri/r200_dri.so -lib/dri/r300_dri.so -lib/dri/r600_dri.so -lib/dri/radeon_dri.so -lib/dri/savage_dri.so -lib/dri/sis_dri.so -lib/dri/swrast_dri.so -lib/dri/tdfx_dri.so -lib/dri/unichrome_dri.so +%%I810_DRIVER%%lib/dri/i810_dri.so +%%I9X5_DRIVER%%lib/dri/i915_dri.so +%%I9X5_DRIVER%%lib/dri/i965_dri.so +%%MACH64_DRIVER%%lib/dri/mach64_dri.so +%%MGA_DRIVER%%lib/dri/mga_dri.so +%%NEW%%%%NOUVEAU_DRIVER%%lib/dri/nouveau_vieux_dri.so +%%RADEON_DRIVERS%%lib/dri/r128_dri.so +%%RADEON_DRIVERS%%lib/dri/r200_dri.so +%%RADEON_DRIVERS%%lib/dri/r300_dri.so +%%RADEON_DRIVERS%%lib/dri/r600_dri.so +%%RADEON_DRIVERS%%lib/dri/radeon_dri.so +%%SAVAGE_DRIVER%%lib/dri/savage_dri.so +%%SIS_DRIVER%%lib/dri/sis_dri.so +%%SWRAST_DRIVER%%lib/dri/swrast_dri.so +%%TDFX_DRIVER%%lib/dri/tdfx_dri.so +%%UNICHROME_DRIVER%%lib/dri/unichrome_dri.so libdata/pkgconfig/dri.pc @dirrm lib/dri @dirrmtry include/GL/internal Modified: head/graphics/libGL/Makefile ============================================================================== --- head/graphics/libGL/Makefile Mon Jul 30 01:13:11 2012 (r301700) +++ head/graphics/libGL/Makefile Mon Jul 30 04:36:31 2012 (r301701) @@ -21,4 +21,11 @@ do-install: cd ${WRKSRC}/src/mesa; ${GMAKE} install-libgl .include "${.CURDIR}/bsd.mesalib.mk" -.include <bsd.port.mk> + +.include <bsd.port.pre.mk> + +.if ${ARCH} != "amd64" || ${ARCH} != "i386" +CONFIGURE_ARGS+=--disable-gallium-intel +.endif + +.include <bsd.port.post.mk> Modified: head/graphics/libGL/bsd.mesalib.mk ============================================================================== --- head/graphics/libGL/bsd.mesalib.mk Mon Jul 30 01:13:11 2012 (r301700) +++ head/graphics/libGL/bsd.mesalib.mk Mon Jul 30 04:36:31 2012 (r301701) @@ -53,13 +53,18 @@ CONFIGURE_ARGS+=--enable-gallium-llvm=no --disable-egl .if defined(WITH_NEW_XORG) -EXTRA_PATCHES+= ${PATCHDIR}/extra-mach64_context.h \ +EXTRA_PATCHES+= ${PATCHDIR}/extra-configure \ + ${PATCHDIR}/extra-mach64_context.h \ ${PATCHDIR}/extra-sis_context.h \ ${PATCHDIR}/extra-src-glsl_ir_constant_expression.cpp \ + ${PATCHDIR}/extra-src__gallium__include__pipe__p_config.h \ ${PATCHDIR}/extra-src__mesa__drivers__dri__nouveau__nouveau_array.c \ - ${PATCHDIR}/extra-src__mesa__drivers__dri__nouveau__nouveau_render_t.c + ${PATCHDIR}/extra-src__mesa__drivers__dri__nouveau__nouveau_render_t.c \ + ${PATCHDIR}/extra-src__mesa__drivers__dri__radeon__radeon_span.c .else -EXTRA_PATCHES+= ${PATCHDIR}/extra-src__mesa__x86-64__glapi_x86-64.S \ +EXTRA_PATCHES+= ${PATCHDIR}/extra-configure-old \ + ${PATCHDIR}/extra-mach64_context.h-old \ + ${PATCHDIR}/extra-src__mesa__x86-64__glapi_x86-64.S \ ${PATCHDIR}/extra-src__mesa__x86-64__xform4.S \ ${PATCHDIR}/extra-src__mesa__x86__glapi_x86.S \ ${PATCHDIR}/extra-src__mesa__x86__read_rgba_span_x86.S @@ -110,6 +115,13 @@ post-patch: ${WRKSRC}/src/glw/Makefile \ ${WRKSRC}/src/mesa/Makefile \ ${WRKSRC}/src/mesa/drivers/dri/Makefile +.if defined(WITH_NEW_XORG) +# replace hardlinks with patched radeon_span.c +.for i in r200 r300 r600 + @${CP} -fp ${WRKSRC}/src/mesa/drivers/dri/radeon/radeon_span.c \ + ${WRKSRC}/src/mesa/drivers/dri/${i}/ +.endfor +.endif .if ${COMPONENT:Mglut} != "" @${REINPLACE_CMD} -e 's|[$$](INSTALL_LIB_DIR)/pkgconfig|${PREFIX}/libdata/pkgconfig|' \ ${WRKSRC}/src/glut/glx/Makefile Added: head/graphics/libGL/files/extra-configure ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/graphics/libGL/files/extra-configure Mon Jul 30 04:36:31 2012 (r301701) @@ -0,0 +1,42 @@ +--- configure.orig 2011-11-17 19:46:34.000000000 +0000 ++++ configure 2012-06-28 12:53:09.000000000 +0000 +@@ -7817,10 +7817,35 @@ + DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" + fi + +- if test "x$DRI_DIRS" = "xyes"; then +- DRI_DIRS="i810 i915 i965 mach64 mga nouveau r128 r200 r300 r600 \ +- radeon tdfx unichrome savage sis swrast" +- fi ++ case "$host_cpu" in ++ x86_64) ++ # i810 is missing because there is no x86-64 system where it ++ # could *ever* be used. ++ if test "x$DRI_DIRS" = "xyes"; then ++ DRI_DIRS="i915 i965 mach64 mga nouveau r128 r200 r300 r600 \ ++ radeon savage tdfx unichrome sis swrast" ++ fi ++ ;; ++ i*86) ++ if test "x$DRI_DIRS" = "xyes"; then ++ DRI_DIRS="i810 i915 i965 mach64 mga nouveau r128 r200 r300 \ ++ r600 radeon savage tdfx unichrome sis swrast" ++ fi ++ ;; ++ powerpc*) ++ # Build only the drivers for cards that exist on PowerPC. ++ # At some point MGA will be added, but not yet. ++ if test "x$DRI_DIRS" = "xyes"; then ++ DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast" ++ fi ++ ;; ++ sparc*) ++ # Build only the drivers for cards that exist on SPARC. ++ if test "x$DRI_DIRS" = "xyes"; then ++ DRI_DIRS="mach64 r128 r200 r300 r600 radeon swrast" ++ fi ++ ;; ++ esac + ;; + gnu*) + DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" Added: head/graphics/libGL/files/extra-configure-old ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/graphics/libGL/files/extra-configure-old Mon Jul 30 04:36:31 2012 (r301701) @@ -0,0 +1,43 @@ +--- configure.orig 2009-12-22 03:31:30.000000000 +0100 ++++ configure 2012-06-27 19:49:26.000000000 +0200 +@@ -6946,12 +6946,35 @@ + CXXFLAGS="$CXXFLAGS -ansi -pedantic" + fi + +- # ffb and gamma are missing because they have not been converted +- # to use the new interface. +- if test "x$DRI_DIRS" = "xyes"; then +- DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \ ++ case "$host_cpu" in ++ x86_64) ++ # i810 is missing because there is no x86-64 system where it ++ # could *ever* be used. ++ if test "x$DRI_DIRS" = "xyes"; then ++ DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \ + unichrome savage sis swrast" +- fi ++ fi ++ ;; ++ i*86) ++ if test "x$DRI_DIRS" = "xyes"; then ++ DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \ ++ unichrome savage sis swrast" ++ fi ++ ;; ++ powerpc*) ++ # Build only the drivers for cards that exist on PowerPC. ++ # At some point MGA will be added, but not yet. ++ if test "x$DRI_DIRS" = "xyes"; then ++ DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast" ++ fi ++ ;; ++ sparc*) ++ # Build only the drivers for cards that exist on SPARC. ++ if test "x$DRI_DIRS" = "xyes"; then ++ DRI_DIRS="mach64 r128 r200 r300 r600 radeon swrast" ++ fi ++ ;; ++ esac + ;; + gnu*) + DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" Added: head/graphics/libGL/files/extra-mach64_context.h-old ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/graphics/libGL/files/extra-mach64_context.h-old Mon Jul 30 04:36:31 2012 (r301701) @@ -0,0 +1,20 @@ +--- src/mesa/drivers/dri/mach64/mach64_context.h.orig 2012-06-27 19:59:32.000000000 +0200 ++++ src/mesa/drivers/dri/mach64/mach64_context.h 2012-06-27 20:08:30.000000000 +0200 +@@ -294,11 +294,14 @@ + #define LE32_OUT( x, y ) do { *(GLuint *)(x) = (y); } while (0) + #define LE32_OUT_FLOAT( x, y ) do { *(GLfloat *)(x) = (y); } while (0) + #else +-#ifndef __OpenBSD__ +-#include <byteswap.h> +-#else ++#if defined(__OpenBSD__) + #include <machine/endian.h> + #define bswap_32 bswap32 ++#elif defined(__FreeBSD__) ++#include <sys/endian.h> ++#define bswap_32 bswap32 ++#else ++#include <byteswap.h> + #endif + + #define LE32_IN( x ) bswap_32( *(GLuint *)(x) ) Added: head/graphics/libGL/files/extra-src__gallium__include__pipe__p_config.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/graphics/libGL/files/extra-src__gallium__include__pipe__p_config.h Mon Jul 30 04:36:31 2012 (r301701) @@ -0,0 +1,25 @@ +--- src/gallium/include/pipe/p_config.h.orig 2011-10-15 02:43:58.000000000 +0200 ++++ src/gallium/include/pipe/p_config.h 2012-06-28 21:27:06.000000000 +0200 +@@ -106,6 +106,13 @@ + #endif + #endif + ++#if defined(__sparc__) || defined(__sparc64__) ++#define PIPE_ARCH_SPARC ++#if defined(__sparc64__) ++#define PIPE_ARCH_SPARC_64 ++#endif ++#endif ++ + + /* + * Endian detection. +@@ -133,7 +140,7 @@ + + #if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64) + #define PIPE_ARCH_LITTLE_ENDIAN +-#elif defined(PIPE_ARCH_PPC) || defined(PIPE_ARCH_PPC_64) ++#elif defined(PIPE_ARCH_PPC) || defined(PIPE_ARCH_PPC_64) || defined(PIPE_ARCH_SPARC) || defined(PIPE_ARCH_SPARC_64) + #define PIPE_ARCH_BIG_ENDIAN + #endif + Added: head/graphics/libGL/files/extra-src__mesa__drivers__dri__radeon__radeon_span.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/graphics/libGL/files/extra-src__mesa__drivers__dri__radeon__radeon_span.c Mon Jul 30 04:36:31 2012 (r301701) @@ -0,0 +1,15 @@ +--- src/mesa/drivers/dri/radeon/radeon_span.c.orig 2011-07-09 03:37:10.000000000 +0200 ++++ src/mesa/drivers/dri/radeon/radeon_span.c 2012-06-28 21:44:07.000000000 +0200 +@@ -55,7 +55,11 @@ + #include <byteswap.h> + #define CPU_TO_LE16( x ) bswap_16( x ) + #define LE16_TO_CPU( x ) bswap_16( x ) +-#endif /* __linux__ */ ++#elif defined(__FreeBSD__) ++#include <sys/endian.h> ++#define CPU_TO_LE16( x ) bswap16( x ) ++#define LE16_TO_CPU( x ) bswap16( x ) ++#endif + #else + #define CPU_TO_LE16( x ) ( x ) + #define LE16_TO_CPU( x ) ( x ) Modified: head/graphics/libdrm/pkg-plist ============================================================================== --- head/graphics/libdrm/pkg-plist Mon Jul 30 01:13:11 2012 (r301700) +++ head/graphics/libdrm/pkg-plist Mon Jul 30 04:36:31 2012 (r301701) @@ -18,21 +18,21 @@ %%NEW%%include/libdrm/drm_sarea.h %%NEW%%include/libdrm/i915_drm.h %%NEW%%%%X86%%include/libdrm/intel_bufmgr.h -%%NEW%%include/libdrm/intel_debug.h +%%NEW%%%%X86%%include/libdrm/intel_debug.h %%NEW%%include/libdrm/mach64_drm.h %%NEW%%include/libdrm/mga_drm.h %%NEW%%include/libdrm/nouveau_drm.h %%NEW%%include/libdrm/nouveau_drmif.h %%NEW%%include/libdrm/r128_drm.h -%%NEW%%include/libdrm/r600_pci_ids.h -%%NEW%%include/libdrm/radeon_bo.h -%%NEW%%include/libdrm/radeon_bo_gem.h -%%NEW%%include/libdrm/radeon_bo_int.h -%%NEW%%include/libdrm/radeon_cs.h -%%NEW%%include/libdrm/radeon_cs_gem.h -%%NEW%%include/libdrm/radeon_cs_int.h +%%NEW%%%%X86%%include/libdrm/r600_pci_ids.h +%%NEW%%%%X86%%include/libdrm/radeon_bo.h +%%NEW%%%%X86%%include/libdrm/radeon_bo_gem.h +%%NEW%%%%X86%%include/libdrm/radeon_bo_int.h +%%NEW%%%%X86%%include/libdrm/radeon_cs.h +%%NEW%%%%X86%%include/libdrm/radeon_cs_gem.h +%%NEW%%%%X86%%include/libdrm/radeon_cs_int.h %%NEW%%include/libdrm/radeon_drm.h -%%NEW%%include/libdrm/radeon_surface.h +%%NEW%%%%X86%%include/libdrm/radeon_surface.h %%NEW%%include/libdrm/savage_drm.h %%NEW%%include/libdrm/sis_drm.h %%NEW%%include/libdrm/via_drm.h @@ -59,16 +59,16 @@ lib/libdrm.so.2 lib/libdrm_nouveau.la lib/libdrm_nouveau.so lib/libdrm_nouveau.so.1 -%%NEW%%lib/libdrm_radeon.la -%%NEW%%lib/libdrm_radeon.so -%%NEW%%lib/libdrm_radeon.so.1 +%%NEW%%%%X86%%lib/libdrm_radeon.la +%%NEW%%%%X86%%lib/libdrm_radeon.so +%%NEW%%%%X86%%lib/libdrm_radeon.so.1 %%NEW%%%%KMS%%lib/libkms.la %%NEW%%%%KMS%%lib/libkms.so %%NEW%%%%KMS%%lib/libkms.so.1 libdata/pkgconfig/libdrm.pc %%X86%%libdata/pkgconfig/libdrm_intel.pc libdata/pkgconfig/libdrm_nouveau.pc -%%NEW%%libdata/pkgconfig/libdrm_radeon.pc +%%NEW%%%%X86%%libdata/pkgconfig/libdrm_radeon.pc %%NEW%%%%KMS%%libdata/pkgconfig/libkms.pc @dirrm include/nouveau %%NEW%%%%KMS%%@dirrm include/libkms _______________________________________________ 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"