---
# linecheck.yaml

# configuration file for the LineCheck plugins run via the multicheck
# scan module
# no random drive-by commits please
# Please obtain authorization from the portage team
#
# Overlay maintainers override/add/negate checks at your discression
# but support for third party module will be limited to the plugin API
#

# Repoman API version (do not edit)
version: 1
# minimum
repoman_version: 2.3.3

eclass_export_functions:
    - ant-tasks
    - apache-2
    - apache-module
    - aspell-dict
    - autotools-utils
    - base
    - bsdmk
    - cannadic
    - clutter
    - cmake-utils
    - db
    - distutils
    - elisp
    - embassy
    - emboss
    - emul-linux-x86
    - enlightenment
    - font-ebdftopcf
    - font
    - fox
    - freebsd
    - freedict
    - games
    - games-ggz
    - games-mods
    - gdesklets
    - gems
    - gkrellm-plugin
    - gnatbuild
    - gnat
    - gnome2
    - gnome-python-common
    - gnustep-base
    - go-mono
    - gpe
    - gst-plugins-bad
    - gst-plugins-base
    - gst-plugins-good
    - gst-plugins-ugly
    - gtk-sharp-module
    - haskell-cabal
    - horde
    - java-ant-2
    - java-pkg-2
    - java-pkg-simple
    - java-virtuals-2
    - kde4-base
    - kde4-meta
    - kernel-2
    - latex-package
    - linux-mod
    - mozlinguas
    - myspell
    - myspell-r2
    - mysql
    - mysql-v2
    - mythtv-plugins
    - oasis
    - obs-service
    - office-ext
    - perl-app
    - perl-module
    - php-ext-base-r1
    - php-ext-pecl-r2
    - php-ext-source-r2
    - php-lib-r1
    - php-pear-lib-r1
    - php-pear-r1
    - python-distutils-ng
    - python
    - qt4-build
    - qt4-r2
    - rox-0install
    - rox
    - ruby
    - ruby-ng
    - scsh
    - selinux-policy-2
    - sgml-catalog
    - stardict
    - sword-module
    - tetex-3
    - tetex
    - texlive-module
    - toolchain-binutils
    - toolchain
    - twisted
    - vdr-plugin-2
    - vdr-plugin
    - vim
    - vim-plugin
    - vim-spell
    - virtuoso
    - vmware
    - vmware-mod
    - waf-utils
    - webapp
    - xemacs-elisp
    - xemacs-packages
    - xfconf
    - x-modular
    - xorg-2
    - zproduct

eclass_info_experimental_inherit:
    autotools:
        funcs:
            - eaclocal
            - eautoconf
            - eautoheader
            - eautomake
            - eautoreconf
            - _elibtoolize
            - eautopoint
        comprehensive: true
        # Exempt eclasses:
        # git - An EGIT_BOOTSTRAP variable may be used to call one of
        #       the autotools functions.
        # subversion - An ESVN_BOOTSTRAP variable may be used to call one of
        #       the autotools functions.
        exempt_eclasses:
            - git
            - git-2
            - subversion
            - autotools-utils
    eutils:
        funcs:
            - estack_push
            - estack_pop
            - eshopts_push
            - eshopts_pop
            - eumask_push
            - eumask_pop
            - epatch
            - epatch_user
            - emktemp
            - edos2unix
            - in_iuse
            - use_if_iuse
            - usex
        comprehensive: false
    flag-o-matic:
        funcs:
            - 'filter-(ld)?flags'
            - 'strip-flags'
            - 'strip-unsupported-flags'
            - 'append-((ld|c(pp|xx)?))?flags'
            - 'append-libs'
        comprehensive: false
    libtool:
        funcs:
            - elibtoolize
        comprehensive: true
        exempt_eclasses:
            - autotools
    multilib:
        funcs:
            - get_libdir
        # These are "eclasses are the whole ebuild" type thing.
        exempt_eclasses:
            - autotools
            - libtool
            - multilib-minimal
        comprehensive: false
    multiprocessing:
        funcs:
            - makeopts_jobs
        comprehensive: false
    prefix:
        funcs:
            - eprefixify
        comprehensive: true
    toolchain-funcs:
        funcs:
            - gen_usr_ldscript
        comprehensive: false
    user:
        funcs:
            - enewuser
            - enewgroup
            - egetent
            - egethome
            - egetshell
            - esethome
        comprehensive: true

# non experimental_inherit
eclass_info:
    autotools:
        funcs:
            - eaclocal
            - eautoconf
            - eautoheader
            - eautomake
            - eautoreconf
            - _elibtoolize
            - eautopoint
        comprehensive: true
        ignore_missing: true
        # Exempt eclasses:
        # git - An EGIT_BOOTSTRAP variable may be used to call one of
        #       the autotools functions.
        # subversion - An ESVN_BOOTSTRAP variable may be used to call one of
        #       the autotools functions.
        exempt_eclasses:
            - git
            - git-2
            - subversion
            - autotools-utils
    prefix:
        funcs:
            - eprefixify
        comprehensive: true

usex_supported_eapis:
    - "0"
    - "1"
    - "2"
    - "3"
    - "4"
    - "4-python"
    - "4-slot-abi"

in_iuse_supported_eapis:
    - "0"
    - "1"
    - "2"
    - "3"
    - "4"
    - "4-python"
    - "4-slot-abi"
    - "5"
    - "5-hdepend"
    - "5-progress"
