Skip to content

Commit

Permalink
Add dockerfile for riscv64 compiles
Browse files Browse the repository at this point in the history
Signed-off-by: Joe deKoning <joe_dekoning@ca.ibm.com>
  • Loading branch information
jdekonin committed May 18, 2023
1 parent 779c51b commit d6c0584
Show file tree
Hide file tree
Showing 2 changed files with 103 additions and 3 deletions.
99 changes: 99 additions & 0 deletions buildenv/docker/riscv64/debian11/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# Copyright IBM Corp. and others 2022
#
# This program and the accompanying materials are made available under
# the terms of the Eclipse Public License 2.0 which accompanies this
# distribution and is available at https://www.eclipse.org/legal/epl-2.0/
# or the Apache License, Version 2.0 which accompanies this distribution and
# is available at https://www.apache.org/licenses/LICENSE-2.0.
#
# This Source Code may also be made available under the following
# Secondary Licenses when the conditions for such availability set
# forth in the Eclipse Public License, v. 2.0 are satisfied: GNU
# General Public License, version 2 with the GNU Classpath
# Exception [1] and GNU General Public License, version 2 with the
# OpenJDK Assembly Exception [2].
#
# [1] https://www.gnu.org/software/classpath/license.html
# [2] https://openjdk.org/legal/assembly-exception.html
#
# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception

# Create the OMR build environment with Debian 11.7.

FROM debian:11.7-slim AS base

# Workaround for a hang during docker build.
ENV TZ=America/Toronto
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN apt-get update && apt-get install -y \
tzdata \
python3 \
git \
cmake \
bison \
flex \
libelf-dev \
libdwarf-dev \
gdb \
vim \
ninja-build \
ccache \
pkg-config \
libglib2.0-dev \
build-essential \
wget \
gcc-riscv64-linux-gnu \
g++-riscv64-linux-gnu \
qemu-user-static \
lsb-release \
mmdebstrap \
binfmt-support \
&& rm -rf /var/lib/apt/lists/*

# Add user home and copy authorized_keys and known_hosts.
RUN groupadd -r jenkins \
&& useradd -rm -u 1000 -g jenkins jenkins \
&& mkdir -p /home/jenkins/.ssh \
&& echo "Host git.eclipse.org*\n\tStrictHostKeyChecking no\n" > /home/jenkins/.ssh/config \
&& chown -R jenkins:jenkins /home/jenkins

RUN wget -O /usr/local/include/riscv.h 'https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob_plain;f=include/opcode/riscv.h;hb=2f973f134d7752cbc662ec65da8ad8bbe4c6fb8f' \
&& wget -O /usr/local/include/riscv-opc.h 'https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob_plain;f=include/opcode/riscv-opc.h;hb=2f973f134d7752cbc662ec65da8ad8bbe4c6fb8f'

# Install Debian ports GPG keys
RUN gpg --homedir /tmp \
--no-default-keyring --primary-keyring "/tmp/debian-ports-keyring.gpg" \
--keyserver keyserver.ubuntu.com --recv-key B523E5F3FC4E5F2C
RUN gpg --homedir /tmp \
--no-default-keyring --primary-keyring "/tmp/debian-ports-keyring.gpg" \
--keyserver keyserver.ubuntu.com --recv-key 8D69674688B6CB36
RUN gpg --homedir /tmp \
--no-default-keyring --primary-keyring "/tmp/debian-ports-keyring.gpg" \
--export 8D69674688B6CB36 > /etc/apt/trusted.gpg.d/debian-ports-archive-2023.gpg
RUN gpg --homedir /tmp \
--no-default-keyring --primary-keyring "/tmp/debian-ports-keyring.gpg" \
--export 8D69674688B6CB36 > /etc/apt/trusted.gpg.d/debian-ports-archive-2023.gpg

# Install RISC-V 64 build root in /opt/sysroot
RUN apt-get install -y fakeroot
RUN wget -O /tmp/libfakeroot_1.31-1.2_riscv64.deb \
http://ftp.ports.debian.org/debian-ports/pool-riscv64/main/f/fakeroot/libfakeroot_1.31-1.2_riscv64.deb
RUN wget -O /tmp/libfakechroot_2.20.1+ds-15_riscv64.deb \
http://ftp.ports.debian.org/debian-ports/pool-riscv64/main/f/fakechroot/libfakechroot_2.20.1+ds-15_riscv64.deb
RUN dpkg -X /tmp/libfakeroot_1.31-1.2_riscv64.deb /
RUN dpkg -X /tmp/libfakechroot_2.20.1+ds-15_riscv64.deb /

RUN update-alternatives --set fakeroot /usr/bin/fakeroot-tcp

RUN mmdebstrap \
--mode=fakeroot \
--variant=minbase \
--architectures=riscv64 \
--include="debian-ports-archive-keyring,build-essential,libdwarf-dev,libelf-dev,libx11-dev,libxext-dev,libxrender-dev,libxrandr-dev,libxtst-dev,libxt-dev,libasound2-dev,libcups2-dev,libfontconfig1-dev" \
bullseye "/opt/sysroot" \
"deb http://deb.debian.org/debian-ports/ sid main" \
"deb http://deb.debian.org/debian-ports/ unreleased main"

ENV CROSS_SYSROOT_RISCV64=/opt/sysroot
USER jenkins
7 changes: 4 additions & 3 deletions buildenv/jenkins/omrbuild.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ pullId = params.ghprbPullId

cgroupV1Specs = ["linux_x86"]
cgroupV2Specs = ["linux_x86-64", "linux_ppc-64_le_gcc"]
dockerSpecs = ["linux_x86", "linux_x86-64"]
dockerSpecs = ["linux_x86", "linux_x86-64", "linux_riscv64_cross"]

nodeLabels = []
runInDocker = false
Expand Down Expand Up @@ -162,17 +162,18 @@ SPECS = [
],
'linux_riscv64_cross' : [
'alias': 'riscv',
'label' : 'compile:riscv64:cross',
'label' : 'ub20-x64-omr9',
'reference' : defaultReference,
'environment' : [
'PATH+CCACHE=/usr/lib/ccache/'

],
'ccache' : true,
'buildSystem' : 'cmake',
'builds' : [
[
'buildDir' : cmakeBuildDir,
'configureArgs' : '-Wdev -C../cmake/caches/Travis.cmake -DOMR_DDR=OFF -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/riscv64-linux-cross.cmake "-DOMR_EXE_LAUNCHER=/home/jenkins/qemu/build/qemu-riscv64;-L;${CROSS_SYSROOT_RISCV64}" "-DCMAKE_SYSROOT=${CROSS_SYSROOT_RISCV64}"',
'configureArgs' : '-Wdev -C../cmake/caches/Travis.cmake -DOMR_DDR=OFF -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/riscv64-linux-cross.cmake "-DOMR_EXE_LAUNCHER=qemu-riscv64-static;-L;${CROSS_SYSROOT_RISCV64}" "-DCMAKE_SYSROOT=${CROSS_SYSROOT_RISCV64}"',
'compile' : defaultCompile
]
],
Expand Down

0 comments on commit d6c0584

Please sign in to comment.