#!/bin/sh
# test we are root
if [ "$(id -u)" != "0" ]; then
   echo "run as root now exitting"
   exit 1
fi
# build order is libfm-extra-dev menu-cache libfm then pcmanfm
##########################################
# inject libgobject-2.0.la libglib-2.0.la libffi.la
##########################################
export CFLAGS="-march=armv8-a+crc -mtune=cortex-a72 -Os -pipe" 
export CXXFLAGS="-march=armv8-a+crc -mtune=cortex-a72 -Os -pipe \
-fno-exceptions -fno-rtti"

P=libfm
V=1.3.1
SRC=$P-$V
USER=`cat /etc/sysconfig/tcuser`

LIST="menu-cache-dev libexif-dev gtk2-dev"
for Z in $LIST
    do 
    su -c "tce-load -i $Z" $USER
done

cd /tmp
su -c "/usr/local/bin/wget -nc --no-check-certificate \
https://downloads.sourceforge.net/pcmanfm/$SRC.tar.xz   "  $USER
mkdir $P
xz -d *xz && tar xvf *tar
cd $SRC
# compile requests etc for configs
./configure --prefix=/usr/local --sysconfdir=/etc --enable-static=no \
--with-gtk=2 --disable-old-actions
##################################  etc/ is needed not u loc etc
# prefix: /usr/local
# sysconfdir:   /etc
# Enable compiler flags and other support for debugging: no
# Build udisks support (Linux only, experimental): no
# Build with libexif for faster thumbnail loading: yes
# Build demo program src/demo/libfm-demo: no
# Build with custom actions support (requires Vala): no
# Large file support: yes
# GIO module for preferred apps (for glib < 2.28 only): not required
# Build libfm-gtk for Gtk+ version: 2.0
# Build API doc with gtk-doc (recommended for make dist): no
####################################################  
make -j5  # about  1Min make check takes too long
make install-strip DESTDIR=/tmp/$P
cd /tmp

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

# doc
#####
mkdir -p $P-doc/usr/local/share/doc/$P
mv $P/usr/local/share/man $P-doc/usr/local/share/
cp $SRC/AUTHORS $P-doc/usr/local/share/doc/$P
cp $SRC/COPYING $P-doc/usr/local/share/doc/$P

