Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 540586 - sys-devel/crossdev fails to find crossdev overlay without unique priority
Summary: sys-devel/crossdev fails to find crossdev overlay without unique priority
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Development (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: Embedded Gentoo Team
URL:
Whiteboard:
Keywords: PATCH
Depends on:
Blocks:
 
Reported: 2015-02-18 23:00 UTC by Malte Starostik
Modified: 2016-06-02 15:58 UTC (History)
3 users (show)

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


Attachments
Attempt to fix overlay sorting (crossdev-overlay-order.diff,751 bytes, patch)
2015-02-18 23:01 UTC, Malte Starostik
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Malte Starostik 2015-02-18 23:00:19 UTC
According to crossdev --help, in the most simple case, crossdev should use an overlay named "crossdev":

    -oO, --ov-output path    Overlay to write crossdev package links
                                [default: uses repo with name 'crossdev', or
                                 'cross-${CTARGET}', or falls back to first
                                 from --overlays list]

However, that breaks if there are other overlays in repos.conf that have the same (or no) priority as the "crossdev" overlay.

Workaround: assign unique priority to "crossdev" overlay.

Due to the way the gawk-script in parse_repo_config() organises overlays, they are apparently expected to have a unique priority.  I can't find anything in portage(5) that supports this requirement.

But then the order won't be sorted by priority anyway, as the iteration via for (prio in prios) will not run by numerical index, so the order established by asorti() is not what's actually returned.  Plus it's a pure literal order, not a numerically correct one.  The attached patch attempts to correct all of these issues.


Reproducible: Always

Steps to Reproduce:
1. Prepare an overlay named "crossdev" for use by crossdev.
2. Make sure there are other overlays in repos.conf that have the same priority as the one created in step 1 or configure both "crossdev" and other overlays without priority in repos.conf
3. crossdev -t whatever

Actual Results:  
crossdev may choose the wrong overlay, depending on the order they are returned in by portageq repositories_configuration.
In my case this showed because it chose an overlay on a read-only NFS mount and therefore failed.  Otherwise, it could have polluted another overlay or crossdev's files could have been lost when pruning the overlay it would have chosen.


Expected Results:  
crossdev should find the overlay intended regardless of any attribute besides the repository's name and location.

Portage 2.2.14 (python 2.7.9-final-0, default/linux/amd64/13.0/desktop/kde/systemd, gcc-4.8.3, glibc-2.19-r1, 3.17.8-gentoo-r1-stellaware x86_64)
=================================================================
System uname: Linux-3.17.8-gentoo-r1-stellaware-x86_64-Intel-R-_Core-TM-2_Duo_CPU_E6750_@_2.66GHz-with-gentoo-2.2
KiB Mem:     6105984 total,    712184 free
KiB Swap:   58614656 total,  57478776 free
Timestamp of tree: Wed, 18 Feb 2015 14:15:01 +0000
ld GNU ld (Gentoo 2.24 p1.4) 2.24
distcc 3.1 x86_64-pc-linux-gnu [disabled]
app-shells/bash:          4.2_p53
dev-java/java-config:     2.2.0
dev-lang/perl:            5.20.1-r4
dev-lang/python:          2.7.9-r1, 3.3.5-r1, 3.4.1
dev-util/cmake:           2.8.12.2-r1
dev-util/pkgconfig:       0.28-r1
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.13.9
sys-apps/sandbox:         2.6-r1
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.11.6-r1, 1.12.6, 1.13.4
sys-devel/binutils:       2.24-r3
sys-devel/gcc:            4.7.3-r1, 4.8.3
sys-devel/gcc-config:     1.7.3
sys-devel/libtool:        2.4.4
sys-devel/make:           4.0-r1
sys-kernel/linux-headers: 3.16 (virtual/os-headers)
sys-libs/glibc:           2.19-r1
Repositories: gentoo bircoph celestilay crossdev sunrise
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="* -@EULA AdobeFlash-11.x skype-4.0.0.7-copyright TeamViewer"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=core2 -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/themes/oxygen-gtk/gtk-2.0 /usr/share/themes/oxygen-gtk/gtk-3.0"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-march=core2 -O2 -pipe"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS="--keep-going y --jobs 3 --load-average 2.0"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs candy clean-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://de-mirror.org/gentoo/"
LANG="de_DE.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j3 -l2.0"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/mnt/master/repo/gentoo"
PORTDIR_OVERLAY="/mnt/master/repo/bircoph /mnt/master/repo/celestilay /usr/local/portage/crossdev /mnt/master/repo/sunrise"
USE="X a52 aac aalib acl acpi aften alsa amd64 amr avahi berkdb bluetooth btrfs bzip2 cairo calendar caps cdda cdr cli cracklib crypt cups curl cxx dbus declarative device-mapper dga djvu dri dts dv dvb dvd dvdr emboss encode exif fam ffmpeg firefox flac fontconfig fortran ftd2xx ftdi gdbm geoip gif gimp git glamor gpm iconv icu inotify ipv6 jack java jpeg jpeg2k kde kerberos kipi lame lcms ldap libav libnotify libsamplerate lirc lm_sensors lvm lzma mad matroska mikmod mmx mng modules mp3 mp4 mpeg mtp multilib mysql ncurses nls nptl ogg openal openexr opengl openmp oscar pam pam_krb5 pango pcre pdf perl phonon plasma png policykit postgres ppds pulseaudio python qt3support qt4 quicktime readline samba sasl scanner schroedinger sdl semantic-desktop session smp sndfile snmp speex spell sqlite sse sse2 sse3 ssl startup-notification svg system-ffmpeg systemd tcpd telepathy theora threads tiff truetype udev udisks unicode upower usb v4l vcd vhosts video vim-syntax vorbis vpx webkit wxwidgets x264 xattr xcb xcomposite xine xinerama xml xmp xscreensaver xv xvid xvmc zeroconf zlib" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd 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 cgi cgid 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" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" CELESTILAY_MODULES="kernel" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx sse sse2" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="evdev wacom joystick" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="de en" LIRC_DEVICES="devinput" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_3" RUBY_TARGETS="ruby20 ruby19" USERLAND="GNU" VIDEO_CARDS="nouveau" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CPPFLAGS, CTARGET, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, SYNC, USE_PYTHON
Comment 1 Malte Starostik 2015-02-18 23:01:02 UTC
Created attachment 396884 [details, diff]
Attempt to fix overlay sorting
Comment 2 SpanKY gentoo-dev 2015-05-18 16:43:14 UTC
can you post the output of your `portageq repositories_configuration /` for me ?
Comment 3 Alon Bar-Lev (RETIRED) gentoo-dev 2015-05-18 16:45:45 UTC
/etc/portage/repos.conf/crossdev.conf
---
[crossdev]
location = /usr/local/portage/crossdev
#priority = 1234 # hack back#540586
---

$ portageq repositories_configuration /
[DEFAULT]
auto-sync = yes
main-repo = gentoo

[alon-barlev]
auto-sync = yes
location = /usr/local/portage/alon-barlev-overlay
masters = gentoo

[alonbl-local]
auto-sync = yes
location = /usr/local/portage/local
masters = gentoo

[crossdev]
auto-sync = yes
location = /usr/local/portage/crossdev
masters = gentoo

[gentoo]
auto-sync = yes
location = /var/gentoo/portage
masters = 
priority = -1000
sync-type = websync
sync-uri = rsync://rsync.gentoo.org/gentoo-portage
Comment 4 Christian Strahl 2016-01-19 08:16:17 UTC
I have exactly the same problem.

I'm now also using the priority workaround after restoring my scala-overlay.


[DEFAULT]
auto-sync = yes
main-repo = gentoo

[crossdev]
auto-sync = no
location = /usr/local/crossdev_overlay
masters = gentoo
priority = 10

[gentoo]
auto-sync = true
location = /var/db/repos/gentoo
masters = 
priority = -1000
sync-type = git
sync-uri = https://github.com/gentoo-mirror/gentoo

[gentoo-scala-tools]
auto-sync = yes
location = /usr/local/sbt_gentoo_overlay
masters = gentoo
sync-type = git
sync-uri = http://github.com/whiter4bbit/overlays.git
Comment 5 Christian Strahl 2016-01-19 09:25:23 UTC
After fixing this bug the documentation about the local crossdev overlay should be updated:

https://wiki.gentoo.org/wiki/Overlay/Local_overlay#Crossdev