You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
2.8 KiB

#!/bin/bash -e
SRC_VERSION_NAME=linux
## from
## http://stackoverflow.com/questions/9293887/in-bash-how-do-i-convert-a-space-delimited-string-into-an-array
FULL_NAME=linux-$( uname -r | sed -e 's/-default//')
read -a VERSION <<< $FULL_NAME
SRC_VERSION_ID=${VERSION[0]} ## e.g. : 4.5.6
SRC_VERSION_REL=${VERSION[1]} ## e.g. : 1
LINUX_TYPE=${VERSION[2]} ## e.g. : ARCH
#remove trailing.0
SRC_VERSION_ID=$(echo $SRC_VERSION_ID | sed -e 's/\.0$//' )
LINUX_BRANCH=opensuse-$SRC_VERSION_ID
KERNEL_NAME=linux-$SRC_VERSION_ID
PATCH_NAME=patch-$SRC_VERSION_ID
# ARCH Linux -- KERNEL_NAME=linux-$SRC_VERSION_ID-$SRC_VERSION_REL-$ARCH.pkg.tar.xz
mkdir kernel
cd kernel
sudo zypper in kernel-source kernel-default-devel
mkdir $FULL_NAME
cp -r /usr/src/$FULL_NAME-obj/x86_64/default/* ./$FULL_NAME/
cp -r /usr/src/$FULL_NAME/* ./$FULL_NAME/
cd $FULL_NAME
## Get the patch
# echo "Patching the kernel..."
### patch not working ?
# xz -dc ../$PATCH_NAME.xz | patch -p1
echo "RealSense patch..."
# Apply our RealSense specific patch
patch -p1 < ../../realsense-camera-formats-opensuse.patch
# Prepare to compile modules
## Get the config
# zcat /proc/config.gz > .config ## Not the good one ?
cp /lib/modules/`uname -r`/build/.config .
cp /lib/modules/`uname -r`/build/Module.symvers .
echo "Prepare the build"
#cat Makefile | sed -e 's/\.\.\/\.\.\/\.\.\/linux-4.12.14-lp150.12.16/\.\.\/linux-4.12.14-lp150.12.16/' > Makefile.temp; mv Makefile.temp Makefile;
make -C . scripts oldconfig modules_prepare
# Compile UVC modules
echo "Beginning compilation of uvc..."
#make modules
KBASE=`pwd`
cd drivers/media/usb/uvc
cp $KBASE/Module.symvers .
make -C $KBASE M=$KBASE/drivers/media/usb/uvc/ modules
# Copy to sane location
#sudo cp $KBASE/drivers/media/usb/uvc/uvcvideo.ko ~/$LINUX_BRANCH-uvcvideo.ko
cd ../../../../../
cp $KBASE/drivers/media/usb/uvc/uvcvideo.ko ../uvcvideo.ko
# Unload existing module if installed
echo "Unloading existing uvcvideo driver..."
sudo modprobe -r uvcvideo
cd ..
## Not sure yet about deleting and copying...
# save the existing module
MODULE_NAME=/lib/modules/`uname -r`/kernel/drivers/media/usb/uvc/uvcvideo.ko
if [ -e $MODULE_NAME ]; then
sudo cp $MODULE_NAME $MODULE_NAME.backup
sudo rm $MODULE_NAME
sudo cp uvcvideo.ko $MODULE_NAME
fi
if [ -e $MODULE_NAME.xz ]; then
sudo cp $MODULE_NAME.xz $MODULE_NAME.xz.backup
sudo rm $MODULE_NAME.xz
# compress
xz uvcvideo.ko
sudo cp uvcvideo.ko.xz $MODULE_NAME
fi
if [ -e $MODULE_NAME.gz ]; then
sudo cp $MODULE_NAME.gz $MODULE_NAME.gz.backup
sudo rm $MODULE_NAME.gz
# compress
gzip uvcvideo.ko
sudo cp uvcvideo.ko.gz $MODULE_NAME.gz
fi
# Copy out to module directory
sudo modprobe uvcvideo
rm -rf kernel
echo "Script has completed. Please consult the installation guide for further instruction."