g-cpan -i <module_name> does not add the package atom to the world file. This means that emerge --depclean will always want to remove any g-cpan installed modules and their dependencies. I've tested with both x86 (g-cpan-0.13.02) and ~x86 (g-cpan-0.14.0) $ emerge --info Portage 2.1-r1 (default-linux/x86/2006.0, gcc-3.4.6, glibc-2.3.6-r4, 2.6.16-suspend2-r8 i686) ================================================================= System uname: 2.6.16-suspend2-r8 i686 Intel(R) Pentium(R) M processor 1.86GHz Gentoo Base System version 1.6.15 ccache version 2.3 [enabled] app-admin/eselect-compiler: [Not Present] dev-lang/python: 2.4.3-r1 dev-python/pycrypto: 2.0.1-r5 dev-util/ccache: 2.3 dev-util/confcache: [Not Present] sys-apps/sandbox: 1.2.17 sys-devel/autoconf: 2.13, 2.59-r7 sys-devel/automake: 1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2 sys-devel/binutils: 2.16.1-r3 sys-devel/gcc-config: 1.3.13-r3 sys-devel/libtool: 1.5.22 virtual/os-headers: 2.6.11-r2 ACCEPT_KEYWORDS="x86" AUTOCLEAN="yes" CBUILD="i686-pc-linux-gnu" CFLAGS="-Os -march=pentium-m -fomit-frame-pointer -fno-ident -pipe" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config" CONFIG_PROTECT_MASK="/etc/env.d /etc/gconf /etc/revdep-rebuild /etc/splash /etc/terminfo" CXXFLAGS="-Os -march=pentium-m -fomit-frame-pointer -fno-ident -pipe -fvisibility-inlines-hidden" DISTDIR="/usr/portage/distfiles" FEATURES="autoconfig ccache distlocks metadata-transfer parallel-fetch sandbox sfperms strict" GENTOO_MIRRORS="ftp://mirrors.blueyonder.co.uk/mirrors/gentoo ftp://ftp.mirrorservice.org/sites/www.ibiblio.org/gentoo/ http://distfiles.gentoo.org" LINGUAS="en_GB" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude='/distfiles' --exclude='/local' --exclude='/packages'" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage /usr/portage/local/layman/catalystframework" SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage" USE="x86 X acpi alsa apache2 apm arts avi bash-completion berkdb bitmap-fonts bzip2 cairo cli crypt cups curl dlloader dri dvd emacs emboss encode ffmpeg firefox foomaticdb fortran gdbm gif glut gmp gpm gs gstreamer gtk2 hal imagemagick imlib isdnlog java jpeg kde kdeenablefinal kdexdeltas latin1 lcms libg++ libwww logrotate mad mikmod mmx mng mp3 mpeg musicbrainz ncurses nls nptl nsplugin ogg opengl oss pam pcre pdflib perl pic png ppds pppd python qt qt3 qt4 quicktime readline reflection samba sdl session smartcard spell spl sse sse2 ssl svg tcpd threads tiff truetype truetype-fonts type1-fonts udev unicode vorbis win32codecs xml xorg xscreensaver xv zlib elibc_glibc input_devices_keyboard input_devices_mouse input_devices_synaptics kernel_linux linguas_en_GB userland_GNU video_cards_fglrx video_cards_radeon video_cards_vesa video_cards_fbdev video_cards_vga" Unset: CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LDFLAGS, PORTAGE_RSYNC_EXTRA_OPTS
*** Bug 144207 has been marked as a duplicate of this bug. ***
@mcummings: Either we get rid of the --oneshot option (g-cpan l. 401) or we create a method in Gentoo::Portage to record packages in the world file. Easiest way would be removing the oneshot option. What made you add this option? I cannot think of any reason right now why it's in there.
The 'original' version of g-cpan emerged everything in the overlay one at a time (regardless of what was passed, which meant everything in your g-cpan overlay was put in world). This was fixed in the new version (relying instead on the passed list) but the --oneshot wasn't removed.
Fixed in svn.