| # Copyright 1999-2012 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI=4 |
| |
| inherit eutils multilib flag-o-matic |
| |
| DESCRIPTION="Axiom is a general purpose Computer Algebra system" |
| HOMEPAGE="http://axiom.axiom-developer.org/" |
| SRC_URI="http://www.axiom-developer.org/axiom-website/downloads/${PN}-may2008-src.tgz" |
| |
| LICENSE="BSD-2" |
| SLOT="0" |
| KEYWORDS="~amd64 ~x86" |
| IUSE="" |
| |
| # NOTE: Do not strip since this seems to remove some crucial |
| # runtime paths as well, thereby, breaking axiom |
| RESTRICT="strip" |
| |
| DEPEND="virtual/latex-base |
| x11-libs/libXaw |
| sys-apps/debianutils |
| sys-process/procps" |
| RDEPEND="" |
| |
| S="${WORKDIR}"/${PN} |
| |
| pkg_setup() { |
| # for 2.6.25 kernels and higher we need to have |
| # /proc/sys/kernel/randomize_va_space set to somthing other |
| # than 2, otherwise gcl fails to compile (see bug #186926). |
| local current_setting=$(/sbin/sysctl kernel.randomize_va_space 2>/dev/null | cut -d' ' -f3) |
| if [[ ${current_setting} == 2 ]]; then |
| echo |
| eerror "Your kernel has brk randomization enabled. This will" |
| eerror "cause axiom to fail to compile *and* run (see bug #186926)." |
| eerror "You can issue:" |
| eerror |
| eerror " /sbin/sysctl -w kernel.randomize_va_space=1" |
| eerror |
| eerror "as root to turn brk randomization off temporarily." |
| eerror "However, when not using axiom you may want to turn" |
| eerror "brk randomization back on via" |
| eerror |
| eerror " /sbin/sysctl -w kernel.randomize_va_space=2" |
| eerror |
| eerror "since it results in a less secure kernel." |
| die "Kernel brk randomization detected" |
| fi |
| } |
| |
| src_prepare() { |
| cp "${FILESDIR}"/noweb-2.9-insecure-tmp-file.patch.input \ |
| "${S}"/zips/noweb-2.9-insecure-tmp-file.patch \ |
| || die "Failed to fix noweb" |
| cp "${FILESDIR}"/${PN}-200711-gcl-configure.patch \ |
| "${S}"/zips/gcl-2.6.7.configure.in.patch \ |
| || die "Failed to fix gcl-2.6.7 configure" |
| epatch "${FILESDIR}"/noweb-2.9-insecure-tmp-file.Makefile.patch |
| |
| # lots of strict-aliasing badness |
| append-flags -fno-strict-aliasing |
| } |
| |
| src_compile() { |
| # use gcl 2.6.7 |
| sed -e "s:GCLVERSION=gcl-2.6.8pre$:GCLVERSION=gcl-2.6.7:" \ |
| -i Makefile.pamphlet Makefile \ |
| || die "Failed to select proper gcl" |
| |
| # fix libXpm.a location |
| sed -e "s:X11R6/lib:$(get_libdir):g" -i Makefile.pamphlet \ |
| || die "Failed to fix libXpm lib paths" |
| |
| # Let the fun begin... |
| AXIOM="${S}"/mnt/linux emake -j1 |
| } |
| |
| src_install() { |
| emake DESTDIR="${D}"/opt/axiom COMMAND="${D}"/opt/axiom/mnt/linux/bin/axiom install |
| |
| mv "${D}"/opt/axiom/mnt/linux/* "${D}"/opt/axiom \ |
| || die "Failed to mv axiom into its final destination path." |
| rm -fr "${D}"/opt/axiom/mnt \ |
| || die "Failed to remove old directory." |
| |
| dodir /usr/bin |
| dosym /opt/axiom/bin/axiom /usr/bin/axiom |
| |
| sed -e "2d;3i AXIOM=/opt/axiom" \ |
| -i "${D}"/opt/axiom/bin/axiom \ |
| || die "Failed to patch axiom runscript!" |
| |
| dodoc changelog readme faq |
| } |