Hi,

Here are my plans to split the binary snapshot into a device-specific
and a common (device-independent) part. This was discussed briefly on
the last IRC meeting. I attached a patch to the snapshot scripts. ATM
it's only to illustrate the idea, it is completely untested.

After Ian's driinterface changes it turned out that libGLcore.a and
libglx.a need to be included in the snapshots. libGL and the core
modules don't need to be updated as frequently as the DDX, DRI and DRM
drivers since they are not directly related to direct hardware access,
rendering performance or the visual quality. Therefore they are going to
be in a separate snapshot. This keeps the size of the device-specific
snapshots reasonably small while more stuff can be included in the
device-independent part for people who want to test newer infrastructure
and eventually indirect accelerated rendering. First-time users should
install both snapshots.

How it works:

I added a new Meta-driver to the dripkg.sh script called "COMMON". If
the driver name is "COMMON" then dripkg.sh would package only libGL and
the XFree86 core modules. Otherwise it packs only the DDX and DRI
modules and the DRM sources. The install script detects which
subdirectories are present in the snapshot and uses that to determine
what is supposed to be installed/restored. This way it would be easy to
change the way the snapshots are split without having to update two
install scripts.

The only thing I'm not quite sure about is where the drm sources should
go. I suppose there are good arguments for it to be included in either
snapshot. It should however be in only one of them so that a user who
installs both snapshots doesn't install the DRM twice.

Comments?

Regards,
  Felix
? install.sh.diff
? newdrm.diff
? snapshot-split.diff
? test
Index: dripkg.sh
===================================================================
RCS file: /cvs/dri/snapshots/dripkg.sh,v
retrieving revision 1.7
diff -u -r1.7 dripkg.sh
--- a/dripkg.sh 9 Apr 2004 16:34:39 -0000       1.7
+++ b/dripkg.sh 15 Apr 2004 16:14:50 -0000
@@ -43,7 +43,8 @@
 
 # Package Variables
 PKG_DIR="dripkg"
-PKG_FULL=${FULL:-0}
+#PKG_FULL=${FULL:-0}
+PKG_FULL=1
 
 
 # Variables for selected driver
@@ -174,6 +175,16 @@
 SAVAGE_DRM="savage"
 SAVAGE_COMMAND=""
 
+# COMMON Meta-Driver Variables
+COMMON_NAME="common"
+COMMON_DESC="Libraries and modules common to all DRI drivers"
+COMMON_DDX_SUBDIR=""
+COMMON_DDX=""
+COMMON_DRI_SUBDIR=""
+COMMON_DRI=""
+COMMON_DRM=""
+COMMON_COMMAND=""
+
 
 # Utility functions
 VERBOSE=1
@@ -220,66 +231,68 @@
 
 vecho "Creating $DRV_NAME package..."
 
