X-Git-Url: https://git.sesse.net/?p=rdpsrv;a=blobdiff_plain;f=Xserver%2FINSTALL.TXT;fp=Xserver%2FINSTALL.TXT;h=786c88dc29e822277342a4bb0bd8e66071857915;hp=0000000000000000000000000000000000000000;hb=b6e6afccf37f4ad0515ef2a698f714fdf1bf23b3;hpb=e3340a110a3b01756b8e67531395a33b40a17d37 diff --git a/Xserver/INSTALL.TXT b/Xserver/INSTALL.TXT new file mode 100644 index 0000000..786c88d --- /dev/null +++ b/Xserver/INSTALL.TXT @@ -0,0 +1,749 @@ + + + + + + + + + + Building and Installing the X Window System + + + + + + + + + Stephen Gildea + + X Consortium + + + + + + + March 5, 1996 + + Updated For Release 6.3 + + + + + + + + + + +Copyright c 1995, 1996 X Consortium + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, dis- +tribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the fol- +lowing conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- +ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABIL- +ITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. + +Except as contained in this notice, the name of the X Consortium shall +not be used in advertising or otherwise to promote the sale, use or +other dealings in this Software without prior written authorization from +the X Consortium. + +X Window System is a trademark of X Consortium, Inc. + + +1. Easy Build Instructions + +This quick summary is no substitute for reading the full build instruc- +tions later in this document. + +Edit xc/config/cf/site.def for local preferences. If you want to build +with gcc uncomment the HasGcc2 line. If you want to install somewhere +other than /usr/X11R6.3, change ProjectRoot. (Do not use DESTDIR.) + +If any fixes have been released by the X Consortium, stop here and fol- +low the instructions at the top of each patch, but don't do any of the +make commands suggested in the patches. Then continue here. + +Check the appropriate vendor-specific .cf file in xc/config/cf/ to make +sure that OSMajorVersion and OSMinorVersion are set correctly for your +system. Override them in site.def if necessary. + +See if there is a BootstrapCFlags mentioned in the comments in the +vendor-specific .cf file. If there isn't one, cd to the xc directory +and type: + + % make World >& world.log + + +If there is a BootstrapCFlags, take its value and type: + + % make World BOOTSTRAPCFLAGS="value" >& world.log + + +Do not call the output file "make.log" when doing "make World". After a +successful build, you can install with: + + % make install >& install.log + + +You can install manual pages with: + + % make install.man >& man.log + + +While the system is building (or if things fail), read the rest of these +installation instructions. + + + +2. Building X + + +This document gives detailed instructions for building Release 6: get- +ting it off the distribution medium, configuring, compiling, installing, +running, and updating. + +Release Notes are in xc/RELNOTES.* (various formats) in the distribu- +tion. + +More recent information about newly-discovered problems may be found in +the Frequently Asked Questions posting appearing monthly on the +comp.windows.x newsgroup and xpert mailing list. It is also available +via anonymous FTP on ftp.x.org in the file contrib/faqs/FAQ.Z, or on +your local X mirror site. + + +2.1. Preparing the Site + + +If you are unpacking tar files, you will need about 130 Mb to hold the +xc/ part. To install requires 30-50 Mb assuming you have shared +libraries (80-100 Mb without). You will need an equivalent amount of +extra space to build, since you also need room for all the object files. + +Distributed as tar files, Release 6.3 core is divided into parts as fol- +lows: + + + xc-1.tar contains everything in xc/ that isn't in the other tar files + xc-2.tar contains xc/fonts, xc/doc/specs, xc/util + xc-3.tar contains xc/doc/hardcopy + + +If you define BuildFonts to NO, you only need to unpack xc-1.tar to +build. If you build fonts, then you will also need xc-2.tar to build. + + +2.2. Unpacking the Distribution + + +The distribution normally comes as multiple tar files, either on tape or +across a network, or as a CD-ROM. + + +2.2.1. Unpacking a Compressed FTP Distribution + + +If you have obtained compressed tar files over the network, create a +directory to hold the sources and cd into it: + + mkdir sourcedir + cd sourcedir + +Then for each tar file xc-*.tar.Z, execute this: + + zcat ftp-dir/xc-N.tar.Z | tar xf - + + + +2.2.2. Unpacking a gzipped FTP Distribution + + +If you have obtained gzipped tar files over the network, create a direc- +tory to hold the sources and cd into it: + + mkdir sourcedir + cd sourcedir + +Then for each tar file xc-*.tar.gz, execute this: + + gunzip -c ftp-dir/xc-N.tar.gz | tar xf - + + + +2.2.3. Unpacking a Split Compressed FTP Distribution + + +If you have obtained compressed and split tar files over the network, +create a directory to hold the sources: + + mkdir sourcedir + +Then for each directory xc-*: + + cd ftp-dir/xc-N + cat xc-N.?? | uncompress | (cd sourcedir; tar xf -) + + + +2.2.4. Unpacking the Tape Distribution + + +If you have obtained a tape, create a directory to hold the sources and +untar everything into that directory: + + mkdir sourcedir + cd sourcedir + tar xf tape-device + + + +2.2.5. Using the CD-ROM + + +If you have obtained a CD-ROM, you don't have to do anything to unpack +it. However, you will have to create a symbolic link tree to build X. +See the next section. + +To mount the CD-ROM, see the mount(8) manual page on your system or the +liner notes that came with the CD-ROM. Some systems, e.g., Solaris 2, +can automatically mount the CD-ROM for you. + + +2.3. Apply Patches + + +If there are fixes released that are more recent than your distribution, +apply them now. Follow the instructions at the top of each patch, but +don't do any make commands. See the section "Public Patches" later in +this document. Then continue here. + + +2.4. Symbolic Link Trees + + +If you expect to build the distribution on more than one machine using a +shared source tree, or you are building from CD-ROM, or you just want to +keep the source tree pure, you may want to use the program +xc/config/util/lndir.c to create a symbolic link tree on each build +machine. The links may use an additional 10 megabytes, but it is +cheaper than having multiple copies of the source tree. + +It may be tricky to compile lndir before the distribution is built. If +you have a copy from a previous release, use that. Makefile.ini can be +used for building lndir the first time. You may have to specify +OSFLAGS=-Dsomething to get it to compile. What you would pass as +BOOTSTRAPCFLAGS might work. The command line looks something like this: + + make -f Makefile.ini OSFLAGS=-Dflag + + +To use a symbolic link tree, create a directory for the build, cd to it, +and type this: + + lndir sourcedir + + +where sourcedir is the pathname of the directory where you stored the +sources. All of the build instructions given below should then be done +in the build directory on each machine, rather than in the source direc- +tory. + +xc/config/util/mkshadow/ contains mkshadow, an alternative program to +lndir. + + +2.5. Configuration Parameters + + +Build information for each source directory is in files called +Imakefile. An Imakefile, along with local configuration information in +xc/config/cf/, is used by the program imake to generate a Makefile. + +Most of the configuration work prior to building the release is to set +parameters so that imake will generate correct files. Most of those +parameters are set in xc/config/cf/site.def. You will also need to +check the appropriate vendor-specific .cf file in xc/config/cf/ to make +sure that OSMajorVersion, OSMinorVersion, and OsTeenyVersion are set +correctly for your system. Override them in site.def if necessary. + +The site.def file has two parts, one protected with "#ifdef BeforeVen- +dorCF" and one with "#ifdef AfterVendorCF". The file is actually pro- +cessed twice, once before the .cf file and once after. About the only +thing you need to set in the "before" section is HasGcc2; just about +everything else can be set in the "after" section. + +The sample site.def also has commented out support to include another +file, host.def. This scheme may be useful if you want to set most +parameters site-wide, but some parameters vary from machine to machine. +If you use a symbolic link tree, you can share site.def across all +machines, and give each machine its own copy of host.def. + +The config parameters are listed in xc/config/cf/README, but here are +some of the more common parameters that you may wish to set in site.def. + +ProjectRoot + The destination where X will be installed. This variable needs to + be set before you build, as some programs that read files at run- + time have the installation directory compiled in to them. Assuming + you have set the variable to some value /path, files will be + installed into /path/bin, /path/include/X11, /path/lib, and + /path/man. + +HasGccSet to YES to build with gcc version 1. + +HasGcc2 + Set to YES to build with gcc version 2. Both this option and + HasGcc look for a compiler named gcc, but HasGcc2 will cause the + build to use more features of gcc 2, such as the ability to compile + shared libraries. + +BuildXInputExt + Set to YES to build the X Input Extension. This extension requires + device-dependent support in the X server, which exists only in Xhp + in our implementation. + +BuildPexExt + Set to NO to not build the PEX server extension and fonts. + +DefaultUsrBin + This is a directory where programs will be found even if PATH is + not set in the environment. It is independent of ProjectRoot and + defaults to /usr/bin. It is used, for example, when connecting + from a remote system via rsh. The rstart program installs its + server in this directory. + +InstallServerSetUID + Some systems require the X server to run as root to access the dev- + ices it needs. If you are on such a system and will not be using + xdm, you can set this variable to YES to install the X server + setuid to root. Note that the X server has not been analyzed by + the X Consortium for security in such an installation; talk to your + system manager before setting this variable. + +InstallXdmConfig + By default set to NO, which suppresses installing xdm config files + over existing ones. Leave it set to NO if your site has customized + the files in /usr/X11R6.3/lib/X11/xdm, as many sites do. If you + don't install the new files, merge any changes present in the new + files. + +MotifBC + Causes Xlib and Xt to work around some bugs in older versions of + Motif. Set to YES only if you will be linking with Motif version + 1.1.1, 1.1.2, or 1.1.3. + +GetValuesBC + Setting this variable to YES allows illegal XtGetValues requests + with NULL ArgVal to usually succeed, as R5 did. Some applications + erroneously rely on this behavior. Support for this will be + removed in a future release. + +The following vendor-specific .cf files are in the release but have not +been tested recently and hence probably need changes to work: +apollo.cf, bsd.cf, convex.cf, DGUX.cf, luna.cf, macII.cf, Mips.cf, +moto.cf, Oki.cf, pegasus.cf, x386.cf. Amoeba.cf is known to require +additional patches. + +The file xc/lib/Xdmcp/Wraphelp.c, for XDM-AUTHORIZATION-1, is not +included in this release. + + +2.6. System Build Notes + + +This section contains hints on building X with specific compilers and +operating systems. + +If the build isn't finding things right, make sure you are using a com- +piler for your operating system. For example, a pre-compiled gcc for a +different OS will not have right symbols defined, so imake will not work +correctly. + + +2.6.1. gcc + +gcc version 2 is in regular use at the X Consortium on Sparc platforms. +Set the variable HasGcc2. X will not compile on some systems with gcc +version 2.5, 2.5.1, or 2.5.2 because of an incorrect declaration of mem- +move() in a gcc include file. + +If you are using a gcc version older than 2.7 on Solaris x86, you need +to specify BOOTSTRAPCFLAGS="-Dsun" in the "make World" command. + + +2.6.2. Other GNU tools + +Use of the GNU assembler, as, or linker, ld, is not supported. GNU make +is not supported. + + +2.6.3. SparcWorks 2.0 + + +If you have a non-threaded program and want to debug it with the old +SparcWorks 2.0 dbx, you will need to use the thread stubs library in +xc/util/misc/thr_stubs.c. Compile it as follows: + + cc -c thr_stubs.c + ar cq libthr_stubs.a thr_stubs.o + ranlib libthr_stubs.a + +Install libthr_stubs.a in the same directory with your X libraries +(e.g., /usr/X11R6.3/lib/libthr_stubs.a). Add the following line to +site.def: + + #define ExtraLibraries -lsocket -lnsl $(CDEBUGFLAGS:-g=-lthr_stubs) + +This example uses a make macro substitution; not all make implementa- +tions support this feature. + + +2.6.4. CenterLine C under Solaris 2 + + +If you are using the CenterLine C compiler to compile the distribution +under Solaris 2, place the following line in your site.def: + + #define HasCenterLineC YES + +If clcc is not in your default search path, add this line to site.def: + + #define CcCmd /path/to/your/clcc + + +If you are using CodeCenter 4.0.4 or earlier, the following files +trigger bugs in the clcc optimizer: + + xc/programs/Xserver/cfb16/cfbgetsp.c + xc/programs/Xserver/cfb16/cfbfillsp.c + xc/programs/Xserver/cfb/cfbgetsp.c + + +Thus to build the server, you will have to compile these files by hand +with the -g flag: + + % cd xc/programs/Xserver/cfb16 + % make CDEBUGFLAGS="-g" cfbgetsp.o cfbfillsp.o + % cd ../cfb + % make CDEBUGFLAGS="-g" cfbgetsp.o + +This optimizer bug appears to be fixed in CodeCenter 4.0.6. + + +2.6.5. IBM AIX 4.1.4 + + +On AIX 4.1.4, the file lib/font/Type1/objects.c must be compiled without +optimization (-O) else the X server will exit when Type 1 fonts are +used. + + +2.6.6. SunOS 4 + + +SunOS 4.0 and earlier need BOOTSTRAPCFLAGS=-DNOSTDHDRS because they do +not have unistd.h nor stdlib.h. Do not supply a BOOTSTRAPCFLAGS when +building any SunOS 4.1 version. + + +2.6.7. Microsoft Windows NT + + +All of the base libraries are supported, including multi-threading in +Xlib and Xt, but some of the more complicated applications, specifically +xterm and xdm, are not supported. + +There are also some other rough edges in the implementation, such as +lack of support for non-socket file descriptors as Xt alternate inputs +and not using the registry for configurable parameters like the system +filenames and search paths. + +The Xnest server has been made to run on NT. It requires a real X +server for output still. + + +2.6.8. Omron Luna + + +The Omron Luna platform is no longer supported. The Luna version of the +make program doesn't define the standard macro MAKE, so you must run it +as "make MAKE=make" at top level, e.g., "make MAKE=make World". + + +2.7. The Build + + +On NT, type + + nmake World.Win32 > world.log + +On other systems, find the BootstrapCFlags line, if any, in the vendor- +specific .cf file. If there isn't one, type + + % make World >& world.log + +otherwise type + + % make World BOOTSTRAPCFLAGS="value" >& world.log + + +You can call the output file something other than "world.log", but do +not call it "make.log" because files with this name are automatically +deleted during the "cleaning" stage of the build. + +Because the build can take several hours to complete, you will probably +want to run it in the background and keep a watch on the output. For +example: + + % make World >& world.log & + % tail -f world.log + + +If something goes wrong, the easiest thing is to just start over (typing +"make World" again) once you have corrected the problem. + + +2.8. Installing X + + +If everything is built successfully, you can install the software by +typing the following as root: + + % make install >& install.log + + +Again, you might want to run this in the background and use tail to +watch the progress. + +You can install the manual pages by typing the following as root: + + % make install.man >& man.log + + + +2.8.1. System Installation Notes + + +This section contains hints on installing and using X with specific com- +pilers and operating systems. + + +2.8.1.1. The X Server on AIX 4 + + +For IBM's AIX 4, you need to make sure the LFT device is associated with +the correct graphics adapter. It's a one-time setup that does not hap- +pen automatically, even if there's only one graphics adapter in the sys- +tem. To configure the LFT device properly, become root and start SMIT. +Go to the "Devices" category, choose "LFT", then "Displays", then "Move +the LFT to Another Display". + +Select "Both" for when the change should take effect, then select the +display adapter where you want to run the X server. Confirm the changes +and exit SMIT; from now on, you should be able to run the server just +fine. + +To run Xibm from xdm, you must provide the "-force" flag on the server +command line in the Xservers file. + + +2.9. Shared Libraries + + +The version number of some of the the shared libraries has been changed. +On SunOS 4, which supports minor version numbers for shared libraries, +programs linked with the R6 libraries will use the new libraries with no +special action required. On other platforms you have the following +choices: + +1. Keep the old versions of the libraries around. + +2. Relink all applications with the new libraries. + +3. Create a link from the old name to the new name. + + For example, to have programs that were linked against + libX11.so.6.0 use libX11.so.6.3, make this link: + + ln -s libX11.so.6.3 libX11.so.6.0 + + + +2.10. Setting Up xterm + + +If your /etc/termcap and /usr/lib/terminfo databases do not have correct +entries for xterm, use the sample entries provided in the directory +xc/programs/xterm/. System V users may need to compile and install the +terminfo entry with the tic utility. + +Since each xterm will need a separate pseudoterminal, you need a reason- +able number of them for normal execution. You probably will want at +least 32 on a small, multiuser system. On most systems, each pty has +two devices, a master and a slave, which are usually named +/dev/tty[pqrstu][0-f] and /dev/pty[pqrstu][0-f]. If you don't have at +least the "p" and "q" sets configured (try typing "ls /dev/?ty??"), you +should have your system administrator add them. This is commonly done +by running the MAKEDEV script in the /dev directory with appropriate ar- +guments. + + +2.11. Starting Servers at System Boot + + +The xfs and xdm programs are designed to be run automatically at system +startup. Please read the manual pages for details on setting up confi- +guration files; reasonable sample files are in xc/programs/xdm/config/ +and xc/programs/xfs/. + + +2.11.1. On BSD-based systems using /etc/rc + + +If your system uses an /etc/rc file at boot time, you can usually enable +these programs by placing the following at or near the end of the file: + + if [ -f /usr/X11R6.3/bin/xfs ]; then + /usr/X11R6.3/bin/xfs & echo -n ' xfs' + fi + + if [ -f /usr/X11R6.3/bin/xdm ]; then + /usr/X11R6.3/bin/xdm; echo -n ' xdm' + fi + + +Since xfs can serve fonts over the network, you do not need to run a +font server on every machine with an X display. You should start xfs +before xdm, since xdm may start an X server which is a client of the +font server. + +The examples here use /usr/X11R6.3/bin, but if you have installed into a +different directory by setting (or unsetting) ProjectRoot then you need +to substitute the correct directory. + +If you are unsure about how system boot works, or if your system does +not use /etc/rc, consult your system administrator for help. + + +2.11.2. On SystemV-based systems + + +There are two ways you can get On systems with a /etc/inittab file, you +can edit this file to add the lines + + xfs:3:once:/usr/X11R6.3/bin/xfs + xdm:3:once:/usr/X11R6.3/bin/xdm + + +On some systems, you can edit a file in /etc/init.d to run the X Consor- +tium xdm instead of the vendor's product xdm. On Sony this file is +/etc/init.d/consxdm. On IRIX edit /etc/init.d/xdm. + + +2.12. Using OPEN LOOK applications + + +You can use the X11R6 Xsun server with OPEN LOOK applications, but you +must pass the -swapLkeys flag to the server on startup, or the OPEN LOOK +Undo, Copy, Paste, Find, and Cut keys may not work correctly. For exam- +ple, to run Sun's OpenWindows 3.3 desktop environment with an X11R6 +server, use the command: + + % openwin -server /usr/X11R6.3/bin/Xsun -swapLkeys + + +The keysyms reported by keys on the numeric keypad have also changed +since X11R5; if you find that OpenWindows applications do not respond to +keypad keys and cursor control keys when using the R6 server, you can +remap the keypad to generate R5 style keysyms using the following xmod- +map commands: + + keysym Pause = F21 + keysym Print = F22 + keysym Break = F23 + keysym KP_Equal = F24 + keysym KP_Divide = F25 + keysym KP_Multiply = F26 + keysym KP_Home = F27 + keysym KP_Up = Up + keysym KP_Prior = F29 + keysym KP_Left = Left + keycode 100 = F31 + keysym KP_Right = Right + keysym KP_End = F33 + keysym KP_Down = Down + keysym KP_Next = F35 + keysym KP_Insert = Insert + keysym KP_Delete = Delete + + + +2.13. Rebuilding after Patches + + +You shouldn't need this right away, but eventually you are probably go- +ing to make changes to the sources, for example by applying any public +patches that may be released. + +Each patch comes with explicit instructions at the top of it saying what +to do. Thus the procedure here is only an overview of the types of com- +mands that might be necessary to rebuild X after changing it. + +If you are building from CD-ROM, apply the patches to the symbolic link +tree. The links to changed files will be replaced with local files con- +taining the new contents. + +If only source files are changed, you should be able to rebuild just by +going to the xc directory in your build tree and typing: + + % make >& make.log + + +If configuration files are changed, the safest thing to do is type: + + % make Everything >& every.log + + +"Everything" is similar to "World" in that it rebuilds every Makefile, +but unlike "World" it does not delete the existing objects, libraries, +and executables, and only rebuilds what is out of date. + + +2.14. Formatting the Documentation + + +The PostScript files in xc/doc/hardcopy can be generated from the +sources in xc/doc/specs. Most of the documentation is in troff using +the -ms macros. The easiest way to format it is to use the Imakefiles +provided. + +Set the name of your local troff program by setting the variable +TroffCmd in xc/config/cf/site.def. Then build the Makefiles: + + cd xc/doc + make SUBDIRS=specs Makefiles + + +Finally, go to the directory you are interested in and type "make" +there. This command will generate .PS files. You can also generate +text files by specifying the document name with a .txt extension as a +make target, e.g., "make icccm.txt". + +