Current GIT should support relative pathnames; this is better
solution. I had in mind syslinux test, but as you are working on it
anyway could you look at simply cd'ing into correct directory and
using relative pathnames everywhere?

On Sun, Sep 18, 2016 at 7:33 PM, Colin Watson <cjwat...@ubuntu.com> wrote:
> When doing out-of-tree builds, abs_top_srcdir may well contain ".."
> segments, and grub-syslinux2cfg canonicalises its --root argument.  As a
> result, the expansion of @abs_top_srcdir@ may not match what
> grub-syslinux2cfg produces.
>
> It's somewhat difficult to portably canonicalize a path in shell, and
> autoconf/automake don't offer any support for this.  But there's a much
> simpler option: copy the test data to a temporary directory and make
> substitutions in the expected output file based on that.
> ---
>  Makefile.am                            |  6 ------
>  tests/syslinux/ubuntu10.04_grub.cfg.in | 30 +++++++++++++++---------------
>  tests/syslinux_test.in                 | 14 ++++++++++----
>  3 files changed, 25 insertions(+), 25 deletions(-)
>
> diff --git a/Makefile.am b/Makefile.am
> index 00a9663..bc90303 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -460,9 +460,3 @@ ChangeLog: FORCE
>         fi
>
>  EXTRA_DIST += ChangeLog ChangeLog-2015
> -
> -syslinux_test: $(top_builddir)/config.status 
> tests/syslinux/ubuntu10.04_grub.cfg
> -
> -tests/syslinux/ubuntu10.04_grub.cfg: $(top_builddir)/config.status 
> tests/syslinux/ubuntu10.04_grub.cfg.in
> -       (for x in tests/syslinux/ubuntu10.04_grub.cfg.in ; do cat 
> $(srcdir)/"$$x"; done) | $(top_builddir)/config.status --file=$@:-
> -CLEANFILES += tests/syslinux/ubuntu10.04_grub.cfg
> diff --git a/tests/syslinux/ubuntu10.04_grub.cfg.in 
> b/tests/syslinux/ubuntu10.04_grub.cfg.in
> index 846e4ac..f285afb 100644
> --- a/tests/syslinux/ubuntu10.04_grub.cfg.in
> +++ b/tests/syslinux/ubuntu10.04_grub.cfg.in
> @@ -1,4 +1,4 @@
> -  background_image 
> '@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux'/'splash.png'
> +  background_image '@dir@/ubuntu10.04/isolinux'/'splash.png'
>  # D-I config version 2.0
>    # UNSUPPORTED command 'menu hshift 13'
>    # UNSUPPORTED command 'menu width 49'
> @@ -41,7 +41,7 @@ menuentry 'Test memory' --hotkey 'm' --id 'memtest' {
>    linux$linux_suffix '/'/'/install/mt86plus'
>  }
>  menuentry 'Boot from first hard disk' --hotkey 'b' --id 'hd' {
> -# File (host)/@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux/gtk.cfg 
> not found
> +# File (host)/@dir@/ubuntu10.04/isolinux/gtk.cfg not found
>    # UNSUPPORTED command 'menu begin advanced'
>    # UNSUPPORTED command 'menu title Advanced options'
>    # UNSUPPORTED command 'menu color title      * #FFFFFFFF *'
> @@ -63,15 +63,15 @@ menuentry 'Boot from first hard disk' --hotkey 'b' --id 
> 'hd' {
>  }
>  menuentry 'Back..' --hotkey 'b' --id 'mainmenu' {
>    # UNSUPPORTED command 'menu exit'
> -# File (host)/@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux/adgtk.cfg 
> not found
> +# File (host)/@dir@/ubuntu10.04/isolinux/adgtk.cfg not found
>    # UNSUPPORTED command 'menu end'
>    # UNSUPPORTED entry type 0
>  true;
>  }
>  menuentry 'Help' --hotkey 'h' --id 'help' {
>    # UNSUPPORTED command 'ui gfxboot bootlogo'
> -#'@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux'/'prompt.cfg' 
> (host)@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux/prompt.cfg:
> -  background_image 
> '@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux/'/'splash.png'
> +#'@dir@/ubuntu10.04/isolinux'/'prompt.cfg' 
> (host)@dir@/ubuntu10.04/isolinux/prompt.cfg:
> +  background_image '@dir@/ubuntu10.04/isolinux/'/'splash.png'
>    # UNSUPPORTED command 'display f1.txt'
>    # UNSUPPORTED command 'menu hshift 13'
>    # UNSUPPORTED command 'menu width 49'
> @@ -114,7 +114,7 @@ menuentry 'Test memory' --hotkey 'm' --id 'memtest' {
>    linux$linux_suffix '/'/'/install/mt86plus'
>  }
>  menuentry 'Boot from first hard disk' --hotkey 'b' --id 'hd' {
> -# File (host)/@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux//gtk.cfg 
> not found
> +# File (host)/@dir@/ubuntu10.04/isolinux//gtk.cfg not found
>    # UNSUPPORTED command 'menu begin advanced'
>    # UNSUPPORTED command 'menu title Advanced options'
>    # UNSUPPORTED command 'menu color title      * #FFFFFFFF *'
> @@ -136,14 +136,14 @@ menuentry 'Boot from first hard disk' --hotkey 'b' --id 
> 'hd' {
>  }
>  menuentry 'Back..' --hotkey 'b' --id 'mainmenu' {
>    # UNSUPPORTED command 'menu exit'
> -# File 
> (host)/@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux//adgtk.cfg not 
> found
> +# File (host)/@dir@/ubuntu10.04/isolinux//adgtk.cfg not found
>    # UNSUPPORTED command 'menu end'
>    # UNSUPPORTED entry type 0
>  true;
>  }
>  menuentry 'Help' --hotkey 'h' --id 'help' {
> -#'@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux/'/'prompt.cfg' 
> (host)@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux/prompt.cfg:
> -  syslinux_configfile -r '/'/'/' -c 
> '@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux/'/'' 
> '@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux/'/'prompt.cfg'
> +#'@dir@/ubuntu10.04/isolinux/'/'prompt.cfg' 
> (host)@dir@/ubuntu10.04/isolinux/prompt.cfg:
> +  syslinux_configfile -r '/'/'/' -c '@dir@/ubuntu10.04/isolinux/'/'' 
> '@dir@/ubuntu10.04/isolinux/'/'prompt.cfg'
>  }
>  menuentry 'menu' --id 'menu' {
>    # UNSUPPORTED command 'f1 f1.txt'
> @@ -156,8 +156,8 @@ menuentry 'menu' --id 'menu' {
>    # UNSUPPORTED command 'f8 f8.txt'
>    # UNSUPPORTED command 'f9 f9.txt'
>    # UNSUPPORTED command 'f0 f10.txt'
> -#'@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux/'/'isolinux.cfg' 
> (host)@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux/isolinux.cfg:
> -  background_image 
> '@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux//'/'splash.png'
> +#'@dir@/ubuntu10.04/isolinux/'/'isolinux.cfg' 
> (host)@dir@/ubuntu10.04/isolinux/isolinux.cfg:
> +  background_image '@dir@/ubuntu10.04/isolinux//'/'splash.png'
>  # D-I config version 2.0
>    # UNSUPPORTED command 'menu hshift 13'
>    # UNSUPPORTED command 'menu width 49'
> @@ -200,7 +200,7 @@ menuentry 'Test memory' --hotkey 'm' --id 'memtest' {
>    linux$linux_suffix '/'/'/install/mt86plus'
>  }
>  menuentry 'Boot from first hard disk' --hotkey 'b' --id 'hd' {
> -# File (host)/@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux///gtk.cfg 
> not found
> +# File (host)/@dir@/ubuntu10.04/isolinux///gtk.cfg not found
>    # UNSUPPORTED command 'menu begin advanced'
>    # UNSUPPORTED command 'menu title Advanced options'
>    # UNSUPPORTED command 'menu color title      * #FFFFFFFF *'
> @@ -222,15 +222,15 @@ menuentry 'Boot from first hard disk' --hotkey 'b' --id 
> 'hd' {
>  }
>  menuentry 'Back..' --hotkey 'b' --id 'mainmenu' {
>    # UNSUPPORTED command 'menu exit'
> -# File 
> (host)/@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux///adgtk.cfg not 
> found
> +# File (host)/@dir@/ubuntu10.04/isolinux///adgtk.cfg not found
>    # UNSUPPORTED command 'menu end'
>    # UNSUPPORTED entry type 0
>  true;
>  }
>  menuentry 'Help' --hotkey 'h' --id 'help' {
>    # UNSUPPORTED command 'ui gfxboot bootlogo'
> -#'@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux//'/'prompt.cfg' 
> (host)@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux/prompt.cfg:
> -  syslinux_configfile -r '/'/'/' -c 
> '@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux//'/'' 
> '@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux//'/'prompt.cfg'
> +#'@dir@/ubuntu10.04/isolinux//'/'prompt.cfg' 
> (host)@dir@/ubuntu10.04/isolinux/prompt.cfg:
> +  syslinux_configfile -r '/'/'/' -c '@dir@/ubuntu10.04/isolinux//'/'' 
> '@dir@/ubuntu10.04/isolinux//'/'prompt.cfg'
>  }
>  }
>  }
> diff --git a/tests/syslinux_test.in b/tests/syslinux_test.in
> index fc4edd8..4ba94c5 100644
> --- a/tests/syslinux_test.in
> +++ b/tests/syslinux_test.in
> @@ -2,15 +2,21 @@
>
>  set -e
>
> +tdir="`mktemp -d "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"`" || exit 1
>  outfile="`mktemp "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"`" || exit 1
>
> -"@builddir@/grub-syslinux2cfg" -r 
> "@abs_top_srcdir@/tests/syslinux/ubuntu10.04" 
> "@abs_top_srcdir@/tests/syslinux/ubuntu10.04/isolinux/isolinux.cfg" -o 
> "$outfile"
> +cp -a "@top_srcdir@/tests/syslinux/ubuntu10.04" "$tdir/ubuntu10.04"
>
> -echo "$outfile"
> +"@builddir@/grub-syslinux2cfg" -r "$tdir/ubuntu10.04" 
> "$tdir/ubuntu10.04/isolinux/isolinux.cfg" -o "$tdir/observed.cfg"
>
> -if ! diff -u "$outfile" "@builddir@/tests/syslinux/ubuntu10.04_grub.cfg"; 
> then
> +echo "$tdir/observed.cfg"
> +
> +sed -e "s,@dir@,$tdir,g" 
> "@top_srcdir@/tests/syslinux/ubuntu10.04_grub.cfg.in" >"$tdir/expected.cfg"
> +if ! diff -u "$tdir/observed.cfg" "$tdir/expected.cfg"; then
>    echo "Mismatch in ubuntu10.04"
> -  exit 1;
> +  rm -rf "$tdir"
> +  exit 1
>  fi
>
> +rm -rf "$tdir"
>  exit 0
> --
> 2.7.4
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to