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
from . import _
from . import common
from . import metadata
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.
# Check for a new version by looking at a document retrieved via HTTP.
last_build = app.get_last_build()
last_build = app.get_last_build()
- if last_build.submodules:
- vcs.initsubmodules()
+ try_init_submodules(app, last_build, vcs)
if len(app.builds) > 0:
last_build = app.builds[-1]
if len(app.builds) > 0:
last_build = app.builds[-1]
- if last_build.submodules:
- vcs.initsubmodules()
+ try_init_submodules(app, last_build, vcs)
return (version.strip(), None)
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):
# Return all directories under startdir that contain any of the manifest
# files, and thus are probably an Android project.
def dirs_with_manifest(startdir):
import fdroidserver.metadata
from fdroidserver import _
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
from .asynchronousfilereader import AsynchronousFileReader
self.checkrepo()
submfile = os.path.join(self.local, '.gitmodules')
if not os.path.isfile(submfile):
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:
# fix submodules not accessible without an account and public key auth
with open(submfile, 'r') as f:
+class NoSubmodulesException(VCSException):
+ pass
+
+
class BuildException(FDroidException):
pass
class BuildException(FDroidException):
pass