#!/bin/sh
# test we are root
if [ "$USER" != "root" ] ; then
   echo "Run as root please, exiting." 
   exit 1                                                      
fi

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 '
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig
echo $CFLAGS && echo $CXXFLAGS

P=gdk-pixbuf
V=2.42.10
SRC=$P-$V
USER=`cat /etc/sysconfig/tcuser`
LIST="compiletc squashfs-tools wget meson gobject-introspection-dev \
libpng-dev libtiff-dev gettext intltool "
for Z in $LIST 
    do 
    su -c "tce-load -i $Z" $USER
done

# list may be larger than loaded
cd /usr/local/lib
rm -rf *.la
rm -rf gcc/aarch64-unknown-linux-gnu/12.2.0/plugin/*.la
rm -rf gcc/aarch64-unknown-linux-gnu/12.2.0/*.la
rm -rf gprofng/*.la 
rm -rf python3.8/site-packages/*.la
rm -rf pkcs11/*.la
rm -rf cairo/*.la
rm -rf gtk-2.0/modules/*.la
rm -rf gtk-2.0/2.10.0/printbackends/*.la
rm -rf gtk-2.0/2.10.0/immodules/*.la
rm -rf gtk-2.0/2.10.0/engines/*.la
rm -rf imlib2/loaders/*.la
rm -rf imlib2/filters/*.la
rm -rf gdk-pixbuf-2.0/2.10.0/loaders/*.la
rm -rf gcc/armv7l-unknown-linux-gnueabihf/12.2.0/plugin/libcp1plugin.la
rm -rf gcc/armv7l-unknown-linux-gnueabihf/12.2.0/plugin/libcc1plugin.la
rm -rf gcc/armv7l-unknown-linux-gnueabihf/12.2.0/liblto_plugin.la
rm -rf pulseaudio/libpulsedsp.la
rm -rf pulseaudio/libpulsecore-13.0.la
rm -rf pulseaudio/libpulsecommon-13.0.la
rm -rf libv4l/v4l2convert.la
rm -rf libv4l/v4l1compat.la
rm -rf libv4l/plugins/libv4l-mplane.la
rm -rf vala-0.46/libvalaccodegen.la
cd /tmp
rm -rf /usr/lib/*.la
find / -name *.la

su -c "/usr/local/bin/wget -nc \
https://download.gnome.org/sources/$P/2.42/$SRC.tar.xz " $USER
tar -xvf $SRC*xz
cd $SRC

mkdir build && cd build
meson setup --prefix=/usr/local --localstatedir=/var -Dstrip=true -Ddocs=false \
--wrap-mode=nofallback -Dman=false -Dtests=false -Dinstalled_tests=false
# below debugging is true but so is strip!
# Loaders
# Shared modules   : True
# Enabled loaders  : png  & jpeg &   tiff
# Builtin loaders  : png & jpeg
# Build
# Debugging        : True
# Optimization     : 2
# GIO MIME sniffing: True
# MediaLib         : False
# Introspection    : True
# Documentation    : False
# Manual pages     : False
# Relocatable      : False
# Build tests      : False
# Installed tests  : False
# Directories
# prefix           : /usr/local
# libdir           : /usr/local/lib
# datadir          : /usr/local/share
# libexecdir       : /usr/local/lib
# User defined options
# localstatedir    : /var
# prefix           : /usr/local
# strip            : true
# wrap_mode        : nofallback
# docs             : false
# man              : false
ninja # 35 sec
DESTDIR=/tmp/$P ninja install
cd /tmp

# Warning: loaders.cache not built because DESTDIR is set
# You will need to manually call gdk-pixbuf-query-loaders YEP install script

# dev
#####
mkdir -p $P-dev/usr/local/lib
mv $P/usr/local/include $P-dev/usr/local/
mv $P/usr/local/lib/pkgconfig $P-dev/usr/local/lib

# gir
#####
mkdir -p $P-gir/usr/local/lib
mv $P/usr/local/lib/gir* $P-gir/usr/local/lib
mkdir -p $P-gir/usr/local/share
mv $P/usr/local/share/gir* $P-gir/usr/local/share

# locale
########
mkdir -p $P-locale/usr/local/share
mv $P/usr/local/share/locale $P-locale/usr/local/share

# main 
#####
mkdir -p $P/usr/local/share/doc/$P
echo 'LGPL v2.1' > $P/usr/local/share/doc/$P/COPYING

# tce.install
###########
mkdir -p $P/usr/local/tce.installed
echo '#!/bin/sh
gdk-pixbuf-query-loaders --update-cache
' > $P/usr/local/tce.installed/$P
chown -R root:staff  $P/usr/local/tce.installed
chmod -R 775 $P/usr/local/tce.installed


# TCZ them
#######
LIST="$P $P-dev $P-gir $P-locale "
for Z in $LIST
do
	mksquashfs $Z $Z.tcz
	md5sum $Z.tcz > $Z.tcz.md5.txt
	cd $Z
	find usr -not -type d > /tmp/$Z.tcz.list
        sed 's|usr|/usr|g' -i /tmp/$Z.tcz.list
	cd /tmp
done

ls -hal

# my dev list vastly different from Repo version
echo 'Title:          gdk-pixbuf-dev.tcz
Description:    dev files
Version:        2.42.10
Author:         gdk-pixbuf Team
Original-site:  https://download.gnome.org/sources/gdk-pixbuf
Copying-policy: LGPL v2.1
Size:           32K
Extension_by:   aus9
Tags:           gtk images
Comments:       dev files
                
Change-log:     2016/08/13 v 2.34.0 (bmarkus)
                2017/03/15 v 2.36.5 (juanito)
                2020/04/15 v 2.40.0 (juanito)
Current:        2023/07/27 v 2.42.10 on 14.x (aus9) '  > $P-dev.tcz.info
echo 'gdk-pixbuf.tcz
libpng-dev.tcz 
libtiff-dev.tcz   ' > $P-dev.tcz.dep

echo 'Title:          gdk-pixbuf-gir.tcz
Description:    Gir files
Version:        2.42.10
Author:         gdk-pixbuf Team
Original-site:  https://download.gnome.org/sources/gdk-pixbuf
Copying-policy: LGPL v2.1
Size:           88K
Extension_by:   aus9
Tags:           gtk images
Comments:       gir files
                
Change-log:     2016/08/13 v 2.34.0 (bmarkus)
                2017/03/15 v 2.36.5 (juanito)
                2020/04/15 v 2.40.0 (juanito)
Current:        2023/07/27 v 2.42.10 on 14.x (aus9)  '  > $P-gir.tcz.info
echo 'gdk-pixbuf.tcz
gobject-introspection.tcz' > $P-gir.tcz.dep 

echo 'Title:          gdk-pixbuf-locale.tcz
Description:    language files
Version:        2.42.10
Author:         gdk-pixbuf Team
Original-site:  https://download.gnome.org/sources/gdk-pixbuf
Copying-policy: LGPL v2.1
Size:           784K
Extension_by:   aus9
Tags:           gtk images
Comments:       untested by me
                
Change-log:     2023/07/27 v 2.42.10 on 14.x 
Current:        2023/07/27  '  > $P-locale.tcz.info
echo 'gdk-pixbuf.tcz' > $P-locale.tcz.dep 

echo 'Title:          gdk-pixbuf.tcz
Description:    Toolkit for image loading and pixel buffer manipulation
Version:        2.42.10
Author:         gdk-pixbuf Team
Original-site:  https://download.gnome.org/sources/gdk-pixbuf
Copying-policy: LGPL v2.1
Size:           168K
Extension_by:   aus9
Tags:           gtk images
Comments:       Used by GTK* to load and manipulate images
                
Change-log:     2016/08/13 v 2.34.0 (bmarkus)
                2017/03/15 v 2.36.5 (juanito)
                2020/04/15 v 2.40.0 (juanito)
Current:        2023/07/27 v 2.42.10 on 14.x (aus9) '  > $P.tcz.info

readelf -d $P/usr/local/lib/* | grep 'NEEDED' 
#[libglib-2.0.so.0][libgobject-2.0.so.0][libgmodule-2.0.so.0][libgio-2.0.so.0] glib2
#[libpng16.so.16]libpng
#[libjpeg.so.62]libjpeg-turbo
readelf -d $P/usr/local/lib/gdk-pixbuf-2.0/2.10.0/loaders/* | grep 'NEEDED'
#[libgdk_pixbuf-2.0.so.0] this TCE

# NOTE shared-mime-info is a dep of gtk2/3/4
readelf -d $P/usr/local/bin/* | grep 'NEEDED' # no extras

echo 'glib2.tcz
libpng.tcz
libjpeg-turbo.tcz ' > $P.tcz.dep

# test $ gdk-pixbuf-thumbnailer sample.tiff thumb2 
# input 640x960 thumb2 171x246 not exactly small but it does thumb



