dev-qt/qtquickcontrols: stable 5.14.2 for ppc, bug #719732
[gentoo.git] / sys-fs / zfs / zfs-9999.ebuild
1 # Copyright 1999-2020 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=7
5
6 DISTUTILS_OPTIONAL=1
7 PYTHON_COMPAT=( python3_{6,7} )
8
9 inherit autotools bash-completion-r1 flag-o-matic linux-info distutils-r1 systemd toolchain-funcs udev usr-ldscript
10
11 DESCRIPTION="Userland utilities for ZFS Linux kernel module"
12 HOMEPAGE="https://github.com/openzfs/zfs"
13
14 if [[ ${PV} == "9999" ]] ; then
15         inherit git-r3 linux-mod
16         EGIT_REPO_URI="https://github.com/openzfs/zfs.git"
17 else
18         SRC_URI="https://github.com/openzfs/${PN}/releases/download/${P}/${P}.tar.gz"
19         KEYWORDS="~amd64 ~arm64 ~ppc64"
20 fi
21
22 LICENSE="BSD-2 CDDL MIT"
23 SLOT="0"
24 IUSE="custom-cflags debug kernel-builtin libressl python +rootfs test-suite static-libs"
25
26 DEPEND="
27         ${PYTHON_DEPS}
28         net-libs/libtirpc[static-libs?]
29         sys-apps/util-linux[static-libs?]
30         sys-libs/zlib[static-libs(+)?]
31         virtual/awk
32         virtual/libudev[static-libs(-)?]
33         libressl? ( dev-libs/libressl:0=[static-libs?] )
34         !libressl? ( dev-libs/openssl:0=[static-libs?] )
35         python? (
36                 virtual/python-cffi[${PYTHON_USEDEP}]
37         )
38 "
39
40 BDEPEND="virtual/awk
41         virtual/pkgconfig
42         python? (
43                 dev-python/setuptools[${PYTHON_USEDEP}]
44         )
45 "
46
47 RDEPEND="${DEPEND}
48         !kernel-builtin? ( ~sys-fs/zfs-kmod-${PV} )
49         !prefix? ( virtual/udev )
50         sys-fs/udev-init-scripts
51         rootfs? (
52                 app-arch/cpio
53                 app-misc/pax-utils
54                 !<sys-kernel/genkernel-3.5.1.1
55         )
56         test-suite? (
57                 sys-apps/util-linux
58                 sys-devel/bc
59                 sys-block/parted
60                 sys-fs/lsscsi
61                 sys-fs/mdadm
62                 sys-process/procps
63                 virtual/modutils
64         )
65 "
66
67 REQUIRED_USE="${PYTHON_REQUIRED_USE}"
68
69 RESTRICT="test"
70
71 PATCHES=( "${FILESDIR}/bash-completion-sudo.patch" )
72
73 pkg_setup() {
74         if use kernel_linux && use test-suite; then
75                 linux-info_pkg_setup
76
77                 if  ! linux_config_exists; then
78                         ewarn "Cannot check the linux kernel configuration."
79                 else
80                         if use test-suite; then
81                                 if linux_chkconfig_present BLK_DEV_LOOP; then
82                                         eerror "The ZFS test suite requires loop device support enabled."
83                                         eerror "Please enable it:"
84                                         eerror "    CONFIG_BLK_DEV_LOOP=y"
85                                         eerror "in /usr/src/linux/.config or"
86                                         eerror "    Device Drivers --->"
87                                         eerror "        Block devices --->"
88                                         eerror "            [X] Loopback device support"
89                                 fi
90                         fi
91                 fi
92         fi
93 }
94
95 src_prepare() {
96         default
97
98         if [[ ${PV} == "9999" ]]; then
99                 eautoreconf
100         else
101                 # Set revision number
102                 sed -i "s/\(Release:\)\(.*\)1/\1\2${PR}-gentoo/" META || die "Could not set Gentoo release"
103         fi
104
105         if use python; then
106                 pushd contrib/pyzfs >/dev/null || die
107                 distutils-r1_src_prepare
108                 popd >/dev/null || die
109         fi
110
111         # prevent errors showing up on zfs-mount stop, #647688
112         # openrc will unmount all filesystems anyway.
113         sed -i "/^ZFS_UNMOUNT=/ s/yes/no/" "etc/default/zfs.in" || die
114 }
115
116 src_configure() {
117         use custom-cflags || strip-flags
118         python_setup
119
120         local myconf=(
121                 --bindir="${EPREFIX}/bin"
122                 --enable-shared
123                 --enable-systemd
124                 --enable-sysvinit
125                 --localstatedir="${EPREFIX}/var"
126                 --sbindir="${EPREFIX}/sbin"
127                 --with-config=user
128                 --with-dracutdir="${EPREFIX}/usr/lib/dracut"
129                 --with-linux="${KV_DIR}"
130                 --with-linux-obj="${KV_OUT_DIR}"
131                 --with-udevdir="$(get_udevdir)"
132                 --with-python="${EPYTHON}"
133                 --with-systemdunitdir="$(systemd_get_systemunitdir)"
134                 --with-systemdpresetdir="${EPREFIX}/lib/systemd/system-preset"
135                 $(use_enable debug)
136                 $(use_enable python pyzfs)
137                 $(use_enable static-libs static)
138         )
139
140         econf "${myconf[@]}"
141 }
142
143 src_compile() {
144         default
145         if use python; then
146                 pushd contrib/pyzfs >/dev/null || die
147                 distutils-r1_src_compile
148                 popd >/dev/null || die
149         fi
150 }
151
152 src_install() {
153         default
154
155         gen_usr_ldscript -a uutil nvpair zpool zfs zfs_core
156
157         use test-suite || rm -rf "${ED}/usr/share/zfs"
158
159         if ! use static-libs; then
160                 find "${ED}/" -name '*.la' -delete || die
161         fi
162
163         dobashcomp contrib/bash_completion.d/zfs
164         bashcomp_alias zfs zpool
165
166         # strip executable bit from conf.d file
167         fperms 0644 /etc/conf.d/zfs
168
169         if use python; then
170                 pushd contrib/pyzfs >/dev/null || die
171                 distutils-r1_src_install
172                 popd >/dev/null || die
173         fi
174
175         # enforce best available python implementation
176         python_fix_shebang "${ED}/bin"
177 }
178
179 pkg_postinst() {
180         if use rootfs; then
181                 if ! has_version sys-kernel/genkernel && ! has_version sys-kernel/dracut; then
182                         elog "root on zfs requires initramfs to boot"
183                         elog "the following packages known to provide one and tested on regular basis:"
184                         elog "  sys-kernel/dracut"
185                         elog "  sys-kernel/genkernel"
186                 fi
187         fi
188
189         if ! use kernel-builtin && [[ ${PV} = "9999" ]]; then
190                 einfo "Adding ${P} to the module database to ensure that the"
191                 einfo "kernel modules and userland utilities stay in sync."
192                 update_moduledb
193         fi
194
195         [[ -e "${EROOT}/etc/runlevels/boot/zfs-import" ]] || \
196                 einfo "You should add zfs-import to the boot runlevel."
197         [[ -e "${EROOT}/etc/runlevels/boot/zfs-mount" ]]|| \
198                 einfo "You should add zfs-mount to the boot runlevel."
199         [[ -e "${EROOT}/etc/runlevels/default/zfs-share" ]] || \
200                 einfo "You should add zfs-share to the default runlevel."
201         [[ -e "${EROOT}/etc/runlevels/default/zfs-zed" ]] || \
202                 einfo "You should add zfs-zed to the default runlevel."
203 }
204
205 pkg_postrm() {
206         if ! use kernel-builtin && [[ ${PV} == "9999" ]]; then
207                 remove_moduledb
208         fi
209 }