2016-09-30 5 views
1

나는 readline 대신 linenoise 라이브러리가 필요한 c 프로젝트를 컴파일하려고 시도하면서 NixOS에 있습니다. 그러나 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; 
    }; 
} 

나는이 문제가 Linenoise은 linenoise을 사용하는 프로젝트에 직접 포함되는 것을 의미한다 C 헤더/소스 파일의 한 쌍이다. 즉, 수행 할 컴파일이 없습니다, 그냥 이러한 파일을 추가 충분해야합니다. 현재 파생 된 내용은 분명히 configure/make/make install으로 바뀌었지만 그 방법을 알지 못했습니다.

2 : Linenoise는 pkg-config에 액세스 할 수 있어야합니다.

답변

1

Nixpkgs에서 설치 단계를 무시하고 구성/make/make하는 것은 매우 쉽습니다. buildCommand 속성을 사용할 수 있습니다. 여기서 HOW를 지정하여 소스를 패키지로 변환합니다.

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에서 포함되는 항목을 찾는 방법을 찾아야합니다.

관련 문제