|
| 1 | +# hadolint global ignore=DL3033,SC3044 |
| 2 | +FROM fedora:20 |
| 3 | + |
| 4 | +SHELL ["/bin/bash", "-o", "pipefail", "-c"] |
| 5 | + |
| 6 | +ENV PATH="${PATH}:/root/.cargo/bin/" |
| 7 | + |
| 8 | +COPY .github/builder/rsrc/rust-nightly-x86_64-unknown-linux-gnu.tar.xz /install/rust-nightly-x86_64-unknown-linux-gnu.tar.xz |
| 9 | +COPY .github/builder/rsrc/make-4.4.1.tar.gz /install/make-4.4.1.tar.gz |
| 10 | +COPY .github/builder/rsrc/cmake-3.29.3-linux-x86_64.tar.gz /install/cmake-3.29.3-linux-x86_64.tar.gz |
| 11 | +COPY .github/builder/rsrc/lld-5.0.2.src.tar.xz /install/lld-5.0.2.src.tar.xz |
| 12 | +COPY .github/builder/rsrc/cfe-5.0.2.src.tar.xz /install/cfe-5.0.2.src.tar.xz |
| 13 | +COPY .github/builder/rsrc/llvm-5.0.2.src.tar.xz /install/llvm-5.0.2.src.tar.xz |
| 14 | +COPY .github/builder/rsrc/rpms /install/rpms |
| 15 | +COPY .github/builder/rsrc/simics /simics |
| 16 | +COPY .github/builder/rsrc/ispm /simics/ispm |
| 17 | + |
| 18 | +RUN yum -y install /install/rpms/*.rpm && yum clean all |
| 19 | + |
| 20 | +RUN tar -C /install -xvf /install/rust-nightly-x86_64-unknown-linux-gnu.tar.xz && \ |
| 21 | + /install/rust-nightly-x86_64-unknown-linux-gnu/install.sh && \ |
| 22 | + mkdir -p /make && \ |
| 23 | + tar -C /make --strip-components=1 -xf /install/make-4.4.1.tar.gz && \ |
| 24 | + pushd /make && \ |
| 25 | + ./configure && \ |
| 26 | + make && \ |
| 27 | + make install && \ |
| 28 | + make clean && \ |
| 29 | + popd && \ |
| 30 | + tar -C /usr/local/ --strip-components=1 -xf /install/cmake-3.29.3-linux-x86_64.tar.gz && \ |
| 31 | + mkdir -p /llvm/tools/clang && \ |
| 32 | + mkdir -p /llvm/tools/lld && \ |
| 33 | + tar -C /llvm --strip-components=1 -xf /install/llvm-5.0.2.src.tar.xz && \ |
| 34 | + tar -C /llvm/tools/clang --strip-components=1 -xf /install/cfe-5.0.2.src.tar.xz && \ |
| 35 | + tar -C /llvm/tools/lld --strip-components=1 -xf /install/lld-5.0.2.src.tar.xz && \ |
| 36 | + mkdir -p /llvm/build && \ |
| 37 | + pushd /llvm/build && \ |
| 38 | + cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="MinSizeRel" -DLLVM_TARGETS_TO_BUILD="X86" .. && \ |
| 39 | + make -j "$(nproc)" && \ |
| 40 | + make install && \ |
| 41 | + make clean && \ |
| 42 | + rm -rf /llvm/build/ && \ |
| 43 | + popd && \ |
| 44 | + rm -rf /make /llvm |
| 45 | + |
| 46 | +WORKDIR / |
| 47 | + |
| 48 | +ENV PATH="${PATH}:/simics/ispm/" |
| 49 | +ENV PATH="${PATH}:/root/.cargo/bin/" |
| 50 | + |
| 51 | +COPY . /tsffs/ |
| 52 | + |
| 53 | +WORKDIR /tsffs/ |
| 54 | + |
| 55 | +RUN ispm settings install-dir /simics && \ |
| 56 | + ispm packages --list |
| 57 | + |
| 58 | +RUN RUSTFLAGS="-C linker=clang -C link-arg=-fuse-ld=$(which ld.lld)" && \ |
| 59 | + export RUSTFLAGS && \ |
| 60 | + cargo install --path simics-rs/cargo-simics-build && \ |
| 61 | + SIMICS_PACKAGE_VERSION="$(ispm packages --list | grep 1000 | awk '{print $3}' | cut -d '.' -f1).$(grep -E '^version = ' < Cargo.toml | sed -n '$p' | grep -oE '\"[^\"]+\"' | tr -d '\"' | cut -d'.' -f2-)" && \ |
| 62 | + export SIMICS_PACKAGE_VERSION && \ |
| 63 | + cargo simics-build -r && \ |
| 64 | + mkdir -p /packages-internal && \ |
| 65 | + cp target/release/*.ispm /packages-internal |
0 commit comments