Making Android system properties available to Upstart

2013-07-10 Thread James Hunt
As already explained by Oli, the Ubuntu Touch "flipped" architecture runs the
Android services within an LXC container. This brings a number of advantages but
there is a problem: knowing when specific Android services are ready. This is
needed such that the Ubuntu Upstart jobs running on the host side can start as
soon as possible, but no sooner ;)

Currently, the approach is to use heuristics to determine the "readiness" of
the Android services, but this can be unreliable. A better solution would be to
have a way to create Upstart events on the host-side when services changes occur
in the Android environment.

The plan at this stage is to make use of Androids System Properties and create a
2-part solution:

1) Create an Upstart bridge that runs on the host.

This bridge will listen on a socket and read data in the form:

  =\n

This will be converted into an upstart event of the form:

   =

The  will be specified as an argument to the bridge for security
reasons and would be set to something like "android-property" for Touch.

The bridge would run at the system level (as root) on the host (since it has to
start *before* the Android container, but the events it generates would be
accessible to the Session (once that has been converted to use an Upstart
Session Init) as ":sys:" allowing Upstart jobs to specify conditions
such as:

  # run job when ueventd has started in Androids LXC container
  start on :sys:android-property init.svc.ueventd=running

2) Create an Android service that runs early in the Android boot process.

This service would:

- connect to the well-known socket the bridge is already listening on.
- monitor Androids System Properties and write them to the socket in the form:

  =\n

--

Ideally, we would just have a single Upstart bridge on the host side which is
able to monitor property changes (*) without the need for "helper" processes on
the Android side.

There are a number of solutions that involve modifying Androids init, but we're
attempting to avoid doing that.

If anyone knows of a better way to solve this problem, please jump in.

Kind regards,

James.
--
James Hunt

(*) - just like 'watchprop' does in the Android environment.

#upstart on freenode
http://upstart.ubuntu.com/cookbook
https://lists.ubuntu.com/mailman/listinfo/upstart-devel

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: DEP-8 tests

2013-05-13 Thread James Hunt
On 13/05/13 13:59, Benjamin Drung wrote:
> Am Montag, den 13.05.2013, 13:36 +0100 schrieb James Hunt:
>> Great to see all these new DEP-8 tests [1] appearing! Let's keep the momentum
>> going so we can turn [2] into a wall of green^H^H^H^H^H err blue sky and
>> sunshine! :-)
> 
> I found a bug: [1] and [2] are missing in your email. :)
> 

That got you interested right? :-)

[1] - http://developer.ubuntu.com/packaging/html/auto-pkg-test.html
[2] - https://jenkins.qa.ubuntu.com/view/Saucy/view/AutoPkgTest/

Kind regards,

James.
--
James Hunt

#upstart on freenode
http://upstart.ubuntu.com/cookbook
https://lists.ubuntu.com/mailman/listinfo/upstart-devel

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Patch Pilot report 2013-05-13

2013-05-13 Thread James Hunt
https://code.launchpad.net/~yolanda.robla/nut/dep-8-tests/+merge/161414
Approved.

https://code.launchpad.net/~yolanda.robla/ubuntu/saucy/postfix/dep-8-tests/+merge/161610
Approved.

https://code.launchpad.net/~yolanda.robla/ubuntu/saucy/openldap/dep-8-tests/+merge/162097
Commented.

https://code.launchpad.net/~yolanda.robla/ubuntu/saucy/spamassassin/dep-8-tests/+merge/162690
Approved.

https://code.launchpad.net/~yolanda.robla/ubuntu/saucy/ganglia/dep-8-tests/+merge/163035
Approved.

https://code.launchpad.net/~yolanda.robla/ubuntu/saucy/iscsitarget/dep-8-tests/+merge/163368
Approved.

https://code.launchpad.net/~cristiklein/ubuntu/precise/vm-builder/lp468809/+merge/161427
Approved.

https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/1121874
Commented.


Great to see all these new DEP-8 tests [1] appearing! Let's keep the momentum
going so we can turn [2] into a wall of green^H^H^H^H^H err blue sky and
sunshine! :-)

Kind regards,

James.
--
James Hunt

#upstart on freenode
http://upstart.ubuntu.com/cookbook
https://lists.ubuntu.com/mailman/listinfo/upstart-devel

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: Coverity static analysis for C, C++ and Java code

2013-04-10 Thread James Hunt
On 10/04/13 13:41, Loïc Minier wrote:
> On Mon, Apr 08, 2013, James Hunt wrote:
>> We're already using it for critical packages including Upstart and
>> Whoopsie [3], but it would be great to expand its scope to make it use
>> the norm rather than the exception.
> 
> Cool!  How did you hook it up to the Upstart sources though?
I haven't done that yet - currently a slightly manual process but looking at
ways to automate further (starting with a daily cron :) Ideally, I'd like to
have all MP's scanned.

  at release
> time, or e.g. from some Jenkins job pushing the latest version daily?
> 
> Does this scan the Ubuntu branch of Upstart, the upstream one or both?
I do both.

> 
> Would it be ok license-wise and hard for us to do this at a larger
> scale; e.g. have some kind of daily job that pushes the latest Ubuntu
> source packages from a set to be tested?
I don't know. Coverity seemed to have relaxed the restriction that the
individual that requests Coverity scans for a project be the "project owner". If
you look at the "Role with the Project" option on [1], there are now 6 values
including "other". I'll contact them and see if it might be possible...

Kind regards,

James.

[1] - http://scan.coverity.com/project_register.html

James Hunt

#upstart on freenode
http://upstart.ubuntu.com/cookbook
https://lists.ubuntu.com/mailman/listinfo/upstart-devel

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: Further Coverity info

2013-04-10 Thread James Hunt
On 09/04/13 22:28, Scott Ritchie wrote:
> On 4/9/13 7:34 AM, Allan LeSage wrote:
>> * As part of our Jenkins CI program, we're Coverity-scanning merge
>> proposals, and disapproving them upon finding a new defect:
>> https://code.launchpad.net/~mrazik/unico/coverity/+merge/156877 .
> 
> As an upstream (wine) that uses Coverity, I'm curious how we can get this sort
> of feature in the free tier.  From what I can tell Coverity just periodically
> scans our git tree periodically and produces a list of reports.
> 
> We have a testbot that scans incoming patches (submitted via mailing list) to
> measure new defects: in Wine's case this is defined as tests that fail on one 
> of
> the bot VMs, but if I could invoke coverity directly it could in principle 
> scan
> an arbitrary patchset.
> 
> Do I need to setup some elaborate system of making a new git branch with the
> incoming patch set and then automatically asking coverity to scan that 
> branch? Or can it be manually invoked with arbitrary patches?

Yes - you can run it manually once you have a login...

Wine is already shown in the list of Coverity projects [1], so all you need to
do is:

- Request a login by mailing scan-ad...@coverity.com and access to the Wine
Coverity project.
- Download the Coverity scan tool and run it across any version of the wine
codebase.
- Submit your "snapshot" (Coverity scan tool output) using [3] or [4].
- Login to http://scan5.coverity.com and view the results. Here's an example of
the web interface: http://ubuntuone.com/7Ufq2dHdgGVeqJ16ftqJk1

The first two steps are one-off activities of course. Note that the "snapshots"
can be any arbitrary version of wine - you differentiate them by adding a tag
and/or version on the upload page [3] or using the -b/-t coverity-scan options.
For example, here's how I might upload a scan of Upstart manually using [4]:

$ coverity-submit -t lp:upstart-20130410-foobar-baz.2 upstart

This will:

- clean the build tree
- run the build with Coverity
- upload the snapshot

You'll get a mail from Coverity once the scan is available (takes a few minutes
for me, although might take longer for Wine ;-).

If you have multiple versions/tags, when you login to http://scan5.coverity.com,
select the appropriate version from the Snapshots menu on the left.

Kind regards,

James.

[1] - http://scan.coverity.com/all-projects.html
[2] - http://scan.coverity.com/start/
[3] - http://scan.coverity.com/upload.html
[4] - http://www.catb.org/~esr/coverity-submit/

James Hunt

#upstart on freenode
http://upstart.ubuntu.com/cookbook
https://lists.ubuntu.com/mailman/listinfo/upstart-devel

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: Coverity static analysis for C, C++ and Java code

