diff options
Diffstat (limited to 'app-admin/anaconda')
-rw-r--r-- | app-admin/anaconda/Manifest | 2 | ||||
-rw-r--r-- | app-admin/anaconda/anaconda-9999.ebuild | 224 | ||||
-rw-r--r-- | app-admin/anaconda/files/compat.py | 18 | ||||
-rw-r--r-- | app-admin/anaconda/files/liveinst | 2 | ||||
-rw-r--r-- | app-admin/anaconda/files/make_liveinst_update_package.sh | 24 |
5 files changed, 270 insertions, 0 deletions
diff --git a/app-admin/anaconda/Manifest b/app-admin/anaconda/Manifest new file mode 100644 index 00000000..2c115915 --- /dev/null +++ b/app-admin/anaconda/Manifest @@ -0,0 +1,2 @@ +DIST audit-2.1.2.tar.gz 832570 SHA256 74de47b70f8d60035d97d2b2ee73934be132d67569cbe74a427f5aa41f156fb9 SHA512 8b1fb457b29ab0d13b86404bb09fcf7fd54bf11afd0583d4c91150bfe8b7013d43325150935e668bc4904eaca155cb072a3af659fd44acbdccf128ce3c95bc6b WHIRLPOOL e3a9c44056829a74db192fb6a7200e3de50af29b23ac6e309ca6927f181031dc961a2c2c193356d7208d9f18cc7c0beaf4da602af63ac15797b291e4a5ad33e4 +DIST libselinux-2.0.94.tar.gz 205804 SHA256 b8312852306650e9720de5a20fe7560d935d3c90ffedca1cac25bf3f283d8a36 SHA512 fa8d89cb812ee02dc99811c99341acdcadcc088a06e6de736e31ca1c9f84a5b2afe60b24ec870c31afae3f8c317dd802abee2d50621c59ad3e11afddc26ae814 WHIRLPOOL 127eb506e63709b468866875f4aecf84216d4674fe5f8f0f906f59842dd0dba3ce2fb6cdd3e8085626989039e38a1dbb363fc8ec58bccd10195d1e15fdcefe1b diff --git a/app-admin/anaconda/anaconda-9999.ebuild b/app-admin/anaconda/anaconda-9999.ebuild new file mode 100644 index 00000000..9814e22a --- /dev/null +++ b/app-admin/anaconda/anaconda-9999.ebuild @@ -0,0 +1,224 @@ +# Copyri:ght 2004-2012 Rogentos +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI="3" + +if [ "${PV}" = "9999" ]; then + #EGIT_COMMIT="master" + EGIT_REPO_URI="git://github.com/Rogentos/rogentos-anaconda.git" + MY_ECLASS="git-2" +fi +inherit flag-o-matic base python libtool autotools eutils ${MY_ECLASS} + +AUDIT_VER="2.1.2" +AUDIT_SRC_URI="http://people.redhat.com/sgrubb/audit/audit-${AUDIT_VER}.tar.gz" + +SEPOL_VER="2.1" +LSELINUX_VER="2.0.94" +LSELINUX_SRC_URI="http://userspace.selinuxproject.org/releases/20100525/devel/libselinux-${LSELINUX_VER}.tar.gz" + +DESCRIPTION="Rogentos Redhat Anaconda Installer Port" +HOMEPAGE="http://rogentos.ro/" +if [ "${PV}" = "9999" ]; then + SRC_URI="${AUDIT_SRC_URI} ${LSELINUX_SRC_URI}" + KEYWORDS="" + S="${WORKDIR}"/${PN}-${PVR} +else + SRC_URI="http://pkg.rogentos.ro/~rogentos/distro/${CATEGORY}/${PN}/${PN}-rogentos-${PVR}.tar.bz2 ${AUDIT_SRC_URI} ${LSELINUX_SRC_URI}" + KEYWORDS="~amd64 ~x86" + S="${WORKDIR}"/${PN}-rogentos-${PVR} +fi +AUDIT_S="${WORKDIR}/audit-${AUDIT_VER}" +LSELINUX_S="${WORKDIR}/libselinux-${LSELINUX_VER}" + +LICENSE="GPL-2 public-domain" +SLOT="0" +IUSE="-ipv6 +nfs ldap" +RESTRICT="nomirror" + +AUDIT_DEPEND="dev-lang/swig" +AUDIT_RDEPEND="ldap? ( net-nds/openldap )" +LSELINUX_DEPEND="=sys-libs/libsepol-${SEPOL_VER}* dev-lang/swig" +LSELINUX_RDEPEND="=sys-libs/libsepol-${SEPOL_VER}*" +LSELINUX_CONFLICT="!sys-libs/libselinux" # due to pythonX.Y/site-packages+/usr/sbin not being handled +COMMON_DEPEND="app-admin/system-config-keyboard + >=app-arch/libarchive-2.8 + app-crypt/sbsigntool + app-cdr/isomd5sum + dev-libs/newt + nfs? ( net-fs/nfs-utils ) + sys-fs/lvm2 + sys-block/open-iscsi" +DEPEND="${COMMON_DEPEND} ${AUDIT_DEPEND} ${LSELINUX_DEPEND} sys-apps/sed" +RDEPEND="${COMMON_DEPEND} ${AUDIT_RDEPEND} + ${LSELINUX_RDEPEND} ${LSELINUX_CONFLICT} + >=app-misc/anaconda-runtime-1.1" + +# FIXME: +# for anaconda-gtk we would require also +# dev-python/pygtk +# x11-libs/pango + +src_unpack() { + if [ "${PV}" = "9999" ]; then + git-2_src_unpack + base_src_unpack + else + base_src_unpack + fi +} + +src_prepare() { + + # Setup CFLAGS, LDFLAGS + append-cppflags "-I${D}/usr/include/anaconda-runtime" + append-ldflags "-L${D}/usr/$(get_libdir)/anaconda-runtime" + append-cflags "-fexceptions" + + # drop after 0.9.11 + sed -i "s:-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions::g" \ + "${S}/configure.ac" || die + + # Setup anaconda + cd "${S}" + ./autogen.sh || die "cannot run autogen" + + ## + ## Setup libaudit + ## + cd "${AUDIT_S}" + # Do not build GUI tools + sed -i \ + -e '/AC_CONFIG_SUBDIRS.*system-config-audit/d' \ + "${AUDIT_S}"/configure.ac || die "cannot sed libaudit configure.ac" + sed -i \ + -e 's,system-config-audit,,g' \ + -e '/^SUBDIRS/s,\\$,,g' \ + "${AUDIT_S}"/Makefile.am || die "cannot sed libaudit Makefile.am" + rm -rf "${AUDIT_S}"/system-config-audit + + if ! use ldap; then + sed -i \ + -e '/^AC_OUTPUT/s,audisp/plugins/zos-remote/Makefile,,g' \ + "${AUDIT_S}"/configure.ac || die "cannot sed libaudit configure.ac (ldap)" + sed -i \ + -e '/^SUBDIRS/s,zos-remote,,g' \ + "${AUDIT_S}"/audisp/plugins/Makefile.am || die "cannot sed libaudit Makefile.am (ldap)" + fi + eautoreconf + +} + +copy_audit_data_over() { + dodir "/usr/$(get_libdir)/anaconda-runtime" + cp -Ra "${AUDIT_S}/fakeroot/usr/$(get_libdir)/anaconda-runtime/"* \ + "${D}/usr/$(get_libdir)/anaconda-runtime" || die "cannot cp audit data" + dodir "/usr/include/anaconda-runtime" + cp -Ra "${AUDIT_S}/fakeroot/usr/include/anaconda-runtime/"* \ + "${D}/usr/include/anaconda-runtime" || die "cannot cp audit include data" +} + +src_configure() { + # configure audit + cd "${AUDIT_S}" + einfo "configuring audit" + econf --sbindir=/sbin --libdir=/usr/$(get_libdir)/anaconda-runtime \ + --includedir=/usr/include/anaconda-runtime \ + --without-prelude || die + + # compiling audit here, anaconda configure needs libaudit + einfo "compiling audit" + cd "${AUDIT_S}" || die "cannot cd into ${AUDIT_S}" + base_src_compile + + # installing audit + einfo "installing audit libs into ${AUDIT_S}/fakeroot temporarily" + cd "${AUDIT_S}" || die "cannot cd into ${AUDIT_S}" + ( rm -rf fakeroot && mkdir fakeroot ) || die "cannot mkdir" + emake DESTDIR="${AUDIT_S}/fakeroot" install || die "cannot install libaudit" + copy_audit_data_over # for proper linking + + # configure anaconda + cd "${S}" + einfo "configuring anaconda" + econf \ + $(use_enable ipv6) $(use_enable selinux) \ + $(use_enable nfs) || die "configure failed" +} + +src_compile() { + + cd "${S}" + base_src_compile + + # compiling libselinux + einfo "compiling libselinux" + cd "${LSELINUX_S}" || die "cannot cd into ${LSELINUX_S}" + LD_RUN_PATH="/usr/$(get_libdir)/anaconda-runtime" \ + emake \ + LDFLAGS="-fPIC ${LDFLAGS}" \ + PYLIBVER="python$(python_get_version)" \ + PYTHONLIBDIR="${D}/usr/$(get_libdir)/python$(python_get_version)" \ + SHLIBDIR="${D}/usr/$(get_libdir)/anaconda-runtime" \ + INCDIR="${D}/usr/include/anaconda-runtime" \ + all || die + LD_RUN_PATH="/usr/$(get_libdir)/anaconda-runtime" \ + emake \ + LDFLAGS="-fPIC ${LDFLAGS}" \ + PYLIBVER="python$(python_get_version)" \ + PYTHONLIBDIR="${D}/usr/$(get_libdir)/python$(python_get_version)" \ + SHLIBDIR="${D}/usr/$(get_libdir)/anaconda-runtime" \ + INCDIR="${D}/usr/include/anaconda-runtime" \ + pywrap || die + + # add compatibility aliases to swig wrapper + cat "${FILESDIR}/compat.py" >> "${LSELINUX_S}/src/selinux.py" || die + +} + +src_install() { + + # installing libselinux + cd "${LSELINUX_S}" + python_need_rebuild + LD_RUN_PATH="/usr/$(get_libdir)/anaconda-runtime" \ + emake DESTDIR="${D}" \ + PYLIBVER="python$(python_get_version)" \ + PYTHONLIBDIR="${D}/usr/$(get_libdir)/python$(python_get_version)" \ + LIBDIR="${D}/usr/$(get_libdir)/anaconda-runtime" \ + SHLIBDIR="${D}/usr/$(get_libdir)/anaconda-runtime" \ + INCDIR="${D}/usr/include/anaconda-runtime" \ + install install-pywrap || die + + # fix libselinux.so link + dosym libselinux.so.1 /usr/$(get_libdir)/anaconda-runtime/libselinux.so + # LD_RUN_PATH works with ld >=2.20, so /etc/env.d/99anaconda for now + # will be dropped in future + echo "LDPATH=\"/usr/$(get_libdir)/anaconda-runtime\"" > 99anaconda + doenvd 99anaconda + + cd "${S}" + copy_audit_data_over # ${D} is cleared + base_src_install + + # install liveinst for user + dodir /usr/bin + exeinto /usr/bin + doexe "${FILESDIR}"/liveinst + dosym /usr/bin/liveinst /usr/bin/installer + + # drop .la files for God sake + find "${D}" -name "*.la" | xargs rm + + # Cleanup .pyc .pyo + find "${D}" -name "*.py[co]" -type f -delete +} + +pkg_postrm() { + python_mod_cleanup py${PN} +} + +pkg_postinst() { + python_mod_optimize py${PN} +} diff --git a/app-admin/anaconda/files/compat.py b/app-admin/anaconda/files/compat.py new file mode 100644 index 00000000..b0bf65b5 --- /dev/null +++ b/app-admin/anaconda/files/compat.py @@ -0,0 +1,18 @@ +# compatability aliases for python-selinux +try: + import selinux_aux + + enabled = selinux_aux.enabled + + get_lsid = selinux_aux.get_lsid + get_sid = selinux_aux.get_sid + set_sid = selinux_aux.set_sid + secure_rename = selinux_aux.secure_rename + secure_copy = selinux_aux.secure_copy + secure_mkdir = selinux_aux.secure_mkdir + secure_symlink = selinux_aux.secure_symlink + setexec = selinux_aux.setexec + getcontext = selinux_aux.getcontext + +except: + pass diff --git a/app-admin/anaconda/files/liveinst b/app-admin/anaconda/files/liveinst new file mode 100644 index 00000000..986da86f --- /dev/null +++ b/app-admin/anaconda/files/liveinst @@ -0,0 +1,2 @@ +#!/bin/sh +sudo -E /usr/sbin/liveinst $@ diff --git a/app-admin/anaconda/files/make_liveinst_update_package.sh b/app-admin/anaconda/files/make_liveinst_update_package.sh new file mode 100644 index 00000000..466408cc --- /dev/null +++ b/app-admin/anaconda/files/make_liveinst_update_package.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +if [ -z "${1}" ]; then + echo "syntax ${0} <ebuild>" + exit 1 +fi +eb="${1}" +eb_name=$(basename "${eb}") +tbz2_name="${eb_name/.ebuild/.tbz2}" +tar_file="py${eb_name/.ebuild}.tar.bz2" +current_dir="${PWD}" + +ebuild "${eb}" clean package || exit 1 +tmp_dir="$(mktemp -d)" + +cp /usr/portage/packages/app-admin/"${tbz2_name}" "${tmp_dir}" || exit 1 +cd "${tmp_dir}" || exit 1 +tar xvf "${tbz2_name}" || exit 1 + +( cd usr/lib*/python*/site-packages && tar cjf \ + "${current_dir}/${tar_file}" pyanaconda ) || exit 1 +( cd "${current_dir}" && md5sum "${tar_file}" > "${tar_file}.md5" ) || exit 1 + +echo "created ${tar_file} and ${tar_file}.md5 in this directory" |