|
Index Previous Next |
Xvfb, (vfb stands for Virtual Frame Buffer) is an X server which can be
used to give an application a DISPLAY when one isn't available.
It's useful for rendering off-screen images in memory.
Read this article for more background.
Xvfb doesn't come with Solaris out-of-the-box and (to date) isn't available
on Sunfreeware as a package.
It's hard to compile, you need to build the entire X11 distribution.
This is hard, especially if you want to get it right so the generated Xvfb is
set-up for the rest of Sun's X11 distribution (located in /usr/openwin)
and don't have the Sun C compiler so you need to rely on gcc.
One major downside - it only seems to correctly support 8bpp, if you
specify a greater colour depth the red and blue seem to be swapped :-(
If you know how to fix this please email me.
Here's how to do it:
1) Download the X11R6.6 distribution from X.org
Fetch all the files in that directory and unpack them.
You'll get a directory structure starting "xc".
2) Patch the distribution as follows:
-----------------------------------------------------
2.1) Get the imake boot compilation to use gcc:
-----------------------------------------------------
*** xc.orig/config/imake/Makefile.ini Thu Aug 17 20:41:50 2000
--- xc/config/imake/Makefile.ini Mon Sep 9 10:14:50 2002
***************
*** 9,15 ****
#
BOOTSTRAPCFLAGS =
! CC = cc
CDEBUGFLAGS = -O
INCLUDES = -I../../include -I../../imports/x11/include/X11
CFLAGS = $(BOOTSTRAPCFLAGS) $(CDEBUGFLAGS) $(INCLUDES)
--- 9,15 ----
#
BOOTSTRAPCFLAGS =
! CC = gcc
CDEBUGFLAGS = -O
INCLUDES = -I../../include -I../../imports/x11/include/X11
CFLAGS = $(BOOTSTRAPCFLAGS) $(CDEBUGFLAGS) $(INCLUDES)
-----------------------------------------------------
2.2) Copy config/cf/site.sample to config/cf/site.def.
Tell it you want to use gcc, build Xvfb, and how it
should compile-in certain paths to its X11 directories.
Apply the following changes:
-----------------------------------------------------
*** xc.orig/config/cf/site.sample Thu Aug 17 20:41:48 2000
--- xc/config/cf/site.def Fri Sep 6 16:53:38 2002
***************
*** 50,67 ****
# endif
# endif
- /*
#ifndef HasGcc2
#define HasGcc2 YES
#endif
- */
#endif /* BeforeVendorCF */
#ifdef AfterVendorCF
! #define ProjectRoot /usr/X11R6.4
/* Only set HasXdmAuth to YES if you have a Wraphelp.c file. */
/* #define HasXdmAuth YES */
--- 50,70 ----
# endif
# endif
#ifndef HasGcc2
#define HasGcc2 YES
#endif
#endif /* BeforeVendorCF */
#ifdef AfterVendorCF
! #define ProjectRoot /usr/openwin
! #define ServerConfigDir /usr/openwin/server/etc
! #define XVirtualFramebufferServer YES
/* Only set HasXdmAuth to YES if you have a Wraphelp.c file. */
/* #define HasXdmAuth YES */
-----------------------------------------------------
2.3) There are some errors in the distribution sun.cf
file that need to be patched:
-----------------------------------------------------
*** xc.orig/config/cf/sun.cf Tue Dec 12 12:49:13 2000
--- xc/config/cf/sun.cf Fri Sep 6 15:51:12 2002
***************
*** 134,147 ****
#ifdef i386Architecture
# if OSMajorVersion > 4
# define ServerExtraDefines AllocateLocalDefines XFree86ServerDefines
! # define ServerOSDefines XFree86ServerOSDefines IncludeCG2HeaderDefine
# else
# define ServerExtraDefines AllocateLocalDefines
! # define ServerOSDefines -DDDXOSINIT IncludeCG2HeaderDefine
# endif
#else
# define ServerExtraDefines AllocateLocalDefines
! # define ServerOSDefines -DDDXOSINIT IncludeCG2HeaderDefine
# define HasPlugin YES
#endif
--- 134,147 ----
#ifdef i386Architecture
# if OSMajorVersion > 4
# define ServerExtraDefines AllocateLocalDefines XFree86ServerDefines
! # define ServerOSDefines XFree86ServerOSDefines $(IncludeCG2HeaderDefine)
# else
# define ServerExtraDefines AllocateLocalDefines
! # define ServerOSDefines -DDDXOSINIT $(IncludeCG2HeaderDefine)
# endif
#else
# define ServerExtraDefines AllocateLocalDefines
! # define ServerOSDefines -DDDXOSINIT $(IncludeCG2HeaderDefine)
# define HasPlugin YES
#endif
-----------------------------------------------------
2.4) Xi18nLib.conf should not assume that a Sparc
build will always use the Sun CC compiler:
(Openoffice developers please take note!)
-----------------------------------------------------
*** xc.orig/lib/X11/xlibi18n/Xi18nLib.conf Tue Dec 12 12:44:05 2000
--- xc/lib/X11/xlibi18n/Xi18nLib.conf Fri Sep 6 15:54:44 2002
***************
*** 27,35 ****
--- 27,37 ----
EXTRA_SHLIBLDFLAGS =
#endif
+ #ifndef HasGcc2
#ifdef SparcArchitecture
CFLAGS += -xregs=no%appl
#endif
+ #endif
all::
$(_NULLCMD_)
3) Now you can build. This takes about an hour on an a Netra X1
(Ultrasparc-IIe 500MHz, 1Gb RAM).
$ cd xc
$ make World >world.log 2>&1 &
$ tail -f world.log
4) The build should complete successfully ;-)
The binary you need is in programs/Xserver/Xvfb
The corresponding man page is in programs/Xserver/hw/vfb/Xvfb.man
Ed Randall, 9/9/2002
Usual disclaimers apply, YMMV but "it worked for me" :-)
| Index | |
| Previous : How do I connect to Homechoice 512k using FreeBSD? | |
| Next : How do I set configure SuSE 8.0 to work with Homechoice? |