2013-04-08 Thread James Hunt
On 08/04/13 14:45, Colin Ian King wrote:
> On 08/04/13 14:40, James Hunt wrote:
>> On 08/04/13 13:57, Matthias Klose wrote:
>>> Am 08.04.2013 14:13, schrieb James Hunt:
>>>> As a precis of my earlier blog post [1], I'd like to encourage those 
>>>> involved
>>>> with a C, C++ or Java project in Ubuntu to take a look at the Coverity Scan
>>>> static-analysis service offered free to OSS projects [2].
>>>>
>>>> We're already using it for critical packages including Upstart and 
>>>> Whoopsie [3],
>>>> but it would be great to expand its scope to make it use the norm rather 
>>>> than
>>>> the exception.
>>>
>>> Did it catch the wrong use of the malloc attribute in upstart? ;)
>> I don't know - we were using it in anger then and I've now fixed that gcc
>> function attribute issue :)
>>
>>>
>>>> For those who have either never used static analysis tools, or have simply 
>>>> never
>>>> used Coverity, don't fall into the trap of thinking that "gcc -pedantic 
>>>> -Wall"
>>>> should be good enough for anyone - it simply is not.
>>>
>>> I don't know where you did get this from ...  Anyway, not using -Wextra 
>>> leaves
>>> out more things.
>>>
>>> while not static analysis tools, you might want to look at 
>>> -fsanitize=address
>>> and -fsanitize=thread in GCC 4.8 (available in the ubuntu-toolchain-r/test 
>>> PPA).
>> Will do, thanks.
>>
>>>
>>> There's also clang --analyze, scan-view and scan-build in the clang package 
>>> as a
>>> static analyzer.
>> Yes, I have used and continue to use these tools. However, from my 
>> experiences,
>> they are not as thorough as Coverity for the codebases I'm regularly looking 
>> at.
>>
>>>
>>> And all of these are free software.
>> Back in the day, splint [1] rocked on static analysis but the project 
>> appears to
>> have languished - it doesn't even appear to handle C99. YMMV but IMHO, 
>> Coverity
>> Scan is the most thorough static-analysis tool available to OSS developers 
>> today
>> that I've seen. Maybe if splint were to be revived my opinion may change... 
>> ;)
> 
> smatch [1] is quite a useful tool too, it has helped me find a variety
> of bugs in applications I've written,
Agreed - I'm using smatch alongside Coverity.

 however, I'd rather use coverity
> if we had access to it.
> 
> [1] http://smatch.sourceforge.net/
> 
>>
>>>
>>>   Matthias
>>>
>>>
>>
>> Kind regards,
>>
>> James.
>>
>> [1] - http://splint.sourceforge.net/
>> --
>> James Hunt
>> 
>> #upstart on freenode
>> http://upstart.ubuntu.com/cookbook
>> https://lists.ubuntu.com/mailman/listinfo/upstart-devel
>>
> 
> 


-- 
Kind regards,

James.
--
James Hunt

#upstart on freenode
http://upstart.ubuntu.com/cookbook
https://lists.ubuntu.com/mailman/listinfo/upstart-devel

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: Coverity static analysis for C, C++ and Java code

2013-04-08 Thread James Hunt
On 08/04/13 13:57, Matthias Klose wrote:
> Am 08.04.2013 14:13, schrieb James Hunt:
>> As a precis of my earlier blog post [1], I'd like to encourage those involved
>> with a C, C++ or Java project in Ubuntu to take a look at the Coverity Scan
>> static-analysis service offered free to OSS projects [2].
>>
>> We're already using it for critical packages including Upstart and Whoopsie 
>> [3],
>> but it would be great to expand its scope to make it use the norm rather than
>> the exception.
> 
> Did it catch the wrong use of the malloc attribute in upstart? ;)
I don't know - we were using it in anger then and I've now fixed that gcc
function attribute issue :)

> 
>> For those who have either never used static analysis tools, or have simply 
>> never
>> used Coverity, don't fall into the trap of thinking that "gcc -pedantic 
>> -Wall"
>> should be good enough for anyone - it simply is not.
> 
> I don't know where you did get this from ...  Anyway, not using -Wextra leaves
> out more things.
> 
> while not static analysis tools, you might want to look at -fsanitize=address
> and -fsanitize=thread in GCC 4.8 (available in the ubuntu-toolchain-r/test 
> PPA).
Will do, thanks.

> 
> There's also clang --analyze, scan-view and scan-build in the clang package 
> as a
> static analyzer.
Yes, I have used and continue to use these tools. However, from my experiences,
they are not as thorough as Coverity for the codebases I'm regularly looking at.

> 
> And all of these are free software.
Back in the day, splint [1] rocked on static analysis but the project appears to
have languished - it doesn't even appear to handle C99. YMMV but IMHO, Coverity
Scan is the most thorough static-analysis tool available to OSS developers today
that I've seen. Maybe if splint were to be revived my opinion may change... ;)

> 
>   Matthias
> 
> 

Kind regards,

James.

[1] - http://splint.sourceforge.net/
--
James Hunt

#upstart on freenode
http://upstart.ubuntu.com/cookbook
https://lists.ubuntu.com/mailman/listinfo/upstart-devel

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Coverity static analysis for C, C++ and Java code

2013-04-08 Thread James Hunt
As a precis of my earlier blog post [1], I'd like to encourage those involved
with a C, C++ or Java project in Ubuntu to take a look at the Coverity Scan
static-analysis service offered free to OSS projects [2].

We're already using it for critical packages including Upstart and Whoopsie [3],
but it would be great to expand its scope to make it use the norm rather than
the exception.

For those who have either never used static analysis tools, or have simply never
used Coverity, don't fall into the trap of thinking that "gcc -pedantic -Wall"
should be good enough for anyone - it simply is not.

Kind regards,

James.

[1] -
http://ifdeflinux.blogspot.co.uk/2013/04/coverity-static-analysis-for-c-c-and.html
[2] - http://scan.coverity.com/
[3] - http://scan.coverity.com/all-projects.html

--
James Hunt

#upstart on freenode
http://upstart.ubuntu.com/cookbook
https://lists.ubuntu.com/mailman/listinfo/upstart-devel

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


procenv and buildd environments

2012-11-29 Thread James Hunt
The procenv utility [1], which provides information on the environment
it runs in, is now available in Debian Sid [2] and Ubuntu Raring [3].

As part of its package build, 'make check' gets run which does the
following:

(1) Dumps information on the C pre-processor, compiler and linker.
(2) Runs procenv itself.

Step (1) is an aid to (2) in case it should fail. (2) is
useful since it:

- Helps to ensure the package works as expected once installed [*].
- Is a good check that procenv can handle 'odd' environments such as
  those provided by chroots (which are unusual in that their libc version
  often does not align with the provided kernel version).

The readily accessible build logs for procenv itself ([4], [5], [6]) may
in some circumstances help with FTBFS and test failure issues with
_other_ packages since they provide an insight into the environment in
which a package is built.

Using the build logs, informative analysis can be performed:

- See the environment a buildd provides.
- Compare a 'normal' environment with a buildd-provided one.
- Compare a Debian buildd environment to an Ubuntu one.

There are other examples and ideas in the initial blog post and the man
page.

[*] - Note that procenv also has DEP-8 support such that the
autopkgtest-provided environment can also be inspected [7]. The plan is to also
enable Ubuntu PPA builds, again for comparative purposes.

If anyone is interested in adding additional features to procenv, see
the TODO and please let me know.

Kind regards,

James.

[1] - https://launchpad.net/procenv
[2] - http://packages.debian.org/sid/procenv
[3] - http://packages.ubuntu.com/raring/procenv
[4] - https://buildd.debian.org/status/package.php?p=procenv&suite=sid
[5] - http://buildd.debian-ports.org/status/package.php?p=procenv
[6] - https://launchpad.net/ubuntu/+source/procenv (expand version 'twistie' for
build logs)
[7] -
https://jenkins.qa.ubuntu.com/view/Raring/view/AutoPkgTest/job/raring-adt-procenv/

--
James Hunt

http://upstart.ubuntu.com/cookbook
http://upstart.ubuntu.com/cookbook/upstart_cookbook.pdf

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Patch Pilot report 2012-11-26

2012-11-26 Thread James Hunt
lp:~kampka/ubuntu/quantal/zabbix/upstart-support: Commented that
this is now suitable for upload.

lp:~kampka/ubuntu/quantal/fwknop/upstart-support: Small change
required prior to upload.

lp:~wb-munzinger/ubuntu/precise/havp/fix-init-script: Approved
(already released).

Reviewed patch on bug 1072015 and made some suggestions.

Reviewed patch on bug 613231 and applied to branch ready for next
upload.

lp:~anders-kaseorg/ubuntu/raring/kmod/lp1082598: Approved.

