Clover.app, show commit hash in the installer

This commit is contained in:
vectorsigma72 2019-11-23 18:43:28 +01:00
parent 4d24444cda
commit fcbe66993c
6 changed files with 69 additions and 10 deletions

View File

@ -15,6 +15,7 @@
9542ABC22373786700DC03E6 /* CloverV2 in Copy CloverV2 */ = {isa = PBXBuildFile; fileRef = 9542ABC12373786700DC03E6 /* CloverV2 */; };
9546AE1B23806299007155A6 /* CloverLogOut in Copy tools */ = {isa = PBXBuildFile; fileRef = 95524B88238051F4005F6425 /* CloverLogOut */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
954BBE99238196EE0032425F /* Locale.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954BBE98238196EE0032425F /* Locale.swift */; };
954DECD523899F5F006A9876 /* Bootmanager.png in Resources */ = {isa = PBXBuildFile; fileRef = 954DECD423899F5F006A9876 /* Bootmanager.png */; };
9552D748236F33CA00C93377 /* CloverDaemonNew in Copy tools */ = {isa = PBXBuildFile; fileRef = 9552D745236F33A700C93377 /* CloverDaemonNew */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
958861DA235F75FB00B64173 /* Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 958861D9235F75FB00B64173 /* Driver.swift */; };
95ACABCA236B7463008F80A4 /* Unzip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95ACABC9236B7463008F80A4 /* Unzip.swift */; };
@ -170,6 +171,7 @@
9542ABC12373786700DC03E6 /* CloverV2 */ = {isa = PBXFileReference; lastKnownFileType = folder; name = CloverV2; path = ../CloverPackage/CloverV2; sourceTree = "<group>"; };
954BBE98238196EE0032425F /* Locale.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Locale.swift; sourceTree = "<group>"; };
954C3DF0237DF0250059C698 /* ServiceManagement.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ServiceManagement.framework; path = System/Library/Frameworks/ServiceManagement.framework; sourceTree = SDKROOT; };
954DECD423899F5F006A9876 /* Bootmanager.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Bootmanager.png; sourceTree = "<group>"; };
95524B83238051F3005F6425 /* CloverLogOut.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CloverLogOut.xcodeproj; path = CloverLogOut/CloverLogOut.xcodeproj; sourceTree = "<group>"; };
9552D740236F33A700C93377 /* CloverDaemonNew.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CloverDaemonNew.xcodeproj; path = CloverDaemonNew/CloverDaemonNew.xcodeproj; sourceTree = "<group>"; };
958505B4236594C000BCB4A3 /* Cloverhelper.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Cloverhelper.xcodeproj; path = cloverhelper/Cloverhelper.xcodeproj; sourceTree = "<group>"; };
@ -373,6 +375,7 @@
95C514D62368D40A00E4A3A8 /* Main.storyboard */,
95E68AD9235B8666002B37A5 /* Installer */,
95E68ACD235B8632002B37A5 /* Assets.xcassets */,
954DECD423899F5F006A9876 /* Bootmanager.png */,
95E68AD2235B8632002B37A5 /* Info.plist */,
95E68AD3235B8632002B37A5 /* Clover.entitlements */,
);
@ -555,6 +558,7 @@
buildActionMask = 2147483647;
files = (
95C514D82368D40A00E4A3A8 /* Main.storyboard in Resources */,
954DECD523899F5F006A9876 /* Bootmanager.png in Resources */,
95C5C02D236598B00049940D /* Installer.storyboard in Resources */,
95E68ACE235B8632002B37A5 /* Assets.xcassets in Resources */,
9533718323709517003F1AF4 /* bootsectors-install in Resources */,

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -37,7 +37,7 @@
<autoresizingMask key="autoresizingMask"/>
<subviews>
<button focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="cd4-BN-85D">
<rect key="frame" x="12" y="176" width="53" height="18"/>
<rect key="frame" x="12" y="165" width="53" height="18"/>
<buttonCell key="cell" type="check" title="BIOS" bezelStyle="regularSquare" imagePosition="left" focusRingType="none" inset="2" id="cO6-AP-j0b">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
@ -97,9 +97,9 @@
<action selector="bootSectPressed:" target="nXe-XS-4J0" id="LX5-eS-eGO"/>
</connections>
</button>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="24J-OS-i5T">
<rect key="frame" x="14" y="209" width="156" height="184"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyUpOrDown" image="NSApplicationIcon" id="Bef-n1-kQ3"/>
<imageView focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="24J-OS-i5T">
<rect key="frame" x="14" y="196" width="156" height="197"/>
<imageCell key="cell" refusesFirstResponder="YES" focusRingType="none" alignment="left" imageScaling="proportionallyDown" image="Bootmanager" id="Bef-n1-kQ3"/>
</imageView>
<textField focusRingType="none" verticalHuggingPriority="750" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ccr-sG-KVJ">
<rect key="frame" x="81" y="87" width="91" height="15"/>
@ -216,7 +216,7 @@
<constraint firstItem="PD6-mW-VtD" firstAttribute="bottom" secondItem="5aW-1v-mN2" secondAttribute="bottom" id="4bA-ef-7cG"/>
<constraint firstItem="8sv-QN-08c" firstAttribute="top" secondItem="AVt-3S-p3r" secondAttribute="bottom" constant="9" id="5X5-m7-xEF"/>
<constraint firstItem="btq-Z5-aMA" firstAttribute="top" secondItem="Ccr-sG-KVJ" secondAttribute="bottom" constant="9" id="79z-lG-snY"/>
<constraint firstItem="PD6-mW-VtD" firstAttribute="leading" secondItem="24J-OS-i5T" secondAttribute="trailing" constant="8" symbolic="YES" id="8Ov-BD-gVo"/>
<constraint firstItem="PD6-mW-VtD" firstAttribute="leading" secondItem="24J-OS-i5T" secondAttribute="trailing" constant="8" id="8Ov-BD-gVo"/>
<constraint firstItem="uj1-kY-SjZ" firstAttribute="leading" secondItem="5aW-1v-mN2" secondAttribute="trailing" constant="36" id="9P5-DX-Drj"/>
<constraint firstItem="AVt-3S-p3r" firstAttribute="trailing" secondItem="btq-Z5-aMA" secondAttribute="trailing" id="A7i-ZU-d4V"/>
<constraint firstItem="6Mf-nc-9Pn" firstAttribute="trailing" secondItem="AVt-3S-p3r" secondAttribute="trailing" id="AR9-WP-pmb"/>
@ -247,8 +247,8 @@
<constraint firstItem="Fda-eU-aq8" firstAttribute="leading" secondItem="79D-mq-1Q0" secondAttribute="leading" id="frU-vg-Amx"/>
<constraint firstItem="79D-mq-1Q0" firstAttribute="top" secondItem="Fda-eU-aq8" secondAttribute="bottom" constant="8" symbolic="YES" id="jDU-Iw-tL2"/>
<constraint firstAttribute="trailing" secondItem="Fda-eU-aq8" secondAttribute="trailing" constant="20" symbolic="YES" id="kCT-UQ-jdd"/>
<constraint firstItem="6Mf-nc-9Pn" firstAttribute="top" secondItem="cd4-BN-85D" secondAttribute="bottom" constant="21" id="kZC-qu-hBO"/>
<constraint firstItem="cd4-BN-85D" firstAttribute="top" secondItem="24J-OS-i5T" secondAttribute="bottom" constant="17" id="lNu-Mo-Mge"/>
<constraint firstItem="6Mf-nc-9Pn" firstAttribute="top" secondItem="cd4-BN-85D" secondAttribute="bottom" constant="10" id="kZC-qu-hBO"/>
<constraint firstItem="cd4-BN-85D" firstAttribute="top" secondItem="24J-OS-i5T" secondAttribute="bottom" constant="15" id="lNu-Mo-Mge"/>
<constraint firstItem="PD6-mW-VtD" firstAttribute="leading" secondItem="YVM-Rq-d7o" secondAttribute="trailing" constant="45" id="ora-L3-TSy"/>
<constraint firstItem="cd4-BN-85D" firstAttribute="leading" secondItem="6Mf-nc-9Pn" secondAttribute="leading" id="pYV-pQ-Bj6"/>
<constraint firstItem="8sv-QN-08c" firstAttribute="leading" secondItem="MgP-28-KzA" secondAttribute="leading" constant="57" id="q71-1M-ERT"/>
@ -281,7 +281,7 @@
</scene>
</scenes>
<resources>
<image name="NSApplicationIcon" width="32" height="32"/>
<image name="Bootmanager" width="156" height="197"/>
<image name="NSGoRightTemplate" width="9" height="12"/>
</resources>
</document>

View File

@ -35,7 +35,12 @@ class InstallerWindowController: NSWindowController, NSWindowDelegate {
let wc = NSStoryboard(name: "Installer",
bundle: nil).instantiateController(withIdentifier: "InstallerWindow") as! InstallerWindowController
let rev = findCloverRevision(at: Cloverv2Path.addPath("EFI")) ?? "0000"
wc.window?.title = "\("Clover Installer".locale) r\(rev)"
var title = "\("Clover Installer".locale) r\(rev)"
if let hash = findCloverHashCommit(at: Cloverv2Path.addPath("EFI")) {
title = "\(title) (\(hash))"
}
wc.window?.title = title
return wc
}
}

