Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 426948 - sys-apps/openrc - stacked runlevels break dependency order
Summary: sys-apps/openrc - stacked runlevels break dependency order
Status: CONFIRMED
Alias: None
Product: Gentoo Hosted Projects
Classification: Unclassified
Component: OpenRC (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: OpenRC Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-07-17 08:53 UTC by Lars Wendler (Polynomial-C)
Modified: 2013-10-31 22:02 UTC (History)
1 user (show)

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


Attachments
Patch to fix run-level stacking (chaining) dependency issues. (openrc-0.11.8-runlevel_chaining.patch,14.71 KB, patch)
2013-04-28 23:06 UTC, Max Hacking
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Lars Wendler (Polynomial-C) gentoo-dev 2012-07-17 08:53:07 UTC
According to man page of rc-update openrc can handle stacked runlevels. I gave this a try on some of my machines and found out that this breaks dependency order if the dependencies are not in the same runlevel.
Here's an example:

# ls -l /etc/runlevels/noX
total 0
lrwxrwxrwx 1 root root 15 Dec 17  2010 atd -> /etc/init.d/atd
lrwxrwxrwx 1 root root 18 Jul 18  2011 cronie -> /etc/init.d/cronie
lrwxrwxrwx 1 root root 17 Dec 17  2010 local -> /etc/init.d/local
lrwxrwxrwx 1 root root 20 Dec 17  2010 net.eth0 -> /etc/init.d/net.eth0
lrwxrwxrwx 1 root root 16 Jun 28  2011 ntpd -> /etc/init.d/ntpd
lrwxrwxrwx 1 root root 21 Dec 17  2010 pure-ftpd -> /etc/init.d/pure-ftpd
lrwxrwxrwx 1 root root 18 Dec 17  2010 rsyncd -> /etc/init.d/rsyncd
lrwxrwxrwx 1 root root 17 Dec 17  2010 samba -> /etc/init.d/samba
lrwxrwxrwx 1 root root 18 Dec 17  2010 smartd -> /etc/init.d/smartd
lrwxrwxrwx 1 root root 16 Dec 17  2010 sshd -> /etc/init.d/sshd
lrwxrwxrwx 1 root root 20 Dec 17  2010 sysklogd -> /etc/init.d/sysklogd
# ls -l /etc/runlevels/default
total 0
lrwxrwxrwx 1 root root 21 Dec 17  2010 alsasound -> /etc/init.d/alsasound
lrwxrwxrwx 1 root root 24 Sep 19  2011 avahi-daemon -> /etc/init.d/avahi-daemon
lrwxrwxrwx 1 root root 17 Dec 17  2010 cupsd -> /etc/init.d/cupsd
lrwxrwxrwx 1 root root 20 Oct 10  2011 netmount -> /etc/init.d/netmount
lrwxrwxrwx 1 root root  6 Jul 17 10:40 noX -> ../noX
lrwxrwxrwx 1 root root 19 Dec 17  2010 uptimed -> /etc/init.d/uptimed
lrwxrwxrwx 1 root root 15 Dec 17  2010 xdm -> /etc/init.d/xdm
# grep ^rc_.*after /etc/rc.conf /etc/conf.d/xdm 
/etc/rc.conf:rc_netmount_after="net.eth0"
/etc/conf.d/xdm:rc_after="alsasound"

With this setup netmount won't get started after net.eth0 was started but before. On the other hand, xdm gets started after alsasound because both are in the same runlevel. If I move netmount from default to noX it gets started after net.eth0 as expected.


# emerge --info openrc
Portage 2.2.0_alpha118 (default/linux/amd64/10.0/desktop/kde, gcc-4.6.3, glibc-2.14.1-r3, 3.0.37 x86_64)
=================================================================
                        System Settings
=================================================================
System uname: Linux-3.0.37-x86_64-Intel-R-_Core-TM-_i7-2600_CPU_@_3.40GHz-with-gentoo-2.1
Timestamp of tree: Mon, 16 Jul 2012 06:00:01 +0000
app-shells/bash:          4.2_p36
dev-java/java-config:     2.1.12
dev-lang/python:          2.7.3-r2, 3.2.3-r1
dev-util/cmake:           2.8.8-r3
dev-util/pkgconfig:       0.27
sys-apps/baselayout:      2.1-r1
sys-apps/openrc:          0.10.5
sys-apps/sandbox:         2.6
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.9.6-r3, 1.11.6, 1.12.2
sys-devel/binutils:       2.22-r1
sys-devel/gcc:            4.6.3
sys-devel/gcc-config:     1.7.3
sys-devel/libtool:        2.4.2
sys-devel/make:           3.82-r3
sys-kernel/linux-headers: 3.4-r1 (virtual/os-headers)
sys-libs/glibc:           2.14.1-r3
Repositories: gentoo poly-c
ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="* -@EULA AdobeFlash-10.3 dlj-1.1 PUEL"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=corei7 -mtune=corei7 -O2 -pipe -fomit-frame-pointer -finline-functions"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="${EPREFIX}/etc/gconf /etc/X11/Sessions /etc/X11/app-defaults /etc/X11/xinit /etc/adobe /etc/bash_completion.d /etc/bonobo-activation /etc/ca-certificates.conf /etc/cups /etc/dbus-1 /etc/env.d /etc/eselect/compiler /etc/fish /etc/fonts /etc/fonts/fonts.conf /etc/foomatic /etc/gconf /etc/gentoo-release /etc/gimp /etc/gnome-vfs-2.0 /etc/gtk /etc/gtk-2.0 /etc/hotplug /etc/hotplug.d /etc/htdig /etc/imlib /etc/init.d /etc/iproute2 /etc/libgda-3.0 /etc/ntop /etc/pam.d /etc/pango /etc/profile.d /etc/qt4 /etc/revdep-rebuild /etc/sandbox.d /etc/sasl2 /etc/sgml /etc/sound /etc/ssl /etc/ssmtp /etc/t1lib /etc/terminfo /etc/usb_modeswitch.d /etc/xinetd.d /etc/xml /etc/zsh"
CXXFLAGS="-march=corei7 -mtune=corei7 -O2 -pipe -fomit-frame-pointer -finline-functions"
DISTDIR="/var/tmp/distfiles"
EMERGE_DEFAULT_OPTS="--alphabetical --with-bdeps=y --jobs=1 --keep-going --misspell-suggestions=n --autounmask=n --quiet-build=n"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs collision-protect config-protect-if-modified distlocks ebuild-locks fixlafiles news parallel-fetch parse-eapi-ebuild-head protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo ftp://linux.rz.ruhr-uni-bochum.de/gentoo-mirror/ ftp://ftp.tu-clausthal.de/pub/linux/gentoo/ http://gentoo.oregonstate.edu http://www.ibiblio.org/pub/Linux/distributions/gentoo"
INSTALL_MASK="/lib/systemd /lib32/systemd /lib64/systemd /usr/lib/systemd /usr/lib32/systemd /usr/lib64/systemd"
LDFLAGS="-Wl,-O1 -Wl,--hash-style=gnu -Wl,--sort-common -Wl,--as-needed"
LINGUAS="de en"
MAKEOPTS="-j8"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/var/lib/layman/poly-c"
SYNC="rsync://rsync.de.gentoo.org/gentoo-portage"
USE="3dnow 3dnowext X a52 aac acpi alsa amd64 berkdb branding bzip2 cairo caps cdda cdparanoia cdr cli cracklib crypt cups cxx dbus declarative dts dvd dvdr dvdread emboss encode exif fam ffmpeg flac gdbm gif gmp gnutls gpg gtk iconv idn imagemagick imlib jpeg jpeg2k kde kdehiddenvisibility kipi lame lcms libnotify mad mjpeg mmx mmxext mng modules mp3 mp4 mpeg mudflap multilib ncurses nls nptl nsplugin ogg opengl openmp pam pango pcre pdf plasma png ppds pppd projectm qt3support qt4 quicktime readline rtmp sdl session silc slang smp spell sse sse2 ssl startup-notification svg theora threads tiff truetype twolame udev unicode upower usb vcd vorbis vpx wxwidgets x264 xcb xcomposite xinerama xml xorg xscreensaver xulrunner xv xvid zlib zsh-completion" ALSA_CARDS="hda-intel" 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" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" 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 ubx" INPUT_DEVICES="evdev joystick" KERNEL="linux" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="de en" PHP_TARGETS="php5-3" PYTHON_TARGETS="python3_2 python2_7" RUBY_TARGETS="ruby19" SANE_BACKENDS="hp" USERLAND="GNU" VIDEO_CARDS="radeon" 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, LANG, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON

=================================================================
                        Package Settings
=================================================================

sys-apps/openrc-0.10.5 was built with the following:
USE="-debug (multilib) ncurses pam (-selinux) -static-libs unicode"
Comment 1 Lars Wendler (Polynomial-C) gentoo-dev 2012-12-11 10:28:41 UTC
Any progress in here? Did even someone look into this?
Comment 2 Max Hacking 2013-04-26 17:40:31 UTC
I just submitted another bug report which fixes some other issues and should resolve these too - see bug 467368 for more details.  I'd really appreciate wider testing if possible.  Thanks!
Comment 3 Max Hacking 2013-04-28 23:06:02 UTC
Created attachment 346838 [details, diff]
Patch to fix run-level stacking (chaining) dependency issues.

It seems the problem space for this bug was more interesting than I originally thought.  :-)

