summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Deutschmann <whissi@gentoo.org>2017-10-31 22:51:15 +0100
committerThomas Deutschmann <whissi@gentoo.org>2017-10-31 22:52:56 +0100
commitad8950f967e37dcff1fb1ab9fcd2e0b4001b0a69 (patch)
treec39054c57e0275c0ee9266f3e45d6a25027491d8 /sys-apps/smartmontools
parentsys-libs/musl: drop keywords as much as possible previous to 1.1.17, bug #636060 (diff)
downloadgentoo-ad8950f967e37dcff1fb1ab9fcd2e0b4001b0a69.tar.gz
gentoo-ad8950f967e37dcff1fb1ab9fcd2e0b4001b0a69.tar.bz2
gentoo-ad8950f967e37dcff1fb1ab9fcd2e0b4001b0a69.zip
sys-apps/smartmontools: Rev bump to address several problems
- EAPI updated to EAPI 6. - Depend on sys-freebsd/freebsd-lib[usb] on FreeBSD. (bug #552054) - Update smartd systemd service to reflect that we don't provide a general config file for the service. Users are supposed to overwrite the provided service if they want to pass additional parameters. (bug #527648) - We no longer install executable files in /usr/share/{PN}. (bug #622072) - "minimal" USE flag was replaced by "daemon" USE flag to better indicate what the USE flag does. - "caps" USE flag now requires "daemon" USE flag. - It is now possible to use the "update_drivedb" USE flag alone (i.e. without the "minimal", now "daemon" USE flag). (bug #635700) - The drive database logic was rewritten: Per default we try to install the drive database shipped with the package. If there's already a drive database installed we will not replace the database anymore in assumption that the user has updated the database in the meantime and want to preserve the changes. A warning will be displayed in this case with an instruction how to update or restore the default drive database shipped with the package. The new logic now also works when using binary packages. (bug #575292) - RDEPENDs on net-misc/curl, net-misc/wget, www-client/lynx and dev-vcs/subversion (just one of them is required!) were added when using "update_drivedb" USE flag. Closes: https://bugs.gentoo.org/552054 Closes: https://bugs.gentoo.org/527648 Closes: https://bugs.gentoo.org/622072 Closes: https://bugs.gentoo.org/635700 Closes: https://bugs.gentoo.org/575292 Package-Manager: Portage-2.3.13, Repoman-2.3.4
Diffstat (limited to 'sys-apps/smartmontools')
-rw-r--r--sys-apps/smartmontools/files/smartd.systemd11
-rw-r--r--sys-apps/smartmontools/metadata.xml2
-rw-r--r--sys-apps/smartmontools/smartmontools-6.5-r1.ebuild148
3 files changed, 161 insertions, 0 deletions
diff --git a/sys-apps/smartmontools/files/smartd.systemd b/sys-apps/smartmontools/files/smartd.systemd
new file mode 100644
index 000000000000..bdcbdbbe306a
--- /dev/null
+++ b/sys-apps/smartmontools/files/smartd.systemd
@@ -0,0 +1,11 @@
+[Unit]
+Description=Self Monitoring and Reporting Technology (SMART) Daemon
+Documentation=man:smartd(8) man:smartd.conf(5)
+
+[Service]
+ExecStart=/usr/sbin/smartd -n
+ExecReload=/bin/kill -HUP $MAINPID
+StandardOutput=syslog
+
+[Install]
+WantedBy=multi-user.target
diff --git a/sys-apps/smartmontools/metadata.xml b/sys-apps/smartmontools/metadata.xml
index b35558848001..0ae4667bf8d9 100644
--- a/sys-apps/smartmontools/metadata.xml
+++ b/sys-apps/smartmontools/metadata.xml
@@ -6,6 +6,8 @@
<name>Gentoo Base System</name>
</maintainer>
<use>
+ <flag name="caps">Build against <pkg>sys-libs/libcap-ng</pkg> to allow smartd to drop its privileges.</flag>
+ <flag name="daemon">Install the monitoring daemon (smartd) and associated scripts.</flag>
<flag name="minimal">Do not install the monitoring daemon and associated scripts.</flag>
<flag name="update_drivedb">Install a script to update the drivedb file.</flag>
</use>
diff --git a/sys-apps/smartmontools/smartmontools-6.5-r1.ebuild b/sys-apps/smartmontools/smartmontools-6.5-r1.ebuild
new file mode 100644
index 000000000000..499584db4c39
--- /dev/null
+++ b/sys-apps/smartmontools/smartmontools-6.5-r1.ebuild
@@ -0,0 +1,148 @@
+# Copyright 1999-2017 Gentoo Foundation
+# 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 ~x86-fbsd ~amd64-linux ~arm-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 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 )
+ update_drivedb? (
+ || (
+ 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=(
+ --docdir="${EPREFIX}/usr/share/doc/${PF}"
+ --with-drivedbdir="${EPREFIX}/var/db/${PN}" #575292
+ --with-initscriptdir="${EPREFIX}/etc/init.d"
+ $(use_with caps libcap-ng)
+ $(use_with selinux)
+ --with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+ $(use_with update_drivedb update-smart-drivedb)
+ )
+ 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
+ systemd_newunit "${FILESDIR}"/smartd.systemd smartd.service
+ 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
+}