Compare commits

..

36 Commits

Author SHA1 Message Date
William Hubbs
1b9570d4c7 update ChangeLog 2015-12-01 11:56:51 -06:00
William Hubbs
a94de51c4e consolefont: add after modules to dependencies
X-Gentoo-Bug: 559540
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=559540
2015-11-30 12:26:37 -06:00
William Hubbs
ffbcabbbb4 Bump version to 0.18.4 2015-11-30 12:22:20 -06:00
William Hubbs
bc6ab0f8f3 update changelog 2015-10-14 17:46:55 -05:00
William Hubbs
248a7dcda3 mtab: typo fix 2015-10-14 17:43:31 -05:00
William Hubbs
bb451fd7b4 update ChangeLog 2015-10-14 17:05:33 -05:00
William Hubbs
fb23cbe204 mtab: make /etc/mtab as a file configurable 2015-10-14 16:00:08 -05:00
William Hubbs
a4346bb7f5 start work on 0.18.3 2015-10-14 15:59:52 -05:00
William Hubbs
776346e2cd update changelog 2015-10-13 17:49:03 -05:00
William Hubbs
ce71ffbfbe openrc-run.sh: fix new required_* tests to exit properly 2015-10-13 17:42:46 -05:00
William Hubbs
d9ee8ca584 update changelog 2015-10-13 16:29:15 -05:00
William Hubbs
4e44e2cd73 typo fix
X-Gentoo-Bug: 563010
X-Gentoo-Bug: https://bugs.gentoo.org/show_bug.cgi?id=563010
2015-10-13 16:27:35 -05:00
William Hubbs
88b807f9bc increment version number 2015-10-13 15:57:25 -05:00
William Hubbs
feba5d86b7 mountinfo: make sure the netdev variable is initialized on Linux
This fixes the following regression:

X-Gentoo-Bug: 562668
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=562668
2015-10-13 09:10:47 -05:00
William Hubbs
3b1e96a6a3 openrc-run.sh: allow spaces in required_{files,dirs}
X-Gentoo-Bug: 562320
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=562320
2015-10-13 09:10:47 -05:00
William Hubbs
79998bdf9c increment version number 2015-10-13 09:10:28 -05:00
William Hubbs
050ddfae4a Update ChangeLog 2015-10-08 13:33:27 -05:00
William Hubbs
d5116cc697 localmount: white space cleanup 2015-10-08 13:20:14 -05:00
Ian Stakenvicius
b86d170037 localmount: clean up handling of aufs branches
X-Gentoo-Bug: 560008
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=560008
2015-10-08 12:49:09 -05:00
William Hubbs
6fa0d6318b mtab: fix update logic
This advises users to remove mtab from their runlevels if /etc/mtab is a
symlink, and it creates the symlink if /etc/mtab does not exist on a
system.

X-Gentoo-Bug: 560060
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=560060
2015-10-07 11:35:31 -05:00
Austin S. Hemmelgarn
80d3928b0d cgroups: Add the hugetlb, net_cls and pids controllers
Note from WilliamH: I slightly rearranged the code and added the
settings in rc.conf.

X-Gentoo-Bug: 555488
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=555488
2015-10-06 15:05:35 -05:00
William Hubbs
17ef205bc6 sysfs: use printf instead of echo to write to cgroup files
This is needed for compatibility with musl and printf is also posix.

X-Gentoo-Bug: 562334
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=562334
2015-10-06 13:31:43 -05:00
William Hubbs
b20a1951ad rc-cgroup.sh: Do not add leading spaces to cgroup values
We were starting the value we write to the cgroup setting file with
leading spaces and this was causing issues. This change makes sure that
we aren't adding leading spaces to the value.

X-Gentoo-Bug: 562354
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=562354
2015-10-06 12:11:29 -05:00
William Hubbs
bf0c0dd564 bootmisc: convert errors in clean_run function to warnings
X-Gentoo-Bug: 552418
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=552418
2015-10-05 11:22:08 -05:00
William Hubbs
1558ad2b9e bootmisc: only remove temp directory if umount is successful
Change the clean_run function to only remove the temp directory if the
umount was successful.

