[Distutils] bdist_deb in stdeb

Gerry Reno greno at verizon.net
Mon Sep 28 19:08:36 CEST 2009


Andrew Straw wrote:
> Olof Bjarnason wrote:
>> 2009/9/28 Gerry Reno <greno at verizon.net>:
>>   
>>>> Just pass the arguments directly to sdist_dsc. It should be something
>>>> like this:
>>>>
>>>> python setup.py sdist_dsc --ignore-single-version-externally-managed
>>>> --ignore-install-requires bdist_deb
>>>>
>>>>       
>>> How's that going to work?  You have 'sdist_dsc' on the command line as well
>>> as 'bdist_deb'.   'bdist_deb' also calls 'sdist_dsc' internally but this
>>> time it would be without any arguments?  How can that work?
>>>     
> This is standard distutils command processing -- this has nothing to do
> with stdeb per se. The reason I gave an example not involving stdeb
> (which was snipped out by you in your quote above) is so that you can
> try it yourself and explore further without thinking it's somehow an
> stdeb issue. Specifically, you do not need to understand anything
> specific to stdeb to understand how to pass multiple arguments to
> sub-commands of a distutils command. (And if stdeb handles things
> differently, it's a bug and I would appreciate hearing about it.)
>
> For example, "build_ext" is a sub-command of "install" that get called
> to build extension modules prior to installation. (Being a sub-command
> is not strictly true in the sense that the install command doesn't list
> build_ext in its sub_commands in distutils/commands/install.py, but it
> acts as if it's true.) Likewise, "sdist_dsc" is a sub-command of
> "bdist_deb". In all cases one, might want to pass arguments to the
> sub-command before running a later command. distutils allows this.
>
Ok, the commands behave like makefile rules, once run they don't run 
again. 

But there are still several issues here:

Remember that I said that my goal with 'bdist_deb' was for users to have 
a SINGLE command to generate a .deb.

What needs to be achieved is for a command like this:
$ python setup.py  bdist_deb
OR
$ python setup.py  bdist_deb  --ignore-single-version-externally-managed

to be possible.  'bdist_deb' would call sdist_dsc internally with the 
necessary args WITHOUT having to explicitly put 'sdist_dsc' on the 
command line.

This is how I was expecting that you would implement the bdist_deb 
command inside of stdeb.


Another issue:  In util.py on line 962 (gerry-reno git):
%(setup_env_vars)spython$* -c "import 
setuptools,sys;f='setup.py';sys.argv[0]=f;execfile(f,{'__file__':f,'__name__':'__main__'})" 
install \\

Maybe it should be like this (note semicolon splitting line into two 
statements):
%(setup_env_vars)s;    python$* -c "import 
setuptools,sys;f='setup.py';sys.argv[0]=f;execfile(f,{'__file__':f,'__name__':'__main__'})" 
install \\

Otherwise any of the env vars don't seem to be in effect for the  line 
itself.   If you put any of the env vars in the line, they don't expand 
to the value set in set_env_vars.  They expand to previous value or to null.


Regards,
Gerry



More information about the Distutils-SIG mailing list