#!/bin/sh
#
######################################################
# Build script for Core 6.0                          #
#                                                    #
# See .info for details                              #
######################################################

tce-load -i compiletc squashfs-tools git glib2-dev gobject-introspection-dev pciutils usbutils

######################################################
# Configure extension creation parameters            #
######################################################
SRCPATH="../../../sources"

SRCNAM=udev-174.tar.xz
WRKDIR=udev-174
BASENAME=udev_base
UDEVLIB=udev-lib
UDEVEXTRA=udev-extra
UDEVV4L=udev_extras_v4l
GUDEVLIB=gudev-lib
GUDEVGIR=gudev-gir
TMPBASE=/tmp/$BASENAME
TMPUDEV=/tmp/$UDEVLIB
TMPUDEVEXTRA=/tmp/$UDEVEXTRA
TMPUDEVV4L=/tmp/$UDEVV4L
TMPGUDEV=/tmp/$GUDEVLIB
TMPGUDEVGIR=/tmp/$GUDEVGIR

######################################################
# Prepare extension creation                         #
######################################################

# Remove dirs and files left from previous creation

rm -r -f $WRKDIR

rm -r -f $TMPUDEV
rm -r -f $TMPUDEV-dev
rm -r -f $TMPBASE
rm -r -f $TMPUDEVEXTRA
rm -r -f $TMPUDEVV4L
rm -r -f $TMPGUDEV
rm -r -f $TMPGUDEVGIR

# Crete temporary directory

mkdir -p $TMPDIR

######################################################
# Compile extension                                  #
######################################################

# Export variables needed for compilation

case $(uname -m) in
    armv*)
       export CFLAGS="-Os -pipe -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp"
       export CXXFLAGS="-Os -pipe -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp"
    ;;
    aarch64)
       export CFLAGS="-Os -pipe -march=armv8-a+crc -mtune=cortex-a72"
       export CXXFLAGS="-Os -pipe -march=armv8-a+crc -mtune=cortex-a72"
    ;;
esac
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

# Unpack source in current directory

tar xf ${SRCPATH}/${SRCNAM}

# Configure it

cd $WRKDIR

sed -i -e '/deprecated/d' udev/udevadm-trigger.c

wget -O config.guess 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'
wget -O config.sub 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
mv -f config.guess build-aux/
mv -f config.sub build-aux/

patch -Np0 -i ../udev-piCore.patch

# Build with --disable-gudev before glib2 is built.
# Build with --disable-introspection until libgudev is built.  The makefile cannot find the libs in the build dir

./configure --prefix=/usr/local --sysconfdir=/etc --sbindir=/sbin --with-rootlibdir=/usr/local/lib \
--libexecdir=/lib/udev --disable-keymap --libdir=/usr/local/lib \
--disable-introspection \
--disable-hwdb \
--with-firmware-path=/lib/firmware/updates:/lib/firmware:/usr/local/lib/firmware/updates:\
/usr/local/lib/firmware --with-pci-ids-path=/usr/local/share/hwdata \
--with-usb-ids-path=/usr/local/share

# Compile

make -j6

# Install in base temp dir

make install DESTDIR=$TMPUDEV

