#!/bin/sh #written by mistfire, modified by s243a #Build TazPuppy either online or local curdir=`pwd` if [ ! -f $curdir/builder.cfg ]; then echo 'WEBSITE="http://mirror1.slitaz.org/iso/rolling" LIVECD="slitaz-rolling-core.iso"' > $curdir/builder.cfg fi prefix="/64" . $curdir/builder.cfg LABEL1="" xmode="" xinteractive="" unmount_vfs(){ umount -l $curdir/slitaz-rootfs/dev 2>/dev/null umount -l $curdir/slitaz-rootfs/sys 2>/dev/null umount -l $curdir/slitaz-rootfs/proc 2>/dev/null if [ ! -z $prefix ]; then umount -l $curdir/slitaz-rootfs$prefix/dev 2>/dev/null umount -l $curdir/slitaz-rootfs$prefix/sys 2>/dev/null umount -l $curdir/slitaz-rootfs$prefix/proc 2>/dev/null fi umount /mnt/wktaz 2>/dev/null umount /mnt/wksfs 2>/dev/null } trap unmount_vfs EXIT trap unmount_vfs SIGKILL trap unmount_vfs SIGTERM clean_up(){ if [ -d $curdir/slitaz-rootfs ]; then if [ "$(mount | grep "$curdir/slitaz-rootfs/dev")" != "" ]; then umount -l $curdir/slitaz-rootfs/dev fi if [ "$(mount | grep "$curdir/slitaz-rootfs/sys")" != "" ]; then umount -l $curdir/slitaz-rootfs/sys fi if [ "$(mount | grep "$curdir/slitaz-rootfs/proc")" != "" ]; then umount -l $curdir/slitaz-rootfs/proc fi echo "Deleting slitaz-rootfs..." rm -rf $curdir/slitaz-rootfs fi if [ -d $curdir/tazpup-preiso ]; then echo "Deleting tazpup-preiso..." rm -rf $curdir/tazpup-preiso fi if [ -d $curdir/kernel-modules ]; then echo "Deleting kernel-modules..." rm -rf $curdir/kernel-modules fi if [ -d $curdir/slitaz-dload ]; then echo "Deleting slitaz-dload..." rm -rf $curdir/slitaz-dload fi if [ -d $curdir/tazpup-core-files/slitaz-packages-fs ]; then echo "Deleting slitaz-packages-fs..." rm -rf $curdir/tazpup-core-files/slitaz-packages-fs fi if [ -f $curdir/slitaz-rolling-core.iso ]; then echo "Deleting slitaz-rolling-core.iso..." rm -f $curdir/slitaz-rolling-core.iso fi rm -f $curdir/tazpup-core-files/installed-isolated.md5 rm -f $curdir/tazpup-core-files/installed-isolated.info rm -f $curdir/package-deps.txt rm -f $curdir/package-listed if [ -f $curdir/custom-tazpup.iso ]; then echo "Deleting custom-tazpup.iso..." rm -f $curdir/custom-tazpup.iso fi if [ -f $curdir/custom-tazpup.iso.md5 ]; then echo "Deleting custom-tazpup.iso.md5..." rm -f $curdir/custom-tazpup.iso.md5 fi if [ -d $curdir/slitaz-livecd-wkg ]; then rm -rf $curdir/slitaz-livecd-wkg fi } sandbox_pkg(){ cmd="$1" pkg="$2" bname="$(basename $pkg)" if [ ! -d $curdir/tazpup-core-files/slitaz-sandbox ]; then mkdir -p $curdir/tazpup-core-files/slitaz-sandbox 2> /dev/null fi cp -f $pkg $curdir/tazpup-core-files/slitaz-packages-fs/$bname mount -t aufs -o udba=reval,diropq=w,dirs=$curdir/tazpup-core-files/slitaz-packages-fs=rw:$curdir/slitaz-rootfs=ro unionfs $curdir/tazpup-core-files/slitaz-sandbox if [ "$cmd" == "install" ]; then xcmd="tazpkg install /$bname --forced" elif [ "$cmd" == "remove" ]; then xcmd="tazpkg remove $pkg" fi chroot $curdir/tazpup-core-files/slitaz-sandbox/ $xcmd umount -l $curdir/tazpup-core-files/slitaz-sandbox rm -f $curdir/tazpup-core-files/slitaz-packages-fs/$bname } install_pkg(){ pkg="$1" opt_in=$2 options=${opt_in:-'--local'} #In some cases might want to use options like --forced --newconf --nodeps of --local echo "installing $1" echo "options=$options" bname="$(basename $pkg)" #cp -f $pkg $curdir/slitaz-rootfs/$bname #We'll copy everything into $curdir/slitaz-rootfs/pkgs before installig anything. echo "#!/bin/sh cd $prefix/pkgs tazpkg $options install $bname --root=$prefix " > $curdir/slitaz-rootfs$prefix/pkgs/start.sh #$curdir/slitaz-rootfs/start.sh chmod +x $curdir/slitaz-rootfs$prefix/pkgs/start.sh chroot $curdir/slitaz-rootfs/ $prefix/pkgs/start.sh #Consider chrooting into the prefix folder once enough packages are installed #read -p "Press enter to continue" #added by s243a rm -f $curdir/slitaz-rootfs$prefix/pkgs/$bname rm -f $curdir/slitaz-rootfs$prefix/pkgs/start.sh } install_pet_pkg(){ pkg="$1" bname="$(basename $pkg)" cp -f $pkg $curdir/slitaz-rootfs/$bname if [ $xforced -eq 1 ]; then line="tazpet /$bname --forced" else line="tazpet /$bname" fi echo "#!/bin/sh $line " > $curdir/slitaz-rootfs/start.sh chmod +x $curdir/slitaz-rootfs/start.sh chroot $curdir/slitaz-rootfs/ /start.sh rm -f $curdir/slitaz-rootfs/$bname rm -f $curdir/slitaz-rootfs/start.sh } make_pupcore(){ mkdir -p $curdir/slitaz-rootfs$prefix/usr/share/pupcore 2> /dev/null cp -f $curdir/tazpup-core-files/puppy/bin/ps $curdir/slitaz-rootfs$prefix/usr/share/pupcore/ps.bak cp -f $curdir/tazpup-core-files/puppy/sbin/init $curdir/slitaz-rootfs$prefix/usr/share/pupcore/init.bak cp -f $curdir/tazpup-core-files/puppy/sbin/losetup $curdir/slitaz-rootfs$prefix/usr/share/pupcore/losetup.bak cp -f $curdir/tazpup-core-files/slitaz/bin/gnome-alsamixer $curdir/slitaz-rootfs$prefix/usr/share/pupcore/gnome-alsamixer.bak cp -f $curdir/tazpup-core-files/slitaz/etc/inittab $curdir/slitaz-rootfs$prefix/usr/share/pupcore/inittab.bak cp -f $curdir/tazpup-core-files/slitaz/etc/init.d/daemon $curdir/slitaz-rootfs$prefix/usr/share/pupcore/daemon.bak cp -f $curdir/tazpup-core-files/slitaz/etc/init.d/bootopts.sh $curdir/slitaz-rootfs$prefix/usr/share/pupcore/bootopts.sh.bak } remove_some_slitaz(){ if [ -z $prefix]; then #TODO ad or case for when we want to enter this if block but the prefix exists rm -rf $curdir/slitaz-rootfs$prefix/lib/modules/* for pkg2 in $(ls -1 $curdir/slitaz-rootfs/var/lib/tazpkg/installed/ | grep -E "^linux" | tr '\n' ' ') do chroot $curdir/slitaz-rootfs$prefix tazpkg remove $pkg2 done for pkg2 in $(ls -1 $curdir/slitaz-rootfs/var/lib/tazpkg/installed/ | grep -E "^firmware-" | tr '\n' ' ') do chroot $curdir/slitaz-rootfs$prefix tazpkg remove $pkg2 done if [ -f $curdir/remove-builtin.txt ]; then for pkg2 in $(cat $curdir/remove-builtin.txt) do chroot $curdir/slitaz-rootfs$prefix tazpkg remove $pkg2 done fi fi rm -f $curdir/slitaz-rootfs/etc/dialogrc } extractfs() { one=$1 #$prefix2=${one:-""} #If we have a prefix it is usually empty but in theory if [ ! -d $curdir/slitaz-rootfs ]; then mkdir $curdir/slitaz-rootfs fi (busybox unlzma -c $1 || cat $1 ) 2>/dev/null | (cd $curdir/slitaz-rootfs; busybox cpio -idmu > /dev/null) } #extractfs_prefix is not used yet. It will be be used if one want to use a seperate iso for the build than the build system extractfs_prefix() { #TODO use options to combine this with the above function #one=$1 #TODO allow prefix2 to be defined as an ninput argument #$prefix2=${one:-""} #If we have a prefix it is usually empty but in theory if [ ! -d $curdir/slitaz-rootfs$prefix ]; then mkdir $curdir/slitaz-rootfs$prefix fi (busybox unlzma -c $1 || cat $1 ) 2>/dev/null | (cd $curdir/slitaz-rootfs$prefix2; busybox cpio -idmu > /dev/null) } select_local(){ IMG="$(Xdialog --stdout --title "$LABEL1 Select Slitaz image file" --fselect $HOME 0 0)" if [ $? -ne 0 ]; then echo "Operation cancelled" exit fi if [ "$IMG" == "" ]; then echo "No image file selected" exit fi } install_local_pkg(){ if [ ! -d $curdir/slitaz-packages ]; then echo "Core tazpup package is missing." exit else if [ $(find $curdir/slitaz-packages -type f -name "*.tazpkg" | wc -l) -eq 0 ]; then echo "Core tazpup package is missing." exit fi if [ $(find $curdir/special-packages -type f -name "*.tazpkg" | wc -l) -eq 0 ]; then echo "Special tazpup package is missing." #exit read -p "Press enter to continue" #added by s243a fi for pkg in $(find $curdir/slitaz-packages -type f -name "*.tazpkg" | sort -r) do echo "Processing core package: $(basename $pkg)" install_pkg "$pkg" done for pkg in $(find $curdir/special-packages -type f -name "*.tazpkg" | sort -r) do echo "Processing special package: $(basename $pkg)" install_pkg "$pkg" done fi } install_online_pkg(){ if [ ! -f $curdir/package-cloud.txt ]; then echo "Package list is missing." exit else if [ $(find $curdir/special-packages -type f -name "*.tazpkg" | wc -l) -eq 0 ]; then echo "Special tazpup package is missing." exit fi for pkg in $(cat $curdir/package-cloud.txt | tr '\n' ' ') do echo "Processing core package: $(basename $pkg)" get_install_pkg "$pkg" done for pkg in $(find $curdir/special-packages -type f -name "*.tazpkg" | sort -r) do echo "Processing special package: $(basename $pkg)" install_pkg "$pkg" done fi } get_install_pkg(){ pkg="$1" echo "#!/bin/sh cd $prefix/pkgs tazpkg get-install $pkg " > $curdir/slitaz-rootfs$prefix/pkgs/start.sh #$curdir/slitaz-rootfs/start.sh chmod +x $curdir/slitaz-rootfs$prefix/pkgs/start.sh #read -p "Press enter to continue" chroot $curdir/slitaz-rootfs $prefix/pkgs/start.sh rm -f $curdir/slitaz-rootfs$prefix/pkgs/start.sh } download_iso(){ wget -4 -t 2 -T 20 --waitretry=20 --spider -S "$WEBSITE/$LIVECD" if [ $? -ne 0 ]; then echo "Failed to reach $WEBSITE" exit fi wget "$WEBSITE/$LIVECD" -O $curdir/$LIVECD if [ $? -ne 0 ]; then echo "Downloading Slitaz live cd failed" rm -f $curdir/$LIVECD exit fi IMG="$curdir/$LIVECD" } if [ "$(whoami)" != "root" ]; then echo "Requires root access to do it" exit fi if [ "$(which Xdialog)" == "" ]; then echo "Requires Xdialog. Install it first" exit fi if [ ! -w $curdir ]; then echo "The working path is not writable" exit fi if [ ! -e $curdir/tazpup-core-files ]; then echo "Core files are missing" exit fi Xdialog --title "TazPuppy Builder" --ok-label "LOCAL" --cancel-label "ONLINE" --yesno "Select mode for building TazPuppy\n\nLOCAL - Build TazPuppy offline using collection of files and packages\nONLINE - Build TazPuppy using slitaz repo. Internet connection required\n\nNOTE: Both modes requires Puppy ISO file" 0 0 retval3=$? if [ $retval3 -eq 255 ]; then echo "Operation cancelled" exit fi if [ $retval3 -eq 0 ]; then LABEL1="Local Build:" xmode="local" select_local elif [ $retval3 -eq 1 ]; then LABEL1="Online Build:" xmode="online" fi IMGPUP="$(Xdialog --stdout --title "$LABEL1 Select Puppy image file" --fselect $HOME 0 0)" if [ $? -ne 0 ]; then echo "Operation cancelled" exit fi if [ "$IMGPUP" == "" ]; then echo "No puppy image file selected" exit fi Xdialog --title "TazPuppy Builder" --ok-label "Yes" --cancel-label "No" --yesno "Allow the post install script packages to interact?" 0 0 retval3=$? if [ $retval3 -eq 255 ]; then xinteractive=0 exit fi if [ $retval3 -eq 0 ]; then xinteractive=1 else xinteractive=0 fi Xdialog --title "TazPuppy Builder" --ok-label "Yes" --cancel-label "No" --yesno "Force install custom pet package?" 0 0 retval3=$? if [ $retval3 -eq 0 ]; then xforced=1 else xforced=0 fi clean_up if [ "$xmode" == "online" ]; then if [ -f $curdir/$LIVECD ]; then echo "Deleting $LIVECD..." rm -rf $curdir/$LIVECD fi download_iso fi echo "Preparing working folders..." if [ ! -d $curdir/slitaz-livecd-wkg ]; then mkdir $curdir/slitaz-livecd-wkg fi if [ ! -d $curdir/tazpup-preiso ]; then mkdir $curdir/tazpup-preiso fi if [ ! -d /mnt/wktaz ]; then mkdir /mnt/wktaz fi if [ ! -d /mnt/wksfs ]; then mkdir /mnt/wksfs fi echo "Mounting $(basename $IMG)..." mount -o ro $IMG /mnt/wktaz if [ $? -ne 0 ]; then echo "Mounting slitaz image failed" exit fi if [ -f /mnt/wktaz/rootfs.gz ] || [ -f /mnt/wktaz/rootfs1.gz ]; then echo "Copying rootfs gz..." src1="/mnt/wktaz/rootfs*.gz" elif [ -f /mnt/wktaz/boot/rootfs.gz ] || [ -f /mnt/wktaz/boot/rootfs1.gz ]; then echo "Copying rootfs gz..." src1="/mnt/wktaz/boot/rootfs*.gz" else echo "Not a slitaz disc image" umount /mnt/wktaz exit fi cp -f $src1 $curdir/slitaz-livecd-wkg/ umount /mnt/wktaz cd $curdir/slitaz-livecd-wkg rcount=$(ls -1 ./rootfs*.gz | wc -l) if [ $rcount -eq 1 ]; then echo "Extracting rootfs gz..." extractfs $curdir/slitaz-livecd-wkg/rootfs.gz elif [ $rcount -gt 1 ]; then for rf1 in $(ls -1 ./rootfs*.gz | sort -r) do echo "Extracting $(basename $rf1)..." extractfs $rf16 done else echo "No rootfs found" exit fi rm -rf $curdir/slitaz-livecd-wkg remove_some_slitaz rm -rf $curdir/slitaz-rootfs/var/www/tazpanel/menu.d/network/* for file1 in $(find $curdir/slitaz-rootfs/usr/share/icons/ -type f -name "application-x-executable.png") do if [ -L $file1 ]; then fname=$(readlink $file1) if [ "$fname" != "" ]; then if [ "$(basename $fname)" == "application-x-generic.png" ]; then rm -f $file1 fi fi fi done for file1 in $(find $curdir/slitaz-rootfs/usr/share/icons/ -type f -name "application-x-generic.png") do mv -f $file1 $(dirname $file1)/application-x-executable.png done #exit #chroot "$curdir/slitaz-rootfs/" tazpkg setup-mirror http://mirror.slitaz.org/packages/next64/ echo "http://mirror.slitaz.org/packages/next64/">$curdir/slitaz-rootfs/var/lib/tazpkg/mirror echo "SliTaZ Extracted" read -p "Press enter to continue" if [ ! -d $curdir/slitaz-rootfs ]; then echo "Extract rootfs failed" exit fi rm -f $curdir/slitaz-rootfs$prefix/init cd $curdir mkdir -p $curdir/slitaz-rootfs$prefix/pkgs for aDir in slitaz-preinst-pkg slitaz-packages; do cp --remove-destination -arf $curdir/$aDir/* $curdir/slitaz-rootfs$prefix/pkgs #2>/dev/null done cd $curdir mount -o rbind /proc $curdir/slitaz-rootfs/proc #TODO also added mounts in $curdir/slitaz-rootfs$prefix mount -t sysfs none $curdir/slitaz-rootfs/sys if [ $xinteractive -eq 1 ]; then echo "Removing block device files..." rm -rf $curdir/slitaz-rootfs/dev/* #mount bind -t devtmpfs none $curdir/slitaz-rootfs/dev mount -o rbind /dev $curdir/slitaz-rootfs/dev fi make_pupcore cp -f $curdir/tazpup-core-files/slitaz/usr/bin/tazpkg $curdir/slitaz-rootfs$prefix/usr/bin/tazpkg cp -f $curdir/tazpup-core-files/slitaz/usr/bin/tazpet $curdir/slitaz-rootfs$prefix/usr/bin/tazpet cp -f $curdir/tazpup-core-files/slitaz/usr/bin/tazpet-box $curdir/slitaz-rootfs$prefix/usr/bin/tazpet-box cp -f $curdir/tazpup-core-files/slitaz/usr/bin/active-networks $curdir/slitaz-rootfs$prefix/usr/bin/active-networks cp -f $curdir/tazpup-core-files/slitaz/usr/libexec/tazpkg/* $curdir/slitaz-rootfs$prefix/usr/libexec/tazpkg/ mkdir -p $curdir/slitaz-rootfs$prefix/etc/rc.d/ echo "PUPMODE='2'" > $curdir/slitaz-rootfs$prefix/etc/rc.d/PUPSTATE #exit #install_pkg $curdir/slitaz-packages/readline-7.0-x86_64.tazpkg #install_pkg $curdir/slitaz-packages/bash-4.4.p23-x86_64.tazpkg #install_pkg $curdir/extract/busybox-1.27.2-x86_64.tazpkg #cp -f $curdir/extract/busybox-1.27.2-x86_64.tazpkg.extracted/fs/bin/busybox $curdir/slitaz-rootfs/bin/busybox while read aFile; do install_pkg $curdir/slitaz-preinst-pkg/$aFile done <$curdir/slitaz-preinst-pkg/files.txt #TODO append file in directory to files.txt that aren't already on the list #TODO remove from list any files that are not in the directory, unless flagged for remote download. #TODO consider using tazpkg in the prefix folder at this point. echo "Fishished slitaz-preinst-pkg" read -p "Press enter to continue" #added by s243a echo "Processing Slitaz packages..." if [ "$xmode" == "local" ]; then install_local_pkg else install_online_pkg fi #exit if [ -d $curdir/custom-packages ]; then for pkg in $(find $curdir/custom-packages -type f -name "*.tazpkg") do echo "Processing custom package: $(basename $pkg)" install_pkg "$pkg" done fi if [ -d $curdir/pet-packages ]; then for pkg in $(find $curdir/pet-packages -type f -name "*.pet") do echo "Processing pet package: $(basename $pkg)" install_pet_pkg "$pkg" done fi #exit echo "Applying patches..." cp --remove-destination -arf $curdir/tazpup-core-files/slitaz/* $curdir/slitaz-rootfs$prefix/ 2>/dev/null cp --remove-destination -arf $curdir/tazpup-core-files/puppy/* $curdir/slitaz-rootfs$prefix/ 2>/dev/null make_pupcore if [ -f $curdir/slitaz-rootfs$prefix/usr/sbin/hald ]; then mv -f $curdir/slitaz-rootfs$prefix/usr/sbin/hald $curdir/slitaz-rootfs/usr/bin/hald sed -i -e "s#\/usr\/sbin\/hald#\/usr\/bin\/hald#g" $curdir/slitaz-rootfs$prefix/var/lib/tazpkg/installed/hal/files.list sed -i -e "s#\/usr\/sbin\/hald#\/usr\/bin\/hald#g" $curdir/slitaz-rootfs$prefix/var/lib/tazpkg/installed/hal/md5sum sed -i -e "s#\/usr\/sbin\/hald#\/usr\/bin\/hald#g" $curdir/slitaz-rootfs$prefix/etc/init.d/hald fi if [ -f $curdir/slitaz-rootfs$prefix/usr/share/applications/defaults.list ]; then rm -f $curdir/slitaz-rootfs$prefix/usr/share/applications/defaults.list fi cp $curdir/slitaz-post-patch-packages/coreutils-multicall-8.30-x86_64.tazpkg $curdir/slitaz-rootfs$prefix/pkgs/coreutils-multicall-8.30-x86_64.tazpkg install_pkg $curdir/slitaz-post-patch-packages/coreutils-multicall-8.30-x86_64.tazpkg if [ -f $curdir/slitaz-rootfs$prefix/usr/bin/coreutils ]; then echo '#!/bin/sh exec df $@' > $curdir/slitaz-rootfs$prefix/usr/bin/df-FULL chmod +x $curdir/slitaz-rootfs$prefix/usr/bin/df-FULL fi if [ -f $curdir/slitaz-rootfs$prefix/usr/bin/gzip ]; then rm -f $curdir/slitaz-rootfs$prefix/bin/gzip fi if [ -d $curdir/slitaz-rootfs$prefix/usr/lib/grub/i386-slitaz ]; then ln -sr $curdir/slitaz-rootfs$prefix/usr/lib/grub/i386-slitaz $curdir/slitaz-rootfs$prefix/usr/lib/grub/i386-pc ln -sr $curdir/slitaz-rootfs$prefix/usr/lib/grub/i386-slitaz $curdir/slitaz-rootfs$prefix/usr/lib/grub/i386-t2 fi if [ -d $curdir/slitaz-rootfs$prefix/usr/share/boot ]; then ln -sr $curdir/slitaz-rootfs$prefix/usr/share/boot $curdir/slitaz-rootfs$prefix/usr/share/syslinux for file1 in grldr.lzma grub.exe.lzma memdisk.lzma pxelinux.0.lzma do cp -f $curdir/slitaz-rootfs$prefix/usr/share/boot/$file1 $curdir/slitaz-rootfs$prefix/usr/share/boot/$file1.bak unlzma $curdir/slitaz-rootfs$prefix/usr/share/boot/$file1 mv -f $curdir/slitaz-rootfs$prefix/usr/share/boot/$file1.bak $curdir/slitaz-rootfs$prefix/usr/share/boot/$file1 done fi for fullcmd in mount umount ps do if [ "$fullcmd" == "ps" ]; then cp -f $curdir/slitaz-rootfs/bin/ps $curdir/slitaz-rootfs/bin/ps-FULL elif [ -f $curdir/slitaz-rootfs/bin/$fullcmd ]; then ln -rs $curdir/slitaz-rootfs/bin/$fullcmd $curdir/slitaz-rootfs/bin/$fullcmd-FULL fi done ln -rs $curdir/slitaz-rootfs/usr/bin/notify-send $curdir/slitaz-rootfs/usr/bin/notify echo "Updating system database..." if [ ! -z $prefix ]; then mount -o rbind /proc $curdir/slitaz-rootfs$prefix/proc #We might want to do these minds earlier mount -t sysfs none $curdir/slitaz-rootfs$prefix/sys if [ $xinteractive -eq 1 ]; then echo "Removing block device files..." rm -rf $curdir/slitaz-rootfs$prefix/dev/* #Maybe we want to rename rather than delete these #mount bind -t devtmpfs none $curdir/slitaz-rootfs/dev mount -o rbind /dev $curdir/slitaz-rootfs$prefix/dev fi fi chroot "$curdir/slitaz-rootfs$prefix/" tazpkg recharge chroot "$curdir/slitaz-rootfs$prefix/" /usr/bin/update-desktop-database /usr/share/applications chroot "$curdir/slitaz-rootfs$prefix/" /usr/bin/update-mime-database /usr/share/mime chroot "$curdir/slitaz-rootfs$prefix/" /usr/bin/gtk-update-icon-cache /usr/share/icons/hicolor chroot "$curdir/slitaz-rootfs$prefix/" /usr/bin/glib-compile-schemas /usr/share/glib-2.0/schemas chroot "$curdir/slitaz-rootfs$prefix/" /usr/bin/gdk-pixbuf-query-loaders --update-cache chroot "$curdir/slitaz-rootfs$prefix/" /usr/bin/gio-querymodules /usr/lib/gio/modules chroot "$curdir/slitaz-rootfs$prefix/" /usr/bin/fc-cache -f #exit if [ "$xmode" == "local" ]; then touch $curdir/slitaz-rootfs/var/lib/tazpkg/locked-packages touch $curdir/slitaz-rootfs/tmp/tazpkg-local.lock touch $curdir/slitaz-rootfs/tmp/tazpkg-skipdep.lock touch $curdir/slitaz-rootfs/tmp/tazpkg-skipremovedep.lock touch $curdir/slitaz-rootfs/tmp/tazpkg-dontbreak.lock touch $curdir/slitaz-rootfs/tmp/tazpkg-skipupdate.lock touch $curdir/slitaz-rootfs/tmp/tazpkg-editreceipt.lock touch $curdir/slitaz-rootfs/tmp/tazpkg-autoconfirm.lock touch $curdir/slitaz-rootfs/tmp/tazpkg-skiprefresh.lock else touch $curdir/slitaz-rootfs/tmp/tazpkg-dontbreak.lock touch $curdir/slitaz-rootfs/tmp/tazpkg-skipremovedep.lock touch $curdir/slitaz-rootfs/tmp/tazpkg-skipupdate.lock touch $curdir/slitaz-rootfs/tmp/tazpkg-editreceipt.lock touch $curdir/slitaz-rootfs/tmp/tazpkg-autoconfirm.lock touch $curdir/slitaz-rootfs/tmp/tazpkg-skiprefresh.lock cp -f $curdir/tazpup-core-files/slitaz/var/lib/tazpkg/blocked-packages.list $curdir/slitaz-rootfs/var/lib/tazpkg/blocked-packages.list cp -f $curdir/tazpup-core-files/slitaz/var/lib/tazpkg/locked-packages $curdir/slitaz-rootfs/var/lib/tazpkg/locked-packages fi if [ -e $curdir/slitaz-rootfs/usr/sbin/iconvconfig ]; then chroot "$curdir/slitaz-rootfs/" /usr/sbin/iconvconfig fi #dont include to main sfs rm -rf $curdir/slitaz-rootfs/var/cache/tazpkg/* 2>/dev/null rm -rf $curdir/slitaz-rootfs/var/log/slitaz/* 2>/dev/null rm -rf $curdir/slitaz-rootfs/var/log/*.log 2>/dev/null rm -rf $curdir/slitaz-rootfs/var/tmp/* 2>/dev/null rm -rf $curdir/slitaz-rootfs/tmp/* 2>/dev/null rm -f $curdir/slitaz-rootfs/etc/rc.d/PUPSTATE umount -l $curdir/slitaz-rootfs/dev 2>/dev/null umount -l $curdir/slitaz-rootfs/sys umount -l $curdir/slitaz-rootfs/proc if [ ! -z $prefix ]; then umount -l $curdir/slitaz-rootfs$prefix/dev 2>/dev/null umount -l $curdir/slitaz-rootfs$prefix/sys umount -l $curdir/slitaz-rootfs$prefix/proc fi #exit echo "Mounting $(basename $IMGPUP)..." mount -o ro $IMGPUP /mnt/wktaz if [ $? -ne 0 ]; then echo "Mounting puppy image failed" exit fi rootfslist="$(find /mnt/wktaz -type f -name "*.sfs")" if [ "$rootfslist" == "" ]; then echo "Not a puppy disc image" umount /mnt/wktaz exit fi echo "Copying puppy kernel...." cp -f /mnt/wktaz/vmlinuz $curdir/tazpup-preiso/ echo "Searching for kernel modules..." mkdir -p $curdir/kernel-modules/lib for file1 in $(find /mnt/wktaz -type f -name "*.sfs") do mount -t squashfs $file1 /mnt/wksfs if [ $? -eq 0 ]; then if [ -d /mnt/wksfs/lib/modules ]; then echo "Copying kernel modules from $(basename $file1) to rootfs..." cp -rf /mnt/wksfs/lib/modules $curdir/kernel-modules/lib/ mkdir -p $curdir/kernel-modules/var/lib/tazpkg/installed/linux touch $curdir/kernel-modules/var/lib/tazpkg/installed/linux/files.list echo 'PACKAGE="linux" VERSION="" CATEGORY="misc" SHORT_DESC="Linux kernel (compiled for puppy linux)" WEB_SITE="http://puppylinux.org/" MAINTAINER="nobody@slitaz.org" DEPENDS="linux-modules" ' > $curdir/kernel-modules/var/lib/tazpkg/installed/linux/receipt mkdir -p $curdir/kernel-modules/var/lib/tazpkg/installed/linux-modules echo 'PACKAGE="linux-modules" VERSION="" CATEGORY="misc" SHORT_DESC="Linux kernel modules(compiled for puppy linux)" WEB_SITE="http://puppylinux.org/" MAINTAINER="nobody@slitaz.org" DEPENDS="" ' > $curdir/kernel-modules/var/lib/tazpkg/installed/linux-modules/receipt xcurdir="$(echo "$curdir" | sed "s#\/#\\\/#g")" find $curdir/kernel-modules/lib/ -type f -name "*" | sed -e "s#$xcurdir\/kernel-modules\/lib\/#\/lib\/#g" > $curdir/kernel-modules/var/lib/tazpkg/installed/linux-modules/files.list fi if [ -d /mnt/wksfs/etc/modules ]; then cp -rf /mnt/wksfs/etc/modules $curdir/kernel-modules/etc/ fi umount /mnt/wksfs fi done umount /mnt/wktaz if [ ! -f $curdir/tazpup-core-files/puppy/etc/DISTRO_SPECS ]; then echo "DISTRO_SPECS file is missing" exit fi . $curdir/tazpup-core-files/puppy/etc/DISTRO_SPECS #exit echo "Creating tazpup zdrv sfs..." mksquashfs "$curdir/kernel-modules" "$curdir/tazpup-preiso/$DISTRO_ZDRVSFS" -comp xz -Xbcj x86 -b 1M -Xdict-size 100% echo "Creating tazpup sfs..." mksquashfs "$curdir/slitaz-rootfs$prefix" "$curdir/tazpup-preiso/$DISTRO_PUPPYSFS" -comp xz -Xbcj x86 -b 1M -Xdict-size 100% echo "Creating live cd..." #mv -f $curdir/$DISTRO_PUPPYSFS $curdir/tazpup-preiso/ cp -rf $curdir/tazpup-livecd-files/* $curdir/tazpup-preiso/ BOOTPARM="" [ -f $curdir/tazpup-preiso/grldr ] && BOOTPARM="-b grldr" [ -f $curdir/tazpup-preiso/isolinux.bin ] && BOOTPARM="-b isolinux.bin -c boot.cat" if [ -f $curdir/tazpup-preiso/boot.catalog ]; then BOOTPARM="-b isolinux.bin -c boot.catalog" else BOOTPARM="-b isolinux.bin -c boot.cat" fi if [ -f $curdir/tazpup-preiso/efiboot.img ]; then efi1="true" efiimg1="efiboot.img" elif [ -f $curdir/tazpup-preiso/efi.img ]; then efi1="true" efiimg1="efi.img" else efi1="false" fi VOLI="tazpup-preiso" cd $curdir if [ -f $curdir/custom-tazpup.iso ]; then rm -f $curdir/custom-tazpup.iso fi if [ -f $curdir/custom-tazpup.iso.md5 ]; then rm -f $curdir/custom-tazpup.iso.md5 fi if [ "$efi1" == "true" ]; then #rxvt -bg blue -fg white -title "$m_01 (with UEFI)" -e mkisofs -U -A $VOLI -J -joliet-long -r -v -T -o $curdir/custom-tazpup.iso $BOOTPARM -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e efi.img -no-emul-boot $curdir/tazpup-preiso echo "UEFI enabled" mkisofs -D -R -J -o $curdir/custom-tazpup.iso $BOOTPARM -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -eltorito-platform 0xEF -eltorito-boot $efiimg1 -no-emul-boot $curdir/tazpup-preiso/ isohybrid --uefi $curdir/custom-tazpup.iso else mkisofs -D -R -J -o $curdir/custom-tazpup.iso $BOOTPARM -no-emul-boot -boot-load-size 4 -boot-info-table $curdir/tazpup-preiso/ fi MD5=`md5sum $curdir/custom-tazpup.iso | cut -f 1 -d ' '` echo "$MD5" > $curdir/custom-tazpup.iso.md5 echo "MD5 Checksum: ${MD5}" echo "" echo "Process complete!"