James Hunt has proposed merging lp:~jamesodhunt/upstart/libupstart into lp:upstart.
Requested reviews: Upstart Reviewers (upstart-reviewers) For more details, see: https://code.launchpad.net/~jamesodhunt/upstart/libupstart/+merge/165587 Provide a versioned libupstart library built from the auto-generated from the D-Bus bindings. Runs abi-compliance-checker(1) on each build (if available and if --disable-abi-check was not specified at configure time) to ensure the ABI for the latest build is compatible with the current version of the library. -- https://code.launchpad.net/~jamesodhunt/upstart/libupstart/+merge/165587 Your team Upstart Reviewers is requested to review the proposed merge of lp:~jamesodhunt/upstart/libupstart into lp:upstart.
=== modified file 'ChangeLog' --- ChangeLog 2013-05-07 08:59:05 +0000 +++ ChangeLog 2013-05-24 12:05:35 +0000 @@ -1,3 +1,21 @@ +2013-05-24 James Hunt <[email protected]> + + * configure.ac: Add --disable-abi-check option to allow ABI + check to be skipped. + +2013-05-23 James Hunt <[email protected]> + + * lib/Makefile.am: + - Fix library LDFLAGS. + - Added test program. + * lib/tests/test_libupstart.c: Basic library test. + +2013-05-22 James Hunt <[email protected]> + + * Added libupstart library, built from auto-generated + D-Bus bindings. To avoid ABI breakage, build calls + abi-compliance-checker(1), if available. + 2013-05-07 James Hunt <[email protected]> * util/man/shutdown.8: Specify default action is to bring system === modified file 'Makefile.am' --- Makefile.am 2013-03-04 11:44:49 +0000 +++ Makefile.am 2013-05-24 12:05:35 +0000 @@ -1,6 +1,6 @@ ## Process this file with automake to produce Makefile.in -SUBDIRS = intl dbus init util extra conf doc contrib po scripts +SUBDIRS = intl dbus init util extra lib conf doc contrib po scripts EXTRA_DIST = HACKING === modified file 'configure.ac' --- configure.ac 2013-03-22 14:34:15 +0000 +++ configure.ac 2013-05-24 12:05:35 +0000 @@ -31,6 +31,7 @@ PKG_CHECK_MODULES([NIH_DBUS], [libnih-dbus >= 1.0.0]) PKG_CHECK_MODULES([DBUS], [dbus-1 >= 1.2.16]) PKG_CHECK_MODULES([UDEV], [libudev >= 146], [have_udev=yes], [have_udev=no]) +AM_CONDITIONAL([HAVE_UDEV], [test "$have_udev" = yes]) # Reasons for requiring this library version: # @@ -50,7 +51,17 @@ # PKG_CHECK_MODULES([JSON], [json >= 0.10]) -AM_CONDITIONAL([HAVE_UDEV], [test "$have_udev" = yes]) +AC_ARG_ENABLE([abi-check], + AS_HELP_STRING([--disable-abi-check], + [Disable libupstart ABI check performed if abi-compliance-checker available]), + [abi_check=no], [abi_check=yes]) + +if test x$abi_check = xyes; then + AC_CHECK_PROGS([ABI_COMPLIANCE_CHECKER],[abi-compliance-checker]) + AC_SUBST([ABI_COMPLIANCE_CHECKER]) +fi + +AM_CONDITIONAL([HAVE_ABI_CHECKER], [test ! -z "$ABI_COMPLIANCE_CHECKER"]) # Checks for header files. AC_CHECK_HEADERS([valgrind/valgrind.h, sys/prctl.h]) @@ -101,6 +112,7 @@ AC_CONFIG_FILES([ Makefile intl/Makefile dbus/Makefile init/Makefile util/Makefile conf/Makefile extra/Makefile doc/Makefile contrib/Makefile po/Makefile.in - scripts/Makefile scripts/data/Makefile ]) + scripts/Makefile scripts/data/Makefile + lib/Makefile lib/libupstart.pc ]) AC_CONFIG_HEADERS([config.h]) AC_OUTPUT === added directory 'lib' === added file 'lib/Makefile.am' --- lib/Makefile.am 1970-01-01 00:00:00 +0000 +++ lib/Makefile.am 2013-05-24 12:05:35 +0000 @@ -0,0 +1,159 @@ +## Process this file with automake to produce Makefile.in + +VERSION_CURRENT = 1 +VERSION_REVISION = 0 +VERSION_AGE = 0 + +LIBUPSTART_VERSION = $(VERSION_CURRENT):$(VERSION_REVISION):$(VERSION_AGE) +LIBUPSTART_VERSION_DOTTED = $(VERSION_CURRENT).$(VERSION_REVISION).$(VERSION_AGE) + +AM_CFLAGS = \ + $(NIH_CFLAGS) \ + $(NIH_DBUS_CFLAGS) \ + $(DBUS_CFLAGS) + +AM_CPPFLAGS = \ + -DLOCALEDIR="\"$(localedir)\"" \ + -DSBINDIR="\"$(sbindir)\"" \ + -I$(top_builddir) -I$(top_srcdir) -iquote$(builddir) -iquote$(srcdir) \ + -I$(top_srcdir)/intl + +lib_LTLIBRARIES = libupstart.la + +# The library is built from the autogenerated code. +libupstart_la_SOURCES = upstart.h +nodist_libupstart_la_SOURCES = \ + $(com_ubuntu_Upstart_OUTPUTS) \ + $(com_ubuntu_Upstart_Job_OUTPUTS) \ + $(com_ubuntu_Upstart_Instance_OUTPUTS) + +libupstart_la_LIBADD = + $(LTLIBINTL) \ + $(NIH_LIBS) \ + $(NIH_DBUS_LIBS) \ + $(DBUS_LIBS) \ + -lrt + +libupstart_la_LDFLAGS = \ + -version-info $(LIBUPSTART_VERSION) \ + -Wl,--version-script=$(srcdir)/libupstart.ver \ + $(LIBS) $(NIH_LIBS) $(NIH_DBUS_LIBS) $(DBUS_LIBS) -lrt + +# latest ABI +abi_official = $(srcdir)/abi_dumps/libupstart/libupstart_$(LIBUPSTART_VERSION_DOTTED).abi.tar.gz + +# disposable ABI descriptor for the currently-built library +abi_build_XML = libupstart-abi.xml + +$(abi_build_XML): $(abi_build_XML).in + sed -e 's|[@]abs_builddir[@]|$(abs_builddir)|g' \ + -e 's|[@]libupstart_version[@]|$(LIBUPSTART_VERSION_DOTTED)|g' \ + $< > $@ + +pkgconfigdir = $(prefix)/lib/pkgconfig +pkgconfig_DATA = libupstart.pc + +EXTRA_DIST = \ + libupstart.pc.in \ + run_abi_checker.sh.in \ + libupstart.ver \ + $(abi_official) \ + $(abi_build_XML).in + +run_abi_checker.sh: run_abi_checker.sh.in libupstart.la $(abi_build_XML) + sed -e 's|[@]abs_builddir[@]|$(abs_builddir)|g' \ + -e 's|[@]abs_srcdir[@]|$(abs_srcdir)|g' \ + -e 's|[@]libupstart[@]|$(lib_LTLIBRARIES)|g' \ + -e 's|[@]libupstart_version[@]|$(LIBUPSTART_VERSION)|g' \ + -e 's|[@]abi_build_XML[@]|$(abi_build_XML)|g' \ + -e 's|[@]abi_compliance_checker[@]|$(ABI_COMPLIANCE_CHECKER)|g' \ + $< > $@ + chmod +x $@ + +TESTS = test_libupstart +check_PROGRAMS = $(TESTS) +check_SCRIPTS = run_abi_checker.sh + +test_libupstart_SOURCES = tests/test_libupstart.c $(lib_LTLIBRARIES) +test_libupstart_LDADD = \ + $(lib_LTLIBRARIES) \ + $(NIH_LIBS) \ + $(NIH_DBUS_LIBS) \ + $(DBUS_LIBS) \ + -lrt + +com_ubuntu_Upstart_OUTPUTS = \ + com.ubuntu.Upstart.c \ + com.ubuntu.Upstart.h + +com_ubuntu_Upstart_XML = \ + ../dbus/com.ubuntu.Upstart.xml + +# XXX: We have to use proxy mode for clients +# XXX: (meaning we cannot use the library for init itself) +$(com_ubuntu_Upstart_OUTPUTS): $(com_ubuntu_Upstart_XML) + $(AM_V_GEN)$(NIH_DBUS_TOOL) \ + --package=$(PACKAGE) \ + --mode=proxy --prefix=upstart \ + --default-interface=com.ubuntu.Upstart0_6 \ + --output=$@ $< + +com_ubuntu_Upstart_Job_OUTPUTS = \ + com.ubuntu.Upstart.Job.c \ + com.ubuntu.Upstart.Job.h + +com_ubuntu_Upstart_Job_XML = \ + ../dbus/com.ubuntu.Upstart.Job.xml + +$(com_ubuntu_Upstart_Job_OUTPUTS): $(com_ubuntu_Upstart_Job_XML) + $(AM_V_GEN)$(NIH_DBUS_TOOL) \ + --package=$(PACKAGE) \ + --mode=proxy --prefix=job_class \ + --default-interface=com.ubuntu.Upstart0_6.Job \ + --output=$@ $< + +com_ubuntu_Upstart_Instance_OUTPUTS = \ + com.ubuntu.Upstart.Instance.c \ + com.ubuntu.Upstart.Instance.h + +com_ubuntu_Upstart_Instance_XML = \ + ../dbus/com.ubuntu.Upstart.Instance.xml + +$(com_ubuntu_Upstart_Instance_OUTPUTS): $(com_ubuntu_Upstart_Instance_XML) + $(AM_V_GEN)$(NIH_DBUS_TOOL) \ + --package=$(PACKAGE) \ + --mode=proxy --prefix=job \ + --default-interface=com.ubuntu.Upstart0_6.Instance \ + --output=$@ $< + +# These have to be built sources because we can't compile object files +# without the header file existing first +BUILT_SOURCES = \ + $(com_ubuntu_Upstart_OUTPUTS) \ + $(com_ubuntu_Upstart_Job_OUTPUTS) \ + $(com_ubuntu_Upstart_Instance_OUTPUTS) + +CLEANFILES = \ + $(com_ubuntu_Upstart_OUTPUTS) \ + $(com_ubuntu_Upstart_Job_OUTPUTS) \ + $(com_ubuntu_Upstart_Instance_OUTPUTS) \ + $(abi_build_XML) \ + $(pkgconfig_DATA) + +CLEANFILES += $(check_SCRIPTS) + +tests: $(check_PROGRAMS) + +clean-local: + rm -f *.gcno *.gcda + +maintainer-clean-local: + rm -f *.gcov + +# Run ABI compliance checker on every build to ensure the library ABI +# has not been inadvertently broken due to dbus/*.xml being updated +# without a version change. +if HAVE_ABI_CHECKER +all-local: run_abi_checker.sh + $(builddir)/run_abi_checker.sh +endif === added directory 'lib/abi_dumps' === added directory 'lib/abi_dumps/libupstart' === added file 'lib/abi_dumps/libupstart/libupstart_1.0.0.abi.tar.gz' Binary files lib/abi_dumps/libupstart/libupstart_1.0.0.abi.tar.gz 1970-01-01 00:00:00 +0000 and lib/abi_dumps/libupstart/libupstart_1.0.0.abi.tar.gz 2013-05-24 12:05:35 +0000 differ === added file 'lib/libupstart-abi.xml.in' --- lib/libupstart-abi.xml.in 1970-01-01 00:00:00 +0000 +++ lib/libupstart-abi.xml.in 2013-05-24 12:05:35 +0000 @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + upstart - official libupstart abi-compliance-checker(1) descriptor + + Copyright © 2013 Canonical Ltd. + Author: James Hunt <[email protected]> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License version 2, as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +--> + +<descriptor> + +<version> + @libupstart_version@-build +</version> + +<headers> + @abs_builddir@ +</headers> + +<libs> + @abs_builddir@ +</libs> + +<!-- + Include paths are automatically detected but the tool needs help to + find the default include directory. +--> +<add_include_paths> + /usr/include +</add_include_paths> + +</descriptor> === added file 'lib/libupstart.pc.in' --- lib/libupstart.pc.in 1970-01-01 00:00:00 +0000 +++ lib/libupstart.pc.in 2013-05-24 12:05:35 +0000 @@ -0,0 +1,10 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: libupstart +Description: Upstart Utility Library +Version: @VERSION@ +Libs: -L${libdir} -lupstart +Cflags: -I${includedir} === added file 'lib/libupstart.ver' --- lib/libupstart.ver 1970-01-01 00:00:00 +0000 +++ lib/libupstart.ver 2013-05-24 12:05:35 +0000 @@ -0,0 +1,7 @@ +LIBUPSTART_1.0.0 { + global: + upstart_*; + job_*; + local: + *; +}; === added file 'lib/run_abi_checker.sh.in' --- lib/run_abi_checker.sh.in 1970-01-01 00:00:00 +0000 +++ lib/run_abi_checker.sh.in 2013-05-24 12:05:35 +0000 @@ -0,0 +1,88 @@ +#!/bin/sh -e +#--------------------------------------------------------------------- +# Script to run abi-compliance-checker to ensure ABI not broken. +#--------------------------------------------------------------------- +# Copyright (C) 2013 Canonical Ltd. +# +# Author: James Hunt <[email protected]> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, version 3 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +#--------------------------------------------------------------------- + +die() +{ + msg="$*" + echo "ERROR: $msg" >&2 + exit 1 +} + +build_dir="@abs_builddir@" +source_dir="@abs_srcdir@" +acc="@abi_compliance_checker@" +acc_descriptor="@abi_build_XML@" +libupstart_libtool="@libupstart@" +lib_prefix="${libupstart_libtool%.la}" +libupstart_lt_version="@libupstart_version@" + +# convert libtool(1) version to dotted form +dotted_version=$(echo "$libupstart_lt_version"|tr ':' '.') + +libupstart_path="$build_dir/$libupstart_libtool" + +old_abi="$source_dir/abi_dumps/${lib_prefix}/${lib_prefix}_${dotted_version}.abi.tar.gz" + +echo "Checking ABI for $lib_prefix" +echo + +for file in "$libupstart_path" "$old_abi" +do + [ -f "$file" ] || die "file $file not found" +done + +# Install the library to a temporary location since we need the +# full path to the shared library to pass to abi-compliance-checker. +install_dir=$(mktemp -d --tmpdir="$build_dir") +[ -z "$install_dir" ] && \ + die "failed to create temporary install directory" + +libtool --mode=install install \ + "$libupstart_libtool" "$install_dir" >/dev/null 2>&1 + +abi_dump_dir=$(mktemp -d --tmpdir="$build_dir") +[ -z "$abi_dump_dir" ] && \ + die "failed to create temporary dump directory" + +abi_dump_path="$abi_dump_dir/${lib_prefix}_${dotted_version}.abi.tar.gz" + +installed_so="$install_dir/$(echo "$lib_prefix"|cut -d\. -f1).so" + +[ -f "$installed_so" ] || die "cannot find $installed_so" + +# generate a descriptor for the newly-built library version +"$acc" -library "$lib_prefix" -dump "$acc_descriptor" -dump-path "$abi_dump_path" + +new_abi="$abi_dump_dir/${lib_prefix}_${dotted_version}.abi.tar.gz" +[ -f "$new_abi" ] || die "cannot find $new_abi" + +# run the ABI checker +"$acc" -library "$lib_prefix" -old "$old_abi" -new "$new_abi" + +# clean up +libtool --mode=uninstall \ + rm "$install_dir/$libupstart_libtool" >/dev/null 2>&1 + +rm -rf "$abi_dump_dir" "$build_dir/logs" "$install_dir" + +# HTML report generated by $acc +rm -rf compat_reports/ === added directory 'lib/tests' === added file 'lib/tests/test_libupstart.c' --- lib/tests/test_libupstart.c 1970-01-01 00:00:00 +0000 +++ lib/tests/test_libupstart.c 2013-05-24 12:05:35 +0000 @@ -0,0 +1,124 @@ +/* upstart + * + * test_libupstart.c - test suite for libupstart. + * + * Copyright © 2013 Canonical Ltd. + * Author: James Hunt <[email protected]> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include <unistd.h> +#include <fnmatch.h> + +#include <nih/test.h> +#include <nih/main.h> +#include <nih/string.h> +#include <nih/logging.h> + +#include <nih-dbus/dbus_error.h> +#include <nih-dbus/dbus_proxy.h> +#include <nih-dbus/errors.h> +#include <nih-dbus/dbus_connection.h> + +#include "dbus/upstart.h" + +#include "upstart.h" + +/** + * upstart_open: + * @parent: parent object for new proxy. + * + * Opens a connection to the Upstart init daemon and returns a proxy + * to the manager object. If @dest_name is not NULL, a connection is + * instead opened to the system bus and the proxy linked to the + * well-known name given. + * + * If @parent is not NULL, it should be a pointer to another object + * which will be used as a parent for the returned proxy. When all + * parents of the returned proxy are freed, the returned proxy will + * also be freed. + * + * Returns: newly allocated D-Bus proxy or NULL on raised error. + **/ +NihDBusProxy * +upstart_open (const void *parent) +{ + DBusError dbus_error; + DBusConnection *connection; + NihDBusProxy * upstart; + + dbus_error_init (&dbus_error); + + connection = dbus_bus_get (DBUS_BUS_SYSTEM, &dbus_error); + if (! connection) { + nih_dbus_error_raise (dbus_error.name, dbus_error.message); + dbus_error_free (&dbus_error); + return NULL; + } + + dbus_connection_set_exit_on_disconnect (connection, FALSE); + dbus_error_free (&dbus_error); + + upstart = nih_dbus_proxy_new (parent, connection, + DBUS_SERVICE_UPSTART, + DBUS_PATH_UPSTART, + NULL, NULL); + if (! upstart) { + dbus_connection_unref (connection); + return NULL; + } + + upstart->auto_start = FALSE; + + /* Drop initial reference now the proxy holds one */ + dbus_connection_unref (connection); + + return upstart; +} + +void +test_libupstart (void) +{ + nih_local NihDBusProxy *upstart = NULL; + nih_local char *version = NULL; + int ret; + + TEST_GROUP ("libupstart"); + + TEST_FEATURE ("version"); + + upstart = upstart_open (NULL); + TEST_NE_P (upstart, NULL); + + + /* Basic test (that does not change the state of the system + * running this test) to see if we can query version of running + * Upstart instance. + */ + ret = upstart_get_version_sync (NULL, upstart, &version); + TEST_EQ (ret, 0); + + nih_message ("Running instance version: '%s'", version); + assert0 (fnmatch ("init (upstart*)", version, 0x0)); +} + +int +main (int argc, + char *argv[]) +{ + test_libupstart (); + + return 0; +} === added file 'lib/upstart.h' --- lib/upstart.h 1970-01-01 00:00:00 +0000 +++ lib/upstart.h 2013-05-24 12:05:35 +0000 @@ -0,0 +1,33 @@ +/* upstart + * + * Copyright © 2013 Canonical Ltd. + * Author: James Hunt <[email protected]> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef LIB_UPSTART_H +#define LIB_UPSTART_H + +#include <nih/macros.h> + +NIH_BEGIN_EXTERN + +#include "com.ubuntu.Upstart.h" +#include "com.ubuntu.Upstart.Instance.h" +#include "com.ubuntu.Upstart.Job.h" + +NIH_END_EXTERN + +#endif /* LIB_UPSTART_H */ === modified file 'po/upstart.pot' --- po/upstart.pot 2013-03-22 14:31:59 +0000 +++ po/upstart.pot 2013-05-24 12:05:35 +0000 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: upstart 1.8\n" +"Project-Id-Version: upstart 1.9\n" "Report-Msgid-Bugs-To: [email protected]\n" -"POT-Creation-Date: 2013-03-22 14:18+0000\n" +"POT-Creation-Date: 2013-05-22 09:53+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <[email protected]>\n" @@ -117,56 +117,56 @@ msgid "Restarting" msgstr "" -#: init/control.c:1206 init/control.c:1311 init/control.c:1565 +#: init/control.c:1208 init/control.c:1313 init/control.c:1567 msgid "Not permissible to modify PID 1 job environment" msgstr "" -#: init/control.c:1213 init/control.c:1299 init/control.c:1572 +#: init/control.c:1215 init/control.c:1301 init/control.c:1574 msgid "You do not have permission to modify job environment" msgstr "" -#: init/control.c:1220 init/control.c:1318 init/control.c:1408 -#: init/control.c:1504 init/control.c:1579 +#: init/control.c:1222 init/control.c:1320 init/control.c:1410 +#: init/control.c:1506 init/control.c:1581 msgid "Job may not be empty string" msgstr "" -#: init/control.c:1231 +#: init/control.c:1233 msgid "Ignoring set env request from chroot session" msgstr "" -#: init/control.c:1329 +#: init/control.c:1331 msgid "Ignoring unset env request from chroot session" msgstr "" -#: init/control.c:1355 init/control.c:1452 +#: init/control.c:1357 init/control.c:1454 msgid "No such variable" msgstr "" -#: init/control.c:1394 init/control.c:1490 +#: init/control.c:1396 init/control.c:1492 msgid "You do not have permission to query job environment" msgstr "" -#: init/control.c:1419 +#: init/control.c:1421 msgid "Ignoring get env request from chroot session" msgstr "" -#: init/control.c:1590 +#: init/control.c:1592 msgid "Ignoring reset env request from chroot session" msgstr "" -#: init/control.c:1723 +#: init/control.c:1725 msgid "unable to create session file" msgstr "" -#: init/control.c:1730 +#: init/control.c:1732 msgid "unable to write session file" msgstr "" -#: init/control.c:1779 +#: init/control.c:1781 msgid "You do not have permission to end session" msgstr "" -#: init/control.c:1787 +#: init/control.c:1789 msgid "Ignoring session end request from chroot session" msgstr "" @@ -494,139 +494,134 @@ #: init/job_process.c:1155 #, c-format -msgid "unable to open pty master: %s" +msgid "unable to unlockpt: %s" msgstr "" #: init/job_process.c:1160 #, c-format -msgid "unable to unlockpt: %s" +msgid "unable to granpt: %s" msgstr "" #: init/job_process.c:1165 #, c-format -msgid "unable to granpt: %s" +msgid "unable to get ptsname: %s" msgstr "" #: init/job_process.c:1170 #, c-format -msgid "unable to get ptsname: %s" +msgid "unable to open pty slave: %s" msgstr "" #: init/job_process.c:1175 #, c-format -msgid "unable to open pty slave: %s" +msgid "unable to modify signal handler: %s" msgstr "" #: init/job_process.c:1180 #, c-format -msgid "unable to modify signal handler: %s" +msgid "unable to allocate memory: %s" msgstr "" #: init/job_process.c:1185 #, c-format -msgid "unable to allocate memory: %s" -msgstr "" - -#: init/job_process.c:1190 -#, c-format msgid "unable to initgroups: %s" msgstr "" -#: init/job_process.c:1221 init/job_process.c:1354 +#: init/job_process.c:1216 init/job_process.c:1349 #, c-format msgid "Sending %s signal to %s %s process (%d)" msgstr "" -#: init/job_process.c:1230 init/job_process.c:1363 +#: init/job_process.c:1225 init/job_process.c:1358 #, c-format msgid "Failed to send %s signal to %s %s process (%d): %s" msgstr "" +#: init/job_process.c:1419 +#, c-format +msgid "%s %s process (%d) terminated with status %d" +msgstr "" + #: init/job_process.c:1424 #, c-format -msgid "%s %s process (%d) terminated with status %d" -msgstr "" - -#: init/job_process.c:1429 -#, c-format msgid "%s %s process (%d) exited normally" msgstr "" -#: init/job_process.c:1444 +#: init/job_process.c:1439 #, c-format msgid "%s %s process (%d) killed by %s signal" msgstr "" -#: init/job_process.c:1448 +#: init/job_process.c:1443 #, c-format msgid "%s %s process (%d) killed by signal %d" msgstr "" -#: init/job_process.c:1462 +#: init/job_process.c:1457 #, c-format msgid "%s %s process (%d) stopped by %s signal" msgstr "" -#: init/job_process.c:1466 +#: init/job_process.c:1461 #, c-format msgid "%s %s process (%d) stopped by signal %d" msgstr "" -#: init/job_process.c:1480 +#: init/job_process.c:1475 #, c-format msgid "%s %s process (%d) continued by %s signal" msgstr "" -#: init/job_process.c:1484 +#: init/job_process.c:1479 #, c-format msgid "%s %s process (%d) continued by signal %d" msgstr "" -#: init/job_process.c:1619 +#: init/job_process.c:1614 #, c-format msgid "%s respawning too fast, stopped" msgstr "" -#: init/job_process.c:1625 +#: init/job_process.c:1620 #, c-format msgid "%s %s process ended, respawning" msgstr "" -#: init/job_process.c:1725 +#: init/job_process.c:1720 msgid "Failed to add log to unflushed queue" msgstr "" -#: init/job_process.c:1891 +#: init/job_process.c:1886 #, c-format msgid "Failed to set ptrace options for %s %s process (%d): %s" msgstr "" -#: init/job_process.c:1904 init/job_process.c:2099 +#: init/job_process.c:1899 init/job_process.c:2094 #, c-format msgid "Failed to continue traced %s %s process (%d): %s" msgstr "" -#: init/job_process.c:1944 init/job_process.c:2035 init/job_process.c:2090 +#: init/job_process.c:1939 init/job_process.c:2030 init/job_process.c:2085 #, c-format msgid "Failed to detach traced %s %s process (%d): %s" msgstr "" -#: init/job_process.c:1984 +#: init/job_process.c:1979 #, c-format msgid "Failed to deliver signal to traced %s %s process (%d): %s" msgstr "" -#: init/job_process.c:2019 +#: init/job_process.c:2014 #, c-format msgid "Failed to obtain child process id for %s %s process (%d): %s" msgstr "" -#: init/job_process.c:2026 +#: init/job_process.c:2021 #, c-format msgid "%s %s process (%d) became new process (%d)" msgstr "" -#: init/job_process.c:2085 +#: init/job_process.c:2080 #, c-format msgid "%s %s process (%d) executable changed" msgstr "" @@ -1539,66 +1534,66 @@ msgid "Save File" msgstr "" -#: scripts/upstart-monitor.py:484 +#: scripts/upstart-monitor.py:486 msgid "Clear events" msgstr "" -#: scripts/upstart-monitor.py:486 +#: scripts/upstart-monitor.py:488 msgid "Save events to default file" msgstr "" -#: scripts/upstart-monitor.py:488 +#: scripts/upstart-monitor.py:490 msgid "Save events to specified file" msgstr "" -#: scripts/upstart-monitor.py:490 +#: scripts/upstart-monitor.py:492 msgid "Exit application" msgstr "" -#: scripts/upstart-monitor.py:494 +#: scripts/upstart-monitor.py:496 msgid "Application details" msgstr "" -#: scripts/upstart-monitor.py:499 +#: scripts/upstart-monitor.py:501 msgid "Copy" msgstr "" -#: scripts/upstart-monitor.py:556 +#: scripts/upstart-monitor.py:558 msgid "Index" msgstr "" -#: scripts/upstart-monitor.py:560 +#: scripts/upstart-monitor.py:562 msgid "Time" msgstr "" -#: scripts/upstart-monitor.py:564 +#: scripts/upstart-monitor.py:566 msgid "Event and environment" msgstr "" -#: scripts/upstart-monitor.py:589 scripts/upstart-monitor.py:671 +#: scripts/upstart-monitor.py:591 scripts/upstart-monitor.py:673 msgid "Connected to" msgstr "" -#: scripts/upstart-monitor.py:620 +#: scripts/upstart-monitor.py:622 msgid "Upstart Event Monitor" msgstr "" -#: scripts/upstart-monitor.py:624 +#: scripts/upstart-monitor.py:626 msgid "run in command-line mode" msgstr "" -#: scripts/upstart-monitor.py:627 +#: scripts/upstart-monitor.py:629 msgid "field separator to use for command-line output" msgstr "" -#: scripts/upstart-monitor.py:631 +#: scripts/upstart-monitor.py:633 msgid "connect to Upstart via specified D-Bus route" msgstr "" -#: scripts/upstart-monitor.py:669 +#: scripts/upstart-monitor.py:671 msgid "console mode" msgstr "" -#: scripts/upstart-monitor.py:673 +#: scripts/upstart-monitor.py:675 msgid "Columns: time, event and environment" msgstr ""
-- upstart-devel mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/upstart-devel