X-Gentoo-Bug: 561230
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=561230
2015-10-05 11:08:11 -05:00
William Hubbs
5f4f242036 mountinfo: fix --netdev and --nonetdev on Linux
On Linux, the --netdev and --nonetdev switches were not working. They
were both returning false. After this change, they operate based on the
presence or abscence of the _netdev option in mount options.
2015-10-05 10:18:00 -05:00
William Hubbs
b3f7ff901f mountinfo: read /proc/self/mounts instead of /proc/mounts on Linux 2015-10-04 15:35:33 -05:00
William Hubbs
a59365a582 start-stop-daemon.sh: complain in start if command is undefined
The default start-stop-daemon start function expects the command
variable to be defined to point to the daemon we want to start.

If the variable is undefined, this means that there will be nothing to
start, and in this case we should complain because it is possible that
the script writer made a typo in the variable name.
2015-10-02 16:34:15 -05:00
William Hubbs
dac5966ca4 Revert "local/netmount: remove uses of -O [no]_netdev"
This reverts commit 2a439c85bd.
There is another use case for -O involving iscsi, so we can't remove it.
2015-10-01 17:33:43 -05:00
William Hubbs
3b6a6df4b5 openrc-run: rename some dependency variables and a function for clarity
All of the dependency type lists had the types_ prefix in their names;
this has been changed to deptypes_ to make them more self documenting.

Along the same lines, the setup_types function was renamed
setup_deptypes.
2015-09-17 15:02:30 -05:00
William Hubbs
b047ea47e9 localmount/netmount: on Linux, fail if some file systems do not mount
The following return codes are returned by mount -a:

0:  all file systems mounted.
32: no file systems mounted.
64: some file systems mounted.

The localmount/netmount services should fail if all file systems that
should mount did not mount.
2015-09-01 14:41:07 -05:00
William Hubbs
b652752339 Make localmount and netmount always succeed on non-linux 2015-08-21 12:21:31 -05:00
William Hubbs
2a439c85bd local/netmount: remove uses of -O [no]_netdev
This was causing an incompatibility with busybox, and we do not use it
in Gentoo.
2015-08-18 18:25:48 -05:00
William Hubbs
7341cd882f allow localmount and netmount to fail 2015-08-17 18:21:39 -05:00
Mike Frysinger
279f1e5d10 binfmt: fix indent on return 2015-08-10 18:50:10 -05:00
Doug Freed
c256a7aa80 savecache: clean up implementation
X-Gentoo-Bug: 557222
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=557222
2015-08-10 14:51:15 +00:00
19 changed files with 543 additions and 977 deletions

1236
ChangeLog

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,3 @@
NAME= openrc
VERSION= 0.18
VERSION= 0.18.4
PKG= ${NAME}-${VERSION}

34
NEWS.md
View File

@@ -3,6 +3,40 @@
This file will contain a list of notable changes for each release. Note
the information in this file is in reverse order.
## OpenRC-0.18.3
Modern Linux systems expect /etc/mtab to be a symbolic link to
/proc/self/mounts. Reasons for this change include support for mount
namespaces, which will not work if /etc/mtab is a file.
By default, the mtab service enforces this on each reboot.
If you find that this breaks your system in some way, please do the
following:
- Set mtab_is_file=yes in /etc/conf.d/mtab.
- Restart mtab. This will recreate the /etc/mtab file.
- Check for an issue on https://github.com/openrc/openrc/issues
explaining why you need /etc/mtab to be a file. If there isn't one,
please open one and explain in detail why you need this to be a file.
If there is one, please add your comments to it. Please give concrete
examples of why it is important that /etc/mtab be a file instead of a
symbolic link. Those comments will be taken into consideration for how
long to keep supporting mtab as a file or when the support can be
removed.
## OpenRC-0.18
The behaviour of localmount and netmount in this version is changing. In
the past, these services always started successfully. In this version,
they will be able to fail if file systems they mount fail to mount. If
you have file systems listed in fstab which should not be mounted at
boot time, make sure to add noauto to the mount options. If you have
file systems that you want to attempt to mount at boot time but failure
should be allowed, add nofail to the mount options for these file
systems in fstab.
## OpenRC-0.14
The binfmt service, which registers misc binary formats with the Linux

