Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 265420 - Merge of binary packages fails, when the ebuild has been deleted in the course of system updates
Summary: Merge of binary packages fails, when the ebuild has been deleted in the cours...
Status: CONFIRMED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Unspecified (show other bugs)
Hardware: All Linux
: High enhancement (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-04-08 09:54 UTC by David
Modified: 2009-07-09 19:15 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description David 2009-04-08 09:54:27 UTC
I don't know, whether this is a bug or not, but binary packages cannot be emerged*) any more, when the corresponding ebuild has been deleted in the course of system updates (emerge --sync).

*) The binary package is built in a different environment (CHOST="i386-gentoo-linux-uclibc") than it is emerged (CHOST="i686-pc-linux-gnu").

(However the merge succeeds in the development environment, which shares /usr/portage of the server, but where an emerge --metadata or similar is only executed with very low frequency)

I have used this, to quickly build the root-system of an embedded system from the .tbz2 files after checkout of a SVN repository (on any PC). This had the advantage for my repository that I only needed to save the current version of the emerge command, rendering unnecessary adding the whole (mostly binary) root-system to it. The Gentoo PKGDIR grew apart from this - separately cared of, so everything was redundant-free (and also important: simple to apply).

The emerge command and its error message is:



Reproducible: Always

Steps to Reproduce:
1.Set up development chroot with shared /usr/portage of the underlying host system (see also set up of gentoo embedded)
2.Keep the host up to date, using emerge --sync & frieds
3.When ebuild versions used previously for building a binary package disappear after a sync, then execute on the host the command
ACCEPT_CHOSTS="i386-gentoo-linux-uclibc" ROOT="target-directory" USE="Flags-that-have-been-set-or-unset-when-building-the-binary-package" emerge -kN [packages-for-which-a-tbz2-exists-with-specific version]


Actual Results:  
The emerge fails, e.g.:

ACCEPT_CHOSTS="i386-gentoo-linux-uclibc" ROOT="./rootfs" USE="make-symlinks -crypt -ssl -ipv6 -zlib vram" emerge -vkN uclibc "=busybox-1.11.1" "=e2fsprogs-1.41.2" pciutils "<dhcpcd-4.0.0" nano bluez-utils usbutils mini_httpd dropbear

These are the packages that would be merged, in order:

Calculating dependencies... done!

!!! All ebuilds that could satisfy "=sys-fs/e2fsprogs-1.41.2" have been masked.
!!! One of the following masked packages is required to complete your request:
- sys-fs/e2fsprogs-1.41.2 (masked by: )

For more information, see the MASKED PACKAGES section in the emerge
man page or refer to the Gentoo Handbook.


Expected Results:  
successful merge

I think, it is not important, but when I omit "ACCEPT_CHOSTS" I noticed that the error message says "masked by: CHOST: i386-gentoo-linux-uclibc".

ROOT="./rootfs" USE="make-symlinks -crypt -ssl -ipv6 -zlib vram" emerge -vkN uclibc "=busybox-1.11.1" "=e2fsprogs-1.41.2" pciutils "<dhcpcd-4.0.0" nano bluez-utils usbutils mini_httpd dropbear

These are the packages that would be merged, in order:

Calculating dependencies... done!

!!! All ebuilds that could satisfy "=sys-fs/e2fsprogs-1.41.2" have been masked.
!!! One of the following masked packages is required to complete your request:
- sys-fs/e2fsprogs-1.41.2 (masked by: CHOST: i386-gentoo-linux-uclibc)

