Author: branden Date: 2004-04-11 19:40:32 -0500 (Sun, 11 Apr 2004) New Revision: 1233
Added: trunk/debian/patches/104_sparc_fix_GL_library.diff Modified: trunk/debian/changelog trunk/debian/local/xdm.options Log: Improve explanation of why #241539 is fixed. Modified: trunk/debian/changelog =================================================================== --- trunk/debian/changelog 2004-04-12 00:18:02 UTC (rev 1232) +++ trunk/debian/changelog 2004-04-12 00:40:32 UTC (rev 1233) @@ -137,13 +137,15 @@ directly. * Improve xfs package's maintainer scripts: + + Always start the daemon on package install (as opposed to upgrade). + (Closes: #241539) + Replace xfs "upgrade" flag file with two distinct ones, "install" and "daemon-not-stopped". Create install flag file when preinst script is invoked with "install" argument; remove in postinst, and in postrm when invoked with "abort-install" or "abort-upgrade" argument. Create "daemon-not-stopped" flag file in prerm script if the daemon is not stopped with invoke-rc.d; remove in postinst, and in postrm when invoked - with "abort-upgrade" argument. (Closes: #241539) + with "abort-upgrade" argument. + Duplicate the postinst's daemon logic in the postrm when invoked with the "abort-upgrade" argument; this way the daemon is restarted if it was stopped for upgrade, but the upgrade failed. Modified: trunk/debian/local/xdm.options =================================================================== --- trunk/debian/local/xdm.options 2004-04-12 00:18:02 UTC (rev 1232) +++ trunk/debian/local/xdm.options 2004-04-12 00:40:32 UTC (rev 1233) @@ -1,8 +1,9 @@ -# /etc/X11/xdm.options +# $Id$ # # configuration options for xdm # See xdm.options(5) for an explanation of the available options. no-ignore-nologin no-restart-on-upgrade +no-start-on-install use-sessreg Property changes on: trunk/debian/local/xdm.options ___________________________________________________________________ Name: svn:keywords + Id Added: trunk/debian/patches/104_sparc_fix_GL_library.diff =================================================================== --- trunk/debian/patches/104_sparc_fix_GL_library.diff 2004-04-12 00:18:02 UTC (rev 1232) +++ trunk/debian/patches/104_sparc_fix_GL_library.diff 2004-04-12 00:40:32 UTC (rev 1233) @@ -0,0 +1,135 @@ +$Id$ + +As XFree86 puts it: + + Fix sparc asm glapi initialisation in libGL when using indirect rendering + (GLX) (Bugzilla #923, Ferris McCormick). + +Also see Debian #241331. + +This was adapted from revision 1.22 of xc/lib/GL/glx/glxext.c in XFree86 +CVS. + +This patch by Ferris McCormick. + +--- xc/lib/GL/glx/glxext.c~ 2004-04-11 19:24:43.000000000 -0500 ++++ xc/lib/GL/glx/glxext.c 2004-04-11 19:27:35.000000000 -0500 +@@ -58,6 +58,37 @@ + void __glXDumpDrawBuffer(__GLXcontext *ctx); + #endif + ++#ifdef USE_SPARC_ASM ++/* ++ * This is where our dispatch table's bounds are. ++ * And the static mesa_init is taken directly from ++ * Mesa's 'sparc.c' initializer. ++ * ++ * We need something like this here, because this version ++ * of openGL/glx never initializes a Mesa context, and so ++ * the address of the dispatch table pointer never gets stuffed ++ * into the dispatch jump table otherwise. ++ * ++ * It matters only on SPARC, and only if you are using assembler ++ * code instead of C-code indirect dispatch. ++ * ++ * -- FEM, 04.xii.03 ++ */ ++extern unsigned int _mesa_sparc_glapi_begin; ++extern unsigned int _mesa_sparc_glapi_end; ++extern void __glapi_sparc_icache_flush(unsigned int *); ++static void _glx_mesa_init_sparc_glapi_relocs(void); ++static int _mesa_sparc_needs_init = 1; ++#define INIT_MESA_SPARC { \ ++ if(_mesa_sparc_needs_init) { \ ++ _glx_mesa_init_sparc_glapi_relocs(); \ ++ _mesa_sparc_needs_init = 0; \ ++ } \ ++} ++#else ++#define INIT_MESA_SPARC ++#endif ++ + /* + ** We setup some dummy structures here so that the API can be used + ** even if no context is current. +@@ -489,6 +520,7 @@ + } + #endif + ++ INIT_MESA_SPARC + /* The one and only long long lock */ + __glXLock(); + +@@ -603,6 +635,7 @@ + + if (gc->currentDpy == dpy) { + /* Use opcode from gc because its right */ ++ INIT_MESA_SPARC + return gc->majorOpcode; + } else { + /* +@@ -1029,3 +1062,64 @@ + } + } + #endif ++ ++/* ++ * Used only when we are sparc, using sparc assembler. ++ * ++ */ ++ ++static void ++_glx_mesa_init_sparc_glapi_relocs(void) ++{ ++#ifdef USE_SPARC_ASM ++ unsigned int *insn_ptr, *end_ptr; ++ unsigned long disp_addr; ++ ++ insn_ptr = &_mesa_sparc_glapi_begin; ++ end_ptr = &_mesa_sparc_glapi_end; ++ disp_addr = (unsigned long) &_glapi_Dispatch; ++ ++ /* ++ * Verbatim from Mesa sparc.c. It's needed because there doesn't ++ * seem to be a better way to do this: ++ * ++ * UNCONDITIONAL_JUMP ( (*_glapi_Dispatch) + entry_offset ) ++ * ++ * This code is patching in the ADDRESS of the pointer to the ++ * dispatch table. Hence, it must be called exactly once, because ++ * that address is not going to change. ++ * ++ * What it points to can change, but Mesa (and hence, we) assume ++ * that there is only one pointer. ++ * ++ */ ++ while (insn_ptr < end_ptr) { ++# if ( defined(__sparc_v9__) && ( !defined(__linux__) || defined(__linux_64__) ) ) ++/* ++ This code patches for 64-bit addresses. This had better ++ not happen for Sparc/Linux, no matter what architecture we ++ are building for. So, don't do this. ++ ++ The 'defined(__linux_64__)' is used here as a placeholder for ++ when we do do 64-bit usermode on sparc linux. ++ */ ++ insn_ptr[0] |= (disp_addr >> (32 + 10)); ++ insn_ptr[1] |= ((disp_addr & 0xffffffff) >> 10); ++ __glapi_sparc_icache_flush(&insn_ptr[0]); ++ insn_ptr[2] |= ((disp_addr >> 32) & ((1 << 10) - 1)); ++ insn_ptr[3] |= (disp_addr & ((1 << 10) - 1)); ++ __glapi_sparc_icache_flush(&insn_ptr[2]); ++ insn_ptr += 11; ++# else ++ insn_ptr[0] |= (disp_addr >> 10); ++ insn_ptr[1] |= (disp_addr & ((1 << 10) - 1)); ++ __glapi_sparc_icache_flush(&insn_ptr[0]); ++ insn_ptr += 5; ++# endif ++#else ++ /* ++ * Just no-op ++ */ ++#endif /* sparc ASM in use */ ++ } ++} Property changes on: trunk/debian/patches/104_sparc_fix_GL_library.diff ___________________________________________________________________ Name: svn:keywords + Id