View File

@@ -15,7 +15,7 @@ include ${MK}/os.mk
CONF-FreeBSD= ipfw moused powerd rarpd savecore syscons
CONF-Linux= consolefont devfs dmesg hwclock keymaps killprocs modules
CONF-Linux= consolefont devfs dmesg hwclock keymaps killprocs modules mtab
CONF-NetBSD= moused rarpd savecore

5
conf.d/mtab Normal file
View File

@@ -0,0 +1,5 @@
# This setting controls whether /etc/mtab is a file or symbolic link.
# Most of the time, you shouldn't touch this. However, if the default
# breaks your system in some way, please see the NEWS.md file that comes
# with OpenRC for the actions to take.
# mtab_is_file=no

View File

@@ -62,12 +62,21 @@ rc_tty_number=12
# Set the devices controller settings for this service.
#rc_cgroup_devices=""
# Set the hugetlb controller settings for this service.
#rc_cgroup_hugetlb=""
# Set the memory controller settings for this service.
#rc_cgroup_memory=""
# Set the net_cls controller settings for this service.
#rc_cgroup_net_cls=""
# Set the net_prio controller settings for this service.
#rc_cgroup_net_prio=""
# Set the pids controller settings for this service.
#rc_cgroup_pids=""
# Set this to YES if yu want all of the processes in a service's cgroup
# killed when the service is stopped or restarted.
# This should not be set globally because it kills all of the service's

View File

@@ -16,5 +16,5 @@ start()
ebegin "Loading custom binary format handlers"
"$RC_LIBEXECDIR"/sh/binfmt.sh
eend $?
return 0
return 0
}

View File

@@ -121,11 +121,11 @@ clean_run()
local dir
# If / is still read-only due to a problem, this will fail!
if ! checkpath -W /; then
eerror "/ is not writable; unable to clean up underlying /run"
ewarn "/ is not writable; unable to clean up underlying /run"
return 1
fi
if ! checkpath -W /tmp; then
eerror "/tmp is not writable; unable to clean up underlying /run"
ewarn "/tmp is not writable; unable to clean up underlying /run"
return 1
fi
# Now we know that we can modify /tmp and /
@@ -136,13 +136,12 @@ clean_run()
dir=$(mktemp -d)
if [ -n "$dir" -a -d $dir -a -w $dir ]; then
mount --bind / $dir && rm -rf $dir/run/* || rc=1
umount $dir
rm -rf $dir
umount $dir && rmdir $dir
else
rc=1
fi
if [ $rc -ne 0 ]; then
eerror "Could not clean up underlying /run on /"
ewarn "Could not clean up underlying /run on /"
return 1
fi
}

View File

@@ -7,7 +7,7 @@ description="Sets a font for the consoles."
depend()
{
need localmount termencoding
after hotplug bootmisc
after hotplug bootmisc modules
keyword -openvz -prefix -systemd-nspawn -uml -vserver -xenu -lxc
}

View File

@@ -15,7 +15,7 @@ depend()
start()
{
# Mount local filesystems in /etc/fstab.
local types="noproc" x= no_netdev=
local types="noproc" x= no_netdev= rc=
for x in $net_fs_list $extra_net_fs_list; do
types="${types},no${x}"
done
@@ -29,9 +29,11 @@ start()
ebegin "Mounting local filesystems"
mount -at "$types" $no_netdev
eend $? "Some local filesystem failed to mount"
# Always return 0 - some local mounts may not be critical for boot
return 0
rc=$?
if [ "$RC_UNAME" != Linux ]; then
rc=0
fi
return $rc
}
stop()
@@ -70,17 +72,19 @@ stop()
sync
fi
local aufs_branch aufs_mount_dir aufs_mount_point aufs_si_dir aufs_si_id
for aufs_si_dir in /sys/fs/aufs/*; do
aufs_mount_dir=${aufs_si_dir#/sys/fs/aufs/}
aufs_si_id="$(printf "%s" $aufs_mount_dir | sed 's/_/=/g')"
local aufs_branch aufs_mount_point aufs_si_id aufs_br_id branches
for aufs_si_dir in /sys/fs/aufs/si*; do
[ -d "${aufs_si_dir}" ] || continue
aufs_si_id="si=${aufs_si_dir#/sys/fs/aufs/si_}"
aufs_mount_point="$(mountinfo -o ${aufs_si_id})"
for x in $aufs_si_dir/br[0-9][0-9][0-9]; do
branches="$aufs_si_dir/br[0-9] $aufs_si_dir/br[0-9][0-9] $aufs_si_dir/br[0-9][0-9][0-9]"
for x in $branches; do
[ -e "${x}" ] || continue
aufs_branch=$(sed 's/=.*//g' $x)
eindent
if ! mount -o "remount,del:$aufs_branch" "$aufs_mount_point" > /dev/null 2>&1; then
ewarn "Failed to remove branch $aufs_branch from aufs \
$aufs_mount_point"
$aufs_mount_point"
fi
eoutdent
sync

