📄 makedist.sh
字号:
#!/bin/bash -eux# Copyright (C) 2005 Pascal Schmidt <pascal.schmidt@email.de>############################################################################ ttylinux build script############################################################################# ttylinux version number#TTYVERSION="5.1"## filesystem image size in megabytes#IMAGESIZE="4"## directory locations#TOPDIR=`pwd`DISTDIR="$TOPDIR/dist"## default compiler flags#export CFLAGS="-march=i386 -Os"## default install flags#INSTALL="install -m 755 -o root -g root"## packages to build# NOTE: basesystem must be included as the first package#PACKAGES="basesystem busybox glibc bash ppp isdn4k-utils iptables e2fsprogs dhcpcd e3 lilo ncurses retawq dropbear"############################################################################ individual build steps############################################################################# build one package#build_package(){ for i in "$TOPDIR/packages/bin/$1-"*.bin.tbz do [ -r "$i" ] && return 0 done rm -rf "$TOPDIR/build/"* tar xjf "$TOPDIR/packages/src/$1-"*.src.tbz -C "$TOPDIR/build" cd "$TOPDIR/build" for i in "$TOPDIR/build/control/patch-"* do [ -r "$i" ] && patch -p0 < "$i" done test -r control/files test -r control/build . control/build build unset build local PKGNAME=`name` unset name cd "$TOPDIR/build" mkdir -p "$DISTDIR/var/log/packages" cp control/files "$DISTDIR/var/log/packages/$PKGNAME" echo "var/log/packages/$PKGNAME" >> control/files if [ -r control/install ]; then mkdir -p "$DISTDIR/var/log/packages/install-scripts" cp control/install \ "$DISTDIR/var/log/packages/install-scripts/$PKGNAME" echo "var/log/packages/install-scripts/$PKGNAME" >> \ control/files fi cd "$DISTDIR" tar cvjfT "$TOPDIR/packages/bin/$PKGNAME.bin.tbz" \ "$TOPDIR/build/control/files"}## build all packages#build_packages(){ for i in $PACKAGES do build_package "$i" done}## clean up after building#cleanup(){ rm -rf "$TOPDIR/build/"*}## unpack packages into packaging directory#unpack(){ rm -rf "$DISTDIR" mkdir "$DISTDIR" for i in "$TOPDIR/packages/bin/"*.bin.tbz do tar xjf "$i" -C "$DISTDIR" done}## create 4M filesystem image#create_image(){ [ -e "$TOPDIR/mnt" ] && rm -rf "$TOPDIR/mnt" mkdir "$TOPDIR/mnt" cd "$DISTDIR" tar cf "$TOPDIR/files" . trap "rm -f $TOPDIR/files" ERR cd "$TOPDIR" dd if=/dev/zero of=filesys bs=1M count="$IMAGESIZE" mke2fs -F -q -m 0 -N 512 filesys mount -o loop filesys mnt cd mnt tar xf ../files du -sh df . cd .. umount mnt rmdir mnt trap ERR rm -f files rm -rf "$DISTDIR"}## create distribution tarball#create_dist(){ local PKGDIR="ttylinux-$TTYVERSION" cd "$TOPDIR" [ -e "$PKGDIR" ] && rm -rf "$PKGDIR" mkdir "$PKGDIR" cp docs/* "$PKGDIR" gzip -9 -c filesys > "$PKGDIR/rootfs.gz" tar czf "$PKGDIR.tar.gz" "$PKGDIR" rm -rf "$PKGDIR"}## print message at the end of a successful build#completion_message(){ set +x echo echo "*** BUILD SUCCESSFUL ***" echo}## exit with error message#error_exit(){ set +x echo echo "ERROR: $1" echo exit 1}## check whether preconditions for build are met#check_sanity(){ cd "$TOPDIR" [ -e makedist.sh ] || \ error_exit "you need to be in the directory with makedist.sh" [ "`id -u`" = "0" ] || \ error_exit "you need to be root for the build to work"}############################################################################ build sequence###########################################################################check_sanitybuild_packagescleanupunpackcreate_imagecreate_distcompletion_message
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -