blob: c4df5d73b6288784881881d381cf0bf7b7e245fa (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="6"
inherit autotools flag-o-matic systemd
if [[ ${PV} == "9999" ]] ; then
ESVN_REPO_URI="https://svn.code.sf.net/p/smartmontools/code/trunk/smartmontools"
ESVN_PROJECT="smartmontools"
inherit subversion
else
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos"
fi
DESCRIPTION="Tools to monitor storage systems to provide advanced warning of disk degradation"
HOMEPAGE="https://www.smartmontools.org"
LICENSE="GPL-2"
SLOT="0"
IUSE="caps +daemon selinux static systemd update_drivedb"
DEPEND="
caps? (
static? ( sys-libs/libcap-ng[static-libs] )
!static? ( sys-libs/libcap-ng )
)
kernel_FreeBSD? (
sys-freebsd/freebsd-lib[usb]
)
selinux? (
sys-libs/libselinux
)"
RDEPEND="${DEPEND}
daemon? ( virtual/mailx )
selinux? ( sec-policy/selinux-smartmon )
systemd? ( sys-apps/systemd )
update_drivedb? (
app-crypt/gnupg
|| (
net-misc/curl
net-misc/wget
www-client/lynx
dev-vcs/subversion
)
)
"
REQUIRED_USE="( caps? ( daemon ) )"
src_prepare() {
default
eautoreconf
}
src_configure() {
use static && append-ldflags -static
# The build installs /etc/init.d/smartd, but we clobber it
# in our src_install, so no need to manually delete it.
myeconfargs=(
--with-drivedbdir="${EPREFIX}/var/db/${PN}" #575292
--with-initscriptdir="${EPREFIX}/etc/init.d"
#--with-smartdscriptdir="${EPREFIX}/usr/share/${PN}"
$(use_with caps libcap-ng)
$(use_with selinux)
$(use_with systemd libsystemd)
$(use_with update_drivedb gnupg)
$(use_with update_drivedb update-smart-drivedb)
$(usex systemd "--with-systemdsystemunitdir=$(systemd_get_systemunitdir)" '')
)
econf "${myeconfargs[@]}"
}
src_install() {
local db_path="/var/db/${PN}"
if use daemon; then
default
newinitd "${FILESDIR}"/smartd-r1.rc smartd
newconfd "${FILESDIR}"/smartd.confd smartd
else
dosbin smartctl
doman smartctl.8
local DOCS=( AUTHORS ChangeL* COPYING INSTALL NEWS README TODO )
einstalldocs
fi
if use update_drivedb ; then
if ! use daemon; then
dosbin "${S}"/update-smart-drivedb
fi
exeinto /etc/cron.monthly
doexe "${FILESDIR}/${PN}-update-drivedb"
fi
if use daemon || use update_drivedb; then
keepdir "${db_path}"
# Install a copy of the initial drivedb.h to /usr/share/${PN}
# so that we can access that file later in pkg_postinst
# even when dealing with binary packages (bug #575292)
insinto /usr/share/${PN}
doins "${S}"/drivedb.h
fi
# Make sure we never install drivedb.h into the db location
# of the acutal image so we don't record hashes because user
# can modify that file
rm -f "${ED%/}${db_path}/drivedb.h" || die
# Bug #622072
find "${ED%/}"/usr/share/doc -type f -exec chmod a-x '{}' \; || die
}
pkg_postinst() {
if use daemon || use update_drivedb; then
local initial_db_file="${EPREFIX}/usr/share/${PN}/drivedb.h"
local db_path="${EPREFIX}/var/db/${PN}"
if [[ ! -f "${db_path}/drivedb.h" ]] ; then
# No initial database found
cp "${initial_db_file}" "${db_path}" || die
einfo "Default drive database which was shipped with this release of ${PN}"
einfo "has been installed to '${db_path}'."
else
ewarn "WARNING: There's already a drive database in '${db_path}'!"
ewarn "Because we cannot determine if this database is untouched"
ewarn "or was modified by the user you have to manually update the"
ewarn "drive database:"
ewarn ""
ewarn "a) Replace '${db_path}/drivedb.h' by the database shipped with this"
ewarn " release which can be found in '${initial_db_file}', i.e."
ewarn ""
ewarn " cp \"${initial_db_file}\" \"${db_path}\""
ewarn ""
ewarn "b) Run the following command as root:"
ewarn ""
ewarn " /usr/sbin/update-smart-drivedb"
if ! use update_drivedb ; then
ewarn ""
ewarn "However, 'update-smart-drivedb' requires that you re-emerge ${PN}"
ewarn "with USE='update_drivedb'."
fi
fi
fi
}
|