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

Reply via email to