Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 270884

Summary: sys-apps/paludis failed to work with Funtoo's new modular package.mask
Product: Gentoo Linux Reporter: Tim O'Kelly <bugs_gentoo_org.Tim_OKelly>
Component: Current packagesAssignee: Thomas Anderson (tanderson) (RETIRED) <tanderson>
Status: RESOLVED INVALID    
Severity: critical    
Priority: High    
Version: unspecified   
Hardware: All   
OS: Linux   
URL: http://xenoterracide.blogspot.com/2009/02/split-packagemask.html
Whiteboard:
Package list:
Runtime testing required: ---
Attachments: Should reside in /usr/share/paludis/hooks/auto/

Description Tim O'Kelly 2009-05-22 23:27:50 UTC
1) 29.04.2009 Daniel Robbins have decided to move to new modular package mask for better support overlays.
http://github.com/funtoo/portage/commit/5dc56b9ee75773a3e5d3a5e0c2a63e57e29d0adc
http://xenoterracide.blogspot.com/2009/02/split-packagemask.html

2) sys-apps/paludis didn't adapt to this change and so began to fail.

Reproducible: Always

Steps to Reproduce:
1. Clone the Funtoo Portage repository (brief instructions are here: http://wiki.github.com/funtoo/portage/first-steps)
2. Switch to the funtoo.org branch of that tree (# cd /usr/portage; git checkout funtoo.org)
3. Sync the tree (# paludis -s)
4. Try to install (or pretend) something: (# paludis -ip ccache)
5. Paludis failed
  * When adding profile configuration file '/usr/portage/profiles/package.mask':
  * In file '/usr/portage/profiles/package.mask': Error reading file: 'Error reading from fd 3: Is a directory' (paludis::SafeIFStreamError) (paludis::ConfigFileError)

Actual Results:  
travel portage # paludis -ip ccache
Building target list...
Unhandled exception:
  * In program paludis (--continue-on-failure if-satisfied --with-unused-dependencies --dl-new-slots as-needed --log-level silent) -ip ccache:
  * When performing install action from command line:
  * When adding install target 'ccache':
  * When parsing user package dep spec 'ccache':
  * When parsing generic package dep spec 'ccache':
  * When disambiguating package name 'ccache':
  * When finding all versions in some arbitrary order from packages matching */ccache with filter all matches filtered through supports action install:
  * When generating metadata for ID 'dev-util/ccache-2.4-r6::funtoo':
  * When querying repository mask for 'dev-util/ccache-2.4-r6:0::funtoo':
  * When adding profile configuration file '/usr/portage/profiles/package.mask':
  * In file '/usr/portage/profiles/package.mask': Error reading file: 'Error reading from fd 3: Is a directory' (paludis::SafeIFStreamError) (paludis::ConfigFileError)

Expected Results:  
Normal work as expected.

# paludis --info

paludis 0.36.1
Paludis build information:
    Compiler:
        CXX:                   i686-pc-linux-gnu-g++ 4.4.0
        CXXFLAGS:               -O2 -march=pentium4 -ftracer -mfpmath=sse -pipe -pedantic
        LDFLAGS:               -Wl,-O1
        DATE:                  2009-05-18T14:06:16+0400

    Libraries:
        C++ Library:           GNU libstdc++ 20090421

    Reduced Privs:
        reduced_uid:           101
        reduced_uid->name:     paludisbuild
        reduced_uid->dir:      /var/tmp/paludis
        reduced_gid:           1000
        reduced_gid->name:     paludisbuild

    Paths:
        DATADIR:               /usr/share
        LIBDIR:                /usr/lib
        LIBEXECDIR:            /usr/libexec
        SYSCONFDIR:            /etc
        PYTHONINSTALLDIR:      
        RUBYINSTALLDIR:        /usr/lib/ruby/site_ruby/1.8/i686-linux

Environment:
    Format:                    paludis
    Config dir:                /etc/paludis
    World file:                /var/db/pkg/world

Repository installed-virtuals:
    format:                    installed_virtuals
    root:                      /

Repository virtuals:
    format:                    virtuals

Repository funtoo:
    format:                    ebuild
    location:                  /usr/portage
    append_repository_name_to_write_cache: true
    binary_destination:        false
    binary_keywords:           
    binary_uri_prefix:         
    builddir:                  /var/tmp/paludis
    cache:                     /usr/portage/metadata/cache
    distdir:                   /usr/portage/distfiles
    eapi_when_unknown:         0
    eapi_when_unspecified:     0
    eclassdirs:                /usr/portage/eclass
    ignore_deprecated_profiles: false
    layout:                    traditional
    names_cache:               /var/cache/paludis/names
    newsdir:                   /usr/portage/metadata/news
    profile_eapi_when_unspecified: 0
    profiles:                  /usr/portage/profiles/default/linux/x86/2008.0
    securitydir:               /usr/portage/metadata/glsa
    setsdir:                   /usr/portage/sets
    sync:                      git://github.com/funtoo/portage.git
    sync_options:              
    use_manifest:              use
    write_cache:               /var/cache/paludis/metadata

Repository installed:
    format:                    vdb
    location:                  /var/db/pkg
    builddir:                  /var/tmp/paludis
    names_cache:               /var/cache/paludis/names
    provides_cache:            /var/cache/paludis/provides
    root:                      /

Repository gentoo-taiwan:
    format:                    ebuild
    location:                  /var/paludis/repositories/gentoo-taiwan
    append_repository_name_to_write_cache: true
    binary_destination:        false
    binary_keywords:           
    binary_uri_prefix:         
    builddir:                  /var/tmp/paludis
    cache:                     /var/empty
    distdir:                   /usr/portage/distfiles
    eapi_when_unknown:         0
    eapi_when_unspecified:     0
    eclassdirs:                /usr/portage/eclass /var/paludis/repositories/gentoo-taiwan/eclass
    ignore_deprecated_profiles: false
    layout:                    traditional
    master_repository:         funtoo
    names_cache:               /var/cache/paludis/names
    newsdir:                   /var/paludis/repositories/gentoo-taiwan/metadata/news
    profile_eapi_when_unspecified: 0
    profiles:                  /usr/portage/profiles/default/linux/x86/2008.0
    securitydir:               /var/paludis/repositories/gentoo-taiwan/metadata/glsa
    setsdir:                   /var/paludis/repositories/gentoo-taiwan/sets
    sync:                      svn+http://gentoo-taiwan.googlecode.com/svn/trunk/
    sync_options:              
    use_manifest:              use
    write_cache:               /var/cache/paludis/metadata

Repository mozilla:
    format:                    ebuild
    location:                  /var/paludis/repositories/mozilla
    append_repository_name_to_write_cache: true
    binary_destination:        false
    binary_keywords:           
    binary_uri_prefix:         
    builddir:                  /var/tmp/paludis
    cache:                     /var/empty
    distdir:                   /usr/portage/distfiles
    eapi_when_unknown:         0
    eapi_when_unspecified:     0
    eclassdirs:                /usr/portage/eclass /var/paludis/repositories/mozilla/eclass
    ignore_deprecated_profiles: false
    layout:                    traditional
    master_repository:         funtoo
    names_cache:               /var/cache/paludis/names
    newsdir:                   /var/paludis/repositories/mozilla/metadata/news
    profile_eapi_when_unspecified: 0
    profiles:                  /usr/portage/profiles/default/linux/x86/2008.0
    securitydir:               /var/paludis/repositories/mozilla/metadata/glsa
    setsdir:                   /var/paludis/repositories/mozilla/sets
    sync:                      svn://overlays.gentoo.org/proj/mozilla
    sync_options:              
    use_manifest:              use
    write_cache:               /var/cache/paludis/metadata

Repository x-local:
    format:                    ebuild
    location:                  /var/paludis/repositories/local
    append_repository_name_to_write_cache: true
    binary_destination:        false
    binary_keywords:           
    binary_uri_prefix:         
    builddir:                  /var/tmp/paludis
    cache:                     /var/empty
    distdir:                   /usr/portage/distfiles
    eapi_when_unknown:         0
    eapi_when_unspecified:     0
    eclassdirs:                /usr/portage/eclass /var/paludis/repositories/local/eclass
    ignore_deprecated_profiles: false
    layout:                    traditional
    master_repository:         funtoo
    names_cache:               /var/cache/paludis/names
    newsdir:                   /var/paludis/repositories/local/metadata/news
    profile_eapi_when_unspecified: 0
    profiles:                  /usr/portage/profiles/default/linux/x86/2008.0
    securitydir:               /var/paludis/repositories/local/metadata/glsa
    setsdir:                   /var/paludis/repositories/local/sets
    sync:                      
    sync_options:              
    use_manifest:              use
    write_cache:               /var/cache/paludis/metadata

No packages were specified on the command line, so detailed information is not
available (Paludis can display detailed information for both installed and
installable packages).

So if you're reporting a bug in cat/pkg, use 'paludis --info cat/pkg' instead.
Comment 1 Thomas Anderson (tanderson) (RETIRED) gentoo-dev 2009-05-24 01:28:14 UTC
I'm Marking this as RESO INVALID for the following reasons:

1) If anything this is a funtoo problem and as such should not be reported to gentoo's bugzilla.

2) Funtoo uses EAPI 0 ebuilds in the tree. As such, they /should/ have their tree in compliance with PMS(http://dev.gentoo.org/~gentoofan23/pms/head/html/pms.html#x1-450005.2 specifically). Rather, they rely on certain portage behaviour that allows package.mask to be a directory. Whether or not one thinks this should be changed is beyond the scope of this bug report. Paludis follows what the PMS states(and the Gentoo Council approved PMS as a draft standard(any discrepancies have a review process)), and, if anything, portage is the package to be 'fixed' to not allow package.mask be a directory.

I would strongly suggest that the Funtoo people instruct their users that paludis will not work with the funtoo tree due to differences in the profiles/ directory structure.
Comment 2 Thomas Anderson (tanderson) (RETIRED) gentoo-dev 2009-05-24 01:46:06 UTC
Change Resolution...
Comment 3 Tim O'Kelly 2009-05-26 20:05:32 UTC
Thanks for the detailed explanation. I agree, that it's not a paludis bug.
I like paludis for it's strict following standarts.

But I'm a novice developer and I can't ask Daniel Robbins to change his opinion about modular package.mask. And also I agree with him, that it's not a bad idea and can possibly be included in future versions of PMS (I just don't see, why modular package.mask is bad).

To deal with this situation as I can, I wrote simple workaround for paludis (a hook script), that makes it work with funtoo portage tree by switching it to modular before syncing, and back to singular after it.
I hope it will be useful and so publish it here.
Comment 4 Tim O'Kelly 2009-05-26 20:10:44 UTC
Created attachment 192538 [details]
Should reside in /usr/share/paludis/hooks/auto/
Comment 5 Marc-Antoine Perennou 2009-09-05 12:02:49 UTC
I think the simplest thing to do is to rename the modular package.mask as package.mask.d before doing anything with paludis, and rename it as package.mask before syncing or doing anything with portage, that's how I do and it works pretty well