Невозможно прекомпилировать при использовании какого-либо внешнего модуля - PullRequest
0 голосов
/ 16 декабря 2018

Я пытаюсь предварительно скомпилировать внешние файлы, чтобы получить их активы с помощью этого сценария:

#!/usr/bin/env perl6

use v6;

use nqp;

my $precomp-store = CompUnit::PrecompilationStore::File.new(prefix => "/tmp".IO);

our $precomp = CompUnit::PrecompilationRepository::Default.new(store => $precomp-store);
my $file = "./test.pm6";
my $io = $file.IO;
my $id = nqp::sha1(~$file);

my $handle = $precomp.load($id)[0];
without $handle {
    $precomp.precompile($io, $id, :force);
    $handle = $precomp.load($id)[0] // fail("Could not precompile $file for $!");
}

Файл, который я использую, выглядит так:

use Test;

=begin pod

This is a simple pod

=end pod

Если я включу RAKUDO_MODULE_DEBUGон не работает с большим количеством материала, но важная часть здесь:

precomp [master●] % perl6 precomp.p6
 1 RMD: Loading settings CORE
 1 RMD: going to load Perl6::BOOTSTRAP
 1 RMD: Settings CORE loaded
 1 RMD: Loading settings CORE.d
 1 RMD: Settings CORE.d loaded
 1 RMD: Attempting 'nqp' as a pragma
 1 RMD: Successfully handled 'nqp' as a pragma
 1 RMD: Trying to load 1547B8DB721297B89EF50BE4C8A107F9B5D21542 from /tmp
 1 RMD: Trying to load 1547B8DB721297B89EF50BE4C8A107F9B5D21542.repo-id from /tmp
 1 RMD: dependency: 2D4A7CA10695CD2B374573413D261A660E282E2A perl#sources/2D4A7CA10695CD2B374573413D261A660E282E2A D211A39B814DE8D3F38300E0D20E3D0AD2CC31FC CompUnit::DependencySpecification.new(short-name => "Test", source-line-number => 1, from => "Perl6", version-matcher => Bool::True, auth-matcher => Bool::True, api-matcher => Bool::True)
 1 RMD: Could not find Test
Use of uninitialized value of type Str in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
  in block <unit> at precomp.p6 line 14
 1 RMD: Outdated precompiled /tmp/F2356FF85D653556C42648576BF9FD57907BCA26/15/1547B8DB721297B89EF50BE4C8A107F9B5D21542
            mtime: Instant:1544952082.231729
            checksum: 35C697BFF7987CFB69E25F56B3EFCB2BD79D75DA, expected: 
 1 RMD: Precompiling ./test.pm6 into /tmp/F2356FF85D653556C42648576BF9FD57907BCA26/15/1547B8DB721297B89EF50BE4C8A107F9B5D21542.bc (  )
 2     RMD: Loading settings CORE
 2     RMD: going to load Perl6::BOOTSTRAP
 2     RMD: Settings CORE loaded
 2     RMD: Loading settings CORE.d
 2     RMD: Settings CORE.d loaded
 1 RMD: Precompiled ./test.pm6 into /tmp/F2356FF85D653556C42648576BF9FD57907BCA26/15/1547B8DB721297B89EF50BE4C8A107F9B5D21542.bc
 1 RMD: Writing dependencies and byte code to /tmp/F2356FF85D653556C42648576BF9FD57907BCA26/15/1547B8DB721297B89EF50BE4C8A107F9B5D21542.tmp for source checksum: F2F1395843988DF3C47A50DA40CF3B864959FB14
 1 RMD: Trying to load 1547B8DB721297B89EF50BE4C8A107F9B5D21542 from /tmp
 1 RMD: Trying to load 1547B8DB721297B89EF50BE4C8A107F9B5D21542.repo-id from /tmp
 1 RMD: Loading precompiled
        /tmp/F2356FF85D653556C42648576BF9FD57907BCA26/15/1547B8DB721297B89EF50BE4C8A107F9B5D21542

Суть в том, что он не находит модуль Test.Это, вероятно, означает, что PrecompilationRepository пытается найти Test в контексте того же репозитория предварительной компиляции, что имеет смысл.Таким образом, вопрос заключается в следующем: верно ли это предположение?Если это так, как мы можем вставить этот путь к библиотеке в хранилище прекомпиляции?Или мы должны просто использовать хранилище прекомпиляции по умолчанию?Как мы могли это сделать?

...