From mboxrd@z Thu Jan 1 00:00:00 1970 MIME-Version: 1.0 In-Reply-To: References: Date: Mon, 17 Jan 2011 17:21:28 +0200 Message-ID: From: Ciprian Dorin Craciun To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [9fans] `mk` (from Plan9 ports) efficiency related issue Topicbox-Message-UUID: 9d080b7a-ead6-11e9-9d60-3106f5b1d025 On Mon, Jan 17, 2011 at 16:47, Ciprian Dorin Craciun wrote: > =C2=A0 =C2=A0Hello all! > > =C2=A0 =C2=A0Sorry for interrupting again, but I've stumbled on an `mk` i= ssue... > > =C2=A0 =C2=A0I've written a little Scheme application that generates `mk` > scripts for building Erlang applications. (See below an extract of one > of my previous emails describing just the generator part; the thread > had the subject: < issue?>>.) > > =C2=A0 =C2=A0Now the problem is that the generated script (attached to th= is > email) has about 2671 prerequisites (` target :: prerequisite `), and > about 684 actual targets with recipes. (As I've explained below I'm > not using any meta-rules, and I'm explicit about each resulting file > and it's dependencies.) > > =C2=A0 =C2=A0The problem is that the time needed to run the script has > extremely increased, and the processor is 100% eaten by `mk`. > > =C2=A0 =C2=A0For example: > =C2=A0 =C2=A0* just running the `mk` script with the `-n` option takes ab= out 14 seconds. > =C2=A0 =C2=A0* using the commands from the `mk -n` takes about 1 minute a= nd 36 seconds; > =C2=A0 =C2=A0* then running `mk` takes another 14 seconds; (as it has not= hing); > =C2=A0 =C2=A0* but after cleaning and running `mk` (which I've left runni= ng for > about 5 minutes and still didn't finished) it seems that between each > target (or batch of targets?) it stays about 14 seconds; > > =C2=A0 =C2=A0But what is strange is that if instead to build the default = target > that builds everything I start building little by little independent > parts, it works without that great delay... > > =C2=A0 =C2=A0Any ideas what could cause this? > > =C2=A0 =C2=A0Thanks, > =C2=A0 =C2=A0Ciprian. > > > ---------- > [[ Extract from the previous email. ]] > ---------- > > =C2=A0 BTW... People might wonder how come I have 367 targets (with 1221 > prerequisites) for such a small project? :) The answers is I don't > write the `mk` script by hand, but I've written a small Scheme > application that just generates the `mk` script based on descriptions > like the following. (Thus the resulting `mk` script is quite > exhaustive with quite tight dependencies and doesn't use > meta-rules...) :) > > =C2=A0 So just out of curiosity are there any `mk` script generators out = there? > > =C2=A0 Ciprian. > > > ~~~~ > (vbs:require-erlang) > > (vbs:define-erlang-application 'rabbit > =C2=A0 =C2=A0 =C2=A0 erl: "\\./(rabbitmq-server--latest/src|generated)/.*= \\.erl" > =C2=A0 =C2=A0 =C2=A0 hrl: "\\./(rabbitmq-server--latest/include|generated= )/.*\\.hrl" > =C2=A0 =C2=A0 =C2=A0 additional-ebin: "\\./generated/rabbit\\.app") > > (vbs:define-erlang-application 'rabbit_common > =C2=A0 =C2=A0 =C2=A0 erl: "\\./(rabbitmq-server--latest/src|generated)/(r= abbit_writer|rabbit_reader|rabbit_framing_amqp_0_8|rabbit_framing_amqp_0_9_= 1|rabbit_framing_channel|rabbit_basic|rabbit_binary_generator|rabbit_binary= _parser|rabbit_channel|rabbit_exchange_type|rabbit_misc|rabbit_net|rabbit_h= eartbeat|rabbit_msg_store_index|gen_server2|priority_queue|supervisor2)\\.e= rl" > =C2=A0 =C2=A0 =C2=A0 hrl: "\\./(rabbitmq-server--latest/include|generated= )/.*\\.hrl" > =C2=A0 =C2=A0 =C2=A0 additional-ebin: "\\./generated/rabbit_common\\.app"= ) > > (vbs:define-erlang-application 'amqp_client > =C2=A0 =C2=A0 =C2=A0 dependencies: 'rabbit_common > =C2=A0 =C2=A0 =C2=A0 erl: "\\./rabbitmq-erlang-client--latest/src/.*\\.er= l" > =C2=A0 =C2=A0 =C2=A0 hrl: "\\./rabbitmq-erlang-client--latest/include/.*\= \.hrl" > =C2=A0 =C2=A0 =C2=A0 additional-ebin: "\\./generated/amqp_client\\.app") > ~~~~ P.S.: A complete build from nothing takes about 16 minutes...