[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: emdebian-tools 1.4.3 - RC fix - freeze exception request

On Thu, 2008-08-21 at 10:03 +0200, Marc 'HE' Brockschmidt wrote:
> Neil Williams <codehelp@debian.org> writes:
> >   * two suite scripts force installation of conflicting packages
> >     (Closes: #494622) fix by dropping sysv-rc. Therefore complete the
> >     implementation of the replacement for the perl update-rc.d script
> >     from sysv-rc in shell across all suite scripts: r4711. Ensure 
> >     /etc/rc.d/ exists for shell update-rc.d support: r4699. Implement
> >     shell replacement for update-rc.d: r4677 (this was the commit that
> >     omitted to make the change across all suite scripts, requiring r4711).
> I'm not exactly sure where this shell-version is used, could you please
> explain a bit about that?

Only in an Emdebian installation and only if the developer does not
provide a better alternative. Any Emdebian installation can be
customised by adding a custom package that drops in replacements for
such files during the generation of the root filesystem. Emdebian has a
list of "basic files" that can be used as fallbacks if no package
creates them - the various files can be added or removed by using
customised suite scripts.

>  It's fairly incomplete, and some of the
> standard constructs of the perl version aren't supported (specifying
> stop before start, it doesn't implements safeguards against adding the
> same script with several sequence numbers, ...)

Let's be honest here, it is very incomplete - skeletal is the intention
here, every Kb matters. ;-) 
("small is good, tiny is better, absolute-bare-bones is ideal")

So, yes, that is deliberate - the safeguards are dropped for reasons of
speed of processing and code simplicity. In the end, Emdebian just does
not need the extra code - the more rigorous testing within Debian means
that any Emdebian default can afford to be simpler, whenever the full
Debian version cannot be supported. Phil Hands and I worked on it at
DebConf8 with the deliberate intention of making it as small and
feature-poor as possible without breaking the packages we actually use. 

All I need from the shell replacement is the ability to create some
symlinks that approximate to what might happen if Debian was to be
created without runlevel support. I'll have to see whether stop before
start is relevant to an embedded device - and actually deployed in any
packages that Emdebian cares about - but thanks for the tip.

This bug was about providing a replacement for the perl script because
the perl code simply cannot be run on an Emdebian device so
installations would break completely. We experimented with a no-op shell
script and manually specified symlinks (those are the symlink_rcS
subroutine calls removed from the suite scripts in the same revisions)
but in the end the solution was to have the absolute minimum number of
features from the perl version so that we could still use the maintainer
scripts of the packages we actually use (700 binaries out of the 20,000
in Debian) but coerce them into working with a single runlevel and
minimal update-rc.d (and invoke-rc.d) support. Simply removing the
sysv-rc conflict was not a solution because the installation would
simply break. Trying to implement the safeguards of the perl script
within the shell replacement was impractical and largely pointless for
the package subset that we actually use.

There is no intention to implement the shell version outside Emdebian or
try to include it in any non-embedded installation.


Neil Williams

Attachment: signature.asc
Description: This is a digitally signed message part

Reply to: