mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-09-14 15:02:51 +03:00
checkupdates: don't fail when we can't init submodules
Later revisions might have removed the submodules so we want to keep going when there are no submodules present. We still abort when there is an error initializing submodules. Fixes fdroid/fdroidserver#231
This commit is contained in:
parent
2dcb19d392
commit
db0a97e8e7
3 changed files with 23 additions and 7 deletions
|
@ -33,7 +33,7 @@ import copy
|
|||
from . import _
|
||||
from . import common
|
||||
from . import metadata
|
||||
from .exception import VCSException, FDroidException, MetaDataException
|
||||
from .exception import VCSException, NoSubmodulesException, FDroidException, MetaDataException
|
||||
|
||||
|
||||
# Check for a new version by looking at a document retrieved via HTTP.
|
||||
|
@ -110,8 +110,7 @@ def check_tags(app, pattern):
|
|||
|
||||
last_build = app.get_last_build()
|
||||
|
||||
if last_build.submodules:
|
||||
vcs.initsubmodules()
|
||||
try_init_submodules(app, last_build, vcs)
|
||||
|
||||
hpak = None
|
||||
htag = None
|
||||
|
@ -207,8 +206,7 @@ def check_repomanifest(app, branch=None):
|
|||
if len(app.builds) > 0:
|
||||
last_build = app.builds[-1]
|
||||
|
||||
if last_build.submodules:
|
||||
vcs.initsubmodules()
|
||||
try_init_submodules(app, last_build, vcs)
|
||||
|
||||
hpak = None
|
||||
hver = None
|
||||
|
@ -300,6 +298,19 @@ def check_gplay(app):
|
|||
return (version.strip(), None)
|
||||
|
||||
|
||||
def try_init_submodules(app, last_build, vcs):
|
||||
"""Try to init submodules if the last build entry used them.
|
||||
They might have been removed from the app's repo in the meantime,
|
||||
so if we can't find any submodules we continue with the updates check.
|
||||
If there is any other error in initializing them then we stop the check.
|
||||
"""
|
||||
if last_build.submodules:
|
||||
try:
|
||||
vcs.initsubmodules()
|
||||
except NoSubmodulesException:
|
||||
logging.info("No submodules present for {}".format(app.Name))
|
||||
|
||||
|
||||
# Return all directories under startdir that contain any of the manifest
|
||||
# files, and thus are probably an Android project.
|
||||
def dirs_with_manifest(startdir):
|
||||
|
|
|
@ -53,7 +53,8 @@ from distutils.util import strtobool
|
|||
|
||||
import fdroidserver.metadata
|
||||
from fdroidserver import _
|
||||
from fdroidserver.exception import FDroidException, VCSException, BuildException, VerificationException
|
||||
from fdroidserver.exception import FDroidException, VCSException, NoSubmodulesException,\
|
||||
BuildException, VerificationException
|
||||
from .asynchronousfilereader import AsynchronousFileReader
|
||||
|
||||
|
||||
|
@ -883,7 +884,7 @@ class vcs_git(vcs):
|
|||
self.checkrepo()
|
||||
submfile = os.path.join(self.local, '.gitmodules')
|
||||
if not os.path.isfile(submfile):
|
||||
raise VCSException(_("No git submodules available"))
|
||||
raise NoSubmodulesException(_("No git submodules available"))
|
||||
|
||||
# fix submodules not accessible without an account and public key auth
|
||||
with open(submfile, 'r') as f:
|
||||
|
|
|
@ -39,6 +39,10 @@ class VCSException(FDroidException):
|
|||
pass
|
||||
|
||||
|
||||
class NoSubmodulesException(VCSException):
|
||||
pass
|
||||
|
||||
|
||||
class BuildException(FDroidException):
|
||||
pass
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue