GNU bug report logs - #49334
[PATCH] DRAFT website: Add page listing branches.

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: guix-patches; Reported by: Ludovic Courtès <ludo@HIDDEN>; Keywords: patch; dated Fri, 2 Jul 2021 16:30:02 UTC; Maintainer for guix-patches is guix-patches@HIDDEN.

Message received at 49334 <at> debbugs.gnu.org:


Received: (at 49334) by debbugs.gnu.org; 6 Jul 2021 10:34:08 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jul 06 06:34:08 2021
Received: from localhost ([127.0.0.1]:47493 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1m0iP2-0001q3-MO
	for submit <at> debbugs.gnu.org; Tue, 06 Jul 2021 06:34:08 -0400
Received: from eggs.gnu.org ([209.51.188.92]:51324)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <othacehe@HIDDEN>) id 1m0iP1-0001pp-Rt
 for 49334 <at> debbugs.gnu.org; Tue, 06 Jul 2021 06:34:08 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:37198)
 by eggs.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <othacehe@HIDDEN>)
 id 1m0iOv-0003Tx-Od; Tue, 06 Jul 2021 06:34:01 -0400
Received: from [109.190.253.16] (port=48170 helo=meije)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <othacehe@HIDDEN>)
 id 1m0iOt-0004Gv-0K; Tue, 06 Jul 2021 06:34:01 -0400
From: Mathieu Othacehe <othacehe@HIDDEN>
To: Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Subject: Re: bug#49334: [PATCH] DRAFT website: Add page listing branches.
References: <20210702162904.314-1-ludo@HIDDEN>
Date: Tue, 06 Jul 2021 12:33:56 +0200
In-Reply-To: <20210702162904.314-1-ludo@HIDDEN> ("Ludovic =?utf-8?Q?Court?=
 =?utf-8?Q?=C3=A8s=22's?= message
 of "Fri, 2 Jul 2021 18:29:04 +0200")
Message-ID: <87a6mzwx2j.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 49334
Cc: 49334 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)


Hey Ludo,

> +                #:target-date (string->date* "2021-07-20")
> +                #:merge-period (* 4 30 24 3600))))

This looks fine, thanks! I wonder if it would make sense to extract the
target date and maybe other information from Cuirass.

We could have something like specification properties with a key/value
association. The https://ci.guix.gnu.org/specification/master/properties
URL would return:

--8<---------------cut here---------------start------------->8---
{
        TARGET_DATE: "2021-07-20"
}
--8<---------------cut here---------------end--------------->8---

This way, the https://guix.gnu.org/branches page would be mostly static
and we could update specification properties directly from Cuirass web
interface.

WDYT?

Thanks,

Mathieu




Information forwarded to guix-patches@HIDDEN:
bug#49334; Package guix-patches. Full text available.

Message received at 49334 <at> debbugs.gnu.org:


Received: (at 49334) by debbugs.gnu.org; 3 Jul 2021 07:52:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jul 03 03:52:44 2021
Received: from localhost ([127.0.0.1]:37889 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1lzaSC-0002j9-9p
	for submit <at> debbugs.gnu.org; Sat, 03 Jul 2021 03:52:44 -0400
Received: from pelzflorian.de ([5.45.111.108]:49808 helo=mail.pelzflorian.de)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <pelzflorian@HIDDEN>) id 1lzaSA-0002j1-OP
 for 49334 <at> debbugs.gnu.org; Sat, 03 Jul 2021 03:52:43 -0400
Received: from pelzflorian.localdomain (unknown [5.45.111.108])
 by mail.pelzflorian.de (Postfix) with ESMTPSA id 714AB360672;
 Sat,  3 Jul 2021 09:52:41 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=pelzflorian.de;
 s=mail; t=1625298761;
 bh=cT6JwJ6Yn5n3ikjk+7Em1KdPGAtUS1Ax23XNZeY3r2c=;
 h=Date:From:To:Cc:Subject:References:In-Reply-To;
 b=SxkwjrYhwtQMusm++d8LeGqbfe6D9YwrdeOrah82F5GhT2djCy1DOBTjkdZmMUMHo
 PUbzenSWCs9tV+AYsNLi6FTRye7gLeVFnQIU5ZV7drHC86xHdtItepfaMd2jFELa2k
 aOlZ3PaiPvd0cYBVJSpRJd7kclzOi80HCDX/3ovk=
