chiark / gitweb /
Re-add NDK r12b, now fixed.
[fdroidserver.git] / fdroidserver / init.py
index 1e77e2fe5e479545c3b0164b93e1f32a354d76e2..f29b2d53891057e33bf117363c177092f677865f 100644 (file)
@@ -1,7 +1,6 @@
-#!/usr/bin/env python2
-# -*- coding: utf-8 -*-
+#!/usr/bin/env python3
 #
-# update.py - part of the FDroid server tools
+# init.py - part of the FDroid server tools
 # Copyright (C) 2010-2013, Ciaran Gultnieks, ciaran@ciarang.com
 # Copyright (C) 2013-2014 Daniel Martí <mvdan@mvdan.cc>
 # Copyright (C) 2013 Hans-Christoph Steiner <hans@eds.org>
@@ -25,10 +24,10 @@ import re
 import shutil
 import socket
 import sys
-from optparse import OptionParser
+from argparse import ArgumentParser
 import logging
 
-import common
+from . import common
 
 config = {}
 options = None
@@ -36,12 +35,12 @@ options = None
 
 def disable_in_config(key, value):
     '''write a key/value to the local config.py, then comment it out'''
-    with open('config.py', 'r') as f:
+    with open('config.py', 'r', encoding='utf8') as f:
         data = f.read()
     pattern = '\n[\s#]*' + key + '\s*=\s*"[^"]*"'
     repl = '\n#' + key + ' = "' + value + '"'
     data = re.sub(pattern, repl, data)
-    with open('config.py', 'w') as f:
+    with open('config.py', 'w', encoding='utf8') as f:
         f.writelines(data)
 
 
@@ -50,28 +49,33 @@ def main():
     global options, config
 
     # Parse command line...
-    parser = OptionParser()
-    parser.add_option("-v", "--verbose", action="store_true", default=False,
-                      help="Spew out even more information than normal")
-    parser.add_option("-q", "--quiet", action="store_true", default=False,
-                      help="Restrict output to warnings and errors")
-    parser.add_option("-d", "--distinguished-name", default=None,
-                      help="X.509 'Distiguished Name' used when generating keys")
-    parser.add_option("--keystore", default=None,
-                      help="Path to the keystore for the repo signing key")
-    parser.add_option("--repo-keyalias", default=None,
-                      help="Alias of the repo signing key in the keystore")
-    parser.add_option("--android-home", default=None,
-                      help="Path to the Android SDK (sometimes set in ANDROID_HOME)")
-    parser.add_option("--no-prompt", action="store_true", default=False,
-                      help="Do not prompt for Android SDK path, just fail")
-    (options, args) = parser.parse_args()
+    parser = ArgumentParser()
+    common.setup_global_opts(parser)
+    parser.add_argument("-d", "--distinguished-name", default=None,
+                        help="X.509 'Distiguished Name' used when generating keys")
+    parser.add_argument("--keystore", default=None,
+                        help="Path to the keystore for the repo signing key")
+    parser.add_argument("--repo-keyalias", default=None,
+                        help="Alias of the repo signing key in the keystore")
+    parser.add_argument("--android-home", default=None,
+                        help="Path to the Android SDK (sometimes set in ANDROID_HOME)")
+    parser.add_argument("--no-prompt", action="store_true", default=False,
+                        help="Do not prompt for Android SDK path, just fail")
+    options = parser.parse_args()
 
     # find root install prefix
     tmp = os.path.dirname(sys.argv[0])
+    examplesdir = None
     if os.path.basename(tmp) == 'bin':
-        prefix = os.path.dirname(tmp)
-        examplesdir = prefix + '/share/doc/fdroidserver/examples'
+        egg_link = os.path.join(tmp, '..', 'local/lib/python2.7/site-packages/fdroidserver.egg-link')
+        if os.path.exists(egg_link):
+            # installed from local git repo
+            examplesdir = os.path.join(open(egg_link).readline().rstrip(), 'examples')
+        else:
+            # try .egg layout
+            examplesdir = os.path.dirname(os.path.dirname(__file__)) + '/share/doc/fdroidserver/examples'
+            if not os.path.exists(examplesdir):  # use UNIX layout
+                examplesdir = os.path.dirname(tmp) + '/share/doc/fdroidserver/examples'
     else:
         # we're running straight out of the git repo
         prefix = os.path.normpath(os.path.join(os.path.dirname(__file__), '..'))
@@ -96,10 +100,13 @@ def main():
         else:
             # if neither --android-home nor the default sdk_path exist, prompt the user
             default_sdk_path = '/opt/android-sdk'
+            if sys.platform == 'win32' or sys.platform == 'cygwin':
+                default_sdk_path = os.path.join(os.getenv('USERPROFILE'),
+                                                'AppData', 'Local', 'Android', 'android-sdk')
             while not options.no_prompt:
                 try:
-                    s = raw_input('Enter the path to the Android SDK ('
-                                  + default_sdk_path + ') here:\n> ')
+                    s = input('Enter the path to the Android SDK ('
+                              + default_sdk_path + ') here:\n> ')
                 except KeyboardInterrupt:
                     print('')
                     sys.exit(1)
@@ -228,7 +235,7 @@ def main():
     logging.info('  Android SDK:\t\t\t' + config['sdk_path'])
     if aapt:
         logging.info('  Android SDK Build Tools:\t' + os.path.dirname(aapt))
-    logging.info('  Android NDK r10e (optional):\t$ANDROID_NDK')
+    logging.info('  Android NDK r12b (optional):\t$ANDROID_NDK')
     logging.info('  Keystore for signing key:\t' + keystore)
     if repo_keyalias is not None:
         logging.info('  Alias for key in store:\t' + repo_keyalias)