a2c6f8 packaging: Add support for suse-kabi-tools

Authored and Committed by Petr Pavlu 6 days ago
    packaging: Add support for suse-kabi-tools
    
    The current workflow to check kABI stability during the RPM build of SUSE
    kernels consists of the following steps:
    * The downstream script rpm/modversions unpacks the consolidated kABI
      symtypes reference data from kabi/<arch>/symtypes-<flavor> and creates
      individual symref files.
    * The build performs a regular kernel make. During this operation, genksyms
      is invoked for each source file. The tool determines type signatures of
      all exports within the file, reports any differences compared to the
      associated symref reference, calculates symbol CRCs from the signatures
      and writes new type data into a symtypes file.
    * The script rpm/modversions is invoked again, this time it packs all new
      symtypes files to a consolidated kABI file.
    * The downstream script rpm/kabi.pl checks symbol CRCs in the new build and
      compares them to a reference from kabi/<arch>/symvers-<flavor>, taking
      kabi/severities into account.
    
    suse-kabi-tools is a new set of tools to improve the kABI checking process.
    The suite includes two tools, ksymtypes and ksymvers, which replace the
    existing scripts rpm/modversions and rpm/kabi.pl, as well as the comparison
    functionality previously provided by genksyms. The tools have their own
    source repository and package.
    
    The tools provide faster operation and more detailed, unified output. In
    addition, they allow the use of the new upstream tool gendwarfksyms, which
    lacks any built-in comparison functionality.
    
    The updated workflow is as follows:
    * The build performs a regular kernel make. During this operation, genksyms
      (gendwarfksyms) is invoked as usual, determinining signatures and CRCs of
      all exports and writing the type data to symtypes files. However,
      genksyms no longer performs any comparison.
    * 'ksymtypes consolidate' packs all new symtypes files to a consolidated
      kABI file.
    * 'ksymvers compare' checks symbol CRCs in the new build and compares them
      to a reference from kabi/<arch>/symvers-<flavor>, taking kabi/severities
      into account. The tool writes its result in a human-readable form on
      standard output and also writes a list of all changed exports (not
      ignored by kabi/severities) to the changed-exports file.
    * 'ksymtypes compare' takes the changed-exports file, the consolidated kABI
      symtypes reference data from kabi/<arch>/symtypes-<flavor> and the new
      consolidated data. Based on this data, it produces a detailed report
      explaining why the symbols changed.
    
    The patch enables the use of suse-kabi-tools via rpm/config.sh, providing
    explicit control to each branch. To enable the support, set
    USE_SUSE_KABI_TOOLS=Yes in the config file.
    
        
file modified
+36 -12
file modified
+2 -0