View File

@@ -12,21 +12,19 @@ depend()
start()
{
[ -L /etc/mtab ] && return 0
local rc=0
ebegin "Updating /etc/mtab"
if ! checkpath -W /etc; then
rc=1
elif [ ! -e /etc/mtab ]; then
elif ! yesno ${mtab_is_file:-no}; then
[ ! -L /etc/mtab ] && [ -f /etc/mtab ] &&
ewarn "Removing /etc/mtab file"
einfo "Creating mtab symbolic link"
ln -snf /proc/self/mounts /etc/mtab
else
ewarn "The support for updating /etc/mtab as a file is"
ewarn "deprecated and will be removed in the future."
ewarn "Please run the following command as root on your system."
ewarn
ewarn "ln -snf /proc/self/mounts /etc/mtab"
ewarn
[ -L /etc/mtab ] && ewarn "Removing /etc/mtab symbolic link"
rm -f /etc/mtab
einfo "Creating mtab file"
# With / as tmpfs we cannot umount -at tmpfs in localmount as that
# makes / readonly and dismounts all tmpfs even if in use which is
# not good. Luckily, umount uses /etc/mtab instead of /proc/mounts

View File

@@ -4,24 +4,11 @@
description="Mounts network shares according to /etc/fstab."
get_fs_services()
{
local fsclient fstype list=$(ls $RC_LIBEXECDIR/netfs/*) services
local x
for x in $list; do
fstype=${x##*/}
fstabinfo -q -t ${fstype} && services="${services} $(cat x)"
done
printf "%s\n" $services
}
depend()
{
config /etc/fstab
use afc-client amd nfsclient autofs openvpn
use dns
local fs_services ="$(get_fs_services)"
[ -n "$fs_services" ] && use $fs_services
keyword -jail -prefix -systemd-nspawn -vserver -lxc
}
@@ -40,7 +27,10 @@ start()
rc=$?
fi
ewend $rc "Could not mount all network filesystems"
return 0
if [ "$RC_UNAME" != Linux ]; then
rc=0
fi
return $rc
}
stop()

View File

