Bug#866029: with the reproducer
Package: gnat-7
Followup-For: Bug #866029
Control: tags -1 + pending
Now with the attachment.
A patch is in the VCS.
#!/bin/sh
set -C -e -f -u
# On a normal installation.
gnatmake=gnatmake
# Alongside a fresh gcc build tree.
# gcctree=..
# target_noncanonical=arm-linux-gnueabi
# exedir=$gcctree/build/gcc
# rtsdir=$gcctree/build/$target_noncanonical/libada
# vsndir=$gcctree/build/$target_noncanonical/libgnatvsn
# export LD_LIBRARY_PATH=$rtsdir/adalib:$vsndir
# echo "LD_LIBRARY_PATH='$LD_LIBRARY_PATH'"
# gnatmake="$exedir/gnatmake --RTS=$rtsdir --GCC=$exedir/xgcc"
rm -f p.ads
echo 'package P is end P;' > p.ads
# Avoid mtime sooner than the one for system.ads.
mtime=$((1000*365*24*60*60))
touch --date=@$mtime p.ads
to_gnat () {
date --utc --date=@$1 +%Y%m%d%H%M%S
}
check () {
rm -f p.ali p.o
$gnatmake -q -c p.ads
expected=`to_gnat $1`
found=`sed -n '/^D p\.ads\t\+\([0-9]\{14\}\) .*/{s//\1/;p;q}' p.ali`
if test "$found" != "$expected"; then
echo "Fail: wrong time stamp in p.ali."
echo " SOURCE_DATE_EPOCH: '${SOURCE_DATE_EPOCH:-}'"
echo " Source file mtime:'`to_gnat $mtime`' ($mtime)"
echo " Expected in ALI :'$expected' ($1)"
echo " Found in ALI :'$found'"
fi
if test "`$gnatmake -c p.ads -eS`" != "gnatmake: objects up to date."; then
echo "Fail: p.ads should not require recompilation."
echo " SOURCE_DATE_EPOCH: '${SOURCE_DATE_EPOCH:-}'"
echo " Source file mtime:'`to_gnat $mtime`' ($mtime)"
echo " p.ali :'`cat p.ali`'"
echo " gnatmake -v :'`$gnatmake -c p.ads -eS -v`'"
fi
}
# SOURCE_DATE_EPOCH is not defined
unset SOURCE_DATE_EPOCH
check "$mtime"
# SOURCE_DATE_EPOCH is invalid or more recent than mtime.
for d in "" a " 1" -0 -1 $(($mtime+10)) 0$(($mtime+10)); do
export "SOURCE_DATE_EPOCH=$d"
check "$mtime"
done
# SOURCE_DATE_EPOCH is valid and older than mtime.
for d in $(($mtime-10)) 0$(($mtime-10)); do
export "SOURCE_DATE_EPOCH=$d"
check "$d"
done
echo "Test finished."
Reply to: