1/34 >> First Last kati とか依存関係とか strace とか Shinichiro Hamaji
1/34 >> First Last kati とか依存関係とか strace とか Shinichiro Hamaji
https://github.com/google/kati kati について、ドキュメント書こう…と思っていたのですがなかなか進まないので、とりあえず日本語で書いてみることにしました。何書くかがあまり明確じゃないテーマなので、何書くか考えるのと英語考えるのを両方同時にやるのが少し大変で。 動機 kati は GNU make のクローンです。いずれ完全なコンパチになると嬉しいですが、なかなか難しいだろうと個人的には諦めています。用途に対して実用的ならば良いかなと。 動機としては、 Android platform のビルドシステムが、なかなかシュールな GNU make 黒魔術で構成されていて、 make が実際になんかしはじめるまでが遅かったので、そこを高速化したいというものでした。 ビルドシステムが遅いという時、まずだいたいヌルビルドとフルビルドの2点を考えます。ヌルビルドてのは生
「GNU make 4.0で組み込みScheme」の続き。GNU make 4.0のGuile(Scheme処理系)組み込み機能を、ちょろっと試してみました。 結局、$(guile 〜)で処理を書くのは$(shell 〜)とできることは同じで、Schemeらしいことはあんまりなさそう。だったら$(shell 〜)のほうがファイル操作とかは楽かなあと。 ただ、makeの$(eval 〜)相当のことをScheme内のgmk-evalでできるので、ルールを動的に生成するのはできそう。ということで、SchemeのDSLでルールを書くのをやってみました。makeの外部DSLであるSchemeの内部DSLでmakeのルールを書く、というわけですね。 deftargetというマクロを作って、それっぽくルールを記述しています。シンボルを並べているだけなので、うまくいくケースでしかうまくいきませんが、まあサ
一時Makefileに凝っていました。Makefileの記述構文のなかに、「Lispに似た小さな関数型言語が埋め込まれているんだ」とか言ってましたよね。あれはまー、遊び半分なんだけど、このテの知識は、実際にMakefileを読み書きするときにも役にたちます。 過去のMakefile関係エントリーを読み返そうと思ったら、けっこう量があるし、紆余曲折があるんで、ここに整理してまとめておこうと思います。 内容: 参考資料 概念と用語 データ型 変数 関数 制御構造 画面出力と強制終了 ●参考資料 Makefileに関しては、次のエントリー群でゴタゴタと説明しています。 Makefileの書き方、その勘どころ Makefileの書き方:プログラミング言語Make プログラミング言語Make 補遺:引数付きの関数 Make 補遺の補遺:遊んでいるだけ Make言語で算術演算 <-- バカ! もっとも
OMakeすごい。OMakeはマジですごい。 OMakeはGNU makeの代替品みたいなものなんだけど、正直なところこのツールの強力さはGNU makeと比べると失礼なくらいすごい。これのおかげで、「コード修正→ビルド→デバッグ→コード修正→・・・」のループの、ビルドにあたる作業がほぼ消え去った。 ファイルの依存関係の解析がとにかくすごい。よくあるユースケースなんかの場合、最小限の手間でほぼ完璧に依存関係を網羅して、よしなにビルドしてくれる。 とりあえず、はやみずが実際に使ってみたケースを例にとってそのすごさの一端を紹介しようと思う。 case study 論より証拠ということで、自分が OMake を試しにつかってみたケースを紹介する。C言語でスタティックライブラリを作っていて、それに加えて簡単なテストプログラムを書いている。 /include/ 以下にヘッダファイルが全部ある /sr
Chromium Notes: Ninja, a new build system ChromeをWindowsから移植し始めたとき、我々はSconsを使ってChromeをビルドしようとした。Sconsは、正しく動作して、使い方も簡単であった。しかし、開発を始めてすぐに、Sconsはとても遅いということに気がついた。ソースを実際にビルドし始めるまでに、40秒もかかるのだ。Sconsが全面的に悪いというわけでもない。Chromeのビルドは、たったひとつの実行ファイルのために、WebKitも含めて、30000ものファイルがあるのだ。 結局、私はLinuxビルドのために、単にMakefileを使うことにした。これは、我々のビルドシステムが、メタビルドシステム、すなわち、WindowsやMac用のビルドファイルを生成するビルドシステムだったから可能だったのだ。開発を進めるほどに、私はどんどんビルド
小さいころ、いらなくなった電化製品、壊れた時計とかラジオとか分解してみたことがある人は多いと思う。 大人になって改めてやってみると、自分が昔より賢くなってるのでいろいろ発見もあるし、ちょっとがんばれば改造なんかもできちゃったりする。そうなるともう夢中である。 そんな病気をこじらせて、ラジカセを続々と改造し続けている人に今回は話をきいてきた。作品紹介にかこつけて、分解&改造の楽しみをみなさんに伝えられたらと思います。 (text by 石川 大樹) マッドサイエンティストの集い きっかけは今回だけでもう2回ほど記事にもなってるMake: Tokyo Meting の会場。このサイトでは通りがいいので「DIYのイベント」とか「電子工作のイベント」とか紹介しているが、実のところ平たくいうとマッドサイエンティスト(とその卵)の集いみたいなものである。
最近、Linuxではaptやyumなど、パッケージ管理ツールで多くのアプリケーションやライブラリが管理されるようになり、普通に利用している限りはソースからコンパイルして"make install"することがほとんどありません。 とはいっても、マイナーなソフトウェアをインストールしたりとか、まだパッケージ管理されていない最新バージョンのものを使いたい場合などは、ソースからコンパイルして"make install"をしたくなる場合も有るかと思います。 しかし、"make install"した場合の最大の欠点は、インストールしたソフトウェアの管理ができないことにあります。そのため、何が入っているのか分からなくなっているとか、アンインストールが出来ない、などのケースが起こりうるわけです。 特にアンインストールする可能性があるソフト(ほとんどのソフトがそうですが・・・)をインストールする場合は、わざ
M::I::ExtendsMakeTestなかなかいいです+お願いというかおねだり xaicronさんのModule::Install::ExtendsMakeTestがなかなかいい感じです。以前書いたTest::mysqldのブログ記事を実現するのにもそうですが、任意の環境変数を設定できたり、スクリプトを実行できたりするのがとてもいい感じ。なので、以前の記事に書いていた内容は今は以下のように実装しています replace_default_make_test includes => [ "modules/common/lib" ], env => { MYAPP_CONFIG => 't/config.pl' }, before_run_scripts => [ 't/start_daemons.pl', 't/load_fixtures.pl' ], ; 自分は今プロジェクトの共通モジュ
Makefile polyglot (make And perl Makefile) Careless you doing "perl Makefile", then you take many error messages. Your trouble will be solved if the polyglot technology is used. # Example Makefile irst_labe: length X;$Y=Z; dummy_label: length 0; print "perl world\n"; $x = <<'END_OF_MAKEFILE=' length: echo "make world" END_OF_MAKEFILE= actually, this code is works on perl and make command. $ perl M
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く