@@ -7,43 +7,53 @@ description="Saves the caches OpenRC uses to non volatile storage"
start()
{
if [ -e "$RC_SVCDIR"/clock-skewed ]; then
ewarn "WARNING: clock skew detected!"
ewarn "Clock skew detected!"
if ! yesno "${RC_GOINGDOWN}"; then
eerror "Not saving deptree cache"
return 1
fi
fi
if ! checkpath -W "$RC_LIBEXECDIR"; then
ewarn "WARNING: ${RC_LIBEXECDIR} is not writable!"
if ! yesno "${RC_GOINGDOWN}"; then
ewarn "Unable to save deptree cache"
if [ ! -d "$RC_LIBEXECDIR"/cache ]; then
if ! checkpath -W "$RC_LIBEXECDIR"; then
eerror "${RC_LIBEXECDIR} is not writable!"
eerror "Unable to save dependency cache"
if yesno "${RC_GOINGDOWN}"; then
return 0
fi
return 1
fi
return 0
fi
ebegin "Saving dependency cache"
local rc=
if [ ! -d "$RC_LIBEXECDIR"/cache ]; then
rm -rf "$RC_LIBEXECDIR"/cache
if ! mkdir -p "$RC_LIBEXECDIR"/cache; then
rc=$?
eerror "Unable to create $RC_LIBEXECDIR/cache"
eerror "Unable to save dependency cache"
if yesno "${RC_GOINGDOWN}"; then
rc=0
return 0
fi
eend $rc "Unable to create $RC_LIBEXECDIR/cache"
return $rc
return 1
fi
fi
local save=
if ! checkpath -W "$RC_LIBEXECDIR"/cache; then
eerror "${RC_LIBEXECDIR}/cache is not writable!"
eerror "Unable to save dependency cache"
if yesno "${RC_GOINGDOWN}"; then
return 0
fi
return 1
fi
ebegin "Saving dependency cache"
local rc=0 save=
for x in deptree depconfig shutdowntime softlevel nettree rc.log; do
[ -e "$RC_SVCDIR/$x" ] && save="$save $RC_SVCDIR/$x"
done
if [ -n "$save" ]; then
cp -p $save "$RC_LIBEXECDIR"/cache 2>/dev/null
cp -p $save "$RC_LIBEXECDIR"/cache
rc=$?
fi
rc=$?
if yesno "${RC_GOINGDOWN}"; then
rc=0
if [ $rc -ne 0 ]; then
eerror "Unable to save dependency cache"
fi
eend 0
fi
eend $rc
eend $rc "Unable to save dependency cache"
}

View File

@@ -116,7 +116,7 @@ mount_cgroups()
mount -n -t cgroup \
-o none,${sysfs_opts},name=openrc,release_agent="$agent" \
openrc /sys/fs/cgroup/openrc
echo 1 > /sys/fs/cgroup/openrc/notify_on_release
printf 1 > /sys/fs/cgroup/openrc/notify_on_release
fi
yesno ${rc_controller_cgroups:-YES} && [ -e /proc/cgroups ] || return 0

View File

@@ -221,20 +221,22 @@ done
# Load our script
sourcex "$RC_SERVICE"
for _d in $required_dirs; do
if [ ! -d $_d ]; then
eval "printf '%s\n' $required_dirs" | while read _d; do
if [ -n "$_d" ] && [ ! -d "$_d" ]; then
eerror "$RC_SVCNAME: \`$_d' is not a directory"
exit 1
fi
done
[ $? -ne 0 ] && exit 1
unset _d
for _f in $required_files; do
if [ ! -r $_f ]; then
eval "printf '%s\n' $required_files" | while read _f; do
if [ -n "$_f" ] && [ ! -r "$_f" ]; then
eerror "$RC_SVCNAME: \`$_f' is not readable"
exit 1
fi
done
[ $? -ne 0 ] && exit 1
unset _f
if [ -n "$opts" ]; then

View File

