mirror of
https://github.com/apple/container.git
synced 2026-07-17 23:16:59 +00:00
Selectively uncompress kernel binary from archive (#7)
This commit is contained in:
committed by
Kathryn Baldauf
parent
f12593c3c2
commit
8a6a593eee
@@ -77,9 +77,8 @@ actor KernelService {
|
||||
.setDescription("Unpacking kernel")
|
||||
])
|
||||
let archiveReader = try ArchiveReader(file: tarFile)
|
||||
try archiveReader.extractContents(to: tempDir)
|
||||
let kernelPath = tempDir.appendingPathComponent(kernelFilePath).resolvingSymlinksInPath()
|
||||
try self.installKernel(kernelFile: kernelPath, platform: platform)
|
||||
let kernelFile = try archiveReader.extractFile(from: kernelFilePath, to: tempDir)
|
||||
try self.installKernel(kernelFile: kernelFile, platform: platform)
|
||||
|
||||
if !FileManager.default.fileExists(atPath: tar.absoluteString) {
|
||||
try FileManager.default.removeItem(at: tarFile)
|
||||
@@ -108,3 +107,14 @@ actor KernelService {
|
||||
return Kernel(path: defaultKernelPath, platform: platform)
|
||||
}
|
||||
}
|
||||
|
||||
extension ArchiveReader {
|
||||
fileprivate func extractFile(from: String, to directory: URL) throws -> URL {
|
||||
let (_, data) = try self.extractFile(path: from)
|
||||
try FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true, attributes: nil)
|
||||
let fileName = URL(filePath: from).lastPathComponent
|
||||
let fileURL = directory.appendingPathComponent(fileName)
|
||||
try data.write(to: fileURL, options: .atomic)
|
||||
return fileURL
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,13 +85,13 @@ extension Application {
|
||||
)
|
||||
}
|
||||
|
||||
var kernelConfigured: Bool = false
|
||||
var kernelConfigured: Bool = true
|
||||
var missingDependencies: [Dependencies] = []
|
||||
if await !initImageExists() {
|
||||
missingDependencies.append(.initFs)
|
||||
}
|
||||
if await !kernelExists() {
|
||||
kernelConfigured = true
|
||||
kernelConfigured = false
|
||||
missingDependencies.append(.kernel)
|
||||
}
|
||||
guard missingDependencies.count > 0 else {
|
||||
|
||||
@@ -94,7 +94,6 @@ public enum XPCKeys: String {
|
||||
case kernelTarURL
|
||||
case kernelFilePath
|
||||
case setDefault
|
||||
case installedKernels
|
||||
case systemPlatform
|
||||
case kernelName
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user