sudo cp -P ${TMPUDEV}/usr/local/lib/* /usr/local/lib
sudo ldconfig

./configure --prefix=/usr/local --sysconfdir=/etc --sbindir=/sbin --with-rootlibdir=/usr/local/lib \
--libexecdir=/lib/udev --disable-keymap --libdir=/usr/local/lib \
--enable-rule_generator \
--with-firmware-path=/lib/firmware/updates:/lib/firmware:/usr/local/lib/firmware/updates:\
/usr/local/lib/firmware --with-pci-ids-path=/usr/local/share/hwdata \
--with-usb-ids-path=/usr/local/share

make -j6

make install DESTDIR=$TMPUDEV

# Delete compilation work directory

cd ..
rm -r -f $WRKDIR

# Adjust directory access rigths

find $TMPUDEV/ -type d | xargs chmod -v 755;

# Strip executables

find $TMPUDEV | xargs file | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded

# Move files to doc extension

mkdir -p $TMPUDEV-doc/usr/local/share
mv $TMPUDEV/usr/local/share/doc $TMPUDEV-doc/usr/local/share
mv $TMPUDEV/usr/local/share/man $TMPUDEV-doc/usr/local/share
mv $TMPUDEV/usr/local/share/gtk-doc $TMPUDEV-doc/usr/local/share

# Move files for base
mkdir -p ${TMPBASE}
mv -f $TMPUDEV/etc $TMPBASE
mv -f $TMPUDEV/sbin $TMPBASE
mkdir -p ${TMPBASE}/etc/udev/rules.d
mv $TMPUDEV/lib/udev/udevd $TMPBASE/sbin
mv $TMPUDEV/lib/udev/rules.d/42* $TMPBASE/etc/udev/rules.d
mv $TMPUDEV/lib/udev/rules.d/50* $TMPBASE/etc/udev/rules.d
mv $TMPUDEV/lib/udev/rules.d/60-cd* $TMPBASE/etc/udev/rules.d
mv $TMPUDEV/lib/udev/rules.d/60-persistent-alsa* $TMPBASE/etc/udev/rules.d
mv $TMPUDEV/lib/udev/rules.d/60-persistent-input* $TMPBASE/etc/udev/rules.d
mv $TMPUDEV/lib/udev/rules.d/60-persistent-serial* $TMPBASE/etc/udev/rules.d
mv $TMPUDEV/lib/udev/rules.d/60-persistent-storage* $TMPBASE/etc/udev/rules.d
mv $TMPUDEV/lib/udev/rules.d/80-drivers* $TMPBASE/etc/udev/rules.d
mv $TMPUDEV/lib/udev/rules.d/95-udev* $TMPBASE/etc/udev/rules.d

# Remove .la files
rm -f $TMPUDEV/usr/local/lib/*.la

# Move gudev-lib

mkdir -p $TMPGUDEV/usr/local/lib
mv -f $TMPUDEV/usr/local/lib/libgudev* $TMPGUDEV/usr/local/lib

# Move gudev-gir

mkdir -p $TMPGUDEVGIR/usr/local/lib
mkdir -p $TMPGUDEVGIR/usr/local/share
mv -f $TMPUDEV/usr/local/lib/gir* $TMPGUDEVGIR/usr/local/lib
mv -f $TMPUDEV/usr/local/share/gir* $TMPGUDEVGIR/usr/local/share

# Move gudev dev files
mkdir -p $TMPGUDEV-dev/usr/local/lib/pkgconfig
mkdir -p $TMPGUDEV-dev/usr/local/include
mv $TMPUDEV/usr/local/include/gudev* $TMPGUDEV-dev/usr/local/include
mv $TMPUDEV/usr/local/lib/pkgconfig/gudev* $TMPGUDEV-dev/usr/local/lib/pkgconfig

# Move files to udev dev extension
mkdir -p $TMPUDEV-dev/usr/local/lib
mv $TMPUDEV/usr/local/include $TMPUDEV-dev/usr/local
mv $TMPUDEV/usr/local/lib/pkgconfig $TMPUDEV-dev/usr/local/lib
mv $TMPUDEV/usr/local/share/pkgconfig/* $TMPUDEV-dev/usr/local/lib/pkgconfig
rm -rf $TMPUDEV/usr/local/share

# Move extras v4l
mkdir -p $TMPUDEVV4L/lib/udev
mv $TMPDIR/lib/udev/v4l* $TMPUDEVV4L/lib/udev/
mkdir -p $TMPUDEVV4L/usr/local/share/udev/files
mv $TMPDIR/lib/udev/rules.d/60-persistent-v4l* $TMPUDEVV4L/usr/local/share/udev/files
mkdir -p $TMPUDEVV4L/usr/local/tce.installed
cp -f udev_extras_v4l $TMPUDEVV4L/usr/local/tce.installed
chmod -R 775 $TMPUDEVV4L/usr/local/tce.installed
sudo chown -R root:staff $TMPUDEVV4L/usr/local/tce.installed

# move udev extras
mkdir -p $TMPUDEVEXTRA
mv $TMPUDEV/lib $TMPUDEVEXTRA
mkdir -p $TMPUDEVEXTRA/usr/local/etc
mkdir -p $TMPUDEVEXTRA/usr/local/tce.installed
cp udev-extra.conf $TMPUDEVEXTRA/usr/local/etc
cp udev-extra $TMPUDEVEXTRA/usr/local/tce.installed
chmod -R 775 $TMPUDEVEXTRA/usr/local/tce.installed
sudo chown -R root:staff $TMPUDEVEXTRA/usr/local/tce.installed

###################################################
# Create base extension in temp dir               #
###################################################

EXTLIST="udev-lib udev-lib-dev udev-extra udev_extras_v4l gudev-lib gudev-lib-dev gudev-gir"
for i in $EXTLIST;do
	TMPDIR=/tmp/$i
	cd $TMPDIR
	cd ..
	mksquashfs $TMPDIR $i.tcz
	cd $TMPDIR
	find * -not -type d > $i.tcz.list
	mv ../$i.tcz .

	# Create md5 file

	md5sum $i.tcz > $i.tcz.md5.txt

	# Cleanup temp directory

	#rm -r -f usr
done