lp:~ubuntu-treblig/ubuntu/raring/gdb/bug-1069897: Approved. Also
added further comments on bug 1069897 after code analysis.


Kind regards,

James.
--
James Hunt

http://upstart.ubuntu.com/cookbook
http://upstart.ubuntu.com/cookbook/upstart_cookbook.pdf

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: Enhanced Upstart User Sessions for the Raring desktop

2012-11-22 Thread James Hunt
Hi Robie,

On 22/11/12 10:24, Robie Basak wrote:
> A minor point, speaking as an uninformed observer.
> 
>> /etc/xdg/init
> 
> These files will be Upstart-specific, right? What if XDG want to use
> /etc/xdg/init in the future? Would /etc/xdg/upstart avoid a potential
> future namespace collision here?
> 
> I understand that /etc/xdg/init would be analogous to /etc/init, but do
> we really own the /etc/xdg namespace like we do /etc? And you're using
> $HOME/.config/upstart/ so there wouldn't be too much of an inconsistency
> there.
> 
Agreed. I've changed the spec to reference /etc/xdg/upstart/ although I wonder
if we should make this /etc/xdg/upstart/user/ (*) to make it clear the common
jobs in that directory are only for Upstart running as a non-priv Session Init.

Kind regards,

James.

(*) - or even /etc/xdg/init/upstart/user/ maybe.
--
James Hunt

http://upstart.ubuntu.com/cookbook
http://upstart.ubuntu.com/cookbook/upstart_cookbook.pdf

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: Enhanced Upstart User Sessions for the Raring desktop

2012-11-20 Thread James Hunt
 Original Message 
Subject: Re: Enhanced Upstart User Sessions for the Raring desktop
Date: Tue, 20 Nov 2012 15:53:40 +
From: James Hunt 
Reply-To: james.h...@ubuntu.com
To: Evan Huus 
CC: Upstart Devel List , ja...@ubuntu.com,
  Kees Cook 

Hi Evan,

On 20/11/12 13:58, Evan Huus wrote:
> Hi James,
> 
> I've only scanned it briefly at this point, but I have one question regarding
> security. At the moment the spec. states that system events will by default be
> available to user sessions as well, but I think this is overly permissive. 
> While
> I can't actually think of a current system event that really must be hidden, I
> feel that on principle system events should not be visible to user sessions
> unless explicitly marked as such.
> 
> I would suggest a change to the new event syntax such that
> 
> - foo and ::foo are always equivalent, and emit an event only visible within 
> the
> current upstart namespace (system or user)
> - :sys:foo and :user:foo are unchanged
> - :all:foo (or :global:foo or :public:foo) emits an event visible to other
> upstart namespaces as well

This would mean user jobs would not be able to react to system job events. That
in itself might not be a problem [1], but it would also mean that user jobs have
no access to system events (by default) that don't relate to jobs. I think this
_is_ potentially more of an issue. My canonical example is being able to plug a
USB headset in, and have a user job react to the udev event and start an
application of my choice. This currently works if user jobs are enabled in
Ubuntu and is a useful feature. If we did implement ':all:', we could change the
upstart-udev-bridge to ensure it emits events to ':all:', but we're then back to
the concern over permissiveness and it feels wrong to special-case one
particular event source.

So, if we do 'hide' system events from user jobs by default, we would be
breaking the current publish-subscribe behaviour. That's not to say we won't
consider doing this [2], but we are striving to retain current behaviour so I'd
like to understand better what the potential 'attack vector' might be with some
real world examples.

I think this needs to be explored further. Can anyone think of scenarios where
user jobs should not be privy to system events?

