On Fri Jan 02 16:59:57 2015, coke wrote: > The problem is that perl6-m is a generated file. > > So if you copy perl6-m to perl6, and then generate a new perl6-m > runner, your version of perl6 is not the up to date version. > > The runner isn't something that changes on a regular basis, but the > dependency still need to be there.
Yes, 'perl6-m' (M_RUNNER in the Makefile) is a generated file by itself. But in this case 'make' checks the dependencies and figures out that 'perl6-m' does not have to be rebuild ('perl6-m' itself is not rebuild in your original example) -- and so it's fine to copy it to 'perl6' before building the settings. [Actually the whole step of generating the file 'perl6' is unnecessary in this case. It only happens because we have a target 'm-runner-default' but no such file -- and 'make' therefore considers this target out of date (cmp. ticket https://rt.perl.org/Ticket/Display.html?id=122649).] If you touch a prerequisite for 'perl6-m', 'make' duefully generates 'perl6-m' before copying it to 'perl6'. But again with a parallel run of 'make' this can happen (and does in the following example) before building the settings. $ touch src/core/IO.pm; touch blib/Perl6/Pod.moarvm $ make -j 3 /working_dir/install/bin/nqp-m --target=mbc --output=blib/Perl6/World.moarvm --encoding=utf8 \ src/Perl6/World.nqp /working_dir/install/bin/nqp-m tools/build/gen-cat.nqp moar src/Perl6/Actions.nqp > src/gen/m-Perl6-Actions.nqp /working_dir/install/bin/nqp-m --target=mbc --output=blib/Perl6/Actions.moarvm --encoding=utf8 \ src/gen/m-Perl6-Actions.nqp /working_dir/install/bin/nqp-m --target=mbc --output=blib/Perl6/Grammar.moarvm --encoding=utf8 \ src/Perl6/Grammar.nqp /usr/bin/perl tools/build/gen-version.pl > src/gen/main-version.nqp /working_dir/install/bin/nqp-m tools/build/gen-cat.nqp moar src/main.nqp src/gen/main-version.nqp > src/gen/m-main.nqp /working_dir/install/bin/nqp-m --target=mbc --output=perl6.moarvm \ --vmlibs=dynext/libperl6_ops_moar.so=Rakudo_ops_init src/gen/m-main.nqp /working_dir/install/bin/nqp-m tools/build/gen-cat.nqp moar -f tools/build/moar_core_sources > src/gen/m-CORE.setting /usr/bin/perl -MExtUtils::Command -e rm_f perl6-m /working_dir/install/bin/nqp-m tools/build/gen-cat.nqp moar src/perl6-debug.nqp src/gen/main-version.nqp > src/gen/m-perl6-debug.nqp /usr/bin/perl tools/build/create-moar-runner.pl "/working_dir/install/bin/moar" perl6.moarvm perl6-m . "/working_dir/install/languages/nqp/lib" . /usr/bin/perl -MExtUtils::Command -e chmod 755 perl6-m /usr/bin/perl -MExtUtils::Command -e rm_f perl6 /usr/bin/perl -MExtUtils::Command -e cp perl6-m perl6 /usr/bin/perl -MExtUtils::Command -e chmod 755 perl6 /working_dir/install/bin/nqp-m --target=mbc --output=perl6-debug.moarvm \ --vmlibs=dynext/libperl6_ops_moar.so=Rakudo_ops_init src/gen/m-perl6-debug.nqp /usr/bin/perl tools/build/create-moar-runner.pl "/working_dir/install/bin/moar" perl6-debug.moarvm perl6-debug-m . "/working_dir/install/languages/nqp/lib" . The following step can take a long time, please be patient. /working_dir/install/bin/moar --libpath="/working_dir/install/languages/nqp/lib" perl6.moarvm --setting=NULL --ll-exception --optimize=3 --target=mbc --stagestats --output=CORE.setting.moarvm src/gen/m-CORE.setting Stage start : 0.000 Stage parse : 41.709 Stage syntaxcheck: 0.000 Stage ast : 0.000 Stage optimize : 3.606 Stage mast : 14.142 Stage mbc : 0.236 /working_dir/install/bin/moar --libpath="/working_dir/install/languages/nqp/lib" perl6.moarvm --target=mbc --ll-exception --output=RESTRICTED.setting.moarvm src/RESTRICTED.setting ./perl6-m --target=mbc --output=lib/Test.pm.moarvm lib/Test.pm ./perl6-m --target=mbc --output=lib/lib.pm6.moarvm lib/lib.pm6 ./perl6-m --target=mbc --output=lib/Pod/To/Text.pm.moarvm lib/Pod/To/Text.pm At least that's how I understand the problem. Christian