Rollup merge of #47427 - EdSchouten:cloudabi-ci, r=alexcrichton
Add a Docker container for doing automated builds for CloudABI. Setting up a cross compilation toolchain for CloudABI is relatively easy. It's just a matter of installing a somewhat recent version of Clang (5.0 preferred) and installing the corresponding `${target}-cxx-runtime` package, containing a set of core C/C++ libraries (libc, libc++, libunwind, etc). Eventually it would be nice if we could also run `x.py test`. That, however still requires some more work. Both libtest and compiletest would need to be adjusted to deal with CloudABI's requirement of having all of an application's dependencies injected. Let's settle for just doing `x.py dist` for now.
This commit is contained in:
commit
7e70993065
@ -1,4 +1,4 @@
|
||||
FROM ubuntu:16.04
|
||||
FROM ubuntu:17.10
|
||||
|
||||
COPY scripts/cross-apt-packages.sh /scripts/
|
||||
RUN sh /scripts/cross-apt-packages.sh
|
||||
@ -21,9 +21,12 @@ RUN apt-key adv --batch --yes --keyserver keyserver.ubuntu.com --recv-keys 74DA7
|
||||
RUN add-apt-repository -y 'deb http://apt.dilos.org/dilos dilos2-testing main'
|
||||
|
||||
WORKDIR /tmp
|
||||
COPY dist-various-2/shared.sh dist-various-2/build-fuchsia-toolchain.sh /tmp/
|
||||
COPY dist-various-2/build-solaris-toolchain.sh /tmp/
|
||||
COPY dist-various-2/shared.sh /tmp/
|
||||
COPY dist-various-2/build-cloudabi-toolchain.sh /tmp/
|
||||
RUN /tmp/build-cloudabi-toolchain.sh x86_64-unknown-cloudabi
|
||||
COPY dist-various-2/build-fuchsia-toolchain.sh /tmp/
|
||||
RUN /tmp/build-fuchsia-toolchain.sh
|
||||
COPY dist-various-2/build-solaris-toolchain.sh /tmp/
|
||||
RUN /tmp/build-solaris-toolchain.sh x86_64 amd64 solaris-i386
|
||||
RUN /tmp/build-solaris-toolchain.sh sparcv9 sparcv9 solaris-sparc
|
||||
|
||||
@ -44,12 +47,20 @@ ENV \
|
||||
CC_x86_64_sun_solaris=x86_64-sun-solaris2.10-gcc \
|
||||
CXX_x86_64_sun_solaris=x86_64-sun-solaris2.10-g++
|
||||
|
||||
# FIXME(EdSchouten): Remove this once cc ≥1.0.4 has been merged. It can
|
||||
# automatically pick the right compiler path.
|
||||
ENV \
|
||||
AR_x86_64_unknown_cloudabi=x86_64-unknown-cloudabi-ar \
|
||||
CC_x86_64_unknown_cloudabi=x86_64-unknown-cloudabi-clang \
|
||||
CXX_x86_64_unknown_cloudabi=x86_64-unknown-cloudabi-clang++
|
||||
|
||||
ENV TARGETS=x86_64-unknown-fuchsia
|
||||
ENV TARGETS=$TARGETS,aarch64-unknown-fuchsia
|
||||
ENV TARGETS=$TARGETS,sparcv9-sun-solaris
|
||||
ENV TARGETS=$TARGETS,wasm32-unknown-unknown
|
||||
ENV TARGETS=$TARGETS,x86_64-sun-solaris
|
||||
ENV TARGETS=$TARGETS,x86_64-unknown-linux-gnux32
|
||||
ENV TARGETS=$TARGETS,x86_64-unknown-cloudabi
|
||||
|
||||
ENV RUST_CONFIGURE_ARGS --target=$TARGETS --enable-extended
|
||||
ENV SCRIPT python2.7 ../x.py dist --target $TARGETS
|
||||
|
55
src/ci/docker/dist-various-2/build-cloudabi-toolchain.sh
Executable file
55
src/ci/docker/dist-various-2/build-cloudabi-toolchain.sh
Executable file
@ -0,0 +1,55 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2018 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -eux
|
||||
|
||||
# Install prerequisites.
|
||||
apt-get update
|
||||
apt-get install -y --no-install-recommends \
|
||||
apt-transport-https \
|
||||
ca-certificates \
|
||||
clang-5.0 \
|
||||
cmake \
|
||||
curl \
|
||||
file \
|
||||
g++ \
|
||||
gdb \
|
||||
git \
|
||||
lld-5.0 \
|
||||
make \
|
||||
python \
|
||||
sudo \
|
||||
xz-utils
|
||||
|
||||
# Set up a Clang-based cross compiler toolchain.
|
||||
# Based on the steps described at https://nuxi.nl/cloudabi/debian/
|
||||
target=$1
|
||||
for tool in ar nm objdump ranlib size; do
|
||||
ln -s ../lib/llvm-5.0/bin/llvm-${tool} /usr/bin/${target}-${tool}
|
||||
done
|
||||
ln -s ../lib/llvm-5.0/bin/clang /usr/bin/${target}-cc
|
||||
ln -s ../lib/llvm-5.0/bin/clang /usr/bin/${target}-c++
|
||||
ln -s ../lib/llvm-5.0/bin/lld /usr/bin/${target}-ld
|
||||
ln -s ../../${target} /usr/lib/llvm-5.0/${target}
|
||||
|
||||
# FIXME(EdSchouten): Remove this once cc ≥1.0.4 has been merged. It
|
||||
# can make use of ${target}-cc and ${target}-c++, without incorrectly
|
||||
# assuming it's MSVC.
|
||||
ln -s ../lib/llvm-5.0/bin/clang /usr/bin/${target}-clang
|
||||
ln -s ../lib/llvm-5.0/bin/clang /usr/bin/${target}-clang++
|
||||
|
||||
# Install the C++ runtime libraries from CloudABI Ports.
|
||||
echo deb https://nuxi.nl/distfiles/cloudabi-ports/debian/ cloudabi cloudabi > \
|
||||
/etc/apt/sources.list.d/cloudabi.list
|
||||
curl 'https://pgp.mit.edu/pks/lookup?op=get&search=0x0DA51B8531344B15' | \
|
||||
apt-key add -
|
||||
apt-get update
|
||||
apt-get install -y $(echo ${target} | sed -e s/_/-/g)-cxx-runtime
|
Loading…
x
Reference in New Issue
Block a user