The gcc-TEST repository in the forge 
(https://forge.sourceware.org/gcc/gcc-TEST) already has a few labels that were 
manually created in order to support those participating in the experiment.  At 
present these have to be added manually to each pull request.

But there's an opportunity to do much better than that and to automatically 
assign a number of labels based on the components that a patch touches.

The attached file is my initial stab (technically it's my second, but I posted 
that only to the forge mailing list and in reply to another message, so it has 
probably been lost by now) at such a taxonomy of labels.  Once I have a largely 
finalized list, I expect to use the REST API in the forge to bulk create the 
labels.

My ultimate goal is that we would be able to map patches to components (most 
likely determined via a script that mapped affected files to components) and 
then components to mailing lists and reviewers, so that they would be notified 
of new pull requests being submitted.  This initial mapping should be automated 
with a runner in the forge, but labels can then be manually changed by 
reviewers.

I'm looking for feedback on this list since it's much easier to add labels in 
bulk than it is to change labels once they start being applied to pulls.

Thoughts?

# Provisional list of labels for the gcc forge:
#
# Tags are not exclusive unless otherwise stated.
#

# Note, *** indicates that this matches a strict category, but perhaps
# we shouldn't permit these in labels.

# Format of this file:
# - Comments start with '#' and continue to the end of a line
# - Color markers start with ':color' and indicate the background
#   color of label.  The value is RGB in hex.  Color directives
#   continue until the next color marker.
# - Multi-select/exclusive labels are marked ':multi' or ':exclusive'
#   and indicate if the tag forms part of an exclusive set (you can
#   set at most one such label on a patch or issue.  These continue
#   until the next multi/exclusive marker.  Note the label name's in
#   an exclusive set must follow Forgejo's rules for such labels.
# - Other lines are in the format:
#     <label-name>      [<optional description>]
#   The description text will be used to populate the description
#   field for the label.


## Bug reports
# All of these labels are expected to be automatically scraped from
# the primary (first-referenced) bugzilla entry that is identified
# from the cover text of a patch.  Note that they will not be
# automatically updated if the bugzilla entry is changed after the
# pull request has been created.

# Labels relating to bugs with a 'regression' marker in the bug summary.
:color #bd0000
:multi
Bug/Regression

# Bug importance (exclusive)
:color #f06d00
:exclusive
Bug/Importance/P1               The bugzilla ticket has priority P1
Bug/Importance/P2               The bugzilla ticket has priority P2
Bug/Importance/P3               The bugzilla ticket has priority P3
Bug/Importance/P4               The bugzilla ticket has priority P4
Bug/Importance/P5               The bugzilla ticket has priority P5

# Labels relating to bugs with a specific component.  The final
# part of the label should be a string match for the component
# field of the BZ entry.
# (exclusive)
:color #fbca04
:exclusive
Bug/Component/ada               The bugzilla component is 'ada'
Bug/Component/algol68           The bugzilla component is 'algol68'
Bug/Component/analyzer          The bugzilla component is 'analyzer'
Bug/Component/boehm-gc          The bugzilla component is 'boehm-gc'
Bug/Component/bootstrap         The bugzilla component is 'bootstrap'
Bug/Component/c                 The bugzilla component is 'c'
Bug/Component/c++               The bugzilla component is 'c++'
Bug/Component/cobol             The bugzilla component is 'cobol'
Bug/Component/d                 The bugzilla component is 'd'
Bug/Component/debug             The bugzilla component is 'debug'
Bug/Component/demangler         The bugzilla component is 'demangler'
Bug/Component/diagnostics       The bugzilla component is 'diagnostics'
Bug/Component/driver            The bugzilla component is 'driver'
Bug/Component/fortran           The bugzilla component is 'fortran'
Bug/Component/gcov-profile      The bugzilla component is 'gcov-profile'
Bug/Component/go                The bugzilla component is 'go'
Bug/Component/ipa               The bugzilla component is 'ipa'
Bug/Component/jit               The bugzilla component is 'jit'
Bug/Component/libbacktrace      The bugzilla component is 'libbacktrace'
Bug/Component/libcc1            The bugzilla component is 'libcc1'
Bug/Component/libffi            The bugzilla component is 'libffi'
Bug/Component/libfortran                The bugzilla component is 'libfortran'
Bug/Component/libgcc            The bugzilla component is 'libgcc'
Bug/Component/libgdiagnostics           The bugzilla component is 
'libdiagnostics'
Bug/Component/libgomp           The bugzilla component is 'libgomp'
Bug/Component/libitm            The bugzilla component is 'libitm'
Bug/Component/libobjc           The bugzilla component is 'libobjc'
Bug/Component/libquadmath       The bugzilla component is 'libquadmath'
Bug/Component/libstdc++         The bugzilla component is 'libstdc++'
Bug/Component/lto               The bugzilla component is 'lto'
Bug/Component/middle-end        The bugzilla component is 'middle-end'
Bug/Component/modula2           The bugzilla component is 'modula2'
Bug/Component/objc              The bugzilla component is 'objc'
Bug/Component/other             The bugzilla component is 'other'
Bug/Component/pch               The bugzilla component is 'pch'
Bug/Component/pending           The bugzilla component is 'pending'
Bug/Component/plugins           The bugzilla component is 'plugins'
Bug/Component/preprocessor      The bugzilla component is 'preprocessor'
Bug/Component/regression        The bugzilla component is 'regression'
Bug/Component/rtl-optimization  The bugzilla component is 'rtl-optimization'
Bug/Component/rust              The bugzilla component is 'rust'
Bug/Component/sanitizer         The bugzilla component is 'sanitizer'
Bug/Component/sarif-replay      The bugzilla component is 'sarif-replay'
# Bug/Component/spam ***        This shouldn't be needed.
Bug/Component/target            The bugzilla component is 'target'
Bug/Component/testsuite         The bugzilla component is 'testsuite'
Bug/Component/translation       The bugzilla component is 'translation'
Bug/Component/tree-optimization The bugzilla component is 'tree-optimization'
Bug/Component/web               The bugzilla component is 'web'

## Labels relating to releases (for backporting)
:color #5319e7
:multi
# eg: Release/GCC-<major>
Release/GCC-13                  Consider backporting to GCC-13
Release/GCC-14                  Consider backporting to GCC-14
Release/GCC-15                  Consider backporting to GCC-15

## Labels related to components
# Note that multiple labels in this section can be applied, based on the files
# modified.

# Miscellany
:color #006b75
:multi
General/config                  Affects configure or autoconf scripts
General/make                    Affects Makefiles or automake
General/unknown                 Catch-all, does not match any other category
General/gdbhooks                Support for debugging GCC with GDB (gdbhooks.py)

# Library components
:color #009800
:multi
Library/libada                  Affects libada
Library/libatomic               Affects libatomic
Library/libcc1                  Affects libcc1
Library/libcody                 Affects libcody
Library/libcpp                  Affects libcpp
Library/libdecnumber            Affects libdecnumber
Library/libgcc                  Affects libgcc
Library/libgcobol               Affects libgcobol
Library/libgfortran             Affects libgfortran
Library/libgm2                  Affects libgm2
Library/libgo                   Affects libgo
Library/libgomp                 Affects libgomp
Library/libgrust                Affects libgrust
Library/libiberty               Affects libiberty
Library/libitm                  Affects libitm
Library/libobjc                 Affects libobjc
Library/libphobos               Affects libphobos
Library/libquadmath             Affects libquadmath
Library/libsanitizer            Affects libsanitizer
Library/libssp                  Affects libssp
Library/libstdc++               Affects libstdc++
Library/libvtv                  Affects libvtv

# CPU targets (in compiler or in libraries)

:color #70c24a
:multi
Target/aarch64                  Affects the aarch64 target
Target/alpha                    Affects the alpha target
Target/arc                      Affects the arc target
Target/arm                      Affects the arm target
Target/avr                      Affects the avr target
Target/bfin                     Affects the bfin target
Target/bpf                      Affects the bpf target
Target/c6x                      Affects the c6x target
Target/cris                     Affects the cris target
Target/csky                     Affects the csky target
Target/epiphany                 Affects the epiphany target
Target/fr30                     Affects the fr30 target
Target/frv                      Affects the frv target
Target/ft32                     Affects the ft32 target
Target/gcn                      Affects the gcn target
Target/h8300                    Affects the h8300 target
Target/i386                     Affects the i386 target
Target/ia64                     Affects the ia64 target
Target/iq2000                   Affects the iq2000 target
Target/lm32                     Affects the lm32 target
Target/loongarch                Affects the loongarch target
Target/m32c                     Affects the m32c target
Target/m32r                     Affects the m32r target
Target/m68k                     Affects the m68k target
Target/mcore                    Affects the mcore target
Target/microblaze               Affects the microblaze target
Target/mingw                    Affects the mingw target
Target/mips                     Affects the mips target
Target/mmix                     Affects the mmix target
Target/mn10300                  Affects the mn1030 target
Target/moxie                    Affects the moxie target
Target/msp430                   Affects the msp430 target
Target/nds32                    Affects the nds32 target
Target/nvptx                    Affects the nvptx target
Target/or1k                     Affects the or1k target
Target/pa                       Affects the pa target
Target/pdp11                    Affects the pdp1 target
Target/pru                      Affects the pru target
Target/riscv                    Affects the riscv target
Target/rl78                     Affects the rl78 target
Target/rs6000                   Affects the rs6000 target
Target/rx                       Affects the rx target
Target/s390                     Affects the s390 target
Target/sh                       Affects the sh target
Target/sparc                    Affects the sparc target
Target/stormy16                 Affects the stormy16 target
Target/v850                     Affects the v850 target
Target/vax                      Affects the vax target
Target/visium                   Affects the visium target
Target/vms                      Affects the vms target
Target/vxworks                  Affects the vxworks target
Target/xtensa                   Affects the xtensa target

# labels specific to an object file format
:color #b0ffb0
:multi
Obj/coff                        Target independent code related to COFF object 
format
Obj/elf                         Target independent code related to COFF object 
format
Obj/pe                          Target independent code related to PE-COFF 
object format

# labels relating to a specific OS
:color #b0fff9
:multi
OS/darwin                       Affects Darwin OS
OS/dragonfly                    Affects Dragonfly OS
OS/freebsd                      Affects FreeBSD OS
OS/hpux                         Affects HP-UX OS
OS/linux                        Affects generic Linux OS
OS/netbsd                       Affects NetBSD OS
OS/openbsd                      Affects OpenBSD OS
OS/solaris                      Affects Solaris OS
OS/windows                      Affects Windows OS

# Labels relating to compiler mid-end
:color #207de5
:multi
midend/diagnostics              Diagnostics framework
midend/rtl                      General RTL code
midend/reg-alloc                Register allocation code
midend/tree                     General tree/gimple code
midend/vect                     Vectorization
midend/gc                       Garbage collection
midend/gen                      Generator programs, eg genattr
midend/misc                     Miscellaneous midend code that doesn't fit 
anything else
midend/lto                      Link Time Optimizer code
midend/jit                      JIT (Just-In-Time) code
midend/include                  Include headers and fixincludes
midend/dwarf                    Dwarf debug information
midend/debug                    Non-dwarf debug support
midend/gimple                   General GIMPLE support
midend/gcse                     RTL GCSE
midend/jump                     Jump and branch optimizations
midend/i18n                     Internationalization and Localization
midend/gcov                     GCOV code coverage support
midend/opts                     Option framework
midend/ranger                   Value range framework
midend/tree-ssa                 Tree SSA framework
midend/autofdo                  AutoFDO framework
midend/combine                  Instruction Combiner
midend/reload                   Legacy reload pass (obsolete)
midend/pair-fusion              Pair Fusion framework
midend/ivopts                   Loop IVopt framework
midend/loop                     Loop optimizations
midend/openacc                  OpenACC framework
midend/openmp                   OpenMP framework
midend/analyzer                 Static analyzer

# Labels relating to language frontends
:color #0052cc
:multi
frontend/ada                    The Ada frontend
frontend/algol68                The Algol68 frontend
frontend/c                      The C frontend
frontend/c++                    The C++ frontend
frontend/cobol                  The COBOL frontend
frontend/d                      The D frontend
frontend/fortran                The Fortran frontend
frontend/go                     The Go frontend
frontend/m2                     The Modula-2 frontend
frontend/objc                   The Objective-C frontend
frontend/rust                   The Rust frontend

# Labels relating to testsuites (probably incomplete)
:color #c544ff
:multi
Tests/framework                 Changes to the test framework (testsuite/lib)
Tests/torture                   Changes to legacy torture tests
Tests/target                    Changes to target-specific tests (use target/* 
as well)
Tests/lang                      Changes to language-specific tests (use lang/* 
as well)
Tests/lib                       Changes to top-level library tests (use 
Library/* as well)

## Forge status labels
# Labels for runners (exclusive)
:color #f6c6c7
:exclusive
Runner/pending                  Runner has started, but results not yet 
available
Runner/unresolved               Runner failed for an unknown reason)
Runner/red                      Check failed with errors, code not fit for 
committing
Runner/amber                    Check failed with warnings, manually inspect 
results
Runner/green                    Checks passed

Reply via email to