diff options
author | Thomas Deutschmann <whissi@gentoo.org> | 2017-10-31 22:51:15 +0100 |
---|---|---|
committer | Thomas Deutschmann <whissi@gentoo.org> | 2017-10-31 22:52:56 +0100 |
commit | ad8950f967e37dcff1fb1ab9fcd2e0b4001b0a69 (patch) | |
tree | c39054c57e0275c0ee9266f3e45d6a25027491d8 /sys-apps | |
parent | sys-libs/musl: drop keywords as much as possible previous to 1.1.17, bug #636060 (diff) | |
download | gentoo-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')
-rw-r--r-- | sys-apps/smartmontools/files/smartd.systemd | 11 | ||||
-rw-r--r-- | sys-apps/smartmontools/metadata.xml | 2 | ||||
-rw-r--r-- | sys-apps/smartmontools/smartmontools-6.5-r1.ebuild | 148 |
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 +} |