[Python-Dev] Status of packaging in 3.3

Nick Coghlan ncoghlan at gmail.com
Fri Jun 22 08:29:55 CEST 2012


On Fri, Jun 22, 2012 at 3:20 PM, Donald Stufft <donald.stufft at gmail.com> wrote:
> I don't want to argue over implementation details as I think that is
> premature right now, so this
> concept has a big +1 from me. RPM, deb, etc has a long history and a lot of
> shared knowledge
> so looking at them and adapting it to work cross platform is likely to be
> huge win.

Right, much of what I wrote in that email should be taken as "this is
one way I think it *could* work", rather than "this is the way I think
it *should* work". In particular, any realistic attempt should also
look at what Debian based systems do differently from RPM based
systems.

I think the key elements are recognising that:
- an "sdist" contains three kinds of file:
  - package metadata
  - files to be installed directly on the target system
  - files needed to build other files
- a "bdist" also contains three kinds of file:
  - package metadata
  - files to be installed directly on the target system
  - files needed to correctly install and update other files

That means the key transformations to be defined are:

- source checkout -> sdist
  - need to define contents of sdist
  - need to define where any directly installed files are going to end up
- sdist -> bdist
  - need to define contents of bdist
  - need to define how to create the build artifacts
  - need to define where any installed build artifacts are going to end up
- bdist -> installed software
  - need to allow application developers to customise the installation process
  - need to allow system packages to customise where certain kinds of
file end up

The one *anti-pattern* I think we really want to avoid is a complex
registration system where customisation isn't as simple as saying
either:
- run this inline piece of code; or
- invoke this named function or class that implements the appropriate interface

The other main consideration is that we want the format to be easy to
read with general purpose tools, and that means something based on a
configuration file standard. YAML is the obvious choice at that point.

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia


More information about the Python-Dev mailing list