View previous topic :: View next topic |
Author |
Message |
piavlo Tux's lil' helper
Joined: 21 Jun 2005 Posts: 141
|
Posted: Wed Feb 14, 2007 4:01 pm Post subject: [solved] portage strange behaviour since portage-2.1.2-r9 |
|
|
Hi, since i've updated to portage-2.1.2-r9,
the emerge behaves strangely for many vitrual ebuilds, for example:
Code: | emerge -pv --oneshot --nodeps perl-libnet
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild R ] dev-lang/perl-5.8.8-r2 USE="gdbm -berkdb -build -debug -doc -ithreads -perlsuid" 0 kB
[ebuild R ] virtual/perl-libnet-1.19 0 kB
Total: 2 packages (2 reinstalls), Size of downloads: 0 kB |
inspite of that i've used --nodeps, why does it want to re-emerge perl-5.8.8-r2 too?
even without the --nodeps flag it should have emerged only perl-libnet
Is this the new behaviour for virtual packages?
Can i change the new portage to the old behaviour without downgrading?
Last edited by piavlo on Sun Feb 18, 2007 9:30 am; edited 1 time in total |
|
Back to top |
|
|
vandien Tux's lil' helper
Joined: 03 May 2006 Posts: 137
|
Posted: Wed Feb 14, 2007 4:42 pm Post subject: |
|
|
perl seems to satisfy the requirement for virtual/perl-libnet-1.19, so "emerge perl-libnet" is the same as saying "emerge perl". Though this doesn't seem to be the case for perl-libnet-1.20.
Could you use --noreplace or even --update to get the desired results? |
|
Back to top |
|
|
piavlo Tux's lil' helper
Joined: 21 Jun 2005 Posts: 141
|
Posted: Wed Feb 14, 2007 5:05 pm Post subject: |
|
|
vandien wrote: | perl seems to satisfy the requirement for virtual/perl-libnet-1.19, so "emerge perl-libnet" is the same as saying "emerge perl". Though this doesn't seem to be the case for perl-libnet-1.20.
Could you use --noreplace or even --update to get the desired results? |
What i need is this behaviour:
Code: | # emerge -pv --nodeps perl-libnet
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild R ] virtual/perl-libnet-1.19 0 kB
Total size of downloads: 0 kB |
This is the kind of behaviour i get on the system not updated yet to portage-2.1.2-r9
This is very important for me since i have more than a dozen of wrapper scripts using emerge
which depend on old behaviour. |
|
Back to top |
|
|
vandien Tux's lil' helper
Joined: 03 May 2006 Posts: 137
|
Posted: Wed Feb 14, 2007 7:10 pm Post subject: |
|
|
just curious, why do you want it to behave like that?
I see now what you mean, I was testing emerge with perl-libnet not installed. It does make sense that --nodeps should cause emerge to just rebuild the virtual package.
this is an ugly work-around: | emerge -C virtual/perl-libnet
emerge --noreplace virtual/perl-libnet |
|
|
Back to top |
|
|
piavlo Tux's lil' helper
Joined: 21 Jun 2005 Posts: 141
|
Posted: Wed Feb 14, 2007 9:42 pm Post subject: |
|
|
vandien wrote: | just curious, why do you want it to behave like that? |
Since the wrapper scripts add some enhancements to the emerge, for example 2 most enhancement examples
1)one feature that i think is missing is a way of passing arbitrary environment variables to the emerge
like for example i need to build with env CHOST="i686-pc-linux-gnu" CC="gcc32" emerge swi-prolog
the swi-prolog on amd64 system, so i have package.envs file similar to pakcge.use Code: | cat /etc/portage/cs-package.envs
dev-lang/swi-prolog CHOST="i686-pc-linux-gnu" CC="gcc32"
dev-lang/swi-prolog-minisat CHOST="i686-pc-linux-gnu" CC="gcc32"
app-admin/mon CONFIG_PROTECT_MASK="/etc/alert/alert.d /etc/mon/mon.d"
x11-libs/xview CHOST="i686-pc-linux-gnu" CC="gcc32" |
This way i don't need to worry about specifying these manually then i rebuild/upgrade the system.
2)Another feature missing is having a way to pre-emerge ,post-emerge ,pre-unmerge, post-unmerge
scripts which are not dependent on specific pkg version.Some examples:
then grub is rebuild/upgraded, the boot loader need to be reinstalled, so this is done automatically Code: | cat /etc/portage/cs-helpers/sys-boot/grub
cs-post-emerge() {
if [ -x /boot/grub/install.sh ]; then
/boot/grub/install.sh
fi
} |
or for remote backup i need spacial perms to the dump utility Code: | cat /etc/portage/cs-helpers/app-arch/dump
cs-post-emerge() {
gpasswd -a backup disk
chgrp wheel /usr/sbin/dump
chmod 4010 /usr/sbin/dump
} |
or Code: | cat /etc/portage/cs-helpers/sys-fs/udev
cs-post-emerge() {
if [ -e /etc/udev/rules.d/._cfg0000_50-udev.rules ] ;then
mv /etc/udev/rules.d/._cfg0000_50-udev.rules /etc/udev/rules.d/50-udev.rules
fi
sed -i -e 's/^\(KERNEL=="dm.*OPTIONS="ignore_device\)"/#\1/' /etc/udev/rules.d/50-udev.rules
udevstart
} |
And some more exotic features i won't explain here, basically everything that makes the update process more automatic
can be added.And then you have a few hundred of gentoo machines to keep updates this is very handy
So since the above features have different setup for each package , i need to run
in a wrapper which works on a single pkg emerge --nodeps pkg. And some other wrappers use the above wrapper.
So if the old portage behaviour can't be restored, i need to find a proper way to handle all virtual packages
vandien wrote: | I see now what you mean, I was testing emerge with perl-libnet not installed. It does make sense that --nodeps should cause emerge to just rebuild the virtual package.
this is an ugly work-around: | emerge -C virtual/perl-libnet
emerge --noreplace virtual/perl-libnet |
|
|
|
Back to top |
|
|
piavlo Tux's lil' helper
Joined: 21 Jun 2005 Posts: 141
|
|
Back to top |
|
|
|