When running update-eix with the OVERLAY_CACHE_METHOD set to either assign:<path> or flat:<path>, eix appends the contents of that variable to the contents for the previous repository. This results in an incorrect database, as the repositories other than the main gentoo-x86 repository will not be added. This does not occur when the OVERLAY_CACHE_METHOD is any variant of parse or ebuild. Reproducible: Always Steps to Reproduce: 1. Set OVERLAY_CACHE_METHOD to flat:<path> or assign:<path> 2. Run update-eix Output of update-eix: Reading Portage settings .. Building database (/var/cache/eix) .. [0] "gentoo" /var/paludis/repositories/gentoo/ (cache: metadata-assign:/var/cache/paludis/metadata/gentoo) Reading 100% [1] "local" /var/paludis/repositories/local (cache: metadata-assign:/var/cache/paludis/metadata/gentooassign:/var/cache/paludis/metadata/) Reading 100% [2] "akoya" /var/paludis/repositories/akoya (cache: metadata-assign:/var/cache/paludis/metadata/gentooassign:/var/cache/paludis/metadata/assign:/var/cache/paludis/metadata/) Reading 100% [3] "arcon" /var/paludis/repositories/arcon (cache: metadata-assign:/var/cache/paludis/metadata/gentooassign:/var/cache/paludis/metadata/assign:/var/cache/paludis/metadata/assign:/var/cache/paludis/metadata/) Reading 100% [4] "armagetron" /var/paludis/repositories/armagetron (cache: metadata-assign:/var/cache/paludis/metadata/gentooassign:/var/cache/paludis/metadata/assign:/var/cache/paludis/metadata/assign:/var/cache/paludis/metadata/assign:/var/cache/paludis/metadata/) emerge --info: WARNING: repository at /var/paludis/repositories/eclipse is missing a repo_name entry WARNING: repository at /var/paludis/repositories/gentoo is missing a repo_name entry Portage 2.2_rc8 (default/linux/amd64/2008.0/developer, gcc-4.3.1, glibc-2.8_p20080602-r0, 2.6.26-rc8-zen1 x86_64) ================================================================= System uname: Linux-2.6.26-rc8-zen1-x86_64-AMD_Turion-tm-_64_X2_Mobile_Technology_TL-62-with-glibc2.2.5 Timestamp of tree: Unknown app-shells/bash: 3.2_p39 dev-java/java-config: 1.3.7, 2.1.6-r1 dev-lang/python: 2.4.4-r13, 2.5.2-r8 dev-python/pycrypto: 2.0.1-r6 sys-apps/baselayout: 2.0.0 sys-apps/openrc: 9999 sys-apps/sandbox: 1.2.18.1-r2 sys-devel/autoconf: 2.13, 2.62-r1 sys-devel/automake: 1.5, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.1-r1 sys-devel/binutils: 2.18-r3 sys-devel/gcc-config: 1.4.0-r4 sys-devel/libtool: 2.2.4 virtual/os-headers: 2.6.26 ACCEPT_KEYWORDS="amd64 ~amd64" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-march=athlon64 -O2 -pipe -ggdb2" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/env /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/config /usr/shutdown" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/eselect/postgresql /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/splash /etc/terminfo /etc/texmf/web2c /etc/udev/rules.d" CXXFLAGS="-march=athlon64 -O2 -pipe -ggdb2" DISTDIR="/var/cache/paludis/distfiles" EMERGE_DEFAULT_OPTS="" FEATURES="ccache collision-protect cvs digest distlocks loadpolicy parallel-fetch preserve-libs sandbox sfperms sign splitdebug test unmerge-orphans userfetch userpriv usersandbox" GENTOO_MIRRORS="http://gentoo.osuosl.org http://distfiles.gentoo.org http://www.ibiblio.org/pub/Linux/distributions/gentoo" LANG="en_US.UTF-8" LC_ALL="en_US.UTF-8" LDFLAGS="-Wl,-O1" LINGUAS="en en_US ja ja_JP" MAKEOPTS="-j3" PKGDIR="/var/paludis/repositories/gentoo/packages" PORTAGE_COMPRESS="lzma" PORTAGE_COMPRESS_FLAGS="-z" PORTAGE_RSYNC_EXTRA_OPTS="" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/var/paludis/repositories/gentoo" PORTDIR_OVERLAY="/var/paludis/repositories/local /var/paludis/repositories/akoya /var/paludis/repositories/arcon /var/paludis/repositories/armagetron /var/paludis/repositories/aross /var/paludis/repositories/bangert /var/paludis/repositories/berkano /var/paludis/repositories/cell /var/paludis/repositories/chtekk-apps /var/paludis/repositories/chtekk-syscp /var/paludis/repositories/cross-toolchains /var/paludis/repositories/darkside /var/paludis/repositories/dberkholz /var/paludis/repositories/d /var/paludis/repositories/deathwing00 /var/paludis/repositories/dertobi123 /var/paludis/repositories/desktop-effects /var/paludis/repositories/devnull /var/paludis/repositories/dev-zero /var/paludis/repositories/dirtyepic /var/paludis/repositories/drizzt-overlay /var/paludis/repositories/eclipse /var/paludis/repositories/efika /var/paludis/repositories/emacs /var/paludis/repositories/enlightenment /var/paludis/repositories/falco /var/paludis/repositories/finnish /var/paludis/repositories/flameeyes-overlay /var/paludis/repositories/freevo /var/paludis/repositories/games /var/paludis/repositories/gcc-porting /var/paludis/repositories/genstef /var/paludis/repositories/gentoo-china /var/paludis/repositories/gentoo /var/paludis/repositories/gentoo-de/var/paludis/repositories/gentoojp /var/paludis/repositories/gentoo-taiwan /var/paludis/repositories/gentopia /var/paludis/repositories/gnash-cvs /var/paludis/repositories/gnome /var/paludis/repositories/gnustep /var/paludis/repositories/graaff /var/paludis/repositories/halcy0n /var/paludis/repositories/hanno-xgl /var/paludis/repositories/haskell /var/paludis/repositories/hawking /var/paludis/repositories/hollow /var/paludis/repositories/ikelos /var/paludis/repositories/initng /var/paludis/repositories/interactive-fiction /var/paludis/repositories/iwlwifi /var/paludis/repositories/java-gcj-overlay /var/paludis/repositories/java-overlay /var/paludis/repositories/je_fro /var/paludis/repositories/jokey /var/paludis/repositories/jyujin /var/paludis/repositories/kde-testing /var/paludis/repositories/kerberos /var/paludis/repositories/kolab /var/paludis/repositories/kvm /var/paludis/repositories/lapis /var/paludis/repositories/lila-theme /var/paludis/repositories/liquidx /var/paludis/repositories/ltsp /var/paludis/repositories/luke-jr /var/paludis/repositories/lu_zero /var/paludis/repositories/lxde /var/paludis/repositories/marineam-xen /var/paludis/repositories/masterdriverz /var/paludis/repositories/mozilla /var/paludis/repositories/mpd /var/paludis/repositories/mysql-testing /var/paludis/repositories/n4g /var/paludis/repositories/n4g-experimental /var/paludis/repositories/nouveau /var/paludis/repositories/nx /var/paludis/repositories/openoffice-geki /var/paludis/repositories/openrc /var/paludis/repositories/oss-overlay /var/paludis/repositories/paludis-extras /var/paludis/repositories/pda /var/paludis/repositories/pd-overlay /var/paludis/repositories/perl6 /var/paludis/repositories/perl-experimental /var/paludis/repositories/philantrop /var/paludis/repositories/php-4 /var/paludis/repositories/php-experimental /var/paludis/repositories/php-testing /var/paludis/repositories/pioto-overlay /var/paludis/repositories/plan9 /var/paludis/repositories/postgresql-experimental /var/paludis/repositories/postgresql-testing /var/paludis/repositories/powerpc /var/paludis/repositories/pro-audio /var/paludis/repositories/pythonhead /var/paludis/repositories/rbu /var/paludis/repositories/roslin /var/paludis/repositories/rox /var/paludis/repositories/ruby /var/paludis/repositories/s3d /var/paludis/repositories/science /var/paludis/repositories/secondlife /var/paludis/repositories/seemant /var/paludis/repositories/sipx /var/paludis/repositories/soor-overlay /var/paludis/repositories/suka /var/paludis/repositories/sunrise /var/paludis/repositories/swegener /var/paludis/repositories/thousand-parsec /var/paludis/repositories/toolchain /var/paludis/repositories/trapni /var/paludis/repositories/trauma /var/paludis/repositories/vdr-devel /var/paludis/repositories/vdr-experimental /var/paludis/repositories/vdr-testing /var/paludis/repositories/verlihub /var/paludis/repositories/vmware /var/paludis/repositories/voip /var/paludis/repositories/voyageur /var/paludis/repositories/vps /var/paludis/repositories/webapps-experimental /var/paludis/repositories/welp /var/paludis/repositories/wolf31o2 /var/paludis/repositories/wrobel /var/paludis/repositories/wschlich /var/paludis/repositories/wschlich-testing /var/paludis/repositories/x11 /var/paludis/repositories/xemacs /var/paludis/repositories/xen /var/paludis/repositories/xfce /var/paludis/repositories/xwing /var/paludis/repositories/zen-overlay /var/paludis/repositories/zugaina" SYNC="rsync://rsync.namerica.gentoo.org/gentoo-portage" USE="R X Xaw3d a52 aac aalib accessibility acl acpi adns aim alsa amd64 ao apache2 arts audiofile avahi bash-completion bcmath berkdb bg bidi blas bluetoothbzip2 cairo calendar canna caps cddb cdinstall cdparanoia cdr chasen cjk clamav cli cracklib crypt cscope ctype cups curl curlwrappers dbase dbm dbus dga djvudnx dri dts dv dvb dvd dvdr dvdread eds emacs emboss encode esd examples exif expat fam fastcgi fbcon fbsplash ffmpeg fftw firefox flac flatfile fltk fontconfig foomaticdb fortran freetds freewnn ftp gcj gd gdbm geoip ggi gif ginac glut gmp gnustep gnutls gpg gphoto2 gpm gps graphviz gsl gstreamer gtk guile halhardened howl htmlhandbook hyperwave-api iconv icq icu id3tag idn ieee1394 imagemagick imap imlib inifile innodb iodbc ipod ipv6 isdnlog jabber jack javascript jbig jikes joystick jpeg jpeg2k junit kdehiddenvisibility kdeprefix kerberos krb4 ladspa lapack lash latex lcms ldap leim libcaca libgda libnotify libsamplerate libwww lirc lm_sensors lua m16n-lib mad maildir mailwrapper matroska mcal mcve memlimit mhash midi migemo mikmod milter mime mmap mmx mng mnogosearchmono motif mozilla mp3 mpeg mpi mplayer msn mudflap mule multilib musepack musicbrainzi mzscheme nas ncurses neXt netboot netcdf networkmanager nis nls nntpnocd nptl nptlonly ocaml octave odbc offensive ofx ogg openal openexr opengl openmp osc oscar oss pam pcmcia pcntl pcre pda pdf perl pertty pkcs11 plotutilspng portaudio posix postgres ppds pppd pulseaudio python q8 qdbm qt3 qt3support qt4 quicktime rdesktop readline recode reflection ruby samba sample sasl scanner selinux session sharedext sharedmem shorten simplexml skey slang slp smartcard sndfile snmp soap sockets socks5 sox speex spell spl sqlite sqlite3 sse sse2 ssl startup-notification svg sysfs syslog sysvipc szip tcl tcpd test tetex theora threads tidy tiff tk tokenizer truetype unicode usb v4l vcd vhosts videos vim-syntax vorbis wavpack wddx wifi win32codec wmf wxwindows x264 xattr xcomposite xemacs xface xft xine xinerama xinetd xml xml-rpc xmlrpc xorg xosd xpm xprint xscreensaver xsl xv xvid yahoo yaz zeroconf zip zlib zsh-completion" ALSA_CARDS="ad1816a ad1848 ad1848-lib ad1889 adlib ali5451 als100 als300 als4000 atiixp atiixp-modem au8810 au8820 au8830 azt2320 azt3328 bt87x ca0106 cmi8330 cmipci cs4231 cs4231-lib cs4232 cs4236 cs4281 cs46xx cs5535audio darla20 darla24 dt019x dummy echo3g emu10k1 emu10k1x ens1370 ens1371 es1688 es18xx es1938 es1968 es968 fm801 fm801-tea575x gina20 gina24 gusclassic gusextreme gusmax hda-intel hdsp hdspm ice1712 ice1724 indigo indigodj indigoio intel8x0 intel8x0m interwave interwave-stb korg1212 layla20 layla24 loopback maestro3 mia miro mixart mona mpu401 msnd-pinnacle mtpav mts64 nm256 opl3sa2 opti92x-ad1848 opti92x-cs4231 opti93x pc98-cs4232 pcsp pcxhr pdaudiocf pdplus portman2x4 riptide rme32 rme96 rme9652 s3c2410 sa11xx-uda1341 sb16 sb8 sbawe seq-dummy serial-u16550 sgalaxy soc sonicvibes sscape trident usb-audio usb-usx2y via82xx via82xx-modem virmidi vx222 vxpocket wavefront ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linearmeter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic auth_digest authn_alias authn_anon authn_dbd authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex dav dav_fs dav_lock dbd deflate dir envexpires ext_filter filter headers ident imagemap include info log_config log_forensic mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack version vhost_alias" APACHE2_MPMS="event" CAMERAS="adc65 agfa_cl20 aox barbie canon casio_qv clicksmart310 digigr8 digita dimagev dimera3500 directory enigma13 fuji gsmart300 hp215 iclick jamcam jd11 kodak_dc120 kodak_dc210 kodak_dc240 kodak_dc3200 kodak_ez200 konica konica_qm150 largan lg_gsm mars mustek panasonic_coolshot panasonic_dc1000 panasonic_dc1580 panasonic_l859 pccam300 pccam600 polaroid_pdc320 polaroid_pdc640 polaroid_pdc700 ptp2 ricoh ricoh_g3 samsung sierra sipix_blink sipix_blink2 sipix_web2 smal sonix sony_dscf1 sony_dscf55 soundvision spca50x sq905 stv0674 stv0680 sx330z template toshiba_pdrm11" ELIBC="glibc" INITNG_PLUGINS="also bash_launcher chdir chroot conflict cpout critical ctrlaltdel daemon_clean debug_commands envparser find fmon fstat history idleprobe initctl interactive iparser last limit lockfile logfile netdev netprobe ngc4 ngcs nge pause provide reload renice rlparser service_filesimple_launcher stcmd stdout syncron syslog sysreq unneeded usplash" INPUT_DEVICES="evdev keyboard mouse synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en en_US ja ja_JP" PALUDIS_HOOKS="eselect check-security-updates collision-protect compress-man nice undo-prelink update-eix sync-disks" USERLAND="GNU" VIDEO_CARDS="fbdev glint nv nvidia nouveau v4l vesa vga" Unset: CPPFLAGS, CTARGET, FFLAGS, INSTALL_MASK
Please specify the version (or all) of app-portage/eix in the Summary.
There are two problems involved: One is the printed output of update-eix: update-eix does mistakenly not clear the string. This is now fixed in eix' svn trunk (>=eix-0.14.1). However, this concorns only the _printed_ output, update-eix uses internally the correct data (the correct output is the last part of the string). So the other problem seems to be that no data is found in your case. Are you sure that you want cache method "assign: and not "metadata-assign:"? Note that the former means that the data is expected in e.g. /var/cache/paludis/metadata/var/paludis/repositories/local for your overlay [1] (i.e. the overlay path is appended to the path which you pass after "assign:"). Also, are you sure that paludis uses the "assign" format and not the "flat" format for the overlay data?
I'm pretty sure that I want assign:*, as my directory structure is this: /var/cache/paludis/metadata: gentoo local ...etc... and the contents of the files is like so: SLOT=0 SRC_URI=mirror://berlios/krypt/krypt-0.2.tar.bz2 HOMEPAGE=http://krypt.berlios.de/ LICENSE=GPL-2 DESCRIPTION=A tool to mount LUKS-encrypted volumes via HAL in KDE KEYWORDS=~amd64 ~x86 IUSE=arts debug elibc_FreeBSD xinerama EAPI=0
Waitaminute, on re-reading your post, I just now really noticed the 'the overlay path is appended to the path which you pass after "assign:"' bit. That would do it. Would metadata-assign:* append the repo_name to the path passed to it? If not, I'll need to do a separate entry in OVERRIDE_CACHE_METHOD for each overlay, which is likely to be a pain.
(In reply to comment #4) > Would metadata-assign:* append the repo_name to the path passed to it? No; repo_name is not supposed to act as part of a path (I am not even sure whether it is specified that it must not contain filename invalid symbols like "/"). You must specify [OVERRIDE_]CACHE_METHOD for each overlay separately (or by using corresponding commandline arguments). Another way - for all overlays in /var/paludis/repositories/X for which the corresponding data is stored in /var/cache/paludis/metadata/X - you can also do mkdir -p /some_directoy/var/paludis ln -s /var/cache/paludis/metadata /some_directory/var/paludis/repositories and then use "assign:/some_directory" for these overlays.
Hm. Since one of the stated use-cases of flat:* is "if you are using paludis to generate the metadata in the corresponding directory.", it may be worth stating exactly how paludis generates metadata. In the paludis repo config file, I have the line write_cache = /var/cache/paludis/metadata Paludis uses this line to specify where the metadata is generated, but not in the way that flat:* seems to assume. Rather, it generates the metadata for each repository in ${write_cache}/${repo_name}/ So, eix's flat:* and assign:* caches are essentially useless with paludis, one of the stated use cases, in almost all situations - the only situation where it will work is when write_cache = /var/cache/paludis/metadata/var/paludis/repositories/ AND the repo_name is the same as the name of the directory which that specific repository is stored in. It is worth noting that there are several (at least 16, maybe more) repositories in layman whose layman names (and therefore the names of the layman-created directories they are in) are different than their repo_name file indicates.
It is possible to configure use CACHE_METHOD so that the correct paths are read also with paludis. I do not agree that eix should automatically use paludis broken method to form paths.
Actually, it's Paludis which is more closely adhering to the open specifications agreed upon by the Council. The Council ratified the Package Manager Specification, which defines [1] the repo_name file as containing the unique repository id. Also, glep 42 [2] requires a unique repository ID (even for overlays), which was agreed to be the repo_name file when it was ratified. Even portage itself complains if a repository is missing a repo_name file - therefore, it hews closer to the specification to use the repo_name, which is required by the specification to be a unique identifier. [1] http://dev.gentoo.org/~yngwin/pms/pms.html#x1-330003.4 [2] http://www.gentoo.org/proj/en/glep/glep-0042.html#required-portage-enhancements
Fact is that many overlays (even some layman ones, but private overlays probably many more) have no repo_name, and there is no way to guarantee world-wide name uniqueness, so collissions with all their problems are just a question of time. Since no name was the only way in so-to-speak "EAPI=0"-overlay, I think that it is not acceptable that basic functionality suddenly ceases to work (it is a different story about new additional features or a better display or perhaps printing a small warning). Anyway, to stop paludis users from whining, I have implemented yesterday night (I just couldn't report since I couldn't reach bugs.gentoo.org for some hours) a new repo-assign/repo-flat method which appends "/${repo_name}". Problems with missing repo_name's or double names have to be solved manually on a CACHE_METHOD basis, of course.
I forgot to ask: Maybe paludis has some policy of dealing with missing/colliding repo_names, e.g. calling them "unnamed%d" or "name%d"? Since the new method is paludis-specific anyway, eix might perhaps use the same policy...
Paludis's solution to repositories missing repo-names is to call them "x-${directory}" where directory is the name (not the path) of the directory the repository is in. Examples: A repository in /var/paludis/repositories/foobar has a repo_name file that says "barfoo". Paludis calls the repository "barfoo". A repository in /var/paludis/repositories/wibble has no repo_name file. Paludis calls the repository "x-wibble".
Thanks. The corresponding cache method repo-assign:* is now available in eix' svn trunk.
Thank _you_ - you've been extremely helpful and prompt. I'll probably be switching to SVN now. Much luck!