Criei uma construção de compilador Rust personalizada que requer um compilador C++ proprietário. Como posso disponibilizar esse compilador para meus colegas de trabalho, por exemplo, instalável com rustup
, poder atualizá-lo/atualizá-lo, visualizar versões disponíveis, etc.
relate perguntas
-
os braços de correspondência têm tipos incompatíveis esperados ao reutilizar a função dentro da correspondência
-
Conversão de tipo de ferrugem em uma instrução de correspondência
-
Como forçar o tipo de retorno de uma correspondência para ()?
-
enums de ferrugem em representações primitivas
-
Existe uma maneira de simplificar a correspondência diretamente para Ok("VAL") em Result<String, VarError>
Estamos construindo um compilador Rust para QNX que é então publicado/distribuído internamente. O primeiro passo é construir uma distribuição da cadeia de ferramentas para seu(s) alvo(s), por exemplo:
Você precisa adaptar suas variáveis de ambiente e alvos conforme necessário. O parâmetro importante está
dist
nox.py
comando.Para distribuir os arquivos para rustup, você também precisa de alguns arquivos "manifest" adicionais. Adicione seus alvos a
src/tools/build-manifest/src/main.rs
, por exemplo com este diff:Crie o manifesto (atualize a data e a URL conforme necessário!):
Se você não tiver um servidor web adequado, você pode facilmente criar um, por exemplo, com o framework Rocket. Você só precisa fazer isso uma vez.
Alterar o conteúdo de
src/main.rs
:... e crie um
Rocket.toml
:Agora podemos copiar a distribuição para o servidor rustup e criar os arquivos hash sha256 necessários (adaptar o
buildserver
nome e os diretórios):Compile e execute o servidor web (
cargo run --release
é suficiente para testes; garanta que ele continue sendo executado em segundo plano, por exemplo, crie arquivos de configuração do systemd para deixá-lo ser executado automaticamente). Não há problema em deixar o servidor em execução enquanto adiciona novas distribuições.Agora seus desenvolvedores podem usar o rustup para instalar sua cadeia de ferramentas. É melhor não misturar a distribuição oficial do Rust com a sua. É melhor instalar o rustup sem instalar nenhuma cadeia de ferramentas:
Rustup usa a variável de ambiente
RUSTUP_DIST_SERVER
para acessar o servidor. Para casos de uso simples, defina a variável ao executar rustup; pode fazer sentido definir a variável, por exemplo, em~/.profile
.Para instalar, por exemplo, Rust 1.71.0 com stdlib para QNX 7.1 (aarch64) e host local (x86_64 no meu caso):
Dependendo de suas necessidades, especifique qual cadeia de ferramentas usar ao executar cargo (como
cargo +1.71.0
) ou defina uma cadeia de ferramentas padrão comrustup default 1.71.0-x86_64-unknown-linux-gnu
.