2016-08-19 8 views
0

私はnixを使ってみようとしていますが、nixがnanoをビルドできないという問題が発生しましたが、私は確信していません。私はOSX 10.11.4(私もマックに非常に新しいです)の上だと、次のエラーを取得しています:OSX上のNixはnanoを構築できませんか?

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以外のシステムでビルドが失敗することです。

が、それは(私の手動でダウンロードナノバージョン2.6.3にライン507から523まで)これをやっているwinio.cのセクション全体を見つけ、それを削除(私はその前に #ifdef TIOCLINUXを入れて、後 #endifが、ちょうどそれを削除します、#if 0を使って、またはそれをコメントアウトしてもうまくいくでしょう)nixによってビルドされているソースコードを制御できない場合は、他の手段(手動ソースコンパイル、またはmacports、またはfink、またはナノの自作)

MacPortsのバージョンでは、この問題を解決するパッチが含まれていますhttps://trac.macports.org/browser/trunk/dports/editors/nano/files/patch-src-winio.c.diff

+0

感謝。私は、これは、ナノの側面か、それが醸造でそれをパッチで解決するのと同じ方法で修正する必要があると思う。 – Gregory

0

これが問題だったと修正されているように見えます。 nixpkgsリポジトリのbugtrackerは、このような問題を報告するのに最適な場所です。人々は通常、壊れたパッケージにかなり反応します。

圧倒的多数のNixユーザーがLinuxを使用しているため、OSXでパッケージが壊れていることがあります。

関連する問題:

関連する問題