Como construir aplicativo de 32 bits no sistema de 64 bits usando o gerenciador de pacotes Nix?

3

Parece que o Nix deve ser capaz de instalar e construir pacotes de 32 bits em sistemas de 64 bits. É caches já armazenam toda a árvore nixpkgs construída para a arquitetura i686, e não deve haver nenhum problema para fazer o download e instalá-los, mas não consigo ver a maneira de fazê-lo.

    
por MadRunner 29.06.2016 / 08:26

2 respostas

3

Se você ainda não sabe como criar um pacote separado com o nix, aqui está a instrução .

nixpkgs define a variável especial pkgsi686Linux para a árvore de pacotes i686 e callPackage_i686 para invocar a expressão nix arbitrária com% de substituição% co_de. Seu uso é bem direto.

Método um:

jsoncpp06_32 = nixpkgs.callPackage_i686 ./jsoncpp06.nix { };

método dois:

myPackage32 = pkgs.pkgsi686Linux.stdenv.mkDerivation {
    name = "myPackage-i686-0.0.1";

    boost155 = nixpkgs.pkgsi686Linux.boost155;
    buildInputs = [
        pkgs.gcc_multi
        pkgs.python2
        pkgs.pkgconfig

        pkgs.pkgsi686Linux.ffmpeg_2_2
        pkgs.pkgsi686Linux.boost155
        pkgs.pkgsi686Linux.openssl
        pkgs.pkgsi686Linux.curl
        pkgs.pkgsi686Linux.opencv

        jsoncpp06_32
    ];

};
    
por 29.06.2016 / 08:26
2

Talvez esta seja também uma solução viável.

default.nix

{ system ? builtins.currentSystem }:
let pkgs = import <nixpkgs> { inherit system; }
in pkgs.stdout.mkDerivation {
   # ... as usual
}

então você corre

% nix-build default.nix --argstr "x86_64-linux"

e

% nix-build default.nix --argstr "i686-linux"
    
por 29.06.2016 / 13:17