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
