Posted: Thu 04 Apr 2013, 05:59
mavrothal, and of course others interested.
Here is my latest (snapshot, still work in progress) adrive script.:
I call it unpack_pkgs2sfs (anyone wanna rename it?
)
Here is my latest (snapshot, still work in progress) adrive script.:
Code: Select all
#!/bin/sh
APP=$0
PROG=${APP##*/}
echo $PROG
[ ! "$1" ] && echo "provide a package name or \"a\" for an Adrive" && exit
[ "$2" = "xz" ] && COMP="-comp xz" || COMP=""
. /etc/DISTRO_SPECS
[ "$1" = "a" ] && DIR=${DISTRO_ADRVSFS%.*} || DIR=$1
[ ! "$DIR" ] && \
echo "maybe this pup can't handle adrive? Provide a package name" && exit
[ -d $DIR ] || mkdir -p ${DIR}/root/.packages
export RDIR=${DIR}/root/.packages
[ `echo $DIR|grep '\-[*]'` ] && DESC=${DIR%%-*}-desc || DESC=${DIR%%_*}-desc
touch ${RDIR}/${DESC}
mkdir -p ${RDIR}/builtin_files
BDIR=${RDIR}/builtin_files
MDIR=${RDIR#*/}
SFS=${DIR}.sfs
manifest_func(){
PKG=$1
GENNAME=$2
[ "$GENNAME" ] || GENNAME=`cat /tmp/genname$$`
echo -n "$GENNAME "
case ${PKG##*.} in
*gz)O=z ;;
txz)O=J ;;
esac
tar --list -$O -f $PKG > root/.packages/builtin_files/${GENNAME}
sed -i -e "s%^\\./${PDIR}%%g" \
-e '/^install/d' \
-e 's|^\./||' \
-e 's|^/||g' \
-e '/^pet/d' \
-e '/^pinstall/d' \
-e '/^puninstall/d' \
-e 's|^|/|g' root/.packages/builtin_files/${GENNAME}
test -f /tmp/genname$$ && rm /tmp/genname$$
}
unpack_func()
{
echo $1|grep -q 'pet$'
if [ "$?" = 0 ];then
#pet
PPKG=$1
pet2tgz $PPKG
NPPKG=`ls|grep gz$`
tar xf $NPPKG 2>/dev/null
#[ "$?" = 0 ] || exit $?
PDIR=`basename $1 .pet`
PDESC=`grep $1 $HOME/.packages/Packages-puppy*|head -1`
[ ! "$PDESC" ] && \
PDESC=`cat $PDIR/pet.specs`
echo ${PDESC##*:} >> ${MDIR}/${DESC}
GENNAME=`cat $PDIR/pet.specs|cut -d '|' -f 2`
cp -a --remove-destination $PDIR/* .
manifest_func $NPPKG $GENNAME
rm -r $PDIR
rm *.* 2>/dev/null
#rm pet.specs
else
#txz|tgz
SPKG=$1
PDIR=${SPKG%.*}
mkdir $PDIR
mv $SPKG $PDIR
(cd $PDIR
tar xf $SPKG
[ "$?" = 0 ] || exit $?
[ -f install/doinst.sh ]&& . install/doinst.sh 2>/dev/null
GENNAME=`tail -6 install/slack-desc | head -1 |cut -d ':' -f1`
[ ! "$GENNAME" ] && GENNAME=${SPKG%%-*} #have a guess
echo -n $GENNAME > /tmp/genname$$
rm -r install
SDESC=`grep $1 $HOME/.packages/Packages-slackware*|head -1`
echo ${SDESC##*:} >> ../${MDIR}/${DESC}
)
cp -a --remove-destination ${PDIR}/* .
manifest_func $SPKG
rm -rf $PDIR
fi
}
for i in `ls|grep -iE "txz$|tgz$|pet$"|grep -v "$PROG"`; do
cp -af $i $DIR
(cd $DIR
#echo -n "$i "
unpack_func $i
rm $i 2>/dev/null)
done
echo
echo "fixing .desktop entries"
(cd $DIR/usr/share/applications
for x in *
do sed -i -e 's| %u||g' \
-e 's| %U||g' $x
done
MOZ="`ls|grep -iE 'mozilla-firefox|seamonkey'|tr '\n' ' '`"
echo $MOZ
for y in $MOZ
do
CATG=`grep '^Categories' $y`
NEWCAT='Categories=X-Internet-browser;'
if [ "$CATG" ];then
sed -i "s|$CATG|$NEWCAT|" $y
fi
done
for z in *
do
ICON=`grep '^Icon' $z`
ZICON=`echo "$ICON"|grep -iE 'png$|xpm$|svg$'`
[ "$ZICON" ] || sed -i "s|$ICON|${ICON}.png|" $z #gross assumption ..png
done
for w in *
do
CATP=`grep 'Categories' $w|grep 'Player'`
NEWCATP='Categories=Player'
if [ "$CATP" ];then
sed -i "s|$CATP|$NEWCATP|" $w
fi
done
# fix sed error if any
[ -f sed* ] && rm sed*
)
[ -x $DIR/etc/init.d/rc.samba ] && chmod 644 $DIR/etc/init.d/rc.samba
echo "disabling samba on first boot"
echo "now building manifest"
echo "fixing ownership"
chown -R root:root $DIR
echo "mksquashfs $DIR $SFS $COMP"
#exit #test
mksquashfs $DIR $SFS $COMP
[ "$?" = 0 ] && echo "Success!" || echo "FAILED :("