Date: Sat, 3 Jul 2021 09:52:32 +0200
From: "pelzflorian (Florian Pelz)" <pelzflorian@HIDDEN>
To: Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Subject: Re: [bug#49334] [PATCH] DRAFT website: Add page listing branches.
Message-ID: <20210703075232.jwdslij2onnwwa62@HIDDEN>
References: <20210702162904.314-1-ludo@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20210702162904.314-1-ludo@HIDDEN>
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 49334
Cc: 49334 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hi Ludo,

On Fri, Jul 02, 2021 at 06:29:04PM +0200, Ludovic Courtès wrote:
> Hi Guix!
> 
> This is something we discussed at the last Guix Days: having a dashboard
> showing the active Git branches, their status, applicable constraints,
> and a target “freeze” date (one consensual proposal was that, instead of
> actually freezing the branch, we’d fork it as ‘BRANCH-frozen’ or something
> like that, leaving the branch open for further changes).
> 
> This patch against guix-artwork.git is an attempt at providing a low-tech
> dashboard.  I think it’s a good starting point, and certainly better than
> nothing.  :-)
> 
> What do people think?

I like it.  Thank you!


> I’m also not sure what to do with
> menu entries.  One last thing: we’ll need to list the ‘staging’ branch etc.
> 
> Thoughts?
> 
> Ludo’.

I don’t know, but maybe it should be in the About Guix menu on the
website?

Maybe the Guix manual should refer to https://guix.gnu.org/branches/ when
it is online?


> * website/apps/development/builder.scm,
> website/apps/development/data.scm:
> website/apps/development/templates/branches.scm,
> website/apps/development/templates/components.scm,
> website/static/development/css/branches.css: New files.

s/data.scm:/data.scm,/





> +++ b/website/apps/development/data.scm
> […]]
> +(define branches
> +  (list (branch "master"
> +                #:synopsis (G_ "Main development branch")
> +                #:description
> +                (G_
> +                 `(p "This is the main development branch, which "
> +                     (code "guix pull") " fetches by default.  It should "
> +                     "contain only well-tested packages changes that do not "
> +                     "trigger more than 300 package rebuilds per "
> +                     "architecture.  Run "
> +                     (code ,(G_ (manual-href "guix refresh -l"
> +                                             (G_ "en")
> +                                             (G_ "Invoking-guix-refresh.html")))) " "
> +                     "for an estimate of the number of rebuilds triggered "
> +                     "by a package change.")))
> +        (branch "core-updates"
> +                #:synopsis (G_ "Changes to core packages and build tools")
> +                #:description
> +                (G_
> +                 `(p "This branch receives changes to core packages "
> +                     "that entail of most packages, and changes to "

s/entail of/entail/

Regards,
Florian




Information forwarded to guix-patches@HIDDEN:
bug#49334; Package guix-patches. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 2 Jul 2021 16:29:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 02 12:29:15 2021
Received: from localhost ([127.0.0.1]:36986 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1lzM2U-00079g-HM
	for submit <at> debbugs.gnu.org; Fri, 02 Jul 2021 12:29:15 -0400
Received: from lists.gnu.org ([209.51.188.17]:34384)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1lzM2R-00079X-Pv
 for submit <at> debbugs.gnu.org; Fri, 02 Jul 2021 12:29:13 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:51134)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>) id 1lzM2R-00004t-Ic
 for guix-patches@HIDDEN; Fri, 02 Jul 2021 12:29:11 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:38700)
 by eggs.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <ludo@HIDDEN>)
 id 1lzM2Q-0005D0-TL; Fri, 02 Jul 2021 12:29:11 -0400
Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=42606 helo=gnu.org)
 by fencepost.gnu.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1)
 (envelope-from <ludo@HIDDEN>)
 id 1lzM2Q-0005cr-LQ; Fri, 02 Jul 2021 12:29:10 -0400
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@HIDDEN>
To: guix-patches@HIDDEN
Subject: [PATCH] DRAFT website: Add page listing branches.
Date: Fri,  2 Jul 2021 18:29:04 +0200
Message-Id: <20210702162904.314-1-ludo@HIDDEN>
X-Mailer: git-send-email 2.32.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: submit
Cc: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

TODO:
  - nice CSS
  - menu entry?
  - more branches

