------------------------------------------------------------
revno: 60
committer: Dimitri John Ledkov <[email protected]>
branch nick: upstart-jobs
timestamp: Thu 2014-04-10 12:09:38 +0100
message:
auto update
added:
etc/init/neutron-plugin-oneconvergence-agent.conf
etc/init/usb-modeswitch-upstart.conf
lib/systemd/system/certmonger.path
lib/systemd/system/certmonger.service
lib/systemd/system/org.fedorahosted.certmonger.service
lib/systemd/system/[email protected]
usr/share/upstart/sessions/indicator-messages.conf
usr/share/upstart/sessions/sync-monitor.conf
kind changed:
etc/init.d/certmonger@ (symlink => file)
modified:
etc/init.d/burp
etc/init.d/ceph
etc/init.d/docker.io
etc/init.d/radosgw
etc/init.d/rbdmap
etc/init/docker.io.conf
etc/init/php5-fpm.conf
etc/init/sssd.conf
lib/systemd/system/docker.io.service
lib/systemd/system/sssd.service
usr/share/upstart/sessions/indicator-network.conf
usr/share/upstart/sessions/mtp-server.conf
--
lp:~upstart-devel/upstart/upstart-jobs
https://code.launchpad.net/~upstart-devel/upstart/upstart-jobs
Your team Upstart Reviewers is subscribed to branch
lp:~upstart-devel/upstart/upstart-jobs.
To unsubscribe from this branch go to
https://code.launchpad.net/~upstart-devel/upstart/upstart-jobs/+edit-subscription
=== modified file 'etc/init.d/burp'
--- etc/init.d/burp 2014-04-09 00:24:49 +0000
+++ etc/init.d/burp 2014-04-10 11:09:38 +0000
@@ -152,3 +152,5 @@
exit 3
;;
esac
+
+exit 0;
=== modified file 'etc/init.d/ceph'
--- etc/init.d/ceph 2014-04-09 00:24:49 +0000
+++ etc/init.d/ceph 2014-04-10 11:09:38 +0000
@@ -12,6 +12,8 @@
# Description: Enable Ceph distributed file system services.
### END INIT INFO
+. /lib/lsb/init-functions
+
# if we start up as ./mkcephfs, assume everything else is in the
# current directory too.
if [ `dirname $0` = "." ] && [ $PWD != "/etc/init.d" ]; then
@@ -323,9 +325,9 @@
get_conf osd_location_hook "$BINDIR/ceph-crush-location" "osd crush location hook"
osd_location=`$osd_location_hook --cluster ceph --id $id --type osd`
get_conf osd_weight "" "osd crush initial weight"
- defaultweight="$(df -P -k $osd_data/. | tail -1 | awk '{ d=$2/1073741824 ; r = sprintf(\"%.2f\", d); print r }')"
+ defaultweight="$(df -P -k $osd_data/. | tail -1 | awk '{ print sprintf("%.2f",$2/1073741824) }')"
get_conf osd_keyring "$osd_data/keyring" "keyring"
- do_cmd "timeout 10 $BINDIR/ceph -c $conf --name=osd.$id --keyring=$osd_keyring osd crush create-or-move -- $id ${osd_weight:-${defaultweight:-1}} $osd_location"
+ do_cmd "timeout 30 $BINDIR/ceph -c $conf --name=osd.$id --keyring=$osd_keyring osd crush create-or-move -- $id ${osd_weight:-${defaultweight:-1}} $osd_location"
fi
fi
=== modified symlink 'etc/init.d/certmonger' (properties changed: -x to +x)
=== target was u'/lib/init/upstart-job'
--- etc/init.d/certmonger 1970-01-01 00:00:00 +0000
+++ etc/init.d/certmonger 2014-04-10 11:09:38 +0000
@@ -0,0 +1,154 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: certmonger
+# Required-Start: $network $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Certmonger
+# Description: Certmonger is a D-Bus -based service which attempts to
+# simplify interaction with certifying authorities (CAs)
+# on networks which use public-key infrastructure (PKI).
+### END INIT INFO
+
+# Author: Timo Aaltonen <Timo Aaltonen <[email protected]>>
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="Certmonger" # Introduce a short description here
+NAME=certmonger # Introduce the short server's name here
+DAEMON=/usr/sbin/$NAME # Introduce the server's location here
+DAEMON_ARGS="" # Arguments to run the daemon with
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x $DAEMON ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+. /lib/init/vars.sh
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ status)
+ status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
=== modified file 'etc/init.d/docker.io'
--- etc/init.d/docker.io 2014-04-09 00:24:49 +0000
+++ etc/init.d/docker.io 2014-04-10 11:09:38 +0000
@@ -14,13 +14,16 @@
# VMs, bare metal, OpenStack clusters, public clouds and more.
### END INIT INFO
+export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
+
BASE=$(basename $0)
+# modify these in /etc/default/$BASE (/etc/default/docker)
DOCKER=/usr/bin/$BASE
DOCKER_PIDFILE=/var/run/$BASE.pid
+DOCKER_LOGFILE=/var/log/$BASE.log
DOCKER_OPTS=
-
-PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
+DOCKER_DESC="Docker"
# Get lsb functions
. /lib/lsb/init-functions
@@ -30,8 +33,8 @@
fi
# see also init_is_upstart in /lib/lsb/init-functions (which isn't available in Ubuntu 12.04, or we'd use it)
-if [ -x /sbin/initctl ] && /sbin/initctl version 2>/dev/null | /bin/grep -q upstart; then
- log_failure_msg "Docker is managed via upstart, try using service $BASE $1"
+if [ -x /sbin/initctl ] && /sbin/initctl version 2>/dev/null | grep -q upstart; then
+ log_failure_msg "$DOCKER_DESC is managed via upstart, try using service $BASE $1"
exit 1
fi
@@ -43,29 +46,59 @@
fail_unless_root() {
if [ "$(id -u)" != '0' ]; then
- log_failure_msg "Docker must be run as root"
+ log_failure_msg "$DOCKER_DESC must be run as root"
exit 1
fi
}
+cgroupfs_mount() {
+ # see also https://github.com/tianon/cgroupfs-mount/blob/master/cgroupfs-mount
+ if grep -v '^#' /etc/fstab | grep -q cgroup \
+ || [ ! -e /proc/cgroups ] \
+ || [ ! -d /sys/fs/cgroup ]; then
+ return
+ fi
+ if ! mountpoint -q /sys/fs/cgroup; then
+ mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
+ fi
+ (
+ cd /sys/fs/cgroup
+ for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do
+ mkdir -p $sys
+ if ! mountpoint -q $sys; then
+ if ! mount -n -t cgroup -o $sys cgroup $sys; then
+ rmdir $sys || true
+ fi
+ fi
+ done
+ )
+}
+
case "$1" in
start)
fail_unless_root
- log_begin_msg "Starting Docker: $BASE"
- mount | grep cgroup >/dev/null || mount -t cgroup none /sys/fs/cgroup 2>/dev/null
+
+ cgroupfs_mount
+
+ touch "$DOCKER_LOGFILE"
+ chgrp docker "$DOCKER_LOGFILE"
+
+ log_begin_msg "Starting $DOCKER_DESC: $BASE"
start-stop-daemon --start --background \
+ --no-close \
--exec "$DOCKER" \
--pidfile "$DOCKER_PIDFILE" \
- -- -d -p "$DOCKER_PIDFILE" \
- $DOCKER_OPTS
+ -- \
+ -d -p "$DOCKER_PIDFILE" \
+ $DOCKER_OPTS \
+ >> "$DOCKER_LOGFILE" 2>&1
log_end_msg $?
;;
stop)
fail_unless_root
- log_begin_msg "Stopping Docker: $BASE"
- start-stop-daemon --stop \
- --pidfile "$DOCKER_PIDFILE"
+ log_begin_msg "Stopping $DOCKER_DESC: $BASE"
+ start-stop-daemon --stop --pidfile "$DOCKER_PIDFILE"
log_end_msg $?
;;
=== modified file 'etc/init.d/radosgw'
--- etc/init.d/radosgw 2014-04-09 00:24:49 +0000
+++ etc/init.d/radosgw 2014-04-10 11:09:38 +0000
@@ -6,6 +6,7 @@
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: radosgw RESTful rados gateway
+# Description: radosgw RESTful rados gateway
### END INIT INFO
PATH=/sbin:/bin:/usr/bin
=== modified file 'etc/init.d/rbdmap'
--- etc/init.d/rbdmap 2014-04-09 00:24:49 +0000
+++ etc/init.d/rbdmap 2014-04-10 11:09:38 +0000
@@ -7,8 +7,11 @@
### BEGIN INIT INFO
# Provides: rbdmap
-# Required-Start: $network
-# Required-Stop: $network
+# Required-Start: $network $remote_fs
+# Required-Stop: $network $remote_fs
+# Should-Start: ceph
+# Should-Stop: ceph
+# X-Start-Before: $x-display-manager
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Ceph RBD Mapping
@@ -93,6 +96,11 @@
do_unmap
;;
+ restart|force-reload)
+ $0 stop
+ $0 start
+ ;;
+
reload)
do_map
;;
@@ -102,7 +110,7 @@
;;
*)
- log_success_msg "Usage: rbdmap {start|stop|reload|status}"
+ log_success_msg "Usage: rbdmap {start|stop|restart|force-reload|reload|status}"
exit 1
;;
esac
=== modified file 'etc/init/docker.io.conf'
--- etc/init/docker.io.conf 2014-01-11 12:08:48 +0000
+++ etc/init/docker.io.conf 2014-04-10 11:09:38 +0000
@@ -1,11 +1,35 @@
description "Docker daemon"
-start on filesystem and started lxc-net
+start on filesystem
stop on runlevel [!2345]
respawn
+pre-start script
+ # see also https://github.com/tianon/cgroupfs-mount/blob/master/cgroupfs-mount
+ if grep -v '^#' /etc/fstab | grep -q cgroup \
+ || [ ! -e /proc/cgroups ] \
+ || [ ! -d /sys/fs/cgroup ]; then
+ exit 0
+ fi
+ if ! mountpoint -q /sys/fs/cgroup; then
+ mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
+ fi
+ (
+ cd /sys/fs/cgroup
+ for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do
+ mkdir -p $sys
+ if ! mountpoint -q $sys; then
+ if ! mount -n -t cgroup -o $sys cgroup $sys; then
+ rmdir $sys || true
+ fi
+ fi
+ done
+ )
+end script
+
script
+ # modify these in /etc/default/$UPSTART_JOB (/etc/default/docker)
DOCKER=/usr/bin/$UPSTART_JOB
DOCKER_OPTS=
if [ -f /etc/default/$UPSTART_JOB ]; then
=== added file 'etc/init/neutron-plugin-oneconvergence-agent.conf'
--- etc/init/neutron-plugin-oneconvergence-agent.conf 1970-01-01 00:00:00 +0000
+++ etc/init/neutron-plugin-oneconvergence-agent.conf 2014-04-10 11:09:38 +0000
@@ -0,0 +1,18 @@
+# vim:set ft=upstart ts=2 et:
+description "One Convergence Plugin Agent"
+author "Chuck Short <[email protected]>"
+
+start on runlevel [2345]
+stop on runlevel [!2345]
+
+respawn
+
+chdir /var/run
+
+pre-start script
+ mkdir -p /var/run/neutron
+ chown neutron:root /var/run/neutron
+end script
+
+exec start-stop-daemon --start --chuid neutron --exec /usr/bin/neutron-nvsd-agent -- --config-file=/etc/neutron/neutron.conf --config-file=/etc/neutron/plugins/oneconvergence/nvsdplugin.ini --log-file=/var/log/neutron/nvsd-agent.log
+
=== modified file 'etc/init/php5-fpm.conf'
--- etc/init/php5-fpm.conf 2013-12-13 18:38:08 +0000
+++ etc/init/php5-fpm.conf 2014-04-10 11:09:38 +0000
@@ -6,7 +6,11 @@
start on runlevel [2345]
stop on runlevel [016]
-reload signal USR2
+# Precise upstart does not support reload signal, and thus rejects the
+# job. We'd rather start the daemon, instead of forcing users to
+# reboot https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1272788
+#
+# reload signal USR2
pre-start exec /usr/lib/php5/php5-fpm-checkconf
=== modified file 'etc/init/sssd.conf'
--- etc/init/sssd.conf 2013-11-18 12:42:03 +0000
+++ etc/init/sssd.conf 2014-04-10 11:09:38 +0000
@@ -10,7 +10,6 @@
start on (filesystem and net-device-up)
stop on runlevel [06]
-expect fork
respawn
env DEFAULTFILE=/etc/default/sssd
@@ -24,5 +23,11 @@
if [ -f "$DEFAULTFILE" ]; then
. "$DEFAULTFILE"
fi
+
+ # Use the same pts device for stdin as stdout, stderr.
+ # This is required because using /dev/null causes sssd to exit
+ # immediately and using /dev/zero makes it use 100% of CPU...
+ exec 0>&1
+
exec sssd $DAEMON_OPTS
end script
=== added file 'etc/init/usb-modeswitch-upstart.conf'
--- etc/init/usb-modeswitch-upstart.conf 1970-01-01 00:00:00 +0000
+++ etc/init/usb-modeswitch-upstart.conf 2014-04-10 11:09:38 +0000
@@ -0,0 +1,5 @@
+start on usb-modeswitch-upstart
+task
+script
+ exec /usr/sbin/usb_modeswitch_dispatcher --switch-upstart $UMS_PARAM
+end script
=== added file 'lib/systemd/system/certmonger.path'
--- lib/systemd/system/certmonger.path 1970-01-01 00:00:00 +0000
+++ lib/systemd/system/certmonger.path 2014-04-10 11:09:38 +0000
@@ -0,0 +1,9 @@
+[Unit]
+Description=Certificate monitoring and PKI enrollment
+After=syslog.target network.target dbus.service
+
+[Path]
+DirectoryNotEmpty=/var/lib/certmonger/requests
+
+[Install]
+WantedBy=multi-user.target
=== added file 'lib/systemd/system/certmonger.service'
--- lib/systemd/system/certmonger.service 1970-01-01 00:00:00 +0000
+++ lib/systemd/system/certmonger.service 2014-04-10 11:09:38 +0000
@@ -0,0 +1,13 @@
+[Unit]
+Description=Certificate monitoring and PKI enrollment
+After=syslog.target network.target dbus.service
+
+[Service]
+Type=dbus
+PIDFile=/var/run/certmonger.pid
+EnvironmentFile=-/etc/sysconfig/certmonger
+ExecStart=/usr/sbin/certmonger -S -p /var/run/certmonger.pid -n $OPTS
+BusName=org.fedorahosted.certmonger
+
+[Install]
+WantedBy=multi-user.target
=== modified file 'lib/systemd/system/docker.io.service'
--- lib/systemd/system/docker.io.service 2014-04-09 00:26:24 +0000
+++ lib/systemd/system/docker.io.service 2014-04-10 11:09:38 +0000
@@ -6,6 +6,8 @@
[Service]
ExecStart=/usr/bin/docker.io -d
Restart=on-failure
+LimitNOFILE=1048576
+LimitNPROC=1048576
[Install]
WantedBy=multi-user.target
=== added file 'lib/systemd/system/org.fedorahosted.certmonger.service'
--- lib/systemd/system/org.fedorahosted.certmonger.service 1970-01-01 00:00:00 +0000
+++ lib/systemd/system/org.fedorahosted.certmonger.service 2014-04-10 11:09:38 +0000
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.fedorahosted.certmonger
+Exec=/usr/sbin/certmonger-session -b 300
=== modified file 'lib/systemd/system/sssd.service'
--- lib/systemd/system/sssd.service 2014-04-09 00:26:24 +0000
+++ lib/systemd/system/sssd.service 2014-04-10 11:09:38 +0000
@@ -5,7 +5,7 @@
[Service]
EnvironmentFile=-/etc/sysconfig/sssd
-ExecStart=${exec_prefix}/sbin/sssd -D -f
+ExecStart=/usr/sbin/sssd -D -f
# These two should be used with traditional UNIX forking daemons
# consult systemd.service(5) for more details
Type=forking
=== added file 'lib/systemd/system/[email protected]'
--- lib/systemd/system/[email protected] 1970-01-01 00:00:00 +0000
+++ lib/systemd/system/[email protected] 2014-04-10 11:09:38 +0000
@@ -0,0 +1,6 @@
+[Unit]
+Description=USB_ModeSwitch
+
+[Service]
+Type=oneshot
+ExecStart=/usr/sbin/usb_modeswitch_dispatcher --switch-systemd %I
=== added file 'usr/share/upstart/sessions/indicator-messages.conf'
--- usr/share/upstart/sessions/indicator-messages.conf 1970-01-01 00:00:00 +0000
+++ usr/share/upstart/sessions/indicator-messages.conf 2014-04-10 11:09:38 +0000
@@ -0,0 +1,10 @@
+description "Indicator Messages Service"
+
+start on indicator-services-start
+stop on desktop-end or indicator-services-end
+
+respawn
+respawn limit 2 10
+
+exec /usr/lib/i386-linux-gnu/indicator-messages/indicator-messages-service
+
=== modified file 'usr/share/upstart/sessions/indicator-network.conf'
--- usr/share/upstart/sessions/indicator-network.conf 2013-11-18 12:42:03 +0000
+++ usr/share/upstart/sessions/indicator-network.conf 2014-04-10 11:09:38 +0000
@@ -1,12 +1,19 @@
description "Indicator Network Backend"
-author "Ted Gould <[email protected]>"
-start on indicators-loaded or indicator-services-start
+start on indicator-services-start
stop on desktop-end or indicator-services-end
env G_MESSAGES_DEBUG=all
export G_MESSAGES_DEBUG
respawn
+respawn limit 2 10
+
+pre-start script
+ # NOTE: Only used on Unity8 today, not 7
+ if [ "x$DESKTOP_SESSION" != "xubuntu-touch" ] ; then
+ stop; exit 0
+ fi
+end script
exec /usr/lib/i386-linux-gnu/indicator-network/indicator-network-service
=== modified file 'usr/share/upstart/sessions/mtp-server.conf'
--- usr/share/upstart/sessions/mtp-server.conf 2014-03-12 12:07:43 +0000
+++ usr/share/upstart/sessions/mtp-server.conf 2014-04-10 11:09:38 +0000
@@ -3,6 +3,8 @@
start on :sys:android-mtp-on or :sys:android-usb-connected
stop on desktop-end or :sys:android-mtp-off
+env GOOGLE_LOGTOSTDERR=1
+
respawn
exec /usr/bin/mtp-server
=== added file 'usr/share/upstart/sessions/sync-monitor.conf'
--- usr/share/upstart/sessions/sync-monitor.conf 1970-01-01 00:00:00 +0000
+++ usr/share/upstart/sessions/sync-monitor.conf 2014-04-10 11:09:38 +0000
@@ -0,0 +1,9 @@
+description "sync-monitor"
+author "Renato Oliveira Filho <[email protected]>"
+
+start on started address-book-service
+stop on session-end
+
+respawn
+
+exec /usr/lib/i386-linux-gnu/sync-monitor/sync-monitor
--
upstart-devel mailing list
[email protected]
Modify settings or unsubscribe at:
https://lists.ubuntu.com/mailman/listinfo/upstart-devel