~ruther/guix-local

80554b297bf56fe03579ebecb24536b0e76ee5e7 — Giacomo Leidi 8 months ago 98868ea
teams: Add BEAM team.

* CODEOWNERS: Regenerate.
* etc/teams.scm (beam): New variable.
("Giacomo Leidi"): Add to BEAM team.
* etc/teams/beam/elixir-manifest.scm: New file.
* etc/teams/beam/erlang-manifest.scm: New file.

Change-Id: I0a42ef400f2d63aac5672d25277aabfca0e6fe28
Reviewed-by: Hartmut Goebel <h.goebel@crazy-compilers.com>
Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
4 files changed, 145 insertions(+), 1 deletions(-)

M CODEOWNERS
M etc/teams.scm
A etc/teams/beam/elixir-manifest.scm
A etc/teams/beam/erlang-manifest.scm
M CODEOWNERS => CODEOWNERS +9 -0
@@ 12,6 12,15 @@ gnu/packages/audio\.scm                            @guix/audio
gnu/packages/fluidplug\.scm                        @guix/audio
gnu/packages/xiph\.scm                             @guix/audio

gnu/packages/elixir(-.+|)\.scm$                    @guix/beam
guix/build/mix-build-system\.scm                   @guix/beam
guix/build-system/mix\.scm                         @guix/beam
gnu/packages/erlang(-.+|)\.scm$                    @guix/beam
guix/build/rebar-build-system\.scm                 @guix/beam
guix/build-system/rebar\.scm                       @guix/beam
guix/import/hexpm\.scm                             @guix/beam
guix/scripts/import/hexpm\.scm                     @guix/beam

gnu/packages/commencement\.scm                     @guix/bootstrap
gnu/packages/mes\.scm                              @guix/bootstrap


M etc/teams.scm => etc/teams.scm +16 -1
@@ 464,6 464,21 @@ already exists.  Lookup team IDs among CURRENT-TEAMS."
                      "gnu/packages/fluidplug.scm"
                      "gnu/packages/xiph.scm")))

(define-team beam
  (team 'beam
        #:name "Erlang/Elixir/BEAM team"
        #:description "The virtual machine at the core of the Erlang Open
Telecom Platform (OTP), Erlang and Elxir languages and packages, development
of Rebar and Mix build systems and Hex.pm importer."
        #:scope (list (make-regexp* "^gnu/packages/elixir(-.+|)\\.scm$")
                      "guix/build/mix-build-system.scm"
                      "guix/build-system/mix.scm"
                      (make-regexp* "^gnu/packages/erlang(-.+|)\\.scm$")
                      "guix/build/rebar-build-system.scm"
                      "guix/build-system/rebar.scm"
                      "guix/import/hexpm.scm"
                      "guix/scripts/import/hexpm.scm")))

(define-team bootstrap
  (team 'bootstrap
        #:name "Bootstrap"


@@ 1328,7 1343,7 @@ the \"texlive\" importer."
(define-member (person "Giacomo Leidi"
                       "goodoldpaul@autistici.org"
                       "fishinthecalculator")
  audio)
  audio beam)

(define-member (person "Saku Laesvuori"
                       "saku@laesvuori.fi"

A etc/teams/beam/elixir-manifest.scm => etc/teams/beam/elixir-manifest.scm +60 -0
@@ 0,0 1,60 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2025 Giacomo Leidi <goodoldpaul@autistici.org>
;;;
;;; 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/>.

;;; This file returns a manifest of packages built using the mix-build-system.
;;; It is used to assist continuous integration of the beam-team branch.
;;;
;;;
;;; You can use it to build all covered packages with:
;;;
;;;  ./pre-inst-env guix build -m etc/teams/beam/elixir-manifest.scm
;;;
;;; or to update them with:
;;;
;;;  ./pre-inst-env guix refresh -u -m etc/teams/beam/elixir-manifest.scm

(use-modules (guix packages)
             (guix profiles)
             (guix gexp)
             (guix build-system)
             (ice-9 match)
             (srfi srfi-1)
             (srfi srfi-26))

(define* (has-mix-build-system? build-system #:key modules #:allow-other-keys)
  (or (eq? (build-system-name build-system) 'mix)
      (any
       (match-lambda
         (('guix 'build 'mix-build-system) #t)
         ('((guix build mix-build-system) . _) #t)
         (_ #f))
       (cond
        ((gexp? modules) (gexp->approximate-sexp modules))
        ((pair? modules) modules)
        (else '())))))

(manifest
  (map package->manifest-entry
       (fold-packages
        (lambda (package lst)
          (if (apply has-mix-build-system?
                     (package-build-system package)
                     (package-arguments package))
              (cons package lst)
              lst))
        (list))))

A etc/teams/beam/erlang-manifest.scm => etc/teams/beam/erlang-manifest.scm +60 -0
@@ 0,0 1,60 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2025 Giacomo Leidi <goodoldpaul@autistici.org>
;;;
;;; 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/>.

;;; This file returns a manifest of packages built using the rebar-build-system.
;;; It is used to assist continuous integration of the beam-team branch.
;;;
;;;
;;; You can use it to build all covered packages with:
;;;
;;;  ./pre-inst-env guix build -m etc/teams/beam/erlang-manifest.scm
;;;
;;; or to update them with:
;;;
;;;  ./pre-inst-env guix refresh -u -m etc/teams/beam/erlang-manifest.scm

(use-modules (guix packages)
             (guix profiles)
             (guix gexp)
             (guix build-system)
             (ice-9 match)
             (srfi srfi-1)
             (srfi srfi-26))

(define* (has-rebar-build-system? build-system #:key modules #:allow-other-keys)
  (or (eq? (build-system-name build-system) 'rebar)
      (any
       (match-lambda
         (('guix 'build 'rebar-build-system) #t)
         ('((guix build rebar-build-system) . _) #t)
         (_ #f))
       (cond
        ((gexp? modules) (gexp->approximate-sexp modules))
        ((pair? modules) modules)
        (else '())))))

(manifest
  (map package->manifest-entry
       (fold-packages
        (lambda (package lst)
          (if (apply has-rebar-build-system?
                     (package-build-system package)
                     (package-arguments package))
              (cons package lst)
              lst))
        (list))))