-# Copy driver sources
-vecho "Copying 2D/3D driver modules..."
-mkdir -p $PKG_DRV_DIR
-for DDX in $DRV_DDX
-do
-       cp $DRV_DDX_DIR/$DDX"_drv.o" $PKG_DRV_DIR
-       strip -g $PKG_DRV_DIR/$DDX"_drv.o"
-done
-cp $DRV_DRI_DIR/$DRV_DRI"_dri.so" $PKG_DRV_DIR
-#strip -g $PKG_DRV_DIR/$DRV_DRI"_dri.so"
-
-# Copy DRM sources
-vecho "Copying DRM kernel module sources..."
-mkdir -p $PKG_DRM_DIR
-case `uname -s` in
-       Linux)
-               cp -r $DRM_CVS_DIR/linux/* $PKG_DRM_DIR
-               ;;
-       *BSD)
-               cp -r $DRM_CVS_DIR/bsd/* $PKG_DRM_DIR
-               ;;
-       *)
-               echo "Unknown system `uname -s`"
-               exit 127
-               ;;
-esac
-# HACK: invert order to cope with redundant files in the linux drm dir...
-if [ -e $DRM_CVS_DIR/shared ]
-then
-       cp -r $DRM_CVS_DIR/shared/* $PKG_DRM_DIR
-fi
-rm -rf $PKG_DRM_DIR/CVS
-
-# Copy GL library
-vecho "Copying GL library..."
-mkdir -p $PKG_GL_DIR
-#if [ $PKG_FULL -ne 0 ]
-#then
-       cp $DRV_LIB_DIR/GL/GL/libGL.so.1.2 $PKG_GL_DIR && strip -g 
$PKG_GL_DIR/libGL.so.1.2
-       if [ -r $DRV_LIB_DIR/GLU/libGLU.so.1.3 ]; then
-           # libGLU.so* was built by DRI CVS a long time ago. s3virge still
-           # includes it. Don't know if it's really needed.
-           cp $DRV_LIB_DIR/GLU/libGLU.so.1.3 $PKG_GL_DIR && strip -g 
$PKG_GL_DIR/libGLU.so.1.3
+if [ "$DRV_NAME" != common ]; then
+       # Copy driver sources
+       vecho "Copying 2D/3D driver modules..."
+       mkdir -p $PKG_DRV_DIR
+       for DDX in $DRV_DDX
+       do
+               cp $DRV_DDX_DIR/$DDX"_drv.o" $PKG_DRV_DIR
+               strip -g $PKG_DRV_DIR/$DDX"_drv.o"
+       done
+       cp $DRV_DRI_DIR/$DRV_DRI"_dri.so" $PKG_DRV_DIR
+       #strip -g $PKG_DRV_DIR/$DRV_DRI"_dri.so"
+
+       # Copy DRM sources
+       vecho "Copying DRM kernel module sources..."
+       mkdir -p $PKG_DRM_DIR
+       case `uname -s` in
+               Linux)
+                       cp -r $DRM_CVS_DIR/linux/* $PKG_DRM_DIR
+                       ;;
+               *BSD)
+                       cp -r $DRM_CVS_DIR/bsd/* $PKG_DRM_DIR
+                       ;;
+               *)
+                       echo "Unknown system `uname -s`"
+                       exit 127
+                       ;;
+       esac
+       # HACK: invert order to cope with redundant files in the linux drm dir...
+       if [ -e $DRM_CVS_DIR/shared ]
+       then
+               cp -r $DRM_CVS_DIR/shared/* $PKG_DRM_DIR
        fi
-#fi
-
-# Copy GLX, GLcore library
-vecho "Copying GLX, GLcore, DRI, DRM libraries..."
-mkdir -p $PKG_CORE_DIR
-if [ $PKG_FULL -ne 0 ]
-then
-       cp $DRV_CORE_DIR/GL/libglx.a $PKG_CORE_DIR && strip -g $PKG_CORE_DIR/libglx.a
-       cp $DRV_CORE_DIR/GL/mesa/src/libGLcore.a $PKG_CORE_DIR || true
+       rm -rf $PKG_DRM_DIR/CVS
+else
+       # Copy GL library
+       vecho "Copying GL library..."
+       mkdir -p $PKG_GL_DIR
+       #if [ $PKG_FULL -ne 0 ]
+       #then
+               cp $DRV_LIB_DIR/GL/GL/libGL.so.1.2 $PKG_GL_DIR && strip -g 
$PKG_GL_DIR/libGL.so.1.2
+               if [ -r $DRV_LIB_DIR/GLU/libGLU.so.1.3 ]; then
+                   # libGLU.so* was built by DRI CVS a long time ago. s3virge still
+                   # includes it. Don't know if it's really needed.
+                   cp $DRV_LIB_DIR/GLU/libGLU.so.1.3 $PKG_GL_DIR && strip -g 
$PKG_GL_DIR/libGLU.so.1.3
+               fi
+       #fi
+
+       # Copy GLX, GLcore library
+       vecho "Copying GLX, GLcore, DRI, DRM libraries..."
+       mkdir -p $PKG_CORE_DIR
+       if [ $PKG_FULL -ne 0 ]
+       then
+               cp $DRV_CORE_DIR/GL/libglx.a $PKG_CORE_DIR && strip -g 
$PKG_CORE_DIR/libglx.a
+               cp $DRV_CORE_DIR/GL/mesa/src/libGLcore.a $PKG_CORE_DIR || true
+       fi
+               # HACK: fix binary incompatabilities... 2002/06/24
+               cp $DRV_CORE_DIR/GL/dri/libdri.a $PKG_CORE_DIR
+               strip -g $PKG_CORE_DIR/libdri.a
+               # HACK: fix binary incompatabilities...
+               cp $DRV_CORE_DIR/hw/xfree86/os-support/linux/drm/libdrm.a $PKG_CORE_DIR
+               strip -g $PKG_CORE_DIR/libdrm.a
 fi
-       # HACK: fix binary incompatabilities... 2002/06/24
-       cp $DRV_CORE_DIR/GL/dri/libdri.a $PKG_CORE_DIR
-       strip -g $PKG_CORE_DIR/libdri.a
-       # HACK: fix binary incompatabilities...
-       cp $DRV_CORE_DIR/hw/xfree86/os-support/linux/drm/libdrm.a $PKG_CORE_DIR
-       strip -g $PKG_CORE_DIR/libdrm.a
 
 # Copy the LICENSE file
 vecho "Copying LICENSE..."
Index: install.sh
===================================================================
RCS file: /cvs/dri/snapshots/install.sh,v
retrieving revision 1.2
diff -u -r1.2 install.sh
--- a/install.sh        22 Mar 2004 14:27:23 -0000      1.2
+++ b/install.sh        15 Apr 2004 16:14:51 -0000
@@ -91,44 +91,44 @@
        FATAL=0
        ERR=0
        
-       if [ ! -d "$XF86_DIR" ]; then
+       if [ \( -d $DRV_NAME -o core \) -a ! -d "$XF86_DIR" ]; then
                MSG="$MSG"$'\n  - XFree86 directory does not exist'
                ERR="1"
                FATAL="1";
        fi
        
-       if [ ! -d "$KERNEL_LIB_DIR" ]; then
+       if [ -d drm -a ! -d "$KERNEL_LIB_DIR" ]; then
                MSG="$MSG"$'\n  - Kernel module directory does not exist'
                ERR="1"
                FATAL="1";
        fi
 
-       if [ ! -d "$KERNEL_DRM_DIR" ]; then
+       if [ -d drm -a ! -d "$KERNEL_DRM_DIR" ]; then
                MSG="$MSG"$'\n  - Kernel DRM directory does not exist'
                ERR="1";
        fi
        
-       if [ ! -d "$XF86_GL_DIR" ]; then
+       if [ -d GL -a ! -d "$XF86_GL_DIR" ]; then
                MSG="$MSG"$'\n  - XFree86 GL library directory does not exist'
                ERR="1";
        fi      
        
-       if [ ! -d "$XF86_DRI_DIR" ]; then
+       if [ -d $DRV_NAME -a ! -d "$XF86_DRI_DIR" ]; then
                MSG="$MSG"$'\n  - XFree86 DRI directory does not exist'
                ERR="1";
        fi              
 
-       if [ ! -d "$XF86_DRV_DIR" ]; then
+       if [ -d $DRV_NAME -a ! -d "$XF86_DRV_DIR" ]; then
                MSG="$MSG"$'\n  - XFree86 driver directory does not exist'
                ERR="1";
        fi
        
-       if [ ! -d "$XF86_EXT_DIR" ]; then
+       if [ -d core -a ! -d "$XF86_EXT_DIR" ]; then
                MSG="$MSG"$'\n  - XFree86 extensions directory does not exist'
                ERR="1";
        fi      
        
-       if [ ! -d "$XF86_OS_DIR" ]; then
+       if [ -d core -a ! -d "$XF86_OS_DIR" ]; then
                MSG="$MSG"$'\n  - XFree86 Linux OS directory does not exist'
                ERR="1";
        fi      
@@ -172,59 +172,67 @@
        
        echo "Installing files:"
        
-       echo -n "       DRI XFree86 modules..."
-       cd $DRV_NAME
-       ls -1 *drv.o | while read FILE
-       do
-               mv -f $XF86_DRV_DIR/$FILE $XF86_DRV_DIR/dri-old.$FILE >& $LOGFILE_TMP;
-       done
-       ls -1 *dri.so | while read FILE
-       do
-               mv -f $XF86_DRI_DIR/$FILE $XF86_DRI_DIR/dri-old.$FILE >& $LOGFILE_TMP;
-       done    
-       cd ..
-       cp -f $DRV_NAME/*drv.o $XF86_DRV_DIR
-       cp -f $DRV_NAME/*dri.so $XF86_DRI_DIR   
-       echo "done"
-       
-       echo -n "       kernel modules..."
-       cd drm
-       mkdir -p $KERNEL_DRM_DIR
-       ls -1 $DRV_MODULE.$KERNEL_MOD_EXT | while read FILE
-       do
-               mv -f $KERNEL_DRM_DIR/$FILE $KERNEL_DRM_DIR/dri-old.$FILE >& 
$LOGFILE_TMP;
-       done
-       cd ..
-       cp -f drm/$DRV_MODULE.$KERNEL_MOD_EXT $KERNEL_DRM_DIR
-       /sbin/depmod -a
-       echo "done"
+       if [ -d $DRV_NAME ]; then
+               echo -n "       DRI XFree86 modules..."
+               cd $DRV_NAME
+               ls -1 *drv.o | while read FILE
+               do
+                       mv -f $XF86_DRV_DIR/$FILE $XF86_DRV_DIR/dri-old.$FILE >& 
$LOGFILE_TMP;
+               done
+               ls -1 *dri.so | while read FILE
+               do
+                       mv -f $XF86_DRI_DIR/$FILE $XF86_DRI_DIR/dri-old.$FILE >& 
$LOGFILE_TMP;
+               done    
+               cd ..
+               cp -f $DRV_NAME/*drv.o $XF86_DRV_DIR
+               cp -f $DRV_NAME/*dri.so $XF86_DRI_DIR   
+               echo "done"
+       fi
+
+       if [ -d drm ]; then
+               echo -n "       kernel modules..."
+               cd drm
+               mkdir -p $KERNEL_DRM_DIR
+               ls -1 $DRV_MODULE.$KERNEL_MOD_EXT | while read FILE
+               do
+                       mv -f $KERNEL_DRM_DIR/$FILE $KERNEL_DRM_DIR/dri-old.$FILE >& 
$LOGFILE_TMP;
+               done
+               cd ..
+               cp -f drm/$DRV_MODULE.$KERNEL_MOD_EXT $KERNEL_DRM_DIR
+               /sbin/depmod -a
+               echo "done"
+       fi
        
-       echo -n "       GL & GLU libraries..."
-       cd GL
-       ls -1 | while read FILE
-       do
-               mv -f $XF86_GL_DIR/$FILE $XF86_GL_DIR/dri-old.$FILE >& $LOGFILE_TMP;
-               cp -f $FILE $XF86_GL_DIR
-       done
-       cd ..
-       echo "done"
+       if [ -d GL ]; then
+               echo -n "       GL & GLU libraries..."
+               cd GL
+               ls -1 | while read FILE
+               do
+                       mv -f $XF86_GL_DIR/$FILE $XF86_GL_DIR/dri-old.$FILE >& 
$LOGFILE_TMP;
+                       cp -f $FILE $XF86_GL_DIR
+               done
+               cd ..
+               echo "done"
+       fi
        
-       echo -n "       core libraries..."
-       cd core
-       for FILE in libdri.a libglx.a libGLcore.a; do
-               if [ -e $FILE ]; then
-                       mv -f $XF86_EXT_DIR/$FILE $XF86_EXT_DIR/dri-old.$FILE >& 
$LOGFILE_TMP
-                       cp -f $FILE $XF86_EXT_DIR;
-               fi;
-       done
-       for FILE in libdrm.a; do
-               if [ -e $FILE ]; then
-                       mv -f $XF86_OS_DIR/$FILE $XF86_OS_DIR/dri-old.$FILE >& 
$LOGFILE_TMP;
-                       cp -f $FILE $XF86_OS_DIR
-               fi;
-       done
-       cd ..
-       echo "done"
+       if [ -d core ]; then
+               echo -n "       core libraries..."
+               cd core
+               for FILE in libdri.a libglx.a libGLcore.a; do
+                       if [ -e $FILE ]; then
+                               mv -f $XF86_EXT_DIR/$FILE $XF86_EXT_DIR/dri-old.$FILE 
>& $LOGFILE_TMP
+                               cp -f $FILE $XF86_EXT_DIR;
+                       fi;
+               done
+               for FILE in libdrm.a; do
+                       if [ -e $FILE ]; then
+                               mv -f $XF86_OS_DIR/$FILE $XF86_OS_DIR/dri-old.$FILE >& 
$LOGFILE_TMP;
+                               cp -f $FILE $XF86_OS_DIR
+                       fi;
+               done
+               cd ..
+               echo "done"
+       fi
 
        if [ -e extras/extras.sh ]; then
                echo -n "       Copying extra files..."
@@ -238,44 +246,52 @@
        print_logo
        echo "Restoring files..."
        
-       echo -n "       XFree86 modules..."
-       cd $DRV_NAME
-       ls -1 *drv.o | while read FILE
-       do
-               mv -f $XF86_DRV_DIR/dri-old.$FILE $XF86_DRV_DIR/$FILE >& $LOGFILE_TMP;
-       done
-       for FILE in *dri.so
-       do
-               mv -f $XF86_DRI_DIR/dri-old.$FILE $XF86_DRI_DIR/$FILE >& $LOGFILE_TMP;
-       done    
-       cd ..
-       echo "done"
+       if [ -d $DRV_NAME ]; then
+               echo -n "       XFree86 modules..."
+               cd $DRV_NAME
+               ls -1 *drv.o | while read FILE
+               do
+                       mv -f $XF86_DRV_DIR/dri-old.$FILE $XF86_DRV_DIR/$FILE >& 
$LOGFILE_TMP;
+               done
+               for FILE in *dri.so
+               do
+                       mv -f $XF86_DRI_DIR/dri-old.$FILE $XF86_DRI_DIR/$FILE >& 
$LOGFILE_TMP;
+               done    
+               cd ..
+               echo "done"
+       fi
        
-       echo -n "       kernel modules..."
-       cd drm
-       ls -1 *.$KERNEL_MOD_EXT | while read FILE
-       do
-               mv -f $KERNEL_DRM_DIR/dri-old.$FILE $KERNEL_DRM_DIR/$FILE >& 
$LOGFILE_TMP;
-       done
-       cd ..
-       /sbin/depmod -a
-       echo "done"
+       if [ -d drm ]; then
+               echo -n "       kernel modules..."
+               cd drm
+               ls -1 *.$KERNEL_MOD_EXT | while read FILE
+               do
+                       mv -f $KERNEL_DRM_DIR/dri-old.$FILE $KERNEL_DRM_DIR/$FILE >& 
$LOGFILE_TMP;
+               done
+               cd ..
+               /sbin/depmod -a
+               echo "done"
+       fi
        
-       echo -n "       system libraries..."
-       cd GL
-       ls -1 * | while read FILE
-       do
-               mv -f $XF86_GL_DIR/dri-old.$FILE $XF86_GL_DIR/$FILE >& $LOGFILE_TMP;
-       done
-       cd ..
-       echo "done"
+       if [ -d GL ]; then
+               echo -n "       system libraries..."
+               cd GL
+               ls -1 * | while read FILE
+               do
+                       mv -f $XF86_GL_DIR/dri-old.$FILE $XF86_GL_DIR/$FILE >& 
$LOGFILE_TMP;
+               done
+               cd ..
+               echo "done"
+       fi
        
-       echo -n "       core libraries..."
-       mv -f $XF86_EXT_DIR/dri-old.libdri.a $XF86_EXT_DIR/libdri.a >& $LOGFILE_TMP;
-       mv -f $XF86_EXT_DIR/dri-old.libglx.a $XF86_EXT_DIR/libglx.a >& $LOGFILE_TMP;
-       mv -f $XF86_EXT_DIR/dri-old.libGLcore.a $XF86_EXT_DIR/libGLcore.a >& 
$LOGFILE_TMP;
-       mv -f $XF86_OS_DIR/dri-old.libdrm.a $XF86_OS_DIR/libdrm.a >& $LOGFILE_TMP;
-       echo "done"
+       if [ -d core ]; then
+               echo -n "       core libraries..."
+               mv -f $XF86_EXT_DIR/dri-old.libdri.a $XF86_EXT_DIR/libdri.a >& 
$LOGFILE_TMP;
+               mv -f $XF86_EXT_DIR/dri-old.libglx.a $XF86_EXT_DIR/libglx.a >& 
$LOGFILE_TMP;
+               mv -f $XF86_EXT_DIR/dri-old.libGLcore.a $XF86_EXT_DIR/libGLcore.a >& 
$LOGFILE_TMP;
+               mv -f $XF86_OS_DIR/dri-old.libdrm.a $XF86_OS_DIR/libdrm.a >& 
$LOGFILE_TMP;
+               echo "done"
+       fi
        
        echo ""
        echo "Completed restoring files."
@@ -290,21 +306,23 @@
        echo ""
        echo "Updating configuration:"
 
-       echo -n "       Running ldconfig..."
-       grep "$XF86_DIR" /etc/ld.so.conf >& $LOGFILE_TMP
-       if [ $? != 0 ]; then
-               echo "$XF86_DIR/lib" >> /etc/ld.so.conf
-               /sbin/ldconfig >& $LOGFILE_TMP
+       if [ -d GL ]; then
+               echo -n "       Running ldconfig..."
+               grep "$XF86_DIR" /etc/ld.so.conf >& $LOGFILE_TMP
                if [ $? != 0 ]; then
-                       echo "ERROR";
-                       ERR=1
-               else
-                       echo "done";
+                       echo "$XF86_DIR/lib" >> /etc/ld.so.conf
+                       /sbin/ldconfig >& $LOGFILE_TMP
+                       if [ $? != 0 ]; then
+                               echo "ERROR";
+                               ERR=1
+                       else
+                               echo "done";
+                       fi
                fi
+               cat $LOGFILE_TMP >> $LOGFILE
        fi
-       cat $LOGFILE_TMP >> $LOGFILE
 
-       if [ ! "$X_RUNNING" == "1" ]; then
+       if [ -d drm -a ! "$X_RUNNING" == "1" ]; then
        
                # Only try and update kernel modules if X server is not running
 
@@ -355,32 +373,34 @@
        echo ""
        echo -n "Checking configuration..."
        
-       # Fix potential libGL problems
-       LIBGL1=`ldd $XF86_DIR/bin/glxinfo | grep libGL.so.1 | awk -F" " '{ printf 
"%s",$3 }'`
-       LIBGL=`echo $LIBGL1 | sed -e 's/\.1//'`
-       if [ "$LIBGL" != "$XF86_GL_DIR/libGL.so" ]; then
-               SEC_GL_DIR=`echo $LIBGL1 | sed -e 's/libGL.so.1//'`
-               echo ""
-               echo -n "       second copy of DRI libraries found in "
-               echo $SEC_GL_DIR
+       if [ -d GL ]; then
+               # Fix potential libGL problems
+               LIBGL1=`ldd $XF86_DIR/bin/glxinfo | grep libGL.so.1 | awk -F" " '{ 
printf "%s",$3 }'`
+               LIBGL=`echo $LIBGL1 | sed -e 's/\.1//'`
+               if [ "$LIBGL" != "$XF86_GL_DIR/libGL.so" ]; then
+                       SEC_GL_DIR=`echo $LIBGL1 | sed -e 's/libGL.so.1//'`
+                       echo ""
+                       echo -n "       second copy of DRI libraries found in "
+                       echo $SEC_GL_DIR
                
-               echo -n "       libraries have been backed up to dri-old.* in "
-               echo $SEC_GL_DIR
-               echo ""
+                       echo -n "       libraries have been backed up to dri-old.* in "
+                       echo $SEC_GL_DIR
+                       echo ""
+
+                       for FILE in libGL.so libGL.so.1 libGL.so.1.2
+                       do
+                               mv -f $SEC_GL_DIR/$FILE $SEC_GL_DIR/dri-old.$FILE
+                               ln -s $XF86_GL_DIR/$FILE $SEC_GL_DIR/$FILE
+                       done
+               fi
 
-               for FILE in libGL.so libGL.so.1 libGL.so.1.2
-               do
-                       mv -f $SEC_GL_DIR/$FILE $SEC_GL_DIR/dri-old.$FILE
-                       ln -s $XF86_GL_DIR/$FILE $SEC_GL_DIR/$FILE
-               done
+               # Make sure libGL and have correct links
+               rm -f $XF86_GL_DIR/libGL.so
+               rm -f $XF86_GL_DIR/libGL.so.1
+               ln -s $XF86_GL_DIR/libGL.so.1.2 $XF86_GL_DIR/libGL.so
+               ln -s $XF86_GL_DIR/libGL.so.1.2 $XF86_GL_DIR/libGL.so.1
        fi
 
-       # Make sure libGL and have correct links
-       rm -f $XF86_GL_DIR/libGL.so
-       rm -f $XF86_GL_DIR/libGL.so.1
-       ln -s $XF86_GL_DIR/libGL.so.1.2 $XF86_GL_DIR/libGL.so
-       ln -s $XF86_GL_DIR/libGL.so.1.2 $XF86_GL_DIR/libGL.so.1
-       
        echo "done"
 }
 
@@ -441,25 +461,27 @@
 fi
 
 # Print X is running message
-ps -C X > /dev/null
-if [ $? == 0 ]; then
-       X_RUNNING=1
-       print_logo
-       echo "WARNING: YOUR X SERVER SEEMS TO BE RUNNING!"
-       echo ""
-       echo "The script can not update your kernel modules while the X server is 
running."
-       echo ""
-       echo "You can do one of the following:"
-       echo ""
-       echo "1. Log out of your X session now and then run this script."
-       echo ""
-       echo "2. Run the script now and restart your computer after the installation."
-       echo "   If you exit your X session now you will not have to restart."
-       echo ""
-       echo "Press ENTER to continue or CTRL-C to exit."
-       read KEY ;
-else
-       X_RUNNING=0;
+if [ -d drm ]; then
+       ps -C X > /dev/null
+       if [ $? == 0 ]; then
+               X_RUNNING=1
+               print_logo
+               echo "WARNING: YOUR X SERVER SEEMS TO BE RUNNING!"
+               echo ""
+               echo "The script can not update your kernel modules while the X server 
is running."
+               echo ""
+               echo "You can do one of the following:"
+               echo ""
+               echo "1. Log out of your X session now and then run this script."
+               echo ""
+               echo "2. Run the script now and restart your computer after the 
installation."
+               echo "   If you exit your X session now you will not have to restart."
+               echo ""
+               echo "Press ENTER to continue or CTRL-C to exit."
+               read KEY ;
+       else
+               X_RUNNING=0;
+       fi
 fi
 
 # Do misc stuff
@@ -494,48 +516,52 @@
 while [ "$ERR" == "-1" ]; do
 
        # Determine XFree86 directory
-       print_logo
-       echo "The script will need to copy the DRI XFree86 driver modules to"
-       echo "your XFree86 directory."
-       echo ""
-       echo "The script will use the following XFree86 directory:"
-       echo ""
-       echo " $XF86_DIR"
-       echo ""
-       echo "If this is correct press ENTER, press C to change or CTRL-C to exit."
-       read KEY
-
-       if [ "$KEY" == "C" ] || [ "$KEY" == "c" ]; then
+       if [ -d $DRV_NAME ]; then
                print_logo
-               echo "Please enter the XFree86 directory you would like to use."
+               echo "The script will need to copy the DRI XFree86 driver modules to"
+               echo "your XFree86 directory."
+               echo ""
+               echo "The script will use the following XFree86 directory:"
                echo ""
-               echo "Press ENTER when done or CTRL-C to abort."
+               echo " $XF86_DIR"
                echo ""
-               echo -n "Directory: "
-               read XF86_DIR ;
+               echo "If this is correct press ENTER, press C to change or CTRL-C to 
exit."
+               read KEY
+
+               if [ "$KEY" == "C" ] || [ "$KEY" == "c" ]; then
+                       print_logo
+                       echo "Please enter the XFree86 directory you would like to 
use."
+                       echo ""
+                       echo "Press ENTER when done or CTRL-C to abort."
+                       echo ""
+                       echo -n "Directory: "
+                       read XF86_DIR ;
+               fi
        fi
 
        # Determine Kernel module directory
-       print_logo
-       echo "The script also needs to copy the DRM kernel modules to your"
-       echo "kernel module directory."
-       echo ""
-       echo "This version of the script supports 2.4.x and 2.6.x kernels."
-       echo ""
-       echo "Kernel Version   : $KERNEL_VER"
-       echo "Module Directory : $KERNEL_LIB_DIR"
-       echo ""
-       echo "If this is correct press ENTER, press C to change or CTRL-C to exit."
-       read KEY
-
-       if [ "$KEY" == "C" ] || [ "$KEY" == "c" ]; then
+       if [ -d drm ]; then
                print_logo
-               echo "Please enter your kernel module directory."
+               echo "The script also needs to copy the DRM kernel modules to your"
+               echo "kernel module directory."
+               echo ""
+               echo "This version of the script supports 2.4.x and 2.6.x kernels."
                echo ""
-               echo "Press ENTER when done or CTRL-C to abort."
+               echo "Kernel Version   : $KERNEL_VER"
+               echo "Module Directory : $KERNEL_LIB_DIR"
                echo ""
-               echo -n "Directory: "
-               read KERNEL_LIB_DIR ;
+               echo "If this is correct press ENTER, press C to change or CTRL-C to 
exit."
+               read KEY
+
+               if [ "$KEY" == "C" ] || [ "$KEY" == "c" ]; then
+                       print_logo
+                       echo "Please enter your kernel module directory."
+                       echo ""
+                       echo "Press ENTER when done or CTRL-C to abort."
+                       echo ""
+                       echo -n "Directory: "
+                       read KERNEL_LIB_DIR ;
+               fi
        fi
 
        # Determine paths from user input or defaults
@@ -547,34 +573,36 @@
 done
 
 # Compile the kernel modules
-print_logo
-echo "The script will now compile the DRM kernel modules for your machine."
-echo ""
-echo "Press ENTER to continue or CTRL-C to exit."
-read KEY
+if [ -d drm ]; then
+       print_logo
+       echo "The script will now compile the DRM kernel modules for your machine."
+       echo ""
+       echo "Press ENTER to continue or CTRL-C to exit."
+       read KEY
 
-echo ""
-echo -n "Compiling..."
-cd drm
-# Makefile.linux doesn't have a rule to build .ko-files for 2.6 kernels.
-# They are somehow created automagically after $DRV_MODULE.o is built.
-make -f Makefile.linux $DRV_MODULE.o >& ../$LOGFILE_TMP
-if [ $? != 0 ]; then
+       echo ""
+       echo -n "Compiling..."
+       cd drm
+       # Makefile.linux doesn't have a rule to build .ko-files for 2.6 kernels.
+       # They are somehow created automagically after $DRV_MODULE.o is built.
+       make -f Makefile.linux $DRV_MODULE.o >& ../$LOGFILE_TMP
+       if [ $? != 0 ]; then
+               cat ../$LOGFILE_TMP >> ../$LOGFILE
+               cd ..
+               echo ""
+               echo "ERROR: Kernel modules did not compile"
+               echo ""
+               echo "The DRI drivers can not be installed without the latest kernel 
modules."
+               echo "Installation will be aborted. See the $LOGFILE file for 
information on"
+               echo "what went wrong."
+               echo ""
+               exit 127;
+       else
+               echo "done";
+       fi
        cat ../$LOGFILE_TMP >> ../$LOGFILE
        cd ..
-       echo ""
-       echo "ERROR: Kernel modules did not compile"
-       echo ""
-       echo "The DRI drivers can not be installed without the latest kernel modules."
-       echo "Installation will be aborted. See the $LOGFILE file for information on"
-       echo "what went wrong."
-       echo ""
-       exit 127;
-else
-       echo "done";
 fi
-cat ../$LOGFILE_TMP >> ../$LOGFILE
-cd ..
 
 # Print a last message
 print_logo
Index: package.sh
===================================================================
RCS file: /cvs/dri/snapshots/package.sh,v
retrieving revision 1.6
diff -u -r1.6 package.sh
--- a/package.sh        9 Apr 2004 16:34:39 -0000       1.6
+++ b/package.sh        15 Apr 2004 16:14:51 -0000
@@ -25,7 +25,7 @@
                DRIVERS="S3VIRGE"
                ;;
        *)
-               DRIVERS="I810 I830 MGA R128 R200 RADEON SIS TDFX SAVAGE"
+               DRIVERS="I810 I830 MGA R128 R200 RADEON SIS TDFX SAVAGE COMMON"
                EXTRAS="XDRIINFO"
                ;;
 esac

Reply via email to