Compare commits
10 Commits
0.14
...
openrc-0.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
454e09d1d6 | ||
|
|
1969be04e5 | ||
|
|
ae60393561 | ||
|
|
60488069c0 | ||
|
|
9225bfa691 | ||
|
|
7bd456ed7b | ||
|
|
c709e6077c | ||
|
|
a27d577da8 | ||
|
|
8b93492086 | ||
|
|
4b1b457cd1 |
93
ChangeLog
93
ChangeLog
@@ -1,3 +1,96 @@
|
||||
commit 1969be04e54ad162329001d4b09ebfcf162a6808
|
||||
Author: Jakob Drexel <jake42@rommel.stw.uni-erlangen.de>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
librc: Fix crash if the service name is the same as the including runlevel
|
||||
|
||||
If a service has the same name as the runlevel it is in, openrc will
|
||||
crash on changing to such runlevel. It goes in a recursive madness and
|
||||
eventually gets a SEGV while in snprintf (don't know why).
|
||||
|
||||
This fixes two errors:
|
||||
1. ls_dir stats files not with full path -> stat always returns != 0
|
||||
2. ls_dir adds files to list if stat failed
|
||||
|
||||
This fixes #53.
|
||||
|
||||
X-Gentoo-Bug: 537304
|
||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=537304
|
||||
|
||||
commit ae6039356177a9030adc93b025f487e7a4df05aa
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
Start work on 0.15.1
|
||||
|
||||
commit 60488069c08201cbfbc661a3e7bd1fafa31fceed
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
update ChangeLog
|
||||
|
||||
commit 9225bfa6918cfd488c8f1055cf986b542f1f157e
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
Build: make snapshot remove .git directory from tarball
|
||||
|
||||
commit 7bd456ed7bf35da2d7a53650baa33637e178064e
|
||||
Author: Mike Gilbert <floppym@gentoo.org>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
Disable service scripts for systemd-nspawn
|
||||
|
||||
This adds the -systemd-nspawn keyword to service scripts which are not
|
||||
intended to run in systemd-nspawn containers.
|
||||
|
||||
This fixes #52.
|
||||
|
||||
X-Gentoo-Bug: 548058
|
||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=548058
|
||||
|
||||
commit c709e6077c6eda3f4f7e7222298213413254ee0f
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
Add support for systemd-nspawn containers
|
||||
|
||||
This adds support for running OpenRC in a container created by
|
||||
the systemd-nspawn utility.
|
||||
|
||||
This fixes #52.
|
||||
|
||||
X-Gentoo-Bug: 548058
|
||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=548058
|
||||
|
||||
commit a27d577da8cf4f1c7f9784a043ecf02d71a81ca6
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
Build: fix the dist target
|
||||
|
||||
The dist target now creates an archive based on the version setting.
|
||||
This makes it possible to create an archive identical to the ones github
|
||||
generates once the release is tagged.
|
||||
|
||||
commit 8b9349208696e5caed1a8b34f066cec4ee642194
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
convert all references from runscript to openrc-run
|
||||
|
||||
commit 4b1b457cd15cc1609c101b99a49a5e4c67b62567
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
Start work on 0.15
|
||||
|
||||
commit 1d6602bb8e7062323ead03eaa0c4ae307c517b9e
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
Add ChangeLog
|
||||
|
||||
commit a6391f44ee6c68d674ae8425983467b971710d5d
|
||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
NAME= openrc
|
||||
VERSION= 0.14
|
||||
VERSION= 0.15.1
|
||||
PKG= ${NAME}-${VERSION}
|
||||
|
||||
@@ -2,14 +2,15 @@
|
||||
# LINUX SPECIFIC OPTIONS
|
||||
|
||||
# This is the subsystem type. Valid options on Linux:
|
||||
# "" - nothing special
|
||||
# "lxc" - Linux Containers
|
||||
# "openvz" - Linux OpenVZ
|
||||
# "prefix" - Prefix
|
||||
# "uml" - Usermode Linux
|
||||
# "vserver" - Linux vserver
|
||||
# "xen0" - Xen0 Domain
|
||||
# "xenU" - XenU Domain
|
||||
# "" - nothing special
|
||||
# "lxc" - Linux Containers
|
||||
# "openvz" - Linux OpenVZ
|
||||
# "prefix" - Prefix
|
||||
# "uml" - Usermode Linux
|
||||
# "vserver" - Linux vserver
|
||||
# "systemd-nspawn" - Container created by the systemd-nspawn utility
|
||||
# "xen0" - Xen0 Domain
|
||||
# "xenU" - XenU Domain
|
||||
# If this is commented out, automatic detection will be used.
|
||||
#
|
||||
# This should be set to the value representing the environment this file is
|
||||
|
||||
@@ -8,7 +8,7 @@ depend()
|
||||
{
|
||||
after procfs
|
||||
use modules devfs
|
||||
keyword -openvz -prefix -vserver -lxc
|
||||
keyword -openvz -prefix -systemd-nspawn -vserver -lxc
|
||||
}
|
||||
|
||||
start()
|
||||
|
||||
@@ -8,7 +8,7 @@ depend()
|
||||
{
|
||||
need localmount termencoding
|
||||
after hotplug bootmisc
|
||||
keyword -openvz -prefix -uml -vserver -xenu -lxc
|
||||
keyword -openvz -prefix -systemd-nspawn -uml -vserver -xenu -lxc
|
||||
}
|
||||
|
||||
start()
|
||||
|
||||
@@ -8,7 +8,7 @@ depend()
|
||||
{
|
||||
provide dev-mount
|
||||
before dev
|
||||
keyword -prefix -vserver -lxc
|
||||
keyword -prefix -systemd-nspawn -vserver -lxc
|
||||
}
|
||||
|
||||
mount_dev()
|
||||
|
||||
@@ -7,7 +7,7 @@ description="Set the dmesg level for a cleaner boot"
|
||||
depend()
|
||||
{
|
||||
before dev modules
|
||||
keyword -lxc -prefix -vserver
|
||||
keyword -lxc -prefix -systemd-nspawn -vserver
|
||||
}
|
||||
|
||||
start()
|
||||
|
||||
@@ -9,7 +9,7 @@ _IFS="
|
||||
depend()
|
||||
{
|
||||
use dev clock modules
|
||||
keyword -jail -openvz -prefix -timeout -vserver -lxc -uml
|
||||
keyword -jail -openvz -prefix -systemd-nspawn -timeout -vserver -lxc -uml
|
||||
}
|
||||
|
||||
_abort() {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
description="Sets the hostname of the machine."
|
||||
|
||||
depend() {
|
||||
keyword -prefix -lxc
|
||||
keyword -prefix -systemd-nspawn -lxc
|
||||
}
|
||||
|
||||
start()
|
||||
|
||||
@@ -28,7 +28,7 @@ depend()
|
||||
else
|
||||
before *
|
||||
fi
|
||||
keyword -openvz -prefix -uml -vserver -xenu -lxc
|
||||
keyword -openvz -prefix -systemd-nspawn -uml -vserver -xenu -lxc
|
||||
}
|
||||
|
||||
setupopts()
|
||||
|
||||
@@ -8,7 +8,7 @@ depend()
|
||||
{
|
||||
need localmount termencoding
|
||||
after bootmisc
|
||||
keyword -openvz -prefix -uml -vserver -xenu -lxc
|
||||
keyword -openvz -prefix -systemd-nspawn -uml -vserver -xenu -lxc
|
||||
}
|
||||
|
||||
start()
|
||||
|
||||
@@ -9,7 +9,7 @@ depend()
|
||||
need fsck
|
||||
use lvm modules mtab
|
||||
after lvm modules
|
||||
keyword -jail -prefix -vserver -lxc
|
||||
keyword -jail -prefix -systemd-nspawn -vserver -lxc
|
||||
}
|
||||
|
||||
start()
|
||||
|
||||
@@ -6,7 +6,7 @@ description="Configures the loopback interface."
|
||||
|
||||
depend()
|
||||
{
|
||||
keyword -jail -prefix -vserver
|
||||
keyword -jail -prefix -systemd-nspawn -vserver
|
||||
}
|
||||
|
||||
start()
|
||||
|
||||
@@ -7,7 +7,7 @@ description="Loads a user defined list of kernel modules."
|
||||
depend()
|
||||
{
|
||||
use isapnp
|
||||
keyword -openvz -prefix -vserver -lxc
|
||||
keyword -openvz -prefix -systemd-nspawn -vserver -lxc
|
||||
}
|
||||
|
||||
start()
|
||||
|
||||
@@ -7,7 +7,7 @@ description="Re-mount filesytems read-only for a clean reboot."
|
||||
depend()
|
||||
{
|
||||
need killprocs savecache
|
||||
keyword -openvz -prefix -vserver -lxc
|
||||
keyword -openvz -prefix -systemd-nspawn -vserver -lxc
|
||||
}
|
||||
|
||||
start()
|
||||
|
||||
@@ -7,7 +7,7 @@ description="Update /etc/mtab to match what the kernel knows about"
|
||||
depend()
|
||||
{
|
||||
need root
|
||||
keyword -prefix
|
||||
keyword -prefix -systemd-nspawn
|
||||
}
|
||||
|
||||
start()
|
||||
|
||||
@@ -9,7 +9,7 @@ depend()
|
||||
config /etc/fstab
|
||||
use afc-client amd nfsclient autofs openvpn
|
||||
use dns
|
||||
keyword -jail -prefix -vserver -lxc
|
||||
keyword -jail -prefix -systemd-nspawn -vserver -lxc
|
||||
}
|
||||
|
||||
start()
|
||||
|
||||
@@ -9,7 +9,7 @@ ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
|
||||
depend()
|
||||
{
|
||||
need localmount
|
||||
keyword -openvz -prefix -vserver -lxc
|
||||
keyword -openvz -prefix -systemd-nspawn -vserver -lxc
|
||||
}
|
||||
|
||||
_setleds()
|
||||
|
||||
@@ -8,7 +8,7 @@ depend()
|
||||
{
|
||||
use modules devfs
|
||||
need localmount
|
||||
keyword -openvz -prefix -vserver -lxc
|
||||
keyword -openvz -prefix -systemd-nspawn -vserver -lxc
|
||||
}
|
||||
|
||||
start()
|
||||
|
||||
@@ -7,7 +7,7 @@ description="Mount the root fs read/write"
|
||||
depend()
|
||||
{
|
||||
need fsck
|
||||
keyword -jail -openvz -prefix -vserver -lxc
|
||||
keyword -jail -openvz -prefix -systemd-nspawn -vserver -lxc
|
||||
}
|
||||
|
||||
start()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
depend()
|
||||
{
|
||||
before localmount
|
||||
keyword -jail -openvz -prefix -vserver -lxc
|
||||
keyword -jail -openvz -prefix -systemd-nspawn -vserver -lxc
|
||||
}
|
||||
|
||||
start()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
depend()
|
||||
{
|
||||
need localmount
|
||||
keyword -jail -openvz -prefix -vserver -lxc
|
||||
keyword -jail -openvz -prefix -systemd-nspawn -vserver -lxc
|
||||
}
|
||||
|
||||
start()
|
||||
|
||||
@@ -8,7 +8,7 @@ depend()
|
||||
{
|
||||
before *
|
||||
provide clock
|
||||
keyword -openvz -prefix -uml -vserver -xenu -lxc
|
||||
keyword -openvz -prefix -systemd-nspawn -uml -vserver -xenu -lxc
|
||||
}
|
||||
|
||||
# swclock is an OpenRC built in
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!@PREFIX@/sbin/runscript
|
||||
#!@PREFIX@/sbin/openrc-run
|
||||
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
|
||||
# Released under the 2-clause BSD license.
|
||||
#FIXME: Modify for GNU/Hurd
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
depend()
|
||||
{
|
||||
before bootmisc logger
|
||||
keyword -prefix -vserver
|
||||
keyword -prefix -systemd-nspawn -vserver
|
||||
}
|
||||
|
||||
start()
|
||||
|
||||
@@ -8,7 +8,7 @@ sysfs_opts=nodev,noexec,nosuid
|
||||
|
||||
depend()
|
||||
{
|
||||
keyword -lxc -prefix -vserver
|
||||
keyword -lxc -prefix -systemd-nspawn -vserver
|
||||
}
|
||||
|
||||
mount_sys()
|
||||
|
||||
@@ -9,7 +9,7 @@ ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
|
||||
|
||||
depend()
|
||||
{
|
||||
keyword -lxc -openvz -prefix -uml -vserver -xenu
|
||||
keyword -lxc -openvz -prefix -systemd-nspawn -uml -vserver -xenu
|
||||
use root
|
||||
after bootmisc
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ description="Initializes the random number generator."
|
||||
depend()
|
||||
{
|
||||
need localmount
|
||||
keyword -jail -lxc -openvz -prefix
|
||||
keyword -jail -lxc -openvz -prefix -systemd-nspawn
|
||||
}
|
||||
|
||||
save_seed()
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# Copyright (c) 2008 Roy Marples <roy@marples.name>
|
||||
# Released under the 2-clause BSD license.
|
||||
|
||||
GITREF?= HEAD
|
||||
GITREF?= ${VERSION}
|
||||
DISTPREFIX?= ${NAME}-${VERSION}
|
||||
DISTFILE?= ${DISTPREFIX}.tar.bz2
|
||||
|
||||
@@ -34,7 +34,7 @@ snapshot:
|
||||
mkdir /tmp/${SNAPDIR}
|
||||
cp -RPp * /tmp/${SNAPDIR}
|
||||
(cd /tmp/${SNAPDIR}; make clean)
|
||||
find /tmp/${SNAPDIR} -name .svn -exec rm -rf -- {} \; 2>/dev/null || true
|
||||
rm -rf /tmp/${SNAPDIR}/.git 2>/dev/null || true
|
||||
tar -cvjpf ${SNAPFILE} -C /tmp ${SNAPDIR}
|
||||
rm -rf /tmp/${SNAPDIR}
|
||||
ls -l ${SNAPFILE}
|
||||
|
||||
2
sh/.gitignore
vendored
2
sh/.gitignore
vendored
@@ -1,7 +1,7 @@
|
||||
functions.sh
|
||||
gendepends.sh
|
||||
rc-functions.sh
|
||||
runscript.sh
|
||||
openrc-run.sh
|
||||
cgroup-release-agent.sh
|
||||
init.sh
|
||||
init-early.sh
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
DIR= ${LIBEXECDIR}/sh
|
||||
SRCS= init.sh.in functions.sh.in gendepends.sh.in \
|
||||
rc-functions.sh.in runscript.sh.in tmpfiles.sh.in ${SRCS-${OS}}
|
||||
openrc-run.sh.in rc-functions.sh.in tmpfiles.sh.in ${SRCS-${OS}}
|
||||
INC= rc-mount.sh functions.sh rc-functions.sh
|
||||
BIN= gendepends.sh init.sh runscript.sh tmpfiles.sh ${BIN-${OS}}
|
||||
BIN= gendepends.sh init.sh openrc-run.sh tmpfiles.sh ${BIN-${OS}}
|
||||
|
||||
INSTALLAFTER= _installafter
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!@SHELL@
|
||||
# Shell wrapper for runscript
|
||||
# Shell wrapper for openrc-run
|
||||
|
||||
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
|
||||
# Released under the 2-clause BSD license.
|
||||
@@ -34,7 +34,10 @@ sourcex()
|
||||
|
||||
sourcex "@LIBEXECDIR@/sh/functions.sh"
|
||||
sourcex "@LIBEXECDIR@/sh/rc-functions.sh"
|
||||
[ "$RC_SYS" != "PREFIX" ] && sourcex -e "@LIBEXECDIR@/sh/rc-cgroup.sh"
|
||||
case $RC_SYS in
|
||||
PREFIX|SYSTEMD-NSPAWN) ;;
|
||||
*) sourcex -e "@LIBEXECDIR@/sh/rc-cgroup.sh";;
|
||||
esac
|
||||
|
||||
# Support LiveCD foo
|
||||
if sourcex -e "/sbin/livecd-functions.sh"; then
|
||||
@@ -85,7 +85,7 @@ get_bootparam()
|
||||
return 1
|
||||
}
|
||||
|
||||
# Called from runscript.sh or gendepends.sh
|
||||
# Called from openrc-run.sh or gendepends.sh
|
||||
_depend() {
|
||||
depend
|
||||
local _rc_svcname=$(shell_var "$RC_SVCNAME") _deptype= _depends=
|
||||
|
||||
@@ -99,7 +99,7 @@ rc_find_pids(const char *exec, const char *const *argv, uid_t uid, pid_t pid)
|
||||
pid_t p;
|
||||
char buffer[PATH_MAX];
|
||||
struct stat sb;
|
||||
pid_t runscript_pid = 0;
|
||||
pid_t openrc_pid = 0;
|
||||
char *pp;
|
||||
RC_PIDLIST *pids = NULL;
|
||||
RC_PID *pi;
|
||||
@@ -108,7 +108,7 @@ rc_find_pids(const char *exec, const char *const *argv, uid_t uid, pid_t pid)
|
||||
return NULL;
|
||||
|
||||
/*
|
||||
We never match RC_RUNSCRIPT_PID if present so we avoid the below
|
||||
We never match RC_OPENRC_PID if present so we avoid the below
|
||||
scenario
|
||||
|
||||
/etc/init.d/ntpd stop does
|
||||
@@ -118,9 +118,9 @@ rc_find_pids(const char *exec, const char *const *argv, uid_t uid, pid_t pid)
|
||||
nasty
|
||||
*/
|
||||
|
||||
if ((pp = getenv("RC_RUNSCRIPT_PID"))) {
|
||||
if (sscanf(pp, "%d", &runscript_pid) != 1)
|
||||
runscript_pid = 0;
|
||||
if ((pp = getenv("RC_OPENRC_PID"))) {
|
||||
if (sscanf(pp, "%d", &openrc_pid) != 1)
|
||||
openrc_pid = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -146,7 +146,7 @@ rc_find_pids(const char *exec, const char *const *argv, uid_t uid, pid_t pid)
|
||||
while ((entry = readdir(procdir)) != NULL) {
|
||||
if (sscanf(entry->d_name, "%d", &p) != 1)
|
||||
continue;
|
||||
if (runscript_pid != 0 && runscript_pid == p)
|
||||
if (openrc_pid != 0 && openrc_pid == p)
|
||||
continue;
|
||||
if (pid != 0 && pid != p)
|
||||
continue;
|
||||
|
||||
@@ -101,7 +101,9 @@ ls_dir(const char *dir, int options)
|
||||
continue;
|
||||
}
|
||||
if (options & LS_DIR) {
|
||||
if (stat(d->d_name, &buf) == 0 &&
|
||||
snprintf(file, sizeof(file), "%s/%s",
|
||||
dir, d->d_name);
|
||||
if (stat(file, &buf) != 0 ||
|
||||
!S_ISDIR(buf.st_mode))
|
||||
continue;
|
||||
}
|
||||
@@ -294,6 +296,8 @@ rc_sys_v1(void)
|
||||
return RC_SYS_OPENVZ; /* old test */
|
||||
else if (file_regex("/proc/1/environ", "container=lxc"))
|
||||
return RC_SYS_LXC;
|
||||
else if (file_regex("/proc/1/environ", "container=systemd-nspawn"))
|
||||
return RC_SYS_SYSTEMD_NSPAWN;
|
||||
#endif
|
||||
|
||||
return NULL;
|
||||
|
||||
@@ -332,6 +332,7 @@ bool rc_service_daemons_crashed(const char *);
|
||||
#define RC_SYS_OPENVZ "OPENVZ"
|
||||
#define RC_SYS_LXC "LXC"
|
||||
#define RC_SYS_PREFIX "PREFIX"
|
||||
#define RC_SYS_SYSTEMD_NSPAWN "SYSTEMD-NSPAWN"
|
||||
#define RC_SYS_UML "UML"
|
||||
#define RC_SYS_VSERVER "VSERVER"
|
||||
#define RC_SYS_XEN0 "XEN0"
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
PROG= openrc
|
||||
SRCS= checkpath.c fstabinfo.c mountinfo.c start-stop-daemon.c \
|
||||
SRCS= checkpath.c fstabinfo.c mountinfo.c openrc-run.c \
|
||||
rc-applets.c rc-depend.c rc-logger.c \
|
||||
rc-misc.c rc-plugin.c rc-service.c rc-status.c rc-update.c \
|
||||
runscript.c rc.c swclock.c
|
||||
rc.c start-stop-daemon.c swclock.c
|
||||
|
||||
ifeq (${MKSELINUX},yes)
|
||||
SRCS+= rc-selinux.c
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* runscript.c
|
||||
* openrc-run.c
|
||||
* Handle launching of init scripts.
|
||||
*/
|
||||
|
||||
@@ -370,18 +370,18 @@ svc_exec(const char *arg1, const char *arg2)
|
||||
dup2(slave_tty, STDERR_FILENO);
|
||||
}
|
||||
|
||||
if (exists(RC_SVCDIR "/runscript.sh")) {
|
||||
execl(RC_SVCDIR "/runscript.sh",
|
||||
RC_SVCDIR "/runscript.sh",
|
||||
if (exists(RC_SVCDIR "/openrc-run.sh")) {
|
||||
execl(RC_SVCDIR "/openrc-run.sh",
|
||||
RC_SVCDIR "/openrc-run.sh",
|
||||
service, arg1, arg2, (char *) NULL);
|
||||
eerror("%s: exec `" RC_SVCDIR "/runscript.sh': %s",
|
||||
eerror("%s: exec `" RC_SVCDIR "/openrc-run.sh': %s",
|
||||
service, strerror(errno));
|
||||
_exit(EXIT_FAILURE);
|
||||
} else {
|
||||
execl(RC_LIBEXECDIR "/sh/runscript.sh",
|
||||
RC_LIBEXECDIR "/sh/runscript.sh",
|
||||
execl(RC_LIBEXECDIR "/sh/openrc-run.sh",
|
||||
RC_LIBEXECDIR "/sh/openrc-run.sh",
|
||||
service, arg1, arg2, (char *) NULL);
|
||||
eerror("%s: exec `" RC_LIBEXECDIR "/sh/runscript.sh': %s",
|
||||
eerror("%s: exec `" RC_LIBEXECDIR "/sh/openrc-run.sh': %s",
|
||||
service, strerror(errno));
|
||||
_exit(EXIT_FAILURE);
|
||||
}
|
||||
@@ -1162,6 +1162,11 @@ openrc_run(int argc, char **argv)
|
||||
subshells the init script may create so that our mark_service_*
|
||||
functions can always instruct us of this change */
|
||||
snprintf(pidstr, sizeof(pidstr), "%d", (int) getpid());
|
||||
setenv("RC_OPENRC_PID", pidstr, 1);
|
||||
/*
|
||||
* RC_RUNSCRIPT_PID is deprecated, but we will keep it for a while
|
||||
* for safety.
|
||||
*/
|
||||
setenv("RC_RUNSCRIPT_PID", pidstr, 1);
|
||||
|
||||
/* eprefix is kinda klunky, but it works for our purposes */
|
||||
@@ -329,7 +329,7 @@ do_mark_service(int argc, char **argv)
|
||||
bool ok = false;
|
||||
char *svcname = getenv("RC_SVCNAME");
|
||||
char *service = NULL;
|
||||
char *runscript_pid;
|
||||
char *openrc_pid;
|
||||
/* char *mtime; */
|
||||
pid_t pid;
|
||||
RC_SERVICE bit;
|
||||
@@ -350,7 +350,7 @@ do_mark_service(int argc, char **argv)
|
||||
eerrorx("%s: unknown applet", applet);
|
||||
|
||||
/* If we're marking ourselves then we need to inform our parent
|
||||
runscript process so they do not mark us based on our exit code */
|
||||
openrc-run process so they do not mark us based on our exit code */
|
||||
/*
|
||||
* FIXME: svcname and service are almost always equal except called from a
|
||||
* shell with just argv[1] - So that doesn't seem to do what Roy initially
|
||||
@@ -359,8 +359,8 @@ do_mark_service(int argc, char **argv)
|
||||
* openrc@gentoo.org).
|
||||
*/
|
||||
if (ok && svcname && strcmp(svcname, service) == 0) {
|
||||
runscript_pid = getenv("RC_RUNSCRIPT_PID");
|
||||
if (runscript_pid && sscanf(runscript_pid, "%d", &pid) == 1)
|
||||
openrc_pid = getenv("RC_OPENRC_PID");
|
||||
if (openrc_pid && sscanf(openrc_pid, "%d", &pid) == 1)
|
||||
if (kill(pid, SIGHUP) != 0)
|
||||
eerror("%s: failed to signal parent %d: %s",
|
||||
applet, pid, strerror(errno));
|
||||
@@ -369,10 +369,10 @@ do_mark_service(int argc, char **argv)
|
||||
in control as well */
|
||||
/*
|
||||
l = strlen(RC_SVCDIR "/exclusive") + strlen(svcname) +
|
||||
strlen(runscript_pid) + 4;
|
||||
strlen(openrc_pid) + 4;
|
||||
mtime = xmalloc(l);
|
||||
snprintf(mtime, l, RC_SVCDIR "/exclusive/%s.%s",
|
||||
svcname, runscript_pid);
|
||||
svcname, openrc_pid);
|
||||
if (exists(mtime) && unlink(mtime) != 0)
|
||||
eerror("%s: unlink: %s", applet, strerror(errno));
|
||||
free(mtime);
|
||||
|
||||
Reference in New Issue
Block a user