View File

@ -57,7 +57,7 @@ func findCloverRevision(at EFIdir: String) -> String? {
scanner.scanUpTo(terminatingCharacter, into: &rev)
if (rev != nil), let revision = String(cString: (rev?.utf8String)!,
encoding: String.Encoding.utf8)/*&& rev?.length == 4 */{
encoding: String.Encoding.utf8) {
if revision.count == 4 {
return revision
}
@ -70,3 +70,37 @@ func findCloverRevision(at EFIdir: String) -> String? {
}
return nil
}
// MARK: find Clover gihub commit
func findCloverHashCommit(at EFIdir: String) -> String? {
let bootfiles : [String] = ["/BOOT/BOOTX64.efi",
"/CLOVER/CLOVERX64.efi",
"/BOOT/BOOTXIA32.efi",
"/CLOVER/CLOVERIA32.efi"]
let preMatchString = ", commit "
let terminatingCharacter = ")"
for b in bootfiles {
if fm.fileExists(atPath: EFIdir + b) {
do {
var rev : NSString? = nil
let stringToSearch : String = try String(contentsOfFile: EFIdir + b, encoding: String.Encoding.ascii)
let scanner : Scanner = Scanner(string: stringToSearch)
scanner.scanUpTo(preMatchString, into: nil)
scanner.scanString(preMatchString, into: nil)
scanner.scanUpTo(terminatingCharacter, into: &rev)
if (rev != nil), let revision = String(cString: (rev?.utf8String)!,
encoding: String.Encoding.utf8) {
if revision.count == 8 {
return revision
}
}
} catch {
print(error.localizedDescription)
}
}
}
return nil
}

View File

@ -57,6 +57,22 @@ func findCloverRevision() -> String? {
return rev
}
func findCloverHash() -> String? {
let bdmesg = dumpBootlog()
var rev : String? = nil
if (bdmesg != nil) {
for line in bdmesg!.components(separatedBy: .newlines) {
if (line.range(of: "Starting Clover revision: ") != nil
&& (line.range(of: ", commit ") != nil)) {
rev = line.components(separatedBy: ", commit")[1]
rev = rev!.components(separatedBy: ")")[0]
break
}
}
}
return rev
}
func findBootPartitionDevice() -> String? {
var bsd :String? = nil
if let bdmesg : String = dumpBootlog() {