mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-11-09 00:40:11 +01:00
Merge branch 'debug-builds' into 'master'
support plain paths as a serverwebroot For use cases where there is a web server running on the same machine where the `fdroid update` is being run, allow plain paths in the serverwebroot list. This is useful for debug repos from build servers, like: https://dev.guardianproject.info/fdroid This also includes small change in the `fdroid server update` delete behavior: it delays the delete phase until after the new APKs are uploaded. This is keep things working for a long as possible while the repo is being updated. See merge request !49
This commit is contained in:
commit
82ab109066
@ -123,7 +123,7 @@ def update_awsbucket(repo_section):
|
|||||||
def update_serverwebroot(serverwebroot, repo_section):
|
def update_serverwebroot(serverwebroot, repo_section):
|
||||||
# use a checksum comparison for accurate comparisons on different
|
# use a checksum comparison for accurate comparisons on different
|
||||||
# filesystems, for example, FAT has a low resolution timestamp
|
# filesystems, for example, FAT has a low resolution timestamp
|
||||||
rsyncargs = ['rsync', '--archive', '--delete', '--safe-links']
|
rsyncargs = ['rsync', '--archive', '--delete-after', '--safe-links']
|
||||||
if not options.no_checksum:
|
if not options.no_checksum:
|
||||||
rsyncargs.append('--checksum')
|
rsyncargs.append('--checksum')
|
||||||
if options.verbose:
|
if options.verbose:
|
||||||
@ -136,13 +136,14 @@ def update_serverwebroot(serverwebroot, repo_section):
|
|||||||
rsyncargs += ['-e', 'ssh -i ' + config['identity_file']]
|
rsyncargs += ['-e', 'ssh -i ' + config['identity_file']]
|
||||||
indexxml = os.path.join(repo_section, 'index.xml')
|
indexxml = os.path.join(repo_section, 'index.xml')
|
||||||
indexjar = os.path.join(repo_section, 'index.jar')
|
indexjar = os.path.join(repo_section, 'index.jar')
|
||||||
# upload the first time without the index so that the repo stays working
|
# Upload the first time without the index files and delay the deletion as
|
||||||
# while this update is running. Then once it is complete, rerun the
|
# much as possible, that keeps the repo functional while this update is
|
||||||
# command again to upload the index. Always using the same target with
|
# running. Then once it is complete, rerun the command again to upload
|
||||||
# rsync allows for very strict settings on the receiving server, you can
|
# the index files. Always using the same target with rsync allows for
|
||||||
# literally specify the one rsync command that is allowed to run in
|
# very strict settings on the receiving server, you can literally specify
|
||||||
# ~/.ssh/authorized_keys. (serverwebroot is guaranteed to have a trailing
|
# the one rsync command that is allowed to run in ~/.ssh/authorized_keys.
|
||||||
# slash in common.py)
|
# (serverwebroot is guaranteed to have a trailing slash in common.py)
|
||||||
|
logging.info('rsyncing ' + repo_section + ' to ' + serverwebroot)
|
||||||
if subprocess.call(rsyncargs +
|
if subprocess.call(rsyncargs +
|
||||||
['--exclude', indexxml, '--exclude', indexjar,
|
['--exclude', indexxml, '--exclude', indexjar,
|
||||||
repo_section, serverwebroot]) != 0:
|
repo_section, serverwebroot]) != 0:
|
||||||
@ -225,7 +226,15 @@ def main():
|
|||||||
standardwebroot = True
|
standardwebroot = True
|
||||||
|
|
||||||
for serverwebroot in config.get('serverwebroot', []):
|
for serverwebroot in config.get('serverwebroot', []):
|
||||||
host, fdroiddir = serverwebroot.rstrip('/').split(':')
|
# this supports both an ssh host:path and just a path
|
||||||
|
s = serverwebroot.rstrip('/').split(':')
|
||||||
|
if len(s) == 1:
|
||||||
|
fdroiddir = s[0]
|
||||||
|
elif len(s) == 2:
|
||||||
|
host, fdroiddir = s
|
||||||
|
else:
|
||||||
|
logging.error('Malformed serverwebroot line: ' + serverwebroot)
|
||||||
|
sys.exit(1)
|
||||||
repobase = os.path.basename(fdroiddir)
|
repobase = os.path.basename(fdroiddir)
|
||||||
if standardwebroot and repobase != 'fdroid':
|
if standardwebroot and repobase != 'fdroid':
|
||||||
logging.error('serverwebroot path does not end with "fdroid", '
|
logging.error('serverwebroot path does not end with "fdroid", '
|
||||||
|
Loading…
Reference in New Issue
Block a user