#!/bin/sh
# test we are root
if [ "$(id -u)" != "0" ]; then
   echo "run as root now exitting"
   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=librsvg
V=2.40.21
SRC=$P-$V
USER=`cat /etc/sysconfig/tcuser`
LIST="compiletc squashfs-tools wget rust gdk-pixbuf-dev \
pango-dev libcroco-dev gobject-introspection-dev  \
gdk-pixbuf-gir pango-gir"   
    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 --no-check certificate \
https://download.gnome.org/sources/$P/2.40/$SRC.tar.xz"  $USER
# https://download.gnome.org/sources/librsvg/2.40/librsvg-2.40.21.tar.xz
tar xvf $SRC*xz
cd $SRC
./configure --prefix=/usr/local --enable-gtk-doc-html=no \
--enable-introspection=yes
# prefix:                         /usr/local
# compiler:                       gcc
# Debugging information for Rust: no
# Build introspectable bindings:  yes
# Build Vala bindings:            no
# Build GdkPixbuf loader:         yes
# GTK+ 3.10.0 or later:           no
# Build miscellaneous tools:      yes
make -j4 # 
make install-strip DESTDIR=/tmp/$P # install-strip fails
cd /tmp

# dev
#####
mkdir -p $P-dev/usr/local/lib
mkdir -p $P-dev/usr/local/lib/gdk-pixbuf-2.0/2.10.0/loaders
mv $P/usr/local/include $P-dev/usr/local/
mv $P/usr/local/lib/pkgconfig $P-dev/usr/local/lib/
mv $P/usr/local/lib/*.a $P-dev/usr/local/lib 
rm -rf $P/usr/local/lib/*.la
mv $P/usr/local/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.a \
$P-dev/usr/local/lib/gdk-pixbuf-2.0/2.10.0/loaders/
rm -f $P/usr/local/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.la

# 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

# main
#######
mkdir -p $P/usr/local/share/doc/$P
echo 'GPL v2' > $P/usr/local/share/doc/$P/COPYING
rm -rf $P/usr/local/share/gtk-doc
rm -rf $P/usr/local/share/man

# tce.install
###########
mkdir -p $P/usr/local/tce.installed
cat > $P/usr/local/tce.installed/$P << 'EOF'
#!/bin/sh
gdk-pixbuf-query-loaders --update-cache
EOF
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"
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

echo 'Title:          librsvg-dev.tcz
Description:    dev files
Version:        2.40.21
Author:         librsvg Team
Original-site:  http://ftp.gnome.org/pub/gnome/sources/librsvg
Copying-policy: GPL v2
Size:           1.1M
Extension_by:   aus9  
Tags:           svg
Comments:       dev files
                
Change-log:     2016/08/13 v 2.40.16 on 8.x(bmarkus)
Current:        2023/08/08 v 2.40.21 on 14.x (aus9)'     > $P-dev.tcz.info
# do not include gobject-introspection-dev
echo 'librsvg.tcz
libcroco-dev.tcz
gdk-pixbuf-dev.tcz
libcroco-dev.tcz    ' > $P-dev.tcz.dep

echo 'Title:          librsvg-gir.tcz
Description:    gir files
Version:        2.40.21
Author:         librsvg Team
Original-site:  http://ftp.gnome.org/pub/gnome/sources/librsvg
Copying-policy: GPL v2
Size:           16K
Extension_by:   aus9
Tags:           svg
Comments:       gir files
                
Change-log:     2016/08/13 v 2.40.16 on 8.x(bmarkus)
Current:        2023/08/08 v 2.40.21 on 14.x (aus9)'     > $P-gir.tcz.info
echo 'librsvg.tcz
gdk-pixbuf-gir.tcz 
pango-gir.tcz    ' > $P-gir.tcz.dep

echo 'Title:          librsvg.tcz
Description:    Library and tools to manipulate, convert and view SVG images
Version:        2.40.21
Author:         librsvg Team
Original-site:  http://ftp.gnome.org/pub/gnome/sources/librsvg
Copying-policy: GPL v2
Size:           100K
Extension_by:   aus9 
Tags:           svg
Comments:       Binaries only
                
Change-log:     2016/08/13 v 2.40.16 on 8.x(bmarkus)
Current:        2023/08/08 v 2.40.21 on 14.x (aus9)'     > $P.tcz.info

readelf -d $P/usr/local/bin/* | grep 'NEEDED' 
#[librsvg-2.so.2]this TCE
#[libpangoft2-1.0.so.0][libpangocairo-1.0.so.0][libpango-1.0.so.0]pango
#[libfontconfig.so.1]      fontconfig cairo pango
#[libfreetype.so.6]freetype "
#[libpng16.so.16]libpng cairo pango
#[libcroco-0.6.so.3]libcroco
#[libxml2.so.2]libxml2 "
#[libgio-2.0.so.0][libgobject-2.0.so.0][libglib-2.0.so.0]glib2 cairo pango
#[libgdk_pixbuf-2.0.so.0]gdk-pixbuf
#[libharfbuzz.so.0]harfbuzz pango
#[libcairo.so.2]cairo pango
readelf -d $P/usr/local/lib/*.so | grep 'NEEDED' # no extra
readelf -d $P/usr/local/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so
#[libpixbufloader-svg.so]this TCE

echo 'pango.tcz
libcroco.tcz
gdk-pixbuf.tcz ' > $P.tcz.dep

Tests
# $ rsvg-convert sample.svg -w 200 -h 200 -f png -o 3.png
# file 3.png
# 3.png: PNG image data, 200 x 200, 8-bit/color RGBA, non-interlaced
# feh 3.png  -> success
# also visible in chromium-browser




