276 lines
5.9 KiB
Bash
276 lines
5.9 KiB
Bash
# Copyright 1999-2022 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=7
|
|
|
|
CRATES="
|
|
aho-corasick-0.7.18
|
|
ansi_term-0.12.1
|
|
async-trait-0.1.52
|
|
atty-0.2.14
|
|
autocfg-1.1.0
|
|
bindgen-0.58.1
|
|
bindgen-0.59.2
|
|
bit-set-0.5.2
|
|
bit-vec-0.6.3
|
|
bitflags-1.3.2
|
|
block-buffer-0.9.0
|
|
byteorder-1.4.3
|
|
cc-1.0.72
|
|
cexpr-0.4.0
|
|
cexpr-0.6.0
|
|
cfg-if-0.1.10
|
|
cfg-if-1.0.0
|
|
chrono-0.4.19
|
|
clang-sys-1.3.1
|
|
clap-2.34.0
|
|
cpufeatures-0.2.1
|
|
crc-2.1.0
|
|
crc-catalog-1.1.1
|
|
data-encoding-2.3.2
|
|
dbus-0.9.5
|
|
dbus-tree-0.9.2
|
|
devicemapper-sys-0.1.2
|
|
digest-0.9.0
|
|
either-1.6.1
|
|
env_logger-0.8.4
|
|
env_logger-0.9.0
|
|
errno-0.2.8
|
|
errno-dragonfly-0.1.2
|
|
fastrand-1.7.0
|
|
fnv-1.0.7
|
|
futures-0.3.21
|
|
futures-channel-0.3.21
|
|
futures-core-0.3.21
|
|
futures-executor-0.3.21
|
|
futures-io-0.3.21
|
|
futures-macro-0.3.21
|
|
futures-sink-0.3.21
|
|
futures-task-0.3.21
|
|
futures-util-0.3.21
|
|
generic-array-0.14.5
|
|
getrandom-0.2.4
|
|
glob-0.3.0
|
|
hermit-abi-0.1.19
|
|
humantime-2.1.0
|
|
instant-0.1.12
|
|
itertools-0.10.3
|
|
itoa-1.0.1
|
|
lazy_static-1.4.0
|
|
lazycell-1.3.0
|
|
libblkid-rs-0.1.1
|
|
libblkid-rs-sys-0.1.3
|
|
libc-0.2.117
|
|
libcryptsetup-rs-0.5.0
|
|
libcryptsetup-rs-sys-0.1.6
|
|
libdbus-sys-0.2.2
|
|
libloading-0.7.3
|
|
libmount-0.1.15
|
|
libudev-0.2.0
|
|
libudev-sys-0.1.4
|
|
log-0.4.14
|
|
loopdev-0.2.2
|
|
matches-0.1.9
|
|
memchr-2.4.1
|
|
memoffset-0.6.5
|
|
minimal-lexical-0.2.1
|
|
mio-0.7.14
|
|
miow-0.3.7
|
|
nix-0.14.1
|
|
nix-0.22.3
|
|
nix-0.23.1
|
|
nom-5.1.2
|
|
nom-7.1.0
|
|
ntapi-0.3.7
|
|
num-integer-0.1.44
|
|
num-traits-0.2.14
|
|
num_cpus-1.13.1
|
|
once_cell-1.9.0
|
|
opaque-debug-0.3.0
|
|
peeking_take_while-0.1.2
|
|
pin-project-lite-0.2.8
|
|
pin-utils-0.1.0
|
|
pkg-config-0.3.24
|
|
ppv-lite86-0.2.16
|
|
pretty-hex-0.2.1
|
|
proc-macro2-1.0.36
|
|
proptest-1.0.0
|
|
quick-error-1.2.3
|
|
quick-error-2.0.1
|
|
quote-1.0.15
|
|
rand-0.8.4
|
|
rand_chacha-0.3.1
|
|
rand_core-0.6.3
|
|
rand_hc-0.3.1
|
|
rand_xorshift-0.3.0
|
|
redox_syscall-0.2.10
|
|
regex-1.5.4
|
|
regex-syntax-0.6.25
|
|
remove_dir_all-0.5.3
|
|
rpassword-5.0.1
|
|
rustc-hash-1.1.0
|
|
rusty-fork-0.3.0
|
|
ryu-1.0.9
|
|
semver-1.0.5
|
|
serde-1.0.136
|
|
serde_derive-1.0.136
|
|
serde_json-1.0.78
|
|
sha2-0.9.9
|
|
shlex-1.1.0
|
|
signal-hook-registry-1.4.0
|
|
slab-0.4.5
|
|
strsim-0.8.0
|
|
syn-1.0.86
|
|
tempfile-3.3.0
|
|
termcolor-1.1.2
|
|
textwrap-0.11.0
|
|
tokio-1.16.1
|
|
tokio-macros-1.7.0
|
|
typenum-1.15.0
|
|
unicode-width-0.1.9
|
|
unicode-xid-0.2.2
|
|
uuid-0.8.2
|
|
vec_map-0.8.2
|
|
version_check-0.9.4
|
|
void-1.0.2
|
|
wait-timeout-0.2.0
|
|
wasi-0.10.2+wasi-snapshot-preview1
|
|
which-3.1.1
|
|
which-4.2.4
|
|
winapi-0.3.9
|
|
winapi-i686-pc-windows-gnu-0.4.0
|
|
winapi-util-0.1.5
|
|
winapi-x86_64-pc-windows-gnu-0.4.0
|
|
"
|
|
|
|
inherit cargo systemd udev
|
|
|
|
DESCRIPTION="Daemon that manages block devices to create filesystems"
|
|
HOMEPAGE="https://stratis-storage.github.io/"
|
|
SRC_URI="https://github.com/stratis-storage/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz
|
|
$(cargo_crate_uris ${CRATES})"
|
|
|
|
LICENSE="MPL-2.0 BSD MIT"
|
|
SLOT="0"
|
|
KEYWORDS="~amd64 ~x86"
|
|
IUSE="elibc_musl extra dracut systemd"
|
|
|
|
BDEPEND="
|
|
>=virtual/rust-1.49.0
|
|
sys-devel/clang
|
|
"
|
|
DEPEND="
|
|
dracut? (
|
|
>=sys-kernel/dracut-051
|
|
sys-boot/plymouth
|
|
)
|
|
systemd? ( sys-apps/systemd )
|
|
app-crypt/clevis
|
|
sys-apps/dbus
|
|
virtual/udev
|
|
dev-libs/libpcre
|
|
>=sys-fs/cryptsetup-2.3
|
|
>=sys-apps/util-linux-2.32
|
|
"
|
|
RDEPEND="
|
|
${DEPEND}
|
|
sys-fs/xfsprogs
|
|
sys-block/thin-provisioning-tools
|
|
"
|
|
|
|
#QA_FLAGS_IGNORED="/usr/libexec/stratisd "
|
|
|
|
RESTRICT="network-sandbox"
|
|
|
|
REQUIRED_USE="dracut? ( systemd )"
|
|
|
|
PATCHES=(
|
|
# Until feature will be released. https://github.com/stratis-storage/project/issues/161
|
|
${FILESDIR}/0001-disable-xfs-uuid-change-after-snapshot-create.patch
|
|
)
|
|
|
|
src_prepare() {
|
|
sed -i "s@/usr/lib/udev@$(get_udevdir)@g" "${S}"/dracut/90stratis/module-setup.sh
|
|
sed -i "s@/usr/lib/systemd@$(systemd_get_utildir)@g" "${S}"/src/bin/generators/stratis_clevis_setup_generator.rs
|
|
sed -i "s@/usr/lib/systemd@$(systemd_get_utildir)@g" "${S}"/src/bin/generators/stratis_setup_generator.rs
|
|
sed -i "s@/usr/lib/systemd@$(systemd_get_utildir)@g" "${S}"/systemd/stratis-fstab-setup@.service
|
|
|
|
default
|
|
}
|
|
|
|
src_compile() {
|
|
# Disable offline mode for device-mapper library
|
|
sed -i 's/^offline.*/offline = false/g' ${WORKDIR}/cargo_home/config
|
|
|
|
# allow building on musl with dynamic linking support
|
|
# https://github.com/BurntSushi/rust-pcre2/issues/7
|
|
use elibc_musl && export PCRE2_SYS_STATIC=0
|
|
#export RUSTFLAGS="-D warnings -D future-incompatible -D unused -D bare-trait-objects -D ellipsis-inclusive-range-patterns"
|
|
|
|
# Compile main daemon
|
|
cargo_src_compile --bin=stratisd --no-default-features --features dbus_enabled,min
|
|
|
|
if use dracut;then
|
|
# Compile min binaries
|
|
cargo_src_compile --bin=stratis-min --bin=stratisd-min --bin=stratis-utils --no-default-features --features min,systemd_compat
|
|
fi
|
|
|
|
if use extra;then
|
|
cargo_src_compile --bin=stratis_dumpmetadata --no-default-features --features extras,min
|
|
fi
|
|
}
|
|
|
|
src_install() {
|
|
einstalldocs
|
|
dodoc -r docs/.
|
|
|
|
insinto /etc/dbus-1/system.d
|
|
doins ${S}/stratisd.conf
|
|
|
|
udev_dorules ${S}/udev/61-stratisd.rules
|
|
|
|
dosym "$(get_udevdir)"/stratis-str-cmp "$(get_udevdir)"/stratis-base32-decode
|
|
dosym "$(get_udevdir)"/stratis-str-cmp "${EPREFIX}"/bin/stratis-predict-usage
|
|
|
|
exeinto /usr/libexec
|
|
doexe ${S}/target/release/stratisd
|
|
|
|
if use dracut; then
|
|
doexe ${S}/target/release/stratisd-min
|
|
|
|
dobin ${S}/target/release/stratis-min
|
|
|
|
exeinto "$(get_udevdir)"
|
|
newexe ${S}/target/release/stratis-utils stratis-str-cmp
|
|
|
|
insinto /usr/lib/dracut/modules.d/
|
|
doins -r ${S}/dracut/90stratis
|
|
doins -r ${S}/dracut/90stratis-clevis
|
|
chmod +x /usr/lib/dracut/modules.d/90stratis/stratis-rootfs-setup
|
|
|
|
insinto /usr/lib/dracut/dracut.conf.d
|
|
doins ${S}/dracut/90-stratis.conf
|
|
|
|
dosym "$(get_udevdir)"/stratis-str-cmp "$(systemd_get_systemgeneratordir)"/stratis-clevis-setup-generator
|
|
dosym "$(get_udevdir)"/stratis-str-cmp "$(systemd_get_systemgeneratordir)"/stratis-setup-generator
|
|
fi
|
|
|
|
if use systemd; then
|
|
systemd_dounit "${S}/systemd/stratisd.service"
|
|
systemd_dounit "${S}/systemd/stratis-fstab-setup@.service"
|
|
|
|
exeinto "$(systemd_get_utildir)"
|
|
doexe "${S}/systemd/stratis-fstab-setup"
|
|
else
|
|
newinitd "${FILESDIR}/init.d.stratisd-r3" stratisd
|
|
fi
|
|
|
|
if use extra; then
|
|
dobin ${S}/target/release/stratis_dumpmetadata
|
|
fi
|
|
}
|
|
|
|
pkg_postinst() {
|
|
udev_reload
|
|
}
|