Note that Upstart is happy to run system jobs whose configuration files have
perms 0400 and the /var/log/upstart/* files are not readable by normal users, so
AFAICS, the risk is probably limited to users being able to 'sniff' system event
environment variables. This is only a problem if an admin creates a job where
they specify sensitive information in one of those variables. However, I have
personally never seen such a job and is kind of analogous to an admin doing
something inappropriate such as 'sudo chmod 777 /etc/shadow'.

> 
> Thoughts?
> 
> Cheers,
> Evan
> 
> 
> On Tue, Nov 20, 2012 at 5:09 AM, James Hunt  <mailto:james.h...@ubuntu.com>> wrote:
> 
> Here is the draft plan for 'Enhanced Upstart User Sessions' ([1]), which 
> will be
> used to supervise desktop sessions in Ubuntu:
> 
> https://wiki.ubuntu.com/FoundationsTeam/Specs/RaringUpstartUserSessions
> 
> = Summary =
> 
> Allow Upstart to run as a non-privileged user to supervise a session in an
> event-based manner.
> 
> This brings many advantages including:
> 
> - more dynamic and efficient session startup (desktop services only get 
> started
> *when required*).
> - reliable session shutdown.
> - automatic job output logging.
> - more efficient use of system resources (helping to maximise battery 
> life for
> example).
> 
> Comments Welcome. If you would like to get involved in this project, 
> please let
> me know.
> 
> Kind regards,
> 
> James.
> 
> [1] -
> 
> https://blueprints.launchpad.net/ubuntu/+spec/foundations-r-upstart-user-session-enhancements
> --
> James Hunt
> 
> http://upstart.ubuntu.com/cookbook
> http://upstart.ubuntu.com/cookbook/upstart_cookbook.pdf
> 
> --
> upstart-devel mailing list
> upstart-de...@lists.ubuntu.com <mailto:upstart-de...@lists.ubuntu.com>
> Modify settings or unsubscribe at:
> https://lists.ubuntu.com/mailman/listinfo/upstart-devel
> 
> 

Kind regards,

James.

[1] - Its unclear what use-cases there are for user jobs reacting to system
_jobs_, so if you have some, please let us know. To lend weight to this, there
is also the issue that even if user jobs can access system job events, they can
only see those events that occur after their Session Init has starte

Enhanced Upstart User Sessions for the Raring desktop

2012-11-20 Thread James Hunt
Here is the draft plan for 'Enhanced Upstart User Sessions' ([1]), which will be
used to supervise desktop sessions in Ubuntu:

https://wiki.ubuntu.com/FoundationsTeam/Specs/RaringUpstartUserSessions

= Summary =

Allow Upstart to run as a non-privileged user to supervise a session in an
event-based manner.

This brings many advantages including:

- more dynamic and efficient session startup (desktop services only get started
*when required*).
- reliable session shutdown.
- automatic job output logging.
- more efficient use of system resources (helping to maximise battery life for
example).

Comments Welcome. If you would like to get involved in this project, please let
me know.

Kind regards,

James.

[1] -
https://blueprints.launchpad.net/ubuntu/+spec/foundations-r-upstart-user-session-enhancements
--
James Hunt

http://upstart.ubuntu.com/cookbook
http://upstart.ubuntu.com/cookbook/upstart_cookbook.pdf

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Patch pilot report 2012-07-31

2012-07-31 Thread James Hunt
Today was my first Patch Pilot session, so was co-piloting with apw.

- https://bugs.launchpad.net/upstart/+bug/1018925
  Reviewed and merged upstream.

- https://code.launchpad.net/~lool/upstart/document-stop-in-pre-start
  Reviewed and merged upstream.

- https://bugs.launchpad.net/ubuntu/+source/nss-pam-ldapd/+bug/806761
  Reviewed but user appears to have attached wrong version of patch.
  Asked for clarification and provided some advice on possible job
  modification.

Kind regards,

James.
--
James Hunt

http://upstart.ubuntu.com/cookbook
http://upstart.ubuntu.com/cookbook/upstart_cookbook.pdf

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: event based initramfs

2012-05-17 Thread James Hunt
On 16/05/12 19:09, Phillip Susi wrote:
> On 5/16/2012 9:01 AM, James Hunt wrote:
>> The most obvious reason is that the initramfs has it's own init
>> system (a big shell script). So, an Ubuntu system with an initramfs
>> has two different init systems. By reducing this down to just
>> Upstart, we get a simpler and hence more readily maintainable system
>> that:
> 
> It has its own system because it isn't really an init system at all.
> The goal of upstart is to bring up and maintain the system.  The goal of
> the initramfs is only to find the root filesystem.
Sounds like both systems are performing initialisation to me. And as we
know, there is symmetry between what happens in the initramfs and what
then has to happen again in the main system. By using Upstart, we get
one tool to do that job without duplication of code.

>> - has the advantage of being event-based (but which of course can
>> also run jobs effectively "serially" too if desired).
> 
>> LUKS support in the initramfs is currently handled using calls to
>> "sleep 0.1". Who chose this value? How did they decide upon this
>> value? Why 0.1 seconds? Why not just wait until the device appears?
>> By having an event-based system, we can adopt a saner approach where
>> the system simply reacts to the udev event when the kernel generates
>> it - no polling required.
> 
> Isn't this what udev is for?  Event based handling of hardware.  What do
> we need upstart for?
Upstart provides a "udev bridge" that allows arbitrary jobs to react to
udev events without having to install udev rules in one of the 3 udev
locations (although I guess that's really potentially 5 if you include
the initramfs locations (but exclude /run)). For the cases where you
aren't modifying devices, it makes working with udev much simpler.

The whole point is that modern Linux systems are highly dynamic in
nature. Polling is not required for most operations so why do it?
Upstart was designed from the outset to operate in such a dynamic
environment so it makes a lot of sense to take advantage of Upstarts
ample abilities to make the initramfs less opaque, more efficient and
more maintainable.

> 
>> My non-LVM, non-RAID systems initramfs contains 16 calls to
>> mount. By using mountall you end up with a single mountall.conf job
>> that handles all that complexity.
> 
> I only see one call to mount.  There is only one filesystem to mount, so
> where does 16 come from?  mountall is somewhat complex because it needs
> to mount multiple filesystems, in the correct order.  The initramfs just
> needs one.
? The initramfs performs numerous individual mounts including:

root filesystem
/proc
/sys
/dev
/dev/pts
/run

The code for mountall is admittedly more complex than simply calling
'mount', but it has the following advantages:

- it actually performs error checking (unlike the initramfs mount code).
- it provides user feedback on the operations via Plymouth.
- it runs fsck and provides feedback to the user via Plymouth.
- it supports delays and timeouts.
- it emits Upstart events allowing jobs to react to mount changes.

>> A number of upstream projects are starting to move functionality from
>> / to /usr (see [3]), hence we intend to support this model too.
> 
> If getting to mountall depends on a file in /usr, then that is an FHS
> violation and fundamentally incompatible with having /usr on its own
> filesystem.  Having the initramfs have its own copy of mountall and its
> dependencies in order to mount /usr before the real mountall runs is a
> kludgy workaround.  If you want to boot without an initramfs at all,
> this workaround won't help ( since the kernel only knows how to mount
> the root and it is expected to contain everything needed to mount /usr
> or other filesystems ), so the proper thing to do is make sure that
> dependencies of mountall go in /.
> 
> What does it matter where upstream installs to anyhow?
There is an ongoing associated overhead in maintaining patches where we
diverge from upstreams.

  They normally go
> to /usr/local and we move them to /usr with a configure switch.  Moving
> to / instead should be trivial.
That's not actually what we're talking about here - the upstreams are
moving tooling currently in / to /usr. We might be able to work around
this, but it sounds like it will become increasingly difficult to do so.

>> - By utilizing Upstart, we get a clean, fast framework for mounting
>> the root FS. We should also be able to simplify the initramfs by
>> removing duplicate code. - the initramfs spawns daemons (such as
>> udevd) which can be better managed via upstart. -  the current
>> initramfs kills the daemons it starts requiring them to be restarted

Re: event based initramfs

2012-05-16 Thread James Hunt
scue mode, then
maybe they shouldn't be in /usr in the first place?
A number of upstream projects are starting to move functionality from /
to /usr (see [3]), hence we intend to support this model too.


Additional reasons for supporting an event-based initramfs:

- By utilizing Upstart, we get a clean, fast framework for mounting the
root FS. We should also be able to simplify the initramfs by removing
duplicate code.
- the initramfs spawns daemons (such as udevd) which can be better
managed via upstart.
-  the current initramfs kills the daemons it starts requiring them to
be restarted in the main system. This has caused a few race conditions
and clearly disallows state passing between the two systems. By
enhancing Upstart to support stateful re-exec [4] we get huge benefits
as we can retain state on processes started in the initramfs and hence
don't necessarily need to restart them. I don't know of any other system
that is capable of this.
- there is potential for extra "smarts" that cannot be achieved
easily/cleanly with the current shell approach.

"Phase 1" is to add the ability to generate an event-based initramfs.
The plan is to make this "opt in" so we can encourage users to try it
(they can always revert) and gather user feedback since clearly there
are a number of different boot scenarios to consider. Additionally, we
will also need to consider carefully the initramfs size and performance
impacts of any potential changes.

Kind regards,

James.
--
James Hunt

[1] - http://brainstorm.ubuntu.com/?keywords=boot
[2] - http://summit.ubuntu.com/uds-q/meeting/20296/foundations-q-usr-merge/
[3] - https://blueprints.launchpad.net/ubuntu/+spec/foundations-q-usr-merge
[4] -
https://blueprints.launchpad.net/ubuntu/+spec/foundations-q-upstart-stateful-re-exec


http://upstart.ubuntu.com/cookbook
http://upstart.ubuntu.com/cookbook/upstart_cookbook.pdf



signature.asc
Description: OpenPGP digital signature
-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Call for testing: latest Upstart with logger improvements.

2012-02-06 Thread James Hunt
Hi All,

Job logging was temporarily disabled recently in the Ubuntu Upstart package 
when we discovered a
corner case the tests did not take account of [1]. The problem is now fixed and 
we have extended the
tests to guard against regressions in this area [2].

I've put the latest code in a PPA to allow for further testing before we 
consider re-enabling job
logging for all.

If you would like to help with this important testing, read on...


Getting the Latest Build


  1) Enable the ppa:jamesodhunt/upstart-job-logging PPA [3].
  2) Install Upstart version '1.4-0ubuntu5~jh'.
  3) Boot adding '--log' on the grub command line (you _must_ do this to enable 
logging!)
  4) Poke around in /var/log/upstart/ and check CPU+mem usage.
  5) Provide feedback.


Limitations
---

Jobs that _end_ prior to a writable log partition being available (around the 
time the 'filesystem'
event is emitted [4]) will not have their data logged. I'm reworking a patch to 
remove this
limitation...


Thanks for your help! Again, remember to boot with '--log' for the time being 
if you want your job
output logged!

Kind regards,
--
James Hunt

[1] - https://bugs.launchpad.net/ubuntu/+source/upstart/+bug/922754
[2] - This brings the total number of Upstart tests to 1066 (excluding the 2846 
NIH tests).
[3] - https://launchpad.net/~jamesodhunt/+archive/upstart-job-logging
[4] - upstart-events(7) - 
http://upstart.ubuntu.com/cookbook/#ubuntu-well-known-events-ubuntu-specific


http://upstart.ubuntu.com/cookbook
http://upstart.ubuntu.com/cookbook/upstart_cookbook.pdf

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: Call for testing: Upstart 1.4 in Ubuntu

2012-01-07 Thread James Hunt
On 23/12/11 13:47, Tim Gardner wrote:
> James - The kernel team has plenty of Precise systems that we can 
> update. Given the fundamental nature of Upstart, is there any way to 
> recover short of reinstalling if it completely breaks the boot ? Can we 
> stash the original /sbin/init somewhere and hack the grub command ?
Hi Tim,

Hopefully it won't completely break your system, but if you do experience 
problems, I'd recommend
rebooting with the '--no-log' option to disable the logging feature. You can't 
disable the
'setuid'/'setgid' feature currently [1], but you can of course ensure that 
you've disabled all jobs
that make use of those new stanzas. Generally speaking, we do try to ensure 
that as features are
added, a corresponding command-line option is added to revert to the previous 
behaviour thus
disabling the new code path.

On the general topic of recovering a broken system, you *could* stash the 
previous version of
upstart as /sbin/init.old or similar (you'd need to do the same for 
/sbin/initctl too of course),
but booting with /sbin/init.old assumes that the new version of init wasn't 
introduced to cater for
some fundamental interface change in the NIH libraries for example. Note too 
that any .conf files
referencing initctl would strictly need to be modified to reference 
/sbin/initctl.old. For Ubuntu,
we could conceivably use the 'alternatives' system to handle this along with 
static linking to
overcome the NIH issue but that comes with its own issues and would need a lot 
of extra testing to
ensure all the recovery code paths work as expected.

For testing I do actually maintain a number of inits in /sbin and use a script 
[2] that boots
setting 'init=/sbin/upstart_menu'. The script presents a menu like the 
following allowing me to
select which particular version I want to boot with:

  http://people.canonical.com/~jhunt/upstart/utils/upstart_menu.png

The selected init is then exec'd. This works fine for test systems. The 
'upstart_menu' could in
principle be hooked into the Ubuntu recovery path, but as stated above, adding 
this would require a
lot of additional effort to ensure all the recovery paths are failsafe and I 
wonder if that effort
wouldn't be better directed at just testing the latest init?

Kind regards,

James.
--
James Hunt

[1] - If you think this would be useful please raise a bug.
[2] - http://people.canonical.com/~jhunt/upstart/utils/upstart_menu.sh

http://upstart.ubuntu.com/cookbook
http://upstart.ubuntu.com/cookbook/upstart_cookbook.pdf

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Call for testing: Upstart 1.4 in Ubuntu

2011-12-22 Thread James Hunt
Hi All,

We're looking to land Upstart 1.4 in Ubuntu Precise early January 2012. If you 
have an Ubuntu
Precise test system [1] and you'd like to help with testing these new features, 
read on...

= New Features =

 The two main new features are:

- new 'setuid' and 'setgid' stanzas

  Allows you to specify the user and group a job runs as
  (this should help minimize the intricate su/sudo/start-stop-daemon 
command-lines)

- Logging of job output for system jobs [2]

  Job logging is enabled by default in 1.4. Since this is the first version of 
Upstart
  that writes to *any* files, this is quite a big change. 3 new command-line 
options
  have been added to support this feature:

'--no-log' (disable logging entirely)
'--logdir=DIR' (specify alternate log directory)
'--default-console=VALUE' (specify default value for 'console' stanza).

= How to Obtain the Upstart 1.4 Package =

 please add the following 'upstart-job-logging' PPA [3] to your system and give 
it a spin:

sudo add-apt-repository ppa:jamesodhunt/upstart-job-logging

= Feedback =

Please provide feedback via a bug report:

https://bugs.launchpad.net/ubuntu/+source/upstart/+filebug

= Further Details on Features =

Full details on these features can be found in the usual places:

- init(5)
- init(8)
- cookbook:
http://upstart.ubuntu.com/cookbook/#console-log
http://upstart.ubuntu.com/cookbook/#configuration
http://upstart.ubuntu.com/cookbook/#setuid
http://upstart.ubuntu.com/cookbook/#setgid


Thanks for your help.

Kind regards,

James.

[1] - Usual caveats apply: do *not* install this on any critical systems.

[2] - Two limitations to be aware of:
- logging *only* currently applies to system jobs,
- any job that produces output and ends *before* the disk becomes 
writeable
  will not currently have output logged.
  Note: both limitations are currently being addressed.

[3] - https://launchpad.net/~jamesodhunt/+archive/upstart-job-logging

--
James Hunt

http://upstart.ubuntu.com/cookbook
http://upstart.ubuntu.com/cookbook/upstart_cookbook.pdf

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: Upstart helpers (abstract jobs and event aliases) for Oneiric

2011-06-08 Thread James Hunt
On 07/06/11 18:58, Kees Cook wrote:
> Hi James,
> 
> On Tue, Jun 07, 2011 at 03:00:03PM +0100, James Hunt wrote:
>> == Proposal 2: Provide Abstract Jobs for Common Services ==
>> [...]
>>  Option 1 
>> [...]
>> For example, each display manager package would be updated such that its
>> .conf file specified:
>>
>>   envDISPLAY_MANAGER=y
>>   export DISPLAY_MANAGER
>>
>> Then, any job that requires a display manager could say:
>>
>>   start on starting DISPLAY_MANAGER=y
>> [...]
>>  Option 2 
>> Create a Job Configuration File that hard-codes the list of known
>> service providers. For example for "display-manger", we could have:
>>
>>   start on (starting gdm
>> or (starting kdm
>> or (starting lightdm
>> or (starting lxdm
>> or (starting slim
>> or (starting wdm
>> or  starting xdm))
>>
>>   stop on (stopping gdm
>> or (stopping kdm
>> or (stopping lightdm
>> or (stopping lxdm
>> or (stopping slim
>> or (stopping wdm
>> or  stopping xdm))
>>
>>   envABSTRACT_JOB=y
>>   export ABSTRACT_JOB
>> [...]
>>
>> - We appear to have simply "moved the problem" since although we are no
>>   longer hard-coding the list of display managers in "plymouth.conf", we
>>   are hard-coding the list now in "display-manager.conf". However, we
>>   have gained by doing this since:
>>
>>   - We have still created the level of abstraction desired.
>>   - We have contained the problem into a single file: we define the list
>> of display managers *once*.
>>   - We don't need to update every Ubuntu (and potentially every Debian)
>> package as would be required for "Option 1".
>>   - We *could* conceivably auto-generate "display-manager.conf" from the
>> archive with a simple script which munged the output of:
>>
>> apt-cache search x-display-manager|awk '{print $1}'|sort
>>
>> - The "ABSTRACT_JOB" variable would allow other jobs to detect that a
>>   job was abstract (they shouldn't need to care, but just in case...)
>>   This also avoids the unwieldliness of "abstract-display-manager" (or
>>   even "abstract/display-manager" (were we to put the abstract jobs in
>>   /etc/init/abstract/ say).
> 
> What about merging the two options? I think it's a mistake to have
> hardcoded lists; this is like having /etc/service.conf instead of
> /etc/service.d/ for things to easily insert themselves into the system.
> 
> Imagine, instead:
> 
>start on (starting DISPLAY_MANAGER=y
>  or (starting gdm
>  or (starting kdm
>  or (starting lightdm
>  or (starting lxdm
>  or (starting slim
>  or (starting wdm
>  or  starting xdm)))
> 
> Then anything not in the hardcoded list can just define itself as a
> DISPLAY_MANAGER to be included, and everything else can still start on the
> abstract job names too.
Great idea! This makes a lot of sense of we go the "kiss" route rather than 
adopting a new stanza
(such as "alias" as suggested by Marc Dahlhaus).

> 
> -Kees
> 


-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Upstart helpers (abstract jobs and event aliases) for Oneiric

2011-06-07 Thread James Hunt
es
is:

  DISPLAY_MANAGER
  FIREWALL
  GRAPHICS_CARD
  NETWORK
  NETWORK_MANAGER

For example, each display manager package would be updated such that its
.conf file specified:

  envDISPLAY_MANAGER=y
  export DISPLAY_MANAGER

Then, any job that requires a display manager could say:

  start on starting DISPLAY_MANAGER=y

= Observations =

- This might *appear* to be inefficient in that Upstart must check every
  time *any* job starts to determine if DISPLAY_MANAGER=y is set in that
  jobs environment. However, there is no additional overhead beyond how
  Upstart currently works. Consider that...

start on starting gdm

  ... is actually an alias for:

start on stating JOB=gdm

- This would require *every* package that provides a service to be
  updated. Admittedly this would only need to be done once though.

- Might be confusing since users you *must* specify "=y" exactly
  (dropping the "=y" won't work, and nor will specifying "=Y" (or "=1")).

 Option 2 

Create a Job Configuration File that hard-codes the list of known
service providers. For example for "display-manger", we could have:

  start on (starting gdm
or (starting kdm
or (starting lightdm
or (starting lxdm
or (starting slim
or (starting wdm
or  starting xdm))

  stop on (stopping gdm
or (stopping kdm
or (stopping lightdm
or (stopping lxdm
or (stopping slim
or (stopping wdm
or  stopping xdm))

  envABSTRACT_JOB=y
  export ABSTRACT_JOB

= Observations =

- Since this is an Abstract Job, it will have no PID, but this job will
  "run" for the duration of the first display manager to be invoked.

- We appear to have simply "moved the problem" since although we are no
  longer hard-coding the list of display managers in "plymouth.conf", we
  are hard-coding the list now in "display-manager.conf". However, we
  have gained by doing this since:

  - We have still created the level of abstraction desired.
  - We have contained the problem into a single file: we define the list
of display managers *once*.
  - We don't need to update every Ubuntu (and potentially every Debian)
package as would be required for "Option 1".
  - We *could* conceivably auto-generate "display-manager.conf" from the
archive with a simple script which munged the output of:

apt-cache search x-display-manager|awk '{print $1}'|sort

- The "ABSTRACT_JOB" variable would allow other jobs to detect that a
  job was abstract (they shouldn't need to care, but just in case...)
  This also avoids the unwieldliness of "abstract-display-manager" (or
  even "abstract/display-manager" (were we to put the abstract jobs in
  /etc/init/abstract/ say).

 Personal Preference 

Although it looks rather ugly, my preference is currently for Option 2
primarily since it would be quick and easy to modify the single source
for each service. However, I could be persuaded otherwise :)

= Rationale =

By introducing Abstract Jobs and Event Alias "helpers", we can simplify
the existing Job Configuration Files and make them more understandable.
For example, the "start on" condition for "plymouth.conf" could become:

  start on (starting mountall
or (shutdown and stopped display-manager))

Similarly, "gdm.conf" could become the much simpler / easier to comprehend:

  start on (filesystem and (started dbus and graphics-device-available)
  stop on shutdown

These changes may also incidentally minimise changes required by Ubuntu
derivatives once the helpers become pervasive.

= Documentation =

We will of course ensure that all these helpers are documented appropriately 
and we plan to make
maximum use of them to ease the work required for [2].

-

[1] - 
https://blueprints.launchpad.net/ubuntu/+spec/foundations-o-upstart-convert-main-initd-to-jobs
[2] - 
http://summit.ubuntu.com/uds-o/meeting/foundations-o-upstart-convert-main-initd-to-jobs/


--
James Hunt

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: systemd for 11.10 ?

2011-05-12 Thread James Hunt
On 11/05/11 20:07, Patrick Goetz wrote:
> On 05/11/2011 05:25 AM, James Hunt wrote:
>> The best place to start is:
>>
>> https://wiki.ubuntu.com/NattyNarwhal/TechnicalOverviewUpstart
>>
> 
> This section:
> 
> ...if a job configuration file specified the following complex condition:
> 
>   start on (A and (B or (starting C or (starting D or starting E
> 
> The check-config command would flag an error if for example none of the
> jobs 'C', 'D' or 'E' were available since that would indicate the job in
> question could never be automatically started (since the start on
> condition could never be true).
> 
> 
> is incorrect as stated.  If A and B are true, the job starts.  Since the
> proposition can be logically flattened
>  (B or (C or (D or E))) == B or C or D or E
> I suspect the typo is the "or" after B should be "and"
> 
> 
Actually, there is no error here.

You are right that *if* events A and B are emitted, then the job will
start. But that's not what the check-config command is telling you. The
command tries to identify problems that *might* occur "in the future"
(ie next boot). It is not considering what *did* happen when the system
booted. So, in this example, we don't know if event A or B will actually
be emitted. Because of this uncertainty, we also need to check the rest
of the expression. See:

  http://upstart.at/2011/03/16/checking-jobs-and-events-in-ubuntu-natty/

James

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: systemd for 11.10 ?

2011-05-11 Thread James Hunt
On 10/05/11 21:45, Phillip Susi wrote:
> On 5/10/2011 4:15 PM, James Hunt wrote:
>> If you are seeing strange behaviour, please raise bugs so we can look at
>> them.
> 
> It is a design limitation AFAIK, not a bug.  At least the last time I
> asked SJR about it, Upstart doesn't use cgroups to track children like
> systemd does, and so it looses track of children of the jobs it creates,
> such as programs the logged in user runs, and they can continue running
> even though you stop the gdm job.
> 
>> As of natty, Upstart has a socket bridge which is very similar to
>> systemd's "socket activation" facility. Note that both products' socket
>> features are probably going to be most effective for server-type apps
>> though.
> 
> Ahh, I hadn't noticed that.  I'll have to read up on it.
> 
The best place to start is:

https://wiki.ubuntu.com/NattyNarwhal/TechnicalOverviewUpstart

Regards,

James.


-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: systemd for 11.10 ?

2011-05-11 Thread James Hunt
On 10/05/11 21:45, Phillip Susi wrote:
> On 5/10/2011 4:15 PM, James Hunt wrote:
>> If you are seeing strange behaviour, please raise bugs so we can look at
>> them.
> 
> It is a design limitation AFAIK, not a bug.  At least the last time I
> asked SJR about it, Upstart doesn't use cgroups to track children like
> systemd does, and so it looses track of children of the jobs it creates,
> such as programs the logged in user runs, and they can continue running
> even though you stop the gdm job.
> 
>> As of natty, Upstart has a socket bridge which is very similar to
>> systemd's "socket activation" facility. Note that both products' socket
>> features are probably going to be most effective for server-type apps
>> though.
> 
> Ahh, I hadn't noticed that.  I'll have to read up on it.
> 
The best place to start is:

https://wiki.ubuntu.com/NattyNarwhal/TechnicalOverviewUpstart

Regards,

James.


-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: systemd for 11.10 ?

2011-05-10 Thread James Hunt
Hi Phillip,

On 10/05/11 18:39, Phillip Susi wrote:
> On 5/10/2011 6:46 AM, Steffen Barszus wrote:
>> So the discussion should be on how to evaluate systemd , and set a
>> number of criterias to benchmark both. Then the better one should be
>> planned for slow migration.
>>
>> "Look its new and it has bells and whistles lets move to that" is not
>> a valid argument for moving to a new init.
> 
> I agree, so let's see if we can get the ball rolling in that direction.
> 
> Some of the shortcomings I see with upstart that systemd sounds like it
> addresses are:
> 
> 1)  The ability to drop back to single user mode for system
> administration.  Upstart can not make sure that all processes started
> during multi user mode that are not supposed to be running in single
> user mode are actually killed.
If you are seeing strange behaviour, please raise bugs so we can look at
them.

> 
> 2)  The ability to serialize state and re-execute itself so it can run
> in the initramfs and then hand off to the real system.
This is being considerd. I wasn't aware that systemd could run in
initramfs. Regardless, I believe that Fedora is moving to dracut for
initramfs. Whereas Ubuntu is planning to put Upstart into the initramfs
for Oneiric.

> 
> 3)  The ability to figure out why a given service runs or does not run
> when it does or should.  Right now Upstart relies on comments being
> added to the config files to give the admin clues about this, but that
> is inherently unreliable and still difficult to figure out.

See:


http://upstart.at/2011/03/25/visualisation-of-jobs-and-events-in-ubuntu-natty/

Tomorrow, here at UDS we will be discussing the provision of new tooling
for administrators that would give a more "traditional" view of services:

 https://blueprints.launchpad.net/ubuntu/+spec/foundations-o-upstart-for-admins

> 
> 4)  The increased parallelism systemd offers by running services at the
> same time as those they "depend" on by having systemd create the socket
> is not something upstart currently can do.  I am not sure if it can be
> extended to do this or not.
> 

Systemd offers no increased parallelism over Upstart for starting and
managing jobs that I'm aware of. Note that Upstart was designed from the
ground up for performance and parallelism.

As of natty, Upstart has a socket bridge which is very similar to
systemd's "socket activation" facility. Note that both products' socket
features are probably going to be most effective for server-type apps
though.

Regards,

James.

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: systemd for 11.10 ?

2011-05-10 Thread James Hunt
On 10/05/11 11:46, Steffen Barszus wrote:
> "Look its new and it has bells and whistles lets move to that" is not
> a valid argument for moving to a new init.
> 
+1000.

James.

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: systemd for 11.10 ?

2011-05-10 Thread James Hunt
On 09/05/11 19:34, Patrick Goetz wrote:
> I think the discussion found in this bug report makes a fairly
> compelling argument that Ubuntu should probably migrate to systemd
> sooner rather than later.  Note particularly that a take away message
> from this is that services like apache and postfix will need to continue
> to use sysV init scripts until a complete rewrite of upstart has been
> completed.
> 
>   https://bugs.launchpad.net/upstart/+bug/406397
> 
> Of course by all means let me know if I'm missing something here.
I disagree. Yes there are some known issues with Upstart. I am sure
there will be atleast as many issues with systemd (after all, nobody is
even using it yet). Again, "new" != "superior".

This is a nasty bug, but it does not require a complete rewrite of
Upstart. Indeed, we are currently considering replacing the process
tracking code to resolve this bug.

> 
> 
> 
> 

James

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: systemd for 11.10 ?

2011-05-10 Thread James Hunt
Patrick,

On 09/05/11 16:58, Patrick Goetz wrote:
>> From: Steve Langasek 
>> Date: Mon, 9 May 2011 11:45:56 +0200
>>
>> And let's not forget that, for anyone tracking the LTS, upstart
>> is*already*
>> the system in use for the previous LTS, 10.04.  The fundamentals of how
>> upstart will work in 12.04 LTS are the same as in 10.04 LTS; upstart in
>> 12.04 will include incremental improvements to the usability and
>> instrumentability for system admins, this is not something *new*  that
>> admins
>> are being asked to invest their time in learning.
> 
> 
> Hi -
> 
> Your points are well taken, and -- especially if not everyone agrees
> that systemd is superior -- it's fair to keep upstart going for a while
> before jumping to the conclusion that systemd is better.
This comment still implies to me you consider systemd better, but I do
not understand why you have this view?

  Everyone
> immediately jumped on the X windows bandwagon many years ago (mostly as
> a foil to Sun's NeWS system), and we haven't been unable to get out from
> underneath using network stacks for locally displayed graphics for the
> 20+ years since.
> 
> My point about learning a new system was based on the observation that
> there still seem to be a number of kinks in upstart; in particular,
> we've had timing problems with autofs and statd, both of which
> intermittently refused to start until we tweaked the upstart scripts.
Why does your having to change a configuration file imply we should
throw away a core part of the Ubuntu system? The problem you have
described is a packaging/maintainer configuration file issue for 2
different packages, neither of which are Upstart itself.

> Also, the fact that packages like apache still don't have an upstart
> script indicates the technology isn't fully mature.  Under these
> circumstances, if everyone agreed that systemd is better, then it makes
> more sense to switch sooner rather than later.
> 
>> http://i.imgur.com/usftZ.png
> 
> This is very funny, but there are some points raised in Lennart's
> comparison:
> 
>   http://0pointer.de/blog/projects/why.html
> 
> that merit careful reflection; e.g. shell-free bootup, mount/automount
> handling, and disabling of services without editing files, to name a
> few.  There are other points that look interesting, but I don't know
> enough about what he means to comment.
Lots of features does not necessarily equate to a superior system. the
design of Upstart follows "the Unix way": do one job and do it well.
When required, Upstart relies on "helpers" (such as
upstart-udev-bridge). This design is fundamentally sound - *iff* there
were a problem in the udev bridge, it cannot bring down init, which
would of course cause a kernel panic. Adding every possible feature into
a critical system process such as init should only be considered with
extreme caution IMHO.

  No one, however, can tell me
> that the accepted method for disabling services in upstart isn't a
> kludge!  <:)
The rationale for Upstarts behaviour, which is of course different to
SysV-like systems, is that if you install a service, you'll want it
started on boot: guaranteed. In 9 out of 10 cases, this is the right answer.

For the remaining case, say a database dev who has a handful of db
engines installed, but doesn't want them all auto-started on her
underpowered laptop, we provide the ability to disable that job. Yes,
the interface is simple, but does it really need to be any more complex
than it is?

> 
> 
> 



James.
--
James Hunt

Ubuntu Foundations Team, Canonical.

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: systemd for 11.10 ?

2011-05-10 Thread James Hunt
Hi Martin,

On 09/05/11 21:01, Martin Pitt wrote:
> Steve Langasek [2011-05-09 12:36 +0200]:
>> It's one thing to have a rollback plan for which desktop experience is
>> shipped by default; that touches a handful of closely related packages.
>> It's quite another to try to roll back an init system change, which touches
>> every single package that's involved with system startup and requires
>> changes across a very broad set of foundations, desktop, and server
>> packages.
> 
> If we should ever do the migration to systemd,
.. Which to be clear, we are not considering currently.

 then we should
> certainly not drop the upstart integration/jobs along the way, but
> keep both upstart and systemd jobs in the packages for a while (at
> least until the next LTS), so that you can switch between the two with
> the init= kernel parameter (that's in fact how you can test systemd on
> Debian/Ubuntu/everywhere else today).
I agree in principle that we should do this *should* we ever consider
moving to systemd, but there is the issue of ensuring that both the
Upstart and the systemd jobs are guaranteed to result in the same
behaviour. How we would do this, I don't currently know.

  Then rolling back is by and
> large just a seed change, and perhaps flipping back an option in grub.
Well, let's not forget that we are about to put Upstart into the
initramfs for Oneiric. Removing Upstart is not in any plan I'm aware of,
but to be clear to all, *if* we ever did do it, it would take a
**considerable** effort to do IMHO so would need very careful
justification, planning, and extremely thorough testing.

> 
> This would even allow us to do things like installing systemd for new
> installs, but keeping upstart for upgrades until there is a transition
> plan for how to deal with custom upstart jobs that administrators
> created (which seems to be the most difficult thing to handle in the
> transition).
> 
> Martin
> 
> 

James

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: Test version of Upstart with full chroot support available

2011-04-15 Thread James Hunt
On 11/04/11 16:01, Clint Byrum wrote:
> Excerpts from James Hunt's message of Fri Apr 08 08:51:48 -0700 2011:
>> -BEGIN PGP SIGNED MESSAGE-
>> Hash: SHA1
>>
>> Hi All,
>>
>> As a precursor to pushing this update out to Natty next week, I've
>> updated my upstart-testing PPA with Upstart version 0.9.5-1ubuntu1:
>>
>> ppa:jamesodhunt/upstart-testing
>>
>> Code is here:
>>
>> lp:~jamesodhunt/ubuntu/natty/upstart/fix-chroot-sessions
>>
>> As the name suggests, chroots should now work fully [1], but we are keen
>> to solicit feedback from the community.
> 
> FYI, on my natty box when I was running this, installing dbus in a schroot
> session resulted in upstart consuming all available virtual memory and
> eventually crashing the box.
> 
> Steps to reproduce:
> 
> (assuming you've setup schroots w/ mk-sbuild):
> 
> schroot -c natty-amd64 -u root
> apt-get install dbus
> 
> 
> At the 'setting up dbus' point, upstart starts to consume memory at an
> alarming rate.
> > I do need to try and build php w/ sbuild.. now would be an excellent time 
> > to have chroot support so it doesn't die when it tries to start
 mysql server. :)

> This is likely because the dbus upstart job has a post-start that sends
> USR1 to pid 1, which is supposed to tell it to re-connect to dbus.
> 
> I believe the bug is because the USR1 handler needs to ignore requests
> to re-connect to dbus from chrooted processes, but I haven't gotten very
> deep in to debugging it yet.
> 
Hi Clint,

I've now fixed this bug and updated the ppa with
upstart-0.9.6-1ubuntu1~jh1. Feel free to re-test and let me know how it
goes.

Cheers,

James.
--
James Hunt

Ubuntu Foundations Team, Canonical.

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: Test version of Upstart with full chroot support available

2011-04-11 Thread James Hunt
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 11/04/11 16:01, Clint Byrum wrote:
> Excerpts from James Hunt's message of Fri Apr 08 08:51:48 -0700 2011:
>> -BEGIN PGP SIGNED MESSAGE-
>> Hash: SHA1
>>
>> Hi All,
>>
>> As a precursor to pushing this update out to Natty next week, I've
>> updated my upstart-testing PPA with Upstart version 0.9.5-1ubuntu1:
>>
>> ppa:jamesodhunt/upstart-testing
>>
>> Code is here:
>>
>> lp:~jamesodhunt/ubuntu/natty/upstart/fix-chroot-sessions
>>
>> As the name suggests, chroots should now work fully [1], but we are keen
>> to solicit feedback from the community.
> 
> FYI, on my natty box when I was running this, installing dbus in a schroot
> session resulted in upstart consuming all available virtual memory and
> eventually crashing the box.
> 
> Steps to reproduce:
> 
> (assuming you've setup schroots w/ mk-sbuild):
> 
> schroot -c natty-amd64 -u root
> apt-get install dbus
> 
> 
> At the 'setting up dbus' point, upstart starts to consume memory at an
> alarming rate.
> 
> This is likely because the dbus upstart job has a post-start that sends
> USR1 to pid 1, which is supposed to tell it to re-connect to dbus.
> 
> I believe the bug is because the USR1 handler needs to ignore requests
> to re-connect to dbus from chrooted processes, but I haven't gotten very
> deep in to debugging it yet.
> 
Hi Clint,

Thanks for highlighting this. It actually looks like a namespace leak
that is causing the issue - I'm investigating now...

Cheers,

James.
- --
James Hunt

Ubuntu Foundations Team, Canonical.
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk2jGgcACgkQYBWEaHcQG9f6lQCfZwD+qOMnyUle0HCPZ9vtv6KO
FHIAn1MdOsF/FLhToR0qWadRrBoYeviF
=cSt6
-END PGP SIGNATURE-

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Test version of Upstart with full chroot support available

2011-04-08 Thread James Hunt
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi All,

As a precursor to pushing this update out to Natty next week, I've
updated my upstart-testing PPA with Upstart version 0.9.5-1ubuntu1:

ppa:jamesodhunt/upstart-testing

Code is here:

lp:~jamesodhunt/ubuntu/natty/upstart/fix-chroot-sessions

As the name suggests, chroots should now work fully [1], but we are keen
to solicit feedback from the community.

Additional changes:

- - includes Clints reload fix to /lib/init/upstart-job
  (lp:~clint-fewbar/ubuntu/natty/upstart/upstart-job-change-restart)
- - init-checkconf(8) now checks Upstart stanza syntax and script sections.

[1] - https://wiki.ubuntu.com/NattyNarwhal/TechnicalOverviewUpstart

Kind regards,

James.
- --
James Hunt

Ubuntu Foundations Team, Canonical.
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk2fLwwACgkQYBWEaHcQG9er9QCfextMgQSczbWLaHACNc6DWLBS
EuoAnjf4qUjOxVdPiN6xlPmJ2kpgPdmw
=xQuf
-END PGP SIGNATURE-

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: Upstart Cookbook

2011-04-01 Thread James Hunt
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 24/03/11 22:11, Scott James Remnant wrote:
> On Thu, Mar 24, 2011 at 2:34 PM, James Hunt  <mailto:james.h...@canonical.com>> wrote:
> 
>> Clint and I have been hard at work on an "Upstart Cookbook". Although it
>> is "early days", we wanted to let you all know we're working on this
>> project. Our (still *very* draft!) efforts can be viewed here:
>>
> Nice work, some comments on the copy of 1-4 below:
> 
> Although Upstart is used on on a number of different Operating
> Systems (including Ubuntu, Google's Chromium OS and Google's Chrome
> OS), the Ubuntu version is considered the "reference
> implementation". This is primarily due to the fact that Upstart was
> written specifically for Ubuntu (although this does not mean that it
> cannot run on any other Linux-based system).
> 
> 
> I'd disagree with this. Reference implementation always implies that
> other implementations should copy it as much as possible, and Ubuntu is
> no way that. As long as Ubuntu still uses a hybrid of Sys V and Upstart
> jobs, it can never be a reference implementation.
Thanks Scott - cookbook updated on this point.

> 
> It may be that you mean what the document corresponds to, in which case
> use a different term ;-)
> 
> A notification sent by Upstart to all interested parties (either
> jobs or other events). They can be thought of as "signals". Events
> are /emitted/(created and then broadcast) to the entire Upstart system.
> 
>  
> Events can be more than just signals, I've made a point of documenting
> this recently, so this just confuses the issue.
> 
> * Events are like Signals
>   <http://upstart.at/2010/12/08/events-are-like-signals/>
> * Events are like Methods
>   <http://upstart.at/2010/12/16/events-are-like-methods/>
> * Events are like Hooks
>   <http://upstart.at/2011/01/06/events-are-like-hooks/>

I've further clarified this by creating new sections for each type of
event. Note too that the new upstart-events manual page on an Ubuntu
Natty system ("man 7 upstart-events") already shows these types in
Tables (1) and (2).

> 
> Scott

Cheers,

James.
- --
James Hunt

Ubuntu Foundations Team, Canonical.
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk2MgS4ACgkQYBWEaHcQG9f7zACdHHjEoXpYa/PMcAxeUTEzjKh3
xyMAnAxPx9zFMpS4y25QaJw1A6lt++HI
=9D8o
-END PGP SIGNATURE-

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: Upstart Cookbook

2011-04-01 Thread James Hunt
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 29/03/11 02:00, Scott James Remnant wrote:
> The simple answer there is that the way in which events interact with
> tasks vs. services is that they are *identical* :D
> 
> "started" is always emitted after post-start and before the main
> process, whether or not it's a task or service
> 
> On Mon, Mar 28, 2011 at 5:58 PM, Evan Broder  wrote:
>> On Mon, Mar 28, 2011 at 3:32 PM, Scott James Remnant  
>> wrote:
>>> 4.1.1 & 4.1.2 - worth explaining the real difference between "task"
>>> and "service" here, perhaps? or later?
>>
>> +1 from me on that. In particular, I'm interested in how
>> starting/started/stopping/stopped events interact with tasks.
>> slangasek and I tried to work this out on IRC earlier and were unable
>> to do so to our satisfaction.
>>
> 
Scott - thanks for clarifying this.

Evan - I've added a "Job Lifecycle" section which (hopefully) covers all
this:

http://upstart.ubuntu.com/cookbook/#job-lifecycle

Cheers,

James.
- --
James Hunt

Ubuntu Foundations Team, Canonical.
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk2RsU4ACgkQYBWEaHcQG9cTOQCfSE02WlKKIx41NOadCzYChgbU
c7AAn2A1JChfnGTa9+sqPknXkYKznPbA
=CDC/
-END PGP SIGNATURE-

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Upstart Cookbook

2011-04-01 Thread James Hunt
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi All,

Clint and I have been hard at work on an "Upstart Cookbook". Although it
is "early days", we wanted to let you all know we're working on this
project. Our (still *very* draft!) efforts can be viewed here:

  http://upstart.ubuntu.com/cookbook/

Source:

  lp:upstart-cookbook

This document is being updated frequently and is certainly not finished.
We're currently collecting content [1] but any comments, suggestions and
bug reports
welcome:

  https://bugs.launchpad.net/upstart-cookbook/+filebug

Enjoy.

James.

[1] - note that we haven't added in the Natty Features yet - manana!

- --
James Hunt

Ubuntu Foundations Team, Canonical.
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk2LuNYACgkQYBWEaHcQG9fxBACfbjHTV0Ijn/YBFd+2WAMEzOVA
DEMAn2naiJD0iJJ0ayeQ2T/+NrV/TvGn
=v9Eg
-END PGP SIGNATURE-

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Upstart 0.9.2 PPA for testing

2011-03-11 Thread James Hunt
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi All,

As a precursor to pushing this update out to Natty next week, I've
updated my upstart-testing PPA with Upstart 0.9.2:

ppa:jamesodhunt/upstart-testing

Code is here:

lp:~jamesodhunt/ubuntu/natty/upstart/proposed-stage2

The major changes (which will be added to
(https://wiki.ubuntu.com/NattyNarwhal/TechnicalOverview) are...


 Basic Job/Event Visualisation 

Upstart provides a new Python script `initctl2dot` which converts the
output of the new `initctl show-config` command to
[[http://www.graphviz.org/|GraphViz]] format. By default, all job
configuration files are considered and the links between jobs and events
are displayed graphically. Additionally, it is possible to list a set of
jobs to graph. Run "{{{initctl2dot --help}}}" or "{{{man initctl2dot}}}"
for full options.

 New Initctl Commands 

Two new `initctl` commands have been added:

 1. `show-config`
 1. `check-config`

The `show-config` command displays core job configuration details,
namely the `start on`, `stop on` and `emits` stanza information. This is
useful since it allows users to see how Upstart has parsed the job
configuration files. Additionally, the `show-config` command accepts an
optional `--enumerate` option which makes it easy to see which elements
of complex conditions are jobs, which are events and which are
environment details. This option forms the basis of the Visualisation
feature above.

The `check-config` command is useful for System Adminstrators and
tooling to ensure that all jobs are theoretically startable/stoppable.
For example, if a job configuration file specified the following complex
condition:

{{{
  start on (A and (B or (starting C or (starting D or starting E
}}}

The `check-config` command would flag an error if for example none of
the jobs 'C', 'D' or 'E' were available since that would indicate
the job in question could never be automatically started (since the
start on condition could never be true). Similar checks are performed on
events, so if jobs 'C', 'D' and 'E' are available but events 'A' and 'B'
are not advertised as being emitted by any job, 'check-config' will
generate an error. If no errors are detected, `check-config` displays no
output and returns zero. If errors are detected for a job, each
condition that is unsatisfiable is displayed with a message.

 Miscellaneous 

 * A new manual page, `upstart-events (8)` summarising well-known
Upstart events.
 * An updated [[http://www.vim/org|Vim]] syntax file has been included.
 * A Bash completion script has been included for `initctl`.
 * A new script `init-checkconf` has been provided which allows a user
to check an individual job configuration file to ensure it is
syntactically correct before installing it in "`/etc/init/`". Run
"{{{init-checkconf -h}}}" or "{{{man init-checkconf}}}" for full options.
 * The [[http://www.vim/org|Vim]] package "{{{vim-runtime}}}" now
includes syntax support for upstart job configuration files.


- -- 
Cheers,

James.
- --
James Hunt

Ubuntu Foundations Team, Canonical.
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk16EFIACgkQYBWEaHcQG9eYSwCfXSGgqDlX8F6mN8UONzDHlyVZ
LAYAnRivuH8Lj1Q1uuqZNn6u7Csr9RtN
=8LZc
-END PGP SIGNATURE-

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel