tech-toolchain archive

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

Re: fully supporting static lining in NetBSD (ar "zero" flag)

On 6-Aug-08, at 5:36 PM, Jason Thorpe wrote:

If you want to go through the pain and hassle of all that crap yourself, feel free to build the OS from source (and turn on whatever switch we use to enable building / installing the archive libraries). If you want to link the entire system statically, you have to do that anyway since by default the entire system is linked dynamically. As I said in my previous message, we have to continue to support the mechanism for sun2.

I hope you don't mean that in any way sarcastically. Sadly it seems to me from your tone that you do.

However, I'm perfectly OK with saying "if you do this, we don't jump through hoops to make sure stuff like PAM works". Or threads.

Well if the system only provides lame implementations of features which result in them only supporting dynamic linking/loading, then that's very short-sighted.

PAM, for example, can easily be implemented in such a way that a static-only version can be built and used where all desired mechanisms are statically linked into the system. (Of course choosing to use PAM in an environment where source code can be used by _users_ to completely rebuild their systems is a poor idea in the first place.)

The same applies to _every_ scenario where binary-only vendors have tried to use dynamic/runtime loading of object code to support additional flexibility in their distributions which might not otherwise be possible without providing source code and the means for _users_ to rebuild and update their systems _entirely_ from source code only. This is even true of some of the gargantuan UI frameworks which currently require, for _very_ naive reasons, dynamic runtime loading of object code.

For example a simple patch in has shown that even the infamous CITRUS support for locales can be fixed such that it trivially supports static linking of all the desired runtime modules.

Indeed I'm not aware yet of any real or valid reason to _require_ threaded programs to make use of a runtime dynamic link-loader either. PR #37454, for example, identifies an issue with the current implementation, not a show-stopper that prevents use of pthreads in static-only binaries.

What a horridly binary vendor centric viewpoint you have these days Jason.

Huh?  In what way?

Much of the reasoning I've seen from you so far seems, at least from my perspective, to be based solely on the requirements of binary-only vendors. You construe (in other posts) that "modern" systems require in some way the use of runtime dynamic link/loading of code. That is simply _not_ true, except and unless you're considering _only_ the requirements of binary-only vendors. It may be a _feature_ to give users of binary distributions the ability to dynamically add new (and/ or 3rd party) options to their systems without requiring that they rebuild their entire systems from source again, but such a feature is hardly a requirement of a "modern" operating system.

I certainly don't object to supporting mechanisms which binary-only vendors might find useful to support additional runtime features in their distributions, but I think it's critical to maintain full support of static linking too.

As such I also don't object to, when acting as a vendor of a binary system distribution, to choose to use dynamic linking and shared libraries to as great an extent as is desired.

However I, as a contributor and user, would strongly object to, when acting as a vendor of source code, if it were to choose to subvert and obfuscate and discount the relevance and benefits of building the NetBSD source code base in a static-only manner.

Indeed as a contributor and user of NetBSD I'm fully willing and able to help as much as I can to maintain the ability of NetBSD to make full use of all its modern features when it is built as a static-only binary distribution.

                                        Greg A. Woods; Planix, Inc.

Home | Main Index | Thread Index | Old Index