[git-buildpackage] environment clearing?
    Daniel Kahn Gillmor 
    dkg at fifthhorseman.net
       
    Wed Nov 18 21:37:55 CET 2015
    
    
  
On Mon 2015-11-16 14:38:04 -0500, Guido Günther wrote:
> I'm sorry for being ignorant here but how exactly does this work? gpg
> looks for a running agent to see if the key is already unlocked, if not
> gpg-agent calls out for the pinentry, which then needs a D-Bus session
> bus?
it's rather complicated.  Below is the workflow for "modern" GnuPG
(2.1.x and higher) under GNOME 3:
 0) gpg looks for a running gpg-agent.
 1) if the agent doesn't exist, gpg starts one.
 2) gpg now asks the agent for the use of a secret key
 3) the agent checks if the key is already unlocked.
 4) If the key is not unlocked, gpg-agent spawns a pinentry.
 5) it spawns /usr/bin/pinentry by default, which is governed by
 /etc/alternatives.
 6) pinentry is responsible for showing a prompt to the user.
 7) if /usr/bin/pinentry points to pinentry-gnome3, then it uses gcr
 (the gnome crypto toolkit) to do the prompting.
 8) gcr works by the running process communicating over dbus, using
 DBUS_SESSION_BUS_ADDRESS to find the correct unix-domain socket for communications.
> This is during the "normal" build process? What builder are you using,
> what does
>
>     gbp config buildpackage.builder
>     gbp config buildpackage.pbuilder
>
> show? I assume s.th. like:
>
>     $ gbp config buildpackage.builder
>     buildpackage.builder=dpkg-buildpackage
>     $ gbp config buildpackage.pbuilder
>     buildpackage.pbuilder=False
Almost:
buildpackage.builder is the empty string, but
buildpackage.pbuilder=False
> If so, can you try to set the builder to a command that just dumps the
> environment into a file like:
>
>     gbp buildpackage --git-builder='printenv > /tmp/foo' --git-no-pbuilder
>
> and check if it has all the needed environment variables? If I do this I
> do find DBUS_SESSION_BUS_ADDRESS in there as well as several gpg related
> ones (like GPG_AGENT_INFO) and looking at the code we don't clear the
> env, we either extend it or leave it untouched (by passing None).
yes, i see DBUS_SESSION_BUS_ADDRESS in there too.  hmmmm.
> So are we sure it's environment variable related or maybe something else?
>
> Another possibility would be to use
>
>     strace -f -o /tmp/bla.log -s2048 dpkg-buildpackage
>
> as builder so we can maybe figure what's going wrong (i.e. if it's not
> possible to open the dbus socket)?
huh, this actually worked to build the package just fine.
But it helped me to narrow things down!  it looks like
--git-builder=debuild is what's causing the stripping, and when
buildpackage.builder is the empty string and debuild is available in the
$PATH, it prefers debuild to dpkg-buildpackage (which is probably
reasonable).
I'll go hassle the debuild folks now :)
Thanks for helping me debug,
     --dkg
    
    
More information about the git-buildpackage
mailing list