Thursday, December 25, 2008

Xorg 7.4 and beyond

This is a doozy!

It is an xorg calculator.

It requires at least lynx, wget, and a working internet connection.

Ordinarily, it is an arduous task just to select an appropriate list of files and assemble them in an appropropriate build order to build xorg release 7.0 and later.

Countless hours have been spent puzzling over the bizarre filing system at xorg and studying both blfs and xorg build instructions. After endless tweaking, the xorg calculator might be ready for a test run. Granting that it is not yet in perfect form, its intended purpose is to build xorg 7.4 and, when it come out, xorg 7.5. There are nearly 1,000 lines of code thrown in a little bit at a time and I do not know for sure what is going to happen when I try a full test.

There are many peculiar buttons and switches that have been added, on the fly, and explaining everything is going to take some time and will probably be done in the coming months.

For the first test run I'll use the switch called "listonly". With the "listonly" switch, it will print out, in build order, all of the urls necessary to build the selected release of xorg.

sh xorg_calculator listonly | tee temp

By piping the output to a file with "| tee temp", the file temp (or whatever you call it) saves the ordered list of urls to build from. Examining this list reveals that a plan based on building the sections in order "util, proto, lib, data, app, font, xserver, driver" won't work smoothly because things might have to get mixed up a little and external programs might have to be added to do a reasonable build.

When the above command is executed, the first stage retrieves the available (7 series) releases from xorg and presents a menu for your choice of release.

Once you select a release, the second stage does numerous lookups to determine the urls of all the appropriate program versions. This stage may take a few minutes depending on the current load on the xorg server. The lookups probably take less than 5 minutes because not a lot of bandwidth is required.

Another switch called "verbose" can be used on the command line to produce output on stderr at long intervals. The "verbose" switch is not particularly useful but it was part of the tweaking process.

Once the lookups are completed, the third stage sorts the collected urls into build order and spits them out.

Another switch of possible interest is called "only". What the "only" switch does is to restrict the lookups to the xorg release you selected. The xorg team seems to like to omit from some releases, programs that they don't care to maintain. Also, some releases may be called "roll-up" releases and don't contain a full set of software. Without the "only" switch, the xorg calculator does a job of finding omitted files by finding them in previous releases.

For the second test run, I'll try the switch called "wget".

sh xorg_calculator wget

Again, the menu lets you pick the desired xorg release and starts downloading all the files needed for it. By my convention, being influenced by lfs, all files are saved under the directory called /sources. The files are saved to a sub-directory of /sources based on the selected release. For example: if xorg 7.4 is selected, all files would be downloaded to /sources/xorg7-7.4.

The third test run will try the switch called "scripts".

sh xorg_calculator scripts | tee temp

With the "scripts" switch, it will spit out code in a format I call "custom tools scripts" format. This format is useful for building with jhalfs.

A related switch is called "outfiles". The "outfiles" switch would write out a few hundred "custom tools" scripts for use with a jhalfs build. This "outfiles" switch will possibly be examined more in a future post, but it is not for now.

Without any switches, the xorg_calculator will download the files and spit out code in the "custom tools" format.

sh xorg_calculator | tee temp

I think that wget sends output to stderr so that the output captured to the file temp (or whatever you call it) only contains the code, although on the screen the code would be mixed with the wget output.

Now, there are two experimental scripts that can use the code in the temp file generated above to produce a build script that is more ordinary than jhalfs. They are called shoo and shoo_simple. I don't know where that name cam from but I'll use it for now. The script "shoo" would create logs of each xorg program built in addition to displaying all the output to the screen. The script "shoo_simple" would build all the same programs and would show all the same output on the screen, but would not record any log files. The log files generated by "shoo" would be like those generated by jhalfs in previous posts about package management and would provide useful capabilities.

Two more switches will be quickly mentioned. The switch called "prereq" will inlcude downloading and code for some of the prerequisites for xorg: pkg-config, libxml2, libxslt, expat, freetype, and fontconfig. You don't need this switch if you have previously built those.