@@ -54,7 +54,9 @@ cgroup_set_values()
val=
;;
*)
val="$val $1"
[ -n "$val" ] &&
val="$val $1" ||
val="$1"
;;
esac
shift
@@ -107,12 +109,21 @@ cgroup_set_limits()
local devices="${rc_cgroup_devices:-$RC_CGROUP_DEVICES}"
[ -n "$devices" ] && cgroup_set_values devices "$devices"
local hugetlb="${rc_cgroup_hugetlb:-$RC_CGROUP_HUGETLB}"
[ -n "$hugetlb" ] && cgroup_set_values hugetlb "$hugetlb"
local memory="${rc_cgroup_memory:-$RC_CGROUP_MEMORY}"
[ -n "$memory" ] && cgroup_set_values memory "$memory"
local net_cls="${rc_cgroup_net_cls:-$RC_CGROUP_NET_CLS}"
[ -n "$net_cls" ] && cgroup_set_values net_cls "$net_cls"
local net_prio="${rc_cgroup_net_prio:-$RC_CGROUP_NET_PRIO}"
[ -n "$net_prio" ] && cgroup_set_values net_prio "$net_prio"
local pids="${rc_cgroup_pids:-$RC_CGROUP_PIDS}"
[ -n "$pids" ] && cgroup_set_values pids "$pids"
return 0
}

View File

