| 20 Jun 2026 |
Leonardo Neumann | Mas eu não esperava que sempre que eu quisesse rodar algo na placa via nix shell ele iria querer recompilar tudo | 12:34:59 |
Leonardo Neumann | É mais ou menos o que eu estou querendo fazer aqui | 12:35:29 |
Leonardo Neumann | 4h com cross, sem cross foram 2 dias | 12:35:50 |
Leonardo Neumann | e olha que a config tem só o conjunto minimo de features do meu host | 12:36:42 |
Leonardo Neumann | n tem interface grafica nem nada | 12:36:53 |
Leonardo Neumann | * e olha que a config tem só o conjunto minimo de features dos meus hosts | 12:37:10 |
Leonardo Neumann | de mais pesado ele precisa compilar o gcc e o rustc | 12:38:08 |
Eric Pires | Eu acho que é isso que você precisa? https://nixos.org/manual/nixpkgs/unstable/#sec-cross-usage Pelo o que entendo você usaria uma instância diferente do nixpkgs pra isso, por exemplo via specialArgs | 12:39:40 |
Eric Pires | * Tipo, especificando um localSystem diferente do crossSystem (ou sl qual o nome do atributo) | 12:41:05 |
Eric Pires | pkgsCross = import inputs.nixpkgs {
localSystem = "x86_64-linux";
crossSystem = "aarch64-linux";
};
pkgsCross.callPackage "${inputs.tack}/nix/package.nix" { }
Testei aqui e parece que funciona | 12:51:40 |
Leonardo Neumann | Eu já uso essa configuração aqui | 14:20:04 |
Leonardo Neumann | O problema é que os pacotes compilados não são idênticos aos pacotes compilados nativamente | 14:20:27 |
Leonardo Neumann | Que é natural pq o GCC como cross-compiler muda até os binários | 14:20:41 |
Leonardo Neumann | E por isso se voce tenta compilar algo de dentro da placa (no caso RISC-V), ele tenta recompilar o sistema inteiro pq não batem as derivações | 14:21:18 |
Leonardo Neumann | Para ARM64 é bem tranquilo porque tem tudo na cache oficial | 14:22:16 |
Eric Pires | Sim, não deveria nem ser pra bater a compilação nativa com a cross-compiled. São duas derivações diferentes por conta dos inputs diferentes | 14:22:51 |
Leonardo Neumann | Sim, eis o problema xD se eu compilo o sistema via cross, qualquer tentativa que a placa faça de instalar algo que não está na imagem SD base, ele tenta recompilar tudo | 14:24:00 |
Leonardo Neumann | Ou seja, eu não consigo usar algumas features úteis do nix tipo nix shell na placa | 14:24:34 |
Leonardo Neumann | Se ele compilasse somente o pacote faltante na placa, tudo otimo | 14:25:38 |
Leonardo Neumann | Na placa, tentando recompilar nativo, ele leva mais de 2 dias facilmente tbm | 14:27:00 |
Leonardo Neumann | que é a velocidade média que eu consigo com binfmt | 14:27:13 |
Eric Pires | Certo... Quanto ao nix-shell não sei se tem algum jeito de resolver. Mas talvez daria pra especificar as dependências que vieram do cross-compile? Tipo com override | 14:29:14 |
Leonardo Neumann | Eu sei que passando com nix-copy e usando o caminho do drv ele consegue | 14:29:38 |
Leonardo Neumann | Mas é bem inconveniente dessa forma, acaba sendo mais facil jogar tudo na config | 14:30:06 |
Eric Pires | É, a vantagem é que com a velocidade da placa, provavelmente é mais rápido assim kkkk | 14:32:03 |
Leonardo Neumann | e é meio bizarro, pq essa placa tem 8 cores / 16gb de ram | 14:32:22 |
Leonardo Neumann | eu esperava que fosse mais rapido | 14:32:31 |
Eric Pires | Bizarro | 14:32:36 |
Leonardo Neumann | eu acho que é alguma coisa relacionado ao suporte do GCC no RISC-V como host | 14:32:53 |
Leonardo Neumann | * eu acho que é alguma coisa relacionado ao suporte do GCC no RISC-V como host de compilação | 14:33:12 |