Summary: | eselect-1.4.3: "eselect rc show boot" shows no output (with sys-apps/openrc-0.13.7) | ||
---|---|---|---|
Product: | Gentoo Hosted Projects | Reporter: | charles17 |
Component: | eselect | Assignee: | Gentoo eselect Team <eselect> |
Status: | RESOLVED FIXED | ||
Severity: | normal | Keywords: | InVCS |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | eselect-1.4.4 | ||
Package list: | Runtime testing required: | --- | |
Attachments: |
emerge --info
Patch for eselect-1.4.3 |
Description
charles17
2015-01-17 09:48:08 UTC
Created attachment 394146 [details]
emerge --info
Which version of app-admin/eselect is that? app-admin/eselect-1.4.3 The problem is eselect rc (rc-config) looks for /sbin/runscript
and openrc changed from /sbin/runscript to /sbin/openrc-run,
so doing a grep doesn't find it.
From /usr/share/eselect/modules/rc.eselect
40c40,41
< && grep "^#\!/sbin/runscript" "${file}" &>/dev/null
---
> && ((grep "^#\!/sbin/runscript" "${file}" &>/dev/null;)
> || (grep "^#\!/sbin/openrc-run" "${file}" &>/dev/null;))
Will temporarily fix it so that both work.
I copied /usr/share/eselect/modules/rc.eselect into my ~/.eselect/modules dir
and made the changes and it works fine.
Created attachment 394170 [details, diff]
Patch for eselect-1.4.3
Please test if attached patch fixes the problem.
Patch works for me Fixed in git, commit 783374a7d24e310fcf0a49e16c10687bd515d66a. A more generic way probably would have been head -1 "${file}" | grep "^#\!" &>/dev/null as ONLY the first line should be being looked at and if it has a shebang then add it, that way it wouldn't matter if even /bin/sh or <whatever binary> was being used. That's a special directory that shouldn't be used other than to start daemon style processes. (In reply to Don O from comment #8) > A more generic way probably would have been > > head -1 "${file}" | grep "^#\!" &>/dev/null > > as ONLY the first line should be being looked at and if it has a shebang > then add it, Right, how about the following? Works in pure bash, without any external tools: [[ -n ${file} \ && ${file%%.sh} = "${file}" \ && ${file%%\~} = "${file}" \ && -x ${file} ]] \ && read line <"${file}" \ && [[ ${line} =~ ^#!.*(runscript|openrc-run) ]] > that way it wouldn't matter if even /bin/sh or <whatever binary> was being > used. That's a special directory that shouldn't be used other than to start > daemon style processes. I want to keep that test somewhat strict. Otherwise, we could simply use "rc-service --list" to obtain the list of services, without any filtering. (In reply to Ulrich Müller from comment #9) > I want to keep that test somewhat strict. Otherwise, we could simply use > "rc-service --list" to obtain the list of services, without any filtering. Using rc-service --list would probably be the best way to go for this. Using rc-service/openrc/rc-update/rc-status etc is the way I recommend working with OpenRC rather than trying to guess what is going on in the filesystem yourself. Fixed in version 1.4.4. Thank you for reporting. |