From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40769) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g2Ekc-00067l-6y for guix-patches@gnu.org; Tue, 18 Sep 2018 08:05:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g2EkZ-0002eP-0N for guix-patches@gnu.org; Tue, 18 Sep 2018 08:05:06 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:39450) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1g2EkY-0002eG-Ss for guix-patches@gnu.org; Tue, 18 Sep 2018 08:05:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1g2EkY-0007m3-Mf for guix-patches@gnu.org; Tue, 18 Sep 2018 08:05:02 -0400 Subject: [bug#32759] [PATCH 0/8] Seamless integration of inferior packages Resent-Message-ID: Received: from eggs.gnu.org ([2001:4830:134:3::10]:40495) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g2Ejy-00064a-Au for guix-patches@gnu.org; Tue, 18 Sep 2018 08:04:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g2Ejx-00020p-5l for guix-patches@gnu.org; Tue, 18 Sep 2018 08:04:26 -0400 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Date: Tue, 18 Sep 2018 14:04:08 +0200 Message-Id: <20180918120408.27737-1-ludo@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 32759@debbugs.gnu.org Hello Guix! Here comes icing for the cake: a facility that allows you to mix inferior packages with “regular” packages in a single profile. For now you can use it, for instance, by writing a manifest for ‘guix package -m’ along these lines: --8<---------------cut here---------------start------------->8--- (use-modules (guix inferior) (guix channels)) (define channels (list (channel (name 'guix) (url "https://git.savannah.gnu.org/git/guix.git") (commit #;"4ab6a2f23d43f6c7e4a5a7420db613c5ba5b03b6" ;recent "65956ad3526ba09e1f7a40722c96c6ef7c0936fe")))) (define inferior (inferior-for-channels channels)) (packages->manifest (list (car (lookup-inferior-packages inferior "guile-json")) (specification->package "guile"))) --8<---------------cut here---------------end--------------->8--- The example above gives you guile-json 1.0.1 with guile 2.2.4. Inferior packages are “first class”, meaning that their search paths, propagated inputs, etc. are honored, just like for regular packages. Building Guix or even just computing its derivation takes some time so the last patch, which implements ‘inferior-for-channels’, adds a cache. That way, if you frequently use a given inferior, it’s immediately available. There’s no documentation yet, mostly because I wanted to get it out the door and wasn’t sure whether we should provide higher-level interfaces. Anyway, that’s it. Feedback welcome! Ludo’. Ludovic Courtès (8): inferior: Add 'inferior-package-derivation'. inferior: Add 'lookup-inferior-packages'. inferior: Add 'inferior-package-inputs' & co. inferior: Add 'inferior-package-search-paths' & co. inferior: Add 'inferior-package->manifest-entry'. profiles: 'packages->manifest' now accepts inferior packages. channels: Add 'channel-instances->derivation'. inferior: Add 'inferior-for-channels'. guix/channels.scm | 16 +- guix/inferior.scm | 366 ++++++++++++++++++++++++++++++++++++++++-- guix/profiles.scm | 27 +++- tests/guix-package.sh | 15 ++ tests/inferior.scm | 123 +++++++++++++- 5 files changed, 523 insertions(+), 24 deletions(-) -- 2.18.0