commit: 39cbcae030c6a0ae05e8ed89b563aa6186cf7203 Author: Aric Belsito <lluixhi <AT> gmail <DOT> com> AuthorDate: Mon Nov 6 20:11:13 2017 +0000 Commit: Aric Belsito <lluixhi <AT> gmail <DOT> com> CommitDate: Mon Nov 6 20:11:13 2017 +0000 URL: https://gitweb.gentoo.org/proj/musl.git/commit/?id=39cbcae0
sys-apps/smartmontools: add most recent version 6.6 adds a call to `canonicalize_file_name` which is not in musl. sys-apps/smartmontools/Manifest | 8 ++ sys-apps/smartmontools/files/smartd-r1.rc | 28 ++++ sys-apps/smartmontools/files/smartd.confd | 4 + sys-apps/smartmontools/files/smartd.systemd | 11 ++ .../files/smartmontools-6.6-realpath.patch | 12 ++ .../files/smartmontools-update-drivedb | 3 + sys-apps/smartmontools/metadata.xml | 17 +++ sys-apps/smartmontools/smartmontools-6.6.ebuild | 152 +++++++++++++++++++++ 8 files changed, 235 insertions(+) diff --git a/sys-apps/smartmontools/Manifest b/sys-apps/smartmontools/Manifest new file mode 100644 index 0000000..79bfcac --- /dev/null +++ b/sys-apps/smartmontools/Manifest @@ -0,0 +1,8 @@ +AUX smartd-r1.rc 614 SHA256 acef10e3d963a97c32f525da730eac00be424e7588ab2d7b24ad24dfe032ac88 SHA512 7a46212d2d76b335ac7470b51b44e40b1cdd4814e5db4a8a2f013803bb40ea5072fde64590ffd51754b03a6f80a43e835605a5bb3ac2c23e456633995191ec31 WHIRLPOOL a452c84a5a562c235f7ef633deea976ff414ce4d3132a201e210f91e8181d78c9a89749d54948d07e8d3206d22a9d111a42d59524b4496d257db2988071195d7 +AUX smartd.confd 107 SHA256 714cc1b253e1f59b884be89693757fec91ca878c62f37451a49ef6bb72263e85 SHA512 ff45462944f01c0e7cac99443078b253dcbaed4f99ffab85052b12361d9eec4beec81cab334fbede9148b3dd503d5205add32ef4327a788f02a8b1e37f460437 WHIRLPOOL 773405a2cc669f6eaae835bc3a6415151891b91ccf4111147f8b12d9763be26cbf65815879a70cd64ae12a36f59840ffcb15ff7e527479f88d9816130e704e76 +AUX smartd.systemd 258 SHA256 72ef7a3ad0e56a144a19aa2b05a0adb147c76cc95e19ac5eb29e4b155c323a8b SHA512 73c49bca755adf0ff1c6ccd221de0fd2bb7804250968fbcb3799e19c66dacc85a6c7a3e0d1eecea683f57d6a3ff01fbd4b4fc47b0eab5747006f0edc21876a7c WHIRLPOOL 295a9eb8727da9738f926e642f62aa6916f9c80516ec27bca51ce18cc9ead161d9b8db2133261ef8dc97e01d1da6eee14895322792a1199619c1cc46923d8d61 +AUX smartmontools-6.6-realpath.patch 474 SHA256 710dd2eb587d26b7c558b0b80fb0d2aa4f3e885b7f6fc25bf7936e48bbddfba3 SHA512 cced959767d89644fcc6922892ac352612b56e9f1b8057f1799608045da9b055f13b14f37dcf52833128cc9af3d6cf03604b5da9372d5a076a0c67fdba52828d WHIRLPOOL b93d222e5836303727b593ffb87a25a17bc430a47cbce422b2b93dfa93fb978668f815c541c7814523fff520475aae710f6fcb0f8b5172f69a297da17c74117f +AUX smartmontools-update-drivedb 42 SHA256 53a766a094ef63b925e2c3f8c08322b67c2ab40b1f2b84d414e5de4f6747aca8 SHA512 8ad70fc85ab67b7c32eda95dd37517382c2447862df08b810a54dcdedb1eb8148f3a0e29f402a54adff31d1e88d80d09a258ed9e1e13b597ab2a358ebeda0ce8 WHIRLPOOL 3dd62cd6e26a18c9fe5555a1d3feb2597eea6773c857a2cf559331486fc0ef2ef67a0bcb7d1e03b14631d0c8809daae7688d6e1f83f02e8867b0dc23dfcafb55 +DIST smartmontools-6.6.tar.gz 903847 SHA256 51f43d0fb064fccaf823bbe68cf0d317d0895ff895aa353b3339a3b316a53054 SHA512 64bb533dac29f62ddd662a16a12c97df1af9cbac9ac526ce7af0b3bff9da49cf265a2030d91a7160452b56a67e80d7f34c9b4e45bbb320114f55695e2cb5cfaf WHIRLPOOL 7a34444977ae069ecf52f9de67077cf67d56a5888bec159ef7e2b19977f821fed8d8b5bca872c6df17cf12a9cb21c0df37dd9bbb44f295774ef93e93f9552bb3 +EBUILD smartmontools-6.6.ebuild 4141 SHA256 eb4741305b2b452dd86ea3d5abe692a1a04e5f22d2837b2a3502c72848730511 SHA512 64860eec966570bf40a483917ee30425f88f514f494161763c16c5b2b4f1c3cefe949fd1407b80270663ee550fcd17212c7720bfd7ae18420b1036b3052bb773 WHIRLPOOL 6e3745292bb67d4889924359d159afd8ab2b93c09ef39f76d228b109e3122931e4e1baccd37809e8ca2802e4ed09bef60b8157a89f70d81c9d8fc707924757e8 +MISC metadata.xml 718 SHA256 774df2c60538f51bdb39e35b0fddeaed32fa18b0d11efe6a4eb52187d84b57c4 SHA512 a6a07e57bd09402839295ee859481d784445afadb12ffd644c6de3af41a4a763225f63d098c328193123d72cdad3b98e278256bb3e67b104015399def014ee54 WHIRLPOOL e0c7fcd97abb35522e21de6436f621f00f4ae8bbc6137c65f543e25bcda702a89329b6419d954ae59965b3d5dfb048f175746a43cfe6c23af8a95c2733518481 diff --git a/sys-apps/smartmontools/files/smartd-r1.rc b/sys-apps/smartmontools/files/smartd-r1.rc new file mode 100644 index 0000000..1aa2ece --- /dev/null +++ b/sys-apps/smartmontools/files/smartd-r1.rc @@ -0,0 +1,28 @@ +#!/sbin/openrc-run +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +pidfile="/run/smartd.pid" +command="/usr/sbin/smartd" +command_args="-p ${pidfile} ${SMARTD_OPTS}" +extra_started_commands="reload" + +depend() { + need localmount + after bootmisc +} + +start_pre() { + if [ ! -f "/etc/smartd.conf" ] ; then + eerror "You should setup your /etc/smartd.conf file!" + eerror "See the smartd.conf(5) manpage." + return 1 + fi + return 0 +} + +reload() { + ebegin "Reloading configuration" + start-stop-daemon --signal HUP --pidfile ${pidfile} ${command##*/} + eend $? +} diff --git a/sys-apps/smartmontools/files/smartd.confd b/sys-apps/smartmontools/files/smartd.confd new file mode 100644 index 0000000..4b7db4d --- /dev/null +++ b/sys-apps/smartmontools/files/smartd.confd @@ -0,0 +1,4 @@ +# /etc/conf.d/smartd: config file for /etc/init.d/smartd + +# Insert any other options needed +SMARTD_OPTS="" diff --git a/sys-apps/smartmontools/files/smartd.systemd b/sys-apps/smartmontools/files/smartd.systemd new file mode 100644 index 0000000..bdcbdbb --- /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/files/smartmontools-6.6-realpath.patch b/sys-apps/smartmontools/files/smartmontools-6.6-realpath.patch new file mode 100644 index 0000000..7a80f8a --- /dev/null +++ b/sys-apps/smartmontools/files/smartmontools-6.6-realpath.patch @@ -0,0 +1,12 @@ +diff -Naur smartmontools-6.6.orig/os_linux.cpp smartmontools-6.6/os_linux.cpp +--- smartmontools-6.6.orig/os_linux.cpp 2017-11-06 12:06:53.605654329 -0800 ++++ smartmontools-6.6/os_linux.cpp 2017-11-06 12:07:41.881653464 -0800 +@@ -3176,7 +3176,7 @@ + { + char path[128]; + snprintf(path, sizeof(path), "/sys/block/%s/device", name); +- char * syshostpath = canonicalize_file_name(path); ++ char * syshostpath = realpath(path, NULL); + if (!syshostpath) + return false; + diff --git a/sys-apps/smartmontools/files/smartmontools-update-drivedb b/sys-apps/smartmontools/files/smartmontools-update-drivedb new file mode 100644 index 0000000..831f1e6 --- /dev/null +++ b/sys-apps/smartmontools/files/smartmontools-update-drivedb @@ -0,0 +1,3 @@ +#!/bin/sh + +/usr/sbin/update-smart-drivedb diff --git a/sys-apps/smartmontools/metadata.xml b/sys-apps/smartmontools/metadata.xml new file mode 100644 index 0000000..0ae4667 --- /dev/null +++ b/sys-apps/smartmontools/metadata.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> +<maintainer type="project"> + <email>base-sys...@gentoo.org</email> + <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> +<upstream> + <remote-id type="sourceforge">smartmontools</remote-id> +</upstream> +</pkgmetadata> diff --git a/sys-apps/smartmontools/smartmontools-6.6.ebuild b/sys-apps/smartmontools/smartmontools-6.6.ebuild new file mode 100644 index 0000000..76686b9 --- /dev/null +++ b/sys-apps/smartmontools/smartmontools-6.6.ebuild @@ -0,0 +1,152 @@ +# 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? ( + app-crypt/gnupg + || ( + net-misc/curl + net-misc/wget + www-client/lynx + dev-vcs/subversion + ) + ) +" + +REQUIRED_USE="( caps? ( daemon ) )" + +PATCHES=( "${FILESDIR}"/${P}-realpath.patch ) + +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 gnupg) + $(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 +}