[Exherbo-dev] Profiles proposal

Bo Ørsted Andresen zlin at exherbo.org
Thu Nov 19 02:49:38 GMT 2009


Each subdirectory can contain the following files:

- bashrc
        Evaluated by bash. For setting up build environment.
- options.conf
        Mostly like the user options.conf. But there are a two special 
suboptions, for declaring suboptions
        and for hiding suboptions: SUBOPTIONS and HIDDEN_SUBOPTIONS.
        Masking or forcing options on is done with parentheses. (-foo) 
or (foo). Unmasking or unforcing an
        option is done by listing it without parentheses. -foo or foo.
        There has also been a suggestion to allow enabling, disabling, 
masking or forcing all suboptions of a
        kind through syntax like e.g.:
                */* PLATFORM: (-*)
- package_mask.conf
        Same syntax as repository_mask.conf.
- system.conf
        Same syntax as all other package sets.

One central profiles.conf that lists valid profiles with status and all 
their parents.

Each parent can revert things in preceding parents. Every subdirectory 
has .. as implicit parent.
Thus in the following example desktop automatically inherits from base 
and x86 inherits from
platform etc.

Status can take the values stable, testing or deprecated.

Example profiles hierarchy with comments:

profiles/
    repo_name
    profiles.conf
        # profile name:               status: parents:
        amd64-glibc-desktop stable  base/desktop libc/glibc platform/amd64
        amd64-glibc-server  testing base/server  libc/glibc platform/amd64
        ppc64-glibc-desktop stable  base/desktop libc/glibc platform/ppc64
        ppc64-glibc-server  testing base/server  libc/glibc platform/ppc64
        x86-glibc-desktop   stable  base/desktop libc/glibc platform/x86
        x86-glibc-server    testing base/server  libc/glibc platform/x86
    base/
        bashrc
            CONFIG_PROTECT="/etc"
            CONFIG_PROTECT_MASK="/etc/env.d"
        options.conf
            */* SUBOPTIONS: ENCODINGS EPIPHANY_EXTENSIONS 
GSTREAMER_PLUGINS IM_PROTOCOLS \
                            INPUT_DRIVERS LINGUAS PLATFORM 
PPC_CPU_FEATURES VIDEO_DRIVERS \
                            X86_CPU_FEATURES
            */* HIDDEN_SUBOPTIONS: PLATFORM
            */* INPUT_DRIVERS: keyboard mouse
            */* VIDEO_DRIVERS: vesa
            */* foo bar baz
        system.conf
            * sys-apps/paludis
            * sys-apps/skeleton-filesystem-layout
        desktop/
            options.conf
                */* alsa cdr dbus unicode X
        server/
            options.conf
                */* apache2 ldap
    libc/
        glibc/
            system.conf
                * sys-libs/glibc
    platform/
        bashrc
            CFLAGS="-O2 -pipe"
            CXXFLAGS="${CFLAGS}"
        options.conf
            */* HIDDEN_SUBOPTIONS: PPC_CPU_FEATURES X86_CPU_FEATURES
            */* PLATFORM: (-amd64) (-ppc64) (-x86)
            */* PPC_CPU_FEATURES: (-altivec)
            */* X86_CPU_FEATURES: (-3dnow) (-mmx) (-sse) (-sse2)
        amd64/
            bashrc
                ABI=amd64
                CHOST="x86_64-pc-linux-gnu"
                MULTILIB_ABS="amd64 x86"
                ...
            options.conf
                */* PLATFORM: (amd64)
            package_mask.conf
        ppc64/
            bashrc
            options.conf
                */* HIDDEN_SUBOPTIONS: -PPC_CPU_FEATURES
                */* PLATFORM: (ppc64)
                */* PPC_CPU_FEATURES: -altivec
            package_mask.conf
        x86/
            bashrc
                CHOST="i686-pc-linux-gnu"
                ...
            options.conf
                */* HIDDEN_SUBOPTIONS: -X86_CPU_FEATURES
                */* PLATFORM: (x86)
                */* X86_CPU_FEATURES: -3dnow -mmx -sse -sse2
            package_mask.conf



More information about the Exherbo-dev mailing list