Initial code commit

This commit is contained in:
Akinwale Ariwodola 2018-06-02 22:05:08 +01:00
parent 4ad6c33948
commit 03d218680e
29 changed files with 10024 additions and 0 deletions

4
.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
.DS_Store
*.swp
*.lock
profile

3
lbry-ios/.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
lbry.xcodeproj/*.backup
lbry.xcodeproj/project.xcworkspace/
lbry.xcodeproj/xcuserdata/

19
lbry-ios/AppDelegate.h Normal file
View file

@ -0,0 +1,19 @@
//
// AppDelegate.h
// lbry
//
// Created by Akinwale Ariwodola on 31/05/2018.
//
#import <UIKit/UIKit.h>
#include "../../kivy-ios/build/sdl2/arm64/SDL2-2.0.5/src/video/uikit/SDL_uikitappdelegate.h"
@interface AppDelegate : SDLUIKitDelegate {
UIWindow *window;
}
@property (strong, nonatomic, retain) UIWindow *window;
@end

83
lbry-ios/AppDelegate.m Normal file
View file

@ -0,0 +1,83 @@
//
// AppDelegate.m
// lbry
//
// Created by Akinwale Ariwodola on 01/06/2018.
//
#import "AppDelegate.h"
#import "MainViewController.h"
#include "../../kivy-ios/dist/include/common/sdl2/SDL_main.h"
#include "../../kivy-ios/dist/include/common/sdl2/SDL_system.h"
@implementation SDLUIKitDelegate (customDelegate)
// replace SDLUIKitDelegate with our app delegate
+(NSString *)getAppDelegateClassName {
return @"AppDelegate";
}
@end
@interface AppDelegate ()
@end
@implementation AppDelegate
@synthesize window;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
SDL_SetMainReady();
[self performSelector:@selector(postFinishLaunch) withObject:nil afterDelay:0.0];
return YES;
}
// override SDL postFinishLaunch
- (void)postFinishLaunch {
/* run the actual application (in this case, Python main) */
SDL_iPhoneSetEventPump(SDL_TRUE);
SDL_main(0, nil);
SDL_iPhoneSetEventPump(SDL_FALSE);
// show main view
MainViewController *viewController = [[MainViewController alloc] initWithNibName:@"MainView" bundle:nil];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = viewController;
[viewController release];
[self.window makeKeyAndVisible];
}
- (void)applicationWillResignActive:(UIApplication *)application {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
- (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
@end

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

33
lbry-ios/MainView.xib Normal file
View file

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14113" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MainViewController">
<connections>
<outlet property="view" destination="iN0-l3-epB" id="Mpg-a1-AjO"/>
</connections>
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="iN0-l3-epB">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="LBRY" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Sua-GE-mVw">
<rect key="frame" x="24" y="30" width="42" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</view>
</objects>
</document>

View file

@ -0,0 +1,13 @@
//
// MainViewController.h
// lbry
//
// Created by Akinwale Ariwodola on 01/06/2018.
//
#import <UIKit/UIKit.h>
@interface MainViewController : UIViewController
@end

View file

@ -0,0 +1,28 @@
//
// ViewController.m
// lbry
//
// Created by Akinwale Ariwodola on 01/06/2018.
//
#import "MainViewController.h"
@interface MainViewController ()
@end
@implementation MainViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end

File diff suppressed because it is too large Load diff

BIN
lbry-ios/PythonApp/main.pyo Normal file

Binary file not shown.

21
lbry-ios/bridge.h Normal file
View file

@ -0,0 +1,21 @@
#import <Foundation/Foundation.h>
#import <CoreMotion/CoreMotion.h>
@interface bridge : NSObject {
NSOperationQueue *queue;
}
@property (strong, nonatomic) CMMotionManager *motionManager;
@property (nonatomic) double ac_x;
@property (nonatomic) double ac_y;
@property (nonatomic) double ac_z;
@property (nonatomic) double gy_x;
@property (nonatomic) double gy_y;
@property (nonatomic) double gy_z;
@property (nonatomic) double mg_x;
@property (nonatomic) double mg_y;
@property (nonatomic) double mg_z;
@end

64
lbry-ios/bridge.m Normal file
View file

@ -0,0 +1,64 @@
#import "bridge.h"
@implementation bridge
- (id) init {
if(self = [super init]) {
self.motionManager = [[CMMotionManager alloc] init];
queue = [[NSOperationQueue alloc] init];
}
return self;
}
- (void)startAccelerometer {
if ([self.motionManager isAccelerometerAvailable] == YES) {
[self.motionManager startAccelerometerUpdatesToQueue:queue withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
self.ac_x = accelerometerData.acceleration.x;
self.ac_y = accelerometerData.acceleration.y;
self.ac_z = accelerometerData.acceleration.z;
}];
}
}
- (void)startGyroscope {
if ([self.motionManager isGyroAvailable] == YES) {
[self.motionManager startGyroUpdatesToQueue:queue withHandler:^(CMGyroData *gyroData, NSError *error) {
self.gy_x = gyroData.rotationRate.x;
self.gy_y = gyroData.rotationRate.y;
self.gy_z = gyroData.rotationRate.z;
}];
}
}
- (void)startMagnetometer {
if (self.motionManager.magnetometerAvailable) {
[self.motionManager startMagnetometerUpdatesToQueue:queue withHandler:^(CMMagnetometerData *magnetometerData, NSError *error) {
self.mg_x = magnetometerData.magneticField.x;
self.mg_y = magnetometerData.magneticField.y;
self.mg_z = magnetometerData.magneticField.z;
}];
}
}
- (void) stopAccelerometer {
[self.motionManager stopAccelerometerUpdates];
}
- (void) stopGyroscope {
[self.motionManager stopGyroUpdates];
}
- (void) stopMagnetometer {
[self.motionManager stopMagnetometerUpdates];
}
- (void) dealloc {
[self.motionManager release];
[queue release];
[super dealloc];
}
@end

BIN
lbry-ios/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

44
lbry-ios/lbry-Info.plist Normal file
View file

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIcons</key>
<dict/>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.1</string>
<key>CFBundleVersion</key>
<string>1.1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIStatusBarHidden</key>
<true/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>

View file

@ -0,0 +1,585 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
01532DAA137C099F0076F6BF /* icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 01532DA9137C099F0076F6BF /* icon.png */; };
0D4F4378B339AD7BACA6FA6B /* libsdl2_ttf.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B05349ADB2C6E4ED29FB1014 /* libsdl2_ttf.a */; };
19054D5887DF1D0B8681597E /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A3034879BF61804CA39C5C38 /* CoreGraphics.framework */; };
1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
1F3D43E2B259DAE44B6E7C7F /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B142452AB6DEFF9584F96075 /* Accelerate.framework */; };
2AF14BF6B986E9F5E921841E /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5E64F768264087E92C15ECE /* ImageIO.framework */; };
2CB5F34717D5233A006187AB /* bridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CB5F34617D5233A006187AB /* bridge.m */; };
36A14DDEBC4155B95FBC88F8 /* libpython.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D8145F89FA2B0650079E1F7 /* libpython.a */; };
39D340808C2BE2A19DF56743 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7174C8787F6F59D3AB04A70 /* UIKit.framework */; };
424C45FEA6E9F6586C4EDFDD /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50BA49D19A5346D822EAA958 /* MessageUI.framework */; };
59738AB51A8BB5D8001B2C0C /* lib in Resources */ = {isa = PBXBuildFile; fileRef = 59738AB41A8BB5D8001B2C0C /* lib */; };
59738AB71A8BB71F001B2C0C /* include in Resources */ = {isa = PBXBuildFile; fileRef = 59738AB61A8BB71F001B2C0C /* include */; };
59738ABB1A8E19AA001B2C0C /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 59738ABA1A8E19AA001B2C0C /* Images.xcassets */; };
59738ADB1A8E62D6001B2C0C /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59738AD01A8E62D6001B2C0C /* Default-568h@2x.png */; };
59738ADC1A8E62D6001B2C0C /* Default-667h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59738AD11A8E62D6001B2C0C /* Default-667h@2x.png */; };
59738ADD1A8E62D6001B2C0C /* Default-763h@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59738AD21A8E62D6001B2C0C /* Default-763h@3x.png */; };
59738ADE1A8E62D6001B2C0C /* Default-Landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 59738AD31A8E62D6001B2C0C /* Default-Landscape.png */; };
59738ADF1A8E62D6001B2C0C /* Default-Landscape@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59738AD41A8E62D6001B2C0C /* Default-Landscape@2x.png */; };
59738AE01A8E62D6001B2C0C /* Default-Portrait.png in Resources */ = {isa = PBXBuildFile; fileRef = 59738AD51A8E62D6001B2C0C /* Default-Portrait.png */; };
59738AE11A8E62D6001B2C0C /* Default-Portrait@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 59738AD61A8E62D6001B2C0C /* Default-Portrait@2x~ipad.png */; };
59738AE21A8E62D6001B2C0C /* Default-Portrait@3x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 59738AD71A8E62D6001B2C0C /* Default-Portrait@3x~ipad.png */; };
59738AE31A8E62D6001B2C0C /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 59738AD81A8E62D6001B2C0C /* Default.png */; };
59738AE41A8E62D6001B2C0C /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59738AD91A8E62D6001B2C0C /* Default@2x.png */; };
59738AE51A8E62D6001B2C0C /* Default@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59738ADA1A8E62D6001B2C0C /* Default@3x.png */; };
5F18433484A551DA881BDE93 /* libsdl2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 95854603AE9182C63C3EF7D5 /* libsdl2.a */; };
640019E820C28A6600E0A506 /* libcffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 640019E720C28A6300E0A506 /* libcffi.a */; };
640019EA20C28A7E00E0A506 /* libcryptography.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 640019E920C28A7A00E0A506 /* libcryptography.a */; };
640019EC20C28A9C00E0A506 /* libminiupnpc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 640019EB20C28A9900E0A506 /* libminiupnpc.a */; };
640019EE20C28AB200E0A506 /* libtwisted.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 640019ED20C28AB000E0A506 /* libtwisted.a */; };
6408B3A120C1FBFD00070CB1 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6408B3A020C1FBFD00070CB1 /* libssl.a */; };
6408B3A320C1FC1900070CB1 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6408B3A220C1FC1800070CB1 /* libcrypto.a */; };
6484B78D20C10DA500062902 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 6484B78C20C10DA500062902 /* libsqlite3.tbd */; };
6484B78F20C10E8800062902 /* libsdl2_mixer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6484B78E20C10E8800062902 /* libsdl2_mixer.a */; };
6484B79120C111D700062902 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 6484B79020C111D700062902 /* libz.tbd */; };
6484B79320C111DF00062902 /* libbz2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 6484B79220C111DF00062902 /* libbz2.tbd */; };
6484B79520C111E800062902 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 6484B79420C111E800062902 /* libc++.tbd */; };
6484B79720C1189D00062902 /* PythonApp in Resources */ = {isa = PBXBuildFile; fileRef = 6484B79620C1189D00062902 /* PythonApp */; };
6484B79A20C1199300062902 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6484B79920C1199300062902 /* AppDelegate.m */; };
6484B79E20C121CB00062902 /* MainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6484B79D20C121CB00062902 /* MainView.xib */; };
6484B7A120C1226800062902 /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6484B7A020C1226800062902 /* MainViewController.m */; };
6484B7A320C1369900062902 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6484B7A220C1369800062902 /* AVFoundation.framework */; };
6484B7A520C136A400062902 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6484B7A420C136A400062902 /* GameController.framework */; };
74FC4519BE8A52928723F3BD /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 776F4735AF8FD89B15D2A2EA /* libffi.a */; };
763E468093A6B581FB136AA8 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D134B7E96BC4F8CA2E29A08 /* OpenGLES.framework */; };
76E3404ABAC3FEB4A2210148 /* libkivy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D6646679B5C9694F71466E9 /* libkivy.a */; };
797C465C950F0D2054FA090E /* libfreetype.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E2B4012A581F4EBCED8E0F5 /* libfreetype.a */; };
82144E24968888DD90546987 /* libsdl2_image.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C949404D8486ED51E7863BBD /* libsdl2_image.a */; };
9255440A8DB1ED47D6FEAC83 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1CB403596228F246B0F9D23 /* QuartzCore.framework */; };
96334DE2901260FA1326FA28 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C820486F93F25A4037C1A4AD /* MobileCoreServices.framework */; };
B5F14C1CADABEB6644915745 /* libpyobjus.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 14F74F4A953FC56F0C2C36A8 /* libpyobjus.a */; };
BD3F447385625DC5E0566EBE /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4E03432BA4C60C15163576F9 /* CoreMotion.framework */; };
D0474458869A101539DB5A09 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 622C4DB6B6A2A8672B21818C /* AudioToolbox.framework */; };
EC9647E0AF68DBE8F320F021 /* libios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F334D5ABE6A667194F22D46 /* libios.a */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
01532DA9137C099F0076F6BF /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = "<group>"; };
14F74F4A953FC56F0C2C36A8 /* libpyobjus.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpyobjus.a; path = "../../kivy-ios/dist/lib/libpyobjus.a"; sourceTree = SOURCE_ROOT; };
1D6058910D05DD3D006BFB54 /* lbry.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = lbry.app; sourceTree = BUILT_PRODUCTS_DIR; };
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
2CB5F34517D5233A006187AB /* bridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bridge.h; sourceTree = SOURCE_ROOT; };
2CB5F34617D5233A006187AB /* bridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = bridge.m; sourceTree = SOURCE_ROOT; };
4D6646679B5C9694F71466E9 /* libkivy.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libkivy.a; path = "../../kivy-ios/dist/lib/libkivy.a"; sourceTree = SOURCE_ROOT; };
4E03432BA4C60C15163576F9 /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.4.sdk/System/Library/Frameworks/CoreMotion.framework; sourceTree = "<absolute>"; };
50BA49D19A5346D822EAA958 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.4.sdk/System/Library/Frameworks/MessageUI.framework; sourceTree = "<absolute>"; };
59738AB41A8BB5D8001B2C0C /* lib */ = {isa = PBXFileReference; lastKnownFileType = folder; name = lib; path = "/Users/akinwale/Dev/Python/kivy-ios/dist/root/python/lib"; sourceTree = "<group>"; };
59738AB61A8BB71F001B2C0C /* include */ = {isa = PBXFileReference; lastKnownFileType = folder; name = include; path = "/Users/akinwale/Dev/Python/kivy-ios/dist/hostpython/include"; sourceTree = "<group>"; };
59738ABA1A8E19AA001B2C0C /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = lbry/Images.xcassets; sourceTree = "<group>"; };
59738AD01A8E62D6001B2C0C /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-568h@2x.png"; path = "LaunchImages/Default-568h@2x.png"; sourceTree = "<group>"; };
59738AD11A8E62D6001B2C0C /* Default-667h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-667h@2x.png"; path = "LaunchImages/Default-667h@2x.png"; sourceTree = "<group>"; };
59738AD21A8E62D6001B2C0C /* Default-763h@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-763h@3x.png"; path = "LaunchImages/Default-763h@3x.png"; sourceTree = "<group>"; };
59738AD31A8E62D6001B2C0C /* Default-Landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-Landscape.png"; path = "LaunchImages/Default-Landscape.png"; sourceTree = "<group>"; };
59738AD41A8E62D6001B2C0C /* Default-Landscape@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-Landscape@2x.png"; path = "LaunchImages/Default-Landscape@2x.png"; sourceTree = "<group>"; };
59738AD51A8E62D6001B2C0C /* Default-Portrait.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-Portrait.png"; path = "LaunchImages/Default-Portrait.png"; sourceTree = "<group>"; };
59738AD61A8E62D6001B2C0C /* Default-Portrait@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-Portrait@2x~ipad.png"; path = "LaunchImages/Default-Portrait@2x~ipad.png"; sourceTree = "<group>"; };
59738AD71A8E62D6001B2C0C /* Default-Portrait@3x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-Portrait@3x~ipad.png"; path = "LaunchImages/Default-Portrait@3x~ipad.png"; sourceTree = "<group>"; };
59738AD81A8E62D6001B2C0C /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Default.png; path = LaunchImages/Default.png; sourceTree = "<group>"; };
59738AD91A8E62D6001B2C0C /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default@2x.png"; path = "LaunchImages/Default@2x.png"; sourceTree = "<group>"; };
59738ADA1A8E62D6001B2C0C /* Default@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default@3x.png"; path = "LaunchImages/Default@3x.png"; sourceTree = "<group>"; };
5D134B7E96BC4F8CA2E29A08 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.4.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = "<absolute>"; };
5D8145F89FA2B0650079E1F7 /* libpython.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpython.a; path = "../../kivy-ios/dist/lib/libpython.a"; sourceTree = SOURCE_ROOT; };
622C4DB6B6A2A8672B21818C /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.4.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = "<absolute>"; };
640019E720C28A6300E0A506 /* libcffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcffi.a; path = "../../kivy-ios/dist/lib/libcffi.a"; sourceTree = "<group>"; };
640019E920C28A7A00E0A506 /* libcryptography.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcryptography.a; path = "../../kivy-ios/dist/lib/libcryptography.a"; sourceTree = "<group>"; };
640019EB20C28A9900E0A506 /* libminiupnpc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libminiupnpc.a; path = "../../kivy-ios/dist/lib/libminiupnpc.a"; sourceTree = "<group>"; };
640019ED20C28AB000E0A506 /* libtwisted.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtwisted.a; path = "../../kivy-ios/dist/lib/libtwisted.a"; sourceTree = "<group>"; };
6408B39E20C1FBD100070CB1 /* kivy-ios */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "kivy-ios"; path = "../../kivy-ios"; sourceTree = "<group>"; };
6408B3A020C1FBFD00070CB1 /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = "../../kivy-ios/dist/lib/libssl.a"; sourceTree = "<group>"; };
6408B3A220C1FC1800070CB1 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = "../../kivy-ios/dist/lib/libcrypto.a"; sourceTree = "<group>"; };
6484B78C20C10DA500062902 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.4.sdk/usr/lib/libsqlite3.tbd; sourceTree = DEVELOPER_DIR; };
6484B78E20C10E8800062902 /* libsdl2_mixer.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libsdl2_mixer.a; path = "../../kivy-ios/dist/lib/libsdl2_mixer.a"; sourceTree = "<group>"; };
6484B79020C111D700062902 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.4.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; };
6484B79220C111DF00062902 /* libbz2.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libbz2.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.4.sdk/usr/lib/libbz2.tbd; sourceTree = DEVELOPER_DIR; };
6484B79420C111E800062902 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.4.sdk/usr/lib/libc++.tbd"; sourceTree = DEVELOPER_DIR; };
6484B79620C1189D00062902 /* PythonApp */ = {isa = PBXFileReference; lastKnownFileType = folder; path = PythonApp; sourceTree = "<group>"; };
6484B79820C1197200062902 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
6484B79920C1199300062902 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
6484B79D20C121CB00062902 /* MainView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainView.xib; sourceTree = "<group>"; };
6484B79F20C1224A00062902 /* MainViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MainViewController.h; sourceTree = "<group>"; };
6484B7A020C1226800062902 /* MainViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MainViewController.m; sourceTree = "<group>"; };
6484B7A220C1369800062902 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.4.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; };
6484B7A420C136A400062902 /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.4.sdk/System/Library/Frameworks/GameController.framework; sourceTree = DEVELOPER_DIR; };
6F334D5ABE6A667194F22D46 /* libios.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libios.a; path = "../../kivy-ios/dist/lib/libios.a"; sourceTree = SOURCE_ROOT; };
776F4735AF8FD89B15D2A2EA /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libffi.a; path = "../../kivy-ios/dist/lib/libffi.a"; sourceTree = SOURCE_ROOT; };
7E2B4012A581F4EBCED8E0F5 /* libfreetype.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libfreetype.a; path = "../../kivy-ios/dist/lib/libfreetype.a"; sourceTree = SOURCE_ROOT; };
8D1107310486CEB800E47090 /* lbry-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "lbry-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = "<group>"; };
95854603AE9182C63C3EF7D5 /* libsdl2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libsdl2.a; path = "../../kivy-ios/dist/lib/libsdl2.a"; sourceTree = SOURCE_ROOT; };
A1CB403596228F246B0F9D23 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.4.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = "<absolute>"; };
A3034879BF61804CA39C5C38 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.4.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = "<absolute>"; };
B05349ADB2C6E4ED29FB1014 /* libsdl2_ttf.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libsdl2_ttf.a; path = "../../kivy-ios/dist/lib/libsdl2_ttf.a"; sourceTree = SOURCE_ROOT; };
B142452AB6DEFF9584F96075 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.4.sdk/System/Library/Frameworks/Accelerate.framework; sourceTree = "<absolute>"; };
B7174C8787F6F59D3AB04A70 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.4.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = "<absolute>"; };
C5E64F768264087E92C15ECE /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.4.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = "<absolute>"; };
C820486F93F25A4037C1A4AD /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.4.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = "<absolute>"; };
C949404D8486ED51E7863BBD /* libsdl2_image.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libsdl2_image.a; path = "../../kivy-ios/dist/lib/libsdl2_image.a"; sourceTree = SOURCE_ROOT; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
6484B7A320C1369900062902 /* AVFoundation.framework in Frameworks */,
D0474458869A101539DB5A09 /* AudioToolbox.framework in Frameworks */,
2AF14BF6B986E9F5E921841E /* ImageIO.framework in Frameworks */,
6484B7A520C136A400062902 /* GameController.framework in Frameworks */,
424C45FEA6E9F6586C4EDFDD /* MessageUI.framework in Frameworks */,
39D340808C2BE2A19DF56743 /* UIKit.framework in Frameworks */,
763E468093A6B581FB136AA8 /* OpenGLES.framework in Frameworks */,
BD3F447385625DC5E0566EBE /* CoreMotion.framework in Frameworks */,
96334DE2901260FA1326FA28 /* MobileCoreServices.framework in Frameworks */,
19054D5887DF1D0B8681597E /* CoreGraphics.framework in Frameworks */,
1F3D43E2B259DAE44B6E7C7F /* Accelerate.framework in Frameworks */,
9255440A8DB1ED47D6FEAC83 /* QuartzCore.framework in Frameworks */,
6484B79320C111DF00062902 /* libbz2.tbd in Frameworks */,
6484B79520C111E800062902 /* libc++.tbd in Frameworks */,
6484B79120C111D700062902 /* libz.tbd in Frameworks */,
640019E820C28A6600E0A506 /* libcffi.a in Frameworks */,
6408B3A320C1FC1900070CB1 /* libcrypto.a in Frameworks */,
640019EA20C28A7E00E0A506 /* libcryptography.a in Frameworks */,
6408B3A120C1FBFD00070CB1 /* libssl.a in Frameworks */,
6484B78D20C10DA500062902 /* libsqlite3.tbd in Frameworks */,
EC9647E0AF68DBE8F320F021 /* libios.a in Frameworks */,
640019EC20C28A9C00E0A506 /* libminiupnpc.a in Frameworks */,
B5F14C1CADABEB6644915745 /* libpyobjus.a in Frameworks */,
74FC4519BE8A52928723F3BD /* libffi.a in Frameworks */,
76E3404ABAC3FEB4A2210148 /* libkivy.a in Frameworks */,
797C465C950F0D2054FA090E /* libfreetype.a in Frameworks */,
36A14DDEBC4155B95FBC88F8 /* libpython.a in Frameworks */,
5F18433484A551DA881BDE93 /* libsdl2.a in Frameworks */,
82144E24968888DD90546987 /* libsdl2_image.a in Frameworks */,
6484B78F20C10E8800062902 /* libsdl2_mixer.a in Frameworks */,
0D4F4378B339AD7BACA6FA6B /* libsdl2_ttf.a in Frameworks */,
640019EE20C28AB200E0A506 /* libtwisted.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
080E96DDFE201D6D7F000001 /* Classes */ = {
isa = PBXGroup;
children = (
2CB5F34517D5233A006187AB /* bridge.h */,
2CB5F34617D5233A006187AB /* bridge.m */,
);
path = Classes;
sourceTree = "<group>";
};
19C28FACFE9D520D11CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
1D6058910D05DD3D006BFB54 /* lbry.app */,
);
name = Products;
sourceTree = "<group>";
};
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
isa = PBXGroup;
children = (
080E96DDFE201D6D7F000001 /* Classes */,
29B97315FDCFA39411CA2CEA /* Sources */,
29B97317FDCFA39411CA2CEA /* Resources */,
29B97323FDCFA39411CA2CEA /* Frameworks */,
19C28FACFE9D520D11CA2CBB /* Products */,
);
name = CustomTemplate;
sourceTree = "<group>";
};
29B97315FDCFA39411CA2CEA /* Sources */ = {
isa = PBXGroup;
children = (
6484B79620C1189D00062902 /* PythonApp */,
29B97316FDCFA39411CA2CEA /* main.m */,
6484B79820C1197200062902 /* AppDelegate.h */,
6484B79920C1199300062902 /* AppDelegate.m */,
6484B79D20C121CB00062902 /* MainView.xib */,
6484B79F20C1224A00062902 /* MainViewController.h */,
6484B7A020C1226800062902 /* MainViewController.m */,
);
name = Sources;
sourceTree = "<group>";
};
29B97317FDCFA39411CA2CEA /* Resources */ = {
isa = PBXGroup;
children = (
59738ABA1A8E19AA001B2C0C /* Images.xcassets */,
59738AB61A8BB71F001B2C0C /* include */,
59738AB41A8BB5D8001B2C0C /* lib */,
01532DA9137C099F0076F6BF /* icon.png */,
8D1107310486CEB800E47090 /* lbry-Info.plist */,
59738AD01A8E62D6001B2C0C /* Default-568h@2x.png */,
59738AD11A8E62D6001B2C0C /* Default-667h@2x.png */,
59738AD21A8E62D6001B2C0C /* Default-763h@3x.png */,
59738AD31A8E62D6001B2C0C /* Default-Landscape.png */,
59738AD41A8E62D6001B2C0C /* Default-Landscape@2x.png */,
59738AD51A8E62D6001B2C0C /* Default-Portrait.png */,
59738AD61A8E62D6001B2C0C /* Default-Portrait@2x~ipad.png */,
59738AD71A8E62D6001B2C0C /* Default-Portrait@3x~ipad.png */,
59738AD81A8E62D6001B2C0C /* Default.png */,
59738AD91A8E62D6001B2C0C /* Default@2x.png */,
59738ADA1A8E62D6001B2C0C /* Default@3x.png */,
);
name = Resources;
sourceTree = "<group>";
};
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
isa = PBXGroup;
children = (
640019ED20C28AB000E0A506 /* libtwisted.a */,
640019EB20C28A9900E0A506 /* libminiupnpc.a */,
640019E920C28A7A00E0A506 /* libcryptography.a */,
640019E720C28A6300E0A506 /* libcffi.a */,
6408B3A220C1FC1800070CB1 /* libcrypto.a */,
6408B3A020C1FBFD00070CB1 /* libssl.a */,
6408B39E20C1FBD100070CB1 /* kivy-ios */,
6484B7A420C136A400062902 /* GameController.framework */,
6484B7A220C1369800062902 /* AVFoundation.framework */,
6484B79420C111E800062902 /* libc++.tbd */,
6484B79220C111DF00062902 /* libbz2.tbd */,
6484B79020C111D700062902 /* libz.tbd */,
6484B78E20C10E8800062902 /* libsdl2_mixer.a */,
6484B78C20C10DA500062902 /* libsqlite3.tbd */,
622C4DB6B6A2A8672B21818C /* AudioToolbox.framework */,
C5E64F768264087E92C15ECE /* ImageIO.framework */,
50BA49D19A5346D822EAA958 /* MessageUI.framework */,
B7174C8787F6F59D3AB04A70 /* UIKit.framework */,
5D134B7E96BC4F8CA2E29A08 /* OpenGLES.framework */,
4E03432BA4C60C15163576F9 /* CoreMotion.framework */,
C820486F93F25A4037C1A4AD /* MobileCoreServices.framework */,
A3034879BF61804CA39C5C38 /* CoreGraphics.framework */,
B142452AB6DEFF9584F96075 /* Accelerate.framework */,
A1CB403596228F246B0F9D23 /* QuartzCore.framework */,
C949404D8486ED51E7863BBD /* libsdl2_image.a */,
6F334D5ABE6A667194F22D46 /* libios.a */,
14F74F4A953FC56F0C2C36A8 /* libpyobjus.a */,
776F4735AF8FD89B15D2A2EA /* libffi.a */,
4D6646679B5C9694F71466E9 /* libkivy.a */,
7E2B4012A581F4EBCED8E0F5 /* libfreetype.a */,
5D8145F89FA2B0650079E1F7 /* libpython.a */,
95854603AE9182C63C3EF7D5 /* libsdl2.a */,
B05349ADB2C6E4ED29FB1014 /* libsdl2_ttf.a */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
1D6058900D05DD3D006BFB54 /* lbry */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "lbry" */;
buildPhases = (
113D17E2153E3DB5001310A5 /* ShellScript */,
113D17E2153E3DB5001310A6 /* ShellScript */,
113D17E2153E3DB5001310A7 /* ShellScript */,
1D60588D0D05DD3D006BFB54 /* Resources */,
1D60588E0D05DD3D006BFB54 /* Sources */,
1D60588F0D05DD3D006BFB54 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = lbry;
productName = lbry;
productReference = 1D6058910D05DD3D006BFB54 /* lbry.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0940;
};
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "lbry" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
);
mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
projectDirPath = "";
projectRoot = "";
targets = (
1D6058900D05DD3D006BFB54 /* lbry */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
1D60588D0D05DD3D006BFB54 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
59738AE41A8E62D6001B2C0C /* Default@2x.png in Resources */,
6484B79E20C121CB00062902 /* MainView.xib in Resources */,
59738AB51A8BB5D8001B2C0C /* lib in Resources */,
59738ABB1A8E19AA001B2C0C /* Images.xcassets in Resources */,
59738ADE1A8E62D6001B2C0C /* Default-Landscape.png in Resources */,
59738AE31A8E62D6001B2C0C /* Default.png in Resources */,
01532DAA137C099F0076F6BF /* icon.png in Resources */,
59738AE11A8E62D6001B2C0C /* Default-Portrait@2x~ipad.png in Resources */,
6484B79720C1189D00062902 /* PythonApp in Resources */,
59738AE01A8E62D6001B2C0C /* Default-Portrait.png in Resources */,
59738ADC1A8E62D6001B2C0C /* Default-667h@2x.png in Resources */,
59738ADB1A8E62D6001B2C0C /* Default-568h@2x.png in Resources */,
59738ADD1A8E62D6001B2C0C /* Default-763h@3x.png in Resources */,
59738AE21A8E62D6001B2C0C /* Default-Portrait@3x~ipad.png in Resources */,
59738AB71A8BB71F001B2C0C /* include in Resources */,
59738AE51A8E62D6001B2C0C /* Default@3x.png in Resources */,
59738ADF1A8E62D6001B2C0C /* Default-Landscape@2x.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
113D17E2153E3DB5001310A5 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 12;
files = (
);
inputPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/bash;
shellScript = "rsync -av --delete \"/Users/akinwale/Dev/Python/lbry-ios/src/main/python\"/ \"$PROJECT_DIR\"/PythonApp";
};
113D17E2153E3DB5001310A6 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 12;
files = (
);
inputPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/bash;
shellScript = "if [ $arch = \"arm64\" ]; then export local_arch=\"aarch64\"; elif [ $arch = \"armv7\" ]; then export local_arch=\"arm\"; else export local_arch=$arch; fi; export PYTHONPATH=/Users/akinwale/Dev/Python/kivy-ios/dist/../build/python/$arch/Python-2.7.13/build/lib.darwin-$local_arch-2.7; /Users/akinwale/Dev/Python/kivy-ios/dist/hostpython/bin/python -OO -m compileall \"$PROJECT_DIR\"/PythonApp";
};
113D17E2153E3DB5001310A7 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 12;
files = (
);
inputPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/bash;
shellScript = "find \"$PROJECT_DIR\"/PythonApp/ -iname '*.py' -exec rm {} \\; -or -iname '*.pyc' -exec rm {} \\;";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
1D60588E0D05DD3D006BFB54 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
1D60589B0D05DD56006BFB54 /* main.m in Sources */,
2CB5F34717D5233A006187AB /* bridge.m in Sources */,
6484B7A120C1226800062902 /* MainViewController.m in Sources */,
6484B79A20C1199300062902 /* AppDelegate.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
1D6058940D05DD3E006BFB54 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_OBJC_WEAK = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
FRAMEWORK_SEARCH_PATHS = "/Users/akinwale/Dev/Python/kivy-ios/dist/frameworks";
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "";
GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = (
"/Users/akinwale/Dev/Python/kivy-ios/dist/root/python/include",
"/Users/akinwale/Dev/Python/kivy-ios/dist/include/common/sdl2",
);
INFOPLIST_FILE = "lbry-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 8.1;
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"/Users/akinwale/Dev/Python/kivy-ios/dist/lib",
"\"$(SRCROOT)/../../kivy-ios/dist/lib\"",
);
ONLY_ACTIVE_ARCH = NO;
OTHER_LDFLAGS = "-all_load";
PRODUCT_BUNDLE_IDENTIFIER = org.kivy.lbry;
PRODUCT_NAME = lbry;
PROVISIONING_PROFILE = "";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
SDKROOT = iphoneos;
STRIP_INSTALLED_PRODUCT = NO;
TARGETED_DEVICE_FAMILY = "1,2";
USER_HEADER_SEARCH_PATHS = "";
};
name = Debug;
};
1D6058950D05DD3E006BFB54 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_OBJC_WEAK = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_RESOURCE_RULES_PATH = "$(SDKROOT)/ResourceRules.plist";
COPY_PHASE_STRIP = NO;
FRAMEWORK_SEARCH_PATHS = "/Users/akinwale/Dev/Python/kivy-ios/dist/frameworks";
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "";
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = (
"\"$(PROJECT_DIR)/../build/include\"",
"\"$(PROJECT_DIR)/../build/python/include\"",
);
INFOPLIST_FILE = "lbry-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 8.1;
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(PROJECT_DIR)/../build/lib\"",
"\"$(SRCROOT)/../../kivy-ios/dist/lib\"",
);
OTHER_LDFLAGS = "-all_load";
PRODUCT_BUNDLE_IDENTIFIER = org.kivy.lbry;
PRODUCT_NAME = lbry;
PROVISIONING_PROFILE = "";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
SDKROOT = iphoneos;
SKIP_INSTALL = NO;
STRIP_INSTALLED_PRODUCT = NO;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
C01FCF4F08A954540054247B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
DEAD_CODE_STRIPPING = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
LIBRARY_SEARCH_PATHS = "$(SRCROOT)/../../kivy-ios/dist/lib";
ONLY_ACTIVE_ARCH = YES;
USER_HEADER_SEARCH_PATHS = "/Users/akinwale/Dev/Python/kivy-ios/dist/root/include/";
};
name = Debug;
};
C01FCF5008A954540054247B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
DEAD_CODE_STRIPPING = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
LIBRARY_SEARCH_PATHS = "$(SRCROOT)/../../kivy-ios/dist/lib";
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
USER_HEADER_SEARCH_PATHS = "/Users/akinwale/Dev/Python/kivy-ios/dist/root/include/";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "lbry" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1D6058940D05DD3E006BFB54 /* Debug */,
1D6058950D05DD3E006BFB54 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "lbry" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C01FCF4F08A954540054247B /* Debug */,
C01FCF5008A954540054247B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
}

View file

@ -0,0 +1,28 @@
{
"images" : [
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

185
lbry-ios/main.m Normal file
View file

@ -0,0 +1,185 @@
//
// main.m
// lbry
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#include "../../kivy-ios/dist/root/python/include/python2.7/Python.h"
#include "../../kivy-ios/dist/include/common/sdl2/SDL_main.h"
#include <dlfcn.h>
void export_orientation();
void load_custom_builtin_importer();
@interface PythonRunner : NSObject
+(void)run:(id)param;
@end
@implementation PythonRunner
+(void)run:(id)param; {
int ret = 0;
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
// Change the executing path to YourApp
chdir("PythonApp");
// Special environment to prefer .pyo, and don't write bytecode if .py are found
// because the process will not have a write attribute on the device.
putenv("PYTHONOPTIMIZE=2");
putenv("PYTHONDONTWRITEBYTECODE=1");
putenv("PYTHONNOUSERSITE=1");
putenv("PYTHONPATH=.");
//putenv("PYTHONVERBOSE=1");
// Kivy environment to prefer some implementation on iOS platform
putenv("KIVY_BUILD=ios");
putenv("KIVY_NO_CONFIG=1");
putenv("KIVY_NO_FILELOG=1");
putenv("KIVY_WINDOW=sdl2");
putenv("KIVY_IMAGE=imageio,tex");
putenv("KIVY_AUDIO=sdl2");
putenv("KIVY_GL_BACKEND=sdl2");
#ifndef DEBUG
// putenv("KIVY_NO_CONSOLELOG=1");
#endif
// Twisted SSL certificate verify
NSString *cacert = [NSString stringWithFormat:@"SSL_CERT_FILE=%@",
[[NSBundle mainBundle] pathForResource:@"PythonApp/cacert" ofType:@"pem"]];
putenv((char *)[cacert UTF8String]);
// Export orientation preferences for Kivy
export_orientation();
NSString * resourcePath = [[NSBundle mainBundle] resourcePath];
NSLog(@"PythonHome is: %s", (char *)[resourcePath UTF8String]);
Py_SetPythonHome((char *)[resourcePath UTF8String]);
NSLog(@"Initializing python");
Py_Initialize();
NSNumber* argcNumber = [param objectForKey:@"argc"];
NSArray* argvArray = [param objectForKey:@"argv"];
int argc = [argcNumber intValue];
char* argv[argc];
for (int i = 0; i < argc; i++) {
argv[i] = (char *)[[argvArray objectAtIndex:i] UTF8String];
}
PySys_SetArgv(argc, argv);
// If other modules are using the thread, we need to initialize them before.
PyEval_InitThreads();
// Add an importer for builtin modules
load_custom_builtin_importer();
// Search and start main.py
const char * prog = [
[[NSBundle mainBundle] pathForResource:@"PythonApp/main" ofType:@"pyo"] cStringUsingEncoding:
NSUTF8StringEncoding];
NSLog(@"Running main.pyo: %s", prog);
FILE* fd = fopen(prog, "r");
if ( fd == NULL ) {
ret = 1;
NSLog(@"Unable to open main.pyo, abort.");
} else {
ret = PyRun_SimpleFileEx(fd, prog, 1);
if (ret != 0)
NSLog(@"Application quit abnormally!");
}
Py_Finalize();
NSLog(@"Leaving");
[pool release];
}
@end
int main(int argc, char *argv[]) {
NSMutableArray *argvArray = [[NSMutableArray alloc] initWithCapacity: argc];
for (int i = 0; i < argc; i++) {
[argvArray addObject: [NSString stringWithCString: argv[i] encoding:NSUTF8StringEncoding]];
}
[NSThread detachNewThreadSelector:@selector(run:)
toTarget:[PythonRunner class]
withObject:@{@"argc": [NSNumber numberWithInt:argc], @"argv": argvArray}];
return 0;
}
// This method reads the available orientations from the Info.plist file and
// shares them via an environment variable. Kivy will automatically set the
// orientation according to this environment value, if it exists. To restrict
// the allowed orientation, please see the comments inside.
void export_orientation() {
NSDictionary *info = [[NSBundle mainBundle] infoDictionary];
NSArray *orientations = [info objectForKey:@"UISupportedInterfaceOrientations"];
// Orientation restrictions
// ========================
// Comment or uncomment blocks 1-3 in order the limit orientation support
// 1. Landscape only
// NSString *result = [[NSString alloc] initWithString:@"KIVY_ORIENTATION=LandscapeLeft LandscapeRight"];
// 2. Portrait only
// NSString *result = [[NSString alloc] initWithString:@"KIVY_ORIENTATION=Portrait PortraitUpsideDown"];
// 3. All orientations
NSString *result = [[NSString alloc] initWithString:@"KIVY_ORIENTATION="];
for (int i = 0; i < [orientations count]; i++) {
NSString *item = [orientations objectAtIndex:i];
item = [item substringFromIndex:22];
if (i > 0)
result = [result stringByAppendingString:@" "];
result = [result stringByAppendingString:item];
}
// ========================
putenv((char *)[result UTF8String]);
NSLog(@"Available orientation: %@", result);
}
void load_custom_builtin_importer() {
static const char *custom_builtin_importer = \
"import sys, imp\n" \
"from os import environ\n" \
"from os.path import exists, join\n" \
"# Fake redirection to supress console output\n" \
"if environ.get('KIVY_NO_CONSOLE', '0') == '1':\n" \
" class fakestd(object):\n" \
" def write(self, *args, **kw): pass\n" \
" def flush(self, *args, **kw): pass\n" \
" sys.stdout = fakestd()\n" \
" sys.stderr = fakestd()\n" \
"# Custom builtin importer for precompiled modules\n" \
"class CustomBuiltinImporter(object):\n" \
" def find_module(self, fullname, mpath=None):\n" \
" if '.' not in fullname:\n" \
" return\n" \
" if not mpath:\n" \
" return\n" \
" part = fullname.rsplit('.')[-1]\n" \
" fn = join(mpath[0], '{}.so'.format(part))\n" \
" if exists(fn):\n" \
" return self\n" \
" return\n" \
" def load_module(self, fullname):\n" \
" f = fullname.replace('.', '_')\n" \
" mod = sys.modules.get(f)\n" \
" if mod is None:\n" \
" # print 'LOAD DYNAMIC', f, sys.modules.keys()\n" \
" try:\n" \
" mod = imp.load_dynamic(f, f)\n" \
" except ImportError:\n" \
" # import traceback; traceback.print_exc();\n" \
" # print 'LOAD DYNAMIC FALLBACK', fullname\n" \
" mod = imp.load_dynamic(fullname, fullname)\n" \
" sys.modules[fullname] = mod\n" \
" return mod\n" \
" return mod\n" \
"sys.meta_path.append(CustomBuiltinImporter())";
PyRun_SimpleString(custom_builtin_importer);
}

4400
src/main/python/cacert.pem Normal file

File diff suppressed because it is too large Load diff

114
src/main/python/main.py Normal file
View file

@ -0,0 +1,114 @@
import keyring.backend
import platform
import ssl
'''
import lbrynet.daemon.auth
from lbrynet.daemon.auth.util import APIKey, API_KEY_NAME
def load_api_keys(path):
key_name = API_KEY_NAME
context = service.getApplicationContext();
secret = lbrynet_utils.loadApiSecret(context, ks)
# TODO: For testing. Normally, this should not be displayed.
log.info('Loaded API Secret: %s', secret);
return { key_name: APIKey(secret, key_name, None) }
def save_api_keys(keys, path):
key_name = API_KEY_NAME
if key_name in keys:
secret = keys[key_name].secret
# TODO: For testing. Normally, this should not be displayed.
log.info('Saving API Secret: %s', secret)
context = service.getApplicationContext()
lbrynet_utils.saveApiSecret(secret, context, ks)
def initialize_api_key_file(key_path):
context = service.getApplicationContext()
secret = lbrynet_utils.loadApiSecret(context, ks)
if secret is None:
keys = {}
new_api_key = APIKey.new(name=API_KEY_NAME)
keys.update({new_api_key.name: new_api_key})
save_api_keys(keys, key_path)
lbrynet.daemon.auth.util.load_api_keys = load_api_keys
lbrynet.daemon.auth.util.save_api_keys = save_api_keys
lbrynet.daemon.auth.util.initialize_api_key_file = initialize_api_key_file
# Keyring backend
class LbryAndroidKeyring(keyring.backend.KeyringBackend):
priority = 1
def set_password(self, servicename, username, password):
context = service.getApplicationContext()
lbrynet_utils.setPassword(servicename, username, password, context, ks)
def get_password(self, servicename, username):
context = service.getApplicationContext()
return lbrynet_utils.getPassword(servicename, username, context, ks)
def delete_password(self, servicename, username):
context = service.getApplicationContext()
lbrynet_utils.deletePassword(servicename, username, context, ks)
# set the keyring backend
keyring.set_keyring(LbryAndroidKeyring())
'''
import logging.handlers
from lbrynet.core import log_support
from twisted.internet import defer, reactor
from jsonrpc.proxy import JSONRPCProxy
from lbrynet import analytics
from lbrynet import conf
from lbrynet.core import utils, system_info
from lbrynet.daemon.auth.client import LBRYAPIClient
from lbrynet.daemon.DaemonServer import DaemonServer
# LBRY Daemon
log = logging.getLogger(__name__)
def test_internet_connection():
return utils.check_connection()
def start():
# lbry daemon
conf.initialize_settings()
lbrynet_log = conf.settings.get_log_filename()
log_support.configure_logging(lbrynet_log, True, [])
log.debug('Final Settings: %s', conf.settings.get_current_settings_dict())
log.info("Starting lbrynet-daemon")
if test_internet_connection():
analytics_manager = analytics.Manager.new_instance()
start_server_and_listen(False, analytics_manager)
reactor.run()
else:
log.info("Not connected to internet, unable to start")
@defer.inlineCallbacks
def start_server_and_listen(use_auth, analytics_manager, max_tries=5):
"""The primary entry point for launching the daemon.
Args:
use_auth: set to true to enable http authentication
analytics_manager: to send analytics
"""
analytics_manager.send_server_startup()
daemon_server = DaemonServer(analytics_manager)
try:
yield daemon_server.start(use_auth)
analytics_manager.send_server_startup_success()
except Exception as e:
log.exception('Failed to startup')
yield daemon_server.stop()
analytics_manager.send_server_startup_error(str(e))
reactor.fireSystemEvent("shutdown")
if __name__ == '__main__':
start()