Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # ISO Build script by Arkanon <arkanon@lsd.org.br>
- # Last update @ 2011/03/20 (Dom) 11:58:23 (BRS)
- if ( [ $# = 0 -o $# -gt 2 -o $# = 1 -a "$1" != curr ] || ( [ $# = 2 ] && [ "$1" != stab ] && ! ls -1d slackware-[0-9]* | grep -q "$1" ) )
- then
- echo "Usage: `basename $0` stab|curr|<version_number, if !(stab|curr)> <build_number, if !curr>"
- builds=$(cat $0 | grep -E "^# +[0-9]+ +")
- # [ "$1" ] \
- # && echo -n "Maybe build number be " \
- # && ( [ "$1" = stab ] && echo "$builds" | head -n1 || echo "$builds" | sed -n '/^# \+1 \+/{n;p;}' ) | awk -F" *" '{print$2}'
- [ "$1" ] \
- && echo -n "Maybe build number be " \
- && echo "$builds" | ( [ "$1" = stab ] && head -n1 || sed -n '/^# \+1 \+/{n;p;}' ) | awk -F" *" '{print$2}'
- exit
- fi
- slack_version=$1
- iso_build=$2
- label=$slack_version
- pkgtype="txz"
- tar_flag="J"
- if [ $1 = stab ]
- then
- slack_version=`readlink stable | cut -d- -f2-`
- label="stable"
- elif [ $1 = curr ]
- then
- slack_version="current"
- iso_build=`date +%Y%m%d_%H%M%S`
- label=$slack_version
- elif [ `echo $1 | cut -d. -f1` -lt 13 ]
- then
- pkgtype="tgz"
- tar_flag="z"
- fi
- iso="iso"
- root="$HOME/espelhos/slackware"
- srcd="$root/slackware-$slack_version"
- outd="dvd"
- outf="$outd/slackware-$slack_version-$iso_build.iso"
- ln -fs $outf $label.iso
- [ -e $srcd ] || { echo "Source directory '$srcd' not found."; exit; }
- [ -e $outd ] || { echo "Output directory '$outd' not found."; exit; }
- [ -e $outf ] && { echo "Output file '$outf' already exists."; exit; }
- var=`deltat start`
- rm -rf $iso/
- cp -al $srcd/ $iso/
- deltat stop "$var"
- # BEGIN LINK PATCHES
- # iso="."
- # pkgtype="txz"
- awk_code='{for(i=1;i<NF-3;i++)printf$i"-";print$i"\t"$(NF-2)}'
- updates=$((cd $iso/patches/packages/ &> /dev/null && ls -1 *.$pkgtype) | awk -F- $awk_code)
- old=$(echo "$updates" | while read pkg ver; do find $iso/{extra,slackware}/ -name "$pkg-*.$pkgtype"; done | awk -F- $awk_code | sort | uniq)
- echo -n "$updates" | while read pkg uver
- do
- i=$(echo "$old" | grep -P "/$pkg\t")
- [ "$i" ] && path=$(dirname $(echo "$i" | cut -f1)) || path=$iso/slackware/y
- over=$(echo "$i" | cut -f2)
- (
- cd $path/
- rm -f $pkg-$over-*
- ln -fs ../../patches/packages/$pkg-$uver-* .
- )
- done
- # END LINK PATCHES
- var=`deltat start`
- cp -aL .sync $iso/
- cp -aL $0 $iso/BUILD-$iso_build
- chown -R 0:0 $iso/
- msg=isolinux/message.txt
- swv=etc/slackware-version
- (
- cd $iso/
- cat $msg | sed "s/\(version [^ ]\+ \)(/\1build $iso_build /" >| $msg.tmp
- mv $msg.tmp $msg
- mkdir aaa
- cd aaa
- pkg=../slackware/a/aaa_base-*.$pkgtype
- tar ${tar_flag}xf $pkg
- echo `cat $swv` build $iso_build >| $swv.tmp
- mv $swv.tmp $swv
- makepkg -l y -c n ../$(basename $pkg)
- cd ..
- rm -r aaa
- mv aaa_base-*.$pkgtype slackware/a
- mkisofs \
- -v \
- -V "Slack $slack_version b$iso_build" \
- -A "Slackware Install" \
- -T \
- -R \
- -J \
- -d \
- -N \
- -allow-leading-dots \
- -allow-lowercase \
- -allow-multidot \
- -joliet-long \
- -hide-joliet-trans-tbl \
- -hide-rr-moved \
- -no-emul-boot \
- -boot-load-size 4 \
- -boot-info-table \
- -sort isolinux/iso.sort \
- -b isolinux/isolinux.bin \
- -c isolinux/isolinux.boot \
- -o $root/$outf \
- .
- )
- echo
- deltat stop "$var"
- echo
- # EOT
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement