Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Aug 1998 13:23:03 +1000 (EST)
From:      John Birrell  <jb@cimlogic.com.au>
To:        asami@FreeBSD.ORG (Satoshi Asami)
Cc:        jb@cimlogic.com.au, ports@FreeBSD.ORG, jdp@FreeBSD.ORG
Subject:   Re: ELF transition for ports (Re: rayshade port)
Message-ID:  <199808200323.NAA04438@cimlogic.com.au>
In-Reply-To: <199808200222.TAA01443@bubble.didi.com> from Satoshi Asami at "Aug 19, 98 07:22:39 pm"

next in thread | previous in thread | raw e-mail | index | archive | help
Satoshi Asami wrote:
> By the way, I believe "the other John" (jdp) is also on the ports list
> so I'm just going to continue here.  John P., feel free to take
> yourself out of the CC: list if you are indeed on the list.  (haha)

jdp's out of town for a few days.

> No.  I meant after the day the switch is thrown (I'm going to call it
> "E-day", for simplicity).  We won't be able to generate a.out
> libraries anymore, right?

No. All the tools will still be there to build aout things for an unspecified
time after 3.0. The default will be elf, but you can set OBJFORMAT=aout
and things will work the way they do today.

I know it is possible to set OBJFORMAT=aout and do a make world, converting
you back to aout. 8-)

> 
> My plan is something like:
> 
> pre-E-day: tell people that they need to be well prepared, in
>      particuar that they are not supposed to do *anything* (make
>      world, rebuild ports, etc.) until they understand the procedure
>      listed below or their system will be hosed
> 
> E-day: you guys throw the switch

The problem I see with this is that people will only convert when they're
ready. All I need to do is commit the makefiles that contain support for
the upgrade. aout->aout will still work (I have tested that). aout->elf
is a special make step that ends up with /etc/objectformat set to
OBJFORMAT=elf and all the elf csu objects, libraries, shared loader
installed. After that elf->elf is the default for that end-user system.

> post-E-day:
> 
>  (1) people running current (PRCs) do a "for i in /usr/local
>      /usr/X11R6; do cd $i/lib; mkdir aout; mv lib*.so* aout; mv lib*.a
>      aout; done"

This should be done by the aout->elf transition procedure.

> 
>  (2) PRCs edit their /etc/rc to make ldconfig (which I understand is to
>      remain as an aout-only utility) scan /usr/local/lib/aout and
>      /usr/X11R6/lib/aout
> 
>  (3) PRCs do a make world, reboot
> 
>  (4) porters fix ports to correctly build ELF libraries if running on
>      a 3.0-current system

Since 2.2.X must be supported on aout and 3.0-current might not have
been converted to elf, it would be best if we could find a way of making
bsd.port.mk (3.0 version) OBJFORMAT aware.

I'm hoping that most ports build their libraries in a normal way so
that with OBJFORMAT=elf automatically setting the right tools, things
will not need many changes.

> Eek.  You guys think 6 weeks is enough to fix a few dozen ports that
> build shared libraries and whatever more that use them? :<

I guess I might be being naiive, but I'm trying to avoid breaking
things so badly that we create this amount of work. With the exception
of ldconfig, I can't see that an elf system looks too different
from an aout one from the perspective of the ports makefiles.

> Sorry, but I don't expect 3.0 to ship with too many packages if it's
> going to be that late.  6 weeks, of which the last couple need to be
> spent in beta testing and package building, is not going to be enough
> by a wide margin.

Well if that is a hurdle which can't be overcome (by finding a simple
conversion procedure), then it might be necessary to ship aout packages.
We can't just break a large slice of the release just because we're
trying to go elf.

> Oh yes, ldconfig.  What should we do to find shared libraries now?

I think we need a tool to do that. Making ldconfig elf aware just so
we get the search functionality might be an option even though the
elf shared loader won't use the hints file.

> If you can get those five to work, that should cover most of the
> issues.  (I know cvsup is not particularly big but it's very widely
> used so I included it here.)  Speaking of modula-3 (-lib), it includes
> its own shared library directory but I'm assuming jdp will provide an
> adequate upgrade procedure with the port so I didn't include it in (1)
> above.

I'll leave jdp to comment on modula-3.

I have plenty of disk space on my scratch machine, so I'll try the ports
you suggest. I will start with the assumption that they build on aout
and try building them on a clean elf system to see what issues there are.
To do this I'll hack ldconfig to use ld-elf.so.hints if OBJFORMAT=elf
and we can decide later if that's the way we want to query installed
libraries.

-- 
John Birrell - jb@cimlogic.com.au; jb@freebsd.org http://www.cimlogic.com.au/
CIMlogic Pty Ltd, GPO Box 117A, Melbourne Vic 3001, Australia +61 418 353 137

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ports" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199808200323.NAA04438>