For more information, see the MASKED PACKAGES section in the emerge
man page or refer to the Gentoo Handbook.
Comment 1 Jeremy Olexa (darkside) (RETIRED) archtester gentoo-dev Security 2009-04-10 23:03:13 UTC
emerge --info please to verify portage version.
Comment 2 David 2009-04-11 08:08:37 UTC
(In reply to comment #1)
> emerge --info please to verify portage version.
> 

Portage is different on the host (server) and the chroot-embedded environment that runs on it.

The host (server), where the emerge fails:

gentoo ~ # emerge --info
Portage 2.1.6.7 (default/linux/x86/2008.0, gcc-4.1.2, glibc-2.8_p20080602-r1, 2.6.24-gentoo-r8 i686)
=================================================================
System uname: Linux-2.6.24-gentoo-r8-i686-Intel-R-_Xeon-TM-_CPU_3.20GHz-with-glibc2.0
Timestamp of tree: Fri, 20 Mar 2009 07:15:01 +0000
app-shells/bash:     3.2_p39
dev-lang/python:     2.5.2-r7
dev-python/pycrypto: 2.0.1-r6
dev-util/cmake:      2.4.6-r1
sys-apps/baselayout: 1.12.11.1
sys-apps/sandbox:    1.2.18.1-r2
sys-devel/autoconf:  2.13, 2.63
sys-devel/automake:  1.7.9-r1, 1.9.6-r2, 1.10.2
sys-devel/binutils:  2.18-r3
sys-devel/gcc-config: 1.4.0-r4
sys-devel/libtool:   1.5.26
virtual/os-headers:  2.6.27-r2
ACCEPT_KEYWORDS="x86"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O2 -march=pentium4 -pipe -fomit-frame-pointer -mmmx"
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/config"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/terminfo /etc/udev/rules.d"
CXXFLAGS="-O2 -march=pentium4 -pipe -fomit-frame-pointer -mmmx"
DISTDIR="/usr/portage/distfiles"
FEATURES="distlocks fixpackages parallel-fetch protect-owned sandbox sfperms strict unmerge-orphans userfetch"
GENTOO_MIRRORS="http://mirrors.sec.informatik.tu-darmstadt.de/gentoo/ http://ftp.uni-erlangen.de/pub/mirrors/gentoo/"
LDFLAGS="-Wl,-O1"
LINGUAS="de"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
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="/usr/portage"
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
USE="X acl afs berkdb bzip2 cdr cli cracklib crypt cups dri exif fortran gdbm gif gpm gstreamer gtk iconv icq imagemagick imap ipv6 isdnlog jpeg jpeg2k kde midi mmx mng mozilla mpeg mplayer msn mudflap ncurses netboot nls nptl nptlonly openmp oscar pam pcre pdf perl php plotutils png pppd python readline reflection samba session spell spl sse sse2 ssl subversion svg sysfs tcpd tiff truetype unicode usb win32codecs wmf x86 xine xinerama xorg xvid yahoo zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="evdev keyboard mouse vmmouse" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="de" USERLAND="GNU" VIDEO_CARDS="dummy fbdev vesa vga vmware"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LANG, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY



Info of the chroot-embedded environment (running on the aforementioned server and sharing /usr/portage), where the emerge of binary packages still succeeds:



(chroot) gentoo ~ # emerge --info
Portage 2.1.4.5 (uclibc/x86, gcc-4.1.2, uclibc-0.9.28.3-r3, 2.6.24-gentoo-r8 i686)
=================================================================
System uname: 2.6.24-gentoo-r8 i686 unknown
Timestamp of tree: Fri, 20 Mar 2009 07:15:01 +0000
app-shells/bash:     3.2_p33
dev-lang/python:     2.4.4-r13, 2.5.2-r7
dev-python/pycrypto: 2.0.1-r6
sys-apps/baselayout: 2.0.0
sys-apps/openrc:     0.2.5
sys-apps/sandbox:    1.2.18.1-r2
sys-devel/autoconf:  2.61-r2
sys-devel/automake:  1.10.1-r1
sys-devel/binutils:  2.18-r3
sys-devel/gcc-config: 1.4.0-r4
sys-devel/libtool:   1.5.26
virtual/os-headers:  2.6.23-r3
ACCEPT_KEYWORDS="x86"
CBUILD="i386-gentoo-linux-uclibc"
CFLAGS="-Os -march=i486 -pipe -fomit-frame-pointer"
CHOST="i386-gentoo-linux-uclibc"
CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/config"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/terminfo /etc/udev/rules.d"
CXXFLAGS="-Os -march=i486 -pipe -fomit-frame-pointer"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoconfig buildpkg distlocks metadata-transfer nodoc noinfo noman sandbox sfperms strict unmerge-orphans userfetch"
GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo"
LDFLAGS="-Wl,-O1"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
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="/usr/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="cli cracklib crypt dri midi minimal mudflap ncurses openmp pcre perl python readline reflection session spl ssl tcpd uclibc x86 xorg zlib" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="uclibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" USERLAND="GNU" VIDEO_CARDS="dummy fbdev v4l"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LANG, LC_ALL, LINGUAS, MAKEOPTS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY
Comment 3 Zac Medico gentoo-dev 2009-04-13 03:15:23 UTC
Please try to reproduce with the latest available portage version (currently 2.1.6.11 or 2.2_rc30).
Comment 4 Zac Medico gentoo-dev 2009-04-14 01:07:36 UTC
(In reply to comment #0)
> 3.When ebuild versions used previously for building a binary package disappear
> after a sync, then execute on the host the command
> ACCEPT_CHOSTS="i386-gentoo-linux-uclibc" ROOT="target-directory"
> USE="Flags-that-have-been-set-or-unset-when-building-the-binary-package" emerge
> -kN [packages-for-which-a-tbz2-exists-with-specific version]

Please note that it's messy to override environment variables that way. The preferred approach is to use the --config-root option.
Comment 5 David 2009-04-14 22:06:58 UTC
(In reply to comment #3)
> Please try to reproduce with the latest available portage version (currently
> 2.1.6.11 or 2.2_rc30).
> 

With 2.1.6.11 there is no difference in principle (some more packages that can't be emerged, due to newly executed emerge --sync).

Is or will portage be designed to emerge binary packages for which ebuilds don't exist any more? (On the other hand the .tbz2 files should equally be suited for my intended purposes.)
Comment 6 Zac Medico gentoo-dev 2009-04-14 23:13:24 UTC
I'm not sure exactly what's causing your problem, but yes, portage is supposed to be able to install binaries for which there are no ebuilds available. However, if there's no ebuild available then it's supposed to prefer a version for which there is an ebuild available since it's assumed that there is something wrong with the ebuild if it's been removed from the tree (behavior imposed by bug #252167). You can use -K/--usepkgonly if you want non-existence of a corresponding to ebuild to be ignored.
Comment 7 David 2009-07-09 13:41:19 UTC
(In reply to comment #6)
> I'm not sure exactly what's causing your problem, but yes, portage is supposed
> to be able to install binaries for which there are no ebuilds available.

I have found the solution now - 
simply omit -N (newuse) and the package will perfectly be emerged in any environment.

For example:

ACCEPT_CHOSTS="i386-gentoo-linux-uclibc" ROOT="./rootfs" USE="make-symlinks
-crypt -ssl -ipv6 -zlib vram" emerge -vk uclibc "=busybox-1.11.1"
"=e2fsprogs-1.41.2" pciutils "<dhcpcd-4.0.0" nano bluez-utils usbutils
mini_httpd dropbear

Comment 8 Zac Medico gentoo-dev 2009-07-09 19:14:16 UTC
(In reply to comment #7)
> I have found the solution now - 
> simply omit -N (newuse) and the package will perfectly be emerged in any
> environment.

Oh, I see. With --newuse it behaves like the new --binpkg-respect-use < y | n > option that we have in svn (from bug #276866 ).
Comment 9 Zac Medico gentoo-dev 2009-07-09 19:15:44 UTC
(In reply to comment #0)
> !!! All ebuilds that could satisfy "=sys-fs/e2fsprogs-1.41.2" have been masked.
> !!! One of the following masked packages is required to complete your request:
> - sys-fs/e2fsprogs-1.41.2 (masked by: )

We should definitely fix this because it's quite confusing.