0

我正在尝试使用 nix,但我遇到了一个我认为与 nix 未能构建 nano 有关的问题,但我不确定。我在 OSX 10.11.4 上(我对 Mac 也很陌生)并且收到以下错误:

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 ... | shand then设置 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 git@...'
    ...snip....
  };

in

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

任何指针将不胜感激。

4

2 回答 2

1

我对nix一无所知,但是我从源代码构建nano时遇到了同样的错误。问题是在 Linux 控制台上检查 ctrl-arrow 键的一段代码无条件包含在内,导致构建在 Linux 以外的任何系统上失败。

找到它正在执行此操作的 winio.c 的整个部分(我手动下载的 nano 版本 2.6.3 上的第 507-523 行),然后将其删除(我#ifdef TIOCLINUX在它之前和#endif之后放置,但只是删除它,使用 #if 0,或将其注释掉也可以)如果您无法控制由 nix 构建的源代码,您可能需要通过其他方式(手动源代码编译、macports、fink 或 homebrew)安装 nano

Nano 的 MacPorts 版本包含解决此问题的补丁:https ://trac.macports.org/browser/trunk/dports/editors/nano/files/patch-src-winio.c.diff

于 2016-08-19T03:26:27.207 回答
0

看起来这是一个问题并且已得到修复。nixpkgs repo上的bugtracker是报告此类问题的好地方。人们通常对损坏的包裹非常敏感。

绝大多数 Nix 用户运行 Linux,因此软件包有时会在 OSX 上被破坏,因为它没有经过足够的测试。

相关问题:

于 2016-09-26T23:25:47.667 回答