sh xorg_calculator prereq | tee temp

Lastly, for now, I'll mention the switch called "floor_it". What the "floor_it" switch does is to substitue Mesa version 7.2 instead of Mesa 6.5.2. I do not know what benefits or pitfalls exist with Mesa 7.2, but I read that Ubuntu 8.10 used xorg 7.4 with Mesa 7.1 and Mesa 7.2 was dubbed a stable bug-fix release. Anyone not intending to play games or use desktop effects like compiz probably has no need for Mesa. I have not tested whether Mesa 7.2 will build using the code from blfs for building Mesa 6.5.2. Looking at Development BLFS (HTML) it appears that the build instructions may have to be tweaked more for Mesa 7.2.

sh xorg_calculator floor_it | tee temp

I might have left out XML::Parser and intltool which might be needed for xkeyboardconfig from the prerequisites. I also might have left out libpng which might be (probably is) needed for xcursorgen from the prerequisites. So, build them first and next year maybe I can patch it up.

At this point, I am going to leave any further explanations for future posts and summarize with a test run that I plan to try someday soon. Be forewarned that I only hope it does not blow up the system. If it blows up the system, I'll have to go back to the drawing board.

sh xorg_calculator prereq | tee temp
sh shoo temp | tee tryit
sh tryit

I better do a system backup before that "tryit" step.
There is little doubt that some pieces will break off on the first run (Maybe lots of pieces).

... On the first go, the experimental scripts shoo (original version) and shoo_simple (original version) broke a little, but I fixed them up in the versions above.

... Dec 26 ... On the second go, a full xorg 7.4 install, pieces were flying off everywhere. Somehow, I managed to maintain some control of the thing. I had 5 console screens going and I made good use of those logs to see where things went wrong. After a long day of search and rescue operations, I got xorg 7.4 up and running. First, the misadventures will need to be analyzed and then the xorg calculator can be revised accordingly, probably in a few days.

... Dec 28 ... On the third go, a full xorg 7.4 install, with the revised xorg_calculator and shoo, the install went smoothly from start to finish.
The differences between the xorg calculator (oiginal version) and the current one (above) may be seen in this xorg_calculator_fixes.patch.
The highlights of the revisions are:
- Build the utils: xorg-cf-files, imake, makedepend, gccmakedep, and lndir directly after the proto packages. One or two things needed one of those.
- xorg7.4 or higher needs to be built with MesaLib-7.2 (automatically chosen)
- Use some MesaLib-7.2 build instructions from blfs svn-20081228
- ldconfig after each package build (a few things needed that)
- Added pixman-0.12.0 (recommended in blfs svn-20081228 lib wget list) as the last lib package. I found no documentation saying that pixman was required, but several xorg7.4 packages wouldn't build without it.
- Noted that the xorg-server seemingly expected hal and dbus to be installed.
- override video/input drivers to install to $libdir/X11/modules instead of where they default to install $libdir/xorg/modules

sh xorg_calculator | tee temp
... picked [4] X11R7.4
sh shoo temp | tee tryit
sh tryit

Got "configure.*Error" in:
xphelloworld-1.0.1
xplsprinters-1.0.1
xprehashprinterlist-1.0.1
xf86-video-glide-1.0.1
Got "make.*Error" in:
xf86-video-cyrix-1.1.0
xf86-video-i810-1.6.5
xf86-video-imstt-1.1.0
xf86-video-via-0.2.2
xf86-video-xgixp-1.7.99.3
I think those are ones xorg does not care to maintain.

... Dec 29 ... I noticed 1 remaining file, protocol.txt, got installed in $libdir/xorg. Unpacking the xorg-server-1.5.1.tar.bz2 tarball and doing "./configure --help > HELP_ME", then examining HELP_ME, I see this:
--with-serverconfig-path=PATH
Directory where ancillary server config files are
installed (default: ${libdir}/xorg)
Maybe with --with-serverconfig-path=${libdir}/X11 it would not make the $libdir/xorg directory.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

Click blog title for the latest post