diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/mkinitramfs-samizdat | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/mkinitramfs-samizdat b/src/mkinitramfs-samizdat index 52e86b5..c2e6141 100755 --- a/src/mkinitramfs-samizdat +++ b/src/mkinitramfs-samizdat | |||
@@ -18,22 +18,21 @@ deb_arch() | |||
18 | 18 | ||
19 | up_to_date() | 19 | up_to_date() |
20 | { | 20 | { |
21 | local found system_initrd | 21 | local found |
22 | system_initrd=${1%$OUTPUT_TAG} | ||
23 | [ -e "$1" ] || return | 22 | [ -e "$1" ] || return |
23 | [ -z "$FORCE_BUILD" ] || return | ||
24 | found=$(find "$samizdat_initramfs_conf_dir" \ | 24 | found=$(find "$samizdat_initramfs_conf_dir" \ |
25 | "$samizdat_initrd_files_dir" \ | 25 | "$samizdat_initrd_files_dir" \ |
26 | "$system_initrd" \ | ||
27 | -type f -newer "$1" -print -quit) || return | 26 | -type f -newer "$1" -print -quit) || return |
28 | [ -z "$found" ] | 27 | [ -z "$found" ] |
29 | } | 28 | } |
30 | 29 | ||
31 | build_image() | 30 | build_image() |
32 | { | 31 | { |
33 | OUTPUT=/boot/initrd.img-$1${OUTPUT_TAG} | 32 | OUTPUT=/boot/initrd.img-$1 |
34 | # Always regenerate when --system specified. | 33 | # Always regenerate when --system specified. |
35 | # Otherwise, only regenerate if it appears dependencies changed. | 34 | # Otherwise, only regenerate if it appears dependencies changed. |
36 | if [ -z "$OUTPUT_TAG" ] || ! up_to_date "$OUTPUT" | 35 | if ! up_to_date "$OUTPUT" |
37 | then | 36 | then |
38 | /usr/sbin/mkinitramfs \ | 37 | /usr/sbin/mkinitramfs \ |
39 | -d "$samizdat_initramfs_conf_dir" \ | 38 | -d "$samizdat_initramfs_conf_dir" \ |
@@ -45,15 +44,18 @@ build_image() | |||
45 | 44 | ||
46 | . samizdat-paths.sh | 45 | . samizdat-paths.sh |
47 | 46 | ||
48 | OUTPUT_TAG=.samizdat | 47 | OUTPUT_TAG= |
48 | FORCE_BUILD= | ||
49 | while [ $# -gt 0 ] | 49 | while [ $# -gt 0 ] |
50 | do | 50 | do |
51 | case "$1" in | 51 | case "$1" in |
52 | -s|--system) OUTPUT_TAG=; shift; continue;; | 52 | -t|--tag) OUTPUT_TAG=.samizdat;; |
53 | -f|--force) FORCE_BUILD=y;; | ||
53 | --) shift; break;; | 54 | --) shift; break;; |
54 | -?) exit 1;; | 55 | -*) exit 1;; |
55 | *) break;; | 56 | *) break;; |
56 | esac | 57 | esac |
58 | shift | ||
57 | done | 59 | done |
58 | 60 | ||
59 | if [ "$1" ] | 61 | if [ "$1" ] |
@@ -64,7 +66,7 @@ then | |||
64 | printf 'Error: No such file: %s\n' "$k" >&2 | 66 | printf 'Error: No such file: %s\n' "$k" >&2 |
65 | exit 1 | 67 | exit 1 |
66 | fi | 68 | fi |
67 | build_image "$1" || exit | 69 | build_image "$1$OUTPUT_TAG" || exit |
68 | ln -sf "${k#/}" /vmlinuz | 70 | ln -sf "${k#/}" /vmlinuz |
69 | elif [ -L /vmlinuz ] | 71 | elif [ -L /vmlinuz ] |
70 | then | 72 | then |