From patchwork Tue Apr 14 22:48:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ricardo Wurmus X-Patchwork-Id: 21258 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 7662B27BBE4; Tue, 14 Apr 2020 23:49:13 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,T_DKIM_INVALID,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTP id 0092A27BBE4 for ; Tue, 14 Apr 2020 23:49:13 +0100 (BST) Received: from localhost ([::1]:40006 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jOUMh-0005ep-8y for patchwork@mira.cbaines.net; Tue, 14 Apr 2020 18:49:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42481) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jOUMY-0005eY-Vd for guix-patches@gnu.org; Tue, 14 Apr 2020 18:49:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jOUMX-0004ds-Un for guix-patches@gnu.org; Tue, 14 Apr 2020 18:49:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:51640) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jOUMX-0004dX-N9 for guix-patches@gnu.org; Tue, 14 Apr 2020 18:49:01 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1jOUMX-0001nP-M2 for guix-patches@gnu.org; Tue, 14 Apr 2020 18:49:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#40629] [PATCH 6/9] import/json: Use json->code. References: <87y2qym5v8.fsf@elephly.net> In-Reply-To: <87y2qym5v8.fsf@elephly.net> Resent-From: Ricardo Wurmus Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 14 Apr 2020 22:49:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40629 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: To: 40629@debbugs.gnu.org Cc: Ricardo Wurmus Received: via spool by 40629-submit@debbugs.gnu.org id=B40629.15869045096822 (code B ref 40629); Tue, 14 Apr 2020 22:49:01 +0000 Received: (at 40629) by debbugs.gnu.org; 14 Apr 2020 22:48:29 +0000 Received: from localhost ([127.0.0.1]:34944 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jOUM1-0001ly-B5 for submit@debbugs.gnu.org; Tue, 14 Apr 2020 18:48:29 -0400 Received: from sender4-of-o53.zoho.com ([136.143.188.53]:21392) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jOULz-0001lq-6R for 40629@debbugs.gnu.org; Tue, 14 Apr 2020 18:48:27 -0400 ARC-Seal: i=1; a=rsa-sha256; t=1586904505; cv=none; d=zohomail.com; s=zohoarc; b=gnWd1ZJBrMcEqJ933n3B7y4LsXruI6H/emgLdDI97gYjiKE+QkXcjjOKadHTCHSnc+hA+RjjLZcc+aPeAx4AFMdKm2nwFA89Y0h4iDeQeobiNUxvduwMQ23CIW9Hl2dvqyV3FA+oLRpMbDxH1SZLv2/yMhoU2LCvsvYP8d7IsD8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1586904505; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:MIME-Version:Message-ID:Subject:To; bh=dI1Fr0Zyxo6J8F7oQNR/fZdLnd03kVq/icYAObSyZ/g=; b=BARCOiNu1bQaRqzdqXHVNAqfc8sM8ZQJLR1mQH1f/EEnlcKmXeX8Z4hPSvhX0T5ys8l1I8rvbOdbukiQoYRAJM1il11ZeJWB29gLNSD5/GFfilmEj+bLLpTw1arsXrF45SwNA1EFhHKjkk6lYSJvIv1drESbOfzqqpI8HKUqmqw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=elephly.net; spf=pass smtp.mailfrom=rekado@elephly.net; dmarc=pass header.from= header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1586904505; s=zoho; d=elephly.net; i=rekado@elephly.net; h=From:To:Cc:Message-ID:Subject:Date:MIME-Version:Content-Transfer-Encoding:Content-Type; bh=dI1Fr0Zyxo6J8F7oQNR/fZdLnd03kVq/icYAObSyZ/g=; b=aBfpSHOec16o2Wtbudz2DXsda2detnjlK08ZZwmweOMxx9TkAUMm/jUOkaAzAKJk T4qUQJu9RyQc2USCcnFGIBJGao/93s0+cx/TO1hQnA+gutpv/XM1YQldQACJ35LqOUm 5/KmCPfkhUxnJAdkFZlIua0B7E90Eo6+SsW7/23E= Received: from localhost (p54AD4D5F.dip0.t-ipconnect.de [84.173.77.95]) by mx.zohomail.com with SMTPS id 1586904502368542.4275580410043; Tue, 14 Apr 2020 15:48:22 -0700 (PDT) From: Ricardo Wurmus Message-ID: <20200414224817.3850-1-rekado@elephly.net> Date: Wed, 15 Apr 2020 00:48:14 +0200 X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-ZohoMailClient: External X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches * guix/import/json.scm (json->code): Export procedure. * guix/scripts/import/json.scm (guix-import-json): Use json->code. --- guix/import/json.scm | 1 + guix/scripts/import/json.scm | 12 +++--------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/guix/import/json.scm b/guix/import/json.scm index 16dc2ad5cb..8f8dbbd05d 100644 --- a/guix/import/json.scm +++ b/guix/import/json.scm @@ -28,6 +28,7 @@ #:use-module (srfi srfi-2) #:use-module (srfi srfi-34) #:export (json-fetch + json->code json->scheme-file)) (define* (json-fetch url diff --git a/guix/scripts/import/json.scm b/guix/scripts/import/json.scm index c9daf65479..778e5f4bc5 100644 --- a/guix/scripts/import/json.scm +++ b/guix/scripts/import/json.scm @@ -23,7 +23,7 @@ #:use-module (guix utils) #:use-module (guix scripts) #:use-module (guix import utils) - #:use-module (guix import print) + #:use-module (guix import json) #:use-module (guix scripts import) #:use-module (guix packages) #:use-module (srfi srfi-1) @@ -88,14 +88,8 @@ Import and convert the JSON package definition in PACKAGE-FILE.\n")) (reverse opts)))) (match args ((file-name) - (catch 'json-invalid - (lambda () - (let ((json (json-string->scm - (with-input-from-file file-name read-string)))) - ;; TODO: also print define-module boilerplate - (package->code (alist->package json)))) - (lambda _ - (leave (G_ "invalid JSON in file '~a'~%") file-name)))) + (or (json->code file-name) + (leave (G_ "invalid JSON in file '~a'~%") file-name))) (() (leave (G_ "too few arguments~%"))) ((many ...) From patchwork Tue Apr 14 22:48:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ricardo Wurmus X-Patchwork-Id: 21260 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 35E5327BBE1; Tue, 14 Apr 2020 23:49:14 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,T_DKIM_INVALID,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTP id 9C20227BBE4 for ; Tue, 14 Apr 2020 23:49:13 +0100 (BST) Received: from localhost ([::1]:40008 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jOUMj-0005fY-4w for patchwork@mira.cbaines.net; Tue, 14 Apr 2020 18:49:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42489) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jOUMZ-0005ea-Be for guix-patches@gnu.org; Tue, 14 Apr 2020 18:49:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jOUMY-0004e8-5u for guix-patches@gnu.org; Tue, 14 Apr 2020 18:49:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:51641) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jOUMY-0004e0-2T for guix-patches@gnu.org; Tue, 14 Apr 2020 18:49:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1jOUMY-0001nX-1U for guix-patches@gnu.org; Tue, 14 Apr 2020 18:49:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#40629] [PATCH 7/9] import/print: package->code: Wrap S-expression in definition. Resent-From: Ricardo Wurmus Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 14 Apr 2020 22:49:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40629 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: To: 40629@debbugs.gnu.org Cc: Ricardo Wurmus Received: via spool by 40629-submit@debbugs.gnu.org id=B40629.15869045136840 (code B ref 40629); Tue, 14 Apr 2020 22:49:01 +0000 Received: (at 40629) by debbugs.gnu.org; 14 Apr 2020 22:48:33 +0000 Received: from localhost ([127.0.0.1]:34947 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jOUM4-0001mF-J7 for submit@debbugs.gnu.org; Tue, 14 Apr 2020 18:48:33 -0400 Received: from sender4-of-o53.zoho.com ([136.143.188.53]:21393) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jOUM2-0001m6-IR for 40629@debbugs.gnu.org; Tue, 14 Apr 2020 18:48:30 -0400 ARC-Seal: i=1; a=rsa-sha256; t=1586904508; cv=none; d=zohomail.com; s=zohoarc; b=AxrcUYkiIo2dhjgZA76LQ3CwBz4oQFwoqj1cxoptUCnQB5IU5PiobPx4EZkzg0jPTW6+lR/ZiNevm3Rujsad8bJZUR8xjpnjVQv4gMIaRU0i57uM+dNo0taAGraFYk2mZIVqHzF4he9DEzOXq7Vp/ToJGkOl5SSk/XLXjvAczEg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1586904508; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=lNuYbA+owNzNcGZQMMF3bsFU0SVssoihNZbq8hTT+qM=; b=TD9NxV6sO9orK6952U2aeil+3HjL0CdQ2f+onEsHYm3rD0c6gEJpF205IDA/V3ymuWmq//Wdgj8KxriwdzzL19HV7nc0S1UX7AIzMq5Y99gfRCfwq125AspLeiyxwQzQnHBGPhC1QHMK3YXZy0l9WXaXWm5XgXHJfaQoIPtI6m8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=elephly.net; spf=pass smtp.mailfrom=rekado@elephly.net; dmarc=pass header.from= header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1586904508; s=zoho; d=elephly.net; i=rekado@elephly.net; h=From:To:Cc:Message-ID:Subject:Date:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Content-Type; bh=lNuYbA+owNzNcGZQMMF3bsFU0SVssoihNZbq8hTT+qM=; b=iSSO6aRnSx7A8SzOvi4gPq/HP0SiXPuoOusSeH0zCZPtug/y5qjTChzjJY5EU93V t7iKAhQID2w2lWQQYThu+3lWIZb6W7Q3fgPGJprIOXjnhEl6GXIfkzcNWAzbbdhIF8p fLGohRi3gib86h6ZZ2y2xb9XsFQUkuKqswsYQSXY= Received: from localhost (p54AD4D5F.dip0.t-ipconnect.de [84.173.77.95]) by mx.zohomail.com with SMTPS id 1586904506102700.3554931827858; Tue, 14 Apr 2020 15:48:26 -0700 (PDT) From: Ricardo Wurmus Message-ID: <20200414224817.3850-2-rekado@elephly.net> Date: Wed, 15 Apr 2020 00:48:15 +0200 X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200414224817.3850-1-rekado@elephly.net> References: <20200414224817.3850-1-rekado@elephly.net> MIME-Version: 1.0 X-ZohoMailClient: External X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches * guix/import/print.scm (package->code): Return a definition, not just a package expression. --- guix/import/print.scm | 87 ++++++++++++++++++++++--------------------- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/guix/import/print.scm b/guix/import/print.scm index 4529a79b23..08f3ec9c34 100644 --- a/guix/import/print.scm +++ b/guix/import/print.scm @@ -121,46 +121,47 @@ when evaluated." (home-page (package-home-page package)) (supported-systems (package-supported-systems package)) (properties (package-properties package))) - `(package - (name ,name) - (version ,version) - (source ,(source->code source version)) - ,@(match properties - (() '()) - (_ `((properties ,properties)))) - ,@(if replacement - `((replacement ,replacement)) - '()) - (build-system (@ (guix build-system ,(build-system-name build-system)) - ,(symbol-append (build-system-name build-system) - '-build-system))) - ,@(match arguments - (() '()) - (args `((arguments ,(list 'quasiquote args))))) - ,@(match outputs - (("out") '()) - (outs `((outputs (list ,@outs))))) - ,@(match native-inputs - (() '()) - (pkgs `((native-inputs ,(package-lists->code pkgs))))) - ,@(match inputs - (() '()) - (pkgs `((inputs ,(package-lists->code pkgs))))) - ,@(match propagated-inputs - (() '()) - (pkgs `((propagated-inputs ,(package-lists->code pkgs))))) - ,@(if (lset= string=? supported-systems %supported-systems) - '() - `((supported-systems (list ,@supported-systems)))) - ,@(match (map search-path-specification->code native-search-paths) - (() '()) - (paths `((native-search-paths (list ,@paths))))) - ,@(match (map search-path-specification->code search-paths) - (() '()) - (paths `((search-paths (list ,@paths))))) - (home-page ,home-page) - (synopsis ,synopsis) - (description ,description) - (license ,(if (list? license) - `(list ,@(map license->code license)) - (license->code license)))))) + `(define-public ,(string->symbol name) + (package + (name ,name) + (version ,version) + (source ,(source->code source version)) + ,@(match properties + (() '()) + (_ `((properties ,properties)))) + ,@(if replacement + `((replacement ,replacement)) + '()) + (build-system (@ (guix build-system ,(build-system-name build-system)) + ,(symbol-append (build-system-name build-system) + '-build-system))) + ,@(match arguments + (() '()) + (args `((arguments ,(list 'quasiquote args))))) + ,@(match outputs + (("out") '()) + (outs `((outputs (list ,@outs))))) + ,@(match native-inputs + (() '()) + (pkgs `((native-inputs ,(package-lists->code pkgs))))) + ,@(match inputs + (() '()) + (pkgs `((inputs ,(package-lists->code pkgs))))) + ,@(match propagated-inputs + (() '()) + (pkgs `((propagated-inputs ,(package-lists->code pkgs))))) + ,@(if (lset= string=? supported-systems %supported-systems) + '() + `((supported-systems (list ,@supported-systems)))) + ,@(match (map search-path-specification->code native-search-paths) + (() '()) + (paths `((native-search-paths (list ,@paths))))) + ,@(match (map search-path-specification->code search-paths) + (() '()) + (paths `((search-paths (list ,@paths))))) + (home-page ,home-page) + (synopsis ,synopsis) + (description ,description) + (license ,(if (list? license) + `(list ,@(map license->code license)) + (license->code license))))))) From patchwork Tue Apr 14 22:48:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Ricardo Wurmus X-Patchwork-Id: 21261 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id BE5F927BBE4; Tue, 14 Apr 2020 23:49:19 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,T_DKIM_INVALID,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTP id 43AB727BBE1 for ; Tue, 14 Apr 2020 23:49:19 +0100 (BST) Received: from localhost ([::1]:40014 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jOUMo-0005uY-Ra for patchwork@mira.cbaines.net; Tue, 14 Apr 2020 18:49:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42502) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jOUMZ-0005eb-S0 for guix-patches@gnu.org; Tue, 14 Apr 2020 18:49:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jOUMY-0004eJ-J7 for guix-patches@gnu.org; Tue, 14 Apr 2020 18:49:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:51642) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jOUMY-0004eD-G1 for guix-patches@gnu.org; Tue, 14 Apr 2020 18:49:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1jOUMY-0001ne-Fd for guix-patches@gnu.org; Tue, 14 Apr 2020 18:49:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#40629] [PATCH 8/9] import/utils: alist->package: Ignore known inputs. Resent-From: Ricardo Wurmus Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 14 Apr 2020 22:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40629 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: To: 40629@debbugs.gnu.org Cc: Ricardo Wurmus Received: via spool by 40629-submit@debbugs.gnu.org id=B40629.15869045146853 (code B ref 40629); Tue, 14 Apr 2020 22:49:02 +0000 Received: (at 40629) by debbugs.gnu.org; 14 Apr 2020 22:48:34 +0000 Received: from localhost ([127.0.0.1]:34950 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jOUM6-0001mT-6G for submit@debbugs.gnu.org; Tue, 14 Apr 2020 18:48:34 -0400 Received: from sender4-of-o53.zoho.com ([136.143.188.53]:21394) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jOUM4-0001mE-IO for 40629@debbugs.gnu.org; Tue, 14 Apr 2020 18:48:33 -0400 ARC-Seal: i=1; a=rsa-sha256; t=1586904510; cv=none; d=zohomail.com; s=zohoarc; b=LQOHDLaRbZzQtvD+jxQJ6FEF/r0CXQLUORDUJduOy/X1ZRbhWQxF9+8ODnW71YqV0p618aXITwMtdqP0/lI6/p+XEfVbKk3IwPwSynwI5CneAIh9HhTbHneuAOj6EwGNRoe3V4yuD3dvOHdjZy9S/YT11s9IUDlY07AseIS/NwI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1586904510; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=Hf17D1P/zJh/v97Rqxb0OOPPY9SW4p9VR1koLgPBSvM=; b=gjdLWSiIJ0zhWfTRHXXKO7hRmgMQvf4o/6SwzF4lmSFQH8aHnas0139k1vtZKiMUDneflO/b5lbQaTUQkl0b5OMCcMoik3X0yNfeAPkwoJ7MgLhcAZ++HPZdxi3FIafTRnjvSL1FN3wAsQdbIZbC0vr7VgFJrpuvFuBYQ3e3JMc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=elephly.net; spf=pass smtp.mailfrom=rekado@elephly.net; dmarc=pass header.from= header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1586904510; s=zoho; d=elephly.net; i=rekado@elephly.net; h=From:To:Cc:Message-ID:Subject:Date:In-Reply-To:References:MIME-Version:Content-Type:Content-Transfer-Encoding; bh=Hf17D1P/zJh/v97Rqxb0OOPPY9SW4p9VR1koLgPBSvM=; b=fzxeEivBuV/m72HEHGHPQZLqc6lWDHUcs9AKV/iuYLrwKVMDP4hoMZjzZqkoHkE7 0zL7UTn15YpJjRkOhIwTdCCKyeC5CCCBiNloGJOq0OcA/jt1hRb96eI2dOJv9xaypgc 9L1zBF0dGg+G7WvQSJCsdOS22lSSCrLxQ5MMFalw= Received: from localhost (p54AD4D5F.dip0.t-ipconnect.de [84.173.77.95]) by mx.zohomail.com with SMTPS id 1586904509646669.15285440888; Tue, 14 Apr 2020 15:48:29 -0700 (PDT) From: Ricardo Wurmus Message-ID: <20200414224817.3850-3-rekado@elephly.net> Date: Wed, 15 Apr 2020 00:48:16 +0200 X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200414224817.3850-1-rekado@elephly.net> References: <20200414224817.3850-1-rekado@elephly.net> MIME-Version: 1.0 X-ZohoMailClient: External X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches * guix/import/utils.scm (alist->package): Accept optional list of known inputs, which are excluded from the specification lookup. * guix/import/print.scm (package->code)[package-lists->code]: Handle inputs which are just symbols. --- guix/import/print.scm | 2 ++ guix/import/utils.scm | 27 ++++++++++++++++----------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/guix/import/print.scm b/guix/import/print.scm index 08f3ec9c34..fd297798da 100644 --- a/guix/import/print.scm +++ b/guix/import/print.scm @@ -92,6 +92,8 @@ when evaluated." (define (package-lists->code lsts) (list 'quasiquote (map (match-lambda + ((? symbol? s) + (cons (symbol->string s) (list 'unquote s))) ((label pkg . out) (let ((mod (package-module-name pkg))) (cons* label diff --git a/guix/import/utils.scm b/guix/import/utils.scm index 94c8cb040b..5fb1322535 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2012, 2013, 2018, 2019, 2020 Ludovic Courtès ;;; Copyright © 2016 Jelle Licht ;;; Copyright © 2016 David Craven -;;; Copyright © 2017, 2019 Ricardo Wurmus +;;; Copyright © 2017, 2019, 2020 Ricardo Wurmus ;;; Copyright © 2018 Oleg Pykhalov ;;; Copyright © 2019 Robert Vollmert ;;; @@ -310,7 +310,18 @@ the expected fields of an object." (uri (assoc-ref orig "uri")) (sha256 sha)))))) -(define (alist->package meta) +(define* (alist->package meta #:optional (known-inputs '())) + "Return a package value generated from the alist META. If the list of +strings KNOWN-INPUTS is provided, do not treat the mentioned inputs as +specifications to look up and replace them with plain symbols instead." + (define (process-inputs which) + (let-values (((regular known) + (lset-diff+intersection + string=? + (vector->list (or (assoc-ref meta which) #())) + known-inputs))) + (append (specs->package-lists regular) + (map string->symbol known)))) (package (name (assoc-ref meta "name")) (version (assoc-ref meta "version")) @@ -318,15 +329,9 @@ the expected fields of an object." (build-system (lookup-build-system-by-name (string->symbol (assoc-ref meta "build-system")))) - (native-inputs - (specs->package-lists - (vector->list (or (assoc-ref meta "native-inputs") '#())))) - (inputs - (specs->package-lists - (vector->list (or (assoc-ref meta "inputs") '#())))) - (propagated-inputs - (specs->package-lists - (vector->list (or (assoc-ref meta "propagated-inputs") '#())))) + (native-inputs (process-inputs "native-inputs")) + (inputs (process-inputs "inputs")) + (propagated-inputs (process-inputs "propagated-inputs")) (home-page (assoc-ref meta "home-page")) (synopsis From patchwork Tue Apr 14 22:48:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ricardo Wurmus X-Patchwork-Id: 21259 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id C522227BBEA; Tue, 14 Apr 2020 23:49:13 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,T_DKIM_INVALID,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTP id 59CF327BBE1 for ; Tue, 14 Apr 2020 23:49:13 +0100 (BST) Received: from localhost ([::1]:40010 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jOUMi-0005gs-SF for patchwork@mira.cbaines.net; Tue, 14 Apr 2020 18:49:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42505) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jOUMa-0005ef-38 for guix-patches@gnu.org; Tue, 14 Apr 2020 18:49:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jOUMY-0004eY-WD for guix-patches@gnu.org; Tue, 14 Apr 2020 18:49:04 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:51643) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jOUMY-0004eQ-Sm for guix-patches@gnu.org; Tue, 14 Apr 2020 18:49:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1jOUMY-0001nl-Rp for guix-patches@gnu.org; Tue, 14 Apr 2020 18:49:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#40629] [PATCH 9/9] import/json: json->code: Handle files with more than one definition. Resent-From: Ricardo Wurmus Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 14 Apr 2020 22:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40629 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: To: 40629@debbugs.gnu.org Cc: Ricardo Wurmus Received: via spool by 40629-submit@debbugs.gnu.org id=B40629.15869045186873 (code B ref 40629); Tue, 14 Apr 2020 22:49:02 +0000 Received: (at 40629) by debbugs.gnu.org; 14 Apr 2020 22:48:38 +0000 Received: from localhost ([127.0.0.1]:34953 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jOUMA-0001mm-Go for submit@debbugs.gnu.org; Tue, 14 Apr 2020 18:48:38 -0400 Received: from sender4-of-o53.zoho.com ([136.143.188.53]:21395) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jOUM8-0001mb-If for 40629@debbugs.gnu.org; Tue, 14 Apr 2020 18:48:36 -0400 ARC-Seal: i=1; a=rsa-sha256; t=1586904514; cv=none; d=zohomail.com; s=zohoarc; b=YaN4ee+IsfUw5Yo6/Po1sW6KjSLQMQZ0+GBvnyK1EtWXG0U7VLEWksxyAUQDIIOkAT22MvpmpGE7xHDv8t019mE3vWPHtttqIzePNlYZq3dV2UJOxD6ULZBGudp2AT4GtIgfNA3aZPbxO3VITNbN0UvHtrx5sDbH34qECw/168w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1586904514; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=QB7S2q24feZbsxpzzRP5TS3cPxZpKLB/jZtMMy89mYM=; b=B94S+jk4mNWyIH8TBwk68DjD7ERTp30lWBrvF7djjhI0AOedtf1+qx89Upgi9vn/4Yjm/psFjh/rMgVMxSu1bHVytbLixoMLVBz1QJ9MvY3wK5TS9O9VjEiupVrnMwdvYTFy4ky1Vqjb6TXOR1PFArR2/rKFeaFyJCBEGo9/mqg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=elephly.net; spf=pass smtp.mailfrom=rekado@elephly.net; dmarc=pass header.from= header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1586904514; s=zoho; d=elephly.net; i=rekado@elephly.net; h=From:To:Cc:Message-ID:Subject:Date:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Content-Type; bh=QB7S2q24feZbsxpzzRP5TS3cPxZpKLB/jZtMMy89mYM=; b=DIc7KBi+cnFRA1GXlrbWJwoDWX9vAH8lOH3xV2o0LKvdlHSTFLie0ZdAPo7z2QB9 V5YiyzSmsyG0JtroAz5LwG/G1zRb7aPK8Y6YScVg1rJzU5OiEXEy7eCV/HygdkvQME+ k2nCd9lpcFBxU60zyn/9XbdZZSsuLMdZ/C00Mqn0= Received: from localhost (p54AD4D5F.dip0.t-ipconnect.de [84.173.77.95]) by mx.zohomail.com with SMTPS id 1586904513373259.79218082697287; Tue, 14 Apr 2020 15:48:33 -0700 (PDT) From: Ricardo Wurmus Message-ID: <20200414224817.3850-4-rekado@elephly.net> Date: Wed, 15 Apr 2020 00:48:17 +0200 X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200414224817.3850-1-rekado@elephly.net> References: <20200414224817.3850-1-rekado@elephly.net> MIME-Version: 1.0 X-ZohoMailClient: External X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches * guix/import/json.scm (json->code): Convert JSON arrays to lists of package definitions. (json->scheme-file): Write all expressions to the target file. --- guix/import/json.scm | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/guix/import/json.scm b/guix/import/json.scm index 8f8dbbd05d..de35984211 100644 --- a/guix/import/json.scm +++ b/guix/import/json.scm @@ -24,8 +24,11 @@ #:use-module (guix http-client) #:use-module (guix import utils) #:use-module (guix import print) + #:use-module (ice-9 match) #:use-module (ice-9 rdelim) + #:use-module (srfi srfi-1) #:use-module (srfi srfi-2) + #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) #:export (json-fetch json->code @@ -50,19 +53,41 @@ the query." result))) (define (json->code file-name) - "Read FILE-NAME containing a JSON package definition and return an -S-expression, or return #F when the JSON is invalid." + "Read FILE-NAME containing one ore more JSON package definitions and return +a list of S-expressions, or return #F when the JSON is invalid." (catch 'json-invalid (lambda () (let ((json (json-string->scm (with-input-from-file file-name read-string)))) - (package->code (alist->package json)))) + (match json + (#(packages ...) + ;; To allow definitions to refer to one another, collect references + ;; to local definitions and tell alist->package to ignore them. + (second + (memq #:result + (fold + (lambda (pkg names+result) + (match names+result + ((#:names names #:result result) + (list #:names + (cons (assoc-ref pkg "name") names) + #:result + (append (list + (package->code (alist->package pkg names)) + (string->symbol (assoc-ref pkg "name"))) + result))))) + (list #:names '() + #:result '()) + packages)))) + (package + (list (package->code (alist->package json)) + (string->symbol (assoc-ref json "name"))))))) (const #f))) (define (json->scheme-file file) "Convert the FILE containing a JSON package definition to a Scheme representation and return the new file name (or #F on error)." - (and-let* ((json (json->code file)) + (and-let* ((sexprs (json->code file)) (file* (let* ((tempdir (or (getenv "TMPDIR") "/tmp")) (template (string-append tempdir "/guix-XXXXXX")) (port (mkstemp! template))) @@ -74,5 +99,5 @@ representation and return the new file name (or #F on error)." (guix) ((guix licenses) #:prefix license:)) port) - (write json port))) + (for-each (cut write <> port) sexprs))) file*))