#!/bin/sh . samizdat-paths.sh if [ -d "$1" ] then samizdat_linux_dir=$1 fi initrd=${samizdat_linux_dir}/initrd.img vmlinuz=${samizdat_linux_dir}/vmlinuz conf_dir=$samizdat_initramfs_conf_dir apt_dependencies=$samizdat_initrd_files_dir/initrd-dependencies.txt get_kernel_version() { local pkgs_file="$1" egrep '^ii linux-image-(amd64|686)' "$pkgs_file" | (read _ pkg ver _; apt-cache show "$pkg=$ver") | grep Depends | (read _ a; echo ${a#linux-image-}) } pkgs_file=rootfs/_build/${rootfs:-samizdat}.pkgs.txt [ -f "$pkgs_file" ] || exit kernel_version=$(get_kernel_version rootfs/_build/${rootfs:-samizdat}.pkgs.txt) [ "$kernel_version" ] || exit debian_initrd=/boot/initrd.img-${kernel_version} find_deps() { find "$conf_dir" "$samizdat_initrd_files_dir" "$debian_initrd" "$@" } force_rebuild() { touch "$conf_dir" return 1 } rebuild() { [ ! -f "$apt_dependencies" ] || sudo apt-get install -q=10 --no-upgrade -y $(cat "$apt_dependencies") set -ex cp -f /boot/vmlinuz-"${kernel_version}" "$vmlinuz" /usr/sbin/mkinitramfs -d "$conf_dir" -o "$initrd" "${kernel_version}" || force_rebuild } if [ ! -e "$initrd" -o ! -e "$vmlinuz" ]; then rebuild else found=$(find_deps -newer "$initrd" -print -quit) if [ "$found" ]; then echo "initrd.sh: rebuild forced: found modified source: $found" >&2 rebuild fi fi