From mboxrd@z Thu Jan 1 00:00:00 1970 From: Katherine Cox-Buday Subject: Re: ASDF Builder (Common Lisp) & "package-inferred-system" Packages Date: Sat, 12 Jan 2019 14:24:38 -0600 Message-ID: <87lg3p7hfd.fsf@gmail.com> References: <8736q082h8.fsf@gmail.com> <87fttzd0uo.fsf@ambrevar.xyz> <87wonb6wdn.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([209.51.188.92]:40985) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1giPpm-0007gY-JK for guix-devel@gnu.org; Sat, 12 Jan 2019 15:24:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1giPpk-0004gN-RQ for guix-devel@gnu.org; Sat, 12 Jan 2019 15:24:46 -0500 Received: from mail-io1-xd34.google.com ([2607:f8b0:4864:20::d34]:37488) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1giPpk-0004b2-K4 for guix-devel@gnu.org; Sat, 12 Jan 2019 15:24:44 -0500 Received: by mail-io1-xd34.google.com with SMTP id g8so14863560iok.4 for ; Sat, 12 Jan 2019 12:24:42 -0800 (PST) In-Reply-To: <87wonb6wdn.fsf@gmail.com> (Katherine Cox-Buday's message of "Fri, 11 Jan 2019 09:34:44 -0600") 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" To: guix-devel@gnu.org I've done some more digging, and I have a better idea of why this is failing. Running `(asdf:operate 'asdf:compile-bundle-op :foo)` on a `package-inferred-system` produces several `.fasl` files -- one for each sub-package instead of the usual `foo--system.fasl` file. The `cleanup-files` phase then deletes[1] any `.fasl` files which do not have a `--system.fasl` suffix. I tried working around this by manually concatenating all the `.fasl` files together using `uiop:combine-fasls` which I believe works. I also had to add a new build phase to take place after the `create-asd-file` phase to do a string replace to change dependencies back to the `foo/bar` style instead of `foo-bar`. I still believe the build system should handle `package-inferred-system` style CL packages properly so that maintainers don't have to do this kind of tweaking for every package (the number of which I believe will steadily increase). I'm trying to confirm that this whole things works, but I believe I may be hitting another bug with CL being able to find dependencies. It seems as though even if the dependenices are listed in the generated `.asd` file, and my Guix SBCL can find that `.asd` and attempt to load its system, SBCL cannot find the dependencies. I'm trying to determine why this might be, but it's currently blocking me from proposing a patch which adds 44 CL packages. My current theory is that we perform a `setf` on the `*source-registry-parameter*` variable, but the ASDF manual specifically, and strongly, says[2] that this is meant to be a read-only variable. Maybe this is not working as intended? I'm also going through some steps to establish a clean-room to make sure it's nothing with my setup. If anyone feels they can point me in helpful directions, that would be very much appreciated :) [1] - http://git.savannah.gnu.org/cgit/guix.git/tree/guix/build/asdf-build-system.scm#n193 [2] - https://www.common-lisp.net/project/asdf/asdf.html#g_t_002asource_002dregistry_002dparameter_002a-variable -- Katherine