diff --git a/mac/Parity Ethereum.xcodeproj/project.pbxproj b/mac/Parity Ethereum.xcodeproj/project.pbxproj index 913feec70..2e41be637 100644 --- a/mac/Parity Ethereum.xcodeproj/project.pbxproj +++ b/mac/Parity Ethereum.xcodeproj/project.pbxproj @@ -13,6 +13,8 @@ 0ACF9AC71E30FAB600D5C935 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0ACF9AC51E30FAB600D5C935 /* MainMenu.xib */; }; 0AE564F11E3CE42C00BD01F7 /* GetBSDProcessList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AE564F01E3CE42C00BD01F7 /* GetBSDProcessList.swift */; }; 0AED4DA01E3E22F800BF87C0 /* ethstore in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0AED4D9F1E3E22F800BF87C0 /* ethstore */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 84CF92B3200E559900AD6E78 /* parity-evm in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84CF92B2200E559900AD6E78 /* parity-evm */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 84CF92B6200E56AE00AD6E78 /* ethkey in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84CF92B5200E56AE00AD6E78 /* ethkey */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -22,6 +24,8 @@ dstPath = ""; dstSubfolderSpec = 6; files = ( + 84CF92B6200E56AE00AD6E78 /* ethkey in CopyFiles */, + 84CF92B3200E559900AD6E78 /* parity-evm in CopyFiles */, 0AED4DA01E3E22F800BF87C0 /* ethstore in CopyFiles */, 0A7A475D1E3D2CDD0093D1AB /* parity in CopyFiles */, ); @@ -38,6 +42,8 @@ 0ACF9AC81E30FAB600D5C935 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 0AE564F01E3CE42C00BD01F7 /* GetBSDProcessList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GetBSDProcessList.swift; sourceTree = ""; }; 0AED4D9F1E3E22F800BF87C0 /* ethstore */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = ethstore; path = ../target/release/ethstore; sourceTree = ""; }; + 84CF92B2200E559900AD6E78 /* parity-evm */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = "parity-evm"; path = "../target/release/parity-evm"; sourceTree = ""; }; + 84CF92B5200E56AE00AD6E78 /* ethkey */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = ethkey; path = ../target/release/ethkey; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -54,6 +60,8 @@ 0ACF9AB51E30FAB600D5C935 = { isa = PBXGroup; children = ( + 84CF92B5200E56AE00AD6E78 /* ethkey */, + 84CF92B2200E559900AD6E78 /* parity-evm */, 0AED4D9F1E3E22F800BF87C0 /* ethstore */, 0A7A475C1E3D2CDD0093D1AB /* parity */, 0ACF9AC01E30FAB600D5C935 /* Parity Ethereum */, @@ -110,7 +118,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0800; - LastUpgradeCheck = 0800; + LastUpgradeCheck = 0820; ORGANIZATIONNAME = "Parity Technologies"; TargetAttributes = { 0ACF9ABD1E30FAB600D5C935 = { @@ -192,6 +200,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVES = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -241,6 +250,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVES = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; diff --git a/mac/Parity/AppDelegate.swift b/mac/Parity/AppDelegate.swift index c017e79bd..d65c1d601 100644 --- a/mac/Parity/AppDelegate.swift +++ b/mac/Parity/AppDelegate.swift @@ -1,4 +1,4 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// Copyright 2015-2018 Parity Technologies (UK) Ltd. // This file is part of Parity. // Parity is free software: you can redistribute it and/or modify @@ -22,12 +22,12 @@ import Cocoa class AppDelegate: NSObject, NSApplicationDelegate { @IBOutlet weak var statusMenu: NSMenu! @IBOutlet weak var startAtLogonMenuItem: NSMenuItem! - + let statusItem = NSStatusBar.system().statusItem(withLength: NSVariableStatusItemLength) var parityPid: Int32? = nil var commandLine: [String] = [] let defaultDefaults = "{\"fat_db\":false,\"mode\":\"passive\",\"mode.alarm\":3600,\"mode.timeout\":300,\"pruning\":\"fast\",\"tracing\":false}" - + func menuAppPath() -> String { return Bundle.main.executablePath! } @@ -40,20 +40,20 @@ class AppDelegate: NSObject, NSApplicationDelegate { return NSRunningApplication.runningApplications(withBundleIdentifier: Bundle.main.bundleIdentifier!).count > 1 } - + func isParityRunning() -> Bool { if let pid = self.parityPid { return kill(pid, 0) == 0 } return false } - + func killParity() { if let pid = self.parityPid { kill(pid, SIGKILL) } } - + func openUI() { let parity = Process() parity.launchPath = self.parityPath() @@ -61,29 +61,29 @@ class AppDelegate: NSObject, NSApplicationDelegate { parity.arguments!.append("ui") parity.launch() } - + func writeConfigFiles() { let basePath = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first? .appendingPathComponent(Bundle.main.bundleIdentifier!, isDirectory: true) - + if FileManager.default.fileExists(atPath: basePath!.path) { return } - + do { let defaultsFileDir = basePath?.appendingPathComponent("chains").appendingPathComponent("ethereum") let defaultsFile = defaultsFileDir?.appendingPathComponent("user_defaults") - + try FileManager.default.createDirectory(atPath: (defaultsFileDir?.path)!, withIntermediateDirectories: true, attributes: nil) if !FileManager.default.fileExists(atPath: defaultsFile!.path) { try defaultDefaults.write(to: defaultsFile!, atomically: false, encoding: String.Encoding.utf8) } - + let configFile = basePath?.appendingPathComponent("config.toml") } catch {} } - + func autostartEnabled() -> Bool { return itemReferencesInLoginItems().existingReference != nil } @@ -123,7 +123,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { } return (nil, nil) } - + func toggleLaunchAtStartup() { let itemReferences = itemReferencesInLoginItems() let shouldBeToggled = (itemReferences.existingReference == nil) @@ -155,7 +155,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { func launchParity() { self.commandLine = CommandLine.arguments.dropFirst().filter({ $0 != "ui"}) - + let processes = GetBSDProcessList()! let parityProcess = processes.index(where: { var name = $0.kp_proc.p_comm @@ -166,7 +166,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { } return str == "parity" }) - + if parityProcess == nil { let parity = Process() let p = self.parityPath() @@ -178,7 +178,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { self.parityPid = processes[parityProcess!].kp_proc.p_pid } } - + func applicationDidFinishLaunching(_ aNotification: Notification) { if self.isAlreadyRunning() { openUI() @@ -188,12 +188,12 @@ class AppDelegate: NSObject, NSApplicationDelegate { self.writeConfigFiles() self.launchParity() - Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true, block: {_ in + Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true, block: {_ in if !self.isParityRunning() { NSApplication.shared().terminate(self) } }) - + let icon = NSImage(named: "statusIcon") icon?.isTemplate = true // best for dark mode statusItem.image = icon @@ -206,19 +206,18 @@ class AppDelegate: NSObject, NSApplicationDelegate { } return true } - + @IBAction func quitClicked(_ sender: NSMenuItem) { self.killParity() NSApplication.shared().terminate(self) } - + @IBAction func openClicked(_ sender: NSMenuItem) { self.openUI() } - + @IBAction func startAtLogonClicked(_ sender: NSMenuItem) { self.toggleLaunchAtStartup() } } - diff --git a/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-1.png b/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-1.png index 040d444e2..75767ebd7 100644 Binary files a/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-1.png and b/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-1.png differ diff --git a/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-2.png b/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-2.png index 3a4d72b29..6a1106f5f 100644 Binary files a/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-2.png and b/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-2.png differ diff --git a/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity.png b/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity.png index 194799988..dfbda8ea3 100644 Binary files a/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity.png and b/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity.png differ diff --git a/mac/Parity/GetBSDProcessList.swift b/mac/Parity/GetBSDProcessList.swift index 6ee1956e7..6737787be 100644 --- a/mac/Parity/GetBSDProcessList.swift +++ b/mac/Parity/GetBSDProcessList.swift @@ -1,4 +1,4 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// Copyright 2015-2018 Parity Technologies (UK) Ltd. // This file is part of Parity. // Parity is free software: you can redistribute it and/or modify @@ -21,21 +21,21 @@ import Foundation import Darwin public func GetBSDProcessList() -> ([kinfo_proc]?) { - + var done = false var result: [kinfo_proc]? var err: Int32 - + repeat { let name = [CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0]; let namePointer = name.withUnsafeBufferPointer { UnsafeMutablePointer(mutating: $0.baseAddress) } var length: Int = 0 - + err = sysctl(namePointer, u_int(name.count), nil, &length, nil, 0) if err == -1 { err = errno } - + if err == 0 { let count = length / MemoryLayout.stride result = [kinfo_proc](repeating: kinfo_proc(), count: count) @@ -54,6 +54,6 @@ public func GetBSDProcessList() -> ([kinfo_proc]?) { } } } while err == 0 && !done - + return result } diff --git a/mac/install-readme.txt b/mac/install-readme.txt index a68d18ae9..51f0330bb 100644 --- a/mac/install-readme.txt +++ b/mac/install-readme.txt @@ -3,8 +3,6 @@ Parity Wallet Welcome to Parity Wallet, your all-in-one Ethereum node and wallet. -WARNING: This installer is **EXPERIMENTAL**. Use it at your own risk. - -If you continue, Parity will be installed as a user service. You will be able to use the Parity Wallet through your browser by using the menu bar icon, following the shortcut in the Launchpad or navigating to http://localhost:8080/ in your browser. +If you continue, Parity will be installed as a user service. You will be able to use the Parity Wallet through your browser by using the menu bar icon, following the shortcut in the Launchpad or navigating to http://localhost:8180/ in your browser. Parity is distributed under the terms of the GPL. diff --git a/mac/uninstall-parity.sh b/mac/uninstall-parity.sh index a1575308b..840dba1f6 100755 --- a/mac/uninstall-parity.sh +++ b/mac/uninstall-parity.sh @@ -9,5 +9,4 @@ fi PLIST=~/Library/LaunchAgents/io.parity.ethereum.plist su $SUDO_USER -c "launchctl stop io.parity.ethereum" su $SUDO_USER -c "launchctl unload $PLIST" -rm -f /usr/local/libexec/parity /usr/local/libexec/uninstall-parity.sh /usr/local/bin/ethstore $PLIST - +rm -f /usr/local/libexec/parity /usr/local/libexec/uninstall-parity.sh /usr/local/bin/ethstore /usr/local/bin/ethkey /usr/local/bin/parity-evm $PLIST diff --git a/scripts/gitlab-build.sh b/scripts/gitlab-build.sh index b54bcd6ba..a668ffa13 100755 --- a/scripts/gitlab-build.sh +++ b/scripts/gitlab-build.sh @@ -115,7 +115,9 @@ make_rpm () { make_pkg () { echo "make PKG" cp target/$PLATFORM/release/parity target/release/parity + cp target/$PLATFORM/release/parity-evm target/release/parity-evm cp target/$PLATFORM/release/ethstore target/release/ethstore + cp target/$PLATFORM/release/ethkey target/release/ethkey cd mac xcodebuild -configuration Release cd ..