2017-10-03 2 views
0

私はPythonアプリケーションをNix用にパッケージ化しようとしていますが、ドキュメントの大部分はライブラリをパッケージ化すると仮定しています。Nixpkgsでは、Pythonの派生をライブラリではなくアプリケーションにする理由は何ですか?

これを行うために、私はpython-packagesにあるRednotebookの例を見ました(それは私がそれがPythonで書かれたことを知っていた以外の特別な理由はありませんでした)が、関連する部分である:

redNotebook = buildPythonPackage rec { 
    name = "rednotebook-1.8.1"; 

    src = pkgs.fetchurl { 
     url = "mirror://sourceforge/rednotebook/${name}.tar.gz"; 
     sha256 = "00b7s4xpqpxsbzjvjx9qsx5d84m9pvn383c5di1nsfh35pig0rzn"; 
    }; 

    # no tests available 
    doCheck = false; 

    propagatedBuildInputs = with self; [ pygtk pywebkitgtk pyyaml chardet ]; 

    meta = { 
     homepage = http://rednotebook.sourceforge.net/index.html; 
     description = "A modern journal that includes a calendar navigation, customizable templates, export functionality and word clouds"; 
     license = licenses.gpl2; 
     maintainers = with maintainers; [ tstrobel ]; 
    }; 
    }; 

私の導出は次のようになります。

{ pkgs ? import <nixpkgs> {} }: 
let 
    requirements = import ./nix/requirements.nix { inherit pkgs; }; 
in 
pkgs.python35Packages.buildPythonPackage rec { 
    name = "package-name"; 
    version = "1.0.0"; 
    namePrefix = ""; 
    src = ./.; 
    doCheck = false; 
    propagatedBuildInputs = builtins.attrValues requirements.packages; 
} 

requirements.nixpypi2nixrequirements.packagesの出力は "派生のリスト" を入力していました。これにもかかわらず、Rednotebookの結果として得られるストアパスにcdすると、/binディレクトリにいくつかのラッパースクリプトがあります。私のアプリケーションの店舗パスはlibで、/bin

私はアプリケーションを持っていることをNixpkgに教えてもらえますか?

答えて

1

buildPythonPackagebuildPythonApplicationの機能がありますが、その日の終わりには、両方ともmkPythonDerivationを呼び出します。

参照できる単純なNixパッケージのPythonアプリケーションはRangerです。 buildPythonApplicationを使用します。結果の派生品には、ラッパーが含まれています。/nix/store/PACKAGE/bin/

関連する問題