From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id uO89LkxrC2NPugAAbAwnHQ (envelope-from ) for ; Sun, 28 Aug 2022 15:19:08 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id AIRTLUxrC2Oz8wAAG6o9tA (envelope-from ) for ; Sun, 28 Aug 2022 15:19:08 +0200 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 15F692A8CA for ; Sun, 28 Aug 2022 15:19:08 +0200 (CEST) Received: from localhost ([::1]:48096 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oSIBv-0002EM-9e for larch@yhetil.org; Sun, 28 Aug 2022 09:19:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35602) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oSIBq-0002Dz-Lr for guix-patches@gnu.org; Sun, 28 Aug 2022 09:19:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:39777) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oSIBq-0002P2-B0 for guix-patches@gnu.org; Sun, 28 Aug 2022 09:19:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1oSIBq-0006sD-3y for guix-patches@gnu.org; Sun, 28 Aug 2022 09:19:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#57460] [PATCH 01/20] upstream-updater: Rename record field. Resent-From: Hartmut Goebel Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 28 Aug 2022 13:19:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 57460 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 57460@debbugs.gnu.org Received: via spool by 57460-submit@debbugs.gnu.org id=B57460.166169273926406 (code B ref 57460); Sun, 28 Aug 2022 13:19:02 +0000 Received: (at 57460) by debbugs.gnu.org; 28 Aug 2022 13:18:59 +0000 Received: from localhost ([127.0.0.1]:57757 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oSIBm-0006ro-9I for submit@debbugs.gnu.org; Sun, 28 Aug 2022 09:18:59 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:49671) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oSIBj-0006rY-TE for 57460@debbugs.gnu.org; Sun, 28 Aug 2022 09:18:57 -0400 Received: from hermia.goebel-consult.de ([46.87.137.46]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1N49Qd-1pReCO2o0f-0102LK for <57460@debbugs.gnu.org>; Sun, 28 Aug 2022 15:18:49 +0200 Received: from lenashee.fritz.box (lenashee.goebel-consult.de [192.168.110.2]) by hermia.goebel-consult.de (Postfix) with ESMTP id 5F25D5F52C; Sun, 28 Aug 2022 15:18:55 +0200 (CEST) From: Hartmut Goebel Date: Sun, 28 Aug 2022 15:18:27 +0200 Message-Id: <27f47be66e4656d8b97c3c6169dd04897fc68dbc.1661691694.git.h.goebel@crazy-compilers.com> X-Mailer: git-send-email 2.30.4 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K1:wPmPDc//q6U1fqpME3cjEQcJ5iflA4Jvad8G0DmsWFCG674pOFq F0NrBXRZmSFZ/3x2v7GDwpx42TsJf9tZmpy/da/kPMup8OiUvxDbTWAoxvpum2xG0DlWTMS /+sZ7NnDk7uyRzNIMUOyfo/Eev18G4vyxFZOeiNrEZcxslzVmDFNXW+EAFMOwNWPGY83qeG ej/PIZR+Fn7GhQbE10gPQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:Uvxk75a3Uys=:z/JZ+jIyON60Foo7Z6uvRo BB034rJnqHZsUDnckUEim90UOlIkVd4LuEp82UjEyCU9BezPwHB987Q/cpVG6o5jADhZT1CUz ckWcPg1BNf+C6A55zQXQPS0+QQBN+IvKeD0M/CWnFtn7yjUX7bbxYkznzyH5FWG4uLEC09Cxj ieIHFcb8cbj3OHxNQ4ww3ilkxfzlCpZXJ9uR6TqPoOaA20FW6roakleM5Ru39uMQNyc+ORs1l 9RVkakBHpdLdUEmXR+jdTqJAhwMy07zq4nwWhrqRcYjpOgTPGciY6lpi5vW+lsoi50vWA3QRZ uSgcJHx6SB1QhGseKVCQ52T2FniEXcDW1UV1bHL2/r1DzJFuews7cjZ05PBqXbL8vh3iaAO3h kwz4sYh4uI1krBI3OYTZ0SLfqYnAae5Ogg+vhhVTBKjP6e13bwCH1bsQVuZtZ4eCi+gTKAp8B zVuSp0pYl4UJw/BEiH5rOwHFljLHQY4ITcTSOTTGGqlgCMHQoeUJz/S7LaPZKfK4gdDY/doTz g3PRXPz79zwEOyVo5RW90I76sgFhoAoJUCG5V6c8ZAsWfyLjBkIEz6OQ52JKa81xKGZlN0//K /h/fM0MUPN2/WCZUG9JwD4PKbOMFlQ3HG3m2UFjRCMgr6XLfRebdKMscLQDsOFYZN9+dOhnnx Fscxi3znS7hF2f4N2zgfhdvLvLoEpOMus/f536zQ/FCtdMPYQedw9di4HKNh4GkoQrumyTvml IytFhKnbGEB7VpwbPvzGmHQoRrDYssxYV/6neuI/ySTC71UIU4tkaTxofrE= 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 X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1661692748; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: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; bh=QCOe/d9UMQ3+wVuMlQXE6U9oz8wMMT45LTx+pU940Ho=; b=cnPRbY5wQjki1eK5LtMpWg0C4zWeArbFgqpPNrsC9ml/LPqfy9H9OQVCbfI2SmrDlDeW0p w1j2iyVF4W8xzRa80MlUeNwlXy8xUwPNFmBceAbufMFhYn57I30mxXPl19gfFh9KbFN/sQ vkZaeYVPgysKCXJzMFV/ujvK3JlalZB5LINiLxles8ykX+skiQJdIjKR7dREQNa4NJT8zd cj6fKoykUCjTtZmnBYOWW1dcI9fU4a7QPWUU0Y5/bmK4uD5fOgr06eODeEEgrRLyBv/Kmb VN1WqT3wqZKQ59WHOI0G7RPo2RlaGMv3m3sXlGrQncTY5t4XGkH/YX3aokExyw== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1661692748; a=rsa-sha256; cv=none; b=p2GIMnlv+WMggOLmNmNaOacjY3y5uXXx0o6xGdZXZnJzYTAUgdLYW3TDR7qsR9srcbshec RsfttHao8I2cKPWfEC5c392ubCbHSPykB0Y+fwk93EVMUc84ZCuQtWNRLpon6T8f1INJYB /c+017BzIr0T+UjxzyZx/nQbP22Riujyi+2qQaGHsn9gi/4BwanDi6ZlSuNzkJ+lBvCbx3 QSF9paNHSV8B5F03s31nUq3wfb+VbnbaXMxZAXSQKxcKgaohMf5bcvQBXTRcYF75PuYa15 U6fS/lRgqiJ9Z3SUfh4OvOhFRs9xSiVsndUj0iP5ZHiiPan22iPeXCa03h+S1Q== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -0.30 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 15F692A8CA X-Spam-Score: -0.30 X-Migadu-Scanner: scn1.migadu.com X-TUID: 4ecfHzqJY2G8 The next commits will make the functions, which are currently importing the latest version of a package, change into importing the latest or a given version of the package (for those updaters supporting specifying a version). Thus the name ‘latest‘ is no longer appropriate. * guix/upstream.scm(upstream-updater) Rename field [latest] to [import]. (lookup-updater, package-latest-release) Adjust fieldname accordingly. * guix/gnu-maintenance.scm(%gnu-updater, %gnu-ftp-updater, %savannah-updater, %sourceforge-updater, %xorg-updater, %kernel.org-updater, %generic-html-updater), guix/import/cpan.scm(%cpan-updater), guix/import/cran.scm(%cran-updater, %bioconductor-updater), guix/import/crate.scm(%crate-updater), guix/import/egg.scm(%egg-updater), guix/import/elpa.scm(%elpa-updater), guix/import/gem.scm(%gem-updater), guix/import/git.scm(%generic-git-updater), guix/import/github.scm(%github-updater), guix/import/gnome.scm(%gnome-updater), guix/import/hackage.scm(%hackage-updater), guix/import/hexpm.scm(%hexpm-updater), guix/import/kde.scm(%kde-updater), guix/import/launchpad.scm(%launchpad-updater), guix/import/minetest.scm(%minetest-updater), guix/import/opam.scm(%opam-updater), guix/import/pypi.scm(%pypi-updater), guix/import/stackage.scm(%stackage-updater), tests/import-github.scm(found-sexp) tests/transformations.scm("options->transformation, with-latest"): Adjust fieldname accordingly. --- guix/gnu-maintenance.scm | 14 +++++++------- guix/import/cpan.scm | 2 +- guix/import/cran.scm | 4 ++-- guix/import/crate.scm | 2 +- guix/import/egg.scm | 2 +- guix/import/elpa.scm | 2 +- guix/import/gem.scm | 2 +- guix/import/git.scm | 2 +- guix/import/github.scm | 2 +- guix/import/gnome.scm | 2 +- guix/import/hackage.scm | 2 +- guix/import/hexpm.scm | 2 +- guix/import/kde.scm | 2 +- guix/import/launchpad.scm | 2 +- guix/import/minetest.scm | 2 +- guix/import/opam.scm | 2 +- guix/import/pypi.scm | 2 +- guix/import/stackage.scm | 2 +- guix/upstream.scm | 10 +++++----- tests/import-github.scm | 2 +- tests/transformations.scm | 8 ++++---- 21 files changed, 35 insertions(+), 35 deletions(-) diff --git a/guix/gnu-maintenance.scm b/guix/gnu-maintenance.scm index e7edbf6656..a278903a8d 100644 --- a/guix/gnu-maintenance.scm +++ b/guix/gnu-maintenance.scm @@ -830,7 +830,7 @@ the directory containing its source tarball." (name 'gnu) (description "Updater for GNU packages") (pred gnu-hosted?) - (latest latest-gnu-release))) + (import latest-gnu-release))) (define %gnu-ftp-updater ;; This is for GNU packages taken from alternate locations, such as @@ -841,41 +841,41 @@ the directory containing its source tarball." (pred (lambda (package) (and (not (gnu-hosted? package)) (pure-gnu-package? package)))) - (latest latest-release*))) + (import latest-release*))) (define %savannah-updater (upstream-updater (name 'savannah) (description "Updater for packages hosted on savannah.gnu.org") (pred (url-prefix-predicate "mirror://savannah/")) - (latest latest-savannah-release))) + (import latest-savannah-release))) (define %sourceforge-updater (upstream-updater (name 'sourceforge) (description "Updater for packages hosted on sourceforge.net") (pred (url-prefix-predicate "mirror://sourceforge/")) - (latest latest-sourceforge-release))) + (import latest-sourceforge-release))) (define %xorg-updater (upstream-updater (name 'xorg) (description "Updater for X.org packages") (pred (url-prefix-predicate "mirror://xorg/")) - (latest latest-xorg-release))) + (import latest-xorg-release))) (define %kernel.org-updater (upstream-updater (name 'kernel.org) (description "Updater for packages hosted on kernel.org") (pred (url-prefix-predicate "mirror://kernel.org/")) - (latest latest-kernel.org-release))) + (import latest-kernel.org-release))) (define %generic-html-updater (upstream-updater (name 'generic-html) (description "Updater that crawls HTML pages.") (pred html-updatable-package?) - (latest latest-html-updatable-release))) + (import latest-html-updatable-release))) ;;; gnu-maintenance.scm ends here diff --git a/guix/import/cpan.scm b/guix/import/cpan.scm index 87abe9c2f1..cb2d3dd410 100644 --- a/guix/import/cpan.scm +++ b/guix/import/cpan.scm @@ -358,4 +358,4 @@ in RELEASE, a record." (name 'cpan) (description "Updater for CPAN packages") (pred cpan-package?) - (latest latest-release))) + (import latest-release))) diff --git a/guix/import/cran.scm b/guix/import/cran.scm index 4e1ce7c010..33305d68eb 100644 --- a/guix/import/cran.scm +++ b/guix/import/cran.scm @@ -723,13 +723,13 @@ s-expression corresponding to that package, or #f on failure." (name 'cran) (description "Updater for CRAN packages") (pred cran-package?) - (latest latest-cran-release))) + (import latest-cran-release))) (define %bioconductor-updater (upstream-updater (name 'bioconductor) (description "Updater for Bioconductor packages") (pred bioconductor-package?) - (latest latest-bioconductor-release))) + (import latest-bioconductor-release))) ;;; cran.scm ends here diff --git a/guix/import/crate.scm b/guix/import/crate.scm index c76d7e9c1a..51bfcd7bed 100644 --- a/guix/import/crate.scm +++ b/guix/import/crate.scm @@ -370,5 +370,5 @@ look up the development dependencs for the given crate." (name 'crate) (description "Updater for crates.io packages") (pred crate-package?) - (latest latest-release))) + (import latest-release))) diff --git a/guix/import/egg.scm b/guix/import/egg.scm index 52196583c4..aa689f8d84 100644 --- a/guix/import/egg.scm +++ b/guix/import/egg.scm @@ -348,6 +348,6 @@ not work." (name 'egg) (description "Updater for CHICKEN egg packages") (pred egg-package?) - (latest latest-release))) + (import latest-release))) ;;; egg.scm ends here diff --git a/guix/import/elpa.scm b/guix/import/elpa.scm index 9399f45ebc..1dbdff9391 100644 --- a/guix/import/elpa.scm +++ b/guix/import/elpa.scm @@ -444,7 +444,7 @@ type ''." (name 'elpa) (description "Updater for ELPA packages") (pred package-from-elpa-repository?) - (latest latest-release))) + (import latest-release))) (define elpa-guix-name (cut guix-name "emacs-" <>)) diff --git a/guix/import/gem.scm b/guix/import/gem.scm index 0e5bb7e635..81ea4e8f9c 100644 --- a/guix/import/gem.scm +++ b/guix/import/gem.scm @@ -183,7 +183,7 @@ package on RubyGems." (name 'gem) (description "Updater for RubyGem packages") (pred gem-package?) - (latest latest-release))) + (import latest-release))) (define* (gem-recursive-import package-name #:optional version) (recursive-import package-name diff --git a/guix/import/git.scm b/guix/import/git.scm index 4cf404677c..bb5ba4d97e 100644 --- a/guix/import/git.scm +++ b/guix/import/git.scm @@ -226,4 +226,4 @@ tag, or #false and #false if the latest version could not be determined." (name 'generic-git) (description "Updater for packages hosted on Git repositories") (pred git-package?) - (latest latest-git-release))) + (import latest-git-release))) diff --git a/guix/import/github.scm b/guix/import/github.scm index e1a1af7133..ac6ef06eda 100644 --- a/guix/import/github.scm +++ b/guix/import/github.scm @@ -330,6 +330,6 @@ releases." (name 'github) (description "Updater for GitHub packages") (pred github-package?) - (latest latest-release))) + (import latest-release))) diff --git a/guix/import/gnome.scm b/guix/import/gnome.scm index 43966c1028..3562e17e0f 100644 --- a/guix/import/gnome.scm +++ b/guix/import/gnome.scm @@ -114,4 +114,4 @@ not be determined." (name 'gnome) (description "Updater for GNOME packages") (pred (url-prefix-predicate "mirror://gnome/")) - (latest latest-gnome-release))) + (import latest-gnome-release))) diff --git a/guix/import/hackage.scm b/guix/import/hackage.scm index 878a7d2f9c..d56f52a221 100644 --- a/guix/import/hackage.scm +++ b/guix/import/hackage.scm @@ -381,6 +381,6 @@ respectively." (name 'hackage) (description "Updater for Hackage packages") (pred hackage-package?) - (latest latest-release))) + (import latest-release))) ;;; cabal.scm ends here diff --git a/guix/import/hexpm.scm b/guix/import/hexpm.scm index 2a7a9f3d82..3b63837393 100644 --- a/guix/import/hexpm.scm +++ b/guix/import/hexpm.scm @@ -344,4 +344,4 @@ latest version of PACKAGE-NAME." (name 'hexpm) (description "Updater for hex.pm packages") (pred (url-prefix-predicate hexpm-package-url)) - (latest latest-release))) + (import latest-release))) diff --git a/guix/import/kde.scm b/guix/import/kde.scm index 6873418d62..510d823a4f 100644 --- a/guix/import/kde.scm +++ b/guix/import/kde.scm @@ -187,4 +187,4 @@ not be determined." (name 'kde) (description "Updater for KDE packages") (pred (url-prefix-predicate "mirror://kde/")) - (latest latest-kde-release))) + (import latest-kde-release))) diff --git a/guix/import/launchpad.scm b/guix/import/launchpad.scm index aeb447b0a5..b7e0295c4e 100644 --- a/guix/import/launchpad.scm +++ b/guix/import/launchpad.scm @@ -145,4 +145,4 @@ for example, 'linuxdcpp'. Return #f if there is no releases." (name 'launchpad) (description "Updater for Launchpad packages") (pred launchpad-package?) - (latest latest-release))) + (import latest-release))) diff --git a/guix/import/minetest.scm b/guix/import/minetest.scm index 43cfb533e2..6581013215 100644 --- a/guix/import/minetest.scm +++ b/guix/import/minetest.scm @@ -513,4 +513,4 @@ or #false if the latest release couldn't be determined." (name 'minetest) (description "Updater for Minetest packages on ContentDB") (pred minetest-package?) - (latest latest-minetest-release))) + (import latest-minetest-release))) diff --git a/guix/import/opam.scm b/guix/import/opam.scm index b4b5a6eaad..8a5aa4d8c6 100644 --- a/guix/import/opam.scm +++ b/guix/import/opam.scm @@ -435,4 +435,4 @@ package in OPAM." (name 'opam) (description "Updater for OPAM packages") (pred opam-package?) - (latest latest-release))) + (import latest-release))) diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm index 4760fc3dae..3e3e949283 100644 --- a/guix/import/pypi.scm +++ b/guix/import/pypi.scm @@ -583,4 +583,4 @@ source. To build it from source, refer to the upstream repository at (name 'pypi) (description "Updater for PyPI packages") (pred pypi-package?) - (latest latest-release))) + (import latest-release))) diff --git a/guix/import/stackage.scm b/guix/import/stackage.scm index 49be982a7f..af9809304f 100644 --- a/guix/import/stackage.scm +++ b/guix/import/stackage.scm @@ -175,6 +175,6 @@ PACKAGE or #f if the package is not included in the Stackage LTS release." (name 'stackage) (description "Updater for Stackage LTS packages") (pred stackage-lts-package?) - (latest latest-lts-release))) + (import latest-lts-release))) ;;; stackage.scm ends here diff --git a/guix/upstream.scm b/guix/upstream.scm index cbfd1aa609..6cee6440c3 100644 --- a/guix/upstream.scm +++ b/guix/upstream.scm @@ -66,7 +66,7 @@ upstream-updater-name upstream-updater-description upstream-updater-predicate - upstream-updater-latest + upstream-updater-import upstream-input-change? upstream-input-change-name @@ -240,7 +240,7 @@ correspond to the same version." (name upstream-updater-name) (description upstream-updater-description) (pred upstream-updater-predicate) - (latest upstream-updater-latest)) + (import upstream-updater-import)) (define (importer-modules) "Return the list of importer modules." @@ -271,7 +271,7 @@ correspond to the same version." "Return an updater among UPDATERS that matches PACKAGE, or #f if none of them matches." (find (match-lambda - (($ name description pred latest) + (($ name description pred import) (pred package))) updaters)) @@ -284,9 +284,9 @@ them until one of them returns an upstream source. It is the caller's responsibility to ensure that the returned source is newer than the current one." (any (match-lambda - (($ name description pred latest) + (($ name description pred import) (and (pred package) - (latest package)))) + (import package)))) updaters)) (define* (package-latest-release* package diff --git a/tests/import-github.scm b/tests/import-github.scm index 4d3f8cfc7e..5100296540 100644 --- a/tests/import-github.scm +++ b/tests/import-github.scm @@ -92,7 +92,7 @@ (define* (found-sexp old-version old-commit tags releases) (and=> (call-with-releases (lambda () - ((upstream-updater-latest %github-updater) + ((upstream-updater-import %github-updater) (example-package old-version old-commit))) tags releases) upstream-source->sexp)) diff --git a/tests/transformations.scm b/tests/transformations.scm index dbfe523518..ce29b1676c 100644 --- a/tests/transformations.scm +++ b/tests/transformations.scm @@ -470,10 +470,10 @@ (name 'dummy) (pred (const #t)) (description "") - (latest (const (upstream-source - (package "foo") - (version "42.0") - (urls '("http://example.org"))))))))) + (import (const (upstream-source + (package "foo") + (version "42.0") + (urls '("http://example.org"))))))))) (let* ((p (dummy-package "foo" (version "1.0"))) (t (options->transformation `((with-latest . "foo"))))) -- 2.30.4