問題タブ [tup]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
build - Tup -- 生成されたノードを手動で挿入する
プロジェクト B に依存するプロジェクト A があり、B のビルドに時間がかかるとします。
プロジェクト A とプロジェクト B の両方が tup を使用します。私はすでに B を別のディレクトリにビルドしています。
B を A にコピーするか、B を指すサブモジュールを作成し、ビルド プロダクト ( cp -a
) を追加して、ビルド プロダクトに問題がないことを tup に納得させることはできますか?
tup - ルートディレクトリから依存関係をタップしますか?
最小限の例に似たルールを作成しようとしました:
これは機能しますが、次のように書きたいと思います。
フォルダーの深さを追加しても、PROJ_ROOT変数は同じです。
タップはこれをサポートしていますか?
bash - tup によって実行されるコマンドに pipefail を設定する
大量の Tupfile では、大規模なパイプライン処理を使用します。
system
これに関する問題は、でこれらの :-rules を実行するTup 呼び出しがsh
、 をサポートしていないことset -o pipefail
です。結果として、command1
失敗しただけの場合でも、終了コードが 0 だったので、tup はこれを成功としてマークします。これは非常に問題があります。
私はこれに対する 2 つの解決策を知っていますが、どちらも理想的ではありません。
を。パイプライン処理を放棄して、代わりに次のことを行うことができます。
これは機能しますが、一連のルールを面倒に書き直す必要があり、さらに重要なことに、更新のたびにディスク容量とディスク書き込みが大幅に多く使用されます。
b) すべてのコマンドを次のbash
ようにラップできます。
これは、書き換えが少なく、io を回避できるため、わずかに優れているように見えますが、それでも非常に面倒です。また'
、:-rules で any をエスケープする必要があります。
理想的には、:-rules を読み取るために使用するシェル/インタープリターを指定するだけの Tup 構成が存在します。理想的には、共通のプレフィックスの構成もあり、すべてのスクリプトを実行したり、他の必要なset -o pipefail &&
ものを実行したりできます。私の知る限り、これはすぐには可能ではありません。system
tup がルールを呼び出すたびに、ラッパー アラウンドを記述する必要があります。ただし、提案された 2 つのソリューションよりも洗練されたものを可能にする Tup のいくつかの側面を見落としている可能性があります。
編集:システムへの呼び出しにより、パイプフェイルをシステムへの呼び出しに「注入」することができました。プログラムがシステムを使用して実行されるという事実を誤って述べました。メーリングリストの助けを借りて、それらが実際に を使用して実行されていることが判明しましたexecle
。以下は、誰かが同じことを達成したい場合に備えて、介入を行うために使用したコードです。
解決
lldb - Tup バリアントをビルドするときに LLDB でソース コードを見つけるにはどうすればよいですか?
この質問のとおり、デバッグ時に LLDB に実際のソース コードを表示させることができません。
その質問に対する受け入れられた回答のおかげで、Tup がバリアントをビルドする方法 (デバッグ、プロダクションなど) に問題を突き止めることができました。
- バリアントごとのサブディレクトリで動作します
- ソースをサブディレクトリにコピーしません
- サブディレクトリにすべての出力(ファイルと実行可能ファイル自体)を構築します
.o
このため、LLDB はデバッグ時に元のソース ファイルを見つけることができません。
私の質問は次のとおりです。ビルド プロセスにさまざまなパスをフィードするように Tup を強制するか、実際に何が起こっているかを LLDB に伝えるにはどうすればよいですか?
c++ - Tupfile のサブディレクトリのワイルドカード
Tupfile にディレクトリ構造のワイルドカードがあるかどうかを知りたい%Boのようなもので、拡張子なしの入力ファイル名を取ります。
現在、私の Tupfile ルールは次のようになっています。
: foreach src/*.cpp |> !cxx_c_debug |> build/d/o/%Bo
: foreach src/ dir /*.cpp |> !cxx_c_debug |> build/d/o/ dir /%Bo
: foreach src/ dir2/subdir /*.cpp |> !cxx_c_debug |> build/d/o/ dir2/subdir /%Bo
...
ご想像のとおり、多くのdirとsubdirがあります。太字のed ディレクトリ構造には、それらを1つずつ列挙するのではなく、ある種のワイルドカードを使用したいと思います。これらの各ディレクトリに新しい Tupfile を作成せずにこれを達成する方法はありますか?
ありがとう
c++ - Tup ビルド システムを使用した G++ での奇妙な出力
C++ プロジェクトで Tup を使い始めました。私の現在のものはゲームで、3つの部分に分かれています:
- 1 つ目はメイン ディレクトリ「osumax」です。
- 2 つ目は、私のゲーム フレームワーク「osumax/Libraries/ns_framework」です。
- 最後はゲームデータのAPI「osumax/Libraries/osumax_shared」です。
現在、osumax_shared には何もありません。フレームワークに取り組んでいるためです。
ns_framework と osumax_shared は動的ライブラリです (私は Linux を使用しているため、.so ファイルがあります)。
libns_framework.so は警告なしでビルドされますが、メインの実行可能ファイルのビルドが開始されると、多くのエラーが発生し、未定義の参照のみが発生します。一部は ns_framework からのもので、理解できますが、TinyXML2 (apt-get でインストール) も使用しており、このライブラリからの未定義の参照が多数あります。
それは完全な出力です:
リンク コマンドは次のとおりです。
ここに 2 つの Tup ファイルを示します (フランス語のコメントで申し訳ありません)。
- メインフォルダー (osumax) の場合: http://pastebin.com/zKgzyYxt
- 最初のライブラリ (ns_framework) の場合: http://pastebin.com/mhTA4p73
では、これらのエラーは Tup ビルド システムによるものですか、それとも私によるものですか?
どこにエラーがあるのか よくわかりません。または、何か間違ったことをした場合はtup構成です。
ご協力いただきありがとうございます !
sql - tup SQL リセット エラー: データベースがロックされています
ubuntu 16.04 に tup をインストールしたところ、次のエラーが発生しました。
また、tup upd にもエラーがあります。
タップを機能させる方法についてのアイデアはありますか?
編集: git ( https://github.com/gittup/tup ) からソースをダウンロードしてステップ実行したところ、エラーは src/tup/db.c:tup_db_commit() 行 933 にあるようです
sqlite3_step 関数が SQLITE_BUSY(5) を返しています。
私の初心者の推測では、新しいバージョンの sqlite を使用していて、一部のクリーンアップが正しく行われていないということです。しかし、それは間違いなくある種の sqllite3 の問題のようです。