#!/bin/bash
-if [ "$#" -ne 1 ]; then
- echo "Usage: $0 <orig tag>|<base release>" 1>&2
+if [ "$#" -ne 3 ]; then
+ echo "Usage: $0 <orig tag>|<base release> <reconstruct> <options>" 1>&2
exit 1
fi
tag="$1"
+reconstruct="$2"
+options="$3"
case "$tag" in
v*) ;;
#git ls-tree -r --full-tree HEAD | grep ^120 | \
#while read mode type blobid name
-# Identify all new symlinks since the proffered tag.
-echo "# Recreate any symlinks created since the orig."
-git diff "$tag.." --raw | awk '(/^:000000 120000/ && $5 == "A") { print $NF }' | \
-while read name
-do
- link=$( readlink "$name" )
-
- echo "[ ! -L '$name' ] && ln -sf '$link' '$name'"
-done
-
-# Identify all removed files since the proffered tag.
-echo "# Remove any files deleted from the orig."
-git diff "$tag.." --raw | awk '(/^:/ && $5 == "D") { print $NF }' | \
-while read name
-do
- echo "rm -f '$name'"
-done
-
-# All done, make sure this does not complete in error.
-echo "exit 0"
+(
+ # Identify all new symlinks since the proffered tag.
+ echo "# Recreate any symlinks created since the orig."
+ git diff "$tag.." --raw | awk '(/^:000000 120000/ && $5 == "A") { print $NF }' | \
+ while read name
+ do
+ link=$( readlink "$name" )
+
+ echo "[ ! -L '$name' ] && ln -sf '$link' '$name'"
+ done
+
+ # Identify all removed files since the proffered tag.
+ echo "# Remove any files deleted from the orig."
+ git diff "$tag.." --raw | awk '(/^:/ && $5 == "D") { print $NF }' | \
+ while read name
+ do
+ echo "rm -f '$name'"
+ done
+
+ # All done, make sure this does not complete in error.
+ echo "exit 0"
+) >"$reconstruct"
+
+(
+ # Identify all new symlinks since the proffered tag.
+ echo "# Ignore any symlinks created since the orig which are rebuilt by reconstruct."
+ git diff "$tag.." --raw | awk '(/^:000000 120000/ && $5 == "A") { print $NF }' | \
+ while read name
+ do
+ echo "extend-diff-ignore=$name"
+ done
+) >"$options.update"
+
+
+head='^## autoreconstruct -- begin$'
+foot='^## autoreconstruct -- end$'
+sed -i -e "
+ /$head/,/$foot/{
+ /$head/{
+ p;
+ r $options.update
+ };
+ /$foot/p;
+ d
+ }
+" "$options"
+rm -f "$options.update"
# Ignore vbox symlinks, we will regenerate these at clean (LP:1426113)
+## autoreconstruct -- begin
extend-diff-ignore=ubuntu/vbox/vboxvideo/include
extend-diff-ignore=ubuntu/vbox/vboxguest/r0drv
extend-diff-ignore=ubuntu/vbox/vboxguest/include
extend-diff-ignore=zfs/scripts/zpios-test/medium.sh
extend-diff-ignore=zfs/scripts/zpios-test/small.sh
extend-diff-ignore=zfs/scripts/zpios-test/tiny.sh
+## autoreconstruct -- end
# force "dpkg-source -I -i" behavior
diff-ignore