I've attached a more comprehensive patch which should resolve these issues.
Comment 4 i.Dark_Templar 2013-10-31 16:50:43 UTC
I have tried runlevel stacking feature and this bug appeared.

$ emerge --info openrc
Portage 2.2.7 (default/linux/amd64/13.0/desktop, gcc-4.7.3, glibc-2.15-r3, 3.10.7-gentoo-r1.39 x86_64)
=================================================================
                        System Settings
=================================================================
System uname: Linux-3.10.7-gentoo-r1.39-x86_64-Intel-R-_Core-TM-2_Quad_CPU_Q6700_@_2.66GHz-with-gentoo-2.2
KiB Mem:     4051120 total,   2418748 free
KiB Swap:    1052252 total,   1052252 free
Timestamp of tree: Sun, 27 Oct 2013 00:45:01 +0000
ld GNU ld (GNU Binutils) 2.23.1
app-shells/bash:          4.2_p45
dev-lang/python:          2.7.5-r3, 3.2.5-r3, 3.3.2-r2
dev-util/cmake:           2.8.11.2
dev-util/pkgconfig:       0.28
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.12.3
sys-apps/sandbox:         2.6-r1
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.11.6, 1.12.6, 1.13.4
sys-devel/binutils:       2.23.1
sys-devel/gcc:            4.6.3, 4.7.3-r1
sys-devel/gcc-config:     1.7.3
sys-devel/libtool:        2.4.2
sys-devel/make:           3.82-r4
sys-kernel/linux-headers: 3.9 (virtual/os-headers)
sys-libs/glibc:           2.15-r3
Repositories: gentoo local-overlay
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="* -@EULA"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/splash /etc/terminfo"
CXXFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS="--with-bdeps=y --binpkg-respect-use=y --autounmask=n --complete-graph=y --keep-going"
FCFLAGS="-O2 -pipe"
FEATURES="binpkg-logs distlocks ebuild-locks fakeroot fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync webrsync-gpg xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="rsync://gentoo.bloodhost.ru/gentoo-distfiles http://gentoo.mirror.web4u.cz/ http://gentoo.mirror.dkm.cz/pub/gentoo/ ftp://ftp.df.lth.se/pub/gentoo/ http://gentoo.lagis.at/"
INSTALL_MASK=" /lib/systemd /lib32/systemd /lib64/systemd /lib/tmpfiles.d /lib32/tmpfiles.d /lib64/tmpfiles.d /usr/lib/systemd /usr/lib32/systemd /usr/lib64/systemd /usr/lib/tmpfiles.d /usr/lib32/tmpfiles.d /usr/lib64/tmpfiles.d "
LANG="ru_RU.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j5"
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="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC=""
USE="X a52 aac acl acpi alsa amd64 amr apm ares bash-completion bidi branding bzip2 c++0x cairo caps cdda cdio cdr cleartype cli consolekit cracklib crypt cue cups custom-cflags custom-optimization cxx dbus dga dirac dri dts dvd dvdr emboss encode exif faad fam ffmpeg firefox flac fontconfig fontforge freetype gcrypt gif gmp gnutls gpm gtk iconv icu idn imlib inotify ipv6 jadetex jpeg kde lcms libass libdvdcss lzma lzo mad matroska midi mmap mmx mng modules mp3 mp4 mpeg mpi mplayer mudflap multilib ncurses network nfs nls nptl offensive ogg openal opengl openmp pango pch pcmcia pcntl pcre pdf pic plasma png policykit posix postproc ppds private-headers projectm qt3support qt4 raw readline schroedinger session sftp sndfile sockets spell sse sse2 ssl ssse3 startup-notification svg system-sqlite tcpd tga theora threads tiff truetype udev udisks unicode upower usb utils vaapi vdpau vlc vorbis vpx wavpack wma wxwidgets x264 xattr xcb xcomposite xft xinerama xpm xscreensaver xv xvid zlib" ABI_X86="64" ALSA_CARDS="hda-intel" 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" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" 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 ubx" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="ru en ru_RU en_US" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_2" QEMU_SOFTMMU_TARGETS="i386 x86_64" QEMU_USER_TARGETS="i386 x86_64" RUBY_TARGETS="ruby19 ruby18" SANE_BACKENDS="hp" USERLAND="GNU" VIDEO_CARDS="vesa vga nvidia" 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, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON

=================================================================
                        Package Settings
=================================================================

sys-apps/openrc-0.12.3 was built with the following:
USE="ncurses netifrc unicode -debug -newnet -pam (-prefix) (-selinux) -static-libs -tools"
Comment 5 Alexander Vershilov (RETIRED) gentoo-dev 2013-10-31 22:02:48 UTC
> =================================================================
>                         Package Settings
> =================================================================
> 
> sys-apps/openrc-0.12.3 was built with the following:
> USE="ncurses netifrc unicode -debug -newnet -pam (-prefix) (-selinux)
> -static-libs -tools"

Fixes was not backported and will be included into OpenRC-0.13.