Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 158100 - emerge --tree output is not the exact reverse of actual merge order
Summary: emerge --tree output is not the exact reverse of actual merge order
Status: RESOLVED FIXED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Core - Interface (emerge) (show other bugs)
Hardware: AMD64 Linux
: High minor (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords:
: 161538 168145 (view as bug list)
Depends on:
Blocks: 167107
  Show dependency tree
 
Reported: 2006-12-13 19:33 UTC by Akshay Shah
Modified: 2007-02-23 15:27 UTC (History)
3 users (show)

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


Attachments
make --tree ouput the exact reverse of actual merge order (exact_reverse.patch,1.13 KB, patch)
2007-02-16 20:23 UTC, Zac Medico
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Akshay Shah 2006-12-13 19:33:39 UTC
User-Agent:       Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1) Gecko/20061209 Firefox/2.0
Build Identifier: 

When using emerge with the --tree AND --ask arguments, the tree view shows up
correctly (in reverse order) but, upon answering in the affirmative to the --ask
option, emerges then in the order shown in the console.

If I don't use the --tree option, then the order prints out correctly and
compiles in the proper order.  If I don't use --ask, it still compiles in the
incorrect order.

Reproducible: Always

Steps to Reproduce:
For example:
# emerge world --deep --update --ask --tree

These are the packages that would be emerged, in revere order:

Calculating world dependencies... done!
[ebuild U] application_a-1.0-r1 [1.0]
[nomerge ] application_b-1.0
[nomerge ]  dependency_a-1.0
[ebuild U]   dependency_b-1.0-r2 [1.0]

Total: 2 packages (2 upgrades)

Would you like to merge these packages? [Yes/No]yes
Actual Results:  
>>> Emerging (1 of 2) application_a-1.0-r1
... etc.

Expected Results:  
>>> Emerging (1 of 2) dependency_b-1.0-r2
... etc.

Unfortunately, I don't have any non-amd64 computers to test this on, but the
same bug appears on two x86_64 machines running portage-2.1.2_rc3.  The issue I
was coming across was set to emerge after the dependent application, and thus
the latter refused to compile or the process would just stop.
Comment 1 Zac Medico gentoo-dev 2006-12-13 21:34:49 UTC
Sorry, I can't reproduce that.  It shouldn't matter what architecture or OS you are using.

Here's an example I've just tested with portage-2.1.2_rc3-r4:

$ emerge -av mythtv

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

Calculating dependencies... done!
[ebuild  N    ] media-libs/libdvb-0.5.5.1-r3  USE="-doc" 0 kB
[ebuild  N    ] media-tv/mythtv-0.20_p11626  USE="alsa dts dvb dvd ieee1394 joystick mmx opengl perl vorbis (-altivec) -backendonly -crciprec -dbox2 -debug -freebox -frontendonly -hdhomerun -ivtv -jack -lcd -lirc -xvmc" VIDEO_CARDS="i810 via -nvidia" 12,108 kB
[ebuild  N    ] x11-themes/mythtv-themes-0.20  13,852 kB

Total: 3 packages (3 new), Size of downloads: 25,960 kB

Would you like to merge these packages? [Yes/No] n

$ emerge -at mythtv

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

Calculating dependencies... done!
[ebuild  N    ] x11-themes/mythtv-themes-0.20
[ebuild  N    ]  media-tv/mythtv-0.20_p11626  USE="alsa dts dvb dvd ieee1394 joystick mmx opengl perl vorbis (-altivec) -backendonly -crciprec -dbox2 -debug -freebox -frontendonly -hdhomerun -ivtv -jack -lcd -lirc -xvmc" VIDEO_CARDS="i810 via -nvidia"
[ebuild  N    ]   media-libs/libdvb-0.5.5.1-r3  USE="-doc"

Would you like to merge these packages? [Yes/No] y

