From mboxrd@z Thu Jan 1 00:00:00 1970 From: taylanbayirli@gmail.com (Taylan Ulrich =?utf-8?Q?Bay=C4=B1rl=C4=B1?= =?utf-8?Q?=2FKammer?=) Subject: Re: [PATCH] build: pull: Compile .scm files in one process. Date: Tue, 05 Jan 2016 18:56:00 +0100 Message-ID: <87a8ojzz9r.fsf@T420.taylan> References: <87si4kxtge.fsf@T420.taylan> <87bnb6c0nh.fsf@gnu.org> <874mgyxhgy.fsf@T420.taylan> <877flpohu6.fsf@gnu.org> <87mvuku444.fsf@T420.taylan> <87pozgfyzt.fsf@gnu.org> <87io57tt2s.fsf@T420.taylan> <876117mnef.fsf@igalia.com> <87egfvtnbw.fsf@T420.taylan> <87y4e3l7hm.fsf@igalia.com> <87a8qjtje8.fsf@T420.taylan> <876117t0ax.fsf@gnu.org> <877flmrn2m.fsf@T420.taylan> <87a8q0ies5.fsf@gnu.org> <87fuzrlt6f.fsf@T420.taylan> <87bnafbvrs.fsf@gnu.org> <87bnaflbg2.fsf@T420.taylan> <87h9k3ab9k.fsf@gnu.org> <87zixt9sr6.fsf@T420.taylan> <877fkvvmk9.fsf@gnu.org> <8737uw5dx4.fsf@T420.taylan> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:54922) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aGVmt-00014k-II for guix-devel@gnu.org; Tue, 05 Jan 2016 12:52:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aGVms-0000Fo-JO for guix-devel@gnu.org; Tue, 05 Jan 2016 12:52:51 -0500 In-Reply-To: <8737uw5dx4.fsf@T420.taylan> ("Taylan Ulrich \=\?utf-8\?Q\?\=5C\=22Bay\=C4\=B1rl\=C4\=B1\=2FKammer\=5C\=22\=22's\?\= message of "Mon, 21 Dec 2015 10:49:59 +0100") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Ludovic =?utf-8?Q?Court=C3=A8s?= Cc: guix-devel@gnu.org taylanbayirli@gmail.com (Taylan Ulrich "Bay=C4=B1rl=C4=B1/Kammer") writes: >>>>> After some tinkering around I realized that the problem is that our >>>>> workaround of loading files explicitly causes the package record >>>>> type to be redefined after some packages have already been defined. >>>>> More generally, we force the top-level of many files to be >>>>> re-executed after they've already been executed as a result of a >>>>> module import... > > Returning to this issue after a long pause, I suddenly had a new idea, > which is to use something akin to 'use-modules' instead of 'load' on the > files. (I need a procedure and not a macro, and don't actually need to > 'use' the modules, so I use 'resolve-interface' in the patch below. > Don't know if there's a better suited procedure for this purpose.) > > The tricky part is turning file names into module names, but so far all > seems unproblematic, so a straightforward transformation from the string > "$out/foo/bar.scm" to the list (foo bar) does the job. (Possible issues > would be when a file name doesn't match a module name, or a file doesn't > contain a module at all.) > > This entails the least amount of duplicated effort from all the variants > we had so far, and finishes in below 2 minutes on my machine. (I think > the only remaining duplication is the compilation of the modules during > 'resolve-interface' and their compilation via 'compile-file', and the > former cannot be done in parallel, so we could again cut the time to > below half of what it is now, if we solved that.) > > Tell me if you see any problems with this variant. Pinging this thread since it seems to have been forgotten. :-) Taylan