Advertisement
s243a

make-tazpup.sh

Jul 4th, 2018
397
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 13.46 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. curdir=`pwd`
  4.  
  5. remove_some_slitaz(){
  6.  
  7. if [ -f $curdir/remove-builtin.txt ]; then
  8.  
  9.         for pkg2 in $(cat $curdir/remove-builtin.txt)
  10.         do
  11.             if [ -d $curdir/slitaz-rootfs/var/lib/tazpkg/installed/$pkg2 ]; then
  12.                 for files1 in `cat $curdir/slitaz-rootfs/var/lib/tazpkg/installed/$pkg2/files.list`
  13.                 do
  14.                     rm -f $curdir/slitaz-rootfs/$files1
  15.                 done
  16.                 rm -rf $curdir/slitaz-rootfs/var/lib/tazpkg/installed/$pkg2
  17.             fi
  18.    
  19.             cat $curdir/slitaz-rootfs/var/lib/tazpkg/installed.md5 | grep -v " $pkg2-" sort > $curdir/slitaz-rootfs/var/lib/tazpkg/installed.md5.new
  20.    
  21.             rm -f $curdir/slitaz-rootfs/var/lib/tazpkg/installed.md5
  22.    
  23.             mv -f $curdir/slitaz-rootfs/var/lib/tazpkg/installed.md5.new $curdir/slitaz-rootfs/var/lib/tazpkg/installed.md5
  24.    
  25.             PTRN="$(echo "^$pkg2" | sed -e "s#\+#\\\+#g")"
  26.    
  27.             cat $curdir/slitaz-rootfs/var/lib/tazpkg/installed.info | grep -Ev "$PTRN" | sort > $curdir/slitaz-rootfs/var/lib/tazpkg/installed.info.new
  28.    
  29.             rm -f $curdir/slitaz-rootfs/var/lib/tazpkg/installed.info
  30.    
  31.             mv -f $curdir/slitaz-rootfs/var/lib/tazpkg/installed.info.new $curdir/slitaz-rootfs/var/lib/tazpkg/installed.info
  32.            
  33.         done
  34.    
  35.     fi
  36.    
  37.     rm -f $curdir/slitaz-rootfs/etc/dialogrc
  38.        
  39. }
  40.  
  41. extractfs() {
  42.    
  43.     if [ ! -d $curdir/slitaz-rootfs ]; then
  44.         mkdir $curdir/slitaz-rootfs
  45.     fi
  46.    
  47.     (unlzma -c $1 || cat $1 ) 2>/dev/null | (cd $curdir/slitaz-rootfs; cpio -idm > /dev/null)
  48.  
  49. }
  50.  
  51. process_package() {
  52.    
  53.     chksum="$(md5sum $1)"
  54.    
  55.     cpio -idm --quiet < "$1" && rm -f "$1"
  56.     if [ -f fs.cpio.lzma ]; then
  57.         unlzma < fs.cpio.lzma | cpio -idm --quiet && rm fs.cpio.lzma
  58.     elif [ -f fs.cpio.gz ]; then
  59.         zcat fs.cpio.gz | cpio -idm --quiet && rm fs.cpio.gz
  60.     fi
  61.    
  62.     . ./receipt
  63.    
  64.     if [ -f $curdir/slitaz-build-data/installed-isolated.info ]; then
  65.        
  66.         xPTRN80="$(echo "^$PACKAGE\t" | sed -e "s#\+#\\\+#g")"
  67.        
  68.         if [ "$(cat $curdir/slitaz-build-data/installed-isolated.info | grep -E "$xPTRN80" | grep "$VERSION$EXTRAVERSION")" != "" ]; then
  69.             echo "Package entry skipped"
  70.         else
  71.             echo "$PACKAGE  $VERSION$EXTRAVERSION   $CATEGORY   $SHORT_DESC $WEB_SITE   $TAGS   $SIZES  $DEPENDS    $PKG_SUM" >> $curdir/slitaz-build-data/installed-isolated.info 
  72.         fi
  73.     else
  74.         echo "$PACKAGE  $VERSION$EXTRAVERSION   $CATEGORY   $SHORT_DESC $WEB_SITE   $TAGS   $SIZES  $DEPENDS    $PKG_SUM" >> $curdir/slitaz-build-data/installed-isolated.info
  75.     fi
  76.    
  77.     if [ -f $curdir/slitaz-build-data/installed-isolated.md5 ]; then
  78.         PTRN="$(echo "${1}\$" | sed -e "s#\+#\\\+#g")"
  79.         if [ "$(cat $curdir/slitaz-build-data/installed-isolated.md5 | grep -E "$PTRN")" != "" ]; then
  80.             echo "Checksum entry skipped"
  81.         else
  82.             echo "$chksum" >> $curdir/slitaz-build-data/installed-isolated.md5
  83.         fi
  84.     else
  85.         echo "$chksum" >> $curdir/slitaz-build-data/installed-isolated.md5
  86.     fi
  87.    
  88.     mkdir ./var/lib/tazpkg/installed/$PACKAGE/
  89.    
  90.     mv -f ./receipt ./var/lib/tazpkg/installed/$PACKAGE/
  91.    
  92.     mv -f ./md5sum ./var/lib/tazpkg/installed/$PACKAGE/
  93.    
  94.     if [ -f ./description.txt ]; then
  95.         mv -f ./description.txt ./var/lib/tazpkg/installed/$PACKAGE/
  96.     fi
  97.    
  98.     mv ./files.list ./var/lib/tazpkg/installed/$PACKAGE/
  99.    
  100.     cp -arf ./fs/* ./
  101.    
  102.     rm -rf ./fs
  103.    
  104.     unset PACKAGE VERSION EXTRAVERSION CATEGORY SHORT_DESC WEB_SITE TAGS SIZES DEPENDS PKG_SUM
  105.  
  106. }
  107.  
  108. IMG="$(Xdialog --stdout --title "Select Slitaz image file" --fselect $HOME 0 0)"
  109.  
  110. if [ $? -ne 0 ]; then
  111.     echo "Operation cancelled"
  112.     exit
  113. fi
  114.  
  115. if [ "$IMG" == "" ]; then
  116.     echo "No image file selected"
  117.     exit
  118. fi
  119.  
  120. IMGPUP="$(Xdialog --stdout --title "Select Puppy image file" --fselect $HOME 0 0)"
  121.  
  122. if [ $? -ne 0 ]; then
  123.     echo "Operation cancelled"
  124.     exit
  125. fi
  126.  
  127. if [ "$IMGPUP" == "" ]; then
  128.     echo "No puppy image file selected"
  129.    exit
  130. fi
  131. #---------------------Cleanup---------------------------- added by s243a
  132. if [ -d $curdir/slitaz-rootfs ]; then
  133.     echo "Deleting slitaz-rootfs..."
  134.     rm -rf $curdir/slitaz-rootfs
  135. fi
  136.  
  137. if [ -d $curdir/tazpup-preiso ]; then
  138.     echo "Deleting tazpup-preiso..."
  139.     rm -rf $curdir/tazpup-preiso
  140. fi
  141.  
  142. if [ -d $curdir/slitaz-build-data/slitaz-packages-fs ]; then
  143.     echo "Deleting slitaz-packages-fs..."
  144.     rm -rf $curdir/slitaz-build-data/slitaz-packages-fs
  145. fi
  146.  
  147.  
  148. rm -f $curdir/slitaz-build-data/installed-isolated.md5
  149.  
  150. rm -f $curdir/slitaz-build-data/installed-isolated.info
  151.  
  152.  
  153. echo "Preparing working folders..."
  154.  
  155. if [ ! -d $curdir/slitaz-livecd-wkg ]; then
  156.     mkdir $curdir/slitaz-livecd-wkg
  157. fi
  158.  
  159. if [ ! -d $curdir/tazpup-preiso ]; then
  160.     mkdir $curdir/tazpup-preiso
  161. fi
  162.  
  163. if [ ! -d /mnt/wktaz ]; then
  164.     mkdir /mnt/wktaz
  165. fi
  166.  
  167. if [ ! -d /mnt/wksfs ]; then
  168.    mkdir /mnt/wksfs
  169. fi
  170.  
  171. echo "Mounting $(basename $IMG)..."
  172.  
  173. mount -o ro $IMG /mnt/wktaz
  174.  
  175. if [ $? -ne 0 ]; then
  176.     echo "Mounting slitaz image failed"
  177.     exit
  178. fi
  179.  
  180. if [ ! -f /mnt/wktaz/rootfs.gz ] && [ ! -f /mnt/wktaz/boot/rootfs.gz ]; then
  181.     echo "Not a slitaz disc image"
  182.     umount /mnt/wktaz
  183.     exit
  184. fi
  185.  
  186. echo "Copying rootfs gz..."
  187.  
  188. if [ -f /mnt/wktaz/rootfs.gz ]; then
  189.     src1="/mnt/wktaz/rootfs.gz"
  190. elif [ -f /mnt/wktaz/boot/rootfs.gz ]; then
  191.     src1="/mnt/wktaz/boot/rootfs.gz"
  192. fi
  193.  
  194. cp -f $src1 $curdir/slitaz-livecd-wkg/
  195.  
  196. umount /mnt/wktaz
  197.  
  198. cd $curdir/slitaz-livecd-wkg
  199.  
  200. echo "Extracting rootfs gz..."
  201. extractfs $curdir/slitaz-livecd-wkg/rootfs.gz
  202.  
  203. cd $curdir
  204.  
  205. rm -rf $curdir/slitaz-livecd-wkg
  206.  
  207. rm -f $curdir/slitaz-rootfs/init
  208.  
  209. remove_some_slitaz
  210.  
  211. #echo "Removing block device files..."
  212.  
  213. #rm -rf $curdir/slitaz-rootfs/dev/*
  214.  
  215. echo "Removing slitaz modules..."
  216. rm -rf $curdir/slitaz-rootfs/lib/modules/*
  217. rm -rf $curdir/slitaz-rootfs/var/lib/tazpkg/installed/linux*
  218.  
  219. echo "Removing slitaz firmware..."
  220. rm -rf $curdir/slitaz-rootfs/lib/firmware/*
  221. rm -rf $curdir/slitaz-rootfs/var/lib/tazpkg/installed/firmware*
  222.  
  223. for file1 in $(find $curdir/slitaz-rootfs/usr/share/icons/ -type f -name "application-x-executable.png")
  224. do
  225.     if [ -L $file1 ]; then
  226.     fname=$(readlink $file1)
  227.       if [ "$fname" != "" ]; then
  228.           if [ "$(basename $fname)" == "application-x-generic.png" ]; then
  229.           rm -f $file1
  230.           fi
  231.       fi
  232.     fi
  233. done
  234.  
  235. for file1 in $(find $curdir/slitaz-rootfs/usr/share/icons/ -type f -name "application-x-generic.png")
  236. do
  237.     mv -f $file1 $(dirname $file1)/application-x-executable.png
  238. done
  239.  
  240.  
  241. echo "Processing Slitaz packages..."
  242.  
  243. if [ ! -d $curdir/slitaz-build-data/slitaz-packages-fs ]; then
  244.     mkdir $curdir/slitaz-build-data/slitaz-packages-fs
  245.     mkdir $curdir/slitaz-build-data/slitaz-packages-fs/var
  246.     mkdir $curdir/slitaz-build-data/slitaz-packages-fs/var/lib
  247.     mkdir $curdir/slitaz-build-data/slitaz-packages-fs/var/lib/tazpkg
  248.     mkdir $curdir/slitaz-build-data/slitaz-packages-fs/var/lib/tazpkg/installed
  249. fi
  250.  
  251.  
  252. if [ ! -d  $curdir/slitaz-packages ]; then
  253.     echo "Core tazpup package is missing."
  254.     exit
  255. else
  256.  
  257.     if [ $(find $curdir/slitaz-packages -type f -name "*.tazpkg" | wc -l) -eq 0 ]; then
  258.         echo "Core tazpup package is missing."
  259.         exit
  260.     fi
  261.  
  262.     for pkg in $(find $curdir/slitaz-packages -type f -name "*.tazpkg" | sort -r)
  263.     do
  264.         echo "Processing core package: $(basename $pkg)"
  265.         cp -f $pkg $curdir/slitaz-build-data/slitaz-packages-fs/
  266.         cd $curdir/slitaz-build-data/slitaz-packages-fs/
  267.         process_package "$(basename $pkg)"
  268.     done
  269.  
  270. fi
  271.  
  272. #exit
  273.  
  274. if [ -d $curdir/custom-packages ]; then
  275.     for pkg in $(find $curdir/custom-packages -type f -name "*.tazpkg")
  276.     do
  277.         echo "Processing custom package: $(basename $pkg)"
  278.         cp -f $pkg $curdir/slitaz-build-data/slitaz-packages-fs/
  279.         cd $curdir/slitaz-build-data/slitaz-packages-fs/
  280.         process_package "$(basename $pkg)"
  281.     done
  282. fi
  283.  
  284. for fullcmd in mount umount ps
  285. do
  286.     if [ -f $curdir/slitaz-build-data/slitaz-packages-fs/bin/$fullcmd ]; then
  287.         ln -rs $curdir/slitaz-build-data/slitaz-packages-fs/bin/$fullcmd \
  288.                $curdir/slitaz-build-data/slitaz-packages-fs/bin/$fullcmd-FULL
  289.     fi
  290. done
  291.  
  292. #exit
  293.  
  294. cd $curdir
  295.  
  296. echo "Installing Slitaz packages..."
  297.  
  298. cp --remove-destination -arf $curdir/slitaz-build-data/slitaz-packages-fs/* $curdir/slitaz-rootfs/
  299.  
  300. #exit
  301.  
  302. if [ -f $curdir/slitaz-rootfs/usr/bin/coreutils ]; then
  303.     rm -f  $curdir/slitaz-rootfs/bin/stat
  304.     ln -sr $curdir/slitaz-rootfs/usr/bin/coreutils $curdir/slitaz-rootfs/usr/bin/df-FULL
  305. fi
  306.  
  307. if [ -f $curdir/slitaz-rootfs/usr/bin/gzip ]; then
  308.     rm -f  $curdir/slitaz-rootfs/bin/gzip
  309. fi
  310.  
  311. if [ -d $curdir/slitaz-rootfs/usr/lib/grub/i386-slitaz ]; then
  312.     ln -sr $curdir/slitaz-rootfs/usr/lib/grub/i386-slitaz $curdir/slitaz-rootfs/usr/lib/grub/i386-pc
  313.     ln -sr $curdir/slitaz-rootfs/usr/lib/grub/i386-slitaz $curdir/slitaz-rootfs/usr/lib/grub/i386-t2
  314. fi
  315.  
  316. if [ -d $curdir/slitaz-rootfs/usr/share/boot ]; then
  317.     ln -sr $curdir/slitaz-rootfs/usr/share/boot $curdir/slitaz-rootfs/usr/share/syslinux
  318.  
  319.     for file1 in grldr.lzma grub.exe.lzma memdisk.lzma pxelinux.0.lzma
  320.     do
  321.         cp -f $curdir/slitaz-rootfs/usr/share/boot/$file1 $curdir/slitaz-rootfs/usr/share/boot/$file1.bak
  322.         unlzma $curdir/slitaz-rootfs/usr/share/boot/$file1
  323.         mv -f $curdir/slitaz-rootfs/usr/share/boot/$file1.bak $curdir/slitaz-rootfs/usr/share/boot/$file1
  324.     done
  325. fi
  326.  
  327. #exit
  328.  
  329. cat $curdir/slitaz-build-data/installed-isolated.md5 >> $curdir/slitaz-rootfs/var/lib/tazpkg/installed.md5
  330.  
  331. cat $curdir/slitaz-rootfs/var/lib/tazpkg/installed.md5 | grep -v " linux-" | grep -v " firmware-" | sort > $curdir/slitaz-rootfs/var/lib/tazpkg/installed.md5.new
  332.  
  333. rm -f $curdir/slitaz-rootfs/var/lib/tazpkg/installed.md5
  334.  
  335. mv -f $curdir/slitaz-rootfs/var/lib/tazpkg/installed.md5.new $curdir/slitaz-rootfs/var/lib/tazpkg/installed.md5
  336.  
  337. cat $curdir/slitaz-build-data/installed-isolated.info >> $curdir/slitaz-rootfs/var/lib/tazpkg/installed.info
  338.  
  339. cat $curdir/slitaz-rootfs/var/lib/tazpkg/installed.info | grep -Ev "^linux|^firmware" | sort > $curdir/slitaz-rootfs/var/lib/tazpkg/installed.info.new
  340.  
  341. rm -f $curdir/slitaz-rootfs/var/lib/tazpkg/installed.info
  342.  
  343. mv -f $curdir/slitaz-rootfs/var/lib/tazpkg/installed.info.new $curdir/slitaz-rootfs/var/lib/tazpkg/installed.info
  344.  
  345. #exit
  346.  
  347. echo "Applying patches..."
  348.  
  349. cp --remove-destination -arf $curdir/slitaz-build-data/rootfs-skeleton-slitaz/* $curdir/slitaz-rootfs/
  350.  
  351. if [ -d $curdir/slitaz-build-data/slitaz-packages-fs/usr/share/glib-2.0/schemas ]; then
  352.     echo "Compiling schemas..."
  353.     glib-compile-schemas $curdir/slitaz-rootfs/usr/share/glib-2.0/schemas
  354. fi
  355.  
  356. echo "Updating mime database..."
  357. update-mime-database $curdir/slitaz-rootfs/usr/share/mime
  358.  
  359. #exit
  360.  
  361. echo "Mounting $(basename $IMGPUP)..."
  362.  
  363. mount -o ro $IMGPUP /mnt/wktaz
  364.  
  365. if [ $? -ne 0 ]; then
  366.     echo "Mounting puppy image failed"
  367.     exit
  368. fi
  369.  
  370. rootfslist="$(find /mnt/wktaz -type f -name "*.sfs")"
  371.  
  372. if [ "$rootfslist" == "" ]; then
  373.     echo "Not a puppy disc image"
  374.     umount /mnt/wktaz
  375.     exit
  376. fi
  377.  
  378. echo "Copying puppy kernel...."
  379.  
  380. cp -f /mnt/wktaz/vmlinuz $curdir/tazpup-preiso/
  381.  
  382. echo "Searching for kernel modules..."
  383.  
  384. for file1 in $(find /mnt/wktaz -type f -name "*.sfs")
  385. do
  386.  
  387.     mount -t squashfs $file1 /mnt/wksfs
  388.  
  389.     if [ $? -eq 0 ]; then
  390.  
  391.         if [ -d /mnt/wksfs/lib/modules ]; then
  392.             echo "Copying kernel modules from $(basename $file1) to rootfs..."
  393.             cp -rf /mnt/wksfs/lib/modules $curdir/slitaz-rootfs/lib/
  394.         fi
  395.    
  396.         if [ -d /mnt/wksfs/etc/modules ]; then
  397.             cp -rf /mnt/wksfs/etc/modules $curdir/slitaz-rootfs/etc/
  398.         fi 
  399.         umount /mnt/wksfs
  400.     fi
  401.  
  402. done
  403.  
  404. umount /mnt/wktaz
  405.  
  406. echo "Creating tazpup sfs..."
  407.  
  408. if [ ! -f $curdir/slitaz-build-data/rootfs-skeleton-slitaz/etc/DISTRO_SPECS ]; then
  409.     echo  "DISTRO_SPECS file is missing"
  410.     exit
  411. fi
  412.  
  413. . $curdir/slitaz-build-data/rootfs-skeleton-slitaz/etc/DISTRO_SPECS
  414.  
  415. mksquashfs "slitaz-rootfs" "$DISTRO_PUPPYSFS" -comp xz -Xbcj x86 -b 1M -Xdict-size 100%
  416.  
  417. echo "Creating live cd..."
  418.  
  419. mv -f $curdir/$DISTRO_PUPPYSFS $curdir/tazpup-preiso/
  420. cp -rf $curdir/tazpup-livecd-files/* $curdir/tazpup-preiso/
  421.  
  422.  
  423. BOOTPARM=""
  424. [ -f $curdir/tazpup-preiso/grldr ] && BOOTPARM="-b grldr"
  425. [ -f $curdir/tazpup-preiso/isolinux.bin ] && BOOTPARM="-b isolinux.bin -c boot.cat"
  426.  
  427. if [ -f $curdir/tazpup-preiso/boot.catalog ]; then
  428.     BOOTPARM="-b isolinux.bin -c boot.catalog"
  429. else
  430.     BOOTPARM="-b isolinux.bin -c boot.cat"
  431. fi
  432.  
  433. if [ -f $curdir/tazpup-preiso/efiboot.img ]; then
  434.     efi1="true"
  435.     efiimg1="efiboot.img"
  436. elif [ -f $curdir/tazpup-preiso/efi.img ]; then
  437.     efi1="true"
  438.     efiimg1="efi.img"
  439. else
  440.     efi1="false"
  441. fi
  442.  
  443. VOLI="tazpup-preiso"
  444.  
  445. cd $curdir
  446.  
  447. if [ -f $curdir/custom-tazpup.iso ]; then
  448.     rm -f $curdir/custom-tazpup.iso
  449. fi
  450. if [ -f $curdir/custom-tazpup.iso.md5 ]; then
  451.     rm -f $curdir/custom-tazpup.iso.md5
  452. fi
  453.  
  454.  
  455. if [ "$efi1" == "true" ]; then
  456.     #rxvt -bg blue -fg white -title "$m_01 (with UEFI)" -e mkisofs -U -A $VOLI -J -joliet-long \
  457.     #     -r -v -T -o $curdir/custom-tazpup.iso $BOOTPARM -no-emul-boot -boot-load-size 4 \
  458.     #      -boot-info-table -eltorito-alt-boot -e efi.img -no-emul-boot $curdir/tazpup-preiso
  459.   echo "UEFI enabled"
  460.     mkisofs -D -R -J -o $curdir/custom-tazpup.iso $BOOTPARM -no-emul-boot -boot-load-size 4 -boot- \
  461.             info-table -eltorito-alt-boot -eltorito-platform 0xEF -eltorito-boot $efiimg1 \
  462.             -no-emul-boot $curdir/tazpup-preiso/
  463.     isohybrid --uefi $curdir/custom-tazpup.iso
  464. else
  465.     mkisofs -D -R -J -o $curdir/custom-tazpup.iso $BOOTPARM \
  466.             -no-emul-boot -boot-load-size 4 -boot-info-table $curdir/tazpup-preiso/  
  467. fi
  468.  
  469. MD5=`md5sum $curdir/custom-tazpup.iso | cut -f 1 -d ' '`
  470.  
  471. echo "$MD5" > $curdir/custom-tazpup.iso.md5
  472.  
  473. echo "MD5 Checksum: ${MD5}"
  474. echo ""
  475. echo "Process complete!"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement