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

Re: ELF conversion (was Re: 1.0 issues: FSSTND compliance & preparation for a.out abolishment)

> 2. Secondly, we arrange that all the new base packages have code in
> the preinst that checks for the existence of the ELF libraries
> (perhaps by running /usr/bin/elf-available or something).  If the
> libraries aren't found then the preinst returns a non-zero exit status
> and the upgrade aborts.  Say:
>  #!/bin/sh
>  set -e
>  elf-available
> And elf-available is an ELF version of /bin/true supplied with one of
> the ELF library packages.  Then if elf-available is missing or
> something else goes wrong we get a message like
>  /var/lib/dpkg/tmp.ci/preinst: elf-available: not found
> and the installation aborts.  If we're feeling fancy we can write
> code that prints a more helpful message.

This elf-available bit is too klugy for me.  Why can't we just use
dpkg's standard dependency checking?  Isn't that what it's there for?

> 3. We do a `renaming' operation on the a.out libc package, renaming it
> to a.out-libc.  At the same time we move the a.out libraries inside it
> to their non-FSSTND locations if appropriate, but we need to keep the
> ones currently in /lib in the root partition.  Eventually this package
> will be removed from Required - when all the base packages are
> converted to ELF.

Renaming packages seems rather error prone to me.  How would it be
done?  This sure complicates our upgrade procedure -- first upgrade to
this set of packages, then run this command or install this special
package which renames things, finally install these other packages,
etc.  Ick!

Here's how I'm leaning towards handling this.  I'll use libc for my
example, but this should extend to other core packages as well.

First, as Ian (or someone else) has already noted, we haven't been very
good about listing libc as a dependency of virtually all other packages.
We need to take care of this.

Next, we build a new release of libc that moves everything under /usr
to /usr/i486-linuxaout.  This is the standard directory to put a.out
stuff in after switching to ELF.  Some people have suggested that the
stuff in /lib be moved to /lib/a.out or similar.  This shouldn't be
necessary as the ELF stuff that goes in here should coexist.

Then, build a new release of elf-libc with everything moved from
/usr/i486-linuxelf to /lib and /usr.  This new package should be named
libc5 (note not libc) and have appropriate conflicts lines with older,
pre-ELF versions of the libc package.

Finally, so we don't repeat the same mistakes again, any new packages
built using libc5 should explicitly list it in their dependencies.

David Engel                        Optical Data Systems, Inc.
david@ods.com                      1101 E. Arapaho Road
(214) 234-6400                     Richardson, TX  75081

Reply to: