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: Fri, 02 Aug 2019 15:27:46 -0500 Message-ID: <87ef238g8t.fsf@gmail.com> References: <8736q082h8.fsf@gmail.com> <87fttzd0uo.fsf@ambrevar.xyz> <87wonb6wdn.fsf@gmail.com> <87lg3p7hfd.fsf@gmail.com> <20190113141426.00360523@mailservices.uwaterloo.ca> <87h8ec6qek.fsf@gmail.com> <874l2zv8el.fsf@ambrevar.xyz> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:33225) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hte9Y-0003X6-TD for guix-devel@gnu.org; Fri, 02 Aug 2019 16:27:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hte9W-0001A6-UU for guix-devel@gnu.org; Fri, 02 Aug 2019 16:27:52 -0400 Received: from mail-yb1-xb35.google.com ([2607:f8b0:4864:20::b35]:34336) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hte9W-000196-Pk for guix-devel@gnu.org; Fri, 02 Aug 2019 16:27:50 -0400 Received: by mail-yb1-xb35.google.com with SMTP id q5so15155202ybp.1 for ; Fri, 02 Aug 2019 13:27:50 -0700 (PDT) In-Reply-To: <874l2zv8el.fsf@ambrevar.xyz> (Pierre Neidhardt's message of "Fri, 02 Aug 2019 18:28:34 +0200") 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: Pierre Neidhardt Cc: guix-devel@gnu.org Pierre Neidhardt writes: > Hi! > > It's been a while, and now that I'm on the verge of releasing Next 1.3 > and a dependency is a package-inferred-system, I thought it would be the > perfect time to dig out this issue! :) > > So I'm trying to package cl-dbus (https://github.com/death/dbus). > You'll find the recipes here: > https://gitlab.com/atlas-engineer/next-guix-channel > > I can package it in several ways, but the result does not work for the > reasons mentioned in this topic. Hello again, Pierre! I apologize for being silent on this for so long. I'm juggling a few things at the moment and will return to Guix commits as soon as I can. Regarding package inferred systems: I would really like to be able to package them into a single Guix package as we do any other library, but I think that will require some hacking on the ASDF build system. If I'm remembering correctly, we would have to: - Stop rolling all code into system-fasls - Output each file's equivalent fasl to a common directory for the system - Set a search path in the profile to recursively search the SBCL fasl output tree for systems. In the interim, an idea I had was to borrow the "base package" concept I came across when packaging other, non package-inferred, systems. I haven't tried it yet, but I think it should work, even if it sounds tedious to me. Sticking with the dbus example, it looks like we have the following situation: - dbus - dbus/all - dbus/utils - dbus/protocols - ... I think what we could do is define a `dbus-base` package which is hidden, and then start defining "sub-packages" which simply inherit from the base package, i.e.: - dbus-base - dbus-utils (inherit from dbus-base) - dbus-protocols (inherit from dbus-base) - ... - dbus-all (inherit from dbus-base; require dbus-utils, dbus-protocols, etc.) In essence we would be manually defining the dependency tree that ASDF is inferring. We could probably lean on Common Lisp and ASDF itself to generate these packages within a hypothetical importer. But as I said, this seems quite tedious. We really should make our Common Lisp packaging smarter. -- Katherine