* website/apps/development/builder.scm,
website/apps/development/data.scm:
website/apps/development/templates/branches.scm,
website/apps/development/templates/components.scm,
website/static/development/css/branches.css: New files.
* website/haunt.scm: Use development builder.
---
 website/apps/development/builder.scm          | 55 ++++++++++++
 website/apps/development/data.scm             | 89 +++++++++++++++++++
 .../apps/development/templates/branches.scm   | 56 ++++++++++++
 .../apps/development/templates/components.scm | 65 ++++++++++++++
 website/haunt.scm                             |  2 +
 website/static/development/css/branches.css   | 38 ++++++++
 6 files changed, 305 insertions(+)
 create mode 100644 website/apps/development/builder.scm
 create mode 100644 website/apps/development/data.scm
 create mode 100644 website/apps/development/templates/branches.scm
 create mode 100644 website/apps/development/templates/components.scm
 create mode 100644 website/static/development/css/branches.css

Hi Guix!

This is something we discussed at the last Guix Days: having a dashboard
showing the active Git branches, their status, applicable constraints,
and a target “freeze” date (one consensual proposal was that, instead of
actually freezing the branch, we’d fork it as ‘BRANCH-frozen’ or something
like that, leaving the branch open for further changes).

This patch against guix-artwork.git is an attempt at providing a low-tech
dashboard.  I think it’s a good starting point, and certainly better than
nothing.  :-)

What do people think?

Could someone help with CSS (here I copied ‘publications.css’), so that
the thing is pretty and readable?  I’m also not sure what to do with
menu entries.  One last thing: we’ll need to list the ‘staging’ branch etc.

Thoughts?

Ludo’.

