chiark / gitweb /
load bash profile using --login when running builds on server
authorHans-Christoph Steiner <hans@eds.org>
Tue, 21 Jun 2016 08:39:41 +0000 (10:39 +0200)
committerHans-Christoph Steiner <hans@eds.org>
Mon, 27 Jun 2016 12:00:49 +0000 (14:00 +0200)
This will make `vagrant ssh` and `fdroid build --server` be the same env,
so troubleshooting should be easier.  !135  Here's what `man bash` says:

 When bash is invoked as an interactive login shell, or as a
 non-interactive shell with the --login option, it first reads and
 executes commands from the file /etc/profile, if that file
 exists.  After reading that file, it looks for ~/.bash_profile,
 ~/.bash_login, and ~/.profile, in that order, and reads and
 executes commands from the first one that exists and is readable.
 The --noprofile option may be used when the shell is started to
 inhibit this behavior. When a login shell exits, bash reads and
 executes commands from the file ~/.bash_logout, if it exists.

fdroidserver/build.py

index bad025a6d9a37258aedad1bada262e1a82301f6e..818f6c1f53fe8ef4890d11201f0620616c8e984a 100644 (file)
@@ -388,8 +388,7 @@ def build_server(app, build, vcs, build_dir, output_dir, force):
         if options.verbose:
             cmdline += ' --verbose'
         cmdline += " %s:%s" % (app.id, build.vercode)
-        cmdline = '. /etc/profile && ' + cmdline
-        chan.exec_command('bash -c "' + cmdline + '"')
+        chan.exec_command('bash --login -c "' + cmdline + '"')
         output = bytes()
         while not chan.exit_status_ready():
             while chan.recv_ready():