[Distutils] Convention for installing binary data files

Greg Ward gward@python.net
Wed, 23 Feb 2000 23:06:18 -0500

On 24 February 2000, Brian Takashi Hooper said:
> Are there any plans to include additional hooks for other stuff?
> Another one that I can think of is documentation - is that typically
> built as part of the install_ext portion...?  What are other people
> doing with this?

My long-term plan is to have specific support for installing certain
types of documentation.  Anything more concrete than that will have to
wait for some standard module documentation system to emerge from the
doc-sig.  (In other words, don't hold your breath!)

However, you've given me an interesting idea: the ability to register
certain commands as "sub-install" commands that would then be
automatically called by the "install" command itself.  Currently, if you 
want to add some funky new kind of installation, you can either:

  * subclass the standard "install" command, adding capability to
    install your custom stuff -- that's the approach I took in
    adding header installation to NumPy
  * register your customized version of the "install" command


  * define a new command "my_install" (or whatever) that just does
    whatever it takes to install your custom stuff
  * subclass the standard "install" command; the only change is to
    add a call to your command -- run_peer('my_install')
  * register both "my_install" and the customized version of "install"

However, if we add a way to add arbitrary "sub-install" commands, that
simplifies to:

  * define a new custom "sub-install" command
  * register it as a "sub-install" command

and Bob's your uncle.

The same would have to apply to "build" commands -- anything you install
(code, documentation, whatever), you usually have to be able to build.

> It is a platform-neutral data file - specifically, a character mapping
> table (this is for a Japanese encoding package that a colleague of mine
> is currently working on)... I guess this would be /usr/lib or
> /usr/local/lib then?

No, if you follow the GNU coding standards, platform-neutral stuff goes
in /usr/share (or /usr/local/share).  /usr/lib (/usr/local/share) is for 
platform-specific stuff like C libraries.  (Now, let's count the number
of major packages that actually respect this.  You can probably leave
your socks on...)

Greg Ward - Linux weenie                                gward@python.net
If you can read this, thank a programmer.