chiark / gitweb /
Merge branch 'fix-push-requests' into 'master'
authorDaniel Martí <mvdan@mvdan.cc>
Fri, 26 Aug 2016 22:26:17 +0000 (22:26 +0000)
committerDaniel Martí <mvdan@mvdan.cc>
Fri, 26 Aug 2016 22:26:17 +0000 (22:26 +0000)
Fix push requests

Two bug fixes found in the process of implementing the client side of the push requests in https://gitlab.com/fdroid/fdroidclient/merge_requests/386

This is related to !156.

See merge request !160

docs/gendocs.sh
examples/config.py
fdroidserver/update.py
tests/run-tests

index 906afa1451a88df485e13e3bb0b254cc3244bc70..c13f166b407046c40fc92974d62c31674e8acb13 100755 (executable)
@@ -273,7 +273,7 @@ echo "Making output for $srcfile"
 echo " in `pwd`"
 mkdir -p "$outdir/"
 
-taropts="--mtime=@$timestamp --mode=go=rX,u+rw,a-s"
+taropts="--mtime=@$timestamp --mode=go=rX,u+rw,a-s --sort=name"
 cmd="$SETLANG $MAKEINFO -o $PACKAGE.info $commonarg $infoarg \"$srcfile\""
 echo "Generating info... ($cmd)"
 eval "$cmd"
index d33ddfac484cd58924e1c1c035bf11f87faafcd4..43eceb1d8bd365770764b2d16df24c3bcd17a330 100644 (file)
@@ -248,9 +248,9 @@ The repository of older versions of applications from the main demo repository.
 # }
 
 # It is possible for the server operator to specify lists of apps that
-# must be installed or deleted on the client (aka "push installs).  If
-# the user has opted in, or the device is already setup to respond to
-# these requests, then fdroidclient will automatically install/delete
+# must be installed or uninstalled on the client (aka "push installs).
+# If the user has opted in, or the device is already setup to respond
+# to these requests, then F-Droid will automatically install/uninstall
 # the packageNames listed.  This is protected by the same signing key
 # as the app index metadata.
 #
@@ -260,7 +260,7 @@ The repository of older versions of applications from the main demo repository.
 #     'us.replicant',
 # }
 #
-# delete_list = {
+# uninstall_list = {
 #     'com.facebook.orca',
 #     'com.android.vending',
 # }
index 9f1ad43c0babf6b398ab6f036b9140c41dbcc178..b1ebfd350c8eae1dde8876376b57a9fd49873e9a 100644 (file)
@@ -895,11 +895,17 @@ def make_index(apps, sortedids, apks, repodir, archive, categories):
     repoel = doc.createElement("repo")
 
     mirrorcheckfailed = False
+    mirrors = []
     for mirror in config.get('mirrors', []):
         base = os.path.basename(urllib.parse.urlparse(mirror).path.rstrip('/'))
         if config.get('nonstandardwebroot') is not True and base != 'fdroid':
             logging.error("mirror '" + mirror + "' does not end with 'fdroid'!")
             mirrorcheckfailed = True
+        # must end with / or urljoin strips a whole path segment
+        if mirror.endswith('/'):
+            mirrors.append(mirror)
+        else:
+            mirrors.append(mirror + '/')
     if mirrorcheckfailed:
         sys.exit(1)
 
@@ -911,7 +917,7 @@ def make_index(apps, sortedids, apks, repodir, archive, categories):
         repoel.setAttribute("url", config['archive_url'])
         addElement('description', config['archive_description'], doc, repoel)
         urlbasepath = os.path.basename(urllib.parse.urlparse(config['archive_url']).path)
-        for mirror in config.get('mirrors', []):
+        for mirror in mirrors:
             addElement('mirror', urllib.parse.urljoin(mirror, urlbasepath), doc, repoel)
 
     else:
@@ -922,7 +928,7 @@ def make_index(apps, sortedids, apks, repodir, archive, categories):
         repoel.setAttribute("url", config['repo_url'])
         addElement('description', config['repo_description'], doc, repoel)
         urlbasepath = os.path.basename(urllib.parse.urlparse(config['repo_url']).path)
-        for mirror in config.get('mirrors', []):
+        for mirror in mirrors:
             addElement('mirror', urllib.parse.urljoin(mirror, urlbasepath), doc, repoel)
 
     repoel.setAttribute("version", str(METADATA_VERSION))
@@ -953,7 +959,7 @@ def make_index(apps, sortedids, apks, repodir, archive, categories):
     repoel.setAttribute("pubkey", extract_pubkey().decode('utf-8'))
     root.appendChild(repoel)
 
-    for command in ('install', 'delete'):
+    for command in ('install', 'uninstall'):
         packageNames = []
         key = command + '_list'
         if key in config:
index 7e0eb2aaaf29a271e543a1e6f9a0e13243c17bb7..c681a2baa845cda4b1d63a47365e9765b0099adb 100755 (executable)
@@ -147,13 +147,13 @@ $fdroid init
 cp -a $WORKSPACE/tests/metadata $WORKSPACE/tests/repo $REPOROOT/
 echo "accepted_formats = ['json', 'txt', 'xml', 'yml']" >> config.py
 echo "install_list = 'org.adaway'" >> config.py
-echo "delete_list = {'com.android.vending', 'com.facebook.orca',}" >> config.py
+echo "uninstall_list = {'com.android.vending', 'com.facebook.orca',}" >> config.py
 $fdroid update --verbose
 test -e repo/index.xml
 test -e repo/index.jar
 grep -F '<application id=' repo/index.xml > /dev/null
 grep -F '<install packageName=' repo/index.xml > /dev/null
-grep -F '<delete packageName=' repo/index.xml > /dev/null
+grep -F '<uninstall packageName=' repo/index.xml > /dev/null
 
 
 #------------------------------------------------------------------------------#