r3086 - trunk/scripts
Simon Horman
horms@costa.debian.org
Fri, 13 May 2005 07:19:44 +0000
Author: horms
Date: 2005-05-13 07:19:44 +0000 (Fri, 13 May 2005)
New Revision: 3086
Removed:
trunk/scripts/test_kernel_build
Log:
update my build scripts
Deleted: trunk/scripts/test_kernel_build
===================================================================
--- trunk/scripts/test_kernel_build 2005-05-13 07:10:19 UTC (rev 3085)
+++ trunk/scripts/test_kernel_build 2005-05-13 07:19:44 UTC (rev 3086)
@@ -1,443 +0,0 @@
-#!/bin/bash
-######################################################################
-# Horms October 2004
-######################################################################
-
-START=$(date --rfc)
-
-set -e
-
-usage ()
-{
- echo "Usage: $0 VERSION [START_STAGE] [END_STAGE]" 1>&2
- exit 1
-}
-
-export LC_ALL=C
-unset LANG
-unset LANGUAGE
-
-#TO="horms+keitai@verge.net.au"
-TO="simon@valinux.co.jp"
-SUBJECT="Kernel Build"
-
-if ! which fakeroot >& /dev/null; then
- echo "Error: fakeroot is not installed" 1>&2
- exit 1
-fi
-
-umask 022
-
-unset MAKE
-export CONCURRENCY_LEVEL=2
-
-#export DISTCC_HOSTS='harry.lab.ultramonkey.org charles.lab.ultramonkey.org citadel.lab.ultramonkey.org tabatha.lab.ultramonkey.org'
-#export MAKE="make CC=\"ccache distcc gcc-3.2\""
-#export CONCURRENCY_LEVEL=16
-
-#export MAKE="make CC=\"ccache gcc-3.2\""
-#export CONCURRENCY_LEVEL=8
-#export MAKE="make CC=\"gcc-3.2\""
-
-export CCACHE_HARDLINK
-
-if [ $# -lt 1 -o $# -gt 3 ]; then
- usage
-fi
-VERSION="$1"
-if [ $# -gt 1 ]; then
- START_STAGE=$2
-else
- START_STAGE=0
-fi
-if [ $# -gt 2 ]; then
- END_STAGE=$3
-else
- END_STAGE=1000
-fi
-STAGE=0
-
-shopt -s extglob
-case $VERSION in
- 2.6.+([0-9]))
- MAJOR_MINOR="2.6"
- SVN_SUBDIR="kernel"
- ;;
- 2.4.+([0-9]))
- MAJOR_MINOR="2.4"
- SVN_SUBDIR="kernel-2.4"
- ;;
- *)
- echo "Unknown Version" 1>&2
- usage
- ;;
-esac
-shopt -u extglob
-
-LOG=""
-#STAMP="${VERSION}_$(date +%Y-%m-%d_%H:%M:%S).$$"
-STAMP="${VERSION}"
-STAGE_STATUS="failed"
-KERNEL_ARCH="i386"
-SVN_BASE="$HOME/work/debian-kernel/svn/kernel/trunk"
-S_SRC_BASE="$SVN_BASE/$SVN_SUBDIR/source"
-B_SRC_BASE="$SVN_BASE/$SVN_SUBDIR/$KERNEL_ARCH"
-S_DST_BASE="/tmp/debian-kernel-test"
-B_DST_BASE="$S_DST_BASE"
-
-S_SRC_DIR="$S_SRC_BASE/kernel-source-$VERSION-$VERSION"
-S_DST_DIR="$S_DST_BASE/kernel-source-$VERSION-$VERSION"
-S_PKG_DIR="$S_DST_DIR/kernel-source-$VERSION-$VERSION"
-S_LOG="$S_DST_DIR/kernel-source-$STAMP.log"
-B_SRC_DIR="$B_SRC_BASE/kernel-image-$VERSION-$KERNEL_ARCH-$VERSION"
-B_DST_DIR="$B_DST_BASE/kernel-image-$VERSION-$KERNEL_ARCH-$VERSION"
-B_PKG_DIR="$B_DST_DIR//kernel-image-$VERSION-$KERNEL_ARCH-$VERSION"
-B_LOG="$B_DST_DIR/kernel-image-$STAMP.log"
-
-trap pm_quit EXIT
-trap pm_quit SIGHUP
-trap pm_quit SIGTERM
-trap pm_quit SIGQUIT
-
-set -e
-
-kernel_symbol_check_clean ()
-{
- rm -rf "$TMP";
-}
-
-kernel_symbol_check ()
-{
- TMP="$(mktemp -d)"
- trap kernel_symbol_check_clean EXIT
-
-
- PKG1="$1"
- PKG2="$2"
-
- echo "Checking $PKG1 vs $PKG2"
-
- PKG1_FILE="${PKG1##*/}"
- PKG1_BASE="${PKG1_FILE%%_*}"
-
- PKG2_FILE="${PKG2##*/}"
- PKG2_BASE="${PKG2_FILE%%_*}"
-
- rm -rf "$TMP/1/" "$TMP/2/"
- mkdir "$TMP/1/" "$TMP/2/"
- dpkg -x "$PKG1" "$TMP/1/"
- dpkg -x "$PKG2" "$TMP/2/"
-
- find "$TMP/1/usr/src/$PKG1_BASE/include" -name "*.ver" -type f | \
- xargs cat | sort > "$TMP/1.sym"
- find "$TMP/2/usr/src/$PKG2_BASE/include" -name "*.ver" -type f | \
- xargs cat | sort > "$TMP/2.sym"
-
- diff -u "$TMP/1.sym" "$TMP/2.sym" > "$TMP/sym.udiff" || true
- diff "$TMP/1.sym" "$TMP/2.sym" > "$TMP/sym.diff" || true
- cat "$TMP/sym.udiff"
- if grep "^<" "$TMP/sym.diff" > /dev/null; then
- echo 'Error: Symbol Changes, as above. Incompatible ABI!!!'
- STATUS=1
- elif [ -s "$TMP/sym.udiff" ]; then
- echo "Warning: Additions made to ABI"
- STATUS=2
- else
- echo "No Changes"
- STATUS=0
- fi
-
- kernel_symbol_check_clean
- trap EXIT
- return $STATUS
-}
-
-LOG_BUF=""
-log ()
-{
- echo $@
- if [ -f "$LOG" ]; then
- echo "$LOG_BUF"$@ >> "$LOG"
- LOG_BUF=""
- else
- LOG_BUF="${LOG_BUF}$(echo $@)"
- fi
-}
-
-openlog ()
-{
- echo "$LOG_BUF" > "$LOG"
- LOG_BUF=""
-}
-
-purgelog ()
-{
- rm -f "$LOG"
-}
-
-pm_quit ()
-{
- log ""
-
- echo "Status: $STAGE_STATUS"
- echo "Version: $VERSION"
- echo -n "Host: "
- hostname -s
- echo "Start: $START"
- echo -n "Finish: "
- date --rfc
- times
-
- if [ "$STAGE_STATUS" = failed ]; then
- echo "Stage: $STAGE: $STAGE_NAME..."
- [ -f "$LOG.$STAGE" ] && tail -100 "$LOG.$STAGE"
- fi
-
- {
- echo "Status: $STAGE_STATUS"
- echo "Version: $VERSION"
- echo -n "Host: "
- hostname -s
- echo "Start: $START"
- echo -n "Finish: "
- date --rfc
- times
-
- if [ "$STAGE_STATUS" = failed ]; then
- echo "Stage: $STAGE: $STAGE_NAME..."
- [ -f "$LOG.$STAGE" ] && tail -100 "$LOG.$STAGE" | tac
- else
- [ -f "$B_LOG" ] && tac "$B_LOG"
- [ -f "$S_LOG" ] && tac "$S_LOG"
- fi
- } | mail -s "Build: ($STAGE_STATUS: $VERSION: $(hostname -s))" $TO
-
-}
-
-stage_begin ()
-{
- if [ $END_STAGE -eq $STAGE ]; then
- log "exiting on request"
- STAGE_STATUS="ok"
- exit 0
- fi
-
- STAGE=$(( $STAGE + 1 ))
- log -n "Stage $STAGE: $@... "
-
- if [ $STAGE -lt $START_STAGE -a -f "$DST_DIR/$STAGE.marker" ]; then
- log skipped
- return 0
- fi
- return 1
-}
-
-stage_end ()
-{
- STATUS="$1"
- if [ $STATUS -ne 0 ]; then
- log "failed"
- cat "$LOG.$STAGE"
- exit 1
- fi
- touch "$DST_DIR/$STAGE.marker"
- log "ok!"
-}
-
-log "Building as $(whoami)@$(hostname) (this will be included in dmsg)";
-if [ -n "$RELEASE" ]; then
- log "Building for release, kernel-tree will need to be installed"
-else
- log "Building for testing, dependancies will be mangled"
- log "Define RELEASE=yes in the environment to build for a release"
-fi
-
-LOG="$S_LOG"
-purgelog
-DST_DIR="$S_DST_DIR"
-STAGE_NAME="Creating kernel-source directory"
-stage_begin "$STAGE_NAME" || {
- {
- rm -rf "$S_DST_DIR" "$S_PKG_DIR" "$S_DST_DIR/tmp"
- mkdir -p "$S_DST_DIR" "$S_DST_DIR/tmp"
- }
- stage_end $?
-}
-openlog
-log "Logs in $LOG.blah"
-
-STAGE_NAME="Fetching kernel-source tarball from debian archive"
-stage_begin "$STAGE_NAME" || {
- (
- cd "$S_DST_DIR" && \
- apt-get source -d -q=1 "kernel-source-$VERSION" && \
- tar -zxf "kernel-source-${VERSION}_$VERSION.orig.tar.gz" && \
- test ! -d "kernel-source-${VERSION}-$VERSION.orig" || \
- mv "kernel-source-${VERSION}-$VERSION.orig" \
- "kernel-source-${VERSION}-$VERSION"
- ) >& "$LOG.$STAGE"
- stage_end $?
-}
-
-STAGE_NAME="Copying kernel-source debian directory"
-stage_begin "$STAGE_NAME" || {
- {
- ( cd "$S_SRC_DIR/" && svn status; ) > "$LOG.$STAGE.svn" && \
- rsync -av --exclude .svn --exclude ".*.sw[a-z]" \
- "$S_SRC_DIR/" "$S_PKG_DIR/" && \
- chmod u+x "$S_PKG_DIR/debian/rules" && \
- echo "Do not remove this line. " > "$S_PKG_DIR/debian/official"
- } >& "$LOG.$STAGE"
- stage_end $?
- if [ -s "$LOG.$STAGE.svn" ]; then
- echo "=== SVN file stauts ==="
- cat "$LOG.$STAGE.svn"
- fi | tee -a "$LOG.$STAGE"
-}
-
-STAGE_NAME="Patching kernel-source tree"
-stage_begin "$STAGE_NAME" || {
- (
- cd "$S_PKG_DIR" && \
- ./debian/rules patch
- ) >& "$LOG.$STAGE"
- stage_end $?
-}
-
-STAGE_NAME="Build kernel-source package"
-stage_begin "$STAGE_NAME" || {
- (
- cd "$S_PKG_DIR" && \
- dpkg-buildpackage -us -uc -rfakeroot
- ) >& "$LOG.$STAGE"
- stage_end $?
-}
-
-STAGE_NAME="Extracting kernel-source package"
-stage_begin "$STAGE_NAME" || {
- {
- if [ -n "$RELEASE" ]; then
- echo skip
- else
- DEB_VERSION=$(( cd "$S_PKG_DIR" && dpkg-parsechangelog; ) | \
- awk '/^Version: / { print $$2 }') && \
- dpkg-deb -x "$S_DST_DIR/kernel-source-${VERSION}_${DEB_VERSION}_all.deb" "$S_DST_DIR/tmp" && \
- mv "$S_DST_DIR/tmp/usr/src/kernel-source-$VERSION.tar.bz2" \
- "$S_DST_DIR"
- fi
- } >& "$LOG.$STAGE"
- stage_end $?
-}
-
-LOG="$B_LOG"
-purgelog
-DST_DIR="$B_DST_DIR"
-STAGE_NAME="Creating kernel-image directory"
-stage_begin "$STAGE_NAME" || {
- {
- rm -rf "$B_DST_DIR" "$B_PKG_DIR"
- mkdir -p "$B_DST_DIR"
- }
- stage_end $?
-}
-openlog
-log "Logs in $LOG.blah"
-
-STAGE_NAME="Copying kernel-image debian directory"
-stage_begin "$STAGE_NAME" || {
- {
- ( cd "$B_SRC_DIR/" && svn status; ) > "$LOG.$STAGE.svn" && \
- rsync -av --exclude .svn "$B_SRC_DIR/" "$B_PKG_DIR/" && \
- chmod u+x "$B_PKG_DIR/debian/rules"
- } >& "$LOG.$STAGE"
- stage_end $?
- if [ -s "$LOG.$STAGE.svn" ]; then
- echo "=== SVN file stauts ==="
- cat "$LOG.$STAGE.svn"
- fi | tee -a "$LOG.$STAGE"
-}
-
-STAGE_NAME="Mangling kernel-image debian/{rules,control}"
-stage_begin "$STAGE_NAME" || {
- {
- if [ -n "$RELEASE" ]; then
- echo skip
- else
- DEB_VERSION=$(( cd "$S_PKG_DIR" && dpkg-parsechangelog; ) | \
- awk '/^Version: / { print $$2 }') && \
- TMP_DIR="$(echo $S_DST_DIR | sed -e 's/\//\\\//g')" && \
- TMP_CMD="override_version=$DEB_VERSION home=$S_PKG_DIR/debian/patches sh $S_PKG_DIR/debian/apply" && \
- TMP_CMD="$(echo $TMP_CMD | sed -e 's/\//\\\//g')" && \
- sed -e "s/\/usr\/src\(\/kernel-source\)/$TMP_DIR\1/" \
- -e "s/\/usr\/src\/.*\/apply\/debian/$TMP_CMD/" \
- < "$B_PKG_DIR/debian/rules" \
- > "$B_PKG_DIR/debian/rules.2" && \
- mv "$B_PKG_DIR/debian/rules.2" "$B_PKG_DIR/debian/rules" && \
- chmod u+x "$B_PKG_DIR/debian/rules" && \
- sed -re "/^Build-Depends: / s/kernel-tree-$VERSION-[0-9]+(, )?//" \
- < "$B_PKG_DIR/debian/control" \
- > "$B_PKG_DIR/debian/control.2" && \
- mv "$B_PKG_DIR/debian/control.2" \
- "$B_PKG_DIR/debian/control" && \
- chmod u+x "$B_PKG_DIR/debian/control"
- fi
- } >& "$LOG.$STAGE"
- stage_end $?
-}
-
-STAGE_NAME="Building kernel-image packages"
-stage_begin "$STAGE_NAME" || {
- (
- cd $B_PKG_DIR && \
- time dpkg-buildpackage -rfakeroot -us -uc
- ) >& "$LOG.$STAGE"
- stage_end $?
-}
-BUILD_STAGE=$STAGE
-
-STAGE_NAME="Examining kernel-image symbols"
-stage_begin "$STAGE_NAME" || {
- (
- LOOP_STATUS=0
- echo "=== Modprobe Symbol Report ==="
- fgrep "needs unknown symbol" $LOG.$BUILD_STAGE && \
- LOOP_STATUS=1
- echo "=== System.map Symbol Report ==="
- OLD="$B_DST_DIR/old"
- rm -rf "$OLD"
- mkdir -p "$OLD"
- cd "$OLD"
- apt-get -q source "kernel-image-$VERSION-$KERNEL_ARCH"
- # Using apt-get here does not work because it only
- # prints out URLs of files that need to be downloaded,
- # so if they are in the apt cache somewhere they
- # won't show up
- #awk '/^Package: kernel-headers/ {print $2}' < \
- # kernel-image-2.4.27-i386-2.4.27/debian/control | \
- # xargs apt-get --reinstall -qq --print-uris install | \
- # awk -F\' '{print $2}' | \
- # xargs wget -nv
- export URL="http://debian.local.valinux.co.jp/debian/"
- awk '/^Package: kernel-headers/ {print $2}' < \
- kernel-image-$VERSION-$KERNEL_ARCH-$VERSION/debian/control | \
- xargs apt-cache show |\
- awk '/^Filename: / {print ENVIRON["URL"]$2}' | \
- xargs wget -nv
- cd $B_PKG_DIR
- DEB_VERSION=$(( cd "$B_PKG_DIR" && dpkg-parsechangelog; ) | \
- awk '/^Version: / { print $$2 }') && \
- SONAME=$(sed -ne "s/Package: kernel-headers-$VERSION-\([0-9]\) *$/\1/ p" debian/control)
- for f in $(find config -maxdepth 1 -type f ! -name default -printf '%f\n'); do
- echo "\"$f\""
- kernel_symbol_check \
- "$OLD/kernel-headers-$VERSION-"[0-9]"-${f}_$VERSION-"*"_$KERNEL_ARCH.deb" \
- "$B_DST_DIR/kernel-headers-$VERSION-$SONAME-${f}_${DEB_VERSION}_$KERNEL_ARCH.deb" \
- || LOOP_STATUS=1
- done
- [ "$LOOP_STATUS" = "0" ]
- ) >& "$LOG.$STAGE"
- stage_end $?
-}
-
-STAGE_STATUS="ok"
-exit