Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 252167 - sys-apps/portage- doesn't attempt to downgrade packages on keyword changes...
Summary: sys-apps/portage- doesn't attempt to downgrade packages on keyword cha...
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Core system (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Portage team
Keywords: InVCS
Depends on:
Blocks: 174509 197810 210077 216231
  Show dependency tree
Reported: 2008-12-22 12:11 UTC by Caleb Cushing
Modified: 2009-02-02 02:13 UTC (History)
2 users (show)

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

emerge --info (,3.31 KB, text/plain)
2008-12-22 12:12 UTC, Caleb Cushing
reject installed or binary packages if ebuild has been masked or removed (masked_or_removed.patch,4.71 KB, patch)
2008-12-23 08:25 UTC, Zac Medico
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Caleb Cushing 2008-12-22 12:11:37 UTC
I have a local overlay with mysql-community-5.1.30 when I remove the overlay. by removing PORTDIR_OVERLAY from make.conf and try emerge -avuDN world mysql-community doesn't attempt to downgrade. I also suspect several packages that are not upgrading... but don't have a specific example at this time.

Reproducible: Always
Comment 1 Caleb Cushing 2008-12-22 12:12:08 UTC
Created attachment 176142 [details]
emerge --info
Comment 2 Caleb Cushing 2008-12-22 16:44:00 UTC
it doesn't downgrade things in world either. created ghc 6.10.1 ebuild... which was marked stable, forgot to change keywords to ~arch. decided it wasn't quite ready. removed package from package.keywords and then change ebuild to have ~arch keywords. it won't downgrade unless I specifically emerge -av ghc.
Comment 3 Lars Wendler (Polynomial-C) (RETIRED) gentoo-dev 2008-12-22 18:14:39 UTC
please try 

  emerge --with-bdeps=y -uDav world

and report if this downgrades your mentioned packages.
Comment 4 Caleb Cushing 2008-12-22 19:10:00 UTC
it does not in either case.
Comment 5 Lars Wendler (Polynomial-C) (RETIRED) gentoo-dev 2008-12-22 19:50:45 UTC
Alright, could reproduce the problem. I emerged some ebuild from my local overlay which has x86 keyword. Then I changed the ebuild in the overlay to contain ~x86 keyword so emerge should downgrade to the next lower version of the package containing the x86 keyword, which portage- did not do upon "emerge --with-bdeps=y -uDav world".

If you want to reproduce, take some ebuild with at leat two different versions. Mark the higher one stable on your arch and emerge the package. Then move the ebuild from arch to ~arch so the only remaining stable ebuild is the lower one. then run "emerge -uDpv world" and watch the output.

# emerge --info
Portage (default/linux/x86/2008.0/desktop, gcc-4.1.2, glibc-2.6.1-r0, i686)
System uname: Linux-
Timestamp of tree: Mon, 22 Dec 2008 07:00:01 +0000
app-shells/bash:     3.2_p33
dev-java/java-config: 1.3.7-r1, 2.1.6-r1
dev-lang/python:     2.5.2-r7
dev-util/cmake:      2.4.6-r1
sys-devel/autoconf:  2.13, 2.61-r2
sys-devel/automake:  1.4_p6, 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:   1.5.26
virtual/os-headers:  2.6.23-r3
CFLAGS="-march=athlon-xp -mtune=athlon-xp -O2 -pipe -fomit-frame-pointer -finline-functions"
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/X11/gdm /etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/gnome /etc/gnome-vfs-2.0 /etc/init.d /etc/pango /etc/revdep-rebuild /etc/ssl /etc/terminfo /etc/udev/rules.d"
CXXFLAGS="-march=athlon-xp -mtune=athlon-xp -O2 -pipe -fomit-frame-pointer -finline-functions"
FEATURES="collision-protect distlocks fixpackages parallel-fetch protect-owned sandbox sfperms strict unmerge-orphans userfetch userpriv usersandbox"
MAKEOPTS="-j1 -s"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
USE="3dnow 3dnowext X a52 aac acpi alsa asf avi berkdb bluetooth branding bzip2 cairo cdr cli cracklib crypt dvd dvdr dvdread emboss encode evo fam ffmpeg flac gdbm gif gnutls gtk gtk2 iconv imagemagick imlib isdnlog jpeg kde kdehiddenvisibility lame libwww mad midi mikmod mmx mp3 mpeg mudflap ncurses nls nptl nptlonly nsplugin ogg oggvorbis opengl openmp pam pcre pdf png ppds pppd qt3 qt3support quicktime readline reflection sdl session slang spell spl sse ssl startup-notification svg sysfs theora tiff truetype usb vcd vorbis win32codecs x264 x86 xml xml2 xorg xulrunner xv xvid zlib" ALSA_CARDS="emu10k1 via82xx usb-audio" 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" ELIBC="glibc" INPUT_DEVICES="keyboard mouse" KERNEL="linux" LINGUAS="de" USERLAND="GNU" VIDEO_CARDS="nv nvidia"
Comment 6 Caleb Cushing 2008-12-22 22:10:06 UTC
not sure I agree with the title change as it's more than just keyword changes... I had portage convinced it wanted to emerge something I'd deleted.

can I suggest this block the stabilization of 2.1.6 (if that's still possible). It seems thus far it may only affect overlays. I've not been able to reproduce with in tree packages, yet I don't want to hold my breath that it couldn't have affects there.

Comment 7 Zac Medico gentoo-dev 2008-12-22 22:17:59 UTC
(In reply to comment #6)
> not sure I agree with the title change as it's more than just keyword
> changes... I had portage convinced it wanted to emerge something I'd deleted.

It should never try to install a package that does not exist. However, if the package happens to be installed already, it will use it to satisfy dependencies. Is that what you mean? If so, I think the new title is more accurate.
Comment 8 Caleb Cushing 2008-12-22 22:31:35 UTC
I had deleted the ebuild and ran emerge -av packagename it was still trying to install the deleted ebuild. had to run emerge -avu packagename to get it to attempt to downgrade. So far I've only been able to see these odd behaviors in overlays.
Comment 9 Zac Medico gentoo-dev 2008-12-22 22:45:37 UTC
(In reply to comment #8)
> I had deleted the ebuild and ran emerge -av packagename it was still trying to
> install the deleted ebuild.

This doesn't seem possible so I will assume that you still had a copy of the ebuild somewhere. If you are able to reproduce that case then please attach emerge --pretend --debug output for the command which would install the supposedly non-existent ebuild.
Comment 10 Caleb Cushing 2008-12-22 23:10:30 UTC
doing some extra testing... doesn't seem to exist in 2.1.4. seems to partially exist in 2.2... this is possibly multiple bugs. actually 2.2 emerge -av missing package will attempt to downgrade while emerge -avu missing package does nothing. emerge -avuDN (bdeps or no) still fails. going back to get info on the missing package merge.
Comment 11 Caleb Cushing 2008-12-22 23:21:46 UTC
hmm... can't reproduce emerge -av ghc trying to remerge a non-existent ebuild. I can show emerge -avu ghc not attempting to downgrade though.

Calculating dependencies
      Arg: ghc
     Atom: dev-lang/ghc
   ebuild: dev-lang/ghc-6.8.2
installed: dev-lang/ghc-6.10.1
      Arg: ghc
     Atom: dev-lang/ghc:0
installed: dev-lang/ghc-6.10.1


ghc depends on
  ('installed', '/', 'dev-lang/ghc-6.10.1', 'nomerge') (soft)
ghc depends on
  ('installed', '/', 'dev-lang/ghc-6.10.1', 'nomerge') (soft)
('installed', '/', 'dev-lang/ghc-6.10.1', 'nomerge') (no children)

... done!
Comment 12 Zac Medico gentoo-dev 2008-12-23 08:25:00 UTC
Created attachment 176202 [details, diff]
reject installed or binary packages if ebuild has been masked or removed

If this patch is saved as /tmp/masked_or_removed.patch then it can be applied as follows:

 patch /usr/lib/portage/pym/_emerge/ /tmp/masked_or_removed.patch
Comment 13 Lars Wendler (Polynomial-C) (RETIRED) gentoo-dev 2008-12-23 14:05:33 UTC
Applied the patch to portage-, repeated the tests described in comment #5 and now I get the expected results (downgrade of the package).

What I did not was doing the same tests with portage-2.2_rc18 as the only machine I'm using portage-2.2* is ~arch anyway.

Thanks for the quick fix, Zac.
Comment 14 Lars Wendler (Polynomial-C) (RETIRED) gentoo-dev 2008-12-23 18:44:57 UTC
Now I finally could reproduce Caleb's specific problem as well. portage-2.2 is affected as well. It doesn't really matter what keywords were used. Zacs patch fixes this problem as well.

Short description:
* copy x11-wm/icewm-1.3.5 into some local overlay and rename it to icewm-1.3.6
* Install this package so that it gets written into world file.
* remove the ebuild from your overlay and run "emerge -uDav world" which fails to downgrade to icewm-1.3.5

I did this with portage-2.2_rc18 on my ~amd64 machine, so the patch is currently needed for both branches.
Comment 15 Zac Medico gentoo-dev 2008-12-25 07:23:10 UTC
Thanks for testing. This is released in and 2.2_rc19.