forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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
- Loading branch information
1 parent
328d04d
commit 41d9275
Showing
6 changed files
with
322 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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' | ||
} |