Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ clap = { version = "4.5", default-features = false, features = [
] }
crc32c = "0.6"
data-encoding = "2.9"
devicemapper = "0.34"
devicemapper ={ version = "0.34", optional = true }
exitcode = "1.1.2"
fixedbitset = "0.5"
flate2 = "1.1"
Expand Down Expand Up @@ -51,9 +51,11 @@ tempfile = "3.23"
thinp = { path = ".", features = ["devtools"] }

[features]
default = ["thin_migrate"]
devtools = ["ratatui", "termion"]
io_uring = ["dep:io-uring"]
no_cleanup = []
thin_migrate = ["dep:devicemapper"]

[profile.release]
debug = true
Expand Down
72 changes: 26 additions & 46 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@ V=@

PDATA_TOOLS:=\
target/release/pdata_tools
CARGO_FLAGS:=$(if $(DISABLE_THIN_MIGRATE),--no-default-features)

$(PDATA_TOOLS):
$(V) cargo build --release
$(V) cargo build --release $(CARGO_FLAGS)

PREFIX:=/usr
BINDIR:=$(DESTDIR)$(PREFIX)/sbin
Expand All @@ -31,6 +32,21 @@ clean:
cargo clean
$(RM) man8/*.8

HAS_PDATA_TOOLS_BINARY:=$(shell if [ -f $(PDATA_TOOLS) ]; then echo 1; fi)
ifneq ($(HAS_PDATA_TOOLS_BINARY),)

HAS_THIN_MIGRATE:=$(shell grep -qF thin_migrate.rs $(PDATA_TOOLS).d && echo 1)

ifneq ($(DISABLE_THIN_MIGRATE),)
$(warning DISABLE_THIN_MIGRATE variable is ignored, the pdata_tools binary exists and it has $(if $(HAS_THIN_MIGRATE),,no )thin_migrate tool built in)
endif

else

HAS_THIN_MIGRATE:=$(if $(DISABLE_THIN_MIGRATE),,1)

endif

TOOLS:=\
cache_check \
cache_dump \
Expand All @@ -42,69 +58,33 @@ TOOLS:=\
thin_delta \
thin_dump \
thin_ls \
$(if $(HAS_THIN_MIGRATE),thin_migrate) \
thin_repair \
thin_restore \
thin_rmap \
thin_metadata_size \
thin_metadata_pack \
thin_metadata_unpack \
thin_migrate \
thin_trim \
era_check \
era_dump \
era_invalidate \
era_restore

# This must be two empty lines to get a newline.
define NEWLINE


endef

MANPAGES:=$(patsubst %,man8/%.8,$(TOOLS))

install: $(PDATA_TOOLS) $(MANPAGES)
$(INSTALL_DIR) $(BINDIR)
$(INSTALL_PROGRAM) $(PDATA_TOOLS) $(BINDIR)
$(STRIP) $(BINDIR)/pdata_tools
ln -s -f pdata_tools $(BINDIR)/cache_check
ln -s -f pdata_tools $(BINDIR)/cache_dump
ln -s -f pdata_tools $(BINDIR)/cache_metadata_size
ln -s -f pdata_tools $(BINDIR)/cache_repair
ln -s -f pdata_tools $(BINDIR)/cache_restore
ln -s -f pdata_tools $(BINDIR)/cache_writeback
ln -s -f pdata_tools $(BINDIR)/thin_check
ln -s -f pdata_tools $(BINDIR)/thin_delta
ln -s -f pdata_tools $(BINDIR)/thin_dump
ln -s -f pdata_tools $(BINDIR)/thin_ls
ln -s -f pdata_tools $(BINDIR)/thin_repair
ln -s -f pdata_tools $(BINDIR)/thin_restore
ln -s -f pdata_tools $(BINDIR)/thin_rmap
ln -s -f pdata_tools $(BINDIR)/thin_metadata_size
ln -s -f pdata_tools $(BINDIR)/thin_metadata_pack
ln -s -f pdata_tools $(BINDIR)/thin_metadata_unpack
ln -s -f pdata_tools $(BINDIR)/thin_migrate
ln -s -f pdata_tools $(BINDIR)/thin_trim
ln -s -f pdata_tools $(BINDIR)/era_check
ln -s -f pdata_tools $(BINDIR)/era_dump
ln -s -f pdata_tools $(BINDIR)/era_invalidate
ln -s -f pdata_tools $(BINDIR)/era_restore
$(foreach tool, $(TOOLS), ln -s -f pdata_tools $(BINDIR)/$(tool); $(NEWLINE))
$(INSTALL_DIR) $(MANPATH)/man8
$(INSTALL_DATA) man8/cache_check.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/cache_dump.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/cache_metadata_size.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/cache_repair.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/cache_restore.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/cache_writeback.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/thin_check.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/thin_delta.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/thin_dump.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/thin_ls.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/thin_repair.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/thin_restore.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/thin_rmap.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/thin_metadata_size.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/thin_metadata_pack.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/thin_metadata_unpack.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/thin_migrate.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/era_check.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/era_dump.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/era_restore.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/era_invalidate.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/thin_trim.8 $(MANPATH)/man8
$(foreach tool, $(TOOLS), $(INSTALL_DATA) man8/$(tool).8 $(MANPATH)/man8; $(NEWLINE))

.PHONY: install
1 change: 1 addition & 0 deletions src/bin/pdata_tools.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ fn register_commands<'a>() -> Vec<Box<dyn Command<'a>>> {
Box::new(thin_metadata_pack::ThinMetadataPackCommand),
Box::new(thin_metadata_size::ThinMetadataSizeCommand),
Box::new(thin_metadata_unpack::ThinMetadataUnpackCommand),
#[cfg(feature = "thin_migrate")]
Box::new(thin_migrate::ThinMigrateCommand),
Box::new(thin_repair::ThinRepairCommand),
Box::new(thin_restore::ThinRestoreCommand),
Expand Down
1 change: 1 addition & 0 deletions src/commands/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ pub mod thin_ls;
pub mod thin_metadata_pack;
pub mod thin_metadata_size;
pub mod thin_metadata_unpack;
#[cfg(feature = "thin_migrate")]
pub mod thin_migrate;
pub mod thin_repair;
pub mod thin_restore;
Expand Down
1 change: 1 addition & 0 deletions src/thin/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ pub mod ls;
pub mod metadata;
pub mod metadata_repair;
pub mod metadata_size;
#[cfg(feature = "thin_migrate")]
pub mod migrate;
pub mod repair;
pub mod restore;
Expand Down