>>> Emerging (1 of 3) media-libs/libdvb-0.5.5.1-r3 to /
Comment 2 Bo Ørsted Andresen (RETIRED) gentoo-dev 2006-12-13 21:48:22 UTC
(In reply to comment #0)
> Calculating world dependencies... done!
> [ebuild U] application_a-1.0-r1 [1.0]
> [nomerge ] application_b-1.0
> [nomerge ]  dependency_a-1.0
> [ebuild U]   dependency_b-1.0-r2 [1.0]
> 
> Total: 2 packages (2 upgrades)
> 
> Would you like to merge these packages? [Yes/No]yes
> Actual Results:  
> >>> Emerging (1 of 2) application_a-1.0-r1
> ... etc.
> 
> Expected Results:  
> >>> Emerging (1 of 2) dependency_b-1.0-r2

You failed to tell us but I assume you're using portage-2.1.2. That no longer merges in reverse order unless there's a reason to do so. If application_b needed upgrade it would be merged after dependency_b and after application_a. Since application_a doesn't depend upon dependency_b there's no reason to compile it last...

Hence it's no longer strictly reverse order but some sort of mixed order. ;) Yet dependencies are still shown in reverse order.
Comment 3 Bo Ørsted Andresen (RETIRED) gentoo-dev 2006-12-13 22:57:34 UTC
(In reply to comment #2)
> You failed to tell us but I assume you're using portage-2.1.2.

Heh, I didn't notice it was in the summary. ;) But anyway this isn't a bug. It's the result of a major improvement of the underlying code (see bug #147766 for details). It is, however, a change in behaviour since portage-2.1.1.
Comment 4 Jakub Moc (RETIRED) gentoo-dev 2007-01-11 14:28:20 UTC
*** Bug 161538 has been marked as a duplicate of this bug. ***
Comment 5 Alexander Skwar 2007-01-11 15:47:37 UTC
Please reopen, as there's still something wrong.

When I do "emerge -vat euses aria2 curl", emerge prints:

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

Calculating dependencies... done!
[ebuild  N    ] app-portage/euses-2.5.4  16 kB
[ebuild  N    ] net-misc/aria2-0.9.0-r1  USE="ares bittorrent gnutls metalink
nls ssl" 397 kB
[ebuild   R   ] net-misc/curl-7.15.5  USE="ares* gnutls* idn -ipv6 -kerberos
-krb4 -ldap ssl test*" 1,507 kB
[ebuild  N    ]  net-dns/c-ares-1.3.2  323 kB


Emerge writes, that packages will be emerged in REVERSE ORDER, so c-ares will be emerged first. 

But that's not what's happening - instead, euses will be emerged first.

If that's expected behaviour, then at least the emerge message reg. "reverse order" is wrong.



askwar@hetzner ~ $ emerge --info
Portage 2.1.2_rc4-r8 (hardened/x86/2.6, gcc-3.4.6, glibc-2.3.6-r5,
2.6.17-hardened-r1.03.no-modules i686)
=================================================================
System uname: 2.6.17-hardened-r1.03.no-modules i686 AMD Athlon(tm) XP 2000+
Gentoo Base System version 1.12.8
Last Sync: Thu, 11 Jan 2007 06:20:01 +0000
ccache version 2.4 [enabled]
dev-java/java-config: 1.3.7, 2.0.31
dev-lang/python:     2.3.6, 2.4.4
dev-python/pycrypto: 2.0.1-r5
dev-util/ccache:     2.4-r6
sys-apps/sandbox:    1.2.18.1
sys-devel/autoconf:  2.13, 2.61
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10
sys-devel/binutils:  2.16.1-r3, 2.17
sys-devel/gcc-config: 1.3.14
sys-devel/libtool:   1.5.22
virtual/os-headers:  2.6.19
ACCEPT_KEYWORDS="x86 ~x86"
AUTOCLEAN="yes"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/X11/xkb"
CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/gconf
/etc/java-config/vms/ /etc/revdep-rebuild /etc/terminfo /etc/texmf/web2c"
CXXFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"
DISTDIR="/Gentoo/Portage/distfiles"
EMERGE_DEFAULT_OPTS="--alphabetical"
FEATURES="autoconfig buildpkg ccache distlocks metadata-transfer sandbox
sfperms strict"
GENTOO_MIRRORS="        http://ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/   
http://linux.rz.ruhr-uni-bochum.de/download/gentoo-mirror/  
ftp://gentoo.itdnet.net/gentoo/      http://ftp.gentoo.or.kr/       
http://distfiles.gentoo.org/ "
LDFLAGS="-Wl,-O1"
LINGUAS="de"
MAKEOPTS="-j2"
PKGDIR="/Gentoo/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="/Gentoo/Portage/build"
PORTDIR="/Gentoo/Portage/tree"
PORTDIR_OVERLAY="/Gentoo/Portage/local-tree/misc
/Gentoo/Portage/local-tree/overlays/nx/nx/testing
/Gentoo/Portage/local-tree/overlays/gentoo-de"
SYNC="rsync://rsync.de.gentoo.org/gentoo-portage"
USE="3dnow 3dnowext 7zip acl apache2 async bash-completion berkdb bzip2 cap
caps ccache checkpath chroot cracklib crypt cyrus dcc discard-path dlloader ecc
erandom exif extensions firefox glep glibc-omitfp hardened hardenedphp hpn
iconv idea idled idn imagemagick imap imlib imlib2 jikes jpeg kdeenablefinal
linuxthreads-tls logrotate lynxkeymap maildir mime mmap mmx mmxext mode-owner
moznoirc mozsvg multislot nls no-old-linux noaudio nocd nodrm nolvm1 nopop3d
offensive pam pam-mysql pcre pdf php pic png posix postfix prelude pyzor razor
readline recode reiserfs sasl sendfile server sftplogging sguil sharedmem sse
ssl static svg sysvipc szip tcpd threads tiff tokenizer tools unicode
userlocales utf8 vhosts vim-pager x86 xfs xinetd xorg zlib"
ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file
hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route
share shm softvol" ELIBC="glibc" INPUT_DEVICES="void" KERNEL="linux"
LINGUAS="de" USERLAND="GNU" VIDEO_CARDS="dummy none"
Unset:  CTARGET, INSTALL_MASK, LANG, LC_ALL, PORTAGE_RSYNC_EXTRA_OPTS
Comment 6 Bo Ørsted Andresen (RETIRED) gentoo-dev 2007-01-11 16:14:45 UTC
(In reply to comment #5)
> But that's not what's happening - instead, euses will be emerged first.
> 
> If that's expected behaviour, then at least the emerge message reg. "reverse
> order" is wrong.

In is expected behaviour as explained in comment #2. Would "mixed order" be better? Or do you have a better suggestion?
Comment 7 Akshay Shah 2007-01-11 16:25:34 UTC
I think the current wording is misleading. If everything is working as intended on the back end, perhaps a cosmetic UI update to reflect that there may not be an order at all would help to avoid confusion when portage 2.1.2 goes stable. Something along the lines of "These are the packages that would be emerged, in no particular order" or even "These are the packages that would be emerged" would suffice.
Comment 8 Bo Ørsted Andresen (RETIRED) gentoo-dev 2007-01-12 05:29:01 UTC
(In reply to comment #7)
> I think the current wording is misleading. If everything is working as
> intended on the back end, perhaps a cosmetic UI update to reflect that there
> may not be an order at all would help to avoid confusion when portage 2.1.2
> goes stable.

Oh, there is an order. It's just more complex that "in order" or "in reverse order". Where there are indentations the order is reversed. Where there isn't indentations it's in order... I think that summarizes it correctly.
Comment 9 Alexander Skwar 2007-01-12 06:28:45 UTC
(In reply to comment #8)
> It's just more complex that "in order" or "in reverse order".

But that's not what's printed. The statement says, that the pacakges are going to be emerged in reverse order.

>  I think that summarizes it correctly.

No, it does not summarize it correctly. It says:

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

What does that mean? I understand it so, that now a list of packages is printed. This list of packages shows, which packages are going to be emerged. And the packages are going to be emerged in *reverse* *order*. Ie. "in reverse order" relates to the first part of the sentence.

But that's just plain wrong. The packages are NOT going to be emerged in reverse order! See my comment #5 - the list shows "app-portage/euses" first and "net-dns/c-ares" last. If the information printed by emerge were correct, c-ares would be emerged first. However, euses is emerged first.

I agree with comment #7 - IMO the best wording would be: "These are the packages that would be emerged". Ie. no reference reg. the order in which the packages are going to be emerged. Maybe it would be useful to indicate, that the order in which packages are going to be emerged doesn't necessarily have to reflect the order in which the packages are printed by "--ask --tree".

Comment 10 Bo Ørsted Andresen (RETIRED) gentoo-dev 2007-01-12 06:44:36 UTC
(In reply to comment #9)
> >  I think that summarizes it correctly.
> 
> No, it does not summarize it correctly. It says:
[SNIPPED huge rant]

You misunderstand. "I think that summarizes it correctly." was referring to the previous two sentences in comment #8. I was just trying to make it clear what expected behaviour is.
Comment 11 Alexander Skwar 2007-01-12 07:27:38 UTC
(In reply to comment #10)
> (In reply to comment #9)
> > >  I think that summarizes it correctly.
> > 
> > No, it does not summarize it correctly. It says:
> [SNIPPED huge rant]

What rant? I explained how I understand what's printed, explained why I think it's wrong and gave a suggestion on how the situation might be improved.

> You misunderstand. "I think that summarizes it correctly." was referring to the
> previous two sentences in comment #8. I was just trying to make it clear what
> expected behaviour is.

Ah, okay. If it were possible to print all of that in the "emerge --ask --tree" output, than all is fine ;) Until then, I'd suggest to dump ", in revere order" from the output of "emerge --ask --tree", as emerge is not going to do what it says that it's going to do (although that's expected behaviour as I learned now). IOW: emerge says, that the packages are going to be emerged in reverse order. That's not happening. That's a bug (and not a "WFM").
Comment 12 Zac Medico gentoo-dev 2007-02-14 18:29:11 UTC
In svn r5965 I've fixed it so that --tree shows the exact reverse of the actual merge order.
Comment 13 Zac Medico gentoo-dev 2007-02-16 20:23:53 UTC
Created attachment 110420 [details, diff]
make --tree ouput the exact reverse of actual merge order

This patch should solve the issue.  It will be released in 2.1.2-r10.
Comment 14 Zac Medico gentoo-dev 2007-02-19 21:44:08 UTC
This has been released in 2.1.2-r10.
Comment 15 Jakub Moc (RETIRED) gentoo-dev 2007-02-23 15:27:22 UTC
*** Bug 168145 has been marked as a duplicate of this bug. ***