summaryrefslogtreecommitdiff
path: root/dev-lang/mlton/mlton-20180207.ebuild
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2018-07-14 20:57:42 +0100
committerV3n3RiX <venerix@redcorelinux.org>2018-07-14 20:57:42 +0100
commit1798c4aeca70ac8d0a243684d6a798fbc65735f8 (patch)
treee48e19cb6fa03de18e1c63e1a93371b7ebc4eb56 /dev-lang/mlton/mlton-20180207.ebuild
parentd87262dd706fec50cd150aab3e93883b6337466d (diff)
gentoo resync : 14.07.2018
Diffstat (limited to 'dev-lang/mlton/mlton-20180207.ebuild')
-rw-r--r--dev-lang/mlton/mlton-20180207.ebuild264
1 files changed, 0 insertions, 264 deletions
diff --git a/dev-lang/mlton/mlton-20180207.ebuild b/dev-lang/mlton/mlton-20180207.ebuild
deleted file mode 100644
index b8df540a09ff..000000000000
--- a/dev-lang/mlton/mlton-20180207.ebuild
+++ /dev/null
@@ -1,264 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-inherit check-reqs eutils multibuild pax-utils
-
-DESCRIPTION="Standard ML optimizing compiler and libraries"
-BASE_URI="mirror://sourceforge/${PN}"
-SRC_URI="!binary? ( ${BASE_URI}/${P}.src.tgz )
- !bootstrap-smlnj? ( amd64? ( ${BASE_URI}/${P}-1.amd64-linux.tgz ) )"
-HOMEPAGE="http://www.mlton.org"
-
-LICENSE="HPND MIT"
-SLOT="0/${PV}"
-KEYWORDS="~amd64 ~x86"
-IUSE="binary bootstrap-smlnj stage3 doc pax_kernel"
-
-DEPEND="dev-libs/gmp:*
- bootstrap-smlnj? ( dev-lang/smlnj )
- !bootstrap-smlnj? (
- !amd64? ( dev-lang/smlnj )
- )
- pax_kernel? ( sys-apps/elfix )
- doc? ( virtual/latex-base )"
-RDEPEND="dev-libs/gmp:*"
-
-QA_PRESTRIPPED="binary? (
- usr/lib64/${PN}/bin/mlnlffigen
- usr/lib64/${PN}/bin/mllex
- usr/lib64/${PN}/bin/mlprof
- usr/lib64/${PN}/bin/mlyacc
- usr/lib64/${PN}/lib/mlton-compile
- usr/lib/${PN}/bin/mlnlffigen
- usr/lib/${PN}/bin/mllex
- usr/lib/${PN}/bin/mlprof
- usr/lib/${PN}/bin/mlyacc
- usr/lib/${PN}/lib/mlton-compile
-)"
-
-B="${P}-1.${ARCH}-${KERNEL}"
-R="${WORKDIR}/${B}"
-
-mlton_subdir() {
- echo $(get_libdir)/${PN}
-}
-
-mlton_dir() {
- echo "${EPREFIX%/}"/usr/$(mlton_subdir)
-}
-
-mlton_memory_requirement() {
- # The resident set size of compiling mlton with mlton is almost 14GB on amd64.
- # http://mlton.org/SelfCompiling
- # Compiling MLton requires at least 1GB of RAM for 32-bit platforms (2GB is
- # preferable) and at least 2GB RAM for 64-bit platforms (4GB is preferable).
- # If your machine has less RAM, self-compilation will likely fail, or at least
- # take a very long time due to paging. Even if you have enough memory, there
- # simply may not be enough available, due to memory consumed by other
- # processes. In this case, you may see an Out of memory message, or
- # self-compilation may become extremely slow. The only fix is to make sure
- # that enough memory is available.
- [[ ${ARCH} == "x86" ]] && echo "2G" || echo "4G"
-}
-
-pkg_pretend() {
- if use !binary; then
- local CHECKREQS_MEMORY=$(mlton_memory_requirement)
- check-reqs_pkg_pretend
- fi
-}
-
-pkg_setup() {
- if use !binary; then
- local CHECKREQS_MEMORY=$(mlton_memory_requirement)
- check-reqs_pkg_setup
- fi
-}
-
-mlton_bootstrap_variant() {
- local b=""
- if use bootstrap-smlnj || ! use amd64; then
- b="bootstrap-smlnj"
- else
- b="bootstrap"
- fi
- echo "${b}"
-}
-
-mlton_bootstrap_build_dir() {
- echo $(basename ${S})"-"$(mlton_bootstrap_variant)
-}
-
-mlton_bootstrap_bin_dir() {
- local b=$(mlton_bootstrap_build_dir)
- if use bootstrap-smlnj || ! use amd64; then
- b+="/build/bin"
- else
- b+="/bin"
- fi
- echo "${b}"
-}
-
-# Return the array of multilib build variants
-mlton_multibuild_variants() {
- local MULTIBUILD_VARIANTS=()
- if ! use binary; then
- if use bootstrap-smlnj || ! use amd64; then
- MULTIBUILD_VARIANTS+=( $(mlton_bootstrap_variant) )
- use stage3 && MULTIBUILD_VARIANTS+=( build-with-mlton )
- else
- MULTIBUILD_VARIANTS+=( build-with-mlton )
- fi
- fi
- echo ${MULTIBUILD_VARIANTS[*]}
-}
-
-# Return the last multibuild variant
-mlton_last_multibuild_variant() {
- local vs=( $(mlton_multibuild_variants) )
- echo ${vs[${#vs[@]}-1]}
-}
-
-src_unpack() {
- default
- if use binary; then
- mkdir -p "${S}" || die
- fi
-}
-
-BIN_STUBS=( mllex mlnlffigen mlprof mlton mlyacc )
-
-mlton_create_bin_stubs() {
- local SUBDIR=$(mlton_subdir)
- mkdir "${S}"/bin_stubs || die
- pushd "${S}"/bin_stubs || die
- for i in ${BIN_STUBS[*]}; do
- cat <<- EOF >> ${i}
- #!/bin/bash
- exec ${EPREFIX%/}/usr/${SUBDIR}/bin/${i} \$*
- EOF
- chmod a+x ${i} || die
- done
- popd || die
-}
-
-src_prepare() {
- if ! use binary; then
- # For Gentoo hardened: paxmark the mlton-compiler, mllex and mlyacc executables
- epatch "${FILESDIR}/${PN}-20180207-paxmark.patch"
- # Fix the bootstrap-smlnj and bootstrap-polyml Makefile targets
- epatch "${FILESDIR}/${PN}-20180207-bootstrap.patch"
- fi
- default
- $(mlton_create_bin_stubs)
- if use binary; then
- pax-mark m "${R}/lib/${PN}/mlton-compile"
- pax-mark m "${R}/bin/mllex"
- pax-mark m "${R}/bin/mlyacc"
- ln -s ${R} ../$(mlton_bootstrap_build_dir) || die
- gunzip ${R}/share/man/man1/*.gz || die
- else
- local MULTIBUILD_VARIANTS=( $(mlton_multibuild_variants) )
- multibuild_copy_sources
- if ! use bootstrap-smlnj && [[ ${ARCH} == "amd64" ]]; then
- ln -s ${B} ../$(mlton_bootstrap_build_dir) || die
- fi
- fi
-}
-
-mlton_src_compile() {
- if [[ ${MULTIBUILD_VARIANT} == $(mlton_bootstrap_variant) ]]; then
- emake -j1 \
- "bootstrap-smlnj" \
- PAXMARK=$(usex pax_kernel "paxmark.sh" "true") \
- CFLAGS="${CFLAGS}" \
- WITH_GMP_INC_DIR="${EPREFIX}"/usr/include \
- WITH_GMP_LIB_DIR="${EPREFIX}"/$(get_libdir)
- else
- export PATH="${WORKDIR}/"$(mlton_bootstrap_bin_dir)":${PATH}"
- einfo "${MULTIBUILD_VARIANT}: Building mlton with mlton in PATH=$PATH"
- emake -j1 \
- CFLAGS="${CFLAGS}" \
- WITH_GMP_INC_DIR="${EPREFIX}"/usr/include \
- WITH_GMP_LIB_DIR="${EPREFIX}"/$(get_libdir)
- fi
- if [[ ${MULTIBUILD_VARIANT} == $(mlton_last_multibuild_variant) ]]; then
- if use doc; then
- export VARTEXFONTS="${T}/fonts"
- emake docs
- fi
- fi
-}
-
-src_compile() {
- if ! use binary; then
- local MULTIBUILD_VARIANTS=( $(mlton_multibuild_variants) )
- multibuild_foreach_variant run_in_build_dir mlton_src_compile
- fi
-}
-
-mlton_src_test() {
- emake check
-}
-
-src_test() {
- if ! use binary; then
- local MULTIBUILD_VARIANTS=( $(mlton_last_multibuild_variant) )
- multibuild_foreach_variant run_in_build_dir mlton_src_test
- fi
-}
-
-mlton_src_install() {
- local DIR=$(mlton_dir)
- emake \
- install-no-strip install-strip \
- DESTDIR="${D}" \
- PREFIX="${DIR}"
- if use doc; then
- emake TDOC="${D}"/usr/share/doc/${PF} install-docs \
- DESTDIR="${D}" \
- PREFIX="${DIR}"
- fi
-}
-
-mlton_install_bin_stubs() {
- exeinto /usr/bin
- for i in ${BIN_STUBS[*]}; do
- doexe "${S}"/bin_stubs/${i}
- done
-}
-
-src_install() {
- $(mlton_install_bin_stubs)
- if use binary; then
- local DIR=$(mlton_dir)
- exeinto "${DIR}"/bin
- doexe "${R}"/bin/*
- insinto "${DIR}"/lib
- doins -r "${R}"/lib/${PN}
- exeinto "${DIR}"/lib/${PN}
- doexe "${R}"/lib/${PN}/mlton-compile
- doman "${R}"/share/man/man1/*
- if use doc; then
- local DOCS=( "${R}"/share/doc/${PN}/. )
- einstalldocs
- fi
- else
- local MULTIBUILD_VARIANTS=( $(mlton_last_multibuild_variant) )
- multibuild_foreach_variant run_in_build_dir mlton_src_install
- fi
-}
-
-pkg_postinst() {
- # There are PIC objects in libmlton-pic.a. -link-opt -lmlton-pic does not help as mlton
- # specifies -lmlton before -lmlton-pic. It appears that it would be necessary to patch mlton
- # to convince mlton to use the lib*-pic.a libraries when linking an executable.
- ewarn 'PIE in Gentoo hardened requires executables to be linked with -fPIC. mlton by default links'
- ewarn 'executables against the non PIC objects in libmlton.a. http://mlton.org/MLtonWorld notes:'
- ewarn 'Executables that save and load worlds are incompatible with address space layout'
- ewarn 'randomization (ASLR) of the executable.'
- ewarn 'To suppress the generation of position-independent executables.'
- ewarn '-link-opt -fno-PIE'
-}