【问题标题】:Adding linenoise library to nixpkgs将 linenoise 库添加到 nixpkgs
【发布时间】:2016-09-30 16:29:54
【问题描述】:

我在 NixOS 上,试图编译一个需要 linenoise 库的 c 项目(它是 readline 的替代方案)。但是在 nixpkgs 中不提供 linenoise。

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

{ 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:需要使用 pkg-config 访问 Linenoise。

【问题讨论】:

    标签: c pkg-config nix nixos


    【解决方案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 是如何找到它的包含的。

    【讨论】:

      猜你喜欢
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 2016-03-15
      • 2011-08-15
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多