You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/dev-lang/rust/rust-1.19.0.ebuild

167 lines
4.0 KiB

# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=6
PYTHON_COMPAT=( python2_7 )
inherit python-any-r1 versionator toolchain-funcs
if [[ ${PV} = *beta* ]]; then
betaver=${PV//*beta}
BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
MY_P="rustc-beta"
SLOT="beta/${PV}"
SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.gz"
KEYWORDS=""
else
ABI_VER="$(get_version_component_range 1-2)"
SLOT="stable/${ABI_VER}"
MY_P="rustc-${PV}"
SRC="${MY_P}-src.tar.gz"
KEYWORDS="~amd64 ~x86"
fi
if [[ ${ARCH} = "amd64" ]]; then
TRIPLE="x86_64-unknown-linux-gnu"
else
TRIPLE="i686-unknown-linux-gnu"
fi
CARGO_VERSION="0.$(($(get_version_component_range 2) + 1)).0"
STAGE0_VERSION="1.$(($(get_version_component_range 2) - 1)).0"
STAGE0_VERSION_CARGO="0.$(($(get_version_component_range 2))).0"
BOOTSTRAP_DATE="2017-06-08" # found in src/stage0.txt
DESCRIPTION="Systems programming language from Mozilla"
HOMEPAGE="http://www.rust-lang.org/"
SRC_URI="amd64? (
https://static.rust-lang.org/dist/rustc-${STAGE0_VERSION}-x86_64-unknown-linux-gnu.tar.gz
https://static.rust-lang.org/dist/rust-std-${STAGE0_VERSION}-x86_64-unknown-linux-gnu.tar.gz
https://static.rust-lang.org/dist/cargo-${STAGE0_VERSION_CARGO}-x86_64-unknown-linux-gnu.tar.gz
)
x86? (
https://static.rust-lang.org/dist/rustc-${STAGE0_VERSION}-i686-unknown-linux-gnu.tar.gz
https://static.rust-lang.org/dist/rust-std-${STAGE0_VERSION}-i686-unknown-linux-gnu.tar.gz
https://static.rust-lang.org/dist/cargo-${STAGE0_VERSION_CARGO}-i686-unknown-linux-gnu.tar.gz
)
https://static.rust-lang.org/dist/rustc-${PV}-src.tar.gz"
LICENSE="|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA"
IUSE="clang debug doc libcxx"
REQUIRED_USE="libcxx? ( clang )"
RDEPEND="libcxx? ( sys-libs/libcxx )"
DEPEND="${RDEPEND}
${PYTHON_DEPS}
>=dev-lang/perl-5.0
clang? ( sys-devel/clang )
>=dev-util/cmake-3.4.3
"
PDEPEND=">=app-eselect/eselect-rust-0.3_pre20150425
>=dev-util/cargo-${CARGO_VERSION}"
S="${WORKDIR}/rustc-${PV}-src"
src_unpack() {
unpack ${A##* }
}
src_configure() {
echo "No configure step for rust"
}
src_compile() {
local stage0="rust-${STAGE0_VERSION}-${TRIPLE}"
if use debug ; then
local optimized="false";
local debug="true";
else
local optimized="true";
local debug="false";
fi
cat <<- EOF > config.toml
[llvm]
optimize = ${optimized}
assertions = ${debug}
[build]
docs = false
submodules = false
python = "${EPYTHON}"
vendor = true
[install]
prefix = "${EPREFIX}/usr"
libdir = "$(get_libdir)/${P}"
mandir = "share/${P}/man"
docdir = "share/${P}/doc"
[rust]
optimize = ${optimized}
default-linker = "$(tc-getBUILD_CC)"
default-ar = "$(tc-getBUILD_AR)"
channel = "${SLOT%%/*}"
rpath = false
optimize-tests = ${optimized}
EOF
local cache_dir="build/cache/${BOOTSTRAP_DATE}"
mkdir -p ${cache_dir}
for i in ${A}; do
cp "${DISTDIR}/${i}" $cache_dir/
done
${EPYTHON} x.py build || die
}
src_install() {
default
local obj="build/${TRIPLE}/stage2"
dobin "${obj}/bin/rustc" "${obj}/bin/rustdoc"
dobin src/etc/rust-gdb src/etc/rust-lldb
insinto "/usr/$(get_libdir)"
doins -r "${obj}/lib/"*
dodoc COPYRIGHT
doman man/*
cat <<-EOF > "${T}"/50${P}
LDPATH="/usr/$(get_libdir)/${P}"
MANPATH="/usr/share/${P}/man"
EOF
doenvd "${T}"/50${P}
cat <<-EOF > "${T}/provider-${P}"
/usr/bin/rustdoc
/usr/bin/rust-gdb
EOF
dodir /etc/env.d/rust
insinto /etc/env.d/rust
doins "${T}/provider-${P}"
}
pkg_postinst() {
eselect rust update --if-unset
elog "Rust installs a helper script for calling GDB now,"
elog "for your convenience it is installed under /usr/bin/rust-gdb-${PV}."
if has_version app-editors/emacs || has_version app-editors/emacs-vcs; then
elog "install app-emacs/rust-mode to get emacs support for rust."
fi
if has_version app-editors/gvim || has_version app-editors/vim; then
elog "install app-vim/rust-vim to get vim support for rust."
fi
if has_version 'app-shells/zsh'; then
elog "install app-shells/rust-zshcomp to get zsh completion for rust."
fi
}
pkg_postrm() {
eselect rust unset --if-invalid
}