[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: