2016-08-19 214 views
0

我正在嘗試使用nix,並且遇到了一個我認爲與nix無法構建nano相關的問題,但我不確定。我在OSX 10.11.4(我很新的Mac電腦以及)和我得到以下錯誤:OSX上的Nix無法構建納米?

clang -DHAVE_CONFIG_H -I. -I.. -DLOCALEDIR=\"/nix/store/h1afxzyfxh7xc8b0scvq831s1yapczgm-nano-2.6.3/share/locale\" -DSYSCONFDIR=\"/etc\" -I/nix/store/gmb9mxkm5mqfnhlav16rx5x7wf070qqf-ncurses-5.9-dev/include/ncursesw -I/nix/store/gmb9mxkm5mqfnhlav16rx5x7wf070qqf-ncurses-5.9-dev/include -g -O2 -Wall -c -o winio.o winio.c 
winio.c:513:15: error: use of undeclared identifier 'TIOCLINUX' 
     if (ioctl(0, TIOCLINUX, &modifiers) >= 0 && (modifiers & 0x04)) { 
        ^
1 error generated. 

有什麼事,我已經設置了不正確嗎?我所做的只是通過curl ... | sh設置nix,然後source ~/.nix-profile/etc/profile.d/nix.sh

我想從這個shell.nix建:

{ nixpkgs ? import <nixpkgs> {}, compiler ? "default" }: 

let 

    inherit (nixpkgs) pkgs; 

    # Build a default.nix file from our .cabal file: 
    here = ./.; 
    project = pkgs.stdenv.mkDerivation ({ 
    name = "default.nix"; 

    buildCommand = '' 
    ${pkgs.cabal2nix}/bin/cabal2nix file://${here} > $out 
    ''; 
    }); 

    # Use the package set for our compiler: 
    haskellPackages = if compiler == "default" 
         then pkgs.haskellPackages 
         else pkgs.haskell.packages.${compiler}; 

    # Helper function that gets Nix-packaged dependencies off GitHub. 
    # GitHub project needs a default.nix file for this to work. 
    fetchHaskell = { url, rev, sha256 }: 
    haskellPackages.callPackage (pkgs.fetchgit { inherit url rev sha256; }) {}; 

    drv = haskellPackages.callPackage project { 
    # Specify GitHub dependencies here. 
    # You can get url, rev and sha256 by running 'nix-prefetch-git [email protected]' 
    ...snip.... 
    }; 

in 

    if pkgs.lib.inNixShell then drv.env else drv 

任何指針將不勝感激。

回答

1

我對nix一無所知,但是從源代碼構建nano的過程中遇到同樣的錯誤。問題在於Linux控制檯上的ctrl-arrow鍵的一段代碼檢查被無條件地包含在內,導致構建在Linux以外的任何系統上失敗。

找到winio.c的完整部分,它在做這個(我手動下載的nano版本2.6.3上的line 507-523),並刪除它(我把#ifdef TIOCLINUX放在它之前,#endif之後,但是隻刪除它,使用#if 0或註釋掉它們也會起作用)如果你無法控制由nix構建的源代碼,你可能需要通過其他方式安裝nano(手動源代碼編譯,或macports或fink,或自制)

納米的MacPorts的版本包含了解決此問題的修補程序:https://trac.macports.org/browser/trunk/dports/editors/nano/files/patch-src-winio.c.diff

+0

感謝。我想這需要在納米方面進行修復,或者以他們在釀造中用解決方法解決它的方式進行修復。 – Gregory