web-dev-qa-db-ja.com

AutotoolsパッケージをBuildrootに追加するにはどうすればよいですか?

Buildrootにパッケージを追加しようとしていますが、あまり成功していません。私が追加しようとしているパッケージは、scewと呼ばれるautotoolsパッケージです。パッケージの追加に関するbuildrootガイドラインに従いました。パッケージは、make menuconfigの実行時にリストされていますが、makeを実行すると、最後のrootfs.tarからパッケージが欠落しています。

また、whichのインストールに使用する別のシンプルな.mkファイルをコピーし、それに応じて変数名とURLを変更しました。これがscew.mkの私のコピーです。

SCEW_VERSION = 1.1.3
SCEW_SITE = http://savannah.nongnu.org/download/scew/
SCEW_LICENSE = GPLv3
SCEW_LICENSE_FILES = COPYING

$(eval $(autotools-package))

同じディレクトリにConfig.inがあり、次のようになっています。

config BR2_PACKAGE_SCEW
   bool "scew"
   help
   google scew

また、package/Config.inに次の行を追加しました。

menu "My Packages"

 menu "Packages I Wrote"
 source "package/MyPackages/packagesIWrote/hello/Config.in"
 source "package/MyPackages/packagesIWrote/helloworld/Config.in"
 endmenu

 menu "External Packages"
 source "package/MyPackages/external-packages/scew/Config.in"
 endmenu

endmenu

パッケージが一覧表示され、選択できるため、この部分は機能しているようです。 helloおよびhelloworldパッケージは、このWebサイトから取得したパッケージ追加ガイドからのコピーです(フランス語で書かれています): Hello Wolrdの追加

Hello worldパッケージも機能しません。私はこれについて丸く一周しているようで、私が間違っていることを見ることができないので、私は少しのアドバイスでも喜んでいるでしょう。

6
James

見てください このプロジェクト 本当に良い例があります。

buildroot-packages/package/Config.inを編集してパッケージを追加します

menu "buildroot-packages [external repo]"
    source package/hola/Config.in
endmenu

.inファイルをフォルダに追加しますbuildroot-packages/package/hola/Config.in

config BR2_PACKAGE_HOLA
    bool "hola"
    depends on BR2_PACKAGE_SOME_PACKAGE
    help
        hola is an example of a program build with autotools for to be added
        to buildroot

        http://stackoverflow.com/users/4059304/simonppg

comment "hola no needs any toolchain w/ dynamic library, threads"

.mkも追加しますbuildroot-packages/package/hola/hola.mk

HOLA_VERSION = v0.0.1
HOLA_SITE = https://bitbucket.org/simonppg/hola
HOLA_SITE_METHOD = git
HOLA_AUTORECONF = YES
HOLA_DEPENDENCIES = some_package

$(eval $(autotools-package))

同じプロジェクト の指示に従って、buildrootディレクトリにパッケージをインストールまたはアンインストールします。

1
Simon Puente

同じ問題が発生しているようです。他のパッケージは実行可能ファイルをビルドしてからディレクトリ./project_build_arm/my_device/root/usr/bin/に削除しますが、追加したパッケージはビルドされてから./build_arm/staging_dir/usr/bin/に削除されます。

この問題を回避するために、現在私がしているのは、ストリップされたバイナリを間違ったディレクトリから正しいディレクトリにコピーすることだけです。それは賢いわけではなく、正しくありませんが、(バンドエイドのような方法で)機能します。

何か問題が発生しているのはかなり高レベルの方法であるように思われるので、ビルドルートの経験が豊富な人が問題の実際の原因を診断するには、おそらく上記の説明で十分です。

...またはそれ以来、自分で解決しましたか?

0
Nick Pelling

ステージングディレクトリは、最終的なイメージの構築に必要なヘッダーと中間ステップツールに役立ちますが、rootfsでは不要です。また、構築されたストリップライブラリと実行可能ファイルにも使用されます。

ステージングからターゲットディレクトリへのコピー$(TARGET_DIRECTORY)は通常、選択したターゲットrootfs構成(例:cramfs、squashfsなど)内で行われますが、多くの場合、rootfsに含めるファイルのリストはプラットフォーム構成ターゲット(例:generic、platform-something)のプレーンテキストファイル。

0
Alex