BisectingMesa
How to bisect mesa
Prerequisites
Pull in packages needed for building mesa
sudo apt-get build-dep mesa sudo apt-get install libx11-dev libxt-dev libxmu-dev libxi-dev
Copy the mesa git repository
cd git clone git://anongit.freedesktop.org/git/mesa/mesa cd mesa/
That's like a 30MB download for you...
Picking the good and the bad
Example: It worked in 7.6.0~git20090817.7c422387-0ubuntu8 (good version) but not in 7.6.0-1ubuntu1 (bad version).
As can be seen in its package version, the good version is identified by commit 7c422387. The 7.6.0 release can be identified with the "mesa_7_6" git tag (or with its corresponding commit 86cd188f).
Use "git log", "git show COMMIT" etc to identify commits, or browse them on http://cgit.freedesktop.org/mesa/mesa/
Verify the "bad" build
We will first test the build with the "bad" version.
git checkout mesa_7_6 make clean ./autogen.sh ./configure --prefix=/usr --mandir=\${prefix}/share/man \ --infodir=\${prefix}/share/info --sysconfdir=/etc \ --localstatedir=/var --build=i486-linux-gnu --disable-gallium --with-driver=dri \ --with-dri-drivers="r200 r300 radeon" --with-demos=xdemos --libdir=/usr/lib/glx \ --with-dri-driverdir=/usr/lib/dri --enable-glx-tls --enable-driglx-direct --disable-egl \ --disable-glu --disable-glut --disable-glw CFLAGS="-Wall -g -O2" make
Now verify that the build process worked and that you can reproduce the bug, before starting the bisecting.
LD_LIBRARY_PATH="~/mesa/glx" LIBGL_DRIVERS_PATH="~/mesa/src/mesa/drivers/dri/radeon" your-test-program
- Note 1: some of the configure options are probably not needed
- Note 2: modify the "--with-dri-drivers" list if needed
- Note 3: for debugging the -O2 flag is usually omitted to help gdb
Start bisecting
git bisect start git bisect bad mesa_7_6 git bisect good 7c422387
Now git will roll back to a place in the middle between these two commits, and you will have to test it and tell git how it worked.
Build and test the current commit
make
If building a version fails, you might have to rerun the "make clean", autogen and configure commands above.
You can test this version with your test program:
LD_LIBRARY_PATH="~/mesa/glx" LIBGL_DRIVERS_PATH="~/mesa/src/mesa/drivers/dri/radeon" your-test-program
If the bug was present here tell git:
git bisect bad
otherwise tell git:
git bisect good
Accordingly, git will choose another commit. Go back to "make" and repeat this section until git has identified the single commit that introduced the issue.
References
X/BisectingMesa (last edited 2009-12-02 17:49:25 by 80-219-115-70)