diff --git a/website/apps/development/builder.scm b/website/apps/development/builder.scm
new file mode 100644
index 0000000..9e38ceb
--- /dev/null
+++ b/website/apps/development/builder.scm
@@ -0,0 +1,55 @@
+;;; GNU Guix web site
+;;; Copyright © 2021 Ludovic Courtès <ludo@HIDDEN>
+;;;
+;;; This file is part of the GNU Guix web site.
+;;;
+;;; The GNU Guix web site is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU Affero General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; The GNU Guix web site is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU Affero General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU Affero General Public License
+;;; along with the GNU Guix web site.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (apps development builder)
+  #:use-module (apps aux system)
+  #:use-module (apps development data)
+  #:use-module (apps development templates branches)
+  #:use-module (haunt artifact)
+  #:use-module (haunt html)
+  #:use-module (haunt page)
+  #:use-module (haunt utils)
+  #:use-module (apps aux web)
+  #:use-module (apps media utils)
+  #:use-module (srfi srfi-1)
+  #:export (builder))
+
+(define (builder site posts)
+  "Return the list of web resources that compose the app.
+
+   This procedure is a Haunt builder procedure.
+
+   SITE (<site>)
+     A site object that defines all the properties of the website. See
+     Haunt <site> objects for more information.
+
+   POSTS (list of <post>)
+     A list of post objects that represent articles from the blog. See
+     Haunt <post> objects for more information.
+
+   RETURN (list of <artifact> and <page>)
+     A list of objects that represent the web resources of the
+     application. See Haunt <artifact> and <page> objects for more
+     information."
+  (list (branch-list-builder)))
+
+(define (branch-list-builder)
+  "Return a Haunt artifact representing the publications page."
+  (serialized-artifact (url-path-join "branches" "index.html")
+                       (branch-list-t branches)
+                       sxml->html))
diff --git a/website/apps/development/data.scm b/website/apps/development/data.scm
new file mode 100644
index 0000000..48daff5
--- /dev/null
+++ b/website/apps/development/data.scm
@@ -0,0 +1,89 @@
+;;; GNU Guix web site
+;;; Copyright © 2021 Ludovic Courtès <ludo@HIDDEN>
+;;;
+;;; This file is part of the GNU Guix web site.
+;;;
+;;; The GNU Guix web site is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU Affero General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; The GNU Guix web site is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU Affero General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU Affero General Public License
+;;; along with the GNU Guix web site.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (apps development data)
+  #:use-module (apps i18n)
+  #:use-module (apps base templates components)
+  #:use-module (srfi srfi-9)
+  #:use-module (srfi srfi-19)
+  #:export (branch?
+            branch-name
+            branch-synopsis
+            branch-description
+            branch-target-date
+            branch-merge-period
+
+            branch-git-view-url
+            branch-build-status-url
+            branch-build-badge-url
+
+            branches))
+
+(define-record-type <branch>
+  (%branch name synopsis description date period)
+  branch?
+  (name        branch-name)
+  (synopsis    branch-synopsis)
+  (description branch-description)
+  (date        branch-target-date)                ;date
+  (period      branch-merge-period))              ;seconds
+
+(define* (branch name #:key synopsis description target-date merge-period)
+  (%branch name synopsis description target-date merge-period))
+
+(define (branch-git-view-url branch)
+  (string-append "https://git.savannah.gnu.org/cgit/guix.git/log?h="
+                 (branch-name branch)))
+
+(define (branch-build-status-url branch)
+  (string-append "https://ci.guix.gnu.org/jobset/"
+                 (branch-name branch)))
+
+(define (branch-build-badge-url branch)
+  (string-append "https://ci.guix.gnu.org/jobset/"
+                 (branch-name branch) "/badge.svg"))
+
+(define (string->date* str)
+  (string->date str "~Y-~m-~d"))
+
+(define branches
+  (list (branch "master"
+                #:synopsis (G_ "Main development branch")
+                #:description
+                (G_
+                 `(p "This is the main development branch, which "
+                     (code "guix pull") " fetches by default.  It should "
+                     "contain only well-tested packages changes that do not "
+                     "trigger more than 300 package rebuilds per "
+                     "architecture.  Run "
+                     (code ,(G_ (manual-href "guix refresh -l"
+                                             (G_ "en")
+                                             (G_ "Invoking-guix-refresh.html")))) " "
+                     "for an estimate of the number of rebuilds triggered "
+                     "by a package change.")))
+        (branch "core-updates"
+                #:synopsis (G_ "Changes to core packages and build tools")
+                #:description
+                (G_
+                 `(p "This branch receives changes to core packages "
+                     "that entail of most packages, and changes to "
+                     ,(G_ (manual-href "build utilities"
+                                       (G_ "en")
+                                       (G_ "Build-Utilities.html"))) "."))
+                #:target-date (string->date* "2021-07-20")
+                #:merge-period (* 4 30 24 3600))))
diff --git a/website/apps/development/templates/branches.scm b/website/apps/development/templates/branches.scm
new file mode 100644
index 0000000..c834c6d
--- /dev/null
+++ b/website/apps/development/templates/branches.scm
@@ -0,0 +1,56 @@
+;;; GNU Guix web site
+;;; Copyright © 2021 Ludovic Courtès <ludo@HIDDEN>
+;;;
+;;; This file is part of the GNU Guix web site.
+;;;
+;;; The GNU Guix web site is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU Affero General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; The GNU Guix web site is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU Affero General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU Affero General Public License
+;;; along with the GNU Guix web site.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (apps development templates branches)
+  #:use-module (apps base templates theme)
+  #:use-module (apps base types)
+  #:use-module (apps base utils)
+  #:use-module (apps i18n)
+  #:use-module (apps development templates components)
+  #:export (branch-list-t))
+
+(define (branch-list-t branches)
+  "Return the branch page in SHTML."
+  (theme
+   #:title (C_ "webpage title" '("Branching status"))
+   #:description
+   (G_ "Status of active development branches.")
+   #:keywords
+   ;; TRANSLATORS: |-separated list of webpage keywords.
+   (string-split (G_ "Development|Branching") #\|)
+   #:active-menu-item (C_ "website menu" "Branching")
+   #:css (list
+	  (guix-url "static/base/css/page.css")
+	  (guix-url "static/development/css/branches.css"))
+   #:crumbs (list (crumb (C_ "website menu" "Publications") "./"))
+   #:content
+   `(main
+     (section
+      (@ (class "page"))
+      ,(G_ `(h2 "Branching"))
+
+      ,(G_
+        `(p
+          (@ (class "centered-block limit-width"))
+
+          "This page lists currently-active Git development branches."))
+
+      (div
+       (@ (class "publication-list centered-block limit-width"))
+
+       ,@(map branch->shtml branches))))))
diff --git a/website/apps/development/templates/components.scm b/website/apps/development/templates/components.scm
new file mode 100644
index 0000000..d3f9fee
--- /dev/null
+++ b/website/apps/development/templates/components.scm
@@ -0,0 +1,65 @@
+;;; GNU Guix web site
+;;; Copyright © 2021 Ludovic Courtès <ludo@HIDDEN>
+;;;
+;;; This file is part of the GNU Guix web site.
+;;;
+;;; The GNU Guix web site is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU Affero General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; The GNU Guix web site is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU Affero General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU Affero General Public License
+;;; along with the GNU Guix web site.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (apps development templates components)
+  #:use-module (apps aux lists)
+  #:use-module (apps aux web)
+  #:use-module (apps base templates components)
+  #:use-module (apps base utils)
+  #:use-module (apps i18n)
+  #:use-module (apps development data)
+  #:use-module (srfi srfi-19)
+  #:export (branch->shtml))
+
+(define (next-deadline date period)
+  "Return DATE or, if DATE is past, DATE + PERIOD.  DATE must be a SRFI-19
+date and PERIOD is a number of seconds."
+  (let ((now  (current-time time-utc))
+        (then (date->time-utc date)))
+    (if (and (time>? now then)
+             (time> (time-difference now then)
+                    (make-time time-utc 0
+                               (* 2 7 3600 24))))
+        (time-utc->date
+         (make-time time-utc 0
+                    (+ (time-second then) period)))
+        date)))
+
+(define (branch->shtml branch)
+  `(div (@ (class "branch-overview"))
+        (div (@ (class "branch-overview-heading"))
+             (a (@ (href ,(branch-git-view-url branch)))
+                (tt ,(branch-name branch)))
+             (a (@ (href ,(branch-build-status-url branch)))
+                (img (@ (alt ,(G_ "branch build status"))
+                        (src ,(branch-build-badge-url branch))))))
+
+        (div (@ (class "branch-synopsis"))
+             ,(branch-synopsis branch))
+        (div (@ (class "branch-description"))
+             ,(branch-description branch))
+
+        ,@(if (branch-target-date branch)
+              `(,(G_ `(div (@ (class "branch-date"))
+                           "target merge date: "
+                           ,(date->string
+                             (next-deadline (branch-target-date branch)
+                                            (branch-merge-period branch))
+                             (C_ "SRFI-19 data->string format"
+                                 "~Y-~m-~d")))))
+              '())))
diff --git a/website/haunt.scm b/website/haunt.scm
index 01e2af7..78e3806 100644
--- a/website/haunt.scm
+++ b/website/haunt.scm
@@ -8,6 +8,7 @@
              (apps i18n)
              ((apps media builder) #:prefix media:)
 	     ((apps packages builder) #:prefix packages:)
+	     ((apps development builder) #:prefix development:)
 	     (haunt asset)
              (haunt builder assets)
              (haunt reader)
@@ -26,4 +27,5 @@
                         download:builder
                         media:builder
                         packages:builder
+                        development:builder
                         (static-directory "static"))))
diff --git a/website/static/development/css/branches.css b/website/static/development/css/branches.css
new file mode 100644
index 0000000..2581793
--- /dev/null
+++ b/website/static/development/css/branches.css
@@ -0,0 +1,38 @@
+.branch-overview,
+.branch-overview:link,
+.branch-overview:visited {
+    display: block;
+    border-image: linear-gradient(to right, gray, transparent) 1;
+    border-style: none none solid none;
+    border-width: thin thick;
+    color: #4D4D4D;
+    padding: 20px 70px 20px 10px;
+    transition: border-width .2s cubic-bezier(.22,.61,.36,1);
+}
+
+.branch-overview:active,
+.branch-overview:focus,
+.branch-overview:hover {
+    background-color: gold;
+    background-image: url("/static/base/img/link-arrow-shaper.svg");
+    background-position: right;
+    background-repeat: no-repeat;
+    background-size: auto 100%;
+    border-image: linear-gradient(to right, #333, white, white) 1;
+    border-style: none none solid solid;
+}
+
+.branch-overview-heading {
+    margin-bottom: 10px;
+}
+
+.publication-info {
+    margin-bottom: 0px;
+}
+
+.scientific-mark {
+    display: inline-block;
+    cursor: help;
+    height: 28px;
+    width: 28px;
+}
-- 
2.32.0





Acknowledgement sent to Ludovic Courtès <ludo@HIDDEN>:
New bug report received and forwarded. Copy sent to guix-patches@HIDDEN. Full text available.
Report forwarded to guix-patches@HIDDEN:
bug#49334; Package guix-patches. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Tue, 6 Jul 2021 10:45:01 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.