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."