mirror of
https://github.com/cirruslabs/tart.git
synced 2026-09-30 03:01:12 +02:00
* tart pull: try to re-use APFS blocks by cloning the base image * Punch a hole when a zero chunk is detected * Properly retrieve errno when hole punching operation fails * tart pull: do not retry on RuntimeError * Ensure that the holes we're about to punch are FS block size-aligned * VMDirectory: remove unused static variables * tart pull: log if we've found an image to deduplicate against * Do not prematurely read contents from disk * Only consider candidates with deduplicatedBytes more than 0 * APFS reuse UX/DX improvements (#870) * Show how much deduplication happening Improvement to the APFS deduplication logic which checks whether a disk image file `mayShareFileContent` with some other file, and then we put a custom attribute to track the deduplication since there is no way to get this information from APFS itself. It's not 100% accurate but given that OCI cache is immutable the actual disk usage can only be lover than that. * Use string attribute * Update Sources/tart/URL+Prunable.swift Co-authored-by: Nikolay Edigaryev <edigaryev@gmail.com> * Added SizeOnDisk colume --------- Co-authored-by: Nikolay Edigaryev <edigaryev@gmail.com> --------- Co-authored-by: Fedor Korotkov <fedor.korotkov@gmail.com>
56 lines
2.6 KiB
Swift
56 lines
2.6 KiB
Swift
// swift-tools-version:5.10
|
|
|
|
import PackageDescription
|
|
let package = Package(
|
|
name: "Tart",
|
|
platforms: [
|
|
.macOS(.v13)
|
|
],
|
|
products: [
|
|
.executable(name: "tart", targets: ["tart"])
|
|
],
|
|
dependencies: [
|
|
.package(url: "https://github.com/apple/swift-argument-parser", from: "1.3.1"),
|
|
.package(url: "https://github.com/mhdhejazi/Dynamic", branch: "master"),
|
|
.package(url: "https://github.com/apple/swift-algorithms", from: "1.2.0"),
|
|
.package(url: "https://github.com/apple/swift-async-algorithms", branch: "main"),
|
|
.package(url: "https://github.com/malcommac/SwiftDate", from: "7.0.0"),
|
|
.package(url: "https://github.com/antlr/antlr4", branch: "dev"),
|
|
.package(url: "https://github.com/apple/swift-atomics.git", .upToNextMajor(from: "1.2.0")),
|
|
.package(url: "https://github.com/nicklockwood/SwiftFormat", from: "0.53.6"),
|
|
.package(url: "https://github.com/getsentry/sentry-cocoa", from: "8.24.0"),
|
|
.package(url: "https://github.com/cfilipov/TextTable", branch: "master"),
|
|
.package(url: "https://github.com/sersoft-gmbh/swift-sysctl.git", from: "1.8.0"),
|
|
.package(url: "https://github.com/orchetect/SwiftRadix", from: "1.3.1"),
|
|
.package(url: "https://github.com/groue/Semaphore", from: "0.0.8"),
|
|
.package(url: "https://github.com/fumoboy007/swift-retry", from: "0.2.3"),
|
|
.package(url: "https://github.com/jozefizso/swift-xattr", from: "3.0.0"),
|
|
],
|
|
targets: [
|
|
.executableTarget(name: "tart", dependencies: [
|
|
.product(name: "Algorithms", package: "swift-algorithms"),
|
|
.product(name: "AsyncAlgorithms", package: "swift-async-algorithms"),
|
|
.product(name: "ArgumentParser", package: "swift-argument-parser"),
|
|
.product(name: "Dynamic", package: "Dynamic"),
|
|
.product(name: "SwiftDate", package: "SwiftDate"),
|
|
.product(name: "Antlr4Static", package: "Antlr4"),
|
|
.product(name: "Atomics", package: "swift-atomics"),
|
|
.product(name: "Sentry", package: "sentry-cocoa"),
|
|
.product(name: "TextTable", package: "TextTable"),
|
|
.product(name: "Sysctl", package: "swift-sysctl"),
|
|
.product(name: "SwiftRadix", package: "SwiftRadix"),
|
|
.product(name: "Semaphore", package: "Semaphore"),
|
|
.product(name: "DMRetry", package: "swift-retry"),
|
|
.product(name: "XAttr", package: "swift-xattr"),
|
|
], exclude: [
|
|
"OCI/Reference/Makefile",
|
|
"OCI/Reference/Reference.g4",
|
|
"OCI/Reference/Generated/Reference.interp",
|
|
"OCI/Reference/Generated/Reference.tokens",
|
|
"OCI/Reference/Generated/ReferenceLexer.interp",
|
|
"OCI/Reference/Generated/ReferenceLexer.tokens",
|
|
]),
|
|
.testTarget(name: "TartTests", dependencies: ["tart"])
|
|
]
|
|
)
|