2022-07-03 12:11:29 +00:00
|
|
|
|
#!@GUILE@ \
|
|
|
|
|
--no-auto-compile -s
|
|
|
|
|
!#
|
|
|
|
|
|
|
|
|
|
;;; GNU Guix --- Functional package management for GNU
|
|
|
|
|
;;; Copyright © 2022 Ricardo Wurmus <rekado@elephly.net>
|
2022-09-07 15:05:00 +00:00
|
|
|
|
;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
|
2022-07-03 12:11:29 +00:00
|
|
|
|
;;;
|
|
|
|
|
;;; This file is part of GNU Guix.
|
|
|
|
|
;;;
|
|
|
|
|
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
|
|
|
|
;;; under the terms of the GNU General Public License as published by
|
|
|
|
|
;;; the Free Software Foundation; either version 3 of the License, or (at
|
|
|
|
|
;;; your option) any later version.
|
|
|
|
|
;;;
|
|
|
|
|
;;; GNU Guix 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 General Public License for more details.
|
|
|
|
|
;;;
|
|
|
|
|
;;; You should have received a copy of the GNU General Public License
|
|
|
|
|
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
|
|
;;; Commentary:
|
|
|
|
|
|
2022-09-07 15:05:00 +00:00
|
|
|
|
;; This code defines development teams and team members, as well as their
|
|
|
|
|
;; scope.
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
;;; Code:
|
|
|
|
|
|
|
|
|
|
(use-modules (srfi srfi-1)
|
|
|
|
|
(srfi srfi-9)
|
2022-09-07 15:05:00 +00:00
|
|
|
|
(srfi srfi-26)
|
2022-07-03 12:11:29 +00:00
|
|
|
|
(ice-9 format)
|
2022-09-09 15:27:23 +00:00
|
|
|
|
(ice-9 regex)
|
2022-07-03 12:11:29 +00:00
|
|
|
|
(ice-9 match)
|
2022-09-07 15:05:00 +00:00
|
|
|
|
(guix ui)
|
|
|
|
|
(git))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-record-type <team>
|
2022-09-07 15:05:00 +00:00
|
|
|
|
(make-team id name description members scope)
|
2022-07-03 12:11:29 +00:00
|
|
|
|
team?
|
|
|
|
|
(id team-id)
|
|
|
|
|
(name team-name)
|
|
|
|
|
(description team-description)
|
2022-09-07 15:05:00 +00:00
|
|
|
|
(members team-members set-team-members!)
|
|
|
|
|
(scope team-scope))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-record-type <person>
|
|
|
|
|
(make-person name email)
|
|
|
|
|
person?
|
|
|
|
|
(name person-name)
|
|
|
|
|
(email person-email))
|
|
|
|
|
|
|
|
|
|
(define* (person name #:optional email)
|
|
|
|
|
(make-person name email))
|
|
|
|
|
|
2022-09-07 15:05:00 +00:00
|
|
|
|
(define* (team id #:key name description (members '())
|
|
|
|
|
(scope '()))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
(make-team id
|
|
|
|
|
(or name (symbol->string id))
|
|
|
|
|
description
|
2022-09-07 15:05:00 +00:00
|
|
|
|
members
|
|
|
|
|
scope))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define %teams
|
|
|
|
|
(make-hash-table))
|
|
|
|
|
|
|
|
|
|
(define-syntax define-team
|
|
|
|
|
(lambda (x)
|
|
|
|
|
(syntax-case x ()
|
|
|
|
|
((_ id value)
|
|
|
|
|
#`(begin
|
|
|
|
|
(define-public id value)
|
|
|
|
|
(hash-set! %teams 'id id))))))
|
|
|
|
|
|
|
|
|
|
(define-syntax-rule (define-member person teams ...)
|
|
|
|
|
(let ((p person))
|
|
|
|
|
(for-each (lambda (team-id)
|
|
|
|
|
(let ((team
|
|
|
|
|
(hash-ref %teams team-id
|
|
|
|
|
(lambda ()
|
|
|
|
|
(error (format #false
|
|
|
|
|
"Unknown team ~a for ~a~%"
|
|
|
|
|
team-id p))))))
|
|
|
|
|
(set-team-members!
|
|
|
|
|
team (cons p (team-members team)))))
|
|
|
|
|
(quote (teams ...)))))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(define-team python
|
|
|
|
|
(team 'python
|
|
|
|
|
#:name "Python team"
|
|
|
|
|
#:description
|
2022-09-25 10:41:33 +00:00
|
|
|
|
"Python, Python packages, the \"pypi\" importer, and the python-build-system."
|
|
|
|
|
#:scope
|
|
|
|
|
(list "gnu/packages/django.scm"
|
|
|
|
|
"gnu/packages/jupyter.scm"
|
|
|
|
|
;; Match haskell.scm and haskell-*.scm.
|
|
|
|
|
(make-regexp "^gnu/packages/python(-.+|)\\.scm$")
|
|
|
|
|
"gnu/packages/sphinx.scm"
|
|
|
|
|
"gnu/packages/tryton.scm"
|
2022-11-05 01:34:49 +00:00
|
|
|
|
"guix/build/pyproject-build-system.scm"
|
|
|
|
|
"guix/build-system/pyproject.scm"
|
2022-09-25 10:41:33 +00:00
|
|
|
|
"guix/build/python-build-system.scm"
|
|
|
|
|
"guix/build-system/python.scm"
|
|
|
|
|
"guix/import/pypi.scm"
|
|
|
|
|
"guix/scripts/import/pypi.scm"
|
|
|
|
|
"tests/pypi.scm")))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-team haskell
|
|
|
|
|
(team 'haskell
|
|
|
|
|
#:name "Haskell team"
|
|
|
|
|
#:description
|
|
|
|
|
"GHC, Hugs, Haskell packages, the \"hackage\" and \"stackage\" importers, and
|
2022-09-25 10:32:40 +00:00
|
|
|
|
the haskell-build-system."
|
|
|
|
|
#:scope
|
|
|
|
|
(list "gnu/packages/dhall.scm"
|
|
|
|
|
;; Match haskell.scm and haskell-*.scm.
|
|
|
|
|
(make-regexp "^gnu/packages/haskell(-.+|)\\.scm$")
|
|
|
|
|
"gnu/packages/purescript.scm"
|
|
|
|
|
"guix/build/haskell-build-system.scm"
|
|
|
|
|
"guix/build-system/haskell.scm"
|
|
|
|
|
"guix/import/cabal.scm"
|
|
|
|
|
"guix/import/hackage.scm"
|
|
|
|
|
"guix/import/stackage.scm"
|
|
|
|
|
"guix/scripts/import/hackage.scm")))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-team r
|
|
|
|
|
(team 'r
|
|
|
|
|
#:name "R team"
|
|
|
|
|
#:description
|
|
|
|
|
"The R language, CRAN and Bioconductor repositories, the \"cran\" importer,
|
2022-09-27 18:00:27 +00:00
|
|
|
|
and the r-build-system."
|
|
|
|
|
#:scope (list "gnu/packages/bioconductor.scm"
|
|
|
|
|
"gnu/packages/cran.scm"
|
|
|
|
|
"guix/build/r-build-system.scm"
|
|
|
|
|
"guix/build-system/r.scm"
|
|
|
|
|
"guix/import/cran.scm"
|
|
|
|
|
"guix/scripts/import/cran.scm"
|
|
|
|
|
"tests/cran.scm")))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-team julia
|
|
|
|
|
(team 'julia
|
|
|
|
|
#:name "Julia team"
|
|
|
|
|
#:description
|
2022-09-27 18:00:27 +00:00
|
|
|
|
"The Julia language, Julia packages, and the julia-build-system."
|
|
|
|
|
#:scope (list (make-regexp "^gnu/packages/julia(-.+|)\\.scm$")
|
|
|
|
|
"guix/build/julia-build-system.scm"
|
|
|
|
|
"guix/build-system/julia.scm")))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-team ocaml
|
|
|
|
|
(team 'ocaml
|
|
|
|
|
#:name "OCaml and Dune team"
|
|
|
|
|
#:description
|
|
|
|
|
"The OCaml language, the Dune build system, OCaml packages, the \"opam\"
|
2022-09-25 12:31:30 +00:00
|
|
|
|
importer, and the ocaml-build-system."
|
|
|
|
|
#:scope
|
|
|
|
|
(list "gnu/packages/ocaml.scm"
|
|
|
|
|
"gnu/packages/coq.scm"
|
|
|
|
|
"guix/build/ocaml-build-system.scm"
|
|
|
|
|
"guix/build/dune-build-system.scm"
|
|
|
|
|
"guix/build-system/ocaml.scm"
|
|
|
|
|
"guix/build-system/dune.scm"
|
|
|
|
|
"guix/import/opam.scm"
|
|
|
|
|
"guix/scripts/import/opam.scm"
|
|
|
|
|
"tests/opam.scm")))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-team java
|
|
|
|
|
(team 'java
|
|
|
|
|
#:name "Java and Maven team"
|
|
|
|
|
#:description
|
|
|
|
|
"The JDK and JRE, the Maven build system, Java packages, the ant-build-system,
|
2022-09-25 12:35:39 +00:00
|
|
|
|
and the maven-build-system."
|
|
|
|
|
#:scope
|
|
|
|
|
(list ;; Match java.scm and java-*.scm.
|
|
|
|
|
(make-regexp "^gnu/packages/java(-.+|)\\.scm$")
|
|
|
|
|
;; Match maven.scm and maven-*.scm
|
|
|
|
|
(make-regexp "^gnu/packages/maven(-.+|)\\.scm$")
|
|
|
|
|
"guix/build/ant-build-system.scm"
|
|
|
|
|
"guix/build/java-utils.scm"
|
|
|
|
|
"guix/build/maven-build-system.scm"
|
|
|
|
|
;; The maven directory
|
|
|
|
|
(make-regexp "^guix/build/maven/")
|
|
|
|
|
"guix/build-system/ant.scm"
|
|
|
|
|
"guix/build-system/maven.scm")))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
2022-07-03 13:56:54 +00:00
|
|
|
|
(define-team science
|
|
|
|
|
(team 'science
|
|
|
|
|
#:name "Science team"))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-team emacs
|
|
|
|
|
(team 'emacs
|
2022-09-25 18:21:36 +00:00
|
|
|
|
#:name "Emacs team"
|
|
|
|
|
#:description "The extensible, customizable text editor and its
|
|
|
|
|
ecosystem."
|
|
|
|
|
#:scope (list (make-regexp "^gnu/packages/emacs(-.+|)\\.scm$")
|
|
|
|
|
"guix/build/emacs-build-system.scm"
|
|
|
|
|
"guix/build/emacs-utils.scm"
|
2022-09-27 18:00:27 +00:00
|
|
|
|
"guix/build-system/emacs.scm"
|
|
|
|
|
"guix/import/elpa.scm"
|
|
|
|
|
"guix/scripts/import/elpa.scm"
|
|
|
|
|
"tests/elpa.scm")))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-team lisp
|
|
|
|
|
(team 'lisp
|
2022-09-26 09:10:24 +00:00
|
|
|
|
#:name "Lisp team"
|
|
|
|
|
#:description
|
|
|
|
|
"Common Lisp and similar languages, Common Lisp packages and the
|
|
|
|
|
asdf-build-system."
|
|
|
|
|
#:scope (list (make-regexp "^gnu/packages/lisp(-.+|)\\.scm$")
|
|
|
|
|
"guix/build/asdf-build-system.scm"
|
|
|
|
|
"guix/build/lisp-utils.scm"
|
|
|
|
|
"guix/build-system/asdf.scm")))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-team ruby
|
|
|
|
|
(team 'ruby
|
2022-09-27 18:00:27 +00:00
|
|
|
|
#:name "Ruby team"
|
|
|
|
|
#:scope (list "gnu/packages/ruby.scm"
|
|
|
|
|
"guix/build/ruby-build-system.scm"
|
|
|
|
|
"guix/build-system/ruby.scm"
|
|
|
|
|
"guix/import/gem.scm"
|
|
|
|
|
"guix/scripts/import/gem.scm"
|
|
|
|
|
"tests/gem.scm")))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-team go
|
|
|
|
|
(team 'go
|
2022-09-27 18:00:27 +00:00
|
|
|
|
#:name "Go team"
|
|
|
|
|
#:scope (list "gnu/packages/golang.scm"
|
|
|
|
|
"guix/build/go-build-system.scm"
|
|
|
|
|
"guix/build-system/go.scm"
|
|
|
|
|
"guix/import/go.scm"
|
|
|
|
|
"guix/scripts/import/go.scm"
|
|
|
|
|
"tests/go.scm")))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-team embedded-bootstrap
|
|
|
|
|
(team 'embedded-bootstrap
|
|
|
|
|
#:name "Embedded / Bootstrap"))
|
|
|
|
|
|
|
|
|
|
(define-team rust
|
|
|
|
|
(team 'rust
|
2022-09-27 18:00:27 +00:00
|
|
|
|
#:name "Rust"
|
|
|
|
|
#:scope (list (make-regexp "^gnu/packages/(crates|rust)(-.+|)\\.scm$")
|
|
|
|
|
"guix/build/cargo-build-system.scm"
|
|
|
|
|
"guix/build/cargo-utils.scm"
|
|
|
|
|
"guix/build-system/cargo.scm"
|
|
|
|
|
"guix/import/crate.scm"
|
|
|
|
|
"guix/scripts/import/crate.scm"
|
|
|
|
|
"tests/crate.scm")))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-team kernel
|
|
|
|
|
(team 'kernel
|
2022-09-27 18:00:27 +00:00
|
|
|
|
#:name "Linux-libre kernel team"
|
|
|
|
|
#:scope (list "gnu/build/linux-modules.scm"
|
|
|
|
|
"gnu/packages/linux.scm"
|
|
|
|
|
"gnu/tests/linux-modules.scm"
|
|
|
|
|
"guix/build/linux-module-build-system.scm"
|
|
|
|
|
"guix/build-system/linux-module.scm")))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-team core
|
|
|
|
|
(team 'core
|
2022-09-07 15:09:52 +00:00
|
|
|
|
#:name "Core / Tools / Internals"
|
|
|
|
|
#:scope
|
|
|
|
|
(list "guix/avahi.scm"
|
|
|
|
|
"guix/base16.scm"
|
|
|
|
|
"guix/base32.scm"
|
|
|
|
|
"guix/base64.scm"
|
|
|
|
|
"guix/bzr-download.scm"
|
|
|
|
|
"guix/cache.scm"
|
|
|
|
|
"guix/channels.scm"
|
|
|
|
|
"guix/ci.scm"
|
|
|
|
|
"guix/colors.scm"
|
|
|
|
|
"guix/combinators.scm"
|
|
|
|
|
"guix/config.scm"
|
|
|
|
|
"guix/cpio.scm"
|
|
|
|
|
"guix/cpu.scm"
|
|
|
|
|
"guix/cve.scm"
|
|
|
|
|
"guix/cvs-download.scm"
|
|
|
|
|
"guix/deprecation.scm"
|
|
|
|
|
"guix/derivations.scm"
|
|
|
|
|
"guix/describe.scm"
|
|
|
|
|
"guix/diagnostics.scm"
|
|
|
|
|
"guix/discovery.scm"
|
|
|
|
|
"guix/docker.scm"
|
|
|
|
|
"guix/download.scm"
|
|
|
|
|
"guix/elf.scm"
|
|
|
|
|
"guix/ftp-client.scm"
|
|
|
|
|
"guix/gexp.scm"
|
|
|
|
|
"guix/git-authenticate.scm"
|
|
|
|
|
"guix/git-download.scm"
|
|
|
|
|
"guix/git.scm"
|
|
|
|
|
"guix/glob.scm"
|
|
|
|
|
"guix/gnu-maintenance.scm"
|
|
|
|
|
"guix/gnupg.scm"
|
|
|
|
|
"guix/grafts.scm"
|
|
|
|
|
"guix/graph.scm"
|
|
|
|
|
"guix/hash.scm"
|
|
|
|
|
"guix/hg-download.scm"
|
|
|
|
|
"guix/http-client.scm"
|
|
|
|
|
"guix/i18n.scm"
|
|
|
|
|
"guix/inferior.scm"
|
|
|
|
|
"guix/ipfs.scm"
|
|
|
|
|
"guix/least-authority.scm"
|
|
|
|
|
"guix/licenses.scm"
|
|
|
|
|
"guix/lint.scm"
|
|
|
|
|
"guix/man-db.scm"
|
|
|
|
|
"guix/memoization.scm"
|
|
|
|
|
"guix/modules.scm"
|
|
|
|
|
"guix/monad-repl.scm"
|
|
|
|
|
"guix/monads.scm"
|
|
|
|
|
"guix/narinfo.scm"
|
|
|
|
|
"guix/nar.scm"
|
|
|
|
|
"guix/openpgp.scm"
|
|
|
|
|
"guix/packages.scm"
|
|
|
|
|
"guix/pki.scm"
|
|
|
|
|
"guix/platform.scm"
|
|
|
|
|
"guix/profiles.scm"
|
|
|
|
|
"guix/profiling.scm"
|
|
|
|
|
"guix/progress.scm"
|
|
|
|
|
"guix/quirks.scm"
|
|
|
|
|
"guix/read-print.scm"
|
|
|
|
|
"guix/records.scm"
|
|
|
|
|
"guix/remote.scm"
|
|
|
|
|
"guix/repl.scm"
|
|
|
|
|
"guix/search-paths.scm"
|
|
|
|
|
"guix/self.scm"
|
|
|
|
|
"guix/serialization.scm"
|
|
|
|
|
"guix/sets.scm"
|
|
|
|
|
"guix/ssh.scm"
|
|
|
|
|
"guix/status.scm"
|
|
|
|
|
"guix/store.scm"
|
|
|
|
|
"guix/substitutes.scm"
|
|
|
|
|
"guix/svn-download.scm"
|
|
|
|
|
"guix/swh.scm"
|
|
|
|
|
"guix/tests.scm"
|
|
|
|
|
"guix/transformations.scm"
|
|
|
|
|
"guix/ui.scm"
|
|
|
|
|
"guix/upstream.scm"
|
|
|
|
|
"guix/utils.scm"
|
|
|
|
|
"guix/workers.scm"
|
|
|
|
|
(make-regexp "^guix/platforms/")
|
|
|
|
|
(make-regexp "^guix/scripts/")
|
|
|
|
|
(make-regexp "^guix/store/"))))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-team games
|
|
|
|
|
(team 'games
|
2022-09-25 18:52:35 +00:00
|
|
|
|
#:name "Games and Toys"
|
|
|
|
|
#:description "Packaging programs for amusement."
|
|
|
|
|
#:scope (list "gnu/packages/games.scm"
|
|
|
|
|
"gnu/packages/game-development.scm"
|
|
|
|
|
"gnu/packages/minetest.scm"
|
|
|
|
|
"gnu/packages/esolangs.scm" ; granted, rather niche
|
|
|
|
|
"gnu/packages/motti.scm"
|
|
|
|
|
"guix/build/minetest-build-system.scm")))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-team translations
|
|
|
|
|
(team 'translations
|
2022-09-27 18:00:27 +00:00
|
|
|
|
#:name "Translations"
|
2022-09-29 03:20:58 +00:00
|
|
|
|
#:scope (list "etc/news.scm"
|
|
|
|
|
(make-regexp "^po/"))))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-team installer
|
|
|
|
|
(team 'installer
|
2022-09-07 15:10:16 +00:00
|
|
|
|
#:name "Installer script and system installer"
|
2022-09-27 18:00:27 +00:00
|
|
|
|
#:scope (list (make-regexp "^gnu/installer(\\.scm$|/)"))))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-team home
|
|
|
|
|
(team 'home
|
2022-09-27 18:00:27 +00:00
|
|
|
|
#:name "Team for \"Guix Home\""
|
|
|
|
|
#:scope (list (make-regexp "^(gnu|guix/scripts)/home(\\.scm$|/)")
|
|
|
|
|
"tests/guix-home.sh"
|
|
|
|
|
"tests/home-import.scm"
|
|
|
|
|
"tests/home-services.scm")))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define-team mentors
|
|
|
|
|
(team 'mentors
|
|
|
|
|
#:name "Mentors"
|
|
|
|
|
#:description
|
|
|
|
|
"A group of mentors who chaperone contributions by newcomers."))
|
|
|
|
|
|
2022-07-13 18:03:35 +00:00
|
|
|
|
(define-team mozilla
|
|
|
|
|
(team 'mozilla
|
|
|
|
|
#:name "Mozilla"
|
2022-08-05 14:41:03 +00:00
|
|
|
|
#:description
|
2022-07-13 18:03:35 +00:00
|
|
|
|
"Taking care about Icecat and Icedove, built from Mozilla Firefox
|
2022-09-27 18:00:27 +00:00
|
|
|
|
and Thunderbird."
|
|
|
|
|
#:scope (list "gnu/packages/gnuzilla.scm")))
|
2022-07-13 18:03:35 +00:00
|
|
|
|
|
2022-08-27 18:55:43 +00:00
|
|
|
|
(define-team racket
|
|
|
|
|
(team 'racket
|
|
|
|
|
#:name "Racket team"
|
|
|
|
|
#:description
|
|
|
|
|
"The Racket language and Racket-based languages, Racket packages,
|
|
|
|
|
Racket's variant of Chez Scheme, and development of a Racket build system and
|
2022-09-27 18:00:27 +00:00
|
|
|
|
importer."
|
|
|
|
|
#:scope (list "gnu/packages/racket.scm")))
|
2022-08-27 18:55:43 +00:00
|
|
|
|
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
2022-07-09 04:01:31 +00:00
|
|
|
|
(define-member (person "Thiago Jung Bauermann"
|
|
|
|
|
"bauermann@kolabnow.com")
|
|
|
|
|
embedded-bootstrap translations)
|
|
|
|
|
|
2022-08-05 14:41:03 +00:00
|
|
|
|
(define-member (person "Eric Bavier"
|
|
|
|
|
"bavier@posteo.net")
|
|
|
|
|
science)
|
|
|
|
|
|
2022-07-07 18:06:49 +00:00
|
|
|
|
(define-member (person "Lars-Dominik Braun"
|
|
|
|
|
"lars@6xq.net")
|
|
|
|
|
python haskell)
|
|
|
|
|
|
2022-07-13 18:06:26 +00:00
|
|
|
|
(define-member (person "Jonathan Brielmaier"
|
|
|
|
|
"jonathan.brielmaier@web.de")
|
|
|
|
|
mozilla)
|
|
|
|
|
|
2022-07-03 12:11:29 +00:00
|
|
|
|
(define-member (person "Ludovic Courtès"
|
|
|
|
|
"ludo@gnu.org")
|
|
|
|
|
core home embedded-bootstrap mentors)
|
|
|
|
|
|
2022-07-03 13:56:54 +00:00
|
|
|
|
(define-member (person "Andreas Enge"
|
|
|
|
|
"andreas@enge.fr")
|
|
|
|
|
science)
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
2022-07-08 14:58:04 +00:00
|
|
|
|
(define-member (person "Björn Höfling"
|
|
|
|
|
"bjoern.hoefling@bjoernhoefling.de")
|
|
|
|
|
java)
|
|
|
|
|
|
2022-07-04 02:49:32 +00:00
|
|
|
|
(define-member (person "Leo Famulari"
|
|
|
|
|
"leo@famulari.name")
|
|
|
|
|
kernel)
|
|
|
|
|
|
2022-07-03 19:01:17 +00:00
|
|
|
|
(define-member (person "Efraim Flashner"
|
|
|
|
|
"efraim@flashner.co.il")
|
|
|
|
|
embedded-bootstrap julia rust science)
|
|
|
|
|
|
2022-07-07 14:34:48 +00:00
|
|
|
|
(define-member (person "jgart"
|
|
|
|
|
"jgart@dismail.de")
|
|
|
|
|
python lisp mentors)
|
|
|
|
|
|
2022-09-09 16:00:12 +00:00
|
|
|
|
(define-member (person "Guillaume Le Vaillant"
|
|
|
|
|
"glv@posteo.net")
|
|
|
|
|
lisp)
|
|
|
|
|
|
2022-07-06 20:12:47 +00:00
|
|
|
|
(define-member (person "Julien Lepiller"
|
|
|
|
|
"julien@lepiller.eu")
|
|
|
|
|
java ocaml translations)
|
|
|
|
|
|
2022-08-27 18:55:44 +00:00
|
|
|
|
(define-member (person "Philip McGrath"
|
|
|
|
|
"philip@philipmcgrath.com")
|
|
|
|
|
racket)
|
|
|
|
|
|
2022-08-05 15:14:59 +00:00
|
|
|
|
(define-member (person "Mathieu Othacehe"
|
|
|
|
|
"othacehe@gnu.org")
|
2022-08-11 12:46:21 +00:00
|
|
|
|
core installer mentors)
|
2022-08-05 15:14:59 +00:00
|
|
|
|
|
2022-07-06 20:51:14 +00:00
|
|
|
|
(define-member (person "Florian Pelz"
|
|
|
|
|
"pelzflorian@pelzflorian.de")
|
|
|
|
|
translations)
|
|
|
|
|
|
2022-07-03 15:10:32 +00:00
|
|
|
|
(define-member (person "Liliana Marie Prikler"
|
|
|
|
|
"liliana.prikler@gmail.com")
|
|
|
|
|
emacs games)
|
|
|
|
|
|
2022-07-03 15:08:36 +00:00
|
|
|
|
(define-member (person "Ricardo Wurmus"
|
|
|
|
|
"rekado@elephly.net")
|
|
|
|
|
r core mentors)
|
|
|
|
|
|
2022-07-08 22:36:24 +00:00
|
|
|
|
(define-member (person "Christopher Baines"
|
|
|
|
|
"mail@cbaines.net")
|
|
|
|
|
core mentors ruby)
|
|
|
|
|
|
2022-09-13 09:34:49 +00:00
|
|
|
|
(define-member (person "Andrew Tropin"
|
|
|
|
|
"andrew@trop.in")
|
|
|
|
|
home emacs)
|
|
|
|
|
|
2022-09-26 17:14:51 +00:00
|
|
|
|
(define-member (person "pukkamustard"
|
|
|
|
|
"pukkamustard@posteo.net")
|
|
|
|
|
ocaml)
|
|
|
|
|
|
2022-09-26 14:26:36 +00:00
|
|
|
|
(define-member (person "Josselin Poiret"
|
|
|
|
|
"dev@jpoiret.xyz")
|
|
|
|
|
core installer)
|
|
|
|
|
|
2022-09-27 18:00:28 +00:00
|
|
|
|
(define-member (person "("
|
|
|
|
|
"paren@disroot.org")
|
|
|
|
|
home mentors)
|
|
|
|
|
|
2022-09-27 10:33:36 +00:00
|
|
|
|
(define-member (person "Simon Tournier"
|
|
|
|
|
"zimon.toutoune@gmail.com")
|
|
|
|
|
julia core mentors)
|
|
|
|
|
|
2022-11-12 09:09:40 +00:00
|
|
|
|
(define-member (person "Raghav Gururajan"
|
|
|
|
|
"rg@raghavgururajan.name")
|
|
|
|
|
mentors)
|
|
|
|
|
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define (find-team name)
|
|
|
|
|
(or (hash-ref %teams (string->symbol name))
|
|
|
|
|
(error (format #false
|
|
|
|
|
"no such team: ~a~%" name))))
|
|
|
|
|
|
2022-09-07 15:05:00 +00:00
|
|
|
|
(define (find-team-by-scope files)
|
|
|
|
|
"Return the team(s) which scope matches at least one of the FILES, as list
|
|
|
|
|
of file names as string."
|
|
|
|
|
(hash-fold
|
|
|
|
|
(lambda (key team acc)
|
|
|
|
|
(if (any (lambda (file)
|
2022-09-09 15:27:23 +00:00
|
|
|
|
(any (match-lambda
|
|
|
|
|
((? string? scope)
|
|
|
|
|
(string=? scope file))
|
|
|
|
|
((? regexp? scope)
|
|
|
|
|
(regexp-exec scope file)))
|
2022-09-07 15:05:00 +00:00
|
|
|
|
(team-scope team)))
|
|
|
|
|
files)
|
|
|
|
|
(cons team acc)
|
|
|
|
|
acc))
|
|
|
|
|
'()
|
|
|
|
|
%teams))
|
|
|
|
|
|
2022-07-03 12:11:29 +00:00
|
|
|
|
(define (cc . teams)
|
|
|
|
|
"Return arguments for `git send-email' to notify the members of the given
|
|
|
|
|
TEAMS when a patch is received by Debbugs."
|
|
|
|
|
(format #true
|
|
|
|
|
"~{--add-header=\"X-Debbugs-Cc: ~a\"~^ ~}"
|
|
|
|
|
(map person-email
|
|
|
|
|
(delete-duplicates (append-map team-members teams) equal?))))
|
|
|
|
|
|
|
|
|
|
(define* (list-members team #:optional port (prefix ""))
|
|
|
|
|
"Print the members of the given TEAM."
|
|
|
|
|
(define port* (or port (current-output-port)))
|
|
|
|
|
(for-each
|
|
|
|
|
(lambda (member)
|
|
|
|
|
(format port*
|
|
|
|
|
"~a~a <~a>~%"
|
|
|
|
|
prefix
|
|
|
|
|
(person-name member)
|
|
|
|
|
(person-email member)))
|
2022-10-20 13:28:12 +00:00
|
|
|
|
(sort
|
|
|
|
|
(team-members team)
|
|
|
|
|
(lambda (m1 m2) (string<? (person-name m1) (person-name m2))))))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(define (list-teams)
|
2022-09-07 15:05:00 +00:00
|
|
|
|
"Print all teams, their scope and their members."
|
2022-07-03 12:11:29 +00:00
|
|
|
|
(define port* (current-output-port))
|
|
|
|
|
(define width* (%text-width))
|
2022-10-20 13:28:13 +00:00
|
|
|
|
(for-each
|
|
|
|
|
(lambda (team)
|
2022-07-03 12:11:29 +00:00
|
|
|
|
(format port*
|
|
|
|
|
"\
|
|
|
|
|
id: ~a
|
|
|
|
|
name: ~a
|
|
|
|
|
description: ~a
|
2022-09-07 15:05:00 +00:00
|
|
|
|
~amembers:
|
2022-07-03 12:11:29 +00:00
|
|
|
|
"
|
|
|
|
|
(team-id team)
|
|
|
|
|
(team-name team)
|
|
|
|
|
(or (and=> (team-description team)
|
|
|
|
|
(lambda (text)
|
|
|
|
|
(string->recutils
|
|
|
|
|
(fill-paragraph text width*
|
|
|
|
|
(string-length "description: ")))))
|
2022-09-07 15:05:00 +00:00
|
|
|
|
"<none>")
|
|
|
|
|
(match (team-scope team)
|
|
|
|
|
(() "")
|
|
|
|
|
(scope (format #f "scope: ~{~s ~}~%" scope))))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
(list-members team port* "+ ")
|
|
|
|
|
(newline))
|
2022-10-20 13:28:13 +00:00
|
|
|
|
(sort
|
|
|
|
|
(hash-map->list (lambda (key value) value) %teams)
|
|
|
|
|
(lambda (team1 team2)
|
|
|
|
|
(string<? (symbol->string (team-id team1))
|
|
|
|
|
(symbol->string (team-id team2)))))))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
2022-09-07 15:05:00 +00:00
|
|
|
|
|
|
|
|
|
(define (diff-revisions rev-start rev-end)
|
|
|
|
|
"Return the list of added, modified or removed files between REV-START
|
|
|
|
|
and REV-END, two git revision strings."
|
|
|
|
|
(let* ((repository (repository-open (getcwd)))
|
|
|
|
|
(commit1 (commit-lookup repository
|
|
|
|
|
(object-id
|
|
|
|
|
(revparse-single repository rev-start))))
|
|
|
|
|
(commit2 (commit-lookup repository
|
|
|
|
|
(object-id
|
|
|
|
|
(revparse-single repository rev-end))))
|
|
|
|
|
(diff (diff-tree-to-tree repository
|
|
|
|
|
(commit-tree commit1)
|
|
|
|
|
(commit-tree commit2)))
|
|
|
|
|
(files '()))
|
|
|
|
|
(diff-foreach
|
|
|
|
|
diff
|
|
|
|
|
(lambda (delta progress)
|
|
|
|
|
(set! files
|
|
|
|
|
(cons (diff-file-path (diff-delta-old-file delta)) files))
|
|
|
|
|
0)
|
|
|
|
|
(const 0)
|
|
|
|
|
(const 0)
|
|
|
|
|
(const 0))
|
|
|
|
|
files))
|
|
|
|
|
|
|
|
|
|
|
2022-07-03 12:11:29 +00:00
|
|
|
|
(define (main . args)
|
|
|
|
|
(match args
|
|
|
|
|
(("cc" . team-names)
|
|
|
|
|
(apply cc (map find-team team-names)))
|
2022-09-07 15:05:00 +00:00
|
|
|
|
(("cc-members" rev-start rev-end)
|
|
|
|
|
(apply cc (find-team-by-scope
|
|
|
|
|
(diff-revisions rev-start rev-end))))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
(("list-teams" . args)
|
|
|
|
|
(list-teams))
|
|
|
|
|
(("list-members" . team-names)
|
|
|
|
|
(for-each
|
|
|
|
|
(lambda (team-name)
|
|
|
|
|
(list-members (find-team team-name)))
|
|
|
|
|
team-names))
|
|
|
|
|
(anything
|
|
|
|
|
(format (current-error-port)
|
2022-10-27 15:09:09 +00:00
|
|
|
|
"Usage: etc/teams.scm <command> [<args>]
|
|
|
|
|
|
|
|
|
|
Commands:
|
|
|
|
|
cc <team-name> get git send-email flags for cc-ing <team-name>
|
|
|
|
|
cc-members <start> <end> cc teams related to files changed between revisions
|
|
|
|
|
list-teams list teams and their members
|
|
|
|
|
list-members <team-name> list members belonging to <team-name>~%"))))
|
2022-07-03 12:11:29 +00:00
|
|
|
|
|
|
|
|
|
(apply main (cdr (command-line)))
|