summaryrefslogtreecommitdiff
path: root/app-admin/anaconda
diff options
context:
space:
mode:
Diffstat (limited to 'app-admin/anaconda')
-rw-r--r--app-admin/anaconda/Manifest2
-rw-r--r--app-admin/anaconda/anaconda-9999.ebuild224
-rw-r--r--app-admin/anaconda/files/compat.py18
-rw-r--r--app-admin/anaconda/files/liveinst2
-rw-r--r--app-admin/anaconda/files/make_liveinst_update_package.sh24
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"