# dev
#####
mkdir -p $P-dev/usr/local/lib
mv $P/usr/local/include $P-dev/usr/local/
rm -rf $P-dev/usr/local/include/libfm
mv $P/usr/local/lib/pkgconfig $P-dev/usr/local/lib/
mv $P/usr/local/lib/*a $P-dev/usr/local/lib/
chmod 644 $P-dev/usr/local/lib/*a 

##################
# dev tce.installed to avoid libfm-extra-dev duplication
###################
mkdir -p $P-dev/usr/local/tce.installed
echo '#!/bin/sh
# Due to libfm-extra duplications removes all libfm* files 
# Link to libfm and not libfm-extra, libfm is loaded 
# before libfm-dev so some duplication 
P=libfm
INC=/usr/local/include
LIB=/usr/local/lib
LOOP1=/tmp/tcloop/$P-dev/usr/local/lib
LOOP2=/tmp/tcloop/$P-dev/usr/local/lib/pkgconfig
LOOP3=/tmp/tcloop/$P-dev/usr/local/include
LOOP4=/tmp/tcloop/$P/usr/local/lib

rm -rf $INC/$P*
rm -rf $LIB/pkgconfig/$P*
rm -rf $LIB/$P*la
ln -s $LOOP1/*la $LIB/
ln -s $LOOP2/*pc $LIB/pkgconfig
ln -s $LOOP3/$P-1.0 $INC/
ln -s $LOOP3/$P-1.0 $INC/$P
rm -rf $LIB/$P*so*
ln -s $LOOP4/$P*so* $LIB/
' > $P-dev/usr/local/tce.installed/$P-dev 
chown -R root:staff $P-dev/usr/local/tce.installed
chmod -R 775 $P-dev/usr/local/tce.installed

# main    
#######
APPS=$P/usr/local/share/applications

# LXDE is not in repo so remove its file
rm -rf $APPS/lxshortcut*

# we can show desktop outside lxde, its the only desktop left
sed 's|OnlyShowIn=LXDE;||' -i $APPS/$P*desktop   
sed 's|X-LXDE-Settings;||' -i $APPS/$P*desktop

# I need to change libfm.conf to affect MAINLY trash network
EXL=$P/etc/xdg/$P/$P.conf
rm -rf $EXL

echo '# Change in pcmanfm -> Edit -> Preferences 
# Any changes you make will edit ~/.config/libfm/libfm.conf

[config]
single_click=1
use_trash=0
confirm_del=1
confirm_trash=0
quick_exec=1
thumbnail_local=1
thumbnail_max=2048

[ui]
big_icon_size=48
small_icon_size=24
thumbnail_size=128
pane_icon_size=24
show_thumbnail=1

[places]
places_home=1
places_desktop=1
places_root=1
places_computer=0
places_trash=0
places_applications=0
places_network=0
places_unmounted=0' > $EXL

# tce.installed
################
mkdir -p $P/usr/local/tce.installed
echo '#!/bin/sh
# avoid libfm-extra-dev duplication 
P=libfm
LIB=/usr/local/lib
LOOP=/tmp/tcloop/$P/usr/local/lib
rm -rf $LIB/$P*so*
ln -s $LOOP/$P*so* $LIB/
' > $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-locale $P-dev $P-doc "
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
        find etc -not -type d >> /tmp/$Z.tcz.list
        sed 's|usr|/usr|g' -i /tmp/$Z.tcz.list
        sed 's|etc|/etc|g' -i /tmp/$Z.tcz.list
	cd /tmp
done

ls -hal

echo 'Title:          libfm-dev.tcz
Description:    devs for libfm 
Version:        1.3.1
Author:         see doc TCE AUTHORS
Original-site:  https://downloads.sourceforge.net/pcmanfm
Copying-policy: GPL v2
Size:           44K
Extension_by:   aus9
Tags:           pcmanfm     
Comments:       Dev files
                
Change-log:     2020/09/06 v 1.3.1 for 12x
Current:        2020/09/06    ' > $P-dev.tcz.info

echo 'Title:          libfm-doc.tcz
Description:    docs for libfm 
Version:        1.3.1
Author:         see doc TCE AUTHORS
Original-site:  https://downloads.sourceforge.net/pcmanfm
Copying-policy: GPL v2
Size:           8K
Extension_by:   aus9
Tags:           pcmanfm     
Comments:       Mainly man pages
 
Change-log:     2020/09/06 v 1.3.1 for 12x
Current:        2020/09/06  ' > $P-doc.tcz.info

echo 'Title:          libfm-locale.tcz
Description:    locales for libfm 
Version:        1.3.1
Author:         see doc TCE AUTHORS
Original-site:  https://downloads.sourceforge.net/pcmanfm
Copying-policy: GPL v2
Size:           420K
Extension_by:   aus9
Tags:           locale   pcmanfm   
Comments:       locales untested by me
  
Change-log:     2020/09/06 v 1.3.1 for 12x
Current:        2020/09/06  ' > $P-locale.tcz.info

echo 'Title:          libfm.tcz
Description:    Library File Manager for pcmanfm 
Version:        1.3.1
Author:         see doc TCE AUTHORS
Original-site:  https://downloads.sourceforge.net/pcmanfm
Copying-policy: GPL v2
Size:           308K
Extension_by:   aus9
Tags:           pcmanfm      
Comments:       Config will auto-create at ~/.config/libfm/libfm.conf
                Original /etc/xdg/libfm/libfm.conf

                gvfs and trash can support disabled. pcmanfm has  
                the setting but do not try to use trash please.

Change-log:     2020/09/06 v 1.3.1 for 12x
Current:        2020/09/06   ' > $P.tcz.info

echo 'libfm.tcz
menu-cache-dev.tcz 
gtk2-dev.tcz 
libexif-dev.tcz '> $P-dev.tcz.dep
echo 'man-db.tcz ' > $P-doc.tcz.dep
echo 'libfm.tcz ' > $P-locale.tcz.dep
echo 'menu-cache.tcz
libexif.tcz
gtk2.tcz ' > $P.tcz.dep