@@ -4,7 +4,13 @@
ssd_start()
{
[ -n "$command" ] || return 0
if [ -z "$command" ]; then
ewarn "The command variable is undefined."
ewarn "There is nothing for ${name:-$RC_SVCNAME} to start."
ewarn "If this is what you intend, please write a start function."
ewarn "This will become a failure in a future release."
return 0
fi
local _background=
ebegin "Starting ${name:-$RC_SVCNAME}"

View File

@@ -298,7 +298,7 @@ find_mounts(struct args *args)
int netdev;
RC_STRINGLIST *list;
if ((fp = fopen("/proc/mounts", "r")) == NULL)
if ((fp = fopen("/proc/self/mounts", "r")) == NULL)
eerrorx("getmntinfo: %s", strerror(errno));
list = rc_stringlist_new();
@@ -315,6 +315,8 @@ find_mounts(struct args *args)
if ((ent = getmntfile(to))) {
if (strstr(ent->mnt_opts, "_netdev"))
netdev = 0;
else
netdev = 1;
}
process_mount(list, args, from, to, fst, opts, netdev);

View File

@@ -85,8 +85,12 @@ static bool sighup, in_background, deps, dry_run;
static pid_t service_pid;
static int signal_pipe[2] = { -1, -1 };
static RC_STRINGLIST *types_b, *types_n, *types_nu, *types_nua, *types_m;
static RC_STRINGLIST *types_mua = NULL;
static RC_STRINGLIST *deptypes_b;
static RC_STRINGLIST *deptypes_n;
static RC_STRINGLIST *deptypes_nu;
static RC_STRINGLIST *deptypes_nua;
static RC_STRINGLIST *deptypes_m;
static RC_STRINGLIST *deptypes_mua;
static void
handle_signal(int sig)
@@ -231,12 +235,12 @@ cleanup(void)
rc_plugin_unload();
#ifdef DEBUG_MEMORY
rc_stringlist_free(types_b);
rc_stringlist_free(types_n);
rc_stringlist_free(types_nu);
rc_stringlist_free(types_nua);
rc_stringlist_free(types_m);
rc_stringlist_free(types_mua);
rc_stringlist_free(deptypes_b);
rc_stringlist_free(deptypes_n);
rc_stringlist_free(deptypes_nu);
rc_stringlist_free(deptypes_nua);
rc_stringlist_free(deptypes_m);
rc_stringlist_free(deptypes_mua);
rc_deptree_free(deptree);
rc_stringlist_free(restart_services);
rc_stringlist_free(need_services);
@@ -518,30 +522,30 @@ get_started_services(void)
}
static void
setup_types(void)
setup_deptypes(void)
{
types_b = rc_stringlist_new();
rc_stringlist_add(types_b, "broken");
deptypes_b = rc_stringlist_new();
rc_stringlist_add(deptypes_b, "broken");
types_n = rc_stringlist_new();
rc_stringlist_add(types_n, "ineed");
deptypes_n = rc_stringlist_new();
rc_stringlist_add(deptypes_n, "ineed");
types_nu = rc_stringlist_new();
rc_stringlist_add(types_nu, "ineed");
rc_stringlist_add(types_nu, "iuse");
deptypes_nu = rc_stringlist_new();
rc_stringlist_add(deptypes_nu, "ineed");
rc_stringlist_add(deptypes_nu, "iuse");
types_nua = rc_stringlist_new();
rc_stringlist_add(types_nua, "ineed");
rc_stringlist_add(types_nua, "iuse");
rc_stringlist_add(types_nua, "iafter");
deptypes_nua = rc_stringlist_new();
rc_stringlist_add(deptypes_nua, "ineed");
rc_stringlist_add(deptypes_nua, "iuse");
rc_stringlist_add(deptypes_nua, "iafter");
types_m = rc_stringlist_new();
rc_stringlist_add(types_m, "needsme");
deptypes_m = rc_stringlist_new();
rc_stringlist_add(deptypes_m, "needsme");
types_mua = rc_stringlist_new();
rc_stringlist_add(types_mua, "needsme");
rc_stringlist_add(types_mua, "usesme");
rc_stringlist_add(types_mua, "beforeme");
deptypes_mua = rc_stringlist_new();
rc_stringlist_add(deptypes_mua, "needsme");
rc_stringlist_add(deptypes_mua, "usesme");
rc_stringlist_add(deptypes_mua, "beforeme");
}
static void
@@ -604,10 +608,10 @@ svc_start_deps(void)
if (!deptree && ((deptree = _rc_deptree_load(0, NULL)) == NULL))
eerrorx("failed to load deptree");
if (!types_b)
setup_types();
if (!deptypes_b)
setup_deptypes();
services = rc_deptree_depends(deptree, types_b, applet_list,
services = rc_deptree_depends(deptree, deptypes_b, applet_list,
runlevel, 0);
if (TAILQ_FIRST(services)) {
eerrorn("ERROR: %s needs service(s) ", applet);
@@ -625,9 +629,9 @@ svc_start_deps(void)
rc_stringlist_free(services);
services = NULL;
need_services = rc_deptree_depends(deptree, types_n,
need_services = rc_deptree_depends(deptree, deptypes_n,
applet_list, runlevel, depoptions);
use_services = rc_deptree_depends(deptree, types_nu,
use_services = rc_deptree_depends(deptree, deptypes_nu,
applet_list, runlevel, depoptions);
if (!rc_runlevel_starting()) {
@@ -655,7 +659,7 @@ svc_start_deps(void)
return;
/* Now wait for them to start */
services = rc_deptree_depends(deptree, types_nua, applet_list,
services = rc_deptree_depends(deptree, deptypes_nua, applet_list,
runlevel, depoptions);
/* We use tmplist to hold our scheduled by list */
tmplist = rc_stringlist_new();
@@ -860,10 +864,10 @@ svc_stop_deps(RC_SERVICE state)
if (!deptree && ((deptree = _rc_deptree_load(0, NULL)) == NULL))
eerrorx("failed to load deptree");
if (!types_m)
setup_types();
if (!deptypes_m)
setup_deptypes();
services = rc_deptree_depends(deptree, types_m, applet_list,
services = rc_deptree_depends(deptree, deptypes_m, applet_list,
runlevel, depoptions);
tmplist = rc_stringlist_new();
TAILQ_FOREACH_REVERSE(svc, services, rc_stringlist, entries) {
@@ -923,7 +927,7 @@ svc_stop_deps(RC_SERVICE state)
/* We now wait for other services that may use us and are
* stopping. This is important when a runlevel stops */
services = rc_deptree_depends(deptree, types_mua, applet_list,
services = rc_deptree_depends(deptree, deptypes_mua, applet_list,
runlevel, depoptions);
TAILQ_FOREACH(svc, services, entries) {
if (rc_service_state(svc->value) & RC_SERVICE_STOPPED)