Advertisement
arkanon

Slack MkISO

Mar 22nd, 2011
351
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.39 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # ISO Build script by Arkanon <arkanon@lsd.org.br>
  4. # Last update @ 2011/03/20 (Dom) 11:58:23 (BRS)
  5.  
  6. if ( [ $# = 0 -o $# -gt 2 -o $# = 1 -a "$1" != curr ] || ( [ $# = 2 ] && [ "$1" != stab ] && ! ls -1d slackware-[0-9]* | grep -q "$1" ) )
  7. then
  8.   echo "Usage: `basename $0`   stab|curr|<version_number, if !(stab|curr)>   <build_number, if !curr>"
  9.   builds=$(cat $0 | grep -E "^# +[0-9]+ +")
  10.  
  11. # [ "$1" ] \
  12. #   && echo -n "Maybe build number be " \
  13. #   && ( [ "$1" = stab ] && echo "$builds" | head -n1 || echo "$builds" | sed -n '/^# \+1 \+/{n;p;}' ) | awk -F" *" '{print$2}'
  14.  
  15.   [ "$1" ] \
  16.     && echo -n "Maybe build number be " \
  17.     && echo "$builds" | ( [ "$1" = stab ] && head -n1 || sed -n '/^# \+1 \+/{n;p;}' ) | awk -F" *" '{print$2}'
  18.  
  19.   exit
  20. fi
  21.  
  22. slack_version=$1
  23.     iso_build=$2
  24.         label=$slack_version
  25.       pkgtype="txz"
  26.      tar_flag="J"
  27.  
  28. if   [ $1 = stab ]
  29. then
  30.   slack_version=`readlink stable | cut -d- -f2-`
  31.           label="stable"
  32. elif [ $1 = curr ]
  33. then
  34.   slack_version="current"
  35.       iso_build=`date +%Y%m%d_%H%M%S`
  36.           label=$slack_version
  37. elif [ `echo $1 | cut -d. -f1` -lt 13 ]
  38. then
  39.    pkgtype="tgz"
  40.   tar_flag="z"
  41. fi
  42.  
  43.  iso="iso"
  44. root="$HOME/espelhos/slackware"
  45. srcd="$root/slackware-$slack_version"
  46. outd="dvd"
  47. outf="$outd/slackware-$slack_version-$iso_build.iso"
  48.  
  49. ln -fs $outf $label.iso
  50.  
  51. [ -e $srcd ] || { echo "Source directory '$srcd' not found."; exit; }
  52. [ -e $outd ] || { echo "Output directory '$outd' not found."; exit; }
  53. [ -e $outf ] && { echo "Output file '$outf' already exists."; exit; }
  54.  
  55.  
  56.  
  57. var=`deltat start`
  58. rm -rf $iso/
  59. cp -al $srcd/ $iso/
  60. deltat stop "$var"
  61.  
  62.  
  63. # BEGIN LINK PATCHES
  64.  
  65. #      iso="."
  66. #  pkgtype="txz"
  67.   awk_code='{for(i=1;i<NF-3;i++)printf$i"-";print$i"\t"$(NF-2)}'
  68.    updates=$((cd $iso/patches/packages/ &> /dev/null && ls -1 *.$pkgtype) | awk -F- $awk_code)
  69.        old=$(echo "$updates" | while read pkg ver; do find $iso/{extra,slackware}/ -name "$pkg-*.$pkgtype"; done | awk -F- $awk_code | sort | uniq)
  70.  
  71.   echo -n "$updates" | while read pkg uver
  72.   do
  73.        i=$(echo "$old" | grep -P "/$pkg\t")
  74.     [ "$i" ] && path=$(dirname $(echo "$i" | cut -f1)) || path=$iso/slackware/y
  75.     over=$(echo "$i" | cut -f2)
  76.     (
  77.       cd $path/
  78.       rm -f $pkg-$over-*
  79.       ln -fs ../../patches/packages/$pkg-$uver-* .
  80.     )
  81.   done
  82.  
  83. # END LINK PATCHES
  84.  
  85. var=`deltat start`
  86.  
  87. cp -aL .sync  $iso/
  88. cp -aL $0     $iso/BUILD-$iso_build
  89. chown -R 0:0 $iso/
  90.  
  91. msg=isolinux/message.txt
  92. swv=etc/slackware-version
  93.  
  94. (
  95.   cd $iso/
  96.  
  97.   cat $msg | sed "s/\(version [^ ]\+ \)(/\1build $iso_build /" >| $msg.tmp
  98.   mv $msg.tmp $msg
  99.  
  100.   mkdir aaa
  101.   cd aaa
  102.   pkg=../slackware/a/aaa_base-*.$pkgtype
  103.   tar ${tar_flag}xf $pkg
  104.   echo `cat $swv` build $iso_build >| $swv.tmp
  105.   mv $swv.tmp $swv
  106.   makepkg -l y -c n ../$(basename $pkg)
  107.   cd ..
  108.   rm -r aaa
  109.   mv aaa_base-*.$pkgtype slackware/a
  110.  
  111.   mkisofs \
  112.     -v \
  113.     -V "Slack $slack_version b$iso_build" \
  114.     -A "Slackware Install" \
  115.     -T \
  116.     -R \
  117.     -J \
  118.     -d \
  119.     -N \
  120.     -allow-leading-dots \
  121.     -allow-lowercase \
  122.     -allow-multidot \
  123.     -joliet-long \
  124.     -hide-joliet-trans-tbl \
  125.     -hide-rr-moved \
  126.     -no-emul-boot \
  127.     -boot-load-size 4 \
  128.     -boot-info-table \
  129.     -sort isolinux/iso.sort \
  130.     -b isolinux/isolinux.bin \
  131.     -c isolinux/isolinux.boot \
  132.     -o $root/$outf \
  133.     .
  134.  
  135. )
  136.  
  137. echo
  138. deltat stop "$var"
  139. echo
  140.  
  141. # EOT
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement