# 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 }