2016-09-30 16 views
1

私はNixOS上で、readlineの代わりにlinenoiseライブラリを必要とするcプロジェクトをコンパイルしようとしています。しかし、linenoiseはnixpkgsでは利用できません。nixpkgsにlinenoiseライブラリを追加する

私はそれを自分で追加しようとしています。現時点では私はこれを持っている:

1:

{ 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; 
    }; 
} 

私は2つの問題を持っているLinenoiseだけlinenoiseを使用するプロジェクトに直接含まれることを意図しているCヘッダ/ソースファイルのペアです。言い換えれば、は実行するコンパイルがありません、これらのファイルを追加するだけで十分です。 現在の派生では明らかにconfigure/make/make installにしようとしていますが、それ以外の方法はわかりません。

2:Linenoiseはpkg-configでアクセス可能である必要があります。

答えて

1

Nixpkgsの設定手順をバイパスすることは非常に簡単です。 buildCommand属性を使用できます。ここでは、HOWを明示的に指定して、ソースをパッケージに変換します。 $src変数と

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

トリックがあまりにも簡単です:ほとんどすべては、あなたがmkDerivationで定義する属性と同じ名前でビルドコマンドで利用できるようになります。 src_libnoise = fetchgit ...を使用し、$src_libnoiseとしてください。

pkg-configの場合は、includeディレクトリを尊重しているかどうかはわかりませんので、pkg-configがどのようにインクルードするのかを把握する必要があります。

関連する問題