#!/bin/sh # ###################################################### # Build script # # # # See .info for details # ###################################################### #Installs do not work if extension is already loaded if [ -f /usr/local/tce.installed/bluez ]; then echo "Please remove bluez before installing" exit 1 fi ###################################################### # Make sure Dependencies for Script are loaded # ###################################################### tce-load -i compiletc squashfs-tools inotify-tools git automake autoconf sbc-dev libical-dev readline-dev libasound-dev \ glib2-dev dbus-dev libudev-dev ###################################################### # Configure extension creation parameters # ###################################################### SRCPATH="../../../sources" SRCNAM=bluez-5.66.tar.xz WRKDIR=bluez-5.66 EXTNAM=bluez TMPDIR=/tmp/$EXTNAM LIBNAM=libbluetooth LIBTMPDIR=/tmp/$LIBNAM ###################################################### # Prepare extension creation # ###################################################### # Remove dirs and files left from previous creation rm -r -f $WRKDIR rm -r -f $TMPDIR rm -r -f $TMPDIR-doc rm -r -f $TMPDIR-dev # Crete temporary directory mkdir -p $TMPDIR ###################################################### # Compile extension # ###################################################### # Export variables needed for compilation case $(uname -m) in arm*) export CFLAGS="-flto=auto -Os -pipe -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp" export CXXFLAGS="-flto=auto -Os -pipe -fno-exceptions -fno-rtti -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp" ;; aarch64) export CFLAGS="-flto=auto -Os -pipe -march=armv8-a+crc -mtune=cortex-a72" export CXXFLAGS="-flto=auto -Os -pipe -fno-exceptions -fno-rtti -march=armv8-a+crc -mtune=cortex-a72" ;; esac export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig tar xf ${SRCPATH}/${SRCNAM} cd $WRKDIR # Apply patches while IFS='' read -r LINE || [ -n "${LINE}" ]; do patch -Np1 <../patches/$LINE done < ../patches/series # Make sure tc.staff user can run bluetoothctl sed -i 's/users of bluetooth group/users of staff group/' src/bluetooth.conf sed -i 's/policy group=\"bluetooth\"/policy group=\"staff\"/' src/bluetooth.conf sed -i 's/#UserspaceHID/UserspaceHID/' profiles/input/input.conf # Compile # configure uses CPP and CPPFLAGS, but don't set them, as its not setup correctly. unset CPP unset CPPFLAGS #>Bluez-5.66 LIBS="-lncursesw" CC="gcc" \ CXX="g++" \ ./configure --prefix=/usr/local --disable-static --localstatedir=/var --libexecdir=/usr/local/lib \ --disable-systemd --enable-library --with-udevdir=/lib/udev --enable-experimental --enable-deprecated \ --enable-midi --enable-threads --enable-tools --enable-datafiles --enable-test --enable-nfc --enable-sap \ --enable-monitor --enable-udev --enable-obex --enable-client --enable-testing --enable-sixaxis --enable-health \ --enable-hid2hci --disable-manpages [ $? -ne 0 ] && (echo "Configure Error"; exit 1) #touch /tmp/mark make -j6 [ $? -ne 0 ] && (echo "Make Error"; exit 1) inotifywait --quiet --monitor --recursive -e create --format '%w%f' /usr/local /lib > /tmp/bluezlist.txt & sudo make install [ $? -ne 0 ] && (echo "Install Error"; exit 1) #install gatttool manually, as its not installed by main script sudo ./libtool --mode=install /usr/bin/install -cs attrib/gatttool /usr/local/bin pkill inotifywait # This sorts the file in place while removing duplicate entries. echo "$(sort -u /tmp/bluezlist.txt)" > /tmp/bluezlist.txt while read -r ENTRY do # Keep file entries, skip entries that are only paths. if [ -f "$ENTRY" ] then echo "$ENTRY" >> /tmp/bluezfiles.txt # since we found a file, we want its path. echo "${ENTRY%/*}" >> /tmp/bluezpaths.txt fi done < /tmp/bluezlist.txt # This sorts the file in place while removing duplicate entries. echo "$(sort -u /tmp/bluezpaths.txt)" > /tmp/bluezpaths.txt # Install in base temp dir # Create the directory tree to move the installed files to. while read -r ENTRY do mkdir -p "$TMPDIR/$ENTRY" done < /tmp/bluezpaths.txt # Move the files from my system to the package directories where they belong. while read -r ENTRY do sudo mv "$ENTRY" "$TMPDIR/$ENTRY" done < /tmp/bluezfiles.txt # Change ownership so I don't need sudo for any further changes. sudo chown -R tc:staff "$TMPDIR" # Remove installed config files sudo rm -rf $TMPDIR/usr/local/etc/bluetooth ##copy configuration files mkdir -p $TMPDIR/usr/local/share/bluez/files cp -f ../bluez-files/conf/* $TMPDIR/usr/local/share/bluez/files mv -f $TMPDIR/lib/udev/rules.d/97-hid2hci.rules $TMPDIR/usr/local/share/bluez/files/97-hid2hci.rules mkdir -p $TMPDIR/usr/local/etc/init.d cp -f ../bluez-files/init.d/bluez $TMPDIR/usr/local/etc/init.d/bluez chmod 755 $TMPDIR/usr/local/etc/init.d/bluez mkdir -p $TMPDIR/usr/local/share/dbus-1/services/ cp -f ../bluez-files/org.bluez.obex.service $TMPDIR/usr/local/share/dbus-1/services/ mkdir $TMPDIR/usr/local/tce.installed cp -f ../bluez-files/tce.installed/bluez $TMPDIR/usr/local/tce.installed/ rm -f $TMPDIR/usr/local/lib/bluetooth/plugins/*.la # Delete compilation work directory cd .. rm -r -f $WRKDIR # Adjust directory access rigths find $TMPDIR/ -type d | sudo xargs chmod -v 755 # Strip executables find $TMPDIR | xargs file | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded # Fix tce.installed sudo -E chown -R root.staff $TMPDIR/usr/local/tce.installed sudo -E chmod -R 775 $TMPDIR/usr/local/tce.installed # Move files to doc extension #mkdir -p $TMPDIR-doc/usr/local/share #mv $TMPDIR/usr/local/man $TMPDIR-doc/usr/local/share #mv $TMPDIR/usr/local/share/man $TMPDIR-doc/usr/local/share rm -rf $TMPDIR/usr/local/share/man # Move libs to libbluetooth mkdir -p $LIBTMPDIR/usr/local/lib mv $TMPDIR/usr/local/lib/*.so* $LIBTMPDIR/usr/local/lib # Move files to dev extension mkdir -p $LIBTMPDIR-dev/usr/local/lib mv $TMPDIR/usr/local/include $LIBTMPDIR-dev/usr/local #mv $TMPDIR/usr/local/lib/*.a $LIBTMPDIR-dev/usr/local/lib #mv $TMPDIR/usr/local/lib/*.la $LIBTMPDIR-dev/usr/local/lib rm -f $TMPDIR/usr/local/lib/*.la mv $TMPDIR/usr/local/lib/pkgconfig $LIBTMPDIR-dev/usr/local/lib rm -rf $TMPDIR/usr/local/share/zsh ################################################### # Create base extension in temp dir # ################################################### cd $TMPDIR cd .. mksquashfs $TMPDIR $EXTNAM.tcz -noappend cd $TMPDIR find lib -not -type d > $EXTNAM.tcz.list find usr -not -type d >> $EXTNAM.tcz.list mv ../$EXTNAM.tcz . # Create md5 file md5sum $EXTNAM.tcz > $EXTNAM.tcz.md5.txt # Cleanup temp directory sudo rm -r -f usr sudo rm -r -f lib ################################################### # Create lib extension in temp dir # ################################################### cd $LIBTMPDIR cd .. mksquashfs $LIBTMPDIR $LIBNAM.tcz -noappend cd $LIBTMPDIR find usr -not -type d > $LIBNAM.tcz.list mv ../$LIBNAM.tcz . # Create md5 file md5sum $LIBNAM.tcz > $LIBNAM.tcz.md5.txt # Cleanup temp directory sudo rm -r -f usr ################################################### # Create dev extension in temp dir # ################################################### cd $LIBTMPDIR-dev cd .. mksquashfs $LIBTMPDIR-dev $LIBNAM-dev.tcz -noappend cd $LIBTMPDIR-dev find usr -not -type d > $LIBNAM-dev.tcz.list mv ../$LIBNAM-dev.tcz . # Create md5 file md5sum $LIBNAM-dev.tcz > $LIBNAM-dev.tcz.md5.txt # Cleanup temp directory sudo rm -r -f usr