1

我在 NixOS 上,试图编译需要linenoise库(它是 readline 的替代品)的 ac 项目。但是线噪声在 nixpkgs 中不可用。

所以,我正在尝试自己添加它。目前我有这个:

{ stdenv, fetchgit }:

stdenv.mkDerivation rec {
  name = "linenoise-${version}";
  version = "git-2016-09-30";

  src = fetchgit {
    url = "https://github.com/antirez/linenoise.git";
    rev = "c894b9e59f02203dbe4e2be657572cf88c4230c3";
    sha256 = "0wasql7ph5g473zxhc2z47z3pjp42q0dsn4gpijwzbxawid71b4w";
  };

  meta = {
    homepage = https://github.com/antirez/linenoise;
    description = "A minimal, zero-config, BSD licensed, readline replacement.";
    platforms = stdenv.lib.platforms.unix;
  };
}

我有两个问题:

1:Linenoise 只是一对 c 头文件/源文件,旨在直接包含在使用 linenoise 的项目中。换句话说,不需要编译,只需添加这些文件就足够了。目前的推导显然是试图configure/make/make install但我根本不知道该怎么做。

2:Linenoise 需要可以通过 pkg-config 访问。

4

1 回答 1

1

在 Nixpkgs 中绕过配置/制作/制作安装步骤非常容易。您可以使用buildCommand属性,在其中明确指定如何将源转换为包。

buildCommand = ''
  mkdir -p $out/include
  cp $src/linenoise.c $out/include/
  cp $src/linenoise.h $out/include/
'';

变量的技巧$src也很简单:几乎您定义的每个属性都mkDerivation将在相同名称的构建命令中可用。您可以使用src_libnoise = fetchgit ...,然后将其称为$src_libnoise.

至于 pkg-config 的东西,我不确定它是否尊重include目录,所以你必须弄清楚 pkg-config 如何找到它的包含。

于 2016-11-11T05:12:19.067 回答