mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
dev-lang/mlton: Bump to 20180207, fix 295112 and 581128.
Fix 295112, thanks to flameeyes for reporting. Fix 581128, thanks to Toralf Forster for reporting. Closes: https://bugs.gentoo.org/295112 Closes: https://bugs.gentoo.org/581128 Package-Manager: Portage-2.3.24, Repoman-2.3.6
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
DIST mlton-20130715-1.amd64-linux.tgz 19512324 BLAKE2B 972688dcf6fc6ec17146e2597e6f5dab3b5df4e894697a98c68de61cf4728bf7e2e3ef1cee96befae90f9b555bed0b09cef846912225f8b770d20782fa833212 SHA512 ac41cf8b2afbba80ed25908b1842348eac1507b2aada103648171db1482358c4176b01d9266dfee053b20fc224653ec58ee9d3265672c02fa3774b7562a319bf
|
||||
DIST mlton-20130715-1.x86-linux.tgz 18065793 BLAKE2B d05ca4f46fb35b0b819e2678f282943fc9cd8f701bdf2a20da68b285db4618401b4138a227352e8aacef9f604528c7fafc0973631115954cfd91e01e9dd01a9d SHA512 13a996952df27420f05f8290920055231156c8982c1cf3c31259d73e0c534258e2aad91596e51809719ffb0b74652aa052d296000f2ab99462714d4ef9a41859
|
||||
DIST mlton-20130715.src.tgz 25606142 BLAKE2B 3fa3e8cf4991faef98e23ae4cbe9e0db5cae2e46ce27be57b784a81b576eeed17a179018e8b70d1264cb9595a3467900f034a2b4a7c114d1bac74025450741e1 SHA512 db273de47dc0059e830332b559918567f5153a0518e067ba71927e3705157f1984d6f6202201cef25aaef29d1a71a637e9a1cb30951e94dbfae4ab1a5e5d40d1
|
||||
DIST mlton-20180207-1.amd64-linux.tgz 18772644 BLAKE2B 7fe2d9db7edfb2d3e301be88e90b7dffe1441ff315ddac1464ef42fb436be1a9dc4e2c03fdb93880779360aed04cb7662a1a5a733f2d4158082d228f718d8b93 SHA512 74ab847ff567cde365a113f8819bae69cc18df20c441a6c6666b600980d2687faf143311f42be21a261b2493dc5c45fbecb4737c599cf767c3680afec06c2e0c
|
||||
DIST mlton-20180207.src.tgz 25003695 BLAKE2B 8cddfe83c76e05fda446917ddc85035b3d74534fe4bc597a839cd13cb59a15538f40a3f68bb8f7136f9cf8cb27a582e88ca0d14b8f7a4582a202b3bd075f3c9a SHA512 3599159950e857d257abce92abf5c548dd9c0b0cdc4ba0d7cdf9badb5d997f73386cd1ff79f563221b394dd831cb344e287927f90683b0715678edb3ca0ae15a
|
||||
|
||||
27
dev-lang/mlton/files/mlton-20180207-bootstrap.patch
Normal file
27
dev-lang/mlton/files/mlton-20180207-bootstrap.patch
Normal file
@@ -0,0 +1,27 @@
|
||||
--- mlton-20180207-orig/Makefile 2018-02-07 21:22:55.000000000 +1100
|
||||
+++ mlton-20180207/Makefile 2018-02-28 11:28:00.639642560 +1100
|
||||
@@ -137,18 +137,22 @@
|
||||
.PHONY: bootstrap-smlnj
|
||||
bootstrap-smlnj:
|
||||
$(MAKE) smlnj-mlton
|
||||
- $(RM) "$(BIN)/mlton"
|
||||
+ $(MV) "$(BIN)/mlton" "$(BIN)/mlton.mlton"
|
||||
+ $(CP) "$(BIN)/mlton.smlnj" "$(BIN)/mlton"
|
||||
$(MAKE) BOOTSTRAP_MLTON=mlton.smlnj all
|
||||
smlnj_heap_suffix=`echo 'TextIO.output (TextIO.stdErr, SMLofNJ.SysInfo.getHeapSuffix ());' | sml 2>&1 1> /dev/null` && $(RM) "$(LIB)/mlton/mlton-smlnj.$$smlnj_heap_suffix"
|
||||
$(RM) "$(BIN)/mlton.smlnj"
|
||||
+ $(MV) "$(BIN)/mlton.mlton" "$(BIN)/mlton"
|
||||
|
||||
.PHONY: bootstrap-polyml
|
||||
bootstrap-polyml:
|
||||
$(MAKE) polyml-mlton
|
||||
- $(RM) "$(BIN)/mlton"
|
||||
+ $(MV) "$(BIN)/mlton" "$(BIN)/mlton.mlton"
|
||||
+ $(CP) "$(BIN)/mlton.polyml" "$(BIN)/mlton"
|
||||
$(MAKE) BOOTSTRAP_MLTON=mlton.polyml all
|
||||
$(RM) "$(LIB)/mlton-polyml$(EXE)"
|
||||
$(RM) "$(BIN)/mlton.polyml"
|
||||
+ $(MV) "$(BIN)/mlton.mlton" "$(BIN)/mlton"
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
18
dev-lang/mlton/files/mlton-20180207-paxmark.patch
Normal file
18
dev-lang/mlton/files/mlton-20180207-paxmark.patch
Normal file
@@ -0,0 +1,18 @@
|
||||
--- mlton-20180207-orig/Makefile 2018-02-07 21:22:55.000000000 +1100
|
||||
+++ mlton-20180207/Makefile 2018-02-28 11:27:30.448517470 +1100
|
||||
@@ -51,6 +51,7 @@
|
||||
SED := sed
|
||||
TAR := tar
|
||||
XARGS := xargs
|
||||
+PAXMARK := true
|
||||
|
||||
######################################################################
|
||||
######################################################################
|
||||
@@ -97,6 +98,7 @@
|
||||
all:
|
||||
$(MAKE) dirs runtime
|
||||
$(MAKE) compiler CHECK_FIXPOINT=false # tools0 + mlton0 -> mlton1
|
||||
+ $(PAXMARK) -m lib/mlton/mlton-compile bin/mllex bin/mlyacc
|
||||
$(MAKE) script basis-no-check constants basis-check libraries
|
||||
$(MAKE) tools CHECK_FIXPOINT=false # tools0 + mlton1 -> tools1
|
||||
ifeq (true, $(findstring true,$(BOOTSTRAP) $(CHECK_FIXPOINT)))
|
||||
@@ -6,7 +6,14 @@
|
||||
<name>Gentoo ML Project</name>
|
||||
</maintainer>
|
||||
<use>
|
||||
<flag name="binary">install a binary version (need to do this once to bootstrap, until smlnj is supported)</flag>
|
||||
<flag name="binary">install a binary version</flag>
|
||||
<flag name="bootstrap-smlnj">Boostrap mlton with dev-lang/smlnj
|
||||
(takes a long time)</flag>
|
||||
<flag name="stage3">After bootstrap building mlton with
|
||||
dev-lang/smlnj, rebuild mlton with the second stage build of
|
||||
mlton (recommended).</flag>
|
||||
<flag name="pax_kernel">Enable if the user plans to run the
|
||||
package under a pax enabled hardened kernel</flag>
|
||||
</use>
|
||||
<upstream>
|
||||
<remote-id type="sourceforge">mlton</remote-id>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Copyright 1999-2018 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=5
|
||||
@@ -21,9 +21,9 @@ SLOT="0/${PV}"
|
||||
KEYWORDS="-* ~amd64 ~x86"
|
||||
IUSE="binary doc"
|
||||
|
||||
DEPEND="dev-libs/gmp
|
||||
DEPEND="dev-libs/gmp:*
|
||||
doc? ( virtual/latex-base )"
|
||||
RDEPEND="dev-libs/gmp"
|
||||
RDEPEND="dev-libs/gmp:*"
|
||||
|
||||
QA_PRESTRIPPED="binary? (
|
||||
usr/bin/mlnlffigen
|
||||
|
||||
264
dev-lang/mlton/mlton-20180207.ebuild
Normal file
264
dev-lang/mlton/mlton-20180207.ebuild
Normal file
@@ -0,0 +1,264 @@
|
||||
# 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'
|
||||
}
|
||||
Reference in New Issue
Block a user