blob: eb312afa4797d952d9080a893e8e8978f95a4072 [file] [log] [blame]
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-block/partimage/partimage-0.6.6.ebuild,v 1.6 2009/09/23 22:29:59 mr_bones_ Exp $
WANT_AUTOMAKE="1.10"
inherit eutils flag-o-matic pam autotools
DESCRIPTION="Console-based application to efficiently save raw partition data to an image file."
HOMEPAGE="http://www.partimage.org/"
SRC_URI="mirror://sourceforge/partimage/${P}.tar.bz2"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="x86 ~amd64 ~ppc ~sparc"
IUSE="ssl nologin nls pam static"
DEPEND=">=sys-libs/zlib-1.1.4
>=dev-libs/newt-0.51.6
app-arch/bzip2
>=sys-libs/slang-1.4
nls? ( sys-devel/gettext )
ssl? ( >=dev-libs/openssl-0.9.6g )"
RDEPEND="!static? (
>=sys-libs/zlib-1.1.4
>=dev-libs/lzo-1.08
>=dev-libs/newt-0.51.6
app-arch/bzip2
>=sys-libs/slang-1.4
nls? ( sys-devel/gettext ) ssl? ( >=dev-libs/openssl-0.9.6g )
pam? ( virtual/pam )
)"
PARTIMAG_GROUP_GID=91
PARTIMAG_USER_UID=91
PARTIMAG_GROUP_NAME=partimag
PARTIMAG_USER_NAME=partimag
PARTIMAG_USER_SH=-1
PARTIMAG_USER_HOMEDIR=/var/log/partimage
PARTIMAG_USER_GROUPS=partimag
pkg_setup() {
# Now add users if needed
enewgroup ${PARTIMAG_GROUP_NAME} ${PARTIMAG_GROUP_GID}
enewuser ${PARTIMAG_USER_NAME} ${PARTIMAG_USER_UID} ${PARTIMAG_USER_SH} ${PARTIMAG_USER_HOMEDIR} ${PARTIMAG_USER_GROUPS}
}
src_unpack() {
unpack ${A}
cd "${S}"
# we can do better security ourselves
epatch "${FILESDIR}"/${P}-datadir-path.patch || die
epatch "${FILESDIR}"/${P}-dont-discard-error-message-in-batch-mode.patch || die
epatch "${FILESDIR}"/${PN}-0.6.4-save_file_and_rest_file_actions.patch || die
epatch "${FILESDIR}"/${PN}-0.6.4-varargs.patch || die
epatch "${FILESDIR}"/${PN}-0.6.4-empty-salt.patch || die
epatch "${FILESDIR}"/${PN}-0.6.4-port.patch || die
epatch "${FILESDIR}"/${P}-andre-przywara_amd64.patch || die
epatch "${FILESDIR}"/${P}-andre-przywara_warnings.patch || die
epatch "${FILESDIR}"/${P}-clonezilla_ext3_blocks-per-group.patch || die
epatch "${FILESDIR}"/${P}-not_install_info.patch || die
epatch "${FILESDIR}"/${P}-chown.patch || die
epatch "${FILESDIR}"/${P}-gui.diff || die
epatch "${FILESDIR}"/${P}-disable_header_check.patch || die
epatch "${FILESDIR}"/${P}-thread-privilege-fix.patch || die
}
src_compile() {
filter-flags -fno-exceptions
use ppc && append-flags -fsigned-char
local myconf
use nologin && myconf="${myconf} --disable-login"
if use static
then
use pam && ewarn "pam and static compilation are mutually exclusive - using static and ignoring pam"
else
myconf="${myconf} `use_enable pam`"
fi
econf \
${myconf} \
--sysconfdir=/etc \
`use_enable ssl` \
`use_enable nls` \
`use_enable static all-static` \
|| die "econf failed"
emake || die "make failed"
}
src_install() {
emake DESTDIR="${D}" \
MKINSTALLDIRS=/usr/share/automake-1.10/mkinstalldirs install || die
keepdir /var/log/partimage
insinto /etc/partimaged; doins "${FILESDIR}"/servercert.cnf || die
# init.d / conf.d
newinitd "${FILESDIR}"/${PN}d.init ${PN}d || die
newconfd "${FILESDIR}"/${PN}d.conf ${PN}d || die
doman "${FILESDIR}"/{partimage.1,partimaged.8,partimagedusers.5} || die
dodoc AUTHORS BUGS ChangeLog INSTALL README* TODO partimage.lsm
# pam
if use pam
then
newpamd "${FILESDIR}"/partimaged.pam partimaged || die
fi
}
# vars for SSL stuff
confdir="${ROOT}etc/partimaged"
privkey="${confdir}/partimaged.key"
cnf="${confdir}/servercert.cnf"
csr="${confdir}/partimaged.csr"
cert="${confdir}/partimaged.cert"
pkg_config() {
if use ssl; then
ewarn "Please customize /etc/partimaged/servercert.cnf before you continue!"
ewarn "Press Ctrl-C to break now for it, or press enter to continue."
read
if [ ! -f ${privkey} ]; then
einfo "Generating unencrypted private key: ${privkey}"
openssl genrsa -out ${privkey} 1024 || die "Failed!"
else
einfo "Private key already exists: ${privkey}"
fi
if [ ! -f ${csr} ]; then
einfo "Generating certificate request: ${csr}"
openssl req -new -x509 -outform PEM -out ${csr} -key ${privkey} -config ${cnf} || die "Failed!"
else
einfo "Certificate request already exists: ${csr}"
fi
if [ ! -f ${cert} ]; then
einfo "Generating self-signed certificate: ${cert}"
openssl x509 -in ${csr} -out ${cert} -signkey ${privkey} || die "Failed!"
else
einfo "Self-signed certifcate already exists: ${cert}"
fi
einfo "Setting permissions"
partimagesslperms || die "Failed!"
einfo "Done"
else
einfo "SSL is disabled, not building certificates"
fi
}
partimagesslperms() {
local ret=0
chmod 600 ${privkey} 2>/dev/null
ret=$((${ret}+$?))
chown partimag:0 ${privkey} 2>/dev/null
ret=$((${ret}+$?))
chmod 644 ${cert} ${csr} 2>/dev/null
ret=$((${ret}+$?))
chown root:0 ${cert} ${csr} 2>/dev/null
ret=$((${ret}+$?))
return $ret
}
pkg_postinst() {
if use ssl; then
einfo "To create the required SSL certificates, please do:"
einfo "emerge --config =${PF}"
# force a permmissions fixup
partimagesslperms
return 0
fi
chown partimag:0 /etc/partimaged/partimagedusers || die
}