<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-infrastructure.

</pre>
<p><a href="https://github.com/macports/macports-infrastructure/commit/aa3a9d21a2b11a903c5d7427f6c83810b6dbf64a">https://github.com/macports/macports-infrastructure/commit/aa3a9d21a2b11a903c5d7427f6c83810b6dbf64a</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new aa3a9d2  buildbot: rsync upload improvements
</span>aa3a9d2 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit aa3a9d21a2b11a903c5d7427f6c83810b6dbf64a
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Tue Mar 4 23:39:55 2025 +1100

<span style='display:block; white-space:pre;color:#404040;'>    buildbot: rsync upload improvements
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Allow configuring ssh port and path to uploaded archives on the master.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Also simplify code with dict.get().
</span>---
 buildbot/master.cfg | 50 ++++++++++++++++++++------------------------------
 1 file changed, 20 insertions(+), 30 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/buildbot/master.cfg b/buildbot/master.cfg
</span><span style='display:block; white-space:pre;color:#808080;'>index a5febf9..3d54146 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/buildbot/master.cfg
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/buildbot/master.cfg
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -449,34 +449,23 @@ if config['production']:
</span> else:
     prefix = config['slaveprefix']
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if 'dlhost' in config:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    dlhost = config['dlhost']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    dlhost = 'packages@packages-origin.macports.org' if config['production'] else ''
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+dlhost = config.get('dlhost',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    'packages@packages-origin.macports.org' if config['production'] else '')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+dlhost_private = config.get('dlhost_private', dlhost)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+dlpath = config.get('dlpath',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    '/var/www/html/packages' if config['production'] else './deployed_archives')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+dlpath_private = config.get('dlpath_private',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    '/var/www/html/packages-private' if config['production'] else './deployed_archives_private')
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if 'dlhost_private' in config:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    dlhost_private = config['dlhost_private']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    dlhost_private = dlhost
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Path to upload archives from on the builder.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ulpath = config.get('ulpath',  'archive_staging')
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if 'dlpath' in config:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    dlpath = config['dlpath']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    dlpath = '/var/www/html/packages' if config['production'] else './deployed_archives'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Per-builder path to target when uploading archives.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ulpath_unique = config.get('ulpath_unique',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    ulpath+'-%(buildername)s')
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if 'dlpath_private' in config:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    dlpath_private = config['dlpath_private']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    dlpath_private = '/var/www/html/packages-private' if config['production'] else './deployed_archives_private'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if 'ulpath' in config:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    ulpath = config['ulpath']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    ulpath = 'archive_staging'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if 'ulpath_unique' in config:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    ulpath_unique = config['ulpath_unique']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    ulpath_unique = ulpath+'-%(buildername)s'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Where the uploaded archives are found in the master's filesystem.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ulpath_master = config.get('ulpath_master', ulpath_unique)
</span> 
 @util.renderer
 def make_build_url(props):
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -629,8 +618,8 @@ class RsyncDeployStep(steps.ShellCommand):
</span>                 name='rsync',
                 description=['deploying'],
                 descriptionDone=['deploy'],
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                command=['rsync', '-avzhC', '--delay-updates', '--delete-delay', '%s' % srcpath, util.WithProperties('%s@%s:%s/' % (user, host, destpath))],
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                env={'RSYNC_RSH': 'ssh -i ssh_key -oUserKnownHostsFile=ssh_known_hosts'},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                command=['rsync', '-avzhC', '--delay-updates', '--delete-delay', srcpath, util.WithProperties('%s@%s:%s/' % (user, host, destpath))],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                env={'RSYNC_RSH': 'ssh -i ssh_key -oUserKnownHostsFile=ssh_known_hosts -p %d' % kwargs.get('sshport', 22)},
</span>                 **kwargs)
 
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -681,19 +670,20 @@ elif config['upload_method'] == 'rsync':
</span>             host=config['deploy']['archives']['host'],
             user=config['deploy']['archives']['user'],
             srcpath=ulpath,
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            destpath=ulpath_unique))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            destpath=ulpath_unique,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            sshport=config['deploy']['archives'].get('sshport', 22)))
</span> 
 # XXX: move deploy_archives.sh functionality to mpbb
 # sign generated binaries and sync to download server (if distributable)
 if config['production'] or config['deploy_archives']:
     portbuilder_factory.addStep(steps.MasterShellCommand(
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        command=['./deploy_archives.sh', util.WithProperties(os.path.join(ulpath_unique, 'public'))],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        command=['./deploy_archives.sh', util.WithProperties(os.path.join(ulpath_master, 'public'))],
</span>         name='deploy-archives',
         description=['deploying', 'public', 'archives'],
         descriptionDone=['deploy', 'public', 'archives'],
         env={'PRIVKEY': config['privkey'], 'DLHOST': dlhost, 'DLPATH': dlpath}))
     portbuilder_factory.addStep(steps.MasterShellCommand(
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        command=['./deploy_archives.sh', util.WithProperties(os.path.join(ulpath_unique, 'private'))],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        command=['./deploy_archives.sh', util.WithProperties(os.path.join(ulpath_master, 'private'))],
</span>         name='deploy-archives-private',
         description=['deploying', 'private', 'archives'],
         descriptionDone=['deploy', 'private', 'archives'],
</pre><pre style='margin:0'>

</pre>