#!/bin/sh
# test we are root
if [ "$(id -u)" != "0" ]; then
   exit 1
fi

# build order is libfm-extra-dev menu-cache libfm then pcmanfm
export CFLAGS="-mtune=generic -Os -pipe"
export CXXFLAGS="-mtune=generic -Os -pipe -fno-exceptions -fno-rtti"

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

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

# build 1 wants /etc/ not /usr/local/etc
cd /tmp
su -c "/usr/local/bin/wget -nc --no-check-certificate \
https://downloads.sourceforge.net/pcmanfm/$SRC.tar.xz   "  $USER
tar xvf $SRC*xz
cd $SRC
# compile requests etc for configs
./configure --prefix=/usr/local --sysconfdir=/etc --enable-static=no \
--with-gtk=2 --disable-old-actions 
# 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 check  # about 1M
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

# no doc
#####
rm -rf $P/usr/local/share/man 

# dev
#####  we will use the libfm-extra.pc from TCE not the libfm-extra-dev for pcmanfm build
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/
rm -rf  $P/usr/local/lib/*la 

# dev tce.installed 
###################
mkdir -p $P-dev/usr/local/tce.installed
cat >> $P-dev/usr/local/tce.installed/$P-dev <<'EOF'
#!/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
DIR1=$P-dev/usr/local
DIR2=/tmp/tcloop/$DIR1/lib/pkgconfig
DIR3=/tmp/tcloop/$DIR1/include
DIR4=/tmp/tcloop/$P/usr/local/lib

rm -rf $INC/$P*
rm -rf $LIB/pkgconfig/$P*
rm -rf $LIB/$P*so*

# The linking is what TC would have done if it was simple TCE
ln -s $DIR2/*pc $LIB/pkgconfig/
ln -s $DIR3/$P-1.0 $INC/
ln -s $DIR3/$P-1.0 $INC/$P
ln -s $DIR4/$P*so* $LIB/
EOF
chown -R root:staff $P-dev/usr/local/tce.installed
chmod -R 775 $P-dev/usr/local/tce.installed

# main    
############################################################################################################
# remove trash support, its messy otherwise
rm -rf $P/usr/local/lib/$P/modules/gtk-menu-trash.so

# 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

# fix desktops and lxshortcut
#############  
APPS=$P/usr/local/share/applications
sed 's|X-LXDE-Settings;||' -i $APPS/$P*desktop
sed 's|OnlyShowIn=LXDE|NoDisplay=true|' -i $APPS/$P*desktop
rm -rf $APPS/lxshortcut.desktop
rm -rf $P/usr/local/bin/lxshortcut

mkdir -p $P/usr/local/share/doc/$P
echo 'GPL v2' > $P/usr/local/share/doc/$P/COPYING

# fix read-write modules dir as per error launch pcmanfm error = modules directory is not accessible
# net suggested /usr/lib/x86_64-linux-gnu/libfm/modules -> nope
# it wants read-write at our modules dir

mkdir -p $P/usr/local/share/$P/files
mv $P/usr/local/lib/$P/modules/*so $P/usr/local/share/$P/files

# tce.installed
################
mkdir -p $P/usr/local/tce.installed
cat >> $P/usr/local/tce.installed/$P <<'EOF'
#!/bin/sh
# avoid libfm-extra-dev duplication 
P=libfm
LIB=usr/local/lib
LOOP1=/tmp/tcloop/$P/$LIB
rm -rf /$LIB/$P*so*
# The linking is what TC would have done if it was simple
ln -s $LOOP1/$P*so* /$LIB/

# make a modules dir that is rw
mkdir -p /$LIB/$P/modules
LOOP=/tmp/$P/usr/local/share/$P/files
cp $LOOP/*.so /$LIB/$P/modules
EOF
chown -R root:staff $P/usr/local/tce.installed
chmod -R 775 $P/usr/local/tce.installed

# TCZ them
###########
LIST="$P-locale $P-dev "
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

LIST="$P  "
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.2
Author:         https://github.com/lxde/libfm/blob/master/AUTHORS
Original-site:  tps://downloads.sourceforge.net/pcmanfm
Copying-policy: GPL v2
Size:           84K
Extension_by:   aus9 @linuxquestions.org 
Tags:           pcmanfm     
Comments:       Dev files
                install script will delete if found,
                libfm-extra-dev files
                
Change-log:     2014/01/18 First version, 1.1.2.2 (bmarkus)
                2015/08/20 v1.2.3 (gordon64)
                2019/02/11 v1.2.5 on 10x (aus9)
                2020/07/19 v1.3.1 for 11x modify install script
                2023/03/26 v 1.3.2 on 14x  
Current:        2024/04/04 remove la files, change modules dir on 15x    ' > $P-dev.tcz.info
echo 'libfm.tcz 
menu-cache-dev.tcz 
gtk2-dev.tcz 
libexif-dev.tcz    '> $P-dev.tcz.dep

echo 'Title:          libfm-locale.tcz
Description:    locales for libfm 
Version:        1.3.2
Author:         https://github.com/lxde/libfm/blob/master/AUTHORS
Original-site:  https://downloads.sourceforge.net/pcmanfm
Copying-policy: GPL v2
Size:           596K
Extension_by:   aus9 @linuxquestions.org
Tags:           locale   pcmanfm   
Comments:       locales untested by me
  
Change-log:     2014/01/18 First version, 1.1.2.2 (bmarkus)
                2015/08/20 v1.2.3 (gordon64)
                2019/02/11 v1.2.5 on 10x (aus9)
                2020/07/19 v1.3.1 for 11x modify install script
                2023/03/26 v 1.3.2 on 14x  
Current:        2024/04/04 remove la files, change modules dir on 15x   ' > $P-locale.tcz.info
echo 'libfm.tcz ' > $P-locale.tcz.dep

echo 'Title:          libfm.tcz
Description:    mainly lib files for pcmanfm, see below 
Version:        1.3.2
Author:         https://github.com/lxde/libfm/blob/master/AUTHORS
Original-site:  https://downloads.sourceforge.net/pcmanfm
Copying-policy: GPL v2
Size:           372K
Extension_by:   aus9 @linuxquestions.org
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 use trash please.

                Install script will delete if found any
                libfm-extra-dev so files & make a rw modules dir

Change-log:     2014/01/18 First version, 1.1.2.2 (bmarkus)
                2015/08/20 v1.2.3 (gordon64)
                2019/02/11 v1.2.5 on 10x (aus9)
                2020/07/19 v1.3.1 for 11x modify install script
                2023/03/26 v 1.3.2 on 14x  
Current:        2024/04/04 remove la files, change modules dir on 15x    ' > $P.tcz.info


readelf -d $P/usr/local/lib/*.so | grep 'NEEDED' #  delete any duplicates ignore TCBs
#libgio-2.0.so.0]libgthread-2.0.so.0]libgobject-2.0.so.0]libglib-2.0.so.0] glib2 -> at-spi2-core -> gtk2
#libgtk-x11-2.0.so.0]libgdk-x11-2.0.so.0]  gtk2
#libpangocairo-1.0.so.0]libpango-1.0.so.0]libpangoft2-1.0.so.0] pango -> gtk2
#libatk-1.0.so.0]   atk-spi2-core -> gtk2            
#libgdk_pixbuf-2.0.so.0]gdk-pixbuf2 -> gtk2 
#libfontconfig.so.1] fontconfig cairo -> pango -> gtk2
#libfreetype.so.6] freetype -> fontconfig -> cairo -> pango -> gtk2
#libharfbuzz.so.0] harfbuzz -> freetype -> fontconfig -> cairo -> pango -> gtk2         
#libcairo.so.2] cairo -> pango -> gtk2
#libmenu-cache.so.3] menu-cache  
#libfm.so.4]   THIS tce        
#libexif.so.12] libexif
readelf -d $P/usr/local/bin/* | grep 'NEEDED'                  # no extra to above
readelf -d $P/usr/local/lib/libfm/modules/*.so | grep 'NEEDED' # no extra to above

# icon theme removed now
echo 'gtk2.tcz
menu-cache.tcz
libexif.tcz  ' > $P.tcz.dep

# pass 1 submitqc getting confused with libfm-extra-dev and added it etc
submitqc --libs
rm -rf *.zsync

# not used on pass 2 after checking other stuff
