Annotation of truecrypt/linux/build.sh, revision 1.1.1.4

1.1       root        1: #!/bin/sh 
                      2: # TrueCrypt build script
                      3: 
1.1.1.4 ! root        4: TMP=.build.sh.tmp
1.1       root        5: 
                      6: umask 022
                      7: 
                      8: error ()
                      9: {
                     10:        echo "Error: $*" >&2
                     11: }
                     12: 
                     13: check_kernel_version ()
                     14: {
                     15:        M="$1/Makefile"
1.1.1.3   root       16:        [ ! -f "$M" ] && return 1
                     17:        
1.1.1.2   root       18:        VER=$(grep '^VERSION *=' "$M" | head -n 1 | tr -d ' ' | cut -d'=' -f2)
                     19:        VER=$VER.$(grep '^PATCHLEVEL *=' "$M" | head -n 1 | tr -d ' ' | cut -d'=' -f2)
                     20:        VER=$VER.$(grep '^SUBLEVEL *=' "$M" | head -n 1 | tr -d ' ' | cut -d'=' -f2)
1.1       root       21: 
1.1.1.4 ! root       22:        [ $VER = $(uname -r | cut -d- -f1 | cut -d. -f1-3) ] && return 0
1.1       root       23:        return 1
                     24: }
                     25: 
                     26: # Prerequisites
                     27: 
                     28: echo "Checking build requirements..."
                     29: 
1.1.1.3   root       30: [ $(id -u) -ne 0 ] && error "Administrator (root) privileges required for kernel source configuration." && exit 1
1.1       root       31: 
                     32: V=""
                     33: case "$(uname -r)" in
                     34:        [01].*) V=1 ;;
                     35:        2.[0-5].*) V=1 ;;
                     36:        2.6.[0-4]) V=1 ;;
                     37:        2.6.[0-4][.-]*) V=1 ;;
                     38: esac
                     39: [ "$V" ] && error "TrueCrypt requires Linux kernel 2.6.5 or later" && exit 1
                     40: 
1.1.1.4 ! root       41: KERNEL_SRC=/usr/src/linux-source-$(uname -r)
        !            42: check_kernel_version "$KERNEL_SRC" || KERNEL_SRC=/usr/src/linux-source-$(uname -r | cut -d'-' -f1)
        !            43: check_kernel_version "$KERNEL_SRC" || KERNEL_SRC=/usr/src/linux-$(uname -r)
        !            44: check_kernel_version "$KERNEL_SRC" || KERNEL_SRC=/usr/src/linux-$(uname -r | cut -d'-' -f1)
        !            45: check_kernel_version "$KERNEL_SRC" || KERNEL_SRC=/usr/src/linux
        !            46: 
        !            47: if ! check_kernel_version "$KERNEL_SRC"
1.1       root       48: then
                     49:        echo -n "Linux kernel ($(uname -r)) source directory [$KERNEL_SRC]: "
                     50:        read A
                     51:        [ "$A" ] && KERNEL_SRC="$A"
1.1.1.3   root       52:        [ ! -d "$KERNEL_SRC" ] && error "$KERNEL_SRC does not exit" && exit 1
1.1       root       53: fi 
                     54: 
                     55: if ! check_kernel_version "$KERNEL_SRC"
                     56: then
                     57:        error "Kernel source version in $KERNEL_SRC is not $(uname -r)"
                     58:        exit 1
                     59: fi
                     60: 
1.1.1.4 ! root       61: if [ ! -f "$KERNEL_SRC/drivers/md/dm.h" ]
        !            62: then
        !            63:        error "Kernel source code is incomplete - drivers/md/dm.h not found."
        !            64:        exit 1
        !            65: fi
        !            66: 
1.1       root       67: if [ ! -f "$KERNEL_SRC/.config" ]
                     68: then
1.1.1.3   root       69:        if [ -f /proc/config.gz -o -f /boot/config-$(uname -r) ]
                     70:        then
                     71:                echo -n "Configure kernel source according to the currently running kernel? [Y/n]: "
                     72:                read A
                     73:                if [ -z "$A" -o "$A" = "y" -o "$A" = "Y" ]
                     74:                then
                     75:                        echo -n "Configuring kernel source in $KERNEL_SRC... "
                     76:                        
                     77:                        if [ -f /proc/config.gz ]
                     78:                        then
                     79:                                zcat /proc/config.gz >$KERNEL_SRC/.config || exit 1
                     80:                        else
                     81:                                cp /boot/config-$(uname -r) $KERNEL_SRC/.config || exit 1
                     82:                        fi
                     83:                        
1.1.1.4 ! root       84:                        make -C $KERNEL_SRC oldconfig </dev/zero >/dev/null || exit 1
1.1.1.3   root       85:                        echo Done.
                     86:                fi
                     87:        fi
                     88: 
                     89:        if [ ! -f "$KERNEL_SRC/.config" ]
                     90:        then
                     91:                error "Kernel not configured. You should run make -C $KERNEL_SRC config"
                     92:                exit 1
                     93:        fi
                     94: fi
                     95: 
                     96: if [ ! -f "$KERNEL_SRC/scripts/modpost" -a ! -f "$KERNEL_SRC/scripts/mod/modpost" ]
                     97: then
                     98:        if grep -q modules_prepare $KERNEL_SRC/Makefile
                     99:        then
                    100:                echo -n "Preparing kernel build system in $KERNEL_SRC... "
1.1.1.4 ! root      101:                if ! make -C $KERNEL_SRC modules_prepare >/dev/null 2>$TMP
        !           102:                then
        !           103:                        cat $TMP; rm $TMP
        !           104:                        exit 1
        !           105:                fi
        !           106:                rm $TMP
1.1.1.3   root      107:                echo Done.
                    108:        else
                    109:                error "Kernel build system not ready. You should run make -C $KERNEL_SRC modules"
                    110:                exit 1
                    111:        fi
1.1       root      112: fi
                    113: 
1.1.1.4 ! root      114: grep -qi 'CONFIG_BLK_DEV_DM=[YM]' $KERNEL_SRC/.config || echo "Warning: kernel device mapper support (CONFIG_BLK_DEV_DM) is disabled in $KERNEL_SRC"
        !           115: 
        !           116: if [ ! -f "$KERNEL_SRC/Module.symvers" ] && grep -qi 'CONFIG_MODVERSIONS=Y' $KERNEL_SRC/.config 
1.1.1.2   root      117: then
1.1.1.4 ! root      118:                echo -n "Building internal kernel modules (may take a long time)... "
        !           119:                if ! make -C $KERNEL_SRC modules >/dev/null 2>$TMP
        !           120:                then
        !           121:                        cat $TMP; rm $TMP
        !           122:                        exit 1
        !           123:                fi
        !           124:                rm $TMP
        !           125:                echo Done.
1.1.1.2   root      126: fi
                    127: 
1.1       root      128: 
                    129: # Build
                    130: 
                    131: echo -n "Building kernel module... "
                    132: cd Kernel && make "KERNEL_SRC=$KERNEL_SRC" NO_WARNINGS=1 >/dev/null
                    133: [ $? -ne 0 ] && error "Failed to build kernel module" && exit 1
                    134: echo Done.
                    135: 
                    136: echo -n "Building truecrypt... "
                    137: cd ../Cli && make NO_WARNINGS=1 >/dev/null
                    138: [ $? -ne 0 ] && error "Failed to build truecrypt" && exit 1
                    139: echo Done.
                    140: 
                    141: exit 0

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.