From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2 ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id cElmOucN1GDERAAAgWs5BA (envelope-from ) for ; Thu, 24 Jun 2021 06:45:27 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2 with LMTPS id ILohNucN1GAJWQAAB5/wlQ (envelope-from ) for ; Thu, 24 Jun 2021 04:45:27 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 535E120ED4 for ; Thu, 24 Jun 2021 06:45:27 +0200 (CEST) Received: from localhost ([::1]:50896 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lwHF0-0007JL-Ct for larch@yhetil.org; Thu, 24 Jun 2021 00:45:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57400) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lwHEc-0007JD-Bj for guix-patches@gnu.org; Thu, 24 Jun 2021 00:45:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:58889) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lwHEc-0005Sy-4Y for guix-patches@gnu.org; Thu, 24 Jun 2021 00:45:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lwHEc-0002Ww-38 for guix-patches@gnu.org; Thu, 24 Jun 2021 00:45:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#49149] [PATCH 4/7] pack: Improve naming of the packs store file names. Resent-From: Maxim Cournoyer Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Thu, 24 Jun 2021 04:45:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 49149 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Maxime Devos Cc: 49149@debbugs.gnu.org Received: via spool by 49149-submit@debbugs.gnu.org id=B49149.16245098639655 (code B ref 49149); Thu, 24 Jun 2021 04:45:02 +0000 Received: (at 49149) by debbugs.gnu.org; 24 Jun 2021 04:44:23 +0000 Received: from localhost ([127.0.0.1]:42197 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lwHDz-0002Vf-6n for submit@debbugs.gnu.org; Thu, 24 Jun 2021 00:44:23 -0400 Received: from mail-qk1-f181.google.com ([209.85.222.181]:41806) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lwHDw-0002VQ-M8 for 49149@debbugs.gnu.org; Thu, 24 Jun 2021 00:44:21 -0400 Received: by mail-qk1-f181.google.com with SMTP id bl4so11201983qkb.8 for <49149@debbugs.gnu.org>; Wed, 23 Jun 2021 21:44:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=UjmKYON8A5LaJojxIww1p3rwxOApi45Y4XFQkGoYkCw=; b=vR0qWEXl6JiW1JRqewFKf1zOuF96VtPGRS7ukQvDGTyjF0xcMPgsfUdt6daAw3vVvV t5O9H4gLUdoxwSh+ig4qsPXDmdPyGifWa/eypk7exK9IFXAAHhgG7MbmbwnZQ4nOW48J L0VtjSE3Or1JeAO2bWDWSO/97WWWW4EoaUg/FNrIKF9oUazY2Ad2Li5Rlgt6h9mNBmr1 ciL5+rzLlgyz87EagVO/jHhq4i8Utp56CDx9y1jQ2b4HNDssAb2ne2z0m+BcsXVEIk9t cNHRJPsLttyus19Kz5DhaJfJmLeIu5LUIPye1smYMwgmrQiqr/Qr9ioPZCIDTY85aSkB EsRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=UjmKYON8A5LaJojxIww1p3rwxOApi45Y4XFQkGoYkCw=; b=VY3xyKF4ID3XeNgE89GjEdUH0y3QdmzZL7P2dAERstObiHs/9BZX6z4RfVDtQRUIfQ cEBNe40kXaAgDf/EraEua3Hgq36z6qbEO0wRaJe5HDUyYSdMBuijm0irtG6OT9drgjiq f5qBFaoRoKvV8LP5UEuQr8T7Xh0FEA2JjMk1S9mwtCmYMa/X0PA/G445R8XJ5HesmULR DsWdFdnFHW3k9s0Y3LraFZCB5q356fnT0KhT7uJp6XCZIhIMHqipvbY0p7d9t8eQ/RX3 9yGew9MpouZPYuiqPj8MZiLeTbEVcNtoRn3c06DxNKw7xTIKqlcgJ13tOKZHCNkLARR5 KoJQ== X-Gm-Message-State: AOAM530Ovp1Hfr5QZKrWiWjkPdHyHMaMIudVzHU2d78nIflOZu1dCa8l 61PV/QeJPm/6ZlBoA15zEH6OlLU6KFqa1g== X-Google-Smtp-Source: ABdhPJyFGVXfe7GlzeizNHn8MVu9zjFCApskChilfmlLuZhsiy8JoKm0u8LqdUwLYUAiXgdY6orfdA== X-Received: by 2002:a37:6c4:: with SMTP id 187mr3789469qkg.95.1624509855264; Wed, 23 Jun 2021 21:44:15 -0700 (PDT) Received: from hurd ([207.35.95.2]) by smtp.gmail.com with ESMTPSA id s81sm1649543qka.82.2021.06.23.21.44.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Jun 2021 21:44:14 -0700 (PDT) From: Maxim Cournoyer References: <20210621061205.31878-1-maxim.cournoyer@gmail.com> <20210621061205.31878-5-maxim.cournoyer@gmail.com> <66838991d056aed2ab4c198e27df0a7fa4357a74.camel@telenet.be> <87k0mm2dzu.fsf@gmail.com> Date: Thu, 24 Jun 2021 00:44:13 -0400 In-Reply-To: (Maxime Devos's message of "Wed, 23 Jun 2021 12:22:14 +0200") Message-ID: <87y2az27oi.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1624509927; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post: dkim-signature; bh=UjmKYON8A5LaJojxIww1p3rwxOApi45Y4XFQkGoYkCw=; b=ixl83GTwSS7vjgRcsUNDU/Ggg3Eh+3k77g6X2tiJcgEM1n3yTBZwPPBvVbKjPLR4zZAMFR kn/FIDjUnv8qWxfETr7phck7v5EKrmL/uHpxVNaayB9et56MFWKFnU4p8N0oPjB6YHAMD9 NT6zkchm3l/LY7JQzSvfe3gNEKII5JbbxTeVSP3cI+/eqZ+uspD10OgN/4thdYqF5X4Vud nscz8L1W0tnAc/VDSt9WUqAPMrtJXIT3oEHaVrlQvyCgvvjaY0oWMc3BYd1ZpJD+vMtYLv kIz6NrZ3EpocYsU96ERNv9qRnpqNLwIGskg3ZRLv8sBtc6Edowm8o/k7WFQkNQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1624509927; a=rsa-sha256; cv=none; b=Grd1hcJVh+hP1LUclF3WrW/4K8dJG6v5PNiEIa3QTB7F6YsEpzCMdaqPre/KPoMvb+Bdc+ G/JiGNqSKlHKMi+hq8zfGiIPKwlcpNYdWURTtKGJ1rGKuZG0X16VAs8YJoLUNODH7oCf7m ffTwHmfRYsftcwKg4H7OoM7PYlExqshDaa0VFTulL7s+iqzhFPxICI3oUNWQcjZ4/v/002 xQ1DOjtssjmMkVfgTxOny5As0tabtrP/FObbjBXg6gIkKsY5ePeTwg0GkmmdNEWg4vDFjp Gw3oPywu1cZEyi3LtTGqIHwTfQaQ/ZMLd+ZwSAHCecCJ9JM9zexeEZkCAswO4g== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20161025 header.b=vR0qWEXl; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Spam-Score: -1.33 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20161025 header.b=vR0qWEXl; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Queue-Id: 535E120ED4 X-Spam-Score: -1.33 X-Migadu-Scanner: scn1.migadu.com X-TUID: XqTfik1+ThuB Hello Maxime & Ludovic, Maxime Devos writes: >> I'm not sure how the expansion would be usable in the module it is >> defined? It seems I could manage to get 'manifest->friendly-name' to be >> a procedure returning a gexp, but that gexp wouldn't be readily usable >> in that module (it could only be used when gexp-unquote from inside >> another G-Exp), and the expansion in the macro above doesn't bind any >> identifier, unless I'm missing something? > > The macro does two things: define a procedure manifest->friendly-name > that returns a string. > > (define (manifest->friendly-name manifest) > "Return a friendly name computed from the entries in MANIFEST, a > object." > (let loop ((names (map manifest-entry-name > (manifest-entries manifest)))) > (define str (string-join names "-")) > (if (< (string-length str) 40) > str > (match names > ((_) str) > ((names ... _) (loop names))))))) ;drop one entry > > and also define a G-exp define-manifest->friendly-name > > (define define-manifest->friendly-nam > #~(define (manifest->friendly-name manifes) > "Return a friendly name [...]" > [...]) Thanks a lot for persevering in your explanations, that made it clear and with some ideas from the fine folks in #guile was able to come up with this: --8<---------------cut here---------------start------------->8--- (define-syntax-rule (define-with-source (variable args ...) body body* ...) "Bind VARIABLE to a procedure accepting ARGS defined as BODY, also setting its source property." (begin (define (variable args ...) body) (eval-when (load eval) (set-procedure-property! variable 'source '(define (variable args ...) body body* ...))))) (define-with-source (manifest->friendly-name manifest) "Return a friendly name computed from the entries in MANIFEST, a object." (let loop ((names (map manifest-entry-name (manifest-entries manifest)))) (define str (string-join names "-")) (if (< (string-length str) 40) str (match names ((_) str) ((names ... _) (loop names)))))) --8<---------------cut here---------------end--------------->8--- And then use it inside the build G-Exp via: #$(procedure-source manifest->friendly-name